mirror of
https://git.openapi.site/https://github.com/desirecore/market.git
synced 2026-09-05 21:23:57 +08:00
## 中文 - 为 System Agent、34 个 Builtin Skill、28 个 Pointer/Collection 条目增加 catalog sidecar - 覆盖 147 个 collection child,并固定可证明的来源;无法证明的内容保持 listing-only/unknown - 增加 strict Schema、validator、collection check 与 CI 完整性门禁 ## English - Add catalog metadata sidecars for the System Agent, 34 built-in Skills, and 28 pointer/collection entries - Cover 147 collection children while keeping unverifiable facts listing-only or unknown - Add strict schemas, validators, deterministic collection checks, and CI completeness gates ## 验证 / Verification - Catalog validator 17/17 - Collection generator 4/4 - 63 sidecars, 147 children, zero errors
586 lines
17 KiB
JSON
586 lines
17 KiB
JSON
{
|
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
"$id": "https://desirecore.com/schemas/market/catalog-metadata.v1.schema.json",
|
|
"title": "DesireCore Market catalog metadata sidecar v1",
|
|
"description": "Strict source-owned metadata stored next to one legacy Market Agent or Skill. The trusted catalog source ID, catalog commit, catalog path and catalog trust are injected by DesireCore and are intentionally prohibited here.",
|
|
"type": "object",
|
|
"required": [
|
|
"schemaVersion",
|
|
"identity",
|
|
"presentation",
|
|
"release",
|
|
"timestamps",
|
|
"provenance",
|
|
"governance",
|
|
"compatibility",
|
|
"spec"
|
|
],
|
|
"properties": {
|
|
"$schema": {
|
|
"type": "string",
|
|
"const": "../../schemas/catalog-metadata.v1.schema.json",
|
|
"description": "Relative schema reference from agents/<id>/ or skills/<id>/."
|
|
},
|
|
"schemaVersion": {
|
|
"type": "integer",
|
|
"const": 1,
|
|
"description": "Sidecar contract version. This is not the legacy Market manifest version."
|
|
},
|
|
"identity": {
|
|
"$ref": "#/$defs/identity"
|
|
},
|
|
"presentation": {
|
|
"$ref": "#/$defs/presentation"
|
|
},
|
|
"release": {
|
|
"$ref": "#/$defs/release"
|
|
},
|
|
"timestamps": {
|
|
"$ref": "#/$defs/timestamps"
|
|
},
|
|
"provenance": {
|
|
"$ref": "#/$defs/provenance"
|
|
},
|
|
"governance": {
|
|
"$ref": "#/$defs/governance"
|
|
},
|
|
"compatibility": {
|
|
"$ref": "#/$defs/compatibility"
|
|
},
|
|
"spec": {
|
|
"oneOf": [
|
|
{ "$ref": "#/$defs/agentSpec" },
|
|
{ "$ref": "#/$defs/skillSpec" }
|
|
]
|
|
}
|
|
},
|
|
"additionalProperties": false,
|
|
"allOf": [
|
|
{
|
|
"if": {
|
|
"properties": {
|
|
"identity": {
|
|
"properties": { "kind": { "const": "agent" } },
|
|
"required": ["kind"]
|
|
}
|
|
}
|
|
},
|
|
"then": {
|
|
"properties": {
|
|
"spec": { "$ref": "#/$defs/agentSpec" }
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"if": {
|
|
"properties": {
|
|
"identity": {
|
|
"properties": { "kind": { "const": "skill" } },
|
|
"required": ["kind"]
|
|
}
|
|
}
|
|
},
|
|
"then": {
|
|
"properties": {
|
|
"spec": { "$ref": "#/$defs/skillSpec" }
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"if": {
|
|
"properties": {
|
|
"spec": {
|
|
"properties": {
|
|
"kind": { "const": "agent" },
|
|
"installPolicy": { "const": "system" }
|
|
},
|
|
"required": ["kind", "installPolicy"]
|
|
}
|
|
},
|
|
"required": ["spec"]
|
|
},
|
|
"then": {
|
|
"properties": {
|
|
"spec": {
|
|
"properties": { "updatePolicy": { "const": "repository" } },
|
|
"required": ["updatePolicy"]
|
|
},
|
|
"governance": {
|
|
"properties": { "availability": { "const": "listing-only" } },
|
|
"required": ["availability"]
|
|
},
|
|
"release": {
|
|
"properties": { "state": { "const": "unknown" } },
|
|
"required": ["state"]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"if": {
|
|
"properties": {
|
|
"spec": {
|
|
"properties": {
|
|
"kind": { "const": "agent" },
|
|
"installPolicy": { "const": "market" }
|
|
},
|
|
"required": ["kind", "installPolicy"]
|
|
}
|
|
},
|
|
"required": ["spec"]
|
|
},
|
|
"then": {
|
|
"properties": {
|
|
"spec": {
|
|
"properties": { "updatePolicy": { "const": "market" } },
|
|
"required": ["updatePolicy"]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
],
|
|
"$defs": {
|
|
"slug": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 160,
|
|
"pattern": "^(?!-)(?!.*--)[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$"
|
|
},
|
|
"safeRelativePath": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"pattern": "^(?!/)(?!.*(?:^|/)\\.\\.(?:/|$))(?!.*\\\\).+$"
|
|
},
|
|
"identity": {
|
|
"type": "object",
|
|
"description": "Source-local identity. catalogSourceId is injected by the trusted synchronizer and must not appear in the sidecar.",
|
|
"required": ["kind", "id"],
|
|
"properties": {
|
|
"kind": {
|
|
"type": "string",
|
|
"enum": ["agent", "skill"]
|
|
},
|
|
"id": {
|
|
"$ref": "#/$defs/slug"
|
|
},
|
|
"parentId": {
|
|
"$ref": "#/$defs/slug"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"localizedPresentation": {
|
|
"type": "object",
|
|
"required": ["name", "summary"],
|
|
"properties": {
|
|
"name": { "type": "string", "minLength": 1, "maxLength": 200 },
|
|
"summary": { "type": "string", "minLength": 1, "maxLength": 1024 },
|
|
"description": { "type": "string", "minLength": 1 }
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"presentation": {
|
|
"type": "object",
|
|
"required": ["defaultLocale", "i18n", "tags"],
|
|
"properties": {
|
|
"defaultLocale": {
|
|
"type": "string",
|
|
"pattern": "^[a-z]{2,3}(?:-[A-Z]{2})?$"
|
|
},
|
|
"i18n": {
|
|
"type": "object",
|
|
"minProperties": 1,
|
|
"patternProperties": {
|
|
"^[a-z]{2,3}(?:-[A-Z]{2})?$": {
|
|
"$ref": "#/$defs/localizedPresentation"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"icon": {
|
|
"type": "object",
|
|
"required": ["kind", "value"],
|
|
"properties": {
|
|
"kind": { "enum": ["emoji", "letter", "asset", "url"] },
|
|
"value": { "type": "string", "minLength": 1, "maxLength": 2048 }
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"category": { "$ref": "#/$defs/slug" },
|
|
"tags": {
|
|
"type": "array",
|
|
"items": { "type": "string", "minLength": 1, "maxLength": 120 },
|
|
"uniqueItems": true
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"unknownRelease": {
|
|
"type": "object",
|
|
"required": ["state"],
|
|
"properties": { "state": { "const": "unknown" } },
|
|
"additionalProperties": false
|
|
},
|
|
"knownRelease": {
|
|
"type": "object",
|
|
"required": ["state", "version", "versionScheme"],
|
|
"properties": {
|
|
"state": { "const": "known" },
|
|
"version": { "type": "string", "minLength": 1, "maxLength": 160 },
|
|
"versionScheme": {
|
|
"type": "string",
|
|
"enum": ["semver", "calver", "opaque"]
|
|
},
|
|
"changelog": {
|
|
"type": "array",
|
|
"maxItems": 100,
|
|
"items": { "type": "string", "minLength": 1, "maxLength": 2000 }
|
|
}
|
|
},
|
|
"additionalProperties": false,
|
|
"allOf": [
|
|
{
|
|
"if": { "properties": { "versionScheme": { "const": "semver" } } },
|
|
"then": {
|
|
"properties": {
|
|
"version": {
|
|
"pattern": "^(?:0|[1-9]\\d*)\\.(?:0|[1-9]\\d*)\\.(?:0|[1-9]\\d*)(?:-[0-9A-Za-z.-]+)?(?:\\+[0-9A-Za-z.-]+)?$"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"if": { "properties": { "versionScheme": { "const": "calver" } } },
|
|
"then": {
|
|
"properties": {
|
|
"version": { "pattern": "^\\d{4}(?:[.-]\\d{1,2}){1,2}(?:[.-][0-9A-Za-z]+)*$" }
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
"release": {
|
|
"description": "A collection parent may explicitly use unknown; versions are never synthesized from children.",
|
|
"oneOf": [
|
|
{ "$ref": "#/$defs/unknownRelease" },
|
|
{ "$ref": "#/$defs/knownRelease" }
|
|
]
|
|
},
|
|
"unknownTimestamp": {
|
|
"type": "object",
|
|
"required": ["state"],
|
|
"properties": { "state": { "const": "unknown" } },
|
|
"additionalProperties": false
|
|
},
|
|
"knownDayTimestamp": {
|
|
"type": "object",
|
|
"required": ["state", "value", "precision"],
|
|
"properties": {
|
|
"state": { "const": "known" },
|
|
"value": {
|
|
"type": "string",
|
|
"format": "date",
|
|
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
|
|
},
|
|
"precision": { "const": "day" }
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"knownSecondTimestamp": {
|
|
"type": "object",
|
|
"required": ["state", "value", "precision"],
|
|
"properties": {
|
|
"state": { "const": "known" },
|
|
"value": {
|
|
"type": "string",
|
|
"format": "date-time",
|
|
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$"
|
|
},
|
|
"precision": { "const": "second" }
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"timestamp": {
|
|
"oneOf": [
|
|
{ "$ref": "#/$defs/unknownTimestamp" },
|
|
{ "$ref": "#/$defs/knownDayTimestamp" },
|
|
{ "$ref": "#/$defs/knownSecondTimestamp" }
|
|
]
|
|
},
|
|
"timestamps": {
|
|
"type": "object",
|
|
"description": "Catalog modification, content publication, governance review and upstream observation are separate facts. syncedAt is runtime-only and prohibited.",
|
|
"required": [
|
|
"catalogUpdatedAt",
|
|
"releasePublishedAt",
|
|
"reviewedAt",
|
|
"upstreamObservedAt"
|
|
],
|
|
"properties": {
|
|
"catalogUpdatedAt": { "$ref": "#/$defs/timestamp" },
|
|
"releasePublishedAt": { "$ref": "#/$defs/timestamp" },
|
|
"reviewedAt": { "$ref": "#/$defs/timestamp" },
|
|
"upstreamObservedAt": { "$ref": "#/$defs/timestamp" }
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"contentProvenance": {
|
|
"type": "object",
|
|
"required": ["kind", "url"],
|
|
"properties": {
|
|
"kind": {
|
|
"type": "string",
|
|
"enum": ["git", "web", "zip", "release", "package", "container"]
|
|
},
|
|
"url": { "type": "string", "format": "uri", "pattern": "^https://" },
|
|
"path": { "$ref": "#/$defs/safeRelativePath" },
|
|
"ref": { "type": "string", "minLength": 1, "maxLength": 256 },
|
|
"sha256": { "type": "string", "pattern": "^[a-fA-F0-9]{64}$" }
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"provenance": {
|
|
"type": "object",
|
|
"description": "Only content provenance is source-owned. Catalog provenance and trust are injected by the synchronizer.",
|
|
"properties": {
|
|
"content": { "$ref": "#/$defs/contentProvenance" }
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"maintainer": {
|
|
"type": "object",
|
|
"required": ["name"],
|
|
"properties": {
|
|
"name": { "type": "string", "minLength": 1 },
|
|
"url": { "type": "string", "format": "uri" },
|
|
"verified": { "type": "boolean" }
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"unknownLicense": {
|
|
"type": "object",
|
|
"required": ["state"],
|
|
"properties": { "state": { "const": "unknown" } },
|
|
"additionalProperties": false
|
|
},
|
|
"knownLicense": {
|
|
"type": "object",
|
|
"required": ["state", "value"],
|
|
"properties": {
|
|
"state": { "const": "known" },
|
|
"value": { "type": "string", "minLength": 1 },
|
|
"evidencePath": { "$ref": "#/$defs/safeRelativePath" }
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"license": {
|
|
"oneOf": [
|
|
{ "$ref": "#/$defs/unknownLicense" },
|
|
{ "$ref": "#/$defs/knownLicense" }
|
|
]
|
|
},
|
|
"branding": {
|
|
"type": "object",
|
|
"required": ["relationship", "nameUsage", "logoStatus"],
|
|
"properties": {
|
|
"relationship": { "enum": ["official", "partner", "independent-listing"] },
|
|
"nameUsage": { "enum": ["owned", "licensed", "nominative"] },
|
|
"logoStatus": {
|
|
"enum": ["not-used", "license-covered", "trademark-policy-allowed", "permission-obtained"]
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"compliance": {
|
|
"type": "object",
|
|
"required": ["licenseEvidencePath", "reviewedRef", "reviewedAt", "reviewedBy", "upstreamEndorsed"],
|
|
"properties": {
|
|
"licenseEvidencePath": { "$ref": "#/$defs/safeRelativePath" },
|
|
"noticePath": { "$ref": "#/$defs/safeRelativePath" },
|
|
"reviewedRef": { "type": "string", "minLength": 1 },
|
|
"reviewedAt": {
|
|
"type": "string",
|
|
"oneOf": [
|
|
{ "format": "date", "pattern": "^\\d{4}-\\d{2}-\\d{2}$" },
|
|
{
|
|
"format": "date-time",
|
|
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$"
|
|
}
|
|
]
|
|
},
|
|
"reviewedBy": { "type": "string", "minLength": 1 },
|
|
"upstreamEndorsed": { "type": "boolean" }
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"governance": {
|
|
"type": "object",
|
|
"required": ["availability", "license", "redistribution"],
|
|
"properties": {
|
|
"stewardship": {
|
|
"enum": ["official", "partner", "community", "pointer"]
|
|
},
|
|
"availability": {
|
|
"enum": ["listing-only", "installable"]
|
|
},
|
|
"license": { "$ref": "#/$defs/license" },
|
|
"redistribution": {
|
|
"enum": ["allowed", "source-pointer-only", "verify-package-terms"]
|
|
},
|
|
"branding": { "$ref": "#/$defs/branding" },
|
|
"compliance": { "$ref": "#/$defs/compliance" },
|
|
"listingMaintainer": { "$ref": "#/$defs/maintainer" },
|
|
"upstreamMaintainer": { "$ref": "#/$defs/maintainer" }
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"platforms": {
|
|
"oneOf": [
|
|
{
|
|
"type": "object",
|
|
"required": ["state"],
|
|
"properties": { "state": { "const": "unknown" } },
|
|
"additionalProperties": false
|
|
},
|
|
{
|
|
"type": "object",
|
|
"required": ["state"],
|
|
"properties": { "state": { "const": "all" } },
|
|
"additionalProperties": false
|
|
},
|
|
{
|
|
"type": "object",
|
|
"required": ["state", "values"],
|
|
"properties": {
|
|
"state": { "const": "known" },
|
|
"values": {
|
|
"type": "array",
|
|
"minItems": 1,
|
|
"uniqueItems": true,
|
|
"items": { "enum": ["macos", "windows", "linux", "web", "ios", "android"] }
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
}
|
|
]
|
|
},
|
|
"requirement": {
|
|
"type": "object",
|
|
"required": ["kind", "value"],
|
|
"properties": {
|
|
"kind": { "enum": ["runtime", "hardware", "permission", "connection"] },
|
|
"value": { "type": "string", "minLength": 1, "maxLength": 500 }
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"compatibility": {
|
|
"type": "object",
|
|
"required": ["platforms"],
|
|
"properties": {
|
|
"platforms": { "$ref": "#/$defs/platforms" },
|
|
"requiredClientVersion": {
|
|
"type": "string",
|
|
"pattern": "^(?:0|[1-9]\\d*)\\.(?:0|[1-9]\\d*)\\.(?:0|[1-9]\\d*)(?:-[0-9A-Za-z.-]+)?(?:\\+[0-9A-Za-z.-]+)?$"
|
|
},
|
|
"compatibleAgents": {
|
|
"type": "array",
|
|
"items": { "$ref": "#/$defs/slug" },
|
|
"uniqueItems": true
|
|
},
|
|
"requirements": {
|
|
"type": "array",
|
|
"items": { "$ref": "#/$defs/requirement" },
|
|
"uniqueItems": true
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"agentSpec": {
|
|
"type": "object",
|
|
"required": ["kind"],
|
|
"properties": {
|
|
"kind": { "const": "agent" },
|
|
"installPolicy": { "enum": ["market", "system"] },
|
|
"updatePolicy": { "enum": ["market", "repository"] },
|
|
"persona": {
|
|
"type": "object",
|
|
"required": ["role", "traits"],
|
|
"properties": {
|
|
"role": { "type": "string", "minLength": 1 },
|
|
"traits": {
|
|
"type": "array",
|
|
"items": { "type": "string", "minLength": 1 }
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
"dependencies": {
|
|
"installPolicy": ["updatePolicy"],
|
|
"updatePolicy": ["installPolicy"]
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"collectionChild": {
|
|
"type": "object",
|
|
"required": ["identity", "path", "presentation", "release"],
|
|
"properties": {
|
|
"identity": {
|
|
"type": "object",
|
|
"required": ["kind", "id", "parentId"],
|
|
"properties": {
|
|
"kind": { "const": "skill" },
|
|
"id": { "$ref": "#/$defs/slug" },
|
|
"parentId": { "$ref": "#/$defs/slug" }
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"path": { "$ref": "#/$defs/safeRelativePath" },
|
|
"presentation": { "$ref": "#/$defs/presentation" },
|
|
"release": { "$ref": "#/$defs/release" }
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"collection": {
|
|
"type": "object",
|
|
"required": ["role", "childCount", "children"],
|
|
"properties": {
|
|
"role": { "const": "parent" },
|
|
"childCount": { "type": "integer", "minimum": 1 },
|
|
"children": {
|
|
"type": "array",
|
|
"minItems": 1,
|
|
"items": { "$ref": "#/$defs/collectionChild" }
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"skillSpec": {
|
|
"type": "object",
|
|
"required": ["kind"],
|
|
"properties": {
|
|
"kind": { "const": "skill" },
|
|
"riskLevel": { "enum": ["low", "medium", "high", "critical"] },
|
|
"skillType": { "enum": ["procedural", "declarative", "hybrid"] },
|
|
"requires": {
|
|
"type": "object",
|
|
"required": ["tools", "connections"],
|
|
"properties": {
|
|
"tools": {
|
|
"type": "array",
|
|
"items": { "type": "string", "minLength": 1 }
|
|
},
|
|
"connections": {
|
|
"type": "array",
|
|
"items": { "type": "string", "minLength": 1 }
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"collection": { "$ref": "#/$defs/collection" }
|
|
},
|
|
"additionalProperties": false
|
|
}
|
|
}
|
|
}
|