@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.
- package/README.md +45 -15
- package/dist/ask/ask.js +1 -1
- package/dist/ask/ask.js.map +1 -1
- package/dist/claude/format.d.ts +40 -13
- package/dist/claude/format.d.ts.map +1 -1
- package/dist/claude/format.js +54 -15
- package/dist/claude/format.js.map +1 -1
- package/dist/claude/hooks.d.ts +15 -0
- package/dist/claude/hooks.d.ts.map +1 -1
- package/dist/claude/hooks.js +52 -3
- package/dist/claude/hooks.js.map +1 -1
- package/dist/claude/init.d.ts +17 -0
- package/dist/claude/init.d.ts.map +1 -1
- package/dist/claude/init.js +47 -21
- package/dist/claude/init.js.map +1 -1
- package/dist/claude/settings-merge.d.ts.map +1 -1
- package/dist/claude/settings-merge.js +19 -2
- package/dist/claude/settings-merge.js.map +1 -1
- package/dist/claude/skill-template.d.ts.map +1 -1
- package/dist/claude/skill-template.js +13 -5
- package/dist/claude/skill-template.js.map +1 -1
- package/dist/claude/state.d.ts +5 -20
- package/dist/claude/state.d.ts.map +1 -1
- package/dist/claude/state.js +10 -73
- package/dist/claude/state.js.map +1 -1
- package/dist/cli-picker.d.ts +60 -0
- package/dist/cli-picker.d.ts.map +1 -0
- package/dist/cli-picker.js +268 -0
- package/dist/cli-picker.js.map +1 -0
- package/dist/cli.js +101 -12
- package/dist/cli.js.map +1 -1
- package/dist/context/node-file.d.ts +21 -0
- package/dist/context/node-file.d.ts.map +1 -1
- package/dist/context/node-file.js +63 -1
- package/dist/context/node-file.js.map +1 -1
- package/dist/engine.d.ts +2 -0
- package/dist/engine.d.ts.map +1 -1
- package/dist/engine.js +1 -0
- package/dist/engine.js.map +1 -1
- package/dist/graph/build.d.ts +13 -2
- package/dist/graph/build.d.ts.map +1 -1
- package/dist/graph/build.js +98 -20
- package/dist/graph/build.js.map +1 -1
- package/dist/graph/cards.d.ts.map +1 -1
- package/dist/graph/cards.js +8 -0
- package/dist/graph/cards.js.map +1 -1
- package/dist/graph/extract-cache.d.ts +96 -0
- package/dist/graph/extract-cache.d.ts.map +1 -0
- package/dist/graph/extract-cache.js +199 -0
- package/dist/graph/extract-cache.js.map +1 -0
- package/dist/graph/fingerprint.d.ts +70 -0
- package/dist/graph/fingerprint.d.ts.map +1 -0
- package/dist/graph/fingerprint.js +147 -0
- package/dist/graph/fingerprint.js.map +1 -0
- package/dist/graph/load.d.ts +11 -0
- package/dist/graph/load.d.ts.map +1 -1
- package/dist/graph/load.js +14 -0
- package/dist/graph/load.js.map +1 -1
- package/dist/graph/refresh.d.ts +49 -0
- package/dist/graph/refresh.d.ts.map +1 -0
- package/dist/graph/refresh.js +202 -0
- package/dist/graph/refresh.js.map +1 -0
- package/dist/graph/source-files.d.ts +18 -0
- package/dist/graph/source-files.d.ts.map +1 -0
- package/dist/graph/source-files.js +36 -0
- package/dist/graph/source-files.js.map +1 -0
- package/dist/graph/traverse-cli.d.ts +1 -1
- package/dist/graph/traverse-cli.js +2 -2
- package/dist/graph/traverse.d.ts +2 -2
- package/dist/graph/traverse.js +1 -1
- package/dist/hosts/codex-hooks.d.ts +8 -0
- package/dist/hosts/codex-hooks.d.ts.map +1 -1
- package/dist/hosts/codex-hooks.js +27 -4
- package/dist/hosts/codex-hooks.js.map +1 -1
- package/dist/hosts/init.d.ts +2 -0
- package/dist/hosts/init.d.ts.map +1 -1
- package/dist/hosts/init.js +5 -2
- package/dist/hosts/init.js.map +1 -1
- package/dist/hosts/mcp-config.d.ts +29 -1
- package/dist/hosts/mcp-config.d.ts.map +1 -1
- package/dist/hosts/mcp-config.js +77 -10
- package/dist/hosts/mcp-config.js.map +1 -1
- package/dist/hosts/plan.d.ts +32 -0
- package/dist/hosts/plan.d.ts.map +1 -0
- package/dist/hosts/plan.js +67 -0
- package/dist/hosts/plan.js.map +1 -0
- package/dist/hosts/registry.d.ts.map +1 -1
- package/dist/hosts/registry.js +9 -0
- package/dist/hosts/registry.js.map +1 -1
- package/dist/mcp/instructions.d.ts +29 -0
- package/dist/mcp/instructions.d.ts.map +1 -0
- package/dist/mcp/instructions.js +55 -0
- package/dist/mcp/instructions.js.map +1 -0
- package/dist/mcp/server.d.ts +6 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +15 -4
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/tools.d.ts +4 -2
- package/dist/mcp/tools.d.ts.map +1 -1
- package/dist/mcp/tools.js +144 -104
- package/dist/mcp/tools.js.map +1 -1
- package/dist/search/grep-cli.js +1 -1
- package/dist/search/grep.js +1 -1
- package/dist/util/state.d.ts +45 -0
- package/dist/util/state.d.ts.map +1 -0
- package/dist/util/state.js +121 -0
- package/dist/util/state.js.map +1 -0
- 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: '
|
|
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: '
|
|
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: '
|
|
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: '
|
|
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: '
|
|
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: '
|
|
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 '
|
|
127
|
+
case 'graft_find_code': {
|
|
127
128
|
const query = String(args.query ?? '');
|
|
128
129
|
if (!query)
|
|
129
|
-
return { text: '
|
|
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 '
|
|
136
|
+
case 'graft_trace_calls': {
|
|
136
137
|
const symbol = String(args.symbol ?? args.file ?? '');
|
|
137
138
|
if (!symbol)
|
|
138
|
-
return { text: '
|
|
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 '
|
|
147
|
+
case 'graft_find_all': {
|
|
147
148
|
const pattern = String(args.pattern ?? '');
|
|
148
149
|
if (!pattern)
|
|
149
|
-
return { text: '
|
|
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 '
|
|
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 '
|
|
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
|
-
|
|
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
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
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
|
package/dist/mcp/tools.js.map
CHANGED
|
@@ -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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"}
|
package/dist/search/grep-cli.js
CHANGED
|
@@ -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 `
|
|
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";
|
package/dist/search/grep.js
CHANGED
|
@@ -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 `
|
|
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":"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"}
|
package/package.json
CHANGED