54 lines
2.0 KiB
JSON
54 lines
2.0 KiB
JSON
{
|
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
"$id": "https://cangjie-skill.org/schemas/source-manifest.schema.json",
|
|
"title": "Cangjie Source Manifest (.cangjie/manifest.yaml)",
|
|
"type": "object",
|
|
"required": ["schema_version", "content_pack", "sources"],
|
|
"properties": {
|
|
"schema_version": { "const": 1 },
|
|
"content_pack": { "type": "string" },
|
|
"output": {
|
|
"type": "object",
|
|
"description": "持久化的输出策略(update/repair 默认不重新选型)",
|
|
"properties": {
|
|
"requested": { "enum": ["auto", "single", "pack"] },
|
|
"selected": { "enum": ["single", "pack"] },
|
|
"decision_policy": { "type": "string" },
|
|
"skill_budget": { "type": "integer" },
|
|
"preserve_strategy_on_update": { "type": "boolean", "default": true }
|
|
}
|
|
},
|
|
"sources": {
|
|
"type": "array",
|
|
"minItems": 1,
|
|
"items": {
|
|
"type": "object",
|
|
"required": ["source_id", "kind", "title", "uri", "rights", "trust", "versions"],
|
|
"properties": {
|
|
"source_id": { "type": "string", "pattern": "^src-[a-z0-9-]+$" },
|
|
"kind": { "enum": ["book", "article", "interview", "transcript", "course", "podcast", "other"] },
|
|
"title": { "type": "string" },
|
|
"author": { "type": "string" },
|
|
"uri": { "type": "string" },
|
|
"rights": { "enum": ["user-provided", "public-domain", "licensed", "unknown"] },
|
|
"trust": { "enum": ["primary", "secondary", "tertiary"] },
|
|
"versions": {
|
|
"type": "array",
|
|
"minItems": 1,
|
|
"items": {
|
|
"type": "object",
|
|
"required": ["version_id", "added_at", "parser", "status"],
|
|
"properties": {
|
|
"version_id": { "type": "string", "pattern": "^sha256:[0-9a-f]+$" },
|
|
"added_at": { "type": "string" },
|
|
"parser": { "type": "string" },
|
|
"status": { "enum": ["active", "superseded", "withdrawn"] }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|