docscode intelligence

See what breaks before you rename it

Pick any symbol and Symbol Graph draws its dependency neighborhood, then runs a local compiler probe to tell you the real blast radius — and whether the rename is safe. No cloud, no embeddings, no telemetry.

overview

Symbol Graph is an interactive, symbol-level dependency view over your scanned codebase. Select a function, component, type, store, or command and it renders who depends on it (up to two columns deep), what it uses, and a blast-radius readout. The estimate is an instant graph BFS; the verified result comes from a local ts-morph compiler probe that returns the true direct/transitive impact and a rename-safe verdict. A FILES mode draws the whole-repo, directory-clustered import graph.

  • Local-only: reads .13x/map/codegraph.json, nothing uploaded
  • Compiler-verified blast radius via a bundled ts-morph sidecar
  • No embeddings, no cloud indexing, no external AI calls, no telemetry
  • Dynamic call sites flagged with file:line — no false rename confidence
  • Auto-selects the most depended-on symbol on open, zero clicks
  • Deterministic monochrome layout, no force simulation
why it matters

Verified blast radius, not a guess

You get an instant graph-BFS estimate of dependents and depth immediately, then the backend blast_radius command runs a real ts-morph compiler probe plus a reverse-index BFS to return the actual direct and transitive sets, max depth reached, and a rename-safe / NOT rename-safe verdict.

Honest about what it can't statically see

The verified result surfaces a 'dynamic' list — call sites the compiler can't resolve, each with file:line and a reason. When present, the UI warns 'dynamic — radius not complete here', so you never get false confidence in a rename.

Compiler-resolved truth, not regex

The neighborhood and rankings use only compiler-verified edges (resolution === 'resolved'). Unresolved and regex edges are excluded, so 'used by' and 'uses' reflect real symbol references.

Answers the moment you open it

On entry the view auto-selects the most depended-on symbol — BFS-ranked over backward adjacency, depth-capped at 4 — so the graph and inspector are populated with zero clicks.

Local-first and private

Everything reads the local code map at .13x/map/codegraph.json. No file contents are uploaded, no embeddings, no cloud indexing, no external AI calls, no telemetry. The compiler probe runs locally via the bundled sidecar.

Deterministic, physics-free layout

Both the symbol scene (dep2 | dep1 | SYMBOL | fwd columns) and the FILES scene (shelf-packed directory clusters) use deterministic layouts — no jittery force simulation — with floating edges clipped cleanly to each node's border.

how it works
01

Scan the map first

Symbol Graph reads the code map produced by SCAN MAP in the Map view, persisted at .13x/map/codegraph.json. With no map, the view prompts you to scan; the store auto-reloads on code_map_updated events for the active root.

02

Open the view (Ctrl+G)

Press Ctrl+G or click 'graph' in the Sidebar to toggle the main area into Symbol Graph and back to the grid. The most depended-on symbol is auto-selected on open.

03

Read the neighborhood

SYMBOL mode lays out the selected symbol's dependents to depth two on the left, the symbol in the center, and its forward dependencies on the right. Columns over 25 items collapse into a '+N more' node you can click to expand.

04

Read the verified blast radius

Selecting a symbol fires the compiler probe. Status moves from 'estimated (graph BFS, unverified)' to verified direct/transitive/depth counts plus a 'rename-safe (verified)' or 'NOT rename-safe' verdict, with any dynamic call sites flagged.

05

Navigate or switch to FILES

Click symbol rows under USED BY / USES in the Inspector to re-center on them, or switch to FILES mode for a whole-repo import graph clustered by directory, with FIT, RESET, and 'show isolated' controls.

faq

How is the blast radius 'verified' rather than estimated?

The instant number is a graph-BFS estimate. The verified number comes from the backend blast_radius command, which runs a ts-morph compiler probe against your tsconfig plus a reverse-index BFS, then returns the real direct/transitive sets, max depth reached, and a rename-safe verdict — all locally via the bundled sidecar.

What happens with calls the compiler can't resolve?

They're collected into a 'dynamic' list with file:line and a reason, and the UI warns 'dynamic — radius not complete here'. The figures stay honest instead of pretending a rename is fully safe.

Does this send my code anywhere?

No. Symbol Graph only reads the local code map at .13x/map/codegraph.json and runs the compiler probe locally. No file contents are uploaded — only symbol/file identifiers, kinds, names, and file:line locations. No embeddings, cloud indexing, external AI, or telemetry.

Why is my graph empty?

It needs a code map with compiler-resolved edges. Run SCAN MAP in the Map view first. If the map has no resolved dependency edges yet, the view tells you to rescan to index dependencies.

get started

one project. many shells. zero noise.

13x is local-first and free of telemetry — your code, commands and shells never leave the machine. Join the waitlist for the next build.