@nanonets/graft 0.8.0 → 0.8.1

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 (84) hide show
  1. package/README.md +38 -8
  2. package/dist/claude/hooks.d.ts +15 -0
  3. package/dist/claude/hooks.d.ts.map +1 -1
  4. package/dist/claude/hooks.js +52 -3
  5. package/dist/claude/hooks.js.map +1 -1
  6. package/dist/claude/init.d.ts +17 -0
  7. package/dist/claude/init.d.ts.map +1 -1
  8. package/dist/claude/init.js +45 -19
  9. package/dist/claude/init.js.map +1 -1
  10. package/dist/claude/settings-merge.d.ts.map +1 -1
  11. package/dist/claude/settings-merge.js +9 -1
  12. package/dist/claude/settings-merge.js.map +1 -1
  13. package/dist/claude/skill-template.d.ts.map +1 -1
  14. package/dist/claude/skill-template.js +11 -3
  15. package/dist/claude/skill-template.js.map +1 -1
  16. package/dist/claude/state.d.ts +2 -20
  17. package/dist/claude/state.d.ts.map +1 -1
  18. package/dist/claude/state.js +9 -72
  19. package/dist/claude/state.js.map +1 -1
  20. package/dist/cli-picker.d.ts +60 -0
  21. package/dist/cli-picker.d.ts.map +1 -0
  22. package/dist/cli-picker.js +268 -0
  23. package/dist/cli-picker.js.map +1 -0
  24. package/dist/cli.js +99 -10
  25. package/dist/cli.js.map +1 -1
  26. package/dist/engine.d.ts +2 -0
  27. package/dist/engine.d.ts.map +1 -1
  28. package/dist/engine.js +1 -0
  29. package/dist/engine.js.map +1 -1
  30. package/dist/graph/build.d.ts +13 -2
  31. package/dist/graph/build.d.ts.map +1 -1
  32. package/dist/graph/build.js +93 -19
  33. package/dist/graph/build.js.map +1 -1
  34. package/dist/graph/extract-cache.d.ts +96 -0
  35. package/dist/graph/extract-cache.d.ts.map +1 -0
  36. package/dist/graph/extract-cache.js +199 -0
  37. package/dist/graph/extract-cache.js.map +1 -0
  38. package/dist/graph/fingerprint.d.ts +70 -0
  39. package/dist/graph/fingerprint.d.ts.map +1 -0
  40. package/dist/graph/fingerprint.js +147 -0
  41. package/dist/graph/fingerprint.js.map +1 -0
  42. package/dist/graph/load.d.ts +11 -0
  43. package/dist/graph/load.d.ts.map +1 -1
  44. package/dist/graph/load.js +14 -0
  45. package/dist/graph/load.js.map +1 -1
  46. package/dist/graph/refresh.d.ts +49 -0
  47. package/dist/graph/refresh.d.ts.map +1 -0
  48. package/dist/graph/refresh.js +202 -0
  49. package/dist/graph/refresh.js.map +1 -0
  50. package/dist/graph/source-files.d.ts +18 -0
  51. package/dist/graph/source-files.d.ts.map +1 -0
  52. package/dist/graph/source-files.js +36 -0
  53. package/dist/graph/source-files.js.map +1 -0
  54. package/dist/hosts/codex-hooks.d.ts +8 -0
  55. package/dist/hosts/codex-hooks.d.ts.map +1 -1
  56. package/dist/hosts/codex-hooks.js +27 -4
  57. package/dist/hosts/codex-hooks.js.map +1 -1
  58. package/dist/hosts/init.d.ts +2 -0
  59. package/dist/hosts/init.d.ts.map +1 -1
  60. package/dist/hosts/init.js +5 -2
  61. package/dist/hosts/init.js.map +1 -1
  62. package/dist/hosts/mcp-config.d.ts +18 -0
  63. package/dist/hosts/mcp-config.d.ts.map +1 -1
  64. package/dist/hosts/mcp-config.js +31 -7
  65. package/dist/hosts/mcp-config.js.map +1 -1
  66. package/dist/hosts/plan.d.ts +32 -0
  67. package/dist/hosts/plan.d.ts.map +1 -0
  68. package/dist/hosts/plan.js +67 -0
  69. package/dist/hosts/plan.js.map +1 -0
  70. package/dist/hosts/registry.d.ts.map +1 -1
  71. package/dist/hosts/registry.js +9 -0
  72. package/dist/hosts/registry.js.map +1 -1
  73. package/dist/mcp/server.d.ts.map +1 -1
  74. package/dist/mcp/server.js +5 -2
  75. package/dist/mcp/server.js.map +1 -1
  76. package/dist/mcp/tools.d.ts +2 -2
  77. package/dist/mcp/tools.d.ts.map +1 -1
  78. package/dist/mcp/tools.js +106 -90
  79. package/dist/mcp/tools.js.map +1 -1
  80. package/dist/util/state.d.ts +45 -0
  81. package/dist/util/state.d.ts.map +1 -0
  82. package/dist/util/state.js +121 -0
  83. package/dist/util/state.js.map +1 -0
  84. package/package.json +1 -1
