mirror of
https://github.com/DeusData/codebase-memory-mcp.git
synced 2026-11-06 08:35:21 +08:00
Round-2 overhaul of the tool-output surface, built eval-first (byte harness + no-context field-eval agents, always vs the v0.9.0 release binary): Format — tree syntax everywhere: - compact_out emits tree tables: 'key: N (cols: a b c)' headers, indented space-delimited rows, '-' placeholders, space-aware quoting. Every table in every tool converts mechanically. - Grouped prefix-factored output is the DEFAULT for search_graph and trace_path: rows grouped under their shared (qn-prefix, file) printed once, row qn = group prefix + '.' + name (stated in-band). Measured: 192-hit search 2,929B (was 4,811 TOON / 238,466 v0.9.0), 82-row trace 2,256B (was 4,234 / 8,094). Field eval: 5/5 answers correct, QN reconstruction verified, no comprehension loss. - detail:'ids' tier: bare-qn enumeration for wide sweeps (-44%). Pagination — exactly-once, stateless: - store_meta generation (per-DB random uid + mutation counter bumped in cbm_store_upsert_project — every index run's choke point): cursors can never silently validate against a rebuilt DB. - trace cursors: opaque token (leg, generation, params-hash, (hop,id) watermark); pages drain callees then callers with exact callees_total/callers_total on every page; teaching errors for params-mismatch and staleness. Guard: 12 callees paged 5+5+2, every row on exactly one page. - deterministic ordering: BFS ORDER BY hop,id; canonical (hop,id) sort + min-hop dedup across same-name seeds (hop fed risk_labels wrong before); search (name,id)/(rank,id) tie-breaks make offset pages stable. Lean defaults + teaching errors: - get_graph_schema no longer advertises blocked internal fields (fp/sp/bt). - index_repository coverage lists: counts + 5 examples + one-line pointer notes (full record was always in the logfile); 6.0KB -> 1.5KB here, 53KB observed on a large repo. index_status gates the git context block behind verbose:true. - trace limit param (<=5000) + truncated:true — never a silent truncation; invalid direction now errors with the valid values; requesting core columns via fields hints instead of emitting empty cells; cypher resolves f.file/f.qn/f.path aliases. Trace-correctness fixes (reproduce-first, RED verified): - bfs_collect_edges 4KB id-string overflow: past ~1000 visited nodes the edge SQL failed to prepare and EVERY trace edge silently vanished; now a per-connection temp-table join (star guard: 1200/1200 edges). - bfs_union_same_name: min-hop across seeds + edge dedup. Guards: gating tool-output regression suite (context-explosion detector: blocked-field leaks, repeated-key envelopes, oversized notes + calibrated byte ceilings + semantic floors). Full suite 6,367 passed / 0 failed. Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>