@nanonets/graft 0.8.0 → 0.8.2

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 (108) hide show
  1. package/README.md +45 -15
  2. package/dist/ask/ask.js +1 -1
  3. package/dist/ask/ask.js.map +1 -1
  4. package/dist/claude/format.d.ts +40 -13
  5. package/dist/claude/format.d.ts.map +1 -1
  6. package/dist/claude/format.js +54 -15
  7. package/dist/claude/format.js.map +1 -1
  8. package/dist/claude/hooks.d.ts +15 -0
  9. package/dist/claude/hooks.d.ts.map +1 -1
  10. package/dist/claude/hooks.js +52 -3
  11. package/dist/claude/hooks.js.map +1 -1
  12. package/dist/claude/init.d.ts +17 -0
  13. package/dist/claude/init.d.ts.map +1 -1
  14. package/dist/claude/init.js +47 -21
  15. package/dist/claude/init.js.map +1 -1
  16. package/dist/claude/settings-merge.d.ts.map +1 -1
  17. package/dist/claude/settings-merge.js +19 -2
  18. package/dist/claude/settings-merge.js.map +1 -1
  19. package/dist/claude/skill-template.d.ts.map +1 -1
  20. package/dist/claude/skill-template.js +13 -5
  21. package/dist/claude/skill-template.js.map +1 -1
  22. package/dist/claude/state.d.ts +5 -20
  23. package/dist/claude/state.d.ts.map +1 -1
  24. package/dist/claude/state.js +10 -73
  25. package/dist/claude/state.js.map +1 -1
  26. package/dist/cli-picker.d.ts +60 -0
  27. package/dist/cli-picker.d.ts.map +1 -0
  28. package/dist/cli-picker.js +268 -0
  29. package/dist/cli-picker.js.map +1 -0
  30. package/dist/cli.js +101 -12
  31. package/dist/cli.js.map +1 -1
  32. package/dist/context/node-file.d.ts +21 -0
  33. package/dist/context/node-file.d.ts.map +1 -1
  34. package/dist/context/node-file.js +63 -1
  35. package/dist/context/node-file.js.map +1 -1
  36. package/dist/engine.d.ts +2 -0
  37. package/dist/engine.d.ts.map +1 -1
  38. package/dist/engine.js +1 -0
  39. package/dist/engine.js.map +1 -1
  40. package/dist/graph/build.d.ts +13 -2
  41. package/dist/graph/build.d.ts.map +1 -1
  42. package/dist/graph/build.js +98 -20
  43. package/dist/graph/build.js.map +1 -1
  44. package/dist/graph/cards.d.ts.map +1 -1
  45. package/dist/graph/cards.js +8 -0
  46. package/dist/graph/cards.js.map +1 -1
  47. package/dist/graph/extract-cache.d.ts +96 -0
  48. package/dist/graph/extract-cache.d.ts.map +1 -0
  49. package/dist/graph/extract-cache.js +199 -0
  50. package/dist/graph/extract-cache.js.map +1 -0
  51. package/dist/graph/fingerprint.d.ts +70 -0
  52. package/dist/graph/fingerprint.d.ts.map +1 -0
  53. package/dist/graph/fingerprint.js +147 -0
  54. package/dist/graph/fingerprint.js.map +1 -0
  55. package/dist/graph/load.d.ts +11 -0
  56. package/dist/graph/load.d.ts.map +1 -1
  57. package/dist/graph/load.js +14 -0
  58. package/dist/graph/load.js.map +1 -1
  59. package/dist/graph/refresh.d.ts +49 -0
  60. package/dist/graph/refresh.d.ts.map +1 -0
  61. package/dist/graph/refresh.js +202 -0
  62. package/dist/graph/refresh.js.map +1 -0
  63. package/dist/graph/source-files.d.ts +18 -0
  64. package/dist/graph/source-files.d.ts.map +1 -0
  65. package/dist/graph/source-files.js +36 -0
  66. package/dist/graph/source-files.js.map +1 -0
  67. package/dist/graph/traverse-cli.d.ts +1 -1
  68. package/dist/graph/traverse-cli.js +2 -2
  69. package/dist/graph/traverse.d.ts +2 -2
  70. package/dist/graph/traverse.js +1 -1
  71. package/dist/hosts/codex-hooks.d.ts +8 -0
  72. package/dist/hosts/codex-hooks.d.ts.map +1 -1
  73. package/dist/hosts/codex-hooks.js +27 -4
  74. package/dist/hosts/codex-hooks.js.map +1 -1
  75. package/dist/hosts/init.d.ts +2 -0
  76. package/dist/hosts/init.d.ts.map +1 -1
  77. package/dist/hosts/init.js +5 -2
  78. package/dist/hosts/init.js.map +1 -1
  79. package/dist/hosts/mcp-config.d.ts +29 -1
  80. package/dist/hosts/mcp-config.d.ts.map +1 -1
  81. package/dist/hosts/mcp-config.js +77 -10
  82. package/dist/hosts/mcp-config.js.map +1 -1
  83. package/dist/hosts/plan.d.ts +32 -0
  84. package/dist/hosts/plan.d.ts.map +1 -0
  85. package/dist/hosts/plan.js +67 -0
  86. package/dist/hosts/plan.js.map +1 -0
  87. package/dist/hosts/registry.d.ts.map +1 -1
  88. package/dist/hosts/registry.js +9 -0
  89. package/dist/hosts/registry.js.map +1 -1
  90. package/dist/mcp/instructions.d.ts +29 -0
  91. package/dist/mcp/instructions.d.ts.map +1 -0
  92. package/dist/mcp/instructions.js +55 -0
  93. package/dist/mcp/instructions.js.map +1 -0
  94. package/dist/mcp/server.d.ts +6 -1
  95. package/dist/mcp/server.d.ts.map +1 -1
  96. package/dist/mcp/server.js +15 -4
  97. package/dist/mcp/server.js.map +1 -1
  98. package/dist/mcp/tools.d.ts +4 -2
  99. package/dist/mcp/tools.d.ts.map +1 -1
  100. package/dist/mcp/tools.js +144 -104
  101. package/dist/mcp/tools.js.map +1 -1
  102. package/dist/search/grep-cli.js +1 -1
  103. package/dist/search/grep.js +1 -1
  104. package/dist/util/state.d.ts +45 -0
  105. package/dist/util/state.d.ts.map +1 -0
  106. package/dist/util/state.js +121 -0
  107. package/dist/util/state.js.map +1 -0
  108. package/package.json +1 -1
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';
@@ -21,7 +22,7 @@ function unknownSymbolText(query) {
21
22
  }
