Files
pi-agent-config/scenarios/curator/backend/curator/schemas/extraction.json
T
Kai 88b06d782f feat(curator): vendor the application backend as the scenario's tracked source
The curator Python backend (package, tests, systemd units, config templates, scripts) now lives under scenarios/curator/backend and is the single source of truth; the live checkout at the workspace path is a runtime copy. Exported from the app repo's tracked tree via git archive (no history, .pi/venv/caches excluded). 149 unit tests pass from the new location.

profile.toml backend is now repo-relative (scenarios/curator/backend); verify-generated.sh resolves a relative backend against REPO_ROOT. verify-no-secrets ASSIGN heuristic now requires value entropy so vendored kwargs like token=extraction_token no longer false-positive. README documents the backend/ layout and the operator-owned app rollout step.
2026-08-30 18:49:10 -07:00

141 lines
3.3 KiB
JSON

{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://curator.local/schemas/extraction.json",
"title": "extraction",
"type": "object",
"additionalProperties": false,
"required": [
"items"
],
"properties": {
"source_title": {
"type": "string",
"maxLength": 500
},
"source_summary": {
"type": "string",
"maxLength": 600
},
"no_items_reason": {
"type": "string",
"maxLength": 600
},
"items": {
"type": "array",
"maxItems": 8,
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"media_type",
"title"
],
"properties": {
"media_type": {
"type": "string",
"enum": [
"book",
"movie",
"tv",
"music"
]
},
"title": {
"type": "string",
"maxLength": 300
},
"original_title": {
"type": "string",
"maxLength": 300
},
"aliases": {
"type": "array",
"maxItems": 8,
"items": {
"type": "string",
"maxLength": 200
}
},
"creator": {
"type": "string",
"maxLength": 200
},
"year": {
"type": [
"integer",
"null"
],
"minimum": 1000,
"maximum": 2999,
"description": "Four-digit year, or null when not known. Never a guess."
},
"external_ids": {
"type": "object",
"additionalProperties": false,
"properties": {
"imdb": {
"type": "string",
"maxLength": 64
},
"tmdb": {
"type": "string",
"maxLength": 64
},
"tvdb": {
"type": "string",
"maxLength": 64
},
"isbn": {
"type": "string",
"maxLength": 64
}
},
"description": "Only identifiers explicitly present in the input. Never inferred."
},
"role": {
"type": "string",
"enum": [
"primary",
"secondary"
]
},
"evidence": {
"type": "string",
"maxLength": 400,
"description": "How the source substantively discusses the work."
},
"summary": {
"type": "string",
"maxLength": 600
},
"recommendation": {
"type": "string",
"enum": [
"strong",
"worth",
"optional",
"skip"
]
},
"reasons": {
"type": "array",
"maxItems": 3,
"items": {
"type": "string",
"maxLength": 300
}
},
"suggested_action": {
"type": "string",
"enum": [
"collect",
"wanted",
"ignore"
]
}
}
}
}
}
}