Skip to content

Changelog - 2026-09-07 ​

symbol answers where an export is declared ​

New Feature

In one line. symbol names the package, the import specifier and the exact source file:line of any exported symbol.

Call it with a name, and a package when the name is not unique:

json
{ "name": "getError", "package": "inversion" }
json
{
  "name": "getError",
  "package": "@venizia/ignis-inversion",
  "subpath": ".",
  "specifier": "@venizia/ignis-inversion",
  "kind": "const",
  "file": "packages/inversion/src/modules/error/app-error.ts",
  "line": 89,
  "signature": "getError: (opts: TError) => ApplicationError",
  "docs": ["wiki:extensions/helpers/error/index.md#in-one-example"]
}

Read file and line as a source location in this repository. docs holds chunk ids for get.

The problem it solves ​

search reads prose. Ask it where getError comes from and you get pages that mention the name. Ranking those pages is not the same as naming the declaration. A rename leaves the prose behind, and no page promises its import specifier is current.

The answer already lived in the built .d.ts. Nothing read it.

What changed ​

  • A generated symbol table. make symbols-gen writes .agents/knowledge/reference/symbols.json from every package's built .d.ts, the same surface make surface-gen snapshots.
  • file and line name the source. The generator reads the declaration map beside each .d.ts, so a hit points at packages/<name>/src/..., not at dist.
  • A symbol tool. It answers with one record, or with matches when a name exists in more than one package. Pass package to narrow it, in either spelling: helpers or @venizia/ignis-helpers.
  • A typo gets candidates, not silence. An unknown name answers unknown symbol 'LoggerFactroy'; did you mean LoggerFactory?.
  • search carries a symbol field. A query that is one identifier the table knows returns the record beside the hits. A prose query does not.
  • make symbols-check is a build gate. It runs inside make build-all, next to surface-check, and fails when the table drifts from the built surface.

Who is affected ​

  • Anyone running @venizia/ignis-atlas. tools/list now returns three tools. The npm snapshot ships the table, so symbol works from an install.
  • Maintainers of this repository. Run make symbols-gen after an intentional API change, the same habit surface-gen already needs. A stale table fails make build-all.
  • Everyone else. No action needed.

Details ​

SymbolChangePackage
symbol (MCP tool)New@venizia/ignis-atlas
symbol field on a search replyNew@venizia/ignis-atlas
symbols.json (generated)New.agents/knowledge/reference
make symbols-gen, make symbols-checkNewMakefile