22
23
  export const TOOLS = [
23
24
  {
24
- name: 'graft_ask',
25
+ name: 'graft_find_code',
25
26
  description: 'Query the repo context graph in plain words. Returns ranked nodes with exact file:line spans and the relevant source inlined — usually the full answer, no file reads needed.',
26
27
  inputSchema: {
27
28
  type: 'object',
@@ -41,7 +42,7 @@ export const TOOLS = [
41
42
  },
42
43
  },
43
44
  {
44
- name: 'graft_skeleton',
45
+ name: 'graft_file_api',
45
46
  description: "Signatures-only view of one file — every definition's signature + line span, ~10× cheaper than reading the file ($0, no LLM).",
46
47
  inputSchema: {
47
48
  type: 'object',
@@ -52,12 +53,12 @@ export const TOOLS = [
52
53
  },
53
54
  },
54
55
  {
55
- name: 'graft_check',
56
+ name: 'graft_check_freshness',
56
57
  description: 'Report whether the committed graph is in sync with the code (drift check).',
57
58
  inputSchema: { type: 'object', properties: {} },
58
59
  },
59
60
  {
60
- name: 'graft_callers',
61
+ name: 'graft_trace_calls',
61
62
  description: 'Structural edges for a symbol, over call/reference/import/implements/extends ($0, no LLM). Defaults to direct callers (who depends on it). Set direction:"out" for callees (what it calls); set depth>1 (or depth:"all" for the full closure) to walk transitively for the full blast radius — every source that breaks if it changes. Run before a multi-file refactor to find ALL affected files.',
62
63
  inputSchema: {
63
64
  type: 'object',
@@ -75,7 +76,7 @@ export const TOOLS = [
75
76
  },
76
77
  },
77
78
  {
78
- name: 'graft_grep',
79
+ name: 'graft_find_all',
79
80
  description: 'Regex search over the graph\'s indexed files, hits grouped by innermost enclosing symbol and ranked by incoming-edge count (coupling) — which hit matters, not just where it is.',
80
81
  inputSchema: {
81
82
  type: 'object',
@@ -89,7 +90,7 @@ export const TOOLS = [
89
90
  },
90
91
  },
91
92
  {
92
- name: 'graft_map',
93
+ name: 'graft_repo_map',
93
94
  description: 'Token-budgeted repo orientation — directory clusters, per-directory hubs, and global hotspots computed purely from the wiring graph ($0, no LLM). Use this to get oriented in an unfamiliar repo before diving into files.',
94
95
  inputSchema: {
95
96
  type: 'object',
@@ -123,19 +124,19 @@ function renderMatches(direction, showDepth, matches, hitsFor) {
123
124
  * falls through to the normal single-graph path. */
124
125
  function callWorkspaceTool(root, dirOverride, name, args) {
125
126
  switch (name) {
126
- case 'graft_ask': {
127
+ case 'graft_find_code': {
127
128
  const query = String(args.query ?? '');
128
129
  if (!query)
129
- return { text: 'graft_ask requires a query', isError: true };
130
+ return { text: 'graft_find_code requires a query', isError: true };
130
131
  const limit = typeof args.limit === 'number' ? args.limit : 5;
131
132
  const inArg = typeof args.in === 'string' && args.in ? args.in : undefined;
132
133
  const r = federateAsk(root, dirOverride, query, { limit, source: true, full: args.full === true, in: inArg });
133
134
  return { text: formatAsk(r), isError: false };
134
135
  }
135
- case 'graft_callers': {
136
+ case 'graft_trace_calls': {
136
137
  const symbol = String(args.symbol ?? args.file ?? '');
137
138
  if (!symbol)
138
- return { text: 'graft_callers requires a symbol', isError: true };
139
+ return { text: 'graft_trace_calls requires a symbol', isError: true };
139
140
  const { text, found } = federateCallers(root, dirOverride, symbol, {
140
141
  direction: args.direction === 'out' ? 'out' : 'in',
141
142
  depth: typeof args.depth === 'number' && Number.isFinite(args.depth) ? args.depth : undefined,
@@ -143,10 +144,10 @@ function callWorkspaceTool(root, dirOverride, name, args) {
143
144
  });
144
145
  return { text, isError: !found };
145
146
  }
146
- case 'graft_grep': {
147
+ case 'graft_find_all': {
147
148
  const pattern = String(args.pattern ?? '');
148
149
  if (!pattern)
149
- return { text: 'graft_grep requires a pattern', isError: true };
150
+ return { text: 'graft_find_all requires a pattern', isError: true };
150
151
  const { result, coverage } = federateGrep(root, dirOverride, pattern, {
151
152
  ignoreCase: typeof args.ignore_case === 'boolean' ? args.ignore_case : undefined,
152
153
  fixed: typeof args.fixed === 'boolean' ? args.fixed : undefined,
@@ -154,11 +155,11 @@ function callWorkspaceTool(root, dirOverride, name, args) {
154
155
  const text = result.totalHits === 0 ? zeroHitNote(result) : formatGrepResult(result);
155
156
  return { text: coverage ? `${text}\n${coverage}` : text, isError: false };
156
157
  }
157
- case 'graft_map': {
158
+ case 'graft_repo_map': {
158
159
  const maxDirs = typeof args.max_dirs === 'number' && Number.isFinite(args.max_dirs) && args.max_dirs > 0 ? args.max_dirs : undefined;
159
160
  return { text: federateMap(root, dirOverride, { maxDirs }), isError: false };
160
161
  }
161
- case 'graft_check': {
162
+ case 'graft_check_freshness': {
162
163
  const { text } = federateCheck(root, dirOverride);
163
164
  return { text, isError: false };
164
165
  }
@@ -166,101 +167,140 @@ 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_freshness` answer about a graph it just fixed, i.e. always "OK". */
172
+ const NO_REFRESH_TOOLS = new Set(['graft_check_freshness']);
173
+ /**
174
+ * The pre-0.8.1 tool names, still accepted.
175
+ *
176
+ * The names were the reason for renaming: when a host defers graft's schemas it
177
+ * shows the model the *names alone* — no descriptions — so `graft_ask` had to
178
+ * compete with `Grep` on 9 characters of self-description. The new names say what
179
+ * they do. But a name is an API: skills, saved prompts, scripts and other people's
180
+ * notes reference the old ones, and silently 404-ing on them would be a worse
181
+ * outcome than an ugly name. Not advertised in {@link TOOLS} — the roster stays six
182
+ * — so this costs nothing in the payload and only ever rescues an old caller.
183
+ */
184
+ const TOOL_ALIASES = {
185
+ graft_ask: 'graft_find_code',
186
+ graft_grep: 'graft_find_all',
187
+ graft_callers: 'graft_trace_calls',
188
+ graft_skeleton: 'graft_file_api',
189
+ graft_map: 'graft_repo_map',
190
+ graft_check: 'graft_check_freshness',
191
+ };
192
+ /** Canonical name for a requested tool: itself, or what it was renamed to. */
193
+ export function canonicalToolName(name) {
194
+ return TOOL_ALIASES[name] ?? name;
195
+ }
196
+ export async function callTool(root, requestedName, args, dirOverride) {
170
197
  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 };
198
+ const name = canonicalToolName(requestedName);
199
+ const ws = readWorkspace(root, dirOverride);
200
+ // Freshness first: an answer that cites file:line has to be about the code as
201
+ // it is right now, including edits nobody has committed (or even saved through
202
+ // this agent). ~3ms when nothing moved; a structural, $0 rebuild when it did.
203
+ let note = null;
204
+ if (!NO_REFRESH_TOOLS.has(name)) {
205
+ const r = ws
206
+ ? await ensureFreshChildren(root, ws.children, { contextDir: dirOverride })
207
+ : await ensureFreshGraph(root, { contextDir: dirOverride });
208
+ note = refreshNote(r);
260
209
  }
210
+ const fed = ws ? callWorkspaceTool(root, dirOverride, name, args) : null;
211
+ const res = fed ?? callSingleTool(root, name, args, dirOverride);
212
+ return note ? { ...res, text: `${note}\n${res.text}` } : res;
261
213
  }
262
214
  catch (err) {
263
215
  return { text: err instanceof Error ? err.message : String(err), isError: true };
264
216
  }
265
217
  }
218
+ /** The single-graph path: every tool, answered from one repo's graph. */
219
+ function callSingleTool(root, name, args, dirOverride) {
220
+ switch (name) {
221
+ case 'graft_find_code': {
222
+ const query = String(args.query ?? '');
223
+ if (!query)
224
+ return { text: 'graft_find_code requires a query', isError: true };
225
+ const limit = typeof args.limit === 'number' ? args.limit : 5;
226
+ const engine = new Graft({ contextDir: dirOverride });
227
+ const inArg = typeof args.in === 'string' && args.in ? args.in : undefined;
228
+ const r = engine.ask(root, query, { limit, source: true, full: args.full === true, in: inArg });
229
+ return { text: formatAsk(r), isError: false };
230
+ }
231
+ case 'graft_file_api': {
232
+ const file = String(args.file ?? '');
233
+ if (!file)
234
+ return { text: 'graft_file_api requires a file', isError: true };
235
+ const r = skeleton(root, file, { contextDir: dirOverride });
236
+ return { text: formatSkeleton(r), isError: !r.entries.length && !!r.note };
237
+ }
238
+ case 'graft_check_freshness': {
239
+ const engine = new Graft({ contextDir: dirOverride });
240
+ const r = engine.check(root);
241
+ const g = engine.checkGraph(root);
242
+ const parts = [formatCheckReport(r)];
243
+ if (!g.missing)
244
+ parts.push(formatGraphCheckReport(g));
245
+ return { text: parts.join('\n\n'), isError: false };
246
+ }
247
+ case 'graft_trace_calls': {
248
+ // One tool covers callers (direction:in, the default), callees
249
+ // (direction:out), and blast radius (depth>1). edgeWalk handles the
250
+ // file-seed aggregation that the old graft_blast_radius did: for a
251
+ // file at depth>1 it walks the file node AND every symbol defined in
252
+ // it, so dependents that call into a symbol (targeting the SYMBOL id,
253
+ // never the FILE id) aren't silently dropped.
254
+ const symbol = String(args.symbol ?? args.file ?? '');
255
+ if (!symbol)
256
+ return { text: 'graft_trace_calls requires a symbol', isError: true };
257
+ const w = loadGraphCached(contextDirFor(root, dirOverride));
258
+ if (!w)
259
+ return { text: NO_GRAPH, isError: true };
260
+ const inOpt = typeof args.in === 'string' && args.in ? { in: args.in } : {};
261
+ const matches = resolveSymbol(w, symbol, inOpt);
262
+ if (matches.length === 0)
263
+ return { text: unknownSymbolText(symbol), isError: true };
264
+ const direction = args.direction === 'out' ? 'out' : 'in';
265
+ // `depth: "all"` (or a huge number) walks the full transitive closure —
266
+ // every connected source — terminating when no new node is reached.
267
+ const depth = args.depth === 'all' || args.depth === 'full'
268
+ ? Number.POSITIVE_INFINITY
269
+ : typeof args.depth === 'number' && Number.isFinite(args.depth) && args.depth >= 1
270
+ ? Math.floor(args.depth)
271
+ : 1;
272
+ const results = matches.map((m) => ({ symbol: m, hits: edgeWalk(w, m, direction, depth) }));
273
+ const byId = new Map(results.map((r) => [r.symbol.id, r.hits]));
274
+ const body = renderMatches(direction, depth > 1, matches, (m) => byId.get(m.id) ?? []);
275
+ const text = body + savingsFooter(body, callersSavings(w, results));
276
+ return { text, isError: false };
277
+ }
278
+ case 'graft_find_all': {
279
+ const pattern = String(args.pattern ?? '');
280
+ if (!pattern)
281
+ return { text: 'graft_find_all requires a pattern', isError: true };
282
+ const w = loadGraphCached(contextDirFor(root, dirOverride));
283
+ if (!w)
284
+ return { text: NO_GRAPH, isError: true };
285
+ const result = grepGraph(w, root, pattern, {
286
+ ignoreCase: typeof args.ignore_case === 'boolean' ? args.ignore_case : undefined,
287
+ fixed: typeof args.fixed === 'boolean' ? args.fixed : undefined,
288
+ in: typeof args.in === 'string' && args.in ? args.in : undefined,
289
+ });
290
+ if (result.totalHits === 0)
291
+ return { text: zeroHitNote(result), isError: false };
292
+ return { text: formatGrepResult(result), isError: false };
293
+ }
294
+ case 'graft_repo_map': {
295
+ const w = loadGraphCached(contextDirFor(root, dirOverride));
296
+ if (!w)
297
+ return { text: NO_GRAPH, isError: true };
298
+ const maxDirs = typeof args.max_dirs === 'number' && Number.isFinite(args.max_dirs) && args.max_dirs > 0 ? args.max_dirs : undefined;
299
+ const map = buildRepoMap(w, { maxDirs });
300
+ return { text: formatRepoMap(map), isError: false };
301
+ }
302
+ default:
303
+ return { text: `unknown tool: ${name}`, isError: true };
304
+ }
305
+ }
266
306
  //# 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":"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"}
@@ -4,7 +4,7 @@
4
4
  * Kept out of cli.ts (argument wiring only) and out of grep.ts (pure core,
5
5
  * unit-testable against hand-built fixture graphs without touching a real
6
6
  * repo root) — same split as traverse.ts/traverse-cli.ts. `formatGrepResult`
7
- * is exported so `graft_grep` in `src/mcp/tools.ts` renders the identical
7
+ * is exported so `graft_find_all` in `src/mcp/tools.ts` renders the identical
8
8
  * report, rather than re-implementing it.
9
9
  */
10
10
  import { resolve } from "node:path";
@@ -7,7 +7,7 @@
7
7
  *
8
8
  * Pure I/O + regex, no CLI/MCP concerns: `grep-cli.ts` formats this into
9
9
  * human text and wires the CLI command; `mcp/tools.ts` renders the same
10
- * shape for the `graft_grep` tool.
10
+ * shape for the `graft_find_all` tool.
11
11
  */
12
12
  import { readFileSync } from "node:fs";
13
13
  import { join } from "node:path";
@@ -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.2",
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",