Symbol indexer

Per-file extraction of function/class/variable definitions for fast jumps and @symbol: mentions.

What it does

services/symbol_indexer.py walks the project tree and extracts definitions from every supported file. Stored as a per-workspace JSON index.

Languages supported:

  • Python (functions, classes, methods, top-level variables)
  • JavaScript / TypeScript (functions, classes, exports, hooks)
  • Go, Rust, Ruby, PHP — basic function/class extraction
  • HTML/CSS — IDs and CSS class names

The index is rebuilt on:

  • Every project rescan (top-bar Refresh button).
  • File saves (incremental, just the changed file).

How to use it

From @symbol: in the planner

Type @symbol:my_function in the planner. The picker shows up to 8 matches with file:line. Selecting one injects the symbol's source body ± 18 lines.

From the API

GET /api/project/symbols?q=validate_user

Returns:

[
  { "name": "validate_user", "kind": "function",
    "file": "services/auth.py", "line": 87 }
]

From the UI

The Architecture panel surfaces top-level symbols per file. Click a symbol to jump to its definition.

What's not indexed

  • Symbol references (just definitions).
  • Comments and docstrings.
  • Macro-generated symbols (Rust macro_rules!, Lisp macros).
  • Anything in node_modules/ and other ignored paths.

For finding callers of a symbol, use Project search with the symbol name.