Skip to content

codeanalyzer-typescript

Point it at a TypeScript or JavaScript project and get back one typed model — symbol table, call graph, and the external library targets it calls — as a single analysis.json or projected into a queryable Neo4j property graph. Program analysis your agents can call.

Point cants at a project and it builds one typed model of the program — every module, class, interface, enum, function, and call edge, plus phantom stubs for the library calls that leave the project. Emit it as a single analysis.json with --emit json, or project the same model into a Neo4j property graph with --emit neo4j. It’s the TypeScript backend behind CLDK, mirroring its Python and Java siblings, usable standalone as a CLI.

cants ships as a self-contained binary — install it with pip, Homebrew, or the shell installer; no Bun or Node at runtime:

Terminal window
pip install codeanalyzer-typescript

Then emit a JSON model, or push the same analysis into a Neo4j graph anchored at an application name you choose:

Terminal window
# One typed artifact on disk
cants --input ./my-ts-project --emit json
# The same model, projected into a Neo4j property graph over Bolt
NEO4J_PASSWORD=secret cants --input ./my-ts-project --emit neo4j \
--app-name my-ts-app --neo4j-uri bolt://localhost:7687

The graph is the same model, just persistent and queryable. Where analysis.json is one file you load whole into memory per project, a Neo4j database holds many applications at once — each anchored at its own :TSApplication node — so whole-monorepo and cross-service questions become a Cypher traversal instead of parsing giant JSON blobs. Produce the graph once, centrally, from a CI or Kubernetes job; read it cheaply from agents, dashboards, and the CLDK Python SDK.