From 760eee89c81463ff63b5ff29dca3eef18e4bebfd Mon Sep 17 00:00:00 2001 From: altair823 Date: Wed, 27 May 2026 23:13:57 +0000 Subject: [PATCH] fix(app): flip streaming_ask + single_file_ingest capabilities to actual surface (Bug #9) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit capabilities_snapshot() 가 streaming_ask + single_file_ingest 를 hardcoded false 로 보고했으나 실제 구현은 v0.20 final-dogfood 에서 production-grade: - kebab ask --stream → answer_event.v1 ndjson 191 event 정상 emit - kebab ingest-file / kebab ingest-stdin --title → ingest_report.v1 정상 MCP host + Claude Code skill 등 agent 가 schema.capabilities 로 routing 결정 시 false negative → 사용자가 실제 동작 feature 를 사용 불가능하다고 오인. http_daemon 은 false 유지 (별도 sub-item 의 non-impl). Co-Authored-By: Claude Opus 4.7 (1M context) --- crates/kebab-app/src/schema.rs | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/crates/kebab-app/src/schema.rs b/crates/kebab-app/src/schema.rs index daab650..d99b1a6 100644 --- a/crates/kebab-app/src/schema.rs +++ b/crates/kebab-app/src/schema.rs @@ -142,10 +142,10 @@ fn capabilities_snapshot() -> Capabilities { rag_multi_turn: true, search_cache: true, incremental_ingest: true, - streaming_ask: false, + streaming_ask: true, http_daemon: false, mcp_server: true, - single_file_ingest: false, + single_file_ingest: true, bulk_search: true, } } @@ -268,3 +268,24 @@ mod tests_stats_ext { assert_eq!(s.stats.stale_doc_count, 0); } } + +#[cfg(test)] +mod tests_capabilities { + use super::*; + + #[test] + fn capabilities_streaming_ask_matches_cli_surface() { + // Bug #9: kebab ask --stream 가 answer_event.v1 ndjson 191 event 정상 emit → + // capabilities.streaming_ask 가 true 여야 함. + let caps = capabilities_snapshot(); + assert!(caps.streaming_ask, "streaming_ask must be true (Bug #9)"); + } + + #[test] + fn capabilities_single_file_ingest_matches_cli_surface() { + // Bug #9: kebab ingest-file + kebab ingest-stdin --title 양쪽 모두 + // ingest_report.v1 정상 emit → capabilities.single_file_ingest 가 true 여야 함. + let caps = capabilities_snapshot(); + assert!(caps.single_file_ingest, "single_file_ingest must be true (Bug #9)"); + } +}