chiasmus 0.1.15 → 0.1.16

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 (51) hide show
  1. package/README.md +21 -4
  2. package/dist/graph/analyses.d.ts +25 -2
  3. package/dist/graph/analyses.d.ts.map +1 -1
  4. package/dist/graph/analyses.js +71 -5
  5. package/dist/graph/analyses.js.map +1 -1
  6. package/dist/graph/cache.d.ts +72 -0
  7. package/dist/graph/cache.d.ts.map +1 -0
  8. package/dist/graph/cache.js +332 -0
  9. package/dist/graph/cache.js.map +1 -0
  10. package/dist/graph/community.d.ts +18 -0
  11. package/dist/graph/community.d.ts.map +1 -0
  12. package/dist/graph/community.js +116 -0
  13. package/dist/graph/community.js.map +1 -0
  14. package/dist/graph/diff.d.ts +25 -0
  15. package/dist/graph/diff.d.ts.map +1 -0
  16. package/dist/graph/diff.js +124 -0
  17. package/dist/graph/diff.js.map +1 -0
  18. package/dist/graph/entry-points.d.ts +22 -0
  19. package/dist/graph/entry-points.d.ts.map +1 -0
  20. package/dist/graph/entry-points.js +52 -0
  21. package/dist/graph/entry-points.js.map +1 -0
  22. package/dist/graph/extractor.d.ts +9 -1
  23. package/dist/graph/extractor.d.ts.map +1 -1
  24. package/dist/graph/extractor.js +24 -7
  25. package/dist/graph/extractor.js.map +1 -1
  26. package/dist/graph/facts.d.ts +11 -1
  27. package/dist/graph/facts.d.ts.map +1 -1
  28. package/dist/graph/facts.js +52 -1
  29. package/dist/graph/facts.js.map +1 -1
  30. package/dist/graph/graph-util.d.ts +19 -0
  31. package/dist/graph/graph-util.d.ts.map +1 -0
  32. package/dist/graph/graph-util.js +59 -0
  33. package/dist/graph/graph-util.js.map +1 -0
  34. package/dist/graph/index.d.ts +10 -1
  35. package/dist/graph/index.d.ts.map +1 -1
  36. package/dist/graph/index.js +5 -0
  37. package/dist/graph/index.js.map +1 -1
  38. package/dist/graph/insights.d.ts +35 -0
  39. package/dist/graph/insights.d.ts.map +1 -0
  40. package/dist/graph/insights.js +77 -0
  41. package/dist/graph/insights.js.map +1 -0
  42. package/dist/graph/types.d.ts +23 -0
  43. package/dist/graph/types.d.ts.map +1 -1
  44. package/dist/mcp-server.d.ts.map +1 -1
  45. package/dist/mcp-server.js +65 -33
  46. package/dist/mcp-server.js.map +1 -1
  47. package/dist/review.d.ts +8 -0
  48. package/dist/review.d.ts.map +1 -1
  49. package/dist/review.js +43 -3
  50. package/dist/review.js.map +1 -1
  51. package/package.json +7 -1
package/README.md CHANGED
@@ -122,9 +122,24 @@ chiasmus_graph files=["main.go", "handler.go"] analysis="impact" target="Query"
122
122
  → { analysis: "impact", result: ["Handle", "main"] }
