{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://github.com/bigKING67/pi-67/schemas/pi67-distro-manifest.schema.json",
  "title": "pi-67 distro manifest",
  "type": "object",
  "required": [
    "schema",
    "createdAt",
    "ownership",
    "commands",
    "releaseStore",
    "managedExtensions",
    "runtimeFiles",
    "theme",
    "sharedSkills",
    "extensionRegistry",
    "localExtensions",
    "dependencyPackages",
    "runtimePackages",
    "externalRepos",
    "summary"
  ],
  "properties": {
    "schema": {
      "const": "pi67.distro-manifest.v1"
    },
    "createdAt": {
      "type": "string"
    },
    "ownership": {
      "type": "object"
    },
    "commands": {
      "type": "object",
      "required": ["update", "repair", "alwaysFreshUpdate", "alwaysFreshRepair"],
      "properties": {
        "update": { "type": "string" },
        "repair": { "type": "string" },
        "alwaysFreshUpdate": { "type": "string" },
        "alwaysFreshRepair": { "type": "string" }
      },
      "additionalProperties": true
    },
    "releaseStore": {
      "type": "object",
      "required": ["root", "pointer", "policy"],
      "properties": {
        "root": { "const": "~/.pi/pi67/releases/<version>" },
        "pointer": { "const": "~/.pi/pi67/current.json" },
        "policy": { "const": "manager-bundled-immutable-distro-no-github-main-clone-or-pull" }
      },
      "additionalProperties": true
    },
    "managedExtensions": {
      "type": "object",
      "required": ["registry", "policy", "schema", "policyModel", "extensions"],
      "properties": {
        "registry": { "const": "managed-extension-baselines.json" },
        "policy": { "type": "string" },
        "schema": { "const": "pi67.managed-extension-baselines.v1" },
        "policyModel": { "type": "object" },
        "extensions": { "type": "array", "minItems": 21 }
      },
      "additionalProperties": true
    },
    "runtimeFiles": {
      "type": "object",
      "required": ["preserve", "templateOnly"],
      "properties": {
        "preserve": { "type": "array", "items": { "type": "string" } },
        "templateOnly": { "type": "array", "items": { "type": "string" } }
      },
      "additionalProperties": true
    },
    "theme": {
      "type": "object",
      "required": ["packageName", "preserveSetting", "selection", "policy", "explicitCommands"],
      "properties": {
        "packageName": {
          "type": "string"
        },
        "preserveSetting": {
          "const": "settings.json:theme"
        },
        "selection": {
          "type": "object",
          "required": ["file", "path"],
          "properties": {
            "file": {
              "const": "settings.json"
            },
            "path": {
              "const": "theme"
            }
          },
          "additionalProperties": true
        },
        "legacyPreserveFiles": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "policy": {
          "type": "string"
        },
        "explicitCommands": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "additionalProperties": true
    },
    "sharedSkills": {
      "type": "object",
      "required": ["sourceDir", "packRegistry", "activeDirDefault", "policy", "activeDir"],
      "properties": {
        "sourceDir": {
          "const": "shared-skills"
        },
        "packRegistry": {
          "const": "shared-skill-packs.json"
        },
        "activeDirDefault": {
          "const": "~/.agents/skills"
        },
        "policy": {
          "type": "string"
        },
        "activeDir": {
          "type": "string"
        }
      },
      "additionalProperties": true
    },
    "extensionRegistry": {
      "type": "object",
      "required": ["schema", "governance", "extensions"],
      "properties": {
        "schema": {
          "const": "pi67.extension-registry.v1"
        },
        "governance": {
          "type": "object"
        },
        "extensions": {
          "type": "array"
        }
      }
    },
    "localExtensions": {
      "type": "array",
      "items": {
        "type": "object",
        "required": ["name", "path", "required", "policy", "exists"],
        "properties": {
          "name": { "type": "string" },
          "path": { "type": "string" },
          "required": { "type": "boolean" },
          "policy": { "type": "string" },
          "exists": { "type": "boolean" }
        },
        "additionalProperties": true
      }
    },
    "dependencyPackages": {
      "type": "array"
    },
    "runtimePackages": {
      "type": "array"
    },
    "externalRepos": {
      "type": "array"
    },
    "summary": {
      "type": "object",
      "required": [
        "dependencies",
        "runtimePackages",
        "pi67ManagedRuntimePackages",
        "userManagedRuntimePackages",
        "localExtensions",
        "missingLocalExtensions",
        "externalRepos",
        "runtimeFilesPreserved",
        "registeredExtensions",
        "managedExtensions"
      ],
      "properties": {
        "dependencies": { "type": "integer", "minimum": 0 },
        "runtimePackages": { "type": "integer", "minimum": 0 },
        "pi67ManagedRuntimePackages": { "type": "integer", "minimum": 0 },
        "userManagedRuntimePackages": { "type": "integer", "minimum": 0 },
        "localExtensions": { "type": "integer", "minimum": 0 },
        "missingLocalExtensions": { "type": "integer", "minimum": 0 },
        "externalRepos": { "type": "integer", "minimum": 0 },
        "runtimeFilesPreserved": { "type": "integer", "minimum": 0 },
        "registeredExtensions": { "type": "integer", "minimum": 0 },
        "managedExtensions": { "type": "integer", "minimum": 0 }
      },
      "additionalProperties": true
    }
  }
}
