chiasmus 0.1.17 → 0.1.19

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (88) hide show
  1. package/README.md +16 -1
  2. package/dist/graph/cache.d.ts +1 -1
  3. package/dist/graph/cache.d.ts.map +1 -1
  4. package/dist/graph/cache.js +5 -1
  5. package/dist/graph/cache.js.map +1 -1
  6. package/dist/graph/extractor.d.ts +6 -0
  7. package/dist/graph/extractor.d.ts.map +1 -1
  8. package/dist/graph/extractor.js +471 -2
  9. package/dist/graph/extractor.js.map +1 -1
  10. package/dist/graph/facts.d.ts.map +1 -1
  11. package/dist/graph/facts.js +20 -0
  12. package/dist/graph/facts.js.map +1 -1
  13. package/dist/graph/native-analyses.d.ts +6 -5
  14. package/dist/graph/native-analyses.d.ts.map +1 -1
  15. package/dist/graph/native-analyses.js +6 -5
  16. package/dist/graph/native-analyses.js.map +1 -1
  17. package/dist/graph/resolve-calls.d.ts +43 -0
  18. package/dist/graph/resolve-calls.d.ts.map +1 -0
  19. package/dist/graph/resolve-calls.js +344 -0
  20. package/dist/graph/resolve-calls.js.map +1 -0
  21. package/dist/graph/suffix-index.d.ts +22 -0
  22. package/dist/graph/suffix-index.d.ts.map +1 -0
  23. package/dist/graph/suffix-index.js +109 -0
  24. package/dist/graph/suffix-index.js.map +1 -0
  25. package/dist/graph/tsconfig-aliases.d.ts +18 -0
  26. package/dist/graph/tsconfig-aliases.d.ts.map +1 -0
  27. package/dist/graph/tsconfig-aliases.js +132 -0
  28. package/dist/graph/tsconfig-aliases.js.map +1 -0
  29. package/dist/graph/type-env.d.ts +30 -0
  30. package/dist/graph/type-env.d.ts.map +1 -0
  31. package/dist/graph/type-env.js +352 -0
  32. package/dist/graph/type-env.js.map +1 -0
  33. package/dist/graph/types.d.ts +64 -0
  34. package/dist/graph/types.d.ts.map +1 -1
  35. package/dist/index.d.ts +4 -2
  36. package/dist/index.d.ts.map +1 -1
  37. package/dist/index.js +2 -1
  38. package/dist/index.js.map +1 -1
  39. package/dist/llm/anthropic.d.ts +22 -1
  40. package/dist/llm/anthropic.d.ts.map +1 -1
  41. package/dist/llm/anthropic.js +72 -1
  42. package/dist/llm/anthropic.js.map +1 -1
  43. package/dist/llm/azure-openai.d.ts +34 -0
  44. package/dist/llm/azure-openai.d.ts.map +1 -0
  45. package/dist/llm/azure-openai.js +71 -0
  46. package/dist/llm/azure-openai.js.map +1 -0
  47. package/dist/llm/index.d.ts +8 -4
  48. package/dist/llm/index.d.ts.map +1 -1
  49. package/dist/llm/index.js +4 -2
  50. package/dist/llm/index.js.map +1 -1
  51. package/dist/llm/mock.d.ts +17 -1
  52. package/dist/llm/mock.d.ts.map +1 -1
  53. package/dist/llm/mock.js +30 -0
  54. package/dist/llm/mock.js.map +1 -1
  55. package/dist/llm/openai-compatible.d.ts +27 -1
  56. package/dist/llm/openai-compatible.d.ts.map +1 -1
  57. package/dist/llm/openai-compatible.js +60 -0
  58. package/dist/llm/openai-compatible.js.map +1 -1
  59. package/dist/llm/types.d.ts +11 -0
  60. package/dist/llm/types.d.ts.map +1 -1
  61. package/dist/mcp-server.d.ts +2 -2
  62. package/dist/mcp-server.d.ts.map +1 -1
  63. package/dist/mcp-server.js +163 -3
  64. package/dist/mcp-server.js.map +1 -1
  65. package/dist/search/embedding-cache.d.ts +43 -0
  66. package/dist/search/embedding-cache.d.ts.map +1 -0
  67. package/dist/search/embedding-cache.js +107 -0
  68. package/dist/search/embedding-cache.js.map +1 -0
  69. package/dist/search/engine.d.ts +44 -0
  70. package/dist/search/engine.d.ts.map +1 -0
  71. package/dist/search/engine.js +112 -0
  72. package/dist/search/engine.js.map +1 -0
  73. package/dist/search/index.d.ts +7 -0
  74. package/dist/search/index.d.ts.map +1 -0
  75. package/dist/search/index.js +4 -0
  76. package/dist/search/index.js.map +1 -0
  77. package/dist/search/vector-store.d.ts +43 -0
  78. package/dist/search/vector-store.d.ts.map +1 -0
  79. package/dist/search/vector-store.js +106 -0
  80. package/dist/search/vector-store.js.map +1 -0
  81. package/dist/skills/starters.js +3 -3
  82. package/dist/skills/starters.js.map +1 -1
  83. package/dist/solvers/prolog-solver.d.ts.map +1 -1
  84. package/dist/solvers/prolog-solver.js +440 -109
  85. package/dist/solvers/prolog-solver.js.map +1 -1
  86. package/dist/solvers/types.d.ts +2 -0
  87. package/dist/solvers/types.d.ts.map +1 -1
  88. package/package.json +3 -3
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Chiasmus
2
2
 
