feat(fb-42): bulk multi-query — kebab search --bulk + mcp__kebab__bulk_search #134

Merged
altair823 merged 12 commits from feat/fb-42-bulk-multi-query into main 2026-05-10 12:27:13 +00:00
Owner

Summary

  • CLI: kebab search --bulk reads stdin ndjson, runs N queries sequentially, emits per-query stdout ndjson + stderr summary. Cap 100.
  • MCP: 신규 kebab__bulk_search tool (tools/list 7 → 8). JSON envelope bulk_search_response.v1 with results: [bulk_search_item.v1] + summary: {total, succeeded, failed}.
  • kebab-app: bulk_search_with_config facade — App instance 재사용 → embedder cold-start / cache amortize.
  • Per-query failures embed error.v1 in item, never abort bulk loop.
  • Wire additive minor: bulk_search_item.v1 + bulk_search_response.v1 신규 schemas.
  • Capability flag bulk_search: true.
  • Rerank hint lever (stub second goal) deferred to fb-39 cross-encoder follow-up.

Design: docs/superpowers/specs/2026-05-10-p9-fb-42-bulk-multi-query-design.md
Plan: docs/superpowers/plans/2026-05-10-p9-fb-42-bulk-multi-query.md

Test plan

  • cargo test --workspace --no-fail-fast -j 1 green
  • cargo clippy --workspace --all-targets -- -D warnings clean
  • kebab-core: 4 unit tests (BulkSearchItem/Summary serde + variants)
  • kebab-app: 3 unit tests (empty / over-cap / per-item error)
  • kebab-cli: 5 integration tests (2-query / empty / malformed ndjson / over-cap / per-item invalid)
  • kebab-mcp: 4 integration tests (envelope shape / empty / per-item / over-cap tool error) + tools_list count bump
  • Manual smoke against /tmp/kebab-smoke

🤖 Generated with Claude Code

## Summary - CLI: `kebab search --bulk` reads stdin ndjson, runs N queries sequentially, emits per-query stdout ndjson + stderr summary. Cap 100. - MCP: 신규 `kebab__bulk_search` tool (tools/list 7 → 8). JSON envelope `bulk_search_response.v1` with `results: [bulk_search_item.v1]` + `summary: {total, succeeded, failed}`. - kebab-app: `bulk_search_with_config` facade — App instance 재사용 → embedder cold-start / cache amortize. - Per-query failures embed `error.v1` in item, never abort bulk loop. - Wire additive minor: `bulk_search_item.v1` + `bulk_search_response.v1` 신규 schemas. - Capability flag `bulk_search: true`. - Rerank hint lever (stub second goal) deferred to fb-39 cross-encoder follow-up. Design: docs/superpowers/specs/2026-05-10-p9-fb-42-bulk-multi-query-design.md Plan: docs/superpowers/plans/2026-05-10-p9-fb-42-bulk-multi-query.md ## Test plan - [x] cargo test --workspace --no-fail-fast -j 1 green - [x] cargo clippy --workspace --all-targets -- -D warnings clean - [x] kebab-core: 4 unit tests (BulkSearchItem/Summary serde + variants) - [x] kebab-app: 3 unit tests (empty / over-cap / per-item error) - [x] kebab-cli: 5 integration tests (2-query / empty / malformed ndjson / over-cap / per-item invalid) - [x] kebab-mcp: 4 integration tests (envelope shape / empty / per-item / over-cap tool error) + tools_list count bump - [ ] Manual smoke against /tmp/kebab-smoke 🤖 Generated with Claude Code
altair823 added 11 commits 2026-05-10 12:09:03 +00:00
- CLI: kebab search --bulk + stdin ndjson → stdout per-query ndjson
- MCP: 신규 kebab__bulk_search tool + JSON envelope (results + summary)
- Sequential for-loop, App instance 재사용 (cache amortize)
- Per-query error policy: continue + per-item error.v1
- Limits: queries.len() <= 100
- Capability flag bulk_search 신규
- Rerank hint 별도 task (fb-39 cross-encoder 설계 후)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
8 tasks: kebab-core types, kebab-app bulk_search_with_config facade
(cap 100 + per-query error policy), CLI --bulk flag + stdin ndjson +
output stream, CLI integration tests, MCP bulk_search tool +
registration + tools_list count bump, MCP integration tests,
capability flag, wire schemas + README + SMOKE + design + SKILL +
status flip.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Exposes bulk multi-query search via MCP `bulk_search` tool:
- Input: { queries: [SearchInput shapes...] }, capped at 100
- Output: bulk_search_response.v1 with per-query results + summary
- Sequential execution reuses App instance for cache amortization
- Per-query errors embed error.v1 JSON; never aborts bulk call

Updates tool count from 7 to 8 in lib.rs comment + tools_list test.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- Capabilities.bulk_search: true (snapshot)
- schema.v1 wire required list updated

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- Add bulk_search_item.v1 + bulk_search_response.v1 wire schemas
- Register both in WIRE_SCHEMAS const
- README: --bulk flag mention + MCP tool list 7→8 (bulk_search)
- SMOKE: bulk multi-query walkthrough (CLI + MCP equivalent)
- Design §2.2: Bulk multi-query (fb-42) subsection (additive minor)
- SKILL: mcp__kebab__bulk_search section + tool table row
- Task spec status open→completed, banner replaced
- INDEX: fb-42 row 머지 (rerank hint deferred)
- Fix: missed Capabilities {bulk_search} in cli wire.rs test (Task 7 leftover)
- Fix: missed tools.len() 7→8 in cli_mcp_smoke (Task 5 leftover)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
altair823 added 1 commit 2026-05-10 12:19:28 +00:00
- print_schema_text plain mode: include bulk_search capability row
- README: tool count 7 → 8, fetch added to MCP tool name lists

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
altair823 merged commit 3a9a52326d into main 2026-05-10 12:27:13 +00:00
altair823 deleted branch feat/fb-42-bulk-multi-query 2026-05-10 12:27:15 +00:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: altair823-org/kebab#134