{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://github.com/Yivas/pi-delegation-policy/blob/main/schema/delegation-policy.schema.json",
  "title": "Pi Delegation Policy global defaults",
  "type": "object",
  "required": ["schemaVersion"],
  "properties": {
    "schemaVersion": { "const": 7 },
    "intensity": { "enum": ["off", "normal", "aggressive", "orchestrator"] },
    "preference": { "enum": ["efficient", "standard", "intensive"] },
    "small": { "$ref": "#/$defs/ordinaryRole" },
    "medium": { "$ref": "#/$defs/ordinaryRole" },
    "large": { "$ref": "#/$defs/ordinaryRole" },
    "uiDesign": { "$ref": "#/$defs/modelRef" },
    "advisor": { "$ref": "#/$defs/modelRef" },
    "thinking": { "$ref": "#/$defs/thinking" },
    "contextShunt": { "$ref": "#/$defs/contextShunt" }
  },
  "$defs": {
    "modelRef": {
      "type": "object",
      "required": ["provider", "model"],
      "properties": {
        "provider": { "type": "string", "minLength": 1 },
        "model": { "type": "string", "minLength": 1 }
      },
      "additionalProperties": false
    },
    "ordinaryRole": { "anyOf": [{ "$ref": "#/$defs/modelRef" }, { "type": "null" }] },
    "thinkingLevel": {
      "enum": ["off", "minimal", "low", "medium", "high", "xhigh", "max"]
    },
    "roleThinking": {
      "anyOf": [
        {
          "type": "object",
          "required": ["level"],
          "properties": { "level": { "$ref": "#/$defs/thinkingLevel" } },
          "additionalProperties": false
        },
        {
          "type": "object",
          "required": ["min", "max"],
          "properties": {
            "min": { "$ref": "#/$defs/thinkingLevel" },
            "max": { "$ref": "#/$defs/thinkingLevel" }
          },
          "additionalProperties": false
        }
      ]
    },
    "thinking": {
      "type": "object",
      "properties": {
        "small": { "$ref": "#/$defs/roleThinking" },
        "medium": { "$ref": "#/$defs/roleThinking" },
        "large": { "$ref": "#/$defs/roleThinking" },
        "uiDesign": { "$ref": "#/$defs/roleThinking" },
        "advisor": { "$ref": "#/$defs/roleThinking" }
      },
      "additionalProperties": false
    },
    "positiveLimit": { "type": "integer", "minimum": 1, "maximum": 1048576 },
    "patterns": {
      "type": "array",
      "maxItems": 32,
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 256,
        "pattern": "^(?![\\s\\S]*\\u0000)(?![\\s\\S]*\\.\\.)(?![A-Za-z]:[\\\\/])(?!\\\\\\\\)[\\s\\S]+$"
      }
    },
    "contextShunt": {
      "type": "object",
      "properties": {
        "mode": { "enum": ["off", "observe", "enforce"] },
        "readerEnabled": { "type": "boolean" },
        "readerRole": { "enum": ["small", "medium", "large"] },
        "answerMaxBytes": { "type": "integer", "minimum": 1024, "maximum": 16384 },
        "limits": {
          "type": "object",
          "properties": {
            "fullReadLines": { "$ref": "#/$defs/positiveLimit" },
            "fullReadBytes": { "$ref": "#/$defs/positiveLimit" },
            "targetedReadLines": { "$ref": "#/$defs/positiveLimit" },
            "targetedReadBytes": { "$ref": "#/$defs/positiveLimit" }
          },
          "additionalProperties": false
        },
        "shell": { "const": "conservative" },
        "metrics": { "const": "memory" },
        "exceptionPatterns": { "$ref": "#/$defs/patterns" },
        "delegationHintPatterns": { "$ref": "#/$defs/patterns" }
      },
      "additionalProperties": false
    }
  },
  "additionalProperties": false
}
