@graphpilot-oss/graphpilot 0.0.1 → 1.0.0

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 (123) hide show
  1. package/CHANGELOG.md +72 -126
  2. package/README.md +290 -102
  3. package/dist/cli.js +41 -1
  4. package/dist/cli.js.map +1 -1
  5. package/dist/edges.js +22 -11
  6. package/dist/edges.js.map +1 -1
  7. package/dist/indexer.js +3 -3
  8. package/dist/indexer.js.map +1 -1
  9. package/dist/init.d.ts +28 -0
  10. package/dist/init.js +112 -0
  11. package/dist/init.js.map +1 -0
  12. package/dist/interactions.d.ts +5 -4
  13. package/dist/interactions.js +0 -0
  14. package/dist/interactions.js.map +1 -1
  15. package/dist/mcp.js +119 -90
  16. package/dist/mcp.js.map +1 -1
  17. package/dist/repo-resolve.d.ts +47 -0
  18. package/dist/repo-resolve.js +195 -0
  19. package/dist/repo-resolve.js.map +1 -0
  20. package/dist/storage.js +10 -1
  21. package/dist/storage.js.map +1 -1
  22. package/dist/symbols.js +26 -2
  23. package/dist/symbols.js.map +1 -1
  24. package/dist/validation.js +30 -4
  25. package/dist/validation.js.map +1 -1
  26. package/dist/validators.d.ts +1 -5
  27. package/dist/validators.js +0 -11
  28. package/dist/validators.js.map +1 -1
  29. package/dist/watcher.d.ts +10 -0
  30. package/dist/watcher.js +70 -7
  31. package/dist/watcher.js.map +1 -1
  32. package/examples/README.md +105 -0
  33. package/examples/claude-code/README.md +125 -0
  34. package/examples/claude-code/claude-routing.md +102 -0
  35. package/examples/claude-code/claude_config.json +8 -0
  36. package/examples/cline/.clinerules +39 -0
  37. package/examples/cline/README.md +104 -0
  38. package/examples/cline/cline_mcp_settings.json +10 -0
  39. package/examples/continue/.continuerules +39 -0
  40. package/examples/continue/README.md +98 -0
  41. package/examples/continue/config.json +13 -0
  42. package/examples/cursor/.cursorrules +39 -0
  43. package/examples/cursor/README.md +98 -0
  44. package/examples/cursor/mcp.json +11 -0
  45. package/examples/windsurf/.windsurfrules +39 -0
  46. package/examples/windsurf/README.md +85 -0
  47. package/examples/windsurf/mcp_config.json +8 -0
  48. package/package.json +14 -4
  49. package/.editorconfig +0 -15
  50. package/.github/CODEOWNERS +0 -22
  51. package/.github/FUNDING.yml +0 -1
  52. package/.github/ISSUE_TEMPLATE/bug_report.md +0 -33
  53. package/.github/ISSUE_TEMPLATE/config.yml +0 -5
  54. package/.github/ISSUE_TEMPLATE/feature_request.md +0 -23
  55. package/.github/PULL_REQUEST_TEMPLATE.md +0 -19
  56. package/.github/dependabot.yml +0 -15
  57. package/.github/workflows/ci.yml +0 -62
  58. package/.github/workflows/release.yml +0 -50
  59. package/.prettierignore +0 -19
  60. package/.prettierrc.json +0 -20
  61. package/CODE_OF_CONDUCT.md +0 -83
  62. package/CONTRIBUTING.md +0 -111
  63. package/bench/README.md +0 -544
  64. package/bench/results/agent-tier-2026-05-22.md +0 -28
  65. package/bench/results/agent-tier-summary.md +0 -44
  66. package/bench/results/baseline-tier-2026-05-22.md +0 -23
  67. package/bench/results/baseline.json +0 -810
  68. package/bench/results/baseline.md +0 -28
  69. package/bench/run-agent-tier-automated.ts +0 -234
  70. package/bench/run-agent-tier.md +0 -125
  71. package/bench/run-baseline-tier.ts +0 -200
  72. package/bench/run.ts +0 -210
  73. package/bench/runner-baseline.ts +0 -177
  74. package/bench/runner-graphpilot.ts +0 -131
  75. package/bench/score-agent-tier.ts +0 -191
  76. package/bench/score.ts +0 -59
  77. package/bench/tasks.ts +0 -236
  78. package/dist/provenance.d.ts +0 -74
  79. package/dist/provenance.js +0 -95
  80. package/dist/provenance.js.map +0 -1
  81. package/docs/architecture.md +0 -311
  82. package/docs/limitations.md +0 -156
  83. package/docs/mcp-setup.md +0 -231
  84. package/docs/quickstart.md +0 -202
  85. package/eslint.config.js +0 -148
  86. package/lefthook.yml +0 -81
  87. package/pnpm-workspace.yaml +0 -6
  88. package/scripts/smoke-stdio.mjs +0 -97
  89. package/src/cli.ts +0 -171
  90. package/src/edges.ts +0 -202
  91. package/src/git.ts +0 -255
  92. package/src/graph-schema.ts +0 -229
  93. package/src/impact.ts +0 -218
  94. package/src/indexer.ts +0 -152
  95. package/src/interactions.ts +0 -0
  96. package/src/mcp.ts +0 -652
  97. package/src/parser.ts +0 -138
  98. package/src/provenance.ts +0 -115
  99. package/src/query.ts +0 -148
  100. package/src/redact.ts +0 -122
  101. package/src/storage.ts +0 -115
  102. package/src/symbols.ts +0 -173
  103. package/src/validation.ts +0 -69
  104. package/src/validators.ts +0 -253
  105. package/src/watcher.ts +0 -383
  106. package/tests/edges.test.ts +0 -175
  107. package/tests/fixtures/sample.ts +0 -32
  108. package/tests/git.test.ts +0 -303
  109. package/tests/graph-schema.test.ts +0 -321
  110. package/tests/impact.test.ts +0 -454
  111. package/tests/interactions.test.ts +0 -180
  112. package/tests/lint-policy.test.ts +0 -106
  113. package/tests/mcp-stdio.test.ts +0 -171
  114. package/tests/mcp.test.ts +0 -335
  115. package/tests/parser.test.ts +0 -31
  116. package/tests/provenance.test.ts +0 -132
  117. package/tests/query.test.ts +0 -160
  118. package/tests/redact.test.ts +0 -167
  119. package/tests/security.test.ts +0 -144
  120. package/tests/symbols.test.ts +0 -78
  121. package/tests/validators.test.ts +0 -193
  122. package/tests/watcher.test.ts +0 -250
  123. package/tsconfig.json +0 -18
