Files
kebab/docs/wire-schema/v1/schema.schema.json
th-kim0823 e8da415624 feat(schema): bulk_search capability flag (fb-42)
- Capabilities.bulk_search: true (snapshot)
- schema.v1 wire required list updated

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-10 20:49:09 +09:00

86 lines
3.1 KiB
JSON

{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://kebab.local/wire-schema/v1/schema.schema.json",
"title": "schema.v1",
"description": "kebab introspection report — wire schemas, capabilities, model versions, and index stats.",
"type": "object",
"required": ["schema_version", "kebab_version", "wire", "capabilities", "models", "stats"],
"properties": {
"schema_version": { "const": "schema.v1" },
"kebab_version": { "type": "string" },
"wire": {
"type": "object",
"required": ["schemas"],
"properties": {
"schemas": {
"type": "array",
"items": { "type": "string", "pattern": "^[a-z_]+\\.v[0-9]+$" }
}
}
},
"capabilities": {
"type": "object",
"additionalProperties": { "type": "boolean" },
"required": [
"json_mode", "ingest_progress", "ingest_cancellation",
"rag_multi_turn", "search_cache", "incremental_ingest",
"streaming_ask", "http_daemon", "mcp_server", "single_file_ingest", "bulk_search"
]
},
"models": {
"type": "object",
"required": [
"parser_version", "chunker_version", "embedding_version",
"prompt_template_version", "index_version", "corpus_revision"
],
"properties": {
"parser_version": { "type": "string" },
"chunker_version": { "type": "string" },
"embedding_version": { "type": "string" },
"prompt_template_version": { "type": "string" },
"index_version": { "type": "string" },
"corpus_revision": { "type": "integer", "minimum": 0 }
}
},
"stats": {
"type": "object",
"required": ["doc_count", "chunk_count", "asset_count", "last_ingest_at"],
"properties": {
"doc_count": { "type": "integer", "minimum": 0 },
"chunk_count": { "type": "integer", "minimum": 0 },
"asset_count": { "type": "integer", "minimum": 0 },
"last_ingest_at": {
"anyOf": [
{ "type": "string", "format": "date-time" },
{ "type": "null" }
]
},
"media_breakdown": {
"type": "object",
"description": "p9-fb-37: per-media-kind doc count. 5 keys (markdown/pdf/image/audio/other), zero-padded.",
"additionalProperties": { "type": "integer", "minimum": 0 }
},
"lang_breakdown": {
"type": "object",
"description": "p9-fb-37: per-language doc count. NULL lang keyed as the literal string 'null'. Map may be empty on empty corpus.",
"additionalProperties": { "type": "integer", "minimum": 0 }
},
"index_bytes": {
"type": "object",
"description": "p9-fb-37: on-disk byte sums.",
"required": ["sqlite", "lancedb"],
"properties": {
"sqlite": { "type": "integer", "minimum": 0 },
"lancedb": { "type": "integer", "minimum": 0 }
}
},
"stale_doc_count": {
"type": "integer",
"minimum": 0,
"description": "p9-fb-37: docs whose updated_at exceeds config.search.stale_threshold_days. 0 when threshold=0."
}
}
}
}
}