Files
ECC/schemas/install-state.schema.json

287 lines
6.1 KiB
JSON

{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "ECC install state",
"type": "object",
"additionalProperties": false,
"required": [
"schemaVersion",
"installedAt",
"target",
"request",
"resolution",
"source",
"operations"
],
"properties": {
"schemaVersion": {
"type": "string",
"const": "ecc.install.v1"
},
"installedAt": {
"type": "string",
"minLength": 1
},
"lastValidatedAt": {
"type": "string",
"minLength": 1
},
"target": {
"type": "object",
"additionalProperties": false,
"required": [
"id",
"root",
"installStatePath"
],
"properties": {
"id": {
"type": "string",
"minLength": 1
},
"target": {
"type": "string",
"minLength": 1
},
"kind": {
"type": "string",
"enum": [
"home",
"project"
]
},
"root": {
"type": "string",
"minLength": 1
},
"installStatePath": {
"type": "string",
"minLength": 1
}
}
},
"request": {
"type": "object",
"additionalProperties": false,
"required": [
"profile",
"modules",
"includeComponents",
"excludeComponents",
"legacyLanguages",
"legacyMode"
],
"properties": {
"profile": {
"type": [
"string",
"null"
]
},
"modules": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
}
},
"includeComponents": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
}
},
"excludeComponents": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
}
},
"legacyLanguages": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
}
},
"legacyMode": {
"type": "boolean"
},
"hookConsent": {
"enum": [
"enabled",
"declined",
null
]
}
}
},
"resolution": {
"type": "object",
"additionalProperties": false,
"required": [
"selectedModules",
"skippedModules"
],
"properties": {
"selectedModules": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
}
},
"skippedModules": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
}
}
}
},
"source": {
"type": "object",
"additionalProperties": false,
"required": [
"repoVersion",
"repoCommit",
"manifestVersion"
],
"properties": {
"repoVersion": {
"type": [
"string",
"null"
]
},
"repoCommit": {
"type": [
"string",
"null"
]
},
"manifestVersion": {
"type": "integer",
"minimum": 1
}
}
},
"operations": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": true,
"required": [
"kind",
"moduleId",
"sourceRelativePath",
"destinationPath",
"strategy",
"ownership",
"scaffoldOnly"
],
"properties": {
"kind": {
"type": "string",
"minLength": 1
},
"moduleId": {
"type": "string",
"minLength": 1
},
"sourceRelativePath": {
"type": "string",
"minLength": 1
},
"destinationPath": {
"type": "string",
"minLength": 1
},
"strategy": {
"type": "string",
"minLength": 1
},
"ownership": {
"type": "string",
"minLength": 1
},
"scaffoldOnly": {
"type": "boolean"
},
"contentSha256": {
"type": "string",
"pattern": "^[a-fA-F0-9]{64}$"
},
"managedHooks": {
"type": "object",
"minProperties": 1,
"propertyNames": {
"type": "string",
"pattern": "\\S"
},
"additionalProperties": {
"type": "array",
"minItems": 1,
"items": {
"type": "object",
"required": ["id", "hooks"],
"properties": {
"id": {
"type": "string",
"pattern": "\\S"
}
}
}
}
}
},
"allOf": [
{
"if": {
"properties": {
"kind": { "const": "update-claude-settings" }
}
},
"then": {
"required": ["managedHooks"],
"properties": {
"moduleId": { "const": "hooks-runtime" },
"sourceRelativePath": { "const": "hooks/hooks.json" }
}
}
}
]
}
}
},
"allOf": [
{
"if": {
"properties": {
"operations": {
"contains": {
"type": "object",
"properties": {
"kind": { "const": "update-claude-settings" }
},
"required": ["kind"]
}
}
}
},
"then": {
"properties": {
"target": {
"properties": {
"target": { "enum": ["claude", "claude-project"] }
},
"required": ["target"]
}
}
}
}
]
}