@@ -9,6 +9,12 @@ It is the TypeScript backend behind [CLDK](https://github.com/codellm-devkit/pyt
99mirroring its [ Python] ( https://github.com/codellm-devkit/codeanalyzer-python ) and
1010[ Java] ( https://github.com/codellm-devkit/codeanalyzer-java ) siblings.
1111
12+ The call graph defaults to the TypeScript compiler's resolver, but the ` cants ` binary also
13+ embeds [ Jelly] ( https://github.com/cs-au-dk/jelly ) — a flow-based analyzer that resolves
14+ higher-order and callback edges the resolver misses — as an experimental backend. Select it
15+ with ` --call-graph-provider jelly ` (or ` both ` to run each and log how their edge sets differ);
16+ no extra install is needed, since Jelly ships inside the binary.
17+
1218The analyzer resolves types and call targets with the TypeScript compiler, so the project
1319being analyzed should be a normal Node/TypeScript project. By default, the analyzer
1420materializes the project's dependencies (` node_modules ` ) so that imported library calls can
@@ -101,6 +107,8 @@ Options:
101107 (use a prepared node_modules)
102108 --no-phantoms disable phantom (external) nodes for imported/
103109 required library calls
110+ --call-graph-provider <name>
111+ call-graph backend: tsc (default) | jelly | both
104112 -c, --cache-dir <dir> cache/intermediate directory
105113 -v, --verbose increase verbosity (repeatable)
106114 -h, --help display help for command
@@ -166,14 +174,16 @@ The output document is a `TSApplication` with the following top-level shape:
166174{
167175 " symbol_table" : { /* file path → module (classes, interfaces, enums,
168176 type aliases, functions, namespaces, variables, …) */ },
169- " call_graph" : [ /* CALL_DEP edges: { source, target, weight,
177+ " call_graph" : [ /* CALL_DEP edges: { source, target, type, weight,
170178 provenance, tags } keyed by callable signature */ ],
171179 " external_symbols" : { /* phantom stubs for call targets outside the project
172- (imported libraries / Node builtins) */ },
173- " entrypoints" : { /* framework-detected entrypoints (empty at level 1) */ }
180+ (imported libraries / Node builtins) */ }
174181}
175182```
176183
184+ Framework-detected entrypoints are embedded on the owning callables and classes
185+ (an ` entrypoints ` array on each), not collected in a top-level map.
186+
177187Caller- and callee-side identifiers are produced by a single signature canonicalizer, so call
178188graph ` source ` /` target ` values byte-match the corresponding ` symbol_table ` (or
179189` external_symbols ` ) keys.
0 commit comments