3
- MCP server that gives LLMs access to formal verification via Z3 (SMT solver) and Tau Prolog, plus tree-sitter-based source code analysis. Translates natural language problems into formal logic using a template-based pipeline, verifies results with mathematical certainty, and analyzes call graphs for reachability, dead code, and impact analysis.
3
+ MCP server that gives LLMs access to formal verification via Z3 (SMT solver) and SWI-Prolog (via `prolog-wasm-full`, includes `library(clpfd)`), plus tree-sitter-based source code analysis. Translates natural language problems into formal logic using a template-based pipeline, verifies results with mathematical certainty, and analyzes call graphs for reachability, dead code, and impact analysis.
4
4
 
5
5
  ### Example use cases
6
6
 
@@ -126,6 +126,8 @@ Analyses: `summary`, `callers`, `callees`, `reachability`, `dead-code`, `cycles`
126
126
 
127
127
  Reachability-heavy analyses (`cycles`, `reachability`, `path`, `impact`, `dead-code`, `callers`, `callees`) run on native O(V+E) graph algorithms and scale to codebases with thousands of functions. `communities` uses Louvain; `bridges` uses exact betweenness centrality. The `facts` analysis emits raw Prolog for use with `chiasmus_verify`, capped at 10 MB — above that limit the result is `{ error, size, limit }` rather than a program string, so narrow the file set or call a specific analysis directly. Opt in to `include_insights=true` on `facts` to also emit `community/2`, `cohesion/2`, `hub/2`, `bridge/2` predicates.
128
128
 
129
+ TS/JS calls also carry qualified-name hints when the receiver's class can be inferred (`CallsFact.calleeQN = "Class.method"`), and imports are resolved through `tsconfig.json` path aliases and the batch's file layout (`ImportsFact.resolved = "<repo-relative path>"`). Both surface as additive Prolog facts — `calls_qn/3` and `imports_resolved/3` — so back-compat queries over `calls/2` and `imports/3` keep working.
130
+
129
131
  ### Persistent cache and PR diff
130
132
 
131
133
  Pass `cache=true` on `chiasmus_graph` to enable a per-file content-hash cache — unchanged files skip re-parsing across calls. On a 42-file TypeScript repo, warm hits run at ~2.5ms vs ~170ms cold (60× speedup). Cache lives under `$CHIASMUS_CACHE_DIR` (default `~/.cache/chiasmus`) with an LRU budget per repo.