@@ -0,0 +1,67 @@
1
+ /**
2
+ * What `graft init` *would* write, computed before anything is written.
3
+ *
4
+ * The picker and `--dry-run` both need the exact path list up front, so every
5
+ * writer in the init path (instruction files, MCP configs, hooks, the Claude
6
+ * Code layer) exposes a pure `*Targets()` function and then consumes that same
7
+ * list to do its writing. One source of truth, so a plan can never drift from
8
+ * what a real run touches.
9
+ */
10
+ import { join } from 'node:path';
11
+ import { homedir } from 'node:os';
12
+ import { statSync } from 'node:fs';
13
+ import { HOSTS, detectHosts } from './registry.js';
14
+ import { mcpTargets } from './mcp-config.js';
15
+ import { hookTargets } from './codex-hooks.js';
16
+ import { claudeTargets } from '../claude/init.js';
17
+ function probeFor(home, repo) {
18
+ return {
19
+ home, repo,
20
+ dirExists: (p) => { try {
21
+ return statSync(p).isDirectory();
22
+ }
23
+ catch {
24
+ return false;
25
+ } },
26
+ };
27
+ }
28
+ /** The instruction-file write for one host, derived from its registry entry. */
29
+ function instructionTarget(repo, host) {
30
+ return {
31
+ hostId: host.id,
32
+ id: host.id,
33
+ path: join(repo, host.relPath),
34
+ scope: 'repo',
35
+ kind: 'instruction',
36
+ what: host.kind === 'owned' ? 'graft-owned file' : 'fenced graft section',
37
+ };
38
+ }
39
+ /**
40
+ * Every host graft can wire, each with the full set of files selecting it would
41
+ * touch. Claude Code comes first — it's the deep integration and the picker's
42
+ * default. `ids`, when given, restricts the plan to those hosts.
43
+ */
44
+ export function planInit(repo, opts = {}) {
45
+ const home = opts.home ?? homedir();
46
+ const probe = probeFor(home, repo);
47
+ const detected = new Set(detectHosts(probe).map((h) => h.id));
48
+ const plans = [
49
+ { id: 'claude', name: 'Claude Code', detected: true, writes: claudeTargets(repo) },
50
+ ...HOSTS.map((host) => ({
51
+ id: host.id,
52
+ name: host.name,
53
+ detected: detected.has(host.id),
54
+ writes: [
55
+ instructionTarget(repo, host),
56
+ ...mcpTargets(repo, [host.id], { home }),
57
+ ...(host.id === 'agents' ? hookTargets(home) : []),
58
+ ],
59
+ })),
60
+ ];
61
+ return opts.ids ? plans.filter((p) => opts.ids.includes(p.id)) : plans;
62
+ }
63
+ /** Flatten a plan down to the writes for the selected host ids. */
64
+ export function selectedWrites(plan, ids) {
65
+ return plan.filter((p) => ids.includes(p.id)).flatMap((p) => p.writes);
66
+ }
67
+ //# sourceMappingURL=plan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plan.js","sourceRoot":"","sources":["../../src/hosts/plan.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/hosts/registry.ts"],"names":[],"mappings":"AAWA,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;CAClC;AAED,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC;IAC1B,8CAA8C;IAC9C,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,IAAI,MAAM,CAAC;IAClB,MAAM,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC;CACrC;AAED,eAAO,MAAM,KAAK,EAAE,UAAU,EAoD7B,CAAC;AAEF,wBAAgB,OAAO,IAAI,MAAM,EAAE,CAElC;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,WAAW,GAAG,UAAU,EAAE,CAE5D"}
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/hosts/registry.ts"],"names":[],"mappings":"AAYA,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;CAClC;AAED,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC;IAC1B,8CAA8C;IAC9C,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,IAAI,MAAM,CAAC;IAClB,MAAM,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC;CACrC;AAED,eAAO,MAAM,KAAK,EAAE,UAAU,EA4D7B,CAAC;AAEF,wBAAgB,OAAO,IAAI,MAAM,EAAE,CAElC;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,WAAW,GAAG,UAAU,EAAE,CAE5D"}
@@ -8,6 +8,7 @@
8
8
  */
9
9
  import { join } from 'node:path';
10
10
  import { instructionBody, cursorRule, kiroSteering, windsurfRule } from './instructions.js';
11
+ import { skillTemplate } from '../claude/skill-template.js';
11
12
  export const HOSTS = [
12
13
  {
13
14
  id: 'agents',
@@ -19,6 +20,14 @@ export const HOSTS = [
19
20
  p.dirExists(join(p.home, '.config', 'opencode')) ||
20
21
  p.dirExists(join(p.home, '.config', 'agents')),
21
22
  },
23
+ {
24
+ id: 'adal',
25
+ name: 'AdaL',
26
+ kind: 'owned',
27
+ relPath: join('.adal', 'skills', 'graft', 'SKILL.md'),
28
+ content: skillTemplate,
29
+ detect: (p) => p.dirExists(join(p.home, '.adal')) || p.dirExists(join(p.repo, '.adal')),
30
+ },
22
31
  {
23
32
  id: 'cursor',
24
33
  name: 'Cursor',
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/hosts/registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/hosts/registry.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AAmBA,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CA8CvE"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AAmBA,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAoDvE"}
@@ -54,8 +54,11 @@ export function startMcpServer(root, dirOverride) {
54
54
  return;
55
55
  const name = String(params?.name ?? '');
56
56
  const args = (params?.arguments ?? {});
57
- const r = callTool(root, name, args, dirOverride);
58
- reply(id, { content: [{ type: 'text', text: r.text }], isError: r.isError });
57
+ // Async because a tool call may rebuild the graph first (see
58
+ // graph/refresh.ts). `callTool` absorbs its own errors, so the only thing
59
+ // that can reject here is a bug — surface it as a JSON-RPC error rather
60
+ // than an unhandled rejection that kills the server.
61
+ callTool(root, name, args, dirOverride).then((r) => reply(id, { content: [{ type: 'text', text: r.text }], isError: r.isError }), (err) => replyError(id, -32603, err instanceof Error ? err.message : String(err)));
59
62
  return;
60
63
  }
61
64
  default:
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"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"}
@@ -4,8 +4,8 @@ export interface ToolDef {
4
4
  inputSchema: object;
5
5
  }
6
6
  export declare const TOOLS: ToolDef[];
7
- export declare function callTool(root: string, name: string, args: Record<string, unknown>, dirOverride?: string): {
7
+ export declare function callTool(root: string, name: string, args: Record<string, unknown>, dirOverride?: string): Promise<{
8
8
  text: string;
9
9
  isError: boolean;
10
- };
10
+ }>;
11
11
  //# sourceMappingURL=tools.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/mcp/tools.ts"],"names":[],"mappings":"AA0BA,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;CACrB;AAQD,eAAO,MAAM,KAAK,EAAE,OAAO,EAoF1B,CAAC;AA2EF,wBAAgB,QAAQ,CACtB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,WAAW,CAAC,EAAE,MAAM,GACnB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAqFpC"}
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/mcp/tools.ts"],"names":[],"mappings":"AA2BA,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;CACrB;AAQD,eAAO,MAAM,KAAK,EAAE,OAAO,EAoF1B,CAAC;AA+EF,wBAAsB,QAAQ,CAC5B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,CAmB7C"}
package/dist/mcp/tools.js CHANGED
@@ -7,6 +7,7 @@ import { formatAsk, skeleton, formatSkeleton } from '../ask/ask.js';
7
7
  import { formatCheckReport } from '../context/check.js';
8
8
  import { formatGraphCheckReport } from '../graph/check.js';
9
9
  import { loadGraphCached } from '../graph/load.js';
10
+ import { ensureFreshChildren, ensureFreshGraph, refreshNote } from '../graph/refresh.js';
10
11
  import { contextDirFor } from '../context/node-file.js';
11
12
  import { resolveSymbol, edgeWalk } from '../graph/traverse.js';
12
13
  import { callersSavings, headerOf, hitLine, looseNoteFor } from '../graph/traverse-cli.js';
@@ -166,101 +167,116 @@ function callWorkspaceTool(root, dirOverride, name, args) {
166
167
  return null;
167
168
  }
168
169
  }
