You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* feat(mcp): default tool responses to markdown with format:json opt-in
All MCP tool handlers now route through render::finalize, so the default
output is token-efficient markdown and format:"json" returns compact JSON
for programmatic consumers. Converted the JSON-only paths: message_search,
all lcm_* tools, fact_store/fact_feedback, skill_list/skill_view/
automation_run_artifact_view/hermes_skill_bridge (previously pretty-printed),
all edit tools, branch_list, active_project, dashboard, run_affected_tests
error paths, git error results, dsm, and tracedecay_retrieve (markdown
default returns stored content verbatim; never re-truncates).
All converted tools joined FORMAT_CAPABLE_TOOL_NAMES, so their schemas
advertise the format param and the generated Hermes bridge plugin keeps
injecting format:"json" for its machine contract.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* style: rustfmt handler conversions
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* feat(mcp): purpose-built message_search markdown; lcm_preflight fixes
- message_search default output is now a compact markdown list (provider,
session+title, role, timestamp, score, readable snippet) instead of
generic_md dumping raw metadata_json/source_path/transcript_path blobs
into table cells. format:"json" still returns full structured records.
- Fix regression: lcm_preflight markdown-default truncation now threads the
project root so an oversized payload stores a retrieval handle instead of
clipping irreversibly (matches lcm_expand_query).
- Fix metrics: JSON truncation envelope reports reversible=handle.is_some()
instead of hardcoded true, so failed/absent-handle truncations aren't
miscounted as reversible.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* fix(mcp): reversible text truncation; bound expand_query floor
Address truncation-audit findings so every markdown-default response stays
bounded and recoverable:
- S4: tracedecay_files and tracedecay_type_hierarchy no longer clip oversized
output irreversibly. New render::truncate_text_with_handle stores the full
body and returns the markdown truncation envelope with an rh_ handle
(delegates to truncated_markdown_with_handle; no duplicated logic).
- S3: lcm_expand_query_tool_json's format:"json"+needs_synthesis path could
emit an unbounded payload when even the Minimal compaction tier overflowed.
New bounded_lcm_expand_query_floor_text enforces a floor: stores a retrieval
handle (surfaced as response_handle for the Hermes bridge) and keeps the
contract keys (status, needs_synthesis, bounded answer/prompt, rebuilt
synthesis_prompt) while zeroing unbounded arrays with *_truncated markers.
- S5: LCM preflight/expand_query compaction tiers now call
observe_response_truncation so those truncations show up in metrics.
- Drop unused LCM_GREP_SNIPPET_CHARS (lcm_grep hits are already bounded).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* style: rustfmt lcm session handlers
---------
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
"description":"Data shape rendered as markdown: stats, clusters, or matrix (default: stats). Pass 'json' for compact machine-readable JSON of the default stats shape."
0 commit comments