Code Graph — local symbol index and call-graph navigation.
A local, queryable map of every symbol and call edge in your codebase.
The code graph indexes every TypeScript and JavaScript file in your project. It
extracts all symbols — functions, classes, methods, interfaces, types, variables,
enums — and records which symbol calls which. The result is stored in
.code-graph/ at the project root as a set of compact JSON files.
The agent reads the index in milliseconds. Instead of blindly opening files to find a function definition, it asks the code graph. Instead of grepping for callers, it queries the call edges. The index gives the agent a structural understanding of your project from the very first query.
| Language | Extensions | Symbols |
|---|---|---|
| TypeScript / JavaScript |
.ts .tsx .js .jsx
.mts .cts .mjs .cjs
|
functions, classes, methods, interfaces, types, enums, variables |
| Python | .py |
classes, functions, methods, module-level variables |
| Java | .java |
classes, interfaces, enums, methods (incl. abstract) |
TypeScript and JavaScript are parsed with the TypeScript compiler API. Python (indentation-based) and Java (brace-based) use lightweight heuristic extractors — no extra dependencies, no build toolchain.
See the symbol index and call-graph navigation in action.
From source files to a structural index the agent can query.
symbol → name) and import statements become import edges
(file → file). Together these form the graph.
.code-graph/ as JSON.
.code-graph/.
Structural understanding that is local, fast, and free.
Without a code graph, an agent finds a function by reading whole files into its context — burning tokens on code it doesn't need. The code graph returns just the symbol and its callees, so prompts stay small and iterations stay fast.
Before changing a function, ask the graph who calls it. /codeGraph-callers
turns a guess (“is this used anywhere?”) into a concrete list of call
sites — the foundation for safe refactors.
The index never leaves your machine. No cloud indexing of your repository, no upload of your source. It is just JSON files under your project root that you can inspect, diff, or delete at any time.
No language server to configure, no build step, no daemon. Indexing is incremental and stale files are refreshed automatically in the background when a session starts.
Four tools available automatically in every session once @free/code-graph is installed.
| Tool | Description |
|---|---|
code_index |
Build or incrementally update the project index. Accepts an optional
force flag to re-parse all files from scratch.
|
code_symbols |
Case-insensitive substring search by name or qualified name.
Accepts an optional kind filter:
function · class · method ·
interface · type · variable · enum.
|
code_callers |
Returns every call site that invokes a named symbol, with file path and line number. Useful for impact analysis and refactor planning. |
code_context |
Returns the full source of a symbol plus its direct callees. Validates that the file has not changed since the last index run; warns if stale. |
The same four slash commands work in every project you open with free-code.
Each repository gets its own code graph. Open a project, build the index once, and these commands operate against that repo's symbols and call edges:
| Command | What it does |
|---|---|
/codeGraph-index |
Build or update the repository's index. |
/codeGraph-symbols |
Search the repository's symbols by name. |
/codeGraph-callers |
List every call site of a function or method in the repository. |
/codeGraph-context |
Print a symbol's full source plus its direct callees. |
.code-graph/ folder at the root of whichever project the session is running in.
Run code graph operations directly from the editor input.
/codeGraph-index [--force]
Indexes the project and writes the result to .code-graph/.
Without --force, only changed files are re-indexed.
/codeGraph-index # incremental — only changed files
/codeGraph-index --force # re-index everything from scratch
When to run: once after cloning, and with --force after
large refactors. Day-to-day, stale files are re-indexed automatically in the background
on session startup.
/codeGraph-symbols <query> [--kind <type>] [--limit <n>]Searches for symbols whose name or qualified name contains the query string (case-insensitive, substring match).
/codeGraph-symbols parseArgs
/codeGraph-symbols handle --kind function
/codeGraph-symbols User --kind class --limit 10
| Kind | Matches |
|---|---|
function | Top-level and nested functions |
class | Class declarations |
method | Class methods |
interface | Interface declarations |
type | Type aliases |
variable | Variables and constants |
enum | Enum declarations |
/codeGraph-callers <name> [--limit <n>]Finds all locations in the codebase that call a function or method by name. Returns file path, line number, and the enclosing symbol for each call site.
/codeGraph-callers syncDefaultExtensions
/codeGraph-callers render --limit 20
save, render, or init may match
callers from unrelated classes. Use /codeGraph-context to inspect a caller
before trusting the result.
/codeGraph-context <name> [--file <partial-path>]Returns the full source of a symbol and a list of its direct callees. Validates that the file has not been modified since the last index.
/codeGraph-context createAgentSessionServices
/codeGraph-context load --file resource-loader
When multiple symbols share the same name, use --file to pick the
right one by matching a partial file path.
How to use the code graph in a real session.
/codeGraph-index # 1. Index the project once
/codeGraph-symbols parseArgs # 2. Find a symbol by name
/codeGraph-callers parseArgs # 3. See everywhere it is called
/codeGraph-context parseArgs # 4. Read its full source + callees
/codeGraph-index --force # Re-index all files from scratch
On session startup, free-code checks whether any indexed source files
(.ts / .js / .py / .java and
friends) have been modified since the last index. If so, it automatically
re-indexes in the background — no manual action needed. You will see two
notifications:
⚠️ Code graph index is stale: 5 file(s) modified since last index. Re-indexing in background…
✓ Code graph updated: 3 file(s) re-indexed in 420ms
The re-index is incremental (only changed files). Use /codeGraph-index --force
after large refactors to re-parse everything from scratch.
The code graph is a separate package installed once at the global level.
# From the repository root
npm install -g ./packages/code-graph
Once installed, the four code graph tools (code_index,
code_symbols, code_callers, code_context)
and their /codeGraph-* slash commands appear automatically in every
free-code session. No configuration needed.
The index is stored in .code-graph/ at the project root.
.code-graph/
meta.json # timestamp of the last index run and aggregate stats
files.json # indexed files with hashes and mtimes
symbols.json # all symbols: name, kind, file, start/end line
edges.json # call edges: from symbol → to name
.code-graph/ to your .gitignore.
Grafo de Código — índice local de símbolos y navegación por grafo de llamadas.
Un mapa local y consultable de cada símbolo y arista de llamada en tu base de código.
El grafo de código indexa cada archivo TypeScript y JavaScript de tu proyecto. Extrae
todos los símbolos — funciones, clases, métodos, interfaces, tipos, variables,
enumeraciones — y registra qué símbolo llama a cuál. El resultado se almacena en
.code-graph/ en la raíz del proyecto como un conjunto de archivos JSON
compactos.
El agente lee el índice en milisegundos. En lugar de abrir archivos a ciegas para encontrar la definición de una función, le pregunta al grafo de código. En lugar de hacer grep para buscar quién llama a qué, consulta las aristas de llamada. El índice le da al agente una comprensión estructural de tu proyecto desde la primera consulta.
| Lenguaje | Extensiones | Símbolos |
|---|---|---|
| TypeScript / JavaScript |
.ts .tsx .js .jsx
.mts .cts .mjs .cjs
|
funciones, clases, métodos, interfaces, tipos, enumeraciones, variables |
| Python | .py |
clases, funciones, métodos, variables a nivel de módulo |
| Java | .java |
clases, interfaces, enumeraciones, métodos (incl. abstractos) |
TypeScript y JavaScript se analizan con la API del compilador de TypeScript. Python (basado en indentación) y Java (basado en llaves) usan extractores heurísticos ligeros — sin dependencias adicionales, sin cadena de compilación.
Observa el índice de símbolos y la navegación por grafo de llamadas en acción.
De archivos fuente a un índice estructural que el agente puede consultar.
símbolo → nombre) y las declaraciones de
importación se convierten en aristas de importación
(archivo → archivo). Juntas forman el grafo.
.code-graph/
como JSON.
.code-graph/ de ese
proyecto.
Comprensión estructural que es local, rápida y gratuita.
Sin un grafo de código, un agente encuentra una función leyendo archivos completos dentro de su contexto — gastando tokens en código que no necesita. El grafo de código devuelve solo el símbolo y sus llamadas salientes, de modo que los prompts se mantienen pequeños y las iteraciones rápidas.
Antes de cambiar una función, pregúntale al grafo quién la llama.
/codeGraph-callers convierte una suposición (“¿se usa esto en
algún lado?”) en una lista concreta de sitios de llamada — la base para
refactorizaciones seguras.
El índice nunca sale de tu máquina. Sin indexación en la nube de tu repositorio, sin subida de tu código fuente. Son solo archivos JSON bajo la raíz de tu proyecto que puedes inspeccionar, comparar o eliminar en cualquier momento.
No hay servidor de lenguaje que configurar, ni paso de compilación, ni daemon. La indexación es incremental y los archivos desactualizados se refrescan automáticamente en segundo plano cuando comienza una sesión.
Cuatro herramientas disponibles automáticamente en cada sesión una vez instalado @free/code-graph.
| Herramienta | Descripción |
|---|---|
code_index |
Construye o actualiza incrementalmente el índice del proyecto. Acepta un
indicador opcional force para volver a analizar todos los
archivos desde cero.
|
code_symbols |
Búsqueda de subcadena sin distinción entre mayúsculas y minúsculas por nombre
o nombre calificado. Acepta un filtro opcional kind:
function · class · method ·
interface · type · variable · enum.
|
code_callers |
Devuelve cada sitio de llamada que invoca a un símbolo con nombre, con ruta de archivo y número de línea. Útil para análisis de impacto y planificación de refactorizaciones. |
code_context |
Devuelve el código fuente completo de un símbolo junto con sus llamadas salientes directas. Valida que el archivo no haya cambiado desde la última ejecución del índice; advierte si está desactualizado. |
Los mismos cuatro comandos slash funcionan en cada proyecto que abras con free-code.
Cada repositorio obtiene su propio grafo de código. Abre un proyecto, construye el índice una vez, y estos comandos operan sobre los símbolos y aristas de llamada de ese repositorio:
| Comando | Qué hace |
|---|---|
/codeGraph-index |
Construye o actualiza el índice del repositorio. |
/codeGraph-symbols |
Busca los símbolos del repositorio por nombre. |
/codeGraph-callers |
Lista cada sitio de llamada de una función o método en el repositorio. |
/codeGraph-context |
Imprime el código fuente completo de un símbolo junto con sus llamadas salientes directas. |
.code-graph/ en la raíz de cualquier proyecto en el que se esté
ejecutando la sesión.
Ejecuta operaciones del grafo de código directamente desde el campo de entrada del editor.
/codeGraph-index [--force]
Indexa el proyecto y escribe el resultado en .code-graph/.
Sin --force, solo se vuelven a indexar los archivos modificados.
/codeGraph-index # incremental — solo archivos modificados
/codeGraph-index --force # reindexar todo desde cero
Cuándo ejecutarlo: una vez después de clonar, y con
--force tras grandes refactorizaciones. Día a día, los archivos
desactualizados se reindexan automáticamente en segundo plano al iniciar la sesión.
/codeGraph-symbols <query> [--kind <type>] [--limit <n>]Busca símbolos cuyo nombre o nombre calificado contenga la cadena de consulta (sin distinción entre mayúsculas y minúsculas, coincidencia de subcadena).
/codeGraph-symbols parseArgs
/codeGraph-symbols handle --kind function
/codeGraph-symbols User --kind class --limit 10
| Tipo | Coincide con |
|---|---|
function | Funciones de nivel superior y anidadas |
class | Declaraciones de clase |
method | Métodos de clase |
interface | Declaraciones de interfaz |
type | Alias de tipo |
variable | Variables y constantes |
enum | Declaraciones de enumeración |
/codeGraph-callers <name> [--limit <n>]Encuentra todas las ubicaciones en la base de código que llaman a una función o método por nombre. Devuelve la ruta del archivo, el número de línea y el símbolo contenedor para cada sitio de llamada.
/codeGraph-callers syncDefaultExtensions
/codeGraph-callers render --limit 20
save, render o init pueden
coincidir con llamadores de clases no relacionadas. Usa
/codeGraph-context para inspeccionar un llamador antes de confiar en el
resultado.
/codeGraph-context <name> [--file <partial-path>]Devuelve el código fuente completo de un símbolo y una lista de sus llamadas salientes directas. Valida que el archivo no haya sido modificado desde el último índice.
/codeGraph-context createAgentSessionServices
/codeGraph-context load --file resource-loader
Cuando varios símbolos comparten el mismo nombre, usa --file para elegir
el correcto haciendo coincidir una ruta de archivo parcial.
Cómo usar el grafo de código en una sesión real.
/codeGraph-index # 1. Indexar el proyecto una vez
/codeGraph-symbols parseArgs # 2. Buscar un símbolo por nombre
/codeGraph-callers parseArgs # 3. Ver dónde se llama en todas partes
/codeGraph-context parseArgs # 4. Leer su código fuente completo + llamadas salientes
/codeGraph-index --force # Reindexar todos los archivos desde cero
Al iniciar la sesión, free-code verifica si algún archivo fuente indexado
(.ts / .js / .py / .java y
similares) ha sido modificado desde el último índice. Si es así,
reindexa automáticamente en segundo plano — sin necesidad de acción
manual. Verás dos notificaciones:
⚠️ Code graph index is stale: 5 file(s) modified since last index. Re-indexing in background…
✓ Code graph updated: 3 file(s) re-indexed in 420ms
La reindexación es incremental (solo los archivos modificados). Usa
/codeGraph-index --force después de grandes refactorizaciones para
volver a analizar todo desde cero.
El grafo de código es un paquete separado que se instala una vez a nivel global.
# Desde la raíz del repositorio
npm install -g ./packages/code-graph
Una vez instalado, las cuatro herramientas del grafo de código (code_index,
code_symbols, code_callers, code_context)
y sus comandos slash /codeGraph-* aparecen automáticamente en cada
sesión de free-code. No se necesita configuración.
El índice se almacena en .code-graph/ en la raíz del proyecto.
.code-graph/
meta.json # timestamp de la última ejecución del índice y estadísticas agregadas
files.json # archivos indexados con hashes y mtimes
symbols.json # todos los símbolos: nombre, tipo, archivo, línea de inicio/fin
edges.json # aristas de llamada: de símbolo → a nombre
.code-graph/ a tu .gitignore.