169
- export function callTool(root, name, args, dirOverride) {
170
+ /** Tools whose whole job is to REPORT drift. Rebuilding first would make
171
+ * `graft_check` answer about a graph it just fixed, i.e. always "OK". */
172
+ const NO_REFRESH_TOOLS = new Set(['graft_check']);
173
+ export async function callTool(root, name, args, dirOverride) {
170
174
  try {
171
- if (readWorkspace(root, dirOverride)) {
172
- const fed = callWorkspaceTool(root, dirOverride, name, args);
173
- if (fed)
174
- return fed;
175
- }
176
- switch (name) {
177
- case 'graft_ask': {
178
- const query = String(args.query ?? '');
179
- if (!query)
180
- return { text: 'graft_ask requires a query', isError: true };
181
- const limit = typeof args.limit === 'number' ? args.limit : 5;
182
- const engine = new Graft({ contextDir: dirOverride });
183
- const inArg = typeof args.in === 'string' && args.in ? args.in : undefined;
184
- const r = engine.ask(root, query, { limit, source: true, full: args.full === true, in: inArg });
185
- return { text: formatAsk(r), isError: false };
186
- }
187
- case 'graft_skeleton': {
188
- const file = String(args.file ?? '');
189
- if (!file)
190
- return { text: 'graft_skeleton requires a file', isError: true };
191
- const r = skeleton(root, file, { contextDir: dirOverride });
192
- return { text: formatSkeleton(r), isError: !r.entries.length && !!r.note };
193
- }
194
- case 'graft_check': {
195
- const engine = new Graft({ contextDir: dirOverride });
196
- const r = engine.check(root);
197
- const g = engine.checkGraph(root);
198
- const parts = [formatCheckReport(r)];
199
- if (!g.missing)
200
- parts.push(formatGraphCheckReport(g));
201
- return { text: parts.join('\n\n'), isError: false };
202
- }
203
- case 'graft_callers': {
204
- // One tool covers callers (direction:in, the default), callees
205
- // (direction:out), and blast radius (depth>1). edgeWalk handles the
206
- // file-seed aggregation that the old graft_blast_radius did: for a
207
- // file at depth>1 it walks the file node AND every symbol defined in
208
- // it, so dependents that call into a symbol (targeting the SYMBOL id,
209
- // never the FILE id) aren't silently dropped.
210
- const symbol = String(args.symbol ?? args.file ?? '');
211
- if (!symbol)
212
- return { text: 'graft_callers requires a symbol', isError: true };
213
- const w = loadGraphCached(contextDirFor(root, dirOverride));
214
- if (!w)
215
- return { text: NO_GRAPH, isError: true };
216
- const inOpt = typeof args.in === 'string' && args.in ? { in: args.in } : {};
217
- const matches = resolveSymbol(w, symbol, inOpt);
218
- if (matches.length === 0)
219
- return { text: unknownSymbolText(symbol), isError: true };
220
- const direction = args.direction === 'out' ? 'out' : 'in';
221
- // `depth: "all"` (or a huge number) walks the full transitive closure —
222
- // every connected source — terminating when no new node is reached.
223
- const depth = args.depth === 'all' || args.depth === 'full'
224
- ? Number.POSITIVE_INFINITY
225
- : typeof args.depth === 'number' && Number.isFinite(args.depth) && args.depth >= 1
226
- ? Math.floor(args.depth)
227
- : 1;
228
- const results = matches.map((m) => ({ symbol: m, hits: edgeWalk(w, m, direction, depth) }));
229
- const byId = new Map(results.map((r) => [r.symbol.id, r.hits]));
230
- const body = renderMatches(direction, depth > 1, matches, (m) => byId.get(m.id) ?? []);
231
- const text = body + savingsFooter(body, callersSavings(w, results));
232
- return { text, isError: false };
233
- }
234
- case 'graft_grep': {
235
- const pattern = String(args.pattern ?? '');
236
- if (!pattern)
237
- return { text: 'graft_grep requires a pattern', isError: true };
238
- const w = loadGraphCached(contextDirFor(root, dirOverride));
239
- if (!w)
240
- return { text: NO_GRAPH, isError: true };
241
- const result = grepGraph(w, root, pattern, {
242
- ignoreCase: typeof args.ignore_case === 'boolean' ? args.ignore_case : undefined,
243
- fixed: typeof args.fixed === 'boolean' ? args.fixed : undefined,
244
- in: typeof args.in === 'string' && args.in ? args.in : undefined,
245
- });
246
- if (result.totalHits === 0)
247
- return { text: zeroHitNote(result), isError: false };
248
- return { text: formatGrepResult(result), isError: false };
249
- }
250
- case 'graft_map': {
251
- const w = loadGraphCached(contextDirFor(root, dirOverride));
252
- if (!w)
253
- return { text: NO_GRAPH, isError: true };
254
- const maxDirs = typeof args.max_dirs === 'number' && Number.isFinite(args.max_dirs) && args.max_dirs > 0 ? args.max_dirs : undefined;
255
- const map = buildRepoMap(w, { maxDirs });
256
- return { text: formatRepoMap(map), isError: false };
257
- }
258
- default:
259
- return { text: `unknown tool: ${name}`, isError: true };
175
+ const ws = readWorkspace(root, dirOverride);
176
+ // Freshness first: an answer that cites file:line has to be about the code as
177
+ // it is right now, including edits nobody has committed (or even saved through
178
+ // this agent). ~3ms when nothing moved; a structural, $0 rebuild when it did.
179
+ let note = null;
180
+ if (!NO_REFRESH_TOOLS.has(name)) {
181
+ const r = ws
182
+ ? await ensureFreshChildren(root, ws.children, { contextDir: dirOverride })
183
+ : await ensureFreshGraph(root, { contextDir: dirOverride });
184
+ note = refreshNote(r);
260
185
  }
186
+ const fed = ws ? callWorkspaceTool(root, dirOverride, name, args) : null;
187
+ const res = fed ?? callSingleTool(root, name, args, dirOverride);
188
+ return note ? { ...res, text: `${note}\n${res.text}` } : res;
261
189
  }
262
190
  catch (err) {
263
191
  return { text: err instanceof Error ? err.message : String(err), isError: true };
264
192
  }
265
193
  }
194
+ /** The single-graph path: every tool, answered from one repo's graph. */
195
+ function callSingleTool(root, name, args, dirOverride) {
196
+ switch (name) {
197
+ case 'graft_ask': {
198
+ const query = String(args.query ?? '');
199
+ if (!query)
200
+ return { text: 'graft_ask requires a query', isError: true };
201
+ const limit = typeof args.limit === 'number' ? args.limit : 5;
202
+ const engine = new Graft({ contextDir: dirOverride });
203
+ const inArg = typeof args.in === 'string' && args.in ? args.in : undefined;
204
+ const r = engine.ask(root, query, { limit, source: true, full: args.full === true, in: inArg });
205
+ return { text: formatAsk(r), isError: false };
206
+ }
207
+ case 'graft_skeleton': {
208
+ const file = String(args.file ?? '');
209
+ if (!file)
210
+ return { text: 'graft_skeleton requires a file', isError: true };
211
+ const r = skeleton(root, file, { contextDir: dirOverride });
212
+ return { text: formatSkeleton(r), isError: !r.entries.length && !!r.note };
213
+ }
214
+ case 'graft_check': {
215
+ const engine = new Graft({ contextDir: dirOverride });
216
+ const r = engine.check(root);
217
+ const g = engine.checkGraph(root);
218
+ const parts = [formatCheckReport(r)];
219
+ if (!g.missing)
220
+ parts.push(formatGraphCheckReport(g));
221
+ return { text: parts.join('\n\n'), isError: false };
222
+ }
223
+ case 'graft_callers': {
224
+ // One tool covers callers (direction:in, the default), callees
225
+ // (direction:out), and blast radius (depth>1). edgeWalk handles the
226
+ // file-seed aggregation that the old graft_blast_radius did: for a
227
+ // file at depth>1 it walks the file node AND every symbol defined in
228
+ // it, so dependents that call into a symbol (targeting the SYMBOL id,
229
+ // never the FILE id) aren't silently dropped.
230
+ const symbol = String(args.symbol ?? args.file ?? '');
231
+ if (!symbol)
232
+ return { text: 'graft_callers requires a symbol', isError: true };
233
+ const w = loadGraphCached(contextDirFor(root, dirOverride));
234
+ if (!w)
235
+ return { text: NO_GRAPH, isError: true };
236
+ const inOpt = typeof args.in === 'string' && args.in ? { in: args.in } : {};
237
+ const matches = resolveSymbol(w, symbol, inOpt);
238
+ if (matches.length === 0)
239
+ return { text: unknownSymbolText(symbol), isError: true };
240
+ const direction = args.direction === 'out' ? 'out' : 'in';
241
+ // `depth: "all"` (or a huge number) walks the full transitive closure —
242
+ // every connected source — terminating when no new node is reached.
243
+ const depth = args.depth === 'all' || args.depth === 'full'
244
+ ? Number.POSITIVE_INFINITY
245
+ : typeof args.depth === 'number' && Number.isFinite(args.depth) && args.depth >= 1
246
+ ? Math.floor(args.depth)
247
+ : 1;
248
+ const results = matches.map((m) => ({ symbol: m, hits: edgeWalk(w, m, direction, depth) }));
249
+ const byId = new Map(results.map((r) => [r.symbol.id, r.hits]));
250
+ const body = renderMatches(direction, depth > 1, matches, (m) => byId.get(m.id) ?? []);
251
+ const text = body + savingsFooter(body, callersSavings(w, results));
252
+ return { text, isError: false };
253
+ }
254
+ case 'graft_grep': {
255
+ const pattern = String(args.pattern ?? '');
256
+ if (!pattern)
257
+ return { text: 'graft_grep requires a pattern', isError: true };
258
+ const w = loadGraphCached(contextDirFor(root, dirOverride));
259
+ if (!w)
260
+ return { text: NO_GRAPH, isError: true };
261
+ const result = grepGraph(w, root, pattern, {
262
+ ignoreCase: typeof args.ignore_case === 'boolean' ? args.ignore_case : undefined,
263
+ fixed: typeof args.fixed === 'boolean' ? args.fixed : undefined,
264
+ in: typeof args.in === 'string' && args.in ? args.in : undefined,
265
+ });
266
+ if (result.totalHits === 0)
267
+ return { text: zeroHitNote(result), isError: false };
268
+ return { text: formatGrepResult(result), isError: false };
269
+ }
270
+ case 'graft_map': {
271
+ const w = loadGraphCached(contextDirFor(root, dirOverride));
272
+ if (!w)
273
+ return { text: NO_GRAPH, isError: true };
274
+ const maxDirs = typeof args.max_dirs === 'number' && Number.isFinite(args.max_dirs) && args.max_dirs > 0 ? args.max_dirs : undefined;
275
+ const map = buildRepoMap(w, { maxDirs });
276
+ return { text: formatRepoMap(map), isError: false };
277
+ }
278
+ default:
279
+ return { text: `unknown tool: ${name}`, isError: true };
280
+ }
281
+ }
266
282
  //# sourceMappingURL=tools.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/mcp/tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/mcp/tools.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACzF,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAgC,MAAM,sBAAsB,CAAC;AAC7F,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC3F,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC9D,OAAO,EACL,WAAW,EACX,eAAe,EACf,aAAa,EACb,YAAY,EACZ,WAAW,EACX,aAAa,GACd,MAAM,uBAAuB,CAAC;AAS/B,MAAM,QAAQ,GAAG,0CAA0C,CAAC;AAE5D,SAAS,iBAAiB,CAAC,KAAa;IACtC,OAAO,cAAc,KAAK,wDAAwD,CAAC;AACrF,CAAC;AAED,MAAM,CAAC,MAAM,KAAK,GAAc;IAC9B;QACE,IAAI,EAAE,WAAW;QACjB,WAAW,EACT,+KAA+K;QACjL,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,6CAA6C,EAAE;gBACrF,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,yBAAyB,EAAE;gBACjE,IAAI,EAAE;oBACJ,IAAI,EAAE,SAAS;oBACf,WAAW,EAAE,4EAA4E;iBAC1F;gBACD,EAAE,EAAE;oBACF,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,+FAA+F;iBAC7G;aACF;YACD,QAAQ,EAAE,CAAC,OAAO,CAAC;SACpB;KACF;IACD;QACE,IAAI,EAAE,gBAAgB;QACtB,WAAW,EACT,+HAA+H;QACjI,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,qDAAqD,EAAE;aAC7F;YACD,QAAQ,EAAE,CAAC,MAAM,CAAC;SACnB;KACF;IACD;QACE,IAAI,EAAE,aAAa;QACnB,WAAW,EAAE,4EAA4E;QACzF,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE;KAChD;IACD;QACE,IAAI,EAAE,eAAe;QACrB,WAAW,EACT,qYAAqY;QACvY,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,4FAA4F,EAAE;gBACrI,SAAS,EAAE;oBACT,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC;oBACnB,WAAW,EAAE,mEAAmE;iBACjF;gBACD,KAAK,EAAE,EAAE,WAAW,EAAE,yJAAyJ,EAAE;gBACjL,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,4DAA4D,EAAE;aAClG;YACD,QAAQ,EAAE,CAAC,QAAQ,CAAC;SACrB;KACF;IACD;QACE,IAAI,EAAE,YAAY;QAClB,WAAW,EACT,kLAAkL;QACpL,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,oDAAoD,EAAE;gBAC9F,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,oDAAoD,EAAE;gBACzF,WAAW,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,wBAAwB,EAAE;gBACvE,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,gDAAgD,EAAE;aAC1F;YACD,QAAQ,EAAE,CAAC,SAAS,CAAC;SACtB;KACF;IACD;QACE,IAAI,EAAE,WAAW;QACjB,WAAW,EACT,4NAA4N;QAC9N,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,qEAAqE,EAAE;aACjH;SACF;KACF;CACF,CAAC;AAEF;;;qDAGqD;AACrD,SAAS,aAAa,CACpB,SAAoB,EACpB,SAAkB,EAClB,OAAiB,EACjB,OAAiC;IAEjC,OAAO,OAAO;SACX,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACT,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QACxB,MAAM,KAAK,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5B,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;;YAC9D,KAAK,MAAM,CAAC,IAAI,IAAI;gBAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC;QACxE,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC,CAAC;SACD,IAAI,CAAC,MAAM,CAAC,CAAC;AAClB,CAAC;AAED;;;oDAGoD;AACpD,SAAS,iBAAiB,CACxB,IAAY,EACZ,WAA+B,EAC/B,IAAY,EACZ,IAA6B;IAE7B,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,WAAW,CAAC,CAAC,CAAC;YACjB,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;YACvC,IAAI,CAAC,KAAK;gBAAE,OAAO,EAAE,IAAI,EAAE,4BAA4B,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YACzE,MAAM,KAAK,GAAG,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9D,MAAM,KAAK,GAAG,OAAO,IAAI,CAAC,EAAE,KAAK,QAAQ,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;YAC3E,MAAM,CAAC,GAAG,WAAW,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;YAC9G,OAAO,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;QAChD,CAAC;QACD,KAAK,eAAe,CAAC,CAAC,CAAC;YACrB,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;YACtD,IAAI,CAAC,MAAM;gBAAE,OAAO,EAAE,IAAI,EAAE,iCAAiC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YAC/E,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,eAAe,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE;gBACjE,SAAS,EAAE,IAAI,CAAC,SAAS,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI;gBAClD,KAAK,EAAE,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;gBAC7F,EAAE,EAAE,OAAO,IAAI,CAAC,EAAE,KAAK,QAAQ,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS;aACjE,CAAC,CAAC;YACH,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC;QACnC,CAAC;QACD,KAAK,YAAY,CAAC,CAAC,CAAC;YAClB,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;YAC3C,IAAI,CAAC,OAAO;gBAAE,OAAO,EAAE,IAAI,EAAE,+BAA+B,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YAC9E,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,YAAY,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE;gBACpE,UAAU,EAAE,OAAO,IAAI,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS;gBAChF,KAAK,EAAE,OAAO,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;aAChE,CAAC,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;YACrF,OAAO,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;QAC5E,CAAC;QACD,KAAK,WAAW,CAAC,CAAC,CAAC;YACjB,MAAM,OAAO,GAAG,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;YACrI,OAAO,EAAE,IAAI,EAAE,WAAW,CAAC,IAAI,EAAE,WAAW,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;QAC/E,CAAC;QACD,KAAK,aAAa,CAAC,CAAC,CAAC;YACnB,MAAM,EAAE,IAAI,EAAE,GAAG,aAAa,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;YAClD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;QAClC,CAAC;QACD;YACE,OAAO,IAAI,CAAC;IAChB,CAAC;AACH,CAAC;AAED;yEACyE;AACzE,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;AAElD,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,IAAY,EACZ,IAAY,EACZ,IAA6B,EAC7B,WAAoB;IAEpB,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,aAAa,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QAC5C,8EAA8E;QAC9E,+EAA+E;QAC/E,8EAA8E;QAC9E,IAAI,IAAI,GAAkB,IAAI,CAAC;QAC/B,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAChC,MAAM,CAAC,GAAG,EAAE;gBACV,CAAC,CAAC,MAAM,mBAAmB,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,EAAE,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC;gBAC3E,CAAC,CAAC,MAAM,gBAAgB,CAAC,IAAI,EAAE,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC,CAAC;YAC9D,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;QACxB,CAAC;QACD,MAAM,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACzE,MAAM,GAAG,GAAG,GAAG,IAAI,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;QACjE,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,IAAI,EAAE,GAAG,IAAI,KAAK,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;IAC/D,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,EAAE,IAAI,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IACnF,CAAC;AACH,CAAC;AAED,yEAAyE;AACzE,SAAS,cAAc,CACrB,IAAY,EACZ,IAAY,EACZ,IAA6B,EAC7B,WAAoB;IAEpB,QAAQ,IAAI,EAAE,CAAC;QACX,KAAK,WAAW,CAAC,CAAC,CAAC;YACjB,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;YACvC,IAAI,CAAC,KAAK;gBAAE,OAAO,EAAE,IAAI,EAAE,4BAA4B,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YACzE,MAAM,KAAK,GAAG,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9D,MAAM,MAAM,GAAG,IAAI,KAAK,CAAC,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC,CAAC;YACtD,MAAM,KAAK,GAAG,OAAO,IAAI,CAAC,EAAE,KAAK,QAAQ,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;YAC3E,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;YAChG,OAAO,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;QAChD,CAAC;QACD,KAAK,gBAAgB,CAAC,CAAC,CAAC;YACtB,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;YACrC,IAAI,CAAC,IAAI;gBAAE,OAAO,EAAE,IAAI,EAAE,gCAAgC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YAC5E,MAAM,CAAC,GAAG,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC,CAAC;YAC5D,OAAO,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC7E,CAAC;QACD,KAAK,aAAa,CAAC,CAAC,CAAC;YACnB,MAAM,MAAM,GAAG,IAAI,KAAK,CAAC,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC,CAAC;YACtD,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC7B,MAAM,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAClC,MAAM,KAAK,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC;YACrC,IAAI,CAAC,CAAC,CAAC,OAAO;gBAAE,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC;YACtD,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;QACtD,CAAC;QACD,KAAK,eAAe,CAAC,CAAC,CAAC;YACrB,+DAA+D;YAC/D,oEAAoE;YACpE,mEAAmE;YACnE,qEAAqE;YACrE,sEAAsE;YACtE,8CAA8C;YAC9C,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;YACtD,IAAI,CAAC,MAAM;gBAAE,OAAO,EAAE,IAAI,EAAE,iCAAiC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YAC/E,MAAM,CAAC,GAAG,eAAe,CAAC,aAAa,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC;YAC5D,IAAI,CAAC,CAAC;gBAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YACjD,MAAM,KAAK,GAAG,OAAO,IAAI,CAAC,EAAE,KAAK,QAAQ,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5E,MAAM,OAAO,GAAG,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;YAChD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,EAAE,IAAI,EAAE,iBAAiB,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YACpF,MAAM,SAAS,GAAc,IAAI,CAAC,SAAS,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;YACrE,wEAAwE;YACxE,oEAAoE;YACpE,MAAM,KAAK,GACT,IAAI,CAAC,KAAK,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,KAAK,MAAM;gBAC3C,CAAC,CAAC,MAAM,CAAC,iBAAiB;gBAC1B,CAAC,CAAC,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC;oBAChF,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;oBACxB,CAAC,CAAC,CAAC,CAAC;YACV,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;YAC5F,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAChE,MAAM,IAAI,GAAG,aAAa,CAAC,SAAS,EAAE,KAAK,GAAG,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;YACvF,MAAM,IAAI,GAAG,IAAI,GAAG,aAAa,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;YACpE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;QAClC,CAAC;QACD,KAAK,YAAY,CAAC,CAAC,CAAC;YAClB,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;YAC3C,IAAI,CAAC,OAAO;gBAAE,OAAO,EAAE,IAAI,EAAE,+BAA+B,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YAC9E,MAAM,CAAC,GAAG,eAAe,CAAC,aAAa,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC;YAC5D,IAAI,CAAC,CAAC;gBAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YACjD,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE;gBACzC,UAAU,EAAE,OAAO,IAAI,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS;gBAChF,KAAK,EAAE,OAAO,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;gBAC/D,EAAE,EAAE,OAAO,IAAI,CAAC,EAAE,KAAK,QAAQ,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS;aACjE,CAAC,CAAC;YACH,IAAI,MAAM,CAAC,SAAS,KAAK,CAAC;gBAAE,OAAO,EAAE,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;YACjF,OAAO,EAAE,IAAI,EAAE,gBAAgB,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;QAC5D,CAAC;QACD,KAAK,WAAW,CAAC,CAAC,CAAC;YACjB,MAAM,CAAC,GAAG,eAAe,CAAC,aAAa,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC;YAC5D,IAAI,CAAC,CAAC;gBAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YACjD,MAAM,OAAO,GAAG,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;YACrI,MAAM,GAAG,GAAG,YAAY,CAAC,CAAC,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;YACzC,OAAO,EAAE,IAAI,EAAE,aAAa,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;QACtD,CAAC;QACH;YACE,OAAO,EAAE,IAAI,EAAE,iBAAiB,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC5D,CAAC;AACH,CAAC"}
@@ -0,0 +1,45 @@
1
+ export interface Stats {
2
+ nodeCount: number;
3
+ edgeCount: number;
4
+ languages: string[];
5
+ totalCount: number;
6
+ readyCount: number;
7
+ staleCount: number;
8
+ dirty: boolean;
9
+ syncing: boolean;
10
+ syncedAt: string | null;
11
+ lastFile: string | null;
12
+ }
13
+ export declare const LOCK_STALE_MS = 300000;
14
+ export declare function emptyStats(): Stats;
15
+ export declare function cacheDir(projectDir: string): string;
16
+ export declare function readJson<T>(p: string): T | null;
17
+ /**
18
+ * Write JSON to `p` via a scratch file and a rename, so a concurrent reader sees
19
+ * either the whole old file or the whole new one — never a truncated prefix. The
20
+ * pid in the temp name keeps two concurrent writers off each other's scratch file.
21
+ *
22
+ * `compact` drops the indentation, for the caches only a machine ever opens —
23
+ * it's ~30% of the bytes on a big, deep object.
24
+ *
25
+ * A failed write takes its scratch file with it. Every CLI invocation is a new pid,
26
+ * so the names never collide and never get reused: leaving them behind means a repo
27
+ * that fails this write repeatedly (ENOSPC, or a Windows indexer holding the target
28
+ * open) accumulates one full-size file per attempt, and nothing in graft ever lists
29
+ * `.cache/` to clean them up.
30
+ */
31
+ export declare function writeJsonAtomic(p: string, value: unknown, compact?: boolean): void;
32
+ export declare function readStats(d: string): Stats | null;
33
+ export declare function writeStats(d: string, s: Stats): void;
34
+ export declare function patchStats(d: string, patch: Partial<Stats>): Stats;
35
+ export declare function acquireLock(d: string): boolean;
36
+ export declare function releaseLock(d: string): void;
37
+ /**
38
+ * The lock, addressed by cache dir rather than project dir. For the default layout
39
+ * `<root>/graft/.cache` these are the same file, which is the point: the Claude Code
40
+ * hooks lock by project dir and the graph's auto-refresh locks by the context dir it
41
+ * is actually writing, and the two must collide so they can't rebuild at once.
42
+ */
43
+ export declare function acquireLockIn(cache: string): boolean;
44
+ export declare function releaseLockIn(cache: string): void;
45
+ //# sourceMappingURL=state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../src/util/state.ts"],"names":[],"mappings":"AAcA,MAAM,WAAW,KAAK;IACpB,SAAS,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,EAAE,CAAC;IAC1D,UAAU,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IACvC,UAAU,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IACrD,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CAClD;AAED,eAAO,MAAM,aAAa,SAAS,CAAC;AAEpC,wBAAgB,UAAU,IAAI,KAAK,CAGlC;AAID,wBAAgB,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAAgD;AAGpG,wBAAgB,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,CAAC,GAAG,IAAI,CAE/C;AACD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,UAAQ,GAAG,IAAI,CAUhF;AAED,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,IAAI,CAA0C;AAC5F,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,GAAG,IAAI,CAAsC;AAG3F,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,CAIlE;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAE9C;AACD,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,CAE3C;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAgBpD;AACD,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAEjD"}
@@ -0,0 +1,121 @@
1
+ /**
2
+ * The `graft/.cache/` sidecar state: the statusline's stats snapshot and the
3
+ * build lock that serializes rebuilds.
4
+ *
5
+ * Lives in `util/` rather than `claude/` because two very different callers need
6
+ * it: the Claude Code hooks (which flip `dirty` on an edit and clear it after a
7
+ * background sync) and the graph's own pre-query auto-refresh
8
+ * (`graph/refresh.ts`), which must take the same lock so the two never rebuild
9
+ * on top of each other. `claude/state.ts` re-exports all of this, so nothing
10
+ * outside had to change when it moved.
11
+ */
12
+ import { readFileSync, writeFileSync, mkdirSync, renameSync, rmSync, statSync } from 'node:fs';
13
+ import { join, dirname } from 'node:path';
14
+ export const LOCK_STALE_MS = 300000;
15
+ export function emptyStats() {
16
+ return { nodeCount: 0, edgeCount: 0, languages: [], totalCount: 0, readyCount: 0,
17
+ staleCount: 0, dirty: false, syncing: false, syncedAt: null, lastFile: null };
18
+ }
19
+ const LOCK_FILE = '.sync.lock';
20
+ export function cacheDir(projectDir) { return join(projectDir, 'graft', '.cache'); }
21
+ function statsPath(d) { return join(cacheDir(d), 'stats.json'); }
22
+ export function readJson(p) {
23
+ try {
24
+ return JSON.parse(readFileSync(p, 'utf8'));
25
+ }
26
+ catch {
27
+ return null;
28
+ }
29
+ }
30
+ /**
31
+ * Write JSON to `p` via a scratch file and a rename, so a concurrent reader sees
32
+ * either the whole old file or the whole new one — never a truncated prefix. The
33
+ * pid in the temp name keeps two concurrent writers off each other's scratch file.
34
+ *
35
+ * `compact` drops the indentation, for the caches only a machine ever opens —
36
+ * it's ~30% of the bytes on a big, deep object.
37
+ *
38
+ * A failed write takes its scratch file with it. Every CLI invocation is a new pid,
39
+ * so the names never collide and never get reused: leaving them behind means a repo
40
+ * that fails this write repeatedly (ENOSPC, or a Windows indexer holding the target
41
+ * open) accumulates one full-size file per attempt, and nothing in graft ever lists
42
+ * `.cache/` to clean them up.
43
+ */
44
+ export function writeJsonAtomic(p, value, compact = false) {
45
+ mkdirSync(dirname(p), { recursive: true });
46
+ const tmp = `${p}.${process.pid}.tmp`;
47
+ try {
48
+ writeFileSync(tmp, compact ? JSON.stringify(value) : JSON.stringify(value, null, 2));
49
+ renameSync(tmp, p);
50
+ }
51
+ catch (e) {
52
+ try {
53
+ rmSync(tmp, { force: true });
54
+ }
55
+ catch { /* nothing more we can do */ }
56
+ throw e;
57
+ }
58
+ }
59
+ export function readStats(d) { return readJson(statsPath(d)); }
60
+ export function writeStats(d, s) { writeJsonAtomic(statsPath(d), s); }
61
+ // Best-effort read-modify-write; not atomic across concurrent processes, but acceptable
62
+ // for episodic hook writes (worst case is a lost update, not corruption).
63
+ export function patchStats(d, patch) {
64
+ const next = { ...(readStats(d) ?? emptyStats()), ...patch };
65
+ writeStats(d, next);
66
+ return next;
67
+ }
68
+ export function acquireLock(d) {
69
+ return acquireLockIn(cacheDir(d));
70
+ }
71
+ export function releaseLock(d) {
72
+ releaseLockIn(cacheDir(d));
73
+ }
74
+ /**
75
+ * The lock, addressed by cache dir rather than project dir. For the default layout
76
+ * `<root>/graft/.cache` these are the same file, which is the point: the Claude Code
77
+ * hooks lock by project dir and the graph's auto-refresh locks by the context dir it
78
+ * is actually writing, and the two must collide so they can't rebuild at once.
79
+ */
80
+ export function acquireLockIn(cache) {
81
+ const p = join(cache, LOCK_FILE);
82
+ mkdirSync(cache, { recursive: true });
83
+ const payload = JSON.stringify({ pid: process.pid, at: new Date().toISOString() });
84
+ try {
85
+ writeFileSync(p, payload, { flag: 'wx' }); // atomic exclusive create
86
+ return true;
87
+ }
88
+ catch (e) {
89
+ if (e?.code !== 'EEXIST')
90
+ throw e;
91
+ let stale;
92
+ try {
93
+ stale = Date.now() - statSync(p).mtimeMs >= LOCK_STALE_MS;
94
+ }
95
+ catch {
96
+ stale = true;
97
+ }
98
+ if (!stale)
99
+ return false;
100
+ try {
101
+ rmSync(p);
102
+ }
103
+ catch { /* another process reclaimed it */ }
104
+ try {
105
+ writeFileSync(p, payload, { flag: 'wx' });
106
+ return true;
107
+ }
108
+ catch (e2) {
109
+ if (e2?.code === 'EEXIST')
110
+ return false;
111
+ throw e2;
112
+ }
113
+ }
114
+ }
115
+ export function releaseLockIn(cache) {
116
+ try {
117
+ rmSync(join(cache, LOCK_FILE));
118
+ }
119
+ catch { /* already gone */ }
120
+ }
121
+ //# sourceMappingURL=state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state.js","sourceRoot":"","sources":["../../src/util/state.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC/F,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAS1C,MAAM,CAAC,MAAM,aAAa,GAAG,MAAM,CAAC;AAEpC,MAAM,UAAU,UAAU;IACxB,OAAO,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC;QAC9E,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAClF,CAAC;AAED,MAAM,SAAS,GAAG,YAAY,CAAC;AAE/B,MAAM,UAAU,QAAQ,CAAC,UAAkB,IAAY,OAAO,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;AACpG,SAAS,SAAS,CAAC,CAAS,IAAY,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;AAEjF,MAAM,UAAU,QAAQ,CAAI,CAAS;IACnC,IAAI,CAAC;QAAC,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,CAAM,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,IAAI,CAAC;IAAC,CAAC;AACjF,CAAC;AACD;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,eAAe,CAAC,CAAS,EAAE,KAAc,EAAE,OAAO,GAAG,KAAK;IACxE,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3C,MAAM,GAAG,GAAG,GAAG,CAAC,IAAI,OAAO,CAAC,GAAG,MAAM,CAAC;IACtC,IAAI,CAAC;QACH,aAAa,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACrF,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IACrB,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,IAAI,CAAC;YAAC,MAAM,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,4BAA4B,CAAC,CAAC;QAC5E,MAAM,CAAC,CAAC;IACV,CAAC;AACH,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,CAAS,IAAkB,OAAO,QAAQ,CAAQ,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5F,MAAM,UAAU,UAAU,CAAC,CAAS,EAAE,CAAQ,IAAU,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3F,wFAAwF;AACxF,0EAA0E;AAC1E,MAAM,UAAU,UAAU,CAAC,CAAS,EAAE,KAAqB;IACzD,MAAM,IAAI,GAAU,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,UAAU,EAAE,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC;IACpE,UAAU,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IACpB,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,CAAS;IACnC,OAAO,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACpC,CAAC;AACD,MAAM,UAAU,WAAW,CAAC,CAAS;IACnC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7B,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAAC,KAAa;IACzC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IACjC,SAAS,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACtC,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;IACnF,IAAI,CAAC;QACH,aAAa,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,0BAA0B;QACrE,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,CAAM,EAAE,CAAC;QAChB,IAAI,CAAC,EAAE,IAAI,KAAK,QAAQ;YAAE,MAAM,CAAC,CAAC;QAClC,IAAI,KAAc,CAAC;QACnB,IAAI,CAAC;YAAC,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,aAAa,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC;YAAC,KAAK,GAAG,IAAI,CAAC;QAAC,CAAC;QAC1F,IAAI,CAAC,KAAK;YAAE,OAAO,KAAK,CAAC;QACzB,IAAI,CAAC;YAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,kCAAkC,CAAC,CAAC;QAC/D,IAAI,CAAC;YAAC,aAAa,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YAAC,OAAO,IAAI,CAAC;QAAC,CAAC;QAC/D,OAAO,EAAO,EAAE,CAAC;YAAC,IAAI,EAAE,EAAE,IAAI,KAAK,QAAQ;gBAAE,OAAO,KAAK,CAAC;YAAC,MAAM,EAAE,CAAC;QAAC,CAAC;IACxE,CAAC;AACH,CAAC;AACD,MAAM,UAAU,aAAa,CAAC,KAAa;IACzC,IAAI,CAAC;QAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC,CAAC,kBAAkB,CAAC,CAAC;AACtE,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nanonets/graft",
3
- "version": "0.8.0",
3
+ "version": "0.8.1",
4
4
  "description": "Build a repo's context graph as a folder of linked markdown files that live in the repo and stay in sync with the code through git.",
5
5
  "keywords": [
6
6
  "ai",