[0.9.9] - 2026-06-02
New Features
codegraph_exploreis now the primary tool, and one call is usually all an agent needs: it returns the verbatim source of the symbols relevant to your question (a plain question works as the query — you no longer need exact symbol names), grouped by file and Read-equivalent, so the agent answers without falling back to read/grep. The narrowercodegraph_contextandcodegraph_tracetools were removed in favor of it — explore already surfaces the call flow among the symbols you name (the job trace did), so there's one obvious tool to reach for instead of three.codegraph_explorenow includes a compact "Blast radius" for the symbols you're looking at — who depends on each (just the locations, not their source) and which test files cover it — so before editing, the agent can see what else to update and which tests to run, without a separate impact lookup. Symbols nothing depends on are skipped, so it stays short.- Functions defined inside a store or handler object — the actions in a Zustand
create((set, get) => ({ … }))store, and the same shape in Redux, Pinia, MobX, or any exported handler/route map — are now indexed as real symbols. Previously they existed only as object properties, so looking one up by name or asking who calls it returned "not found" and the agent had to read the whole store file to follow the flow; nowcodegraph_node,codegraph_callers, andcodegraph_exploreresolve them directly — including calls made throughuseStore.getState().fetchUser()or a destructuredconst { fetchUser } = useStore.getState(). codegraph_explorenow surfaces the right definition when a method name is overloaded across types. Asking about, say,DataRequest'staskandvalidateused to return a same-named method from an unrelated file (or an abstract base stub) and bury the one you meant; explore now recognizes the type you named in the query and leads with that type's own overloads, in full.
Fixes
- Search ranking no longer lets a common word in your request hijack the results: asking about, say, a "flat object" screen used to surface an unrelated constant that merely happened to be named the same, because the exact-name match outweighed everything else. Ranking now weighs how well each result is corroborated by the rest of your request, so the symbols you actually meant come first (this improves
codegraph_explore's results). codegraph_nodenow returns every definition when a name is ambiguous — an overloaded method, or the same method name on different types — instead of returning one (sometimes the wrong one) with a note listing the rest. Asking for such a symbol now hands back all of the matching definitions with their source in a single call, so the agent stops having to read the file by hand to find the specific overload it wanted (common in Swift, Go, Java, and C#). For a heavily-overloaded name (apoll/validatewith dozens of definitions), passfile(and/orline) — e.g. thefile:lineshown in a trail — to get that exact definition's body. Large overload sets show the most relevant ones in full and list the remainder by location.codegraph_explorenever returns half a method anymore: when output runs up against its size budget it drops whole methods or whole files (and lists what it dropped, so you can ask for them in another call) instead of cutting off a method body partway. A truncated method was the one case that still sent the agent to read the file for the rest — so the source explore returns is now always complete and usable as-is.