123
123
  ```
124
124
 
125
- Analyses: `summary`, `callers`, `callees`, `reachability`, `dead-code`, `cycles`, `path`, `impact`, `facts`.
125
+ Analyses: `summary`, `callers`, `callees`, `reachability`, `dead-code`, `cycles`, `path`, `impact`, `layer-violation`, `communities`, `hubs`, `bridges`, `surprises`, `diff`, `entry-points`, `facts`.
126
126
 
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. The `facts` analysis still 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.
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
+
129
+ ### Persistent cache and PR diff
130
+
131
+ 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.
132
+
133
+ ```
134
+ chiasmus_graph files=[...] analysis="summary" cache=true save_snapshot="main"
135
+ → extracts + saves the current graph as the "main" baseline
136
+
137
+ # After branch changes:
138
+ chiasmus_graph files=[...] analysis="diff" against="main" cache=true
139
+ → { addedNodes, removedNodes, addedEdges, removedEdges, summary }
140
+ ```
141
+
142
+ `chiasmus_review` accepts `delta_against="<snapshot>"` — when set, a phase 0 diffs against the snapshot, impact-checks removed symbols, and scopes later phases to what the PR actually changed.
128
143
 
129
144
  **`chiasmus_skills`** — Search the template library. Ships with 8 starter templates covering authorization, configuration, dependency resolution, validation, rule inference, and graph reachability. By-name lookups include related template suggestions.
130
145
 
@@ -174,7 +189,7 @@ Each action carries an `interpret` field describing how to score the result. Aft
174
189
 
175
190
  ## Recommended Workflow
176
191
 
177
- The calling LLM (Claude, GPT, etc.) drives the process — no API key needed:
192
+ The calling LLM (GLM, GPT, etc.) drives the process — no API key needed:
178
193
 
179
194
  1. `chiasmus_formalize problem="Can our RBAC rules ever conflict?"` → get template + slot instructions
180
195
  2. Fill the template slots using your knowledge of the user's codebase
@@ -383,7 +398,7 @@ library.close();
383
398
  |---------|---------|
384
399
  | `chiasmus` | All public APIs (barrel export) |
385
400
  | `chiasmus/solvers` | `SolverSession`, `createZ3Solver`, `createPrologSolver`, `correctionLoop`, solver types |
386
- | `chiasmus/graph` | `extractGraph`, `runAnalysis`, `runAnalysisFromGraph`, `buildFactsResult`, `DEFAULT_FACTS_MAX_BYTES`, `parseMermaid`, `graphToProlog`, adapter registry, graph types |
401
+ | `chiasmus/graph` | `extractGraph`, `runAnalysis`, `runAnalysisFromGraph`, `buildFactsResult`, `graphToProlog`, `parseMermaid`, `detectCommunities`, `detectHubs`, `detectBridges`, `detectSurprisingConnections`, `detectEntryPoints`, `graphDiff`, `saveSnapshot`/`loadSnapshot`/`listSnapshots`, cache APIs, adapter registry, graph types |
387
402
  | `chiasmus/formalize` | `lintSpec`, `classifyFeedback`, `extractPrologQuery`, `FormalizationEngine`, result types |
388
403
  | `chiasmus/skills` | `SkillLibrary`, `SkillLearner`, `craftTemplate`, `validateTemplate`, skill types |
389
404
  | `chiasmus/llm` | `createLLMFromEnv`, `AnthropicAdapter`, `OpenAICompatibleAdapter`, LLM types |
@@ -394,6 +409,8 @@ library.close();
394
409
  | Variable | Default | Purpose |
395
410
  |----------|---------|---------|
396
411
  | `CHIASMUS_HOME` | `~/.chiasmus/` | Database, skill storage, and config |
412
+ | `CHIASMUS_CACHE_DIR` | `~/.cache/chiasmus` | Per-file extraction cache + graph snapshots (when `cache=true`) |
413
+ | `CHIASMUS_CACHE_MAX_PER_REPO` | `67108864` (64 MB) | Per-repo cache byte budget — LRU eviction above this |
397
414
  | `ANTHROPIC_API_KEY` | — | Optional: Anthropic provider for autonomous mode |
398
415
  | `DEEPSEEK_API_KEY` | — | Optional: DeepSeek provider for autonomous mode |
399
416
  | `OPENAI_API_KEY` | — | Optional: OpenAI provider for autonomous mode |
@@ -1,3 +1,4 @@
1
+ import { type CacheOptions } from "./cache.js";
1
2
  import type { CodeGraph } from "./types.js";
2
3
  /**
3
4
  * Maximum byte size of a `facts` analysis response. Above this the Prolog
@@ -19,14 +20,36 @@ export interface FactsOversizeError {
19
20
  * callers (and the MCP transport) can surface a clear failure instead of
20
21
  * timing out mid-serialize.
21
22
  */
22
- export declare function buildFactsResult(graph: CodeGraph, entryPoints: string[] | undefined, maxBytes?: number): string | FactsOversizeError;
23
- export type AnalysisType = "summary" | "callers" | "callees" | "reachability" | "dead-code" | "cycles" | "path" | "impact" | "facts" | "layer-violation";
23
+ export declare function buildFactsResult(graph: CodeGraph, entryPoints: string[] | undefined, maxBytes?: number, prologOpts?: {
24
+ includeInsights?: boolean;
25
+ }): string | FactsOversizeError;
26
+ export type AnalysisType = "summary" | "callers" | "callees" | "reachability" | "dead-code" | "cycles" | "path" | "impact" | "facts" | "layer-violation" | "communities" | "hubs" | "bridges" | "surprises" | "diff" | "entry-points";
24
27
  export interface AnalysisRequest {
25
28
  analysis: AnalysisType;
26
29
  target?: string;
27
30
  from?: string;
28
31
  to?: string;
29
32
  entryPoints?: string[];
33
+ /** Snapshot name to diff against (required when analysis="diff"). */
34
+ against?: string;
35
+ /**
36
+ * When set, the extracted graph is saved under this snapshot name after
37
+ * analysis completes. Useful for capturing a baseline ("main") that a
38
+ * later `diff` call can compare against.
39
+ */
40
+ saveSnapshot?: string;
41
+ /**
42
+ * For analysis="facts" only: also emit community/2, cohesion/2, hub/2,
43
+ * bridge/2 facts alongside the base fact set. Off by default since these
44
+ * add O(V+E) work and bloat the fact dump.
45
+ */
46
+ includeInsights?: boolean;
47
+ /**
48
+ * Enable persistent per-file extraction cache. Supply an object (with
49
+ * optional cacheDir/repoKey/budget overrides) to opt in. Omit or pass
50
+ * undefined to extract fresh every call.
51
+ */
52
+ cache?: CacheOptions;
30
53
  }
31
54
  export interface AnalysisResult {
32
55
  analysis: AnalysisType;
@@ -1 +1 @@
1
- {"version":3,"file":"analyses.d.ts","sourceRoot":"","sources":["../../src/graph/analyses.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAI5C;;;;;;GAMG;AACH,eAAO,MAAM,uBAAuB,QAAmB,CAAC;AAExD,wEAAwE;AACxE,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,SAAS,EAChB,WAAW,EAAE,MAAM,EAAE,GAAG,SAAS,EACjC,QAAQ,GAAE,MAAgC,GACzC,MAAM,GAAG,kBAAkB,CAa7B;AAED,MAAM,MAAM,YAAY,GACpB,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,cAAc,GAClD,WAAW,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,GACpD,iBAAiB,CAAC;AAEtB,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,YAAY,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,YAAY,CAAC;IACvB,MAAM,EAAE,OAAO,CAAC;IAChB,gGAAgG;IAChG,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,qDAAqD;AACrD,wBAAsB,WAAW,CAC/B,SAAS,EAAE,MAAM,EAAE,EACnB,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,cAAc,CAAC,CAgCzB;AAED,yEAAyE;AACzE,wBAAsB,oBAAoB,CACxC,KAAK,EAAE,SAAS,EAChB,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,cAAc,CAAC,CAEzB"}
1
+ {"version":3,"file":"analyses.d.ts","sourceRoot":"","sources":["../../src/graph/analyses.ts"],"names":[],"mappings":"AAGA,OAAO,EAA8B,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAc3E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAI5C;;;;;;GAMG;AACH,eAAO,MAAM,uBAAuB,QAAmB,CAAC;AAExD,wEAAwE;AACxE,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,SAAS,EAChB,WAAW,EAAE,MAAM,EAAE,GAAG,SAAS,EACjC,QAAQ,GAAE,MAAgC,EAC1C,UAAU,CAAC,EAAE;IAAE,eAAe,CAAC,EAAE,OAAO,CAAA;CAAE,GACzC,MAAM,GAAG,kBAAkB,CAa7B;AAED,MAAM,MAAM,YAAY,GACpB,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,cAAc,GAClD,WAAW,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,GACpD,iBAAiB,GACjB,aAAa,GAAG,MAAM,GAAG,SAAS,GAAG,WAAW,GAChD,MAAM,GAAG,cAAc,CAAC;AAE5B,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,YAAY,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,qEAAqE;IACrE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;;;OAIG;IACH,KAAK,CAAC,EAAE,YAAY,CAAC;CACtB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,YAAY,CAAC;IACvB,MAAM,EAAE,OAAO,CAAC;IAChB,gGAAgG;IAChG,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,qDAAqD;AACrD,wBAAsB,WAAW,CAC/B,SAAS,EAAE,MAAM,EAAE,EACnB,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,cAAc,CAAC,CAqEzB;AAED,yEAAyE;AACzE,wBAAsB,oBAAoB,CACxC,KAAK,EAAE,SAAS,EAChB,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,cAAc,CAAC,CAEzB"}
@@ -1,6 +1,11 @@
1
1
  import { readFileSync, statSync } from "node:fs";
2
2
  import { extractGraph } from "./extractor.js";
3
3
  import { graphToProlog } from "./facts.js";
4
+ import { loadSnapshot, saveSnapshot } from "./cache.js";
5
+ import { detectCommunities } from "./community.js";
6
+ import { detectHubs, detectBridges, detectSurprisingConnections } from "./insights.js";
7
+ import { graphDiff } from "./diff.js";
8
+ import { detectEntryPoints } from "./entry-points.js";
4
9
  import { cycles as nativeCycles, reachability as nativeReachability, path as nativePath, impact as nativeImpact, deadCode as nativeDeadCode, callers as nativeCallers, callees as nativeCallees, } from "./native-analyses.js";
5
10
  const MAX_FILE_SIZE = 10 * 1024 * 1024; // 10MB
6
11
  /**
@@ -17,8 +22,8 @@ export const DEFAULT_FACTS_MAX_BYTES = 10 * 1024 * 1024;
17
22
  * callers (and the MCP transport) can surface a clear failure instead of
18
23
  * timing out mid-serialize.
19
24
  */
20
- export function buildFactsResult(graph, entryPoints, maxBytes = DEFAULT_FACTS_MAX_BYTES) {
21
- const program = graphToProlog(graph, entryPoints);
25
+ export function buildFactsResult(graph, entryPoints, maxBytes = DEFAULT_FACTS_MAX_BYTES, prologOpts) {
26
+ const program = graphToProlog(graph, entryPoints, prologOpts);
22
27
  if (program.length > maxBytes) {
23
28
  return {
24
29
  error: `Prolog fact dump is ${program.length} bytes, exceeds the ${maxBytes} byte cap. ` +
@@ -59,7 +64,36 @@ export async function runAnalysis(filePaths, request) {
59
64
  warnings,
60
65
  };
61
66
  }
62
- const graph = await extractGraph(files);
67
+ // Guard: if the caller both saves AND diffs against the same snapshot
68
+ // name, the save would clobber the baseline before the diff runs,
69
+ // producing a silent "no changes" result. Reject explicitly.
70
+ if (request.saveSnapshot &&
71
+ request.analysis === "diff" &&
72
+ request.against === request.saveSnapshot) {
73
+ return {
74
+ analysis: request.analysis,
75
+ result: {
76
+ error: `saveSnapshot and against cannot name the same snapshot ('${request.saveSnapshot}') — ` +
77
+ "the save would overwrite the baseline before the diff runs. " +
78
+ "Use distinct names (e.g. save_snapshot='feature-branch', against='main').",
79
+ },
80
+ warnings: warnings.length > 0 ? warnings : undefined,
81
+ };
82
+ }
83
+ const graph = await extractGraph(files, request.cache ? { cache: request.cache } : {});
84
+ if (request.saveSnapshot) {
85
+ if (!request.cache) {
86
+ warnings.push("saveSnapshot ignored: cache option is required to persist snapshots");
87
+ }
88
+ else {
89
+ try {
90
+ await saveSnapshot(request.saveSnapshot, graph, request.cache);
91
+ }
92
+ catch (e) {
93
+ warnings.push(`Failed to save snapshot ${request.saveSnapshot}: ${e instanceof Error ? e.message : String(e)}`);
94
+ }
95
+ }
96
+ }
63
97
  const base = await runOnGraph(graph, request);
64
98
  return warnings.length > 0 ? { ...base, warnings } : base;
65
99
  }
@@ -78,7 +112,12 @@ export async function runAnalysisFromGraph(graph, request) {
78
112
  async function runOnGraph(graph, request) {
79
113
  switch (request.analysis) {
80
114
  case "facts":
81
- return { analysis: "facts", result: buildFactsResult(graph, request.entryPoints) };
115
+ return {
116
+ analysis: "facts",
117
+ result: buildFactsResult(graph, request.entryPoints, DEFAULT_FACTS_MAX_BYTES, {
118
+ includeInsights: request.includeInsights ?? false,
119
+ }),
120
+ };
82
121
  case "summary":
83
122
  return { analysis: "summary", result: buildSummary(graph) };
84
123
  case "layer-violation":
@@ -110,6 +149,29 @@ async function runOnGraph(graph, request) {
110
149
  if (!request.target)
111
150
  return missingParams("impact");
112
151
  return { analysis: "impact", result: nativeImpact(graph, request.target) };
152
+ case "communities":
153
+ return { analysis: "communities", result: detectCommunities(graph) };
154
+ case "hubs":
155
+ return { analysis: "hubs", result: detectHubs(graph) };
156
+ case "bridges":
157
+ return { analysis: "bridges", result: detectBridges(graph) };
158
+ case "surprises":
159
+ return { analysis: "surprises", result: detectSurprisingConnections(graph) };
160
+ case "entry-points":
161
+ return { analysis: "entry-points", result: detectEntryPoints(graph) };
162
+ case "diff": {
163
+ if (!request.against) {
164
+ return { analysis: "diff", result: { error: "Missing required parameter 'against' — specify a snapshot name to diff against" } };
165
+ }
166
+ if (!request.cache) {
167
+ return { analysis: "diff", result: { error: "diff requires a cache option so snapshots can be located on disk" } };
168
+ }
169
+ const baseline = await loadSnapshot(request.against, request.cache);
170
+ if (!baseline) {
171
+ return { analysis: "diff", result: { error: `Snapshot '${request.against}' not found. Save one first via saveSnapshot.` } };
172
+ }
173
+ return { analysis: "diff", result: graphDiff(baseline, graph) };
174
+ }
113
175
  default:
114
176
  return { analysis: request.analysis, result: { error: `Unknown analysis: ${request.analysis}` } };
115
177
  }
@@ -167,7 +229,7 @@ function buildSummary(graph) {
167
229
  const files = new Set(graph.defines.map((d) => d.file));
168
230
  const functions = graph.defines.filter((d) => d.kind === "function" || d.kind === "method").length;
169
231
  const classes = graph.defines.filter((d) => d.kind === "class").length;
170
- return {
232
+ const summary = {
171
233
  files: files.size,
172
234
  functions,
173
235
  classes,
@@ -175,5 +237,9 @@ function buildSummary(graph) {
175
237
  imports: graph.imports.length,
176
238
  exports: graph.exports.length,
177
239
  };
240
+ if (graph.hyperedges && graph.hyperedges.length > 0) {
241
+ summary.hyperedges = graph.hyperedges.length;
242
+ }
243
+ return summary;
178
244
  }
179
245
  //# sourceMappingURL=analyses.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"analyses.js","sourceRoot":"","sources":["../../src/graph/analyses.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"analyses.js","sourceRoot":"","sources":["../../src/graph/analyses.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,72 @@
1
+ /**
2
+ * On-disk cache for per-file CodeGraph extraction results.
3
+ *
4
+ * Layout:
5
+ * <cacheDir>/<repoKey>/
6
+ * .lock proper-lockfile target
7
+ * manifest.json { schemaVersion, entries: {absPath: {hash, size, savedAt}} }
8
+ * files/<hash>.json one serialized CodeGraph fragment per cached file
9
+ * snapshots/<name>.json full serialized graph at a point in time
10
+ *
11
+ * All manifest read-modify-write sequences serialize through `withRepoLock`.
12
+ * Readers tolerate a racing eviction by treating a missing file as a miss.
13
+ * LRU is tracked via file mtime: `utimes` bumps the entry on every hit, and
14
+ * eviction sorts oldest-first.
15
+ */
16
+ import type { CodeGraph } from "./types.js";
17
+ export declare const CACHE_SCHEMA_VERSION = "1";
18
+ export interface CacheOptions {
19
+ /** Root cache directory. Defaults to $CHIASMUS_CACHE_DIR or ~/.cache/chiasmus. */
20
+ cacheDir?: string;
21
+ /** Identifier for a specific repository/project. Defaults to "default". */
22
+ repoKey?: string;
23
+ /**
24
+ * Per-repo byte budget. Defaults to $CHIASMUS_CACHE_MAX_PER_REPO or 64 MB.
25
+ */
26
+ maxBytesPerRepo?: number;
27
+ }
28
+ export interface CachePaths {
29
+ cacheDir: string;
30
+ repoDir: string;
31
+ filesDir: string;
32
+ manifestPath: string;
33
+ lockPath: string;
34
+ }
35
+ /** Deterministic repoKey derived from a working directory — safe across sessions. */
36
+ export declare function defaultRepoKey(cwd?: string): string;
37
+ export declare function resolveCachePaths(opts?: CacheOptions): CachePaths;
38
+ /**
39
+ * Per-file content hash. The path suffix prevents two distinct files with
40
+ * identical content from colliding.
41
+ */
42
+ export declare function fileHash(content: string, absPath: string): string;
43
+ export declare function checkFileCache(files: Array<{
44
+ path: string;
45
+ content: string;
46
+ }>, opts?: CacheOptions): Promise<{
47
+ hits: Array<{
48
+ path: string;
49
+ graph: CodeGraph;
50
+ }>;
51
+ misses: Array<{
52
+ path: string;
53
+ content: string;
54
+ }>;
55
+ }>;
56
+ export declare function saveFileCache(items: Array<{
57
+ path: string;
58
+ content: string;
59
+ graph: CodeGraph;
60
+ }>, opts?: CacheOptions): Promise<void>;
61
+ /**
62
+ * Public eviction entry point. Prefer the in-save fast path; use this only
63
+ * when invoking eviction independently of a save (e.g. to reclaim space
64
+ * after a budget change).
65
+ */
66
+ export declare function evictLRU(opts?: CacheOptions): Promise<void>;
67
+ export declare function clearRepoCache(opts?: CacheOptions): Promise<void>;
68
+ export declare function saveSnapshot(name: string, graph: CodeGraph, opts?: CacheOptions): Promise<void>;
69
+ export declare function loadSnapshot(name: string, opts?: CacheOptions): Promise<CodeGraph | null>;
70
+ export declare function listSnapshots(opts?: CacheOptions): Promise<string[]>;
71
+ export declare function deleteSnapshot(name: string, opts?: CacheOptions): Promise<void>;
72
+ //# sourceMappingURL=cache.d.ts.map
@@ -0,0 +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;AAE5C,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"}