feat(bulk): document bulk search input schema + error shape hint (Todo #2)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
74
docs/wire-schema/v1/bulk_search_input.schema.json
Normal file
74
docs/wire-schema/v1/bulk_search_input.schema.json
Normal file
@@ -0,0 +1,74 @@
|
||||
{
|
||||
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||||
"$id": "https://kb.local/wire/v1/bulk_search_input.schema.json",
|
||||
"title": "BulkSearchInput v1",
|
||||
"description": "v0.20.2 (Todo #2): 한 줄(ndjson)당 하나의 bulk search query. `kebab search --bulk` 가 stdin 에서 줄 단위로 받는다. `query` 만 required (string — nested object 아님); 나머지는 optional. `kebab-app::bulk::parse_one` 이 source of truth.",
|
||||
"type": "object",
|
||||
"required": ["query"],
|
||||
"properties": {
|
||||
"query": {
|
||||
"type": "string",
|
||||
"description": "검색 텍스트. required. nested object ({\"text\":...}) 가 아니라 평문 string."
|
||||
},
|
||||
"mode": {
|
||||
"type": "string",
|
||||
"enum": ["lexical", "vector", "hybrid"],
|
||||
"description": "검색 모드. optional, default `hybrid`."
|
||||
},
|
||||
"k": {
|
||||
"type": "integer",
|
||||
"minimum": 0,
|
||||
"description": "반환 hit 수. optional. 생략 또는 0 → app 이 config `search.default_k` (default 10) 로 해석."
|
||||
},
|
||||
"trust_min": {
|
||||
"type": "string",
|
||||
"enum": ["primary", "secondary", "generated"],
|
||||
"description": "최소 trust level (해당 level 이상 포함). optional."
|
||||
},
|
||||
"ingested_after": {
|
||||
"type": "string",
|
||||
"format": "date-time",
|
||||
"description": "RFC3339 date-time. 이 시각 이후 ingest 된 문서만. optional."
|
||||
},
|
||||
"media": {
|
||||
"type": "array",
|
||||
"items": { "type": "string" },
|
||||
"description": "media kind OR 필터 (`md` → `markdown` alias 정규화). optional."
|
||||
},
|
||||
"tag": {
|
||||
"type": "array",
|
||||
"items": { "type": "string" },
|
||||
"description": "tag OR 필터. optional."
|
||||
},
|
||||
"lang": {
|
||||
"type": "string",
|
||||
"description": "ISO 언어 코드 필터. optional."
|
||||
},
|
||||
"path_glob": {
|
||||
"type": "string",
|
||||
"description": "doc_path glob 필터. optional (parse_one 추가 지원 필드)."
|
||||
},
|
||||
"doc_id": {
|
||||
"type": "string",
|
||||
"description": "특정 doc_id 로 제한. optional (parse_one 추가 지원 필드)."
|
||||
},
|
||||
"max_tokens": {
|
||||
"type": "integer",
|
||||
"minimum": 0,
|
||||
"description": "응답 JSON token budget (chars/4 근사). optional."
|
||||
},
|
||||
"snippet_chars": {
|
||||
"type": "integer",
|
||||
"minimum": 0,
|
||||
"description": "per-hit snippet 문자 cap. optional."
|
||||
},
|
||||
"cursor": {
|
||||
"type": "string",
|
||||
"description": "이전 응답의 opaque base64 cursor (pagination). optional."
|
||||
},
|
||||
"trace": {
|
||||
"type": "boolean",
|
||||
"description": "true 시 pipeline trace 캡처 (캐시 우회). optional, default false."
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -7,7 +7,7 @@
|
||||
"required": ["schema_version", "query", "response", "error"],
|
||||
"properties": {
|
||||
"schema_version": { "const": "bulk_search_item.v1" },
|
||||
"query": { "type": "object", "description": "Input echo (verbatim JSON object)." },
|
||||
"query": { "type": "object", "description": "Input echo (verbatim JSON object). 입력 shape 는 bulk_search_input.schema.json 참조 — `query` (string) 만 required, 나머지 optional." },
|
||||
"response":{
|
||||
"type": ["object", "null"],
|
||||
"description": "search_response.v1 payload on success; null when error is non-null."
|
||||
|
||||
Reference in New Issue
Block a user