{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://decantr.ai/schemas/content-corpus-manifest.v1.json",
  "title": "Decantr Content Corpus Manifest",
  "type": "object",
  "required": [
    "packageName",
    "packageVersion",
    "corpusDigest",
    "compatibility",
    "refs"
  ],
  "properties": {
    "packageName": {
      "const": "@decantr/content"
    },
    "packageVersion": {
      "$ref": "#/$defs/version"
    },
    "corpusDigest": {
      "$ref": "#/$defs/digest"
    },
    "compatibility": {
      "$ref": "#/$defs/compatibility"
    },
    "refs": {
      "type": "array",
      "uniqueItems": true,
      "items": {
        "$ref": "#/$defs/contentRef"
      }
    }
  },
  "$defs": {
    "identity": {
      "type": "object",
      "required": [
        "namespace",
        "type",
        "id"
      ],
      "properties": {
        "namespace": {
          "type": "string",
          "pattern": "\\S"
        },
        "type": {
          "enum": [
            "pattern",
            "theme",
            "blueprint",
            "archetype",
            "shell"
          ]
        },
        "id": {
          "type": "string",
          "pattern": "\\S"
        }
      },
      "additionalProperties": false
    },
    "version": {
      "type": "string",
      "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)(?:-((?:0|[1-9][0-9]*|[0-9A-Za-z-]*[A-Za-z-][0-9A-Za-z-]*)(?:\\.(?:0|[1-9][0-9]*|[0-9A-Za-z-]*[A-Za-z-][0-9A-Za-z-]*))*))?(?:\\+([0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*))?$"
    },
    "nullableVersion": {
      "anyOf": [
        {
          "$ref": "#/$defs/version"
        },
        {
          "type": "null"
        }
      ]
    },
    "digest": {
      "type": "string",
      "pattern": "^sha256:[0-9a-f]{64}$"
    },
    "compatibility": {
      "type": "object",
      "required": [
        "decantr"
      ],
      "properties": {
        "decantr": {
          "type": "string",
          "pattern": "\\S"
        }
      },
      "additionalProperties": false
    },
    "overrideRef": {
      "type": "object",
      "required": [
        "identity",
        "version",
        "digest"
      ],
      "properties": {
        "identity": {
          "$ref": "#/$defs/identity"
        },
        "version": {
          "$ref": "#/$defs/nullableVersion"
        },
        "digest": {
          "$ref": "#/$defs/digest"
        }
      },
      "additionalProperties": false
    },
    "contentRef": {
      "type": "object",
      "required": [
        "identity",
        "version",
        "digest",
        "compatibility",
        "origin",
        "resolvedFrom"
      ],
      "properties": {
        "identity": {
          "$ref": "#/$defs/identity"
        },
        "version": {
          "$ref": "#/$defs/nullableVersion"
        },
        "digest": {
          "$ref": "#/$defs/digest"
        },
        "compatibility": {
          "$ref": "#/$defs/compatibility"
        },
        "origin": {
          "enum": [
            "official",
            "local"
          ]
        },
        "resolvedFrom": {
          "enum": [
            "installed-package",
            "workspace-package",
            "configured-corpus",
            "cache",
            "local-override",
            "api"
          ]
        },
        "overrideOf": {
          "$ref": "#/$defs/overrideRef"
        }
      },
      "allOf": [
        {
          "if": {
            "properties": {
              "origin": {
                "const": "official"
              }
            },
            "required": [
              "origin"
            ]
          },
          "then": {
            "properties": {
              "version": {
                "$ref": "#/$defs/version"
              }
            }
          }
        }
      ],
      "additionalProperties": false
    }
  },
  "additionalProperties": false
}
