Skip to content

v0.14.0

Choose a tag to compare

@github-actions github-actions released this 11 Jun 09:20
· 11 commits to main since this release

v0.14.0: Graph profile encoding (79-84% fewer tokens, session dedup)

The 8 highest-traffic tools now emit GCF graph profile payloads instead of generic tabular. Combined with gcf-proxy session dedup, token savings compound to 92.7% by the 5th tool call in a session.

Token savings by profile

Profile Savings vs JSON When
Tabular (v0.13.0) 30-51% Every tool response
Graph (v0.14.0) 79-84% Symbol-returning tools
Graph + session dedup 92.7% 5th call in session

How it works

Symbol-returning tools (blast_radius, find_callers, explore_symbol, find_references, cross_repo, detect_changes, type_hierarchy, list_symbols) now build structured Payload objects with:

  • Symbols with qualified names, kinds, scores, provenance, and distance tiers
  • Edges with typed relationships (calls, references, extends, implements)
  • Distance grouping: targets (distance 0), callers/refs (distance 1)

This structured output enables gcf-proxy to track which symbols have been transmitted and replace them with bare references on subsequent calls.

JSON output is unchanged. Graph encoding only activates when AGENT_LSP_OUTPUT_FORMAT=gcf (the default since v0.13.0). Set AGENT_LSP_OUTPUT_FORMAT=json to revert.

What is GCF?

GCF (Graph Compact Format) is a token-optimized wire format for LLM tool responses. It eliminates field name repetition, identifier repetition, and per-record metadata that make JSON expensive at scale. 79% fewer tokens than JSON, 34% fewer than TOON, 100% LLM comprehension accuracy where JSON drops to 66.7%.

Website: gcformat.com


Bug fixes

  • LSP workspace ready check on all query methods: 15 LSP query methods (list_symbols, go_to_definition, find_callers, type_hierarchy, hover, completions, etc.) now wait for workspace indexing before sending requests. Previously only find_references had this check, causing -32001 "content modified" errors when tools were called immediately after start_lsp.

  • Spaces in GCF qualified names: Symbol names containing spaces (common in TypeScript: (property) callback, generic signatures) are now sanitized to underscores. Previously, spaces shifted the positional fields in GCF graph output, causing invalid_score decode errors in gcf-proxy.

Other changes

  • GCF syntax primer: When GCF output is active, the MCP initialize response includes a format guide so LLMs can parse GCF from the first tool call.
  • gcf-go upgraded to v1.0.0 (GCF spec v2.0 stable): mandatory profile= header, streaming trailer format change.