145 lines
6.1 KiB
JSON
145 lines
6.1 KiB
JSON
{
|
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
"$id": "urn:agentic-awesome-skills:schema:stack-plan:v2",
|
|
"title": "AAS immutable single-target plan v2",
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": ["schemaVersion", "kind", "digest", "payload"],
|
|
"properties": {
|
|
"schemaVersion": { "const": 2 },
|
|
"kind": { "const": "aas.stack-plan" },
|
|
"digest": { "$ref": "#/$defs/digest" },
|
|
"payload": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": ["schemaVersion", "kind", "versions", "manifestDigest", "catalog", "runtime", "target", "installedState", "desiredSkills", "profile", "operations", "overrides", "stateCommit"],
|
|
"properties": {
|
|
"schemaVersion": { "const": 2 },
|
|
"kind": { "const": "aas.stack-plan.payload" },
|
|
"versions": { "$ref": "#/$defs/versions" },
|
|
"manifestDigest": { "$ref": "#/$defs/digest" },
|
|
"catalog": { "$ref": "#/$defs/catalog" },
|
|
"runtime": { "$ref": "#/$defs/runtime" },
|
|
"target": { "$ref": "#/$defs/target" },
|
|
"installedState": { "$ref": "#/$defs/installedState" },
|
|
"desiredSkills": { "$ref": "#/$defs/ids" },
|
|
"profile": { "$ref": "#/$defs/profile" },
|
|
"operations": { "type": "array", "maxItems": 256, "items": { "$ref": "#/$defs/operation" } },
|
|
"overrides": { "type": "array", "maxItems": 128, "items": { "$ref": "#/$defs/override" } },
|
|
"stateCommit": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": ["previousDigest", "nextDigest", "position"],
|
|
"properties": {
|
|
"previousDigest": { "$ref": "#/$defs/digest" },
|
|
"nextDigest": { "$ref": "#/$defs/digest" },
|
|
"position": { "const": "final" }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"$defs": {
|
|
"digest": { "type": "string", "pattern": "^sha256-[a-f0-9]{64}$" },
|
|
"id": { "type": "string", "minLength": 1, "maxLength": 256, "pattern": "^[a-z0-9][a-z0-9._-]*(/[a-z0-9][a-z0-9._-]*)*$" },
|
|
"ids": { "type": "array", "maxItems": 128, "uniqueItems": true, "items": { "$ref": "#/$defs/id" } },
|
|
"versions": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": ["protocolVersion", "coreVersion", "catalogSchemaVersion"],
|
|
"properties": {
|
|
"protocolVersion": { "type": "string", "minLength": 1 },
|
|
"coreVersion": { "type": "string", "minLength": 1 },
|
|
"catalogSchemaVersion": { "type": "string", "minLength": 1 }
|
|
}
|
|
},
|
|
"catalog": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": ["package", "version", "integrity"],
|
|
"properties": {
|
|
"package": { "type": "string", "minLength": 1 },
|
|
"version": { "type": "string", "minLength": 1 },
|
|
"integrity": { "$ref": "#/$defs/digest" }
|
|
}
|
|
},
|
|
"runtime": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": ["package", "version", "integrity", "closureDigest"],
|
|
"properties": {
|
|
"package": { "type": "string", "minLength": 1 },
|
|
"version": { "type": "string", "minLength": 1 },
|
|
"integrity": { "type": "string", "minLength": 1, "maxLength": 512 },
|
|
"closureDigest": { "$ref": "#/$defs/digest" }
|
|
}
|
|
},
|
|
"target": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": ["host", "scope", "adapterVersion", "identityDigest"],
|
|
"properties": {
|
|
"host": { "enum": ["codex", "claude"] },
|
|
"scope": { "enum": ["project", "user"] },
|
|
"adapterVersion": { "type": "string", "minLength": 1, "maxLength": 64 },
|
|
"identityDigest": { "$ref": "#/$defs/digest" }
|
|
}
|
|
},
|
|
"installedEntry": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": ["skillId", "treeDigest", "catalogIntegrity"],
|
|
"properties": {
|
|
"skillId": { "$ref": "#/$defs/id" },
|
|
"treeDigest": { "$ref": "#/$defs/digest" },
|
|
"catalogIntegrity": { "$ref": "#/$defs/digest" }
|
|
}
|
|
},
|
|
"installedState": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": ["digest", "entries"],
|
|
"properties": {
|
|
"digest": { "$ref": "#/$defs/digest" },
|
|
"entries": { "type": "array", "maxItems": 128, "items": { "$ref": "#/$defs/installedEntry" } }
|
|
}
|
|
},
|
|
"profile": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": ["goals", "languages", "frameworks", "constraints"],
|
|
"properties": {
|
|
"goals": { "type": "array", "minItems": 1, "maxItems": 32, "uniqueItems": true, "items": { "type": "string", "minLength": 1, "maxLength": 128 } },
|
|
"projectType": { "type": "string", "minLength": 1, "maxLength": 256 },
|
|
"languages": { "$ref": "#/$defs/profileValues" },
|
|
"frameworks": { "$ref": "#/$defs/profileValues" },
|
|
"constraints": { "$ref": "#/$defs/profileValues" }
|
|
}
|
|
},
|
|
"profileValues": { "type": "array", "maxItems": 32, "uniqueItems": true, "items": { "type": "string", "minLength": 1, "maxLength": 128 } },
|
|
"operation": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": ["kind", "skillId", "sourceTreeDigest", "expectedTreeDigest", "resultTreeDigest", "backupRequired"],
|
|
"properties": {
|
|
"kind": { "enum": ["install", "replaceManaged", "removeManaged"] },
|
|
"skillId": { "$ref": "#/$defs/id" },
|
|
"sourceTreeDigest": { "oneOf": [{ "$ref": "#/$defs/digest" }, { "type": "null" }] },
|
|
"expectedTreeDigest": { "oneOf": [{ "$ref": "#/$defs/digest" }, { "type": "null" }] },
|
|
"resultTreeDigest": { "oneOf": [{ "$ref": "#/$defs/digest" }, { "type": "null" }] },
|
|
"backupRequired": { "type": "boolean" }
|
|
}
|
|
},
|
|
"override": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": ["kind", "skillId", "reasonCodes"],
|
|
"properties": {
|
|
"kind": { "const": "managedDrift" },
|
|
"skillId": { "$ref": "#/$defs/id" },
|
|
"reasonCodes": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "type": "string", "minLength": 1 } }
|
|
}
|
|
}
|
|
}
|
|
}
|