150 lines
6.5 KiB
JSON
150 lines
6.5 KiB
JSON
{
|
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
"$id": "urn:agentic-awesome-skills:schema:recommendation-output:v1",
|
|
"title": "AAS deterministic recommendation output v1",
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": ["ok", "status", "protocolVersion", "coreVersion", "metadataSchemaVersion", "scorerVersion", "catalog", "normalizedInput", "recommended", "discoveryCandidates", "candidateCounts", "proposedStack", "includedSkillIds", "coveredGoals", "uncoveredGoals", "goalCapabilityMatrix", "exclusions", "exclusionReasonCounts", "hardPolicyViolations", "discoveryPromotions", "unknown", "measures"],
|
|
"properties": {
|
|
"ok": { "const": true },
|
|
"status": { "enum": ["complete", "partial", "insufficientCoverage"] },
|
|
"protocolVersion": { "type": "string", "minLength": 1 },
|
|
"coreVersion": { "type": "string", "minLength": 1 },
|
|
"metadataSchemaVersion": { "type": "string", "minLength": 1 },
|
|
"scorerVersion": { "type": "string", "minLength": 1 },
|
|
"catalog": { "$ref": "#/$defs/catalog" },
|
|
"normalizedInput": { "type": "object" },
|
|
"recommended": { "type": "array", "maxItems": 25, "items": { "$ref": "#/$defs/candidate" } },
|
|
"discoveryCandidates": { "type": "array", "maxItems": 25, "items": { "$ref": "#/$defs/candidate" } },
|
|
"candidateCounts": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": ["recommendedTotal", "recommendedReturned", "discoveryTotal", "discoveryReturned", "excludedTotal", "excludedReturned"],
|
|
"properties": {
|
|
"recommendedTotal": { "type": "integer", "minimum": 0 },
|
|
"recommendedReturned": { "type": "integer", "minimum": 0, "maximum": 25 },
|
|
"discoveryTotal": { "type": "integer", "minimum": 0 },
|
|
"discoveryReturned": { "type": "integer", "minimum": 0, "maximum": 25 },
|
|
"excludedTotal": { "type": "integer", "minimum": 0 },
|
|
"excludedReturned": { "type": "integer", "minimum": 0, "maximum": 25 }
|
|
}
|
|
},
|
|
"proposedStack": { "$ref": "#/$defs/ids" },
|
|
"includedSkillIds": { "$ref": "#/$defs/ids" },
|
|
"coveredGoals": { "$ref": "#/$defs/strings" },
|
|
"uncoveredGoals": { "$ref": "#/$defs/strings" },
|
|
"goalCapabilityMatrix": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": ["goal", "critical", "skillIds"],
|
|
"properties": {
|
|
"goal": { "type": "string" },
|
|
"critical": { "type": "boolean" },
|
|
"skillIds": { "$ref": "#/$defs/ids" }
|
|
}
|
|
}
|
|
},
|
|
"exclusions": {
|
|
"type": "array",
|
|
"maxItems": 25,
|
|
"items": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": ["id", "reasonCodes"],
|
|
"properties": { "id": { "$ref": "#/$defs/id" }, "reasonCodes": { "$ref": "#/$defs/strings" } }
|
|
}
|
|
},
|
|
"exclusionReasonCounts": {
|
|
"type": "object",
|
|
"additionalProperties": { "type": "integer", "minimum": 1 }
|
|
},
|
|
"hardPolicyViolations": { "type": "array", "maxItems": 0 },
|
|
"discoveryPromotions": { "type": "array", "items": { "type": "object" } },
|
|
"unknown": { "$ref": "#/$defs/strings" },
|
|
"measures": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": ["goalCoverage", "metadataCompleteness", "evidenceStrength"],
|
|
"properties": {
|
|
"goalCoverage": { "type": "integer", "minimum": 0, "maximum": 1000 },
|
|
"metadataCompleteness": { "type": "integer", "minimum": 0, "maximum": 1000 },
|
|
"evidenceStrength": { "type": "integer", "minimum": 0, "maximum": 1000 }
|
|
}
|
|
}
|
|
},
|
|
"$defs": {
|
|
"id": { "type": "string", "minLength": 1, "maxLength": 256 },
|
|
"ids": { "type": "array", "uniqueItems": true, "items": { "$ref": "#/$defs/id" } },
|
|
"strings": { "type": "array", "uniqueItems": true, "items": { "type": "string" } },
|
|
"catalog": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": ["package", "version", "digest"],
|
|
"properties": {
|
|
"package": { "type": "string" },
|
|
"version": { "type": "string" },
|
|
"digest": { "type": "string", "pattern": "^sha256-[a-f0-9]{64}$" }
|
|
}
|
|
},
|
|
"candidate": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": ["id", "factors", "totalScore", "coveredGoals", "eligibility", "evidenceRefs", "metadata"],
|
|
"properties": {
|
|
"id": { "$ref": "#/$defs/id" },
|
|
"factors": { "type": "object", "additionalProperties": { "type": "integer" } },
|
|
"totalScore": { "type": "integer" },
|
|
"coveredGoals": { "$ref": "#/$defs/strings" },
|
|
"evidenceRefs": {
|
|
"type": "array",
|
|
"maxItems": 8,
|
|
"uniqueItems": true,
|
|
"items": { "type": "string", "pattern": "^sha256-[a-f0-9]{64}$" }
|
|
},
|
|
"eligibility": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": ["eligibleForRecommendation", "hardBlocked", "eligibilityReasonCodes", "evidenceLevel", "unknownFields", "targetCompatibility"],
|
|
"properties": {
|
|
"eligibleForRecommendation": { "type": "boolean" },
|
|
"hardBlocked": { "type": "boolean" },
|
|
"eligibilityReasonCodes": { "$ref": "#/$defs/strings" },
|
|
"evidenceLevel": { "enum": ["evidence-backed", "incomplete"] },
|
|
"unknownFields": { "$ref": "#/$defs/strings" },
|
|
"targetCompatibility": { "enum": ["supported", "blocked", "unknown"] }
|
|
}
|
|
},
|
|
"metadata": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": ["capabilities", "risk", "source", "setup", "targets", "dependencies", "conflicts", "validation", "tests", "reviews"],
|
|
"properties": {
|
|
"capabilities": { "$ref": "#/$defs/judgment" },
|
|
"risk": { "$ref": "#/$defs/judgment" },
|
|
"source": { "$ref": "#/$defs/judgment" },
|
|
"setup": { "$ref": "#/$defs/judgment" },
|
|
"targets": { "$ref": "#/$defs/judgment" },
|
|
"dependencies": { "$ref": "#/$defs/judgment" },
|
|
"conflicts": { "$ref": "#/$defs/judgment" },
|
|
"validation": { "$ref": "#/$defs/judgment" },
|
|
"tests": { "$ref": "#/$defs/judgment" },
|
|
"reviews": { "$ref": "#/$defs/judgment" }
|
|
}
|
|
},
|
|
"insertionReason": { "type": "object" }
|
|
}
|
|
},
|
|
"judgment": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": ["status", "value"],
|
|
"properties": {
|
|
"status": { "enum": ["known", "unknown", "notApplicable"] },
|
|
"value": {}
|
|
}
|
|
}
|
|
}
|
|
}
|