v0.14.0
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
- Spec · Go · Python · TypeScript · Proxy · Playground
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, causinginvalid_scoredecode errors in gcf-proxy.
Other changes
- GCF syntax primer: When GCF output is active, the MCP
initializeresponse 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.