@@ -199,6 +201,19 @@ Focus modes subset the phases: `all` (default, 7 phases), `quick` (overview + ar
199
201
 
200
202
  Each action carries an `interpret` field describing how to score the result. After all phases, emit a numbered issue list with severity labels and file:line references.
201
203
 
204
+ **`chiasmus_search`** — Semantic code search over a set of files. Finds functions and methods whose *meaning* matches a natural-language query (e.g. "where do we refresh OAuth tokens", "rate-limit logic"). Uses embeddings + cosine similarity over callable defines; returns a ranked list with `{name, file, line, signature, leadingDoc, score}`.
205
+
206
+ ```
207
+ chiasmus_search query="refresh OAuth tokens" files=["src/**/*.ts"] top_k=5
208
+ → { hits: [
209
+ { name: "refreshAccessToken", file: "src/auth/token.ts", line: 42, score: 0.78, ... },
210
+ { name: "rotateSession", file: "src/auth/session.ts", line: 118, score: 0.71, ... },
211
+ ...
212
+ ] }
213
+ ```
214
+
215
+ Opt-in: needs an embedding provider via env (`OPENAI_API_KEY`, `DEEPSEEK_API_KEY`, or `OPENROUTER_API_KEY`). Override the model with `CHIASMUS_EMBED_MODEL` (default `text-embedding-3-small`), base URL with `CHIASMUS_EMBED_URL`, and dimension with `CHIASMUS_EMBED_DIM`. Embeddings are cached by content SHA-256 under `$CHIASMUS_HOME/embeddings` — unchanged code is not re-embedded.
216
+
202
217
  **`chiasmus_learn`** — Extract a reusable template from a verified solution. Candidates get promoted after 3+ successful reuses.
203
218
 
204
219
  **`chiasmus_lint`** — Fast structural validation of specs without running the solver.
@@ -14,7 +14,7 @@
14
14
  * eviction sorts oldest-first.
15
15
  */
16
16
  import type { CodeGraph } from "./types.js";
17
- export declare const CACHE_SCHEMA_VERSION = "2";
17
+ export declare const CACHE_SCHEMA_VERSION = "3";
18
18
  export interface CacheOptions {
19
19
  /** Root cache directory. Defaults to $CHIASMUS_CACHE_DIR or ~/.cache/chiasmus. */
20
20
  cacheDir?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../src/graph/cache.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAOH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAK5C,eAAO,MAAM,oBAAoB,MAAM,CAAC;AAIxC,MAAM,WAAW,YAAY;IAC3B,kFAAkF;IAClF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,2EAA2E;IAC3E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;CAClB;AA2BD,qFAAqF;AACrF,wBAAgB,cAAc,CAAC,GAAG,GAAE,MAAsB,GAAG,MAAM,CAElE;AAED,wBAAgB,iBAAiB,CAAC,IAAI,GAAE,YAAiB,GAAG,UAAU,CAWrE;AAED;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAMjE;AAsED,wBAAsB,cAAc,CAClC,KAAK,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,EAC/C,IAAI,GAAE,YAAiB,GACtB,OAAO,CAAC;IACT,IAAI,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,SAAS,CAAA;KAAE,CAAC,CAAC;IAChD,MAAM,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAClD,CAAC,CA2CD;AAED,wBAAsB,aAAa,CACjC,KAAK,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,SAAS,CAAA;CAAE,CAAC,EACjE,IAAI,GAAE,YAAiB,GACtB,OAAO,CAAC,IAAI,CAAC,CAsCf;AA0DD;;;;GAIG;AACH,wBAAsB,QAAQ,CAAC,IAAI,GAAE,YAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAOrE;AAED,wBAAsB,cAAc,CAAC,IAAI,GAAE,YAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAM3E;AAgBD,wBAAsB,YAAY,CAChC,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,SAAS,EAChB,IAAI,GAAE,YAAiB,GACtB,OAAO,CAAC,IAAI,CAAC,CAOf;AAED,wBAAsB,YAAY,CAChC,IAAI,EAAE,MAAM,EACZ,IAAI,GAAE,YAAiB,GACtB,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAQ3B;AAED,wBAAsB,aAAa,CAAC,IAAI,GAAE,YAAiB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAQ9E;AAED,wBAAsB,cAAc,CAClC,IAAI,EAAE,MAAM,EACZ,IAAI,GAAE,YAAiB,GACtB,OAAO,CAAC,IAAI,CAAC,CAKf"}
1
+ {"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../src/graph/cache.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAOH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAS5C,eAAO,MAAM,oBAAoB,MAAM,CAAC;AAIxC,MAAM,WAAW,YAAY;IAC3B,kFAAkF;IAClF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,2EAA2E;IAC3E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;CAClB;AA2BD,qFAAqF;AACrF,wBAAgB,cAAc,CAAC,GAAG,GAAE,MAAsB,GAAG,MAAM,CAElE;AAED,wBAAgB,iBAAiB,CAAC,IAAI,GAAE,YAAiB,GAAG,UAAU,CAWrE;AAED;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAMjE;AAsED,wBAAsB,cAAc,CAClC,KAAK,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,EAC/C,IAAI,GAAE,YAAiB,GACtB,OAAO,CAAC;IACT,IAAI,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,SAAS,CAAA;KAAE,CAAC,CAAC;IAChD,MAAM,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAClD,CAAC,CA2CD;AAED,wBAAsB,aAAa,CACjC,KAAK,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,SAAS,CAAA;CAAE,CAAC,EACjE,IAAI,GAAE,YAAiB,GACtB,OAAO,CAAC,IAAI,CAAC,CAsCf;AA0DD;;;;GAIG;AACH,wBAAsB,QAAQ,CAAC,IAAI,GAAE,YAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAOrE;AAED,wBAAsB,cAAc,CAAC,IAAI,GAAE,YAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAM3E;AAgBD,wBAAsB,YAAY,CAChC,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,SAAS,EAChB,IAAI,GAAE,YAAiB,GACtB,OAAO,CAAC,IAAI,CAAC,CAOf;AAED,wBAAsB,YAAY,CAChC,IAAI,EAAE,MAAM,EACZ,IAAI,GAAE,YAAiB,GACtB,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAQ3B;AAED,wBAAsB,aAAa,CAAC,IAAI,GAAE,YAAiB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAQ9E;AAED,wBAAsB,cAAc,CAClC,IAAI,EAAE,MAAM,EACZ,IAAI,GAAE,YAAiB,GACtB,OAAO,CAAC,IAAI,CAAC,CAKf"}
@@ -18,10 +18,14 @@ import { promises as fs } from "node:fs";
18
18
  import { homedir } from "node:os";
19
19
  import { join } from "node:path";
20
20
  import lockfile from "proper-lockfile";
21
+ // "3" introduced CodeGraph._typeInfo (per-file class fields + pending calls)
22
+ // and CallsFact.calleeQN for qualified-name call resolution; "2" caches
23
+ // would still work but produce no QN until files naturally re-extract, so
24
+ // invalidate eagerly so the benefit is uniform across the repo.
21
25
  // "2" introduced FileNode.fileDoc/tokenEstimate/lineCount and
22
26
  // DefinesFact.signature; "1" caches lack these fields and would render as
23
27
  // partial maps until naturally invalidated by content change.
24
- export const CACHE_SCHEMA_VERSION = "2";
28
+ export const CACHE_SCHEMA_VERSION = "3";
25
29
  const DEFAULT_MAX_BYTES_PER_REPO = 64 * 1024 * 1024; // 64 MB
26
30
  function defaultCacheDir() {
27
31
  if (process.env.CHIASMUS_CACHE_DIR)
@@ -1 +1 @@
1
- {"version":3,"file":"cache.js","sourceRoot":"","sources":["../../src/graph/cache.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cache.js","sourceRoot":"","sources":["../../src/graph/cache.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,12 @@ export interface ExtractOptions {
6
6
  * cache is keyed on content+path, so unchanged files skip parsing.
7
7
  */
8
8
  cache?: CacheOptions;
9
+ /**
10
+ * Repository root (absolute) used to load tsconfig.json path aliases
11
+ * and to compute repo-relative paths in resolved imports. When omitted,
12
+ * the longest common ancestor of the batch file paths is used.
13
+ */
14
+ repoPath?: string;
9
15
  }
10
16
  /** Extract a unified call graph from multiple source files */
11
17
  export declare function extractGraph(files: Array<{
@@ -1 +1 @@
1
- {"version":3,"file":"extractor.d.ts","sourceRoot":"","sources":["../../src/graph/extractor.ts"],"names":[],"mappings":"AAEA,OAAO,EAAiC,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAC9E,OAAO,KAAK,EAAE,SAAS,EAA4E,MAAM,YAAY,CAAC;AAEtH,MAAM,WAAW,cAAc;IAC7B;;;OAGG;IACH,KAAK,CAAC,EAAE,YAAY,CAAC;CACtB;AAED,8DAA8D;AAC9D,wBAAsB,YAAY,CAChC,KAAK,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,EAC/C,IAAI,GAAE,cAAmB,GACxB,OAAO,CAAC,SAAS,CAAC,CAsCpB"}
1
+ {"version":3,"file":"extractor.d.ts","sourceRoot":"","sources":["../../src/graph/extractor.ts"],"names":[],"mappings":"AAEA,OAAO,EAAiC,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAC9E,OAAO,KAAK,EAAE,SAAS,EAAuG,MAAM,YAAY,CAAC;AAOjJ,MAAM,WAAW,cAAc;IAC7B;;;OAGG;IACH,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAsGD,8DAA8D;AAC9D,wBAAsB,YAAY,CAChC,KAAK,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,EAC/C,IAAI,GAAE,cAAmB,GACxB,OAAO,CAAC,SAAS,CAAC,CA6DpB"}
@@ -1,6 +1,113 @@
1
1
  import { parseSource, parseSourceAsync, getLanguageForFile } from "./parser.js";
2
2
  import { getAdapter } from "./adapter-registry.js";
3
3
  import { checkFileCache, saveFileCache } from "./cache.js";
4
+ import { extractClassFields, extractSimpleTypeName } from "./type-env.js";
5
+ import { buildClassFieldRegistry, resolveCallsWithRegistry } from "./resolve-calls.js";
6
+ import { loadTsconfigAliases, EMPTY_TSCONFIG_ALIASES } from "./tsconfig-aliases.js";
7
+ import { buildSuffixIndex, suffixResolveImport, EMPTY_SUFFIX_INDEX } from "./suffix-index.js";
8
+ import { dirname as pathDirname, relative as pathRelative, resolve as pathResolve } from "node:path";
9
+ /**
10
+ * Longest common ancestor of the given absolute paths, used as a best-guess
11
+ * repo root when the caller does not supply one. Returns "/" (root) when
12
+ * the paths share no common prefix; returns the first path's directory
13
+ * when a single file is given.
14
+ */
15
+ function commonAncestor(paths) {
16
+ if (paths.length === 0)
17
+ return "/";
18
+ const parts = paths.map((p) => p.split("/").filter(Boolean));
19
+ if (parts.length === 1) {
20
+ const p = parts[0];
21
+ p.pop();
22
+ return "/" + p.join("/");
23
+ }
24
+ let i = 0;
25
+ const min = Math.min(...parts.map((p) => p.length));
26
+ while (i < min) {
27
+ const seg = parts[0][i];
28
+ if (!parts.every((p) => p[i] === seg))
29
+ break;
30
+ i++;
31
+ }
32
+ const common = parts[0].slice(0, i);
33
+ if (common.length === 0)
34
+ return "/";
35
+ return "/" + common.join("/");
36
+ }
37
+ /**
38
+ * Resolve each ImportsFact.source to a canonical file path (repo-relative)
39
+ * using tsconfig aliases + a suffix index over the batch files. Mutates
40
+ * the graph in place.
41
+ */
42
+ function resolveImportsInPlace(graph, repoPath, aliases, suffix) {
43
+ if (!aliases.hasAliases && suffix.size === 0)
44
+ return;
45
+ // Cache keyed on (sourceDir + source) — the resolution depends on both
46
+ // because "./foo" means different things from different directories.
47
+ const cache = new Map();
48
+ for (const imp of graph.imports) {
49
+ if (imp.resolved)
50
+ continue;
51
+ const source = imp.source;
52
+ if (!source)
53
+ continue;
54
+ const srcDir = pathDirname(imp.file);
55
+ const cacheKey = `${srcDir}\0${source}`;
56
+ const cached = cache.get(cacheKey);
57
+ if (cached !== undefined) {
58
+ if (cached)
59
+ imp.resolved = cached;
60
+ continue;
61
+ }
62
+ const isRelative = source.startsWith("./") || source.startsWith("../");
63
+ let resolved = null;
64
+ if (isRelative) {
65
+ // Relative imports must resolve EXACTLY from the importing file's
66
+ // directory. If the intended target isn't in the batch, returning
67
+ // null beats silently matching an unrelated same-basename file
68
+ // somewhere else.
69
+ const abs = pathResolve(srcDir, source);
70
+ const rel = pathRelative(repoPath, abs).replace(/\\/g, "/");
71
+ if (!rel.startsWith("..")) {
72
+ resolved = exactLookup(rel, suffix);
73
+ }
74
+ }
75
+ else {
76
+ // Aliased or bare: try alias rewrite → suffix resolver. The shorter-
77
+ // suffix fallback is OK here because bare/aliased specifiers don't
78
+ // carry directory context.
79
+ const aliased = aliases.rewrite(source);
80
+ if (aliased !== null) {
81
+ resolved = suffixResolveImport(source, aliased, suffix);
82
+ }
83
+ }
84
+ cache.set(cacheKey, resolved);
85
+ if (resolved)
86
+ imp.resolved = resolved;
87
+ }
88
+ }
89
+ /**
90
+ * Exact lookup for a repo-relative path (no extension) against the suffix
91
+ * index. Tries each candidate TS/JS extension and the `/index.ext` form.
92
+ * Never falls back to shorter suffixes.
93
+ */
94
+ function exactLookup(rel, suffix) {
95
+ const EXTS = [".ts", ".tsx", ".js", ".jsx", ".mjs", ".cjs"];
96
+ const stripped = rel.replace(/\.(tsx?|jsx?|mjs|cjs)$/i, "");
97
+ for (const ext of EXTS) {
98
+ const k = stripped + ext;
99
+ const hit = suffix.get(k) ?? suffix.getInsensitive(k);
100
+ if (hit)
101
+ return hit;
102
+ }
103
+ for (const ext of EXTS) {
104
+ const k = stripped + "/index" + ext;
105
+ const hit = suffix.get(k) ?? suffix.getInsensitive(k);
106
+ if (hit)
107
+ return hit;
108
+ }
109
+ return null;
110
+ }
4
111
  /** Extract a unified call graph from multiple source files */
5
112
  export async function extractGraph(files, opts = {}) {
6
113
  let cached = [];
@@ -20,6 +127,7 @@ export async function extractGraph(files, opts = {}) {
20
127
  const exports = [];
21
128
  const contains = [];
22
129
  const fileNodes = new Map();
130
+ const allTypeInfo = [];
23
131
  for (const { graph: p } of [...cached, ...fresh]) {
24
132
  defines.push(...p.defines);
25
133
  calls.push(...p.calls);
@@ -29,8 +137,28 @@ export async function extractGraph(files, opts = {}) {
29
137
  for (const fn of p.files ?? [])
30
138
  if (!fileNodes.has(fn.path))
31
139
  fileNodes.set(fn.path, fn);
140
+ if (p._typeInfo)
141
+ allTypeInfo.push(...p._typeInfo);
142
+ }
143
+ const merged = { defines, calls, imports, exports, contains, files: [...fileNodes.values()] };
144
+ // Project-wide qualified-name resolution. Runs only when at least one
145
+ // file produced type info (currently TS/JS). Mutates `calls` in place
146
+ // to fill `calleeQN` for resolved receiver chains.
147
+ if (allTypeInfo.length > 0) {
148
+ merged._typeInfo = allTypeInfo;
149
+ const registry = buildClassFieldRegistry(allTypeInfo);
150
+ resolveCallsWithRegistry(merged, registry);
32
151
  }
33
- return { defines, calls, imports, exports, contains, files: [...fileNodes.values()] };
152
+ // Import resolution: rewrite through tsconfig aliases and the suffix
153
+ // index to produce ImportsFact.resolved pointing at the canonical
154
+ // in-batch file path (repo-relative).
155
+ const repoPath = opts.repoPath ?? commonAncestor(files.map((f) => f.path));
156
+ const aliases = opts.repoPath ? loadTsconfigAliases(opts.repoPath) : EMPTY_TSCONFIG_ALIASES;
157
+ const suffix = files.length > 0
158
+ ? buildSuffixIndex(repoPath, "", files.map((f) => f.path))
159
+ : EMPTY_SUFFIX_INDEX;
160
+ resolveImportsInPlace(merged, repoPath, aliases, suffix);
161
+ return merged;
34
162
  }
35
163
  async function extractFileGraph(file) {
36
164
  const defines = [];
@@ -54,11 +182,24 @@ async function extractFileGraph(file) {
54
182
  ?? await parseSourceAsync(file.content, file.path);
55
183
  if (!tree)
56
184
  return { defines, calls, imports, exports, contains, files };
185
+ let typeInfo;
57
186
  try {
58
187
  const doc = extractFileDoc(tree.rootNode, lang);
59
188
  if (doc)
60
189
  fileNode.fileDoc = doc;
61
190
  extractFromTree(tree, file.path, lang, defines, calls, imports, exports, contains, callSet);
191
+ // Collect receiver-chain + class-field type info for TS/JS. Lets a
192
+ // later project-wide pass fill `calleeQN` on matching CallsFacts.
193
+ // Wrap in try/catch so an unexpected AST shape never sinks the main
194
+ // graph extraction — QN is best-effort, the rest of the graph isn't.
195
+ if (lang === "typescript" || lang === "tsx" || lang === "javascript") {
196
+ try {
197
+ typeInfo = collectTypeInfo(tree.rootNode, file.path);
198
+ }
199
+ catch {
200
+ typeInfo = undefined;
201
+ }
202
+ }
62
203
  }
63
204
  finally {
64
205
  // web-tree-sitter (WASM) trees must be explicitly freed or WASM memory
@@ -66,7 +207,10 @@ async function extractFileGraph(file) {
66
207
  // and are GC'd normally — guard with optional chaining.
67
208
  tree.delete?.();
68
209
  }
69
- return { defines, calls, imports, exports, contains, files };
210
+ const result = { defines, calls, imports, exports, contains, files };
211
+ if (typeInfo)
212
+ result._typeInfo = [typeInfo];
213
+ return result;
70
214
  }
71
215
  /**
72
216
  * Count newline-terminated lines, plus a trailing line if the file doesn't
@@ -1632,4 +1776,329 @@ function extractCljDefnArglist(listNode, nameSymIdx) {
1632
1776
  }
1633
1777
  return undefined;
1634
1778
  }
1779
+ // ── TS/JS type info collection for qualified call resolution ────────────────
1780
+ const FN_NODE_TYPES = new Set([
1781
+ "function_declaration",
1782
+ "method_definition",
1783
+ "generator_function_declaration",
1784
+ "arrow_function",
1785
+ "function_expression",
1786
+ ]);
1787
+ const CLASS_NODE_TYPES_SET = new Set([
1788
+ "class_declaration",
1789
+ "class",
1790
+ "abstract_class_declaration",
1791
+ "interface_declaration",
1792
+ ]);
1793
+ function findEnclosingClassNameForTypeInfo(nodeIn) {
1794
+ let cur = nodeIn.parent;
1795
+ while (cur) {
1796
+ if (CLASS_NODE_TYPES_SET.has(cur.type)) {
1797
+ const n = cur.childForFieldName?.("name");
1798
+ if (n)
1799
+ return n.text;
1800
+ }
1801
+ cur = cur.parent;
1802
+ }
1803
+ return null;
1804
+ }
1805
+ function findEnclosingFnName(nodeIn) {
1806
+ let cur = nodeIn.parent;
1807
+ while (cur) {
1808
+ if (cur.type === "method_definition") {
1809
+ const n = cur.childForFieldName?.("name");
1810
+ if (n)
1811
+ return n.text;
1812
+ }
1813
+ if (cur.type === "function_declaration" ||
1814
+ cur.type === "generator_function_declaration") {
1815
+ const n = cur.childForFieldName?.("name");
1816
+ if (n)
1817
+ return n.text;
1818
+ }
1819
+ if (cur.type === "arrow_function" || cur.type === "function_expression") {
1820
+ // Named via `const name = () => {}` — walk to variable_declarator.
1821
+ if (cur.parent?.type === "variable_declarator") {
1822
+ const n = cur.parent.childForFieldName?.("name");
1823
+ if (n?.type === "identifier")
1824
+ return n.text;
1825
+ }
1826
+ }
1827
+ cur = cur.parent;
1828
+ }
1829
+ return null;
1830
+ }
1831
+ function scopeKeyOf(nodeIn) {
1832
+ let cur = nodeIn.parent;
1833
+ while (cur) {
1834
+ if (FN_NODE_TYPES.has(cur.type)) {
1835
+ const n = cur.childForFieldName?.("name");
1836
+ if (n)
1837
+ return n.text;
1838
+ if (cur.parent?.type === "variable_declarator") {
1839
+ const vn = cur.parent.childForFieldName?.("name");
1840
+ if (vn?.type === "identifier")
1841
+ return vn.text;
1842
+ }
1843
+ return `__anon_${cur.startPosition.row}_${cur.startPosition.column}`;
1844
+ }
1845
+ cur = cur.parent;
1846
+ }
1847
+ return "";
1848
+ }
1849
+ function extractAnnotationTypeLocal(declNode) {
1850
+ const typeAnnNode = declNode.childForFieldName?.("type");
1851
+ if (typeAnnNode) {
1852
+ const innerType = typeAnnNode.childForFieldName?.("type") ?? typeAnnNode.namedChild?.(0);
1853
+ if (innerType)
1854
+ return simpleTypeNameOf(innerType);
1855
+ }
1856
+ for (let i = 0; i < declNode.childCount; i++) {
1857
+ const c = declNode.child(i);
1858
+ if (c && c.type === "type_annotation") {
1859
+ const inner = c.namedChild?.(0);
1860
+ if (inner)
1861
+ return simpleTypeNameOf(inner);
1862
+ }
1863
+ }
1864
+ return undefined;
1865
+ }
1866
+ function extractNewTypeLocal(valueNode) {
1867
+ if (valueNode.type !== "new_expression")
1868
+ return undefined;
1869
+ const ctor = valueNode.childForFieldName?.("constructor");
1870
+ if (ctor)
1871
+ return simpleTypeNameOf(ctor);
1872
+ const fc = valueNode.namedChild?.(0);
1873
+ if (fc)
1874
+ return simpleTypeNameOf(fc);
1875
+ return undefined;
1876
+ }
1877
+ // Thin wrapper: delegates to the shared, tested implementation in type-env.ts.
1878
+ // Keeps the call sites short without forcing callers to construct a node.
1879
+ const simpleTypeNameOf = extractSimpleTypeName;
1880
+ /**
1881
+ * Build a dotted receiver chain from a member_expression callee.
1882
+ * Returns `{ chain: [...], method }` where `chain` is the chain of
1883
+ * identifiers preceding the final property access. Returns null when
1884
+ * the chain contains anything non-trivial (computed access, call
1885
+ * expressions, etc.) — qualified resolution needs a pure chain.
1886
+ */
1887
+ function extractReceiverChain(memberExpr) {
1888
+ const property = memberExpr.childForFieldName?.("property");
1889
+ if (!property || property.type !== "property_identifier")
1890
+ return null;
1891
+ const method = property.text;
1892
+ if (!method)
1893
+ return null;
1894
+ const chain = [];
1895
+ let cur = memberExpr.childForFieldName?.("object");
1896
+ while (cur) {
1897
+ if (cur.type === "identifier") {
1898
+ chain.unshift(cur.text);
1899
+ break;
1900
+ }
1901
+ if (cur.type === "this") {
1902
+ chain.unshift("this");
1903
+ break;
1904
+ }
1905
+ if (cur.type === "member_expression") {
1906
+ const p = cur.childForFieldName?.("property");
1907
+ if (!p || p.type !== "property_identifier")
1908
+ return null;
1909
+ chain.unshift(p.text);
1910
+ cur = cur.childForFieldName?.("object");
1911
+ continue;
1912
+ }
1913
+ // Anything else (call_expression, parenthesized, etc.) breaks the chain.
1914
+ return null;
1915
+ }
1916
+ if (chain.length === 0)
1917
+ return null;
1918
+ return { chain, method };
1919
+ }
1920
+ function firstIdentifierIn(node) {
1921
+ for (let i = 0; i < node.childCount; i++) {
1922
+ const c = node.child(i);
1923
+ if (!c)
1924
+ continue;
1925
+ if (c.type === "identifier" || c.type === "type_identifier")
1926
+ return c.text;
1927
+ }
1928
+ return null;
1929
+ }
1930
+ function extractParentClassName(classNode) {
1931
+ // Two shapes to cover:
1932
+ // class: class_declaration > class_heritage > extends_clause > identifier
1933
+ // interface: interface_declaration > extends_type_clause > type_identifier
1934
+ for (let i = 0; i < classNode.childCount; i++) {
1935
+ const child = classNode.child(i);
1936
+ if (!child)
1937
+ continue;
1938
+ // Interface: extends_type_clause directly on the declaration.
1939
+ if (child.type === "extends_type_clause") {
1940
+ const name = firstIdentifierIn(child);
1941
+ if (name)
1942
+ return name;
1943
+ }
1944
+ // Class: extends_clause wrapped in class_heritage.
1945
+ if (child.type === "class_heritage") {
1946
+ for (let j = 0; j < child.childCount; j++) {
1947
+ const inner = child.child(j);
1948
+ if (!inner)
1949
+ continue;
1950
+ if (inner.type === "extends_clause" ||
1951
+ inner.type === "extends_type_clause") {
1952
+ const name = firstIdentifierIn(inner);
1953
+ if (name)
1954
+ return name;
1955
+ }
1956
+ }
1957
+ }
1958
+ }
1959
+ return null;
1960
+ }
1961
+ /**
1962
+ * Collect method names defined directly on a class or interface body.
1963
+ * Covers class `method_definition` and interface `method_signature`.
1964
+ * Does NOT include inherited methods — the registry propagates extends.
1965
+ */
1966
+ function extractClassMethods(classNode) {
1967
+ const body = classNode.childForFieldName?.("body");
1968
+ if (!body)
1969
+ return [];
1970
+ const out = [];
1971
+ for (let i = 0; i < body.childCount; i++) {
1972
+ const child = body.child(i);
1973
+ if (!child)
1974
+ continue;
1975
+ if (child.type === "method_definition" ||
1976
+ child.type === "method_signature" ||
1977
+ child.type === "abstract_method_signature") {
1978
+ const nameNode = child.childForFieldName?.("name");
1979
+ if (nameNode && nameNode.text)
1980
+ out.push(nameNode.text);
1981
+ }
1982
+ }
1983
+ return out;
1984
+ }
1985
+ function collectTypeInfo(root, filePath) {
1986
+ const classFieldsByName = {};
1987
+ const classMethodsByName = {};
1988
+ const classExtends = [];
1989
+ const scopeVarTypes = {};
1990
+ // Pass A: collect var types per scope (file scope is "").
1991
+ function walkDecls(n) {
1992
+ if (n.type === "lexical_declaration" ||
1993
+ n.type === "variable_declaration") {
1994
+ for (let i = 0; i < n.childCount; i++) {
1995
+ const child = n.child(i);
1996
+ if (!child || child.type !== "variable_declarator")
1997
+ continue;
1998
+ const nameNode = child.childForFieldName?.("name");
1999
+ if (!nameNode || nameNode.type !== "identifier")
2000
+ continue;
2001
+ const varName = nameNode.text;
2002
+ if (!varName)
2003
+ continue;
2004
+ const scope = scopeKeyOf(child);
2005
+ let varType = extractAnnotationTypeLocal(child);
2006
+ if (!varType) {
2007
+ const v = child.childForFieldName?.("value");
2008
+ if (v?.type === "new_expression") {
2009
+ varType = extractNewTypeLocal(v);
2010
+ }
2011
+ else if (v?.type === "identifier") {
2012
+ const src = v.text;
2013
+ const t = scopeVarTypes[scope]?.[src] ?? scopeVarTypes[""]?.[src];
2014
+ if (t)
2015
+ varType = t;
2016
+ }
2017
+ }
2018
+ if (varType) {
2019
+ if (!scopeVarTypes[scope])
2020
+ scopeVarTypes[scope] = {};
2021
+ scopeVarTypes[scope][varName] = varType;
2022
+ }
2023
+ }
2024
+ }
2025
+ for (let i = 0; i < n.childCount; i++) {
2026
+ const c = n.child(i);
2027
+ if (c)
2028
+ walkDecls(c);
2029
+ }
2030
+ }
2031
+ walkDecls(root);
2032
+ // Pass B: collect class fields + pending calls.
2033
+ const pendingCalls = [];
2034
+ function walkCallsAndClasses(n) {
2035
+ const t = n.type;
2036
+ if (CLASS_NODE_TYPES_SET.has(t)) {
2037
+ const nameNode = n.childForFieldName?.("name");
2038
+ if (nameNode) {
2039
+ const className = nameNode.text;
2040
+ const fields = extractClassFields(n);
2041
+ if (!classFieldsByName[className])
2042
+ classFieldsByName[className] = {};
2043
+ for (const [k, v] of fields)
2044
+ classFieldsByName[className][k] = v;
2045
+ const methods = extractClassMethods(n);
2046
+ if (methods.length > 0) {
2047
+ const existing = classMethodsByName[className] ?? [];
2048
+ for (const m of methods)
2049
+ if (!existing.includes(m))
2050
+ existing.push(m);
2051
+ classMethodsByName[className] = existing;
2052
+ }
2053
+ const parent = extractParentClassName(n);
2054
+ if (parent)
2055
+ classExtends.push({ className, parent });
2056
+ }
2057
+ }
2058
+ if (t === "call_expression") {
2059
+ const fnNode = n.childForFieldName?.("function");
2060
+ if (fnNode?.type === "member_expression") {
2061
+ const parsed = extractReceiverChain(fnNode);
2062
+ if (parsed) {
2063
+ const { chain, method } = parsed;
2064
+ const caller = findEnclosingFnName(n);
2065
+ if (caller) {
2066
+ const enclosingClass = findEnclosingClassNameForTypeInfo(n);
2067
+ const scope = scopeKeyOf(n);
2068
+ const fileScope = scopeVarTypes[""] ?? {};
2069
+ const fnScope = scopeVarTypes[scope] ?? {};
2070
+ const varTypes = { ...fileScope, ...fnScope };
2071
+ pendingCalls.push({
2072
+ caller,
2073
+ callee: method,
2074
+ receiverChain: chain,
2075
+ enclosingClass,
2076
+ varTypes,
2077
+ });
2078
+ }
2079
+ }
2080
+ }
2081
+ }
2082
+ for (let i = 0; i < n.childCount; i++) {
2083
+ const c = n.child(i);
2084
+ if (c)
2085
+ walkCallsAndClasses(c);
2086
+ }
2087
+ }
2088
+ walkCallsAndClasses(root);
2089
+ const methodsOut = Object.entries(classMethodsByName).map(([className, methods]) => ({
2090
+ className,
2091
+ methods,
2092
+ }));
2093
+ return {
2094
+ file: filePath,
2095
+ classFields: Object.entries(classFieldsByName).map(([className, fields]) => ({
2096
+ className,
2097
+ fields,
2098
+ })),
2099
+ classMethods: methodsOut.length > 0 ? methodsOut : undefined,
2100
+ classExtends: classExtends.length > 0 ? classExtends : undefined,
2101
+ pendingCalls,
2102
+ };
2103
+ }
1635
2104
  //# sourceMappingURL=extractor.js.map