package/dist/watcher.js CHANGED
@@ -16,12 +16,12 @@
16
16
  * clean for any agent that's also reading the graph over MCP.
17
17
  */
18
18
  import chokidar from 'chokidar';
19
- import { realpathSync } from 'node:fs';
20
- import { resolve, relative } from 'node:path';
19
+ import { realpathSync, statSync } from 'node:fs';
20
+ import { resolve, relative, sep } from 'node:path';
21
21
  import { parseFile } from './parser.js';
22
22
  import { extractSymbols } from './symbols.js';
23
23
  import { extractRawCalls, resolveCallEdges } from './edges.js';
24
- import { saveGraph, loadGraph, repoIdFor } from './storage.js';
24
+ import { saveGraph, loadGraph, repoIdFor, graphPath } from './storage.js';
25
25
  import { readGitInfo } from './git.js';
26
26
  import { indexDirectory } from './indexer.js';
27
27
  import { validateRootPath, MAX_FILES_PER_INDEX } from './validation.js';
@@ -63,6 +63,9 @@ export class GraphWatcher {
63
63
  watcher = null;
64
64
  log;
65
65
  awaitStabilityMs;
66
+ /** mtime + size of graph.json after the last save this process performed. */
67
+ lastSavedMtimeMs = 0;
68
+ lastSavedSizeBytes = 0;
66
69
  /**
67
70
  * Serializes the update queue so chokidar bursts (multiple `change`
68
71
  * events in 200ms) don't race each other into a torn graph.
@@ -84,6 +87,14 @@ export class GraphWatcher {
84
87
  if (loaded) {
85
88
  this.graph = loaded;
86
89
  this.rawCalls = this.deriveRawCalls(loaded.edges);
90
+ try {
91
+ const st = statSync(graphPath(this.absRoot));
92
+ this.lastSavedMtimeMs = st.mtimeMs;
93
+ this.lastSavedSizeBytes = st.size;
94
+ }
95
+ catch {
96
+ // best-effort baseline
97
+ }
87
98
  }
88
99
  else {
89
100
  // No existing index — caller is expected to `start()`, which will
@@ -142,10 +153,15 @@ export class GraphWatcher {
142
153
  async applyUpdate(absFilePath, kind = 'change') {
143
154
  if (!isWatchableFile(absFilePath))
144
155
  return null;
145
- if (!absFilePath.startsWith(this.absRoot))
156
+ if (absFilePath !== this.absRoot && !absFilePath.startsWith(this.absRoot + sep))
146
157
  return null;
158
+ // Detect mtime drift — reload before computing the delta so we apply
159
+ // the edit on top of the freshest known graph, not a stale in-memory one.
160
+ this.reloadIfDrifted();
147
161
  const start = Date.now();
148
- const rel = relative(this.absRoot, absFilePath);
162
+ // Normalize to POSIX separators so paths stored in graph.json are always
163
+ // forward-slash on every OS (same convention as indexer.ts).
164
+ const rel = relative(this.absRoot, absFilePath).split(sep).join('/');
149
165
  const symbolsBefore = this.graph.symbols.length;
150
166
  const edgesBefore = this.graph.edges.length;
151
167
  // 1. Remove existing symbols + raw calls from this file
@@ -186,10 +202,11 @@ export class GraphWatcher {
186
202
  }
187
203
  /** Drop everything that came from a deleted file. */
188
204
  async applyDeletion(absFilePath) {
189
- if (!absFilePath.startsWith(this.absRoot))
205
+ if (absFilePath !== this.absRoot && !absFilePath.startsWith(this.absRoot + sep))
190
206
  return null;
207
+ this.reloadIfDrifted();
191
208
  const start = Date.now();
192
- const rel = relative(this.absRoot, absFilePath);
209
+ const rel = relative(this.absRoot, absFilePath).split(sep).join('/');
193
210
  const symbolsBefore = this.graph.symbols.length;
194
211
  const edgesBefore = this.graph.edges.length;
195
212
  const keptSymbols = this.graph.symbols.filter((s) => s.file !== rel);
@@ -226,6 +243,14 @@ export class GraphWatcher {
226
243
  };
227
244
  this.rawCalls = this.deriveRawCalls(result.edges);
228
245
  saveGraph(this.graph);
246
+ try {
247
+ const st = statSync(graphPath(this.absRoot));
248
+ this.lastSavedMtimeMs = st.mtimeMs;
249
+ this.lastSavedSizeBytes = st.size;
250
+ }
251
+ catch {
252
+ // best-effort
253
+ }
229
254
  }
230
255
  /** Read-only accessor, mainly for tests + diagnostics. */
231
256
  get currentGraph() {
@@ -251,6 +276,36 @@ export class GraphWatcher {
251
276
  async handleDeletion(abs) {
252
277
  await this.applyDeletion(abs);
253
278
  }
279
+ /**
280
+ * If graph.json was written by another process since we last saved, reload
281
+ * it into memory so the next delta is applied on top of the fresh state.
282
+ * This handles gp_index from an agent, a parallel CLI re-index, or a
283
+ * git checkout while watch is running.
284
+ */
285
+ reloadIfDrifted() {
286
+ if (this.lastSavedMtimeMs === 0)
287
+ return; // no baseline yet
288
+ try {
289
+ const st = statSync(graphPath(this.absRoot));
290
+ // Check both mtime and size: mtime alone has 1-second resolution on some
291
+ // Windows filesystems (FAT/exFAT, some container mounts), so a rapid
292
+ // external write within the same second would not be detected. Adding the
293
+ // size check catches content changes even when the clock doesn't advance.
294
+ if (st.mtimeMs === this.lastSavedMtimeMs && st.size === this.lastSavedSizeBytes)
295
+ return;
296
+ const fresh = loadGraph(this.absRoot);
297
+ if (fresh) {
298
+ this.graph = fresh;
299
+ this.rawCalls = this.deriveRawCalls(fresh.edges);
300
+ this.lastSavedMtimeMs = st.mtimeMs;
301
+ this.lastSavedSizeBytes = st.size;
302
+ this.log(`Detected external re-index (${fresh.symbolCount} symbols); reloaded before applying delta.`);
303
+ }
304
+ }
305
+ catch {
306
+ // best-effort — if statSync fails the file is gone; next save will recreate it
307
+ }
308
+ }
254
309
  /**
255
310
  * Apply a new (symbols, rawCalls) state: re-resolve edges, update the
256
311
  * graph object, save atomically.
@@ -278,6 +333,14 @@ export class GraphWatcher {
278
333
  };
279
334
  this.rawCalls = rawCalls;
280
335
  saveGraph(this.graph);
336
+ try {
337
+ const st = statSync(graphPath(this.absRoot));
338
+ this.lastSavedMtimeMs = st.mtimeMs;
339
+ this.lastSavedSizeBytes = st.size;
340
+ }
341
+ catch {
342
+ // best-effort
343
+ }
281
344
  }
282
345
  finalize(file, kind, symbolsBefore, edgesBefore, start) {
283
346
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"watcher.js","sourceRoot":"","sources":["../src/watcher.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"watcher.js","sourceRoot":"","sources":["../src/watcher.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,105 @@
1
+ # GraphPilot — Editor & Agent Examples
2
+
3
+ Ready-to-paste configurations for every MCP-compatible coding agent we've tested.
4
+
5
+ Each subfolder follows the same shape:
6
+
7
+ - `README.md` — step-by-step install for that client (the file you're skimming this for)
8
+ - A sample config file (`.claude.json`, `mcp.json`, `cline_mcp_settings.json`, etc.) you can copy verbatim and edit the path in
9
+ - Where the client supports it: a `CLAUDE.md` / `.cursorrules` / equivalent routing template that nudges the agent to use GraphPilot tools automatically
10
+
11
+ ## Pick your client
12
+
13
+ | Client | Folder | Config file location |
14
+ | --------------- | ------------------------------------------- | --------------------------------------------------------------------------------------------------------------- |
15
+ | Claude Code | [`claude-code/`](claude-code/) | `~/.claude.json` |
16
+ | Cursor | [`cursor/`](cursor/) | `~/.cursor/mcp.json` |
17
+ | Cline (VS Code) | [`cline/`](cline/) | `~/Library/Application Support/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json` |
18
+ | Windsurf | [`windsurf/`](windsurf/) | `~/.codeium/windsurf/mcp_config.json` |
19
+ | Continue.dev | [`continue/`](continue/) | `~/.continue/config.json` |
20
+ | Anything else | [`docs/mcp-setup.md`](../docs/mcp-setup.md) | n/a — generic stdio MCP instructions |
21
+
22
+ ## Two ways GraphPilot can be launched
23
+
24
+ Every example shows both forms. Pick whichever matches how you installed GraphPilot.
25
+
26
+ ### A) Local build (pre-npm, contributors, dev mode)
27
+
28
+ ```bash
29
+ git clone https://github.com/graphpilot-oss/graphpilot.git
30
+ cd graphpilot && pnpm install && pnpm build
31
+ ```
32
+
33
+ Then point your client at:
34
+
35
+ ```jsonc
36
+ {
37
+ "command": "node",
38
+ "args": ["/absolute/path/to/graphpilot/dist/cli.js", "mcp"],
39
+ }
40
+ ```
41
+
42
+ > **Replace `/absolute/path/to/graphpilot/`** with the real path on your machine. Tilde (`~`) is _not_ expanded by most MCP clients — use the full absolute path.
43
+
44
+ ### B) Once v0.1.0 ships to npm
45
+
46
+ ```jsonc
47
+ {
48
+ "command": "npx",
49
+ "args": ["graphpilot", "mcp"],
50
+ }
51
+ ```
52
+
53
+ Or install globally and reference by name:
54
+
55
+ ```bash
56
+ npm install -g @graphpilot-oss/graphpilot
57
+ ```
58
+
59
+ ## Cross-platform notes
60
+
61
+ | Platform | Path style |
62
+ | -------- | ------------------------------------------------------------------------------- |
63
+ | macOS | `/Users/<you>/code/graphpilot/dist/cli.js` |
64
+ | Linux | `/home/<you>/code/graphpilot/dist/cli.js` |
65
+ | Windows | `C:\\Users\\<you>\\code\\graphpilot\\dist\\cli.js` (escape backslashes in JSON) |
66
+
67
+ On Windows in particular, **use double-backslashes in JSON paths** or use forward slashes — both work, single backslashes don't.
68
+
69
+ ## Verifying the connection
70
+
71
+ After editing the config and **fully restarting** the client (quitting completely, not just closing the window), trigger the client's MCP listing:
72
+
73
+ - **Claude Code:** type `/mcp` in chat
74
+ - **Cursor:** Settings → MCP
75
+ - **Cline:** the Cline panel → MCP Servers
76
+ - **Windsurf:** Cascade panel → MCP tools
77
+ - **Continue:** Settings → MCP Servers
78
+
79
+ You should see `graphpilot` with **4 tools** (`gp_index`, `gp_recall`, `gp_callers`, `gp_impact`). If not, see [`docs/mcp-setup.md`](../docs/mcp-setup.md#troubleshooting).
80
+
81
+ ## Indexing your first repo
82
+
83
+ Once the MCP server is connected, ask the agent to index your project — or run it directly:
84
+
85
+ ```bash
86
+ node /abs/path/to/graphpilot/dist/cli.js index /path/to/your/repo
87
+ ```
88
+
89
+ Then keep the index fresh as you edit:
90
+
91
+ ```bash
92
+ node /abs/path/to/graphpilot/dist/cli.js watch /path/to/your/repo
93
+ ```
94
+
95
+ Watch mode produces sub-10 ms incremental updates on every save. The on-disk `graph.json` is rewritten atomically — the agent always sees a consistent view, even mid-edit.
96
+
97
+ ## End-to-end smoke test
98
+
99
+ From inside the agent:
100
+
101
+ ```text
102
+ Use graphpilot's gp_recall tool to list symbols in this repo.
103
+ ```
104
+
105
+ If the response includes symbol results — the wire is healthy.
@@ -0,0 +1,125 @@
1
+ # Claude Code (Anthropic) + GraphPilot
2
+
3
+ Step-by-step install of GraphPilot as an MCP server inside Claude Code.
4
+
5
+ ## 1. Build GraphPilot
6
+
7
+ ```bash
8
+ git clone https://github.com/graphpilot-oss/graphpilot.git
9
+ cd graphpilot && pnpm install && pnpm build
10
+ ```
11
+
12
+ The compiled CLI lands at `dist/cli.js`. Verify:
13
+
14
+ ```bash
15
+ node dist/cli.js --help
16
+ ```
17
+
18
+ ## 2. Edit `~/.claude.json`
19
+
20
+ Create the file if it doesn't exist. Add the `mcpServers` block:
21
+
22
+ ```jsonc
23
+ {
24
+ "mcpServers": {
25
+ "graphpilot": {
26
+ "command": "node",
27
+ "args": ["/absolute/path/to/graphpilot/dist/cli.js", "mcp"],
28
+ },
29
+ },
30
+ }
31
+ ```
32
+
33
+ A copy-paste-ready sample is in [`claude_config.json`](./claude_config.json). Replace `/absolute/path/to/graphpilot/` with the real path on your machine.
34
+
35
+ Once v0.1.0 ships to npm, you can simplify to:
36
+
37
+ ```jsonc
38
+ {
39
+ "mcpServers": {
40
+ "graphpilot": {
41
+ "command": "npx",
42
+ "args": ["graphpilot", "mcp"],
43
+ },
44
+ },
45
+ }
46
+ ```
47
+
48
+ ## 3. Fully restart Claude Code
49
+
50
+ Quit completely — don't just close the window. `~/.claude.json` is read on launch only.
51
+
52
+ ## 4. Verify the wire
53
+
54
+ In any Claude Code session, type:
55
+
56
+ ```text
57
+ /mcp
58
+ ```
59
+
60
+ You should see:
61
+
62
+ ```
63
+ graphpilot
64
+ 4 tools: gp_index, gp_recall, gp_callers, gp_impact
65
+ ```
66
+
67
+ If the server doesn't appear, run `node /abs/path/to/graphpilot/dist/cli.js mcp` in a terminal and check stderr for the error — most config bugs surface immediately.
68
+
69
+ ## 5. Index a repo
70
+
71
+ From the terminal of any TS/JS project:
72
+
73
+ ```bash
74
+ node /abs/path/to/graphpilot/dist/cli.js index .
75
+ ```
76
+
77
+ Or ask Claude:
78
+
79
+ ```text
80
+ Use graphpilot's gp_index tool on this repo.
81
+ ```
82
+
83
+ ## 6. Make Claude reach for GraphPilot automatically
84
+
85
+ Copy [`CLAUDE.md`](./CLAUDE.md) (the routing template in this folder) into the **root of the repo you indexed**. Restart Claude one more time. From that point on, structural questions route to GraphPilot without you having to say _"use graphpilot to…"_.
86
+
87
+ Try:
88
+
89
+ ```text
90
+ Who calls authenticate in this repo?
91
+
92
+ What breaks if I rename parseFile?
93
+
94
+ Find every function whose name contains 'parse'.
95
+ ```
96
+
97
+ You should see a `Calling graphpilot/gp_*` line in the response — that's the tool firing.
98
+
99
+ ## 7. Keep the index fresh (optional)
100
+
101
+ In a side terminal:
102
+
103
+ ```bash
104
+ node /abs/path/to/graphpilot/dist/cli.js watch /path/to/your/repo
105
+ ```
106
+
107
+ Sub-10 ms incremental updates on every save. Ctrl+C to stop.
108
+
109
+ ## Troubleshooting
110
+
111
+ | Symptom | Fix |
112
+ | ----------------------------------------- | ------------------------------------------------------------------------------------------------------------- |
113
+ | `/mcp` doesn't list `graphpilot` | Edits to `~/.claude.json` don't hot-reload. Fully quit Claude Code and relaunch. |
114
+ | Tools list but every call says "no index" | Path mismatch — pass an explicit `path: "/abs/repo"` argument, or index from the same `cwd` Claude uses. |
115
+ | `pnpm install` fails on native modules | `pnpm approve-builds --all && pnpm rebuild`. On Node 23+, drop to Node 22 LTS — tree-sitter is finicky on 23. |
116
+
117
+ Anything not listed: [open an issue](https://github.com/graphpilot-oss/graphpilot/issues) with the stderr from `node dist/cli.js mcp`.
118
+
119
+ ## Files in this folder
120
+
121
+ | File | Purpose |
122
+ | -------------------------------------------- | ------------------------------------------------------------------------------------------ |
123
+ | [`README.md`](./README.md) | This walkthrough |
124
+ | [`claude_config.json`](./claude_config.json) | Sample `~/.claude.json` content — copy the `mcpServers` block into yours |
125
+ | [`CLAUDE.md`](./CLAUDE.md) | Drop-in routing template — copy to your indexed repo's root so Claude auto-uses GraphPilot |
@@ -0,0 +1,102 @@
1
+ # GraphPilot + Claude Code
2
+
3
+ This routing template directs structural code questions to the `graphpilot` MCP server instead of grep/LSP, unlocking the core benefits: branch-aware differential analysis, evidence anchors, and single-call blast-radius computation.
4
+
5
+ ## Setup
6
+
7
+ 1. Install GraphPilot locally:
8
+
9
+ ```bash
10
+ git clone https://github.com/graphpilot-oss/graphpilot.git
11
+ cd graphpilot && pnpm install && pnpm build
12
+ ```
13
+
14
+ 2. Index your repo:
15
+
16
+ ```bash
17
+ node dist/cli.js index /path/to/your/repo
18
+ node dist/cli.js watch /path/to/your/repo & # keeps index fresh
19
+ ```
20
+
21
+ 3. Configure Claude Code MCP server (in `~/.claude.json`):
22
+
23
+ ```json
24
+ {
25
+ "mcpServers": {
26
+ "graphpilot": {
27
+ "command": "node",
28
+ "args": ["/absolute/path/to/graphpilot/dist/cli.js", "mcp"]
29
+ }
30
+ }
31
+ }
32
+ ```
33
+
34
+ 4. Copy this file into your repo root (or a `.claude/` dir).
35
+
36
+ ## Routing rules
37
+
38
+ **For "who calls X?" questions:**
39
+
40
+ - Use `gp_callers` instead of grep / LSP.
41
+ - Single call returns both direct + transitive callers with evidence anchors.
42
+ - Example: _"What functions call `validateUser`?"_ → `gp_callers(validateUser)`
43
+
44
+ **For "what breaks if I rename/delete X?" questions:**
45
+
46
+ - Use `gp_impact` instead of composing grep + git.
47
+ - Returns direct callers + transitive callers + tests affected + public-API flag.
48
+ - Single call, no chaining.
49
+ - Example: _"What breaks if I rename `parseFile`?"_ → `gp_impact(parseFile)`
50
+
51
+ **For "what does my PR touch?" (diff-scoped refactors):**
52
+
53
+ - Use `gp_impact({since: 'main'})` to filter the blast radius to only your branch.
54
+ - Cuts noise: only callers in files _you actually changed_ are returned.
55
+ - Example: _"On this feature branch, if I rename `fooHelper`, which of my changed files will break?"_ → `gp_impact(fooHelper, {since: 'main'})`
56
+
57
+ **For "find all functions matching a pattern:"**
58
+
59
+ - Use `gp_recall` for exact or substring search.
60
+ - Fast, structural, no false positives from comments.
61
+ - Example: _"List every function whose name contains 'parse'"_ → `gp_recall({kind: 'function', name: 'parse'})`
62
+
63
+ **For "enumerate all X of kind Y:"**
64
+
65
+ - Use `gp_recall` with a kind filter.
66
+ - Example: _"List every TypeScript interface"_ → `gp_recall({kind: 'interface'})`
67
+
68
+ **Fallback: grep or text search:**
69
+
70
+ - Use grep only for string-literal searches (constants, error messages, comments).
71
+ - GraphPilot doesn't index text content, only structure.
72
+ - Example: _"Find every place `MAX_FILE_SIZE` is mentioned"_ → grep
73
+
74
+ ## Evidence anchors
75
+
76
+ Every `gp_*` tool response includes `file:line @ sha` citations. Example output:
77
+
78
+ ```
79
+ 1. analyzeImpact (function) src/impact.ts:168 @ ab12cd3
80
+ export function analyzeImpact(idx: GraphIndex, ...): ImpactResult | null
81
+ ```
82
+
83
+ When citing results to your user, include these anchors verbatim. They're verifiable: paste `src/impact.ts:168` into your editor's goto-line command and the code will match the quoted excerpt.
84
+
85
+ **Why it matters:** If a tool ever hallucinated a symbol or a caller, you'd spot it instantly by jumping to the file. No more "the tool said this exists but I can't find it" dead ends.
86
+
87
+ ## Scope & limitations
88
+
89
+ GraphPilot v0.1 indexes **TypeScript/JavaScript only**. For Python/Rust/Go repos, fall back to grep or your IDE's LSP.
90
+
91
+ - **Fast:** sub-second recall on repos up to ~100k LOC.
92
+ - **Deterministic:** same repo = same index (not language-model based, no flakiness).
93
+ - **Structural only:** no semantic search, no taint analysis, no control-flow analysis (yet).
94
+
95
+ See [`docs/limitations.md`](../../docs/limitations.md) in the GraphPilot repo for the full boundary conditions.
96
+
97
+ ## Tips for agent use
98
+
99
+ 1. **Always check the SHA.** If the index SHA is old (> a few hours), ask the user to re-run `graphpilot watch` or re-index.
100
+ 2. **On cache miss.** If `gp_recall` returns no results, confirm the symbol name and kind — it may be spelled differently or exported as a type alias.
101
+ 3. **Test the evidence.** Before recommending a refactor, jump to one of the cited file:line anchors yourself to confirm the code matches.
102
+ 4. **Diff-scoped analysis.** For PR review, always use `gp_impact({since: 'main'})` instead of the raw impact — it cuts false positives.
@@ -0,0 +1,8 @@
1
+ {
2
+ "mcpServers": {
3
+ "graphpilot": {
4
+ "command": "node",
5
+ "args": ["/absolute/path/to/graphpilot/dist/cli.js", "mcp"]
6
+ }
7
+ }
8
+ }
@@ -0,0 +1,39 @@
1
+ # GraphPilot routing rules for Cline
2
+
3
+ This repo has a GraphPilot structural code-graph available via MCP. Use it before grep on structural questions.
4
+
5
+ ## When the user asks any of:
6
+
7
+ - "who calls X" / "what uses X" / "where is X called from"
8
+ - "what does X call" / "what does X depend on"
9
+ - "rename X — what breaks" / "impact of changing X" / "what depends on X"
10
+ - "find function X" / "where is X defined" / "list all interfaces"
11
+
12
+ → **Use the graphpilot MCP tools BEFORE grep or reading files.**
13
+
14
+ | Question kind | Tool to call |
15
+ | ---------------------- | ------------------------------------------------------- |
16
+ | Define / locate symbol | `gp_recall({ query, substring?, path? })` |
17
+ | Callers / callees | `gp_callers({ symbol, direction, path? })` |
18
+ | Blast radius / rename | `gp_impact({ symbol, depth?, path? })` |
19
+ | PR-scoped blast radius | `gp_impact({ symbol, since: 'main', path? })` |
20
+ | Index health probe | `gp_stats({ path? })` |
21
+ | Refresh after edits | `gp_index({ path? })` |
22
+
23
+ ## When NOT to use GraphPilot
24
+
25
+ Fall back to grep / read for:
26
+
27
+ - Comments, JSDoc, string literals, error messages
28
+ - Config files (package.json, tsconfig.json, .env)
29
+ - Markdown / docs
30
+ - Languages other than TypeScript / JavaScript
31
+ - Git history (blame, log)
32
+
33
+ ## After heavy editing
34
+
35
+ After ~10+ file edits, call `gp_index` once before further structural questions, or run `graphpilot watch` in a side terminal for sub-10 ms incremental updates.
36
+
37
+ ## Citing evidence
38
+
39
+ Every GraphPilot response carries `file:line @ sha` anchors. When citing results to the user, **include the anchor verbatim** — it's verifiable: the user can jump to that line and the code will match.