@graphpilot-oss/graphpilot 0.0.1 → 0.1.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 (116) hide show
  1. package/CHANGELOG.md +73 -126
  2. package/README.md +359 -101
  3. package/dist/cli.js +20 -0
  4. package/dist/cli.js.map +1 -1
  5. package/dist/indexer.js +3 -3
  6. package/dist/indexer.js.map +1 -1
  7. package/dist/init.d.ts +28 -0
  8. package/dist/init.js +112 -0
  9. package/dist/init.js.map +1 -0
  10. package/dist/interactions.d.ts +5 -4
  11. package/dist/interactions.js +0 -0
  12. package/dist/interactions.js.map +1 -1
  13. package/dist/mcp.js +126 -46
  14. package/dist/mcp.js.map +1 -1
  15. package/dist/repo-resolve.d.ts +47 -0
  16. package/dist/repo-resolve.js +195 -0
  17. package/dist/repo-resolve.js.map +1 -0
  18. package/dist/storage.js +10 -1
  19. package/dist/storage.js.map +1 -1
  20. package/dist/validation.js +30 -4
  21. package/dist/validation.js.map +1 -1
  22. package/dist/watcher.d.ts +10 -0
  23. package/dist/watcher.js +70 -7
  24. package/dist/watcher.js.map +1 -1
  25. package/examples/README.md +105 -0
  26. package/examples/claude-code/README.md +125 -0
  27. package/examples/claude-code/claude-routing.md +102 -0
  28. package/examples/claude-code/claude_config.json +8 -0
  29. package/examples/cline/.clinerules +39 -0
  30. package/examples/cline/README.md +104 -0
  31. package/examples/cline/cline_mcp_settings.json +10 -0
  32. package/examples/continue/.continuerules +39 -0
  33. package/examples/continue/README.md +98 -0
  34. package/examples/continue/config.json +13 -0
  35. package/examples/cursor/.cursorrules +39 -0
  36. package/examples/cursor/README.md +98 -0
  37. package/examples/cursor/mcp.json +11 -0
  38. package/examples/windsurf/.windsurfrules +39 -0
  39. package/examples/windsurf/README.md +85 -0
  40. package/examples/windsurf/mcp_config.json +8 -0
  41. package/package.json +12 -3
  42. package/.editorconfig +0 -15
  43. package/.github/CODEOWNERS +0 -22
  44. package/.github/FUNDING.yml +0 -1
  45. package/.github/ISSUE_TEMPLATE/bug_report.md +0 -33
  46. package/.github/ISSUE_TEMPLATE/config.yml +0 -5
  47. package/.github/ISSUE_TEMPLATE/feature_request.md +0 -23
  48. package/.github/PULL_REQUEST_TEMPLATE.md +0 -19
  49. package/.github/dependabot.yml +0 -15
  50. package/.github/workflows/ci.yml +0 -62
  51. package/.github/workflows/release.yml +0 -50
  52. package/.prettierignore +0 -19
  53. package/.prettierrc.json +0 -20
  54. package/CODE_OF_CONDUCT.md +0 -83
  55. package/CONTRIBUTING.md +0 -111
  56. package/bench/README.md +0 -544
  57. package/bench/results/agent-tier-2026-05-22.md +0 -28
  58. package/bench/results/agent-tier-summary.md +0 -44
  59. package/bench/results/baseline-tier-2026-05-22.md +0 -23
  60. package/bench/results/baseline.json +0 -810
  61. package/bench/results/baseline.md +0 -28
  62. package/bench/run-agent-tier-automated.ts +0 -234
  63. package/bench/run-agent-tier.md +0 -125
  64. package/bench/run-baseline-tier.ts +0 -200
  65. package/bench/run.ts +0 -210
  66. package/bench/runner-baseline.ts +0 -177
  67. package/bench/runner-graphpilot.ts +0 -131
  68. package/bench/score-agent-tier.ts +0 -191
  69. package/bench/score.ts +0 -59
  70. package/bench/tasks.ts +0 -236
  71. package/dist/provenance.d.ts +0 -74
  72. package/dist/provenance.js +0 -95
  73. package/dist/provenance.js.map +0 -1
  74. package/docs/architecture.md +0 -311
  75. package/docs/limitations.md +0 -156
  76. package/docs/mcp-setup.md +0 -231
  77. package/docs/quickstart.md +0 -202
  78. package/eslint.config.js +0 -148
  79. package/lefthook.yml +0 -81
  80. package/pnpm-workspace.yaml +0 -6
  81. package/scripts/smoke-stdio.mjs +0 -97
  82. package/src/cli.ts +0 -171
  83. package/src/edges.ts +0 -202
  84. package/src/git.ts +0 -255
  85. package/src/graph-schema.ts +0 -229
  86. package/src/impact.ts +0 -218
  87. package/src/indexer.ts +0 -152
  88. package/src/interactions.ts +0 -0
  89. package/src/mcp.ts +0 -652
  90. package/src/parser.ts +0 -138
  91. package/src/provenance.ts +0 -115
  92. package/src/query.ts +0 -148
  93. package/src/redact.ts +0 -122
  94. package/src/storage.ts +0 -115
  95. package/src/symbols.ts +0 -173
  96. package/src/validation.ts +0 -69
  97. package/src/validators.ts +0 -253
  98. package/src/watcher.ts +0 -383
  99. package/tests/edges.test.ts +0 -175
  100. package/tests/fixtures/sample.ts +0 -32
  101. package/tests/git.test.ts +0 -303
  102. package/tests/graph-schema.test.ts +0 -321
  103. package/tests/impact.test.ts +0 -454
  104. package/tests/interactions.test.ts +0 -180
  105. package/tests/lint-policy.test.ts +0 -106
  106. package/tests/mcp-stdio.test.ts +0 -171
  107. package/tests/mcp.test.ts +0 -335
  108. package/tests/parser.test.ts +0 -31
  109. package/tests/provenance.test.ts +0 -132
  110. package/tests/query.test.ts +0 -160
  111. package/tests/redact.test.ts +0 -167
  112. package/tests/security.test.ts +0 -144
  113. package/tests/symbols.test.ts +0 -78
  114. package/tests/validators.test.ts +0 -193
  115. package/tests/watcher.test.ts +0 -250
  116. package/tsconfig.json +0 -18
package/dist/init.d.ts ADDED
@@ -0,0 +1,28 @@
1
+ export type ClientId = 'cursor' | 'claude-code' | 'cline' | 'windsurf' | 'continue';
2
+ export interface ClientSpec {
3
+ name: string;
4
+ /** Path to the client's own MCP config — its existence signals the client is installed. */
5
+ configPath: string;
6
+ /** Relative path inside the package's examples/ dir (the routing template). */
7
+ templateFile: string;
8
+ /** Filename to write at the target repo root. */
9
+ outputFile: string;
10
+ }
11
+ export declare const CLIENTS: Record<ClientId, ClientSpec>;
12
+ export declare const EXAMPLES_DIR: string;
13
+ export declare function detectInstalledClients(): ClientId[];
14
+ export interface InitOptions {
15
+ repoPath: string;
16
+ clients?: ClientId[];
17
+ all?: boolean;
18
+ dryRun?: boolean;
19
+ examplesDir?: string;
20
+ prompt?: (destPath: string) => Promise<'overwrite' | 'skip'>;
21
+ }
22
+ export type WriteAction = 'written' | 'skipped' | 'dry-run';
23
+ export interface WriteResult {
24
+ client: ClientId;
25
+ action: WriteAction;
26
+ destPath: string;
27
+ }
28
+ export declare function runInit(opts: InitOptions): Promise<WriteResult[]>;
package/dist/init.js ADDED
@@ -0,0 +1,112 @@
1
+ import { existsSync, readFileSync, writeFileSync } from 'node:fs';
2
+ import { join, dirname } from 'node:path';
3
+ import { homedir, platform } from 'node:os';
4
+ import { fileURLToPath } from 'node:url';
5
+ import { createInterface } from 'node:readline';
6
+ function clineConfigPath() {
7
+ const p = platform();
8
+ const globalStorage = join('Code', 'User', 'globalStorage', 'saoudrizwan.claude-dev', 'settings', 'cline_mcp_settings.json');
9
+ if (p === 'darwin')
10
+ return join(homedir(), 'Library', 'Application Support', globalStorage);
11
+ if (p === 'win32') {
12
+ return join(process.env['APPDATA'] ?? join(homedir(), 'AppData', 'Roaming'), globalStorage);
13
+ }
14
+ return join(homedir(), '.config', globalStorage);
15
+ }
16
+ export const CLIENTS = {
17
+ cursor: {
18
+ name: 'Cursor',
19
+ configPath: join(homedir(), '.cursor', 'mcp.json'),
20
+ templateFile: join('cursor', '.cursorrules'),
21
+ outputFile: '.cursorrules',
22
+ },
23
+ 'claude-code': {
24
+ name: 'Claude Code',
25
+ configPath: join(homedir(), '.claude.json'),
26
+ templateFile: join('claude-code', 'claude-routing.md'),
27
+ outputFile: 'CLAUDE.md',
28
+ },
29
+ cline: {
30
+ name: 'Cline',
31
+ configPath: clineConfigPath(),
32
+ templateFile: join('cline', '.clinerules'),
33
+ outputFile: '.clinerules',
34
+ },
35
+ windsurf: {
36
+ name: 'Windsurf',
37
+ configPath: join(homedir(), '.codeium', 'windsurf', 'mcp_config.json'),
38
+ templateFile: join('windsurf', '.windsurfrules'),
39
+ outputFile: '.windsurfrules',
40
+ },
41
+ continue: {
42
+ name: 'Continue',
43
+ configPath: join(homedir(), '.continue', 'config.json'),
44
+ templateFile: join('continue', '.continuerules'),
45
+ outputFile: '.continuerules',
46
+ },
47
+ };
48
+ export const EXAMPLES_DIR = join(dirname(fileURLToPath(import.meta.url)), '..', 'examples');
49
+ export function detectInstalledClients() {
50
+ return Object.keys(CLIENTS).filter((id) => existsSync(CLIENTS[id].configPath));
51
+ }
52
+ async function defaultPrompt(destPath) {
53
+ if (!process.stdin.isTTY)
54
+ return 'skip';
55
+ return new Promise((resolve) => {
56
+ const rl = createInterface({ input: process.stdin, output: process.stdout });
57
+ rl.question(` ${destPath} already exists. Overwrite? [y/N] `, (answer) => {
58
+ rl.close();
59
+ resolve(answer.toLowerCase() === 'y' ? 'overwrite' : 'skip');
60
+ });
61
+ });
62
+ }
63
+ export async function runInit(opts) {
64
+ const { repoPath, all = false, dryRun = false, examplesDir: exDir = EXAMPLES_DIR, prompt = defaultPrompt, } = opts;
65
+ let targets;
66
+ if (opts.clients && opts.clients.length > 0) {
67
+ targets = opts.clients;
68
+ }
69
+ else if (all) {
70
+ targets = Object.keys(CLIENTS);
71
+ }
72
+ else {
73
+ targets = detectInstalledClients();
74
+ if (targets.length === 0) {
75
+ process.stdout.write('No supported clients detected. Pass --all to write all rules files,\n' +
76
+ 'or --client <name> for a specific one.\n' +
77
+ 'Supported clients: cursor, claude-code, cline, windsurf, continue\n');
78
+ return [];
79
+ }
80
+ process.stdout.write(`Detected: ${targets.join(', ')}\n`);
81
+ }
82
+ const results = [];
83
+ for (const id of targets) {
84
+ const spec = CLIENTS[id];
85
+ const templatePath = join(exDir, spec.templateFile);
86
+ const destPath = join(repoPath, spec.outputFile);
87
+ if (!existsSync(templatePath)) {
88
+ process.stdout.write(` [${spec.name}] skip — template not found: ${templatePath}\n`);
89
+ results.push({ client: id, action: 'skipped', destPath });
90
+ continue;
91
+ }
92
+ const content = readFileSync(templatePath, 'utf8');
93
+ if (dryRun) {
94
+ process.stdout.write(` [dry-run] would write ${spec.outputFile} (${content.length} bytes)\n`);
95
+ results.push({ client: id, action: 'dry-run', destPath });
96
+ continue;
97
+ }
98
+ if (existsSync(destPath)) {
99
+ const decision = await prompt(destPath);
100
+ if (decision === 'skip') {
101
+ process.stdout.write(` [${spec.name}] skipped (${spec.outputFile} already exists)\n`);
102
+ results.push({ client: id, action: 'skipped', destPath });
103
+ continue;
104
+ }
105
+ }
106
+ writeFileSync(destPath, content, 'utf8');
107
+ process.stdout.write(` [${spec.name}] wrote ${spec.outputFile}\n`);
108
+ results.push({ client: id, action: 'written', destPath });
109
+ }
110
+ return results;
111
+ }
112
+ //# sourceMappingURL=init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"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"}
@@ -2,11 +2,12 @@
2
2
  * Append-only interaction log. One JSONL file per indexed repo:
3
3
  * ~/.graphpilot/<repo-id>/interactions.jsonl
4
4
  *
5
- * Why we keep this even though v1 never reads it: see .notes/v1-mvp-revised.md
6
- * §4 (the moat seed). Day-1 logs become day-180 personalized ranking. A fork
7
- * starting fresh can't catch up.
5
+ * Why we keep this even though v1 never reads it: day-1 logs become day-180
6
+ * personalized ranking input. A fork starting fresh can't catch up — the
7
+ * accumulated interaction history is what makes adaptive symbol ranking
8
+ * possible without retraining.
8
9
  *
9
- * Privacy constraints (do NOT relax without revisiting .notes/security.md):
10
+ * Privacy constraints (do NOT relax without re-reading SECURITY.md):
10
11
  * - Never log file contents
11
12
  * - Cap every string field at MAX_FIELD_LEN
12
13
  * - Strip control characters from string values
Binary file
@@ -1 +1 @@
1
- {"version":3,"file":"interactions.js","sourceRoot":"","sources":["../src/interactions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"interactions.js","sourceRoot":"","sources":["../src/interactions.ts"],"names":[],"mappings":"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"}
package/dist/mcp.js CHANGED
@@ -1,40 +1,62 @@
1
+ import { statSync } from 'node:fs';
1
2
  import { Server } from '@modelcontextprotocol/sdk/server/index.js';
2
3
  import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
3
- import { CallToolRequestSchema, ListToolsRequestSchema } from '@modelcontextprotocol/sdk/types.js';
4
- import { resolve } from 'node:path';
4
+ import { CallToolRequestSchema, ListToolsRequestSchema, RootsListChangedNotificationSchema, } from '@modelcontextprotocol/sdk/types.js';
5
5
  import { GraphIndex } from './query.js';
6
6
  import { indexDirectory } from './indexer.js';
7
- import { loadGraph, saveGraph, repoIdFor } from './storage.js';
7
+ import { loadGraph, saveGraph, repoIdFor, graphPath } from './storage.js';
8
8
  import { validateRootPath } from './validation.js';
9
9
  import { validateGpIndex, validateGpRecall, validateGpCallers, validateGpImpact, validateGpStats, } from './validators.js';
10
10
  import { withInteractionLog } from './interactions.js';
11
11
  import { analyzeImpact } from './impact.js';
12
12
  import { getChangedFiles, resolveIndexRoot } from './git.js';
13
+ import { formatNoIndexError, getMcpClientRoots, resolveRepoPath, rootUriToFilesystemPath, setMcpClientRoots, } from './repo-resolve.js';
13
14
  const SERVER_NAME = 'graphpilot';
14
15
  const SERVER_VERSION = '0.0.1';
15
- // ----------------------------------------------------------------------------
16
- // Per-process cache of loaded GraphIndex by absolute repo path.
17
- // ----------------------------------------------------------------------------
16
+ /** Shown on every tool's optional `path` field. */
17
+ const PATH_FIELD_DESC = 'Repo root with a GraphPilot index. Optional: when omitted, resolves via ' +
18
+ 'GRAPHPILOT_ROOT, MCP workspace roots, parent walk, or a single ~/.graphpilot index.';
18
19
  const indexCache = new Map();
20
+ /** Set when buildMcpServer wires roots handlers — used for lazy roots/list. */
21
+ let mcpServerForRoots = null;
22
+ let rootsRefreshInflight = null;
19
23
  function getOrLoadIndex(rawPath) {
24
+ const requested = resolveRepoPath(rawPath);
20
25
  // Re-root to the git worktree top so MCP tool calls from a subdir of a
21
26
  // worktree still resolve to the branch-level index. Outside git this is
22
27
  // a no-op.
23
- const { root } = resolveIndexRoot(rawPath ?? process.cwd());
28
+ const { root } = resolveIndexRoot(requested);
29
+ // Check whether graph.json changed since we last loaded it. Any external
30
+ // writer (CLI re-index, another MCP process, gp_index from a parallel
31
+ // session) will bump the mtime and trigger a cache miss here.
32
+ let currentMtimeMs = 0;
33
+ let currentSizeBytes = 0;
34
+ try {
35
+ const st = statSync(graphPath(root));
36
+ currentMtimeMs = st.mtimeMs;
37
+ currentSizeBytes = st.size;
38
+ }
39
+ catch {
40
+ // File doesn't exist yet — fall through; loadGraph will return null.
41
+ }
24
42
  const cached = indexCache.get(root);
25
- if (cached)
26
- return { idx: cached, root };
43
+ if (cached &&
44
+ currentMtimeMs !== 0 &&
45
+ cached.mtimeMs === currentMtimeMs &&
46
+ cached.sizeBytes === currentSizeBytes) {
47
+ return { idx: cached.idx, root };
48
+ }
49
+ // Cache miss or stale entry — (re)load from disk.
50
+ indexCache.delete(root);
27
51
  const graph = loadGraph(root);
28
52
  if (!graph) {
29
53
  return {
30
54
  root,
31
- error: `No GraphPilot index found for ${root}.\n` +
32
- `Ask the user to run \`graphpilot index ${rawPath ?? '.'}\` first, or ` +
33
- `call the gp_index tool to build one.`,
55
+ error: formatNoIndexError(requested, root),
34
56
  };
35
57
  }
36
58
  const idx = new GraphIndex(graph);
37
- indexCache.set(root, idx);
59
+ indexCache.set(root, { idx, mtimeMs: currentMtimeMs, sizeBytes: currentSizeBytes });
38
60
  return { idx, root };
39
61
  }
40
62
  function invalidateCache(absRoot) {
@@ -87,27 +109,29 @@ function fmtEdge(e, idx, index) {
87
109
  const TOOLS = [
88
110
  {
89
111
  name: 'gp_stats',
90
- description: 'Show GraphPilot index health for a repo (symbol count, edge count, ' +
91
- 'when indexed). Use this to confirm the index is fresh before asking ' +
92
- 'structural questions.',
112
+ description: 'Show index health: when last indexed, file/symbol/edge counts, branch + SHA. ' +
113
+ 'ALWAYS call first if other gp_* tools return unexpected results confirms ' +
114
+ 'the index is fresh and identifies the exact commit it was built against. ' +
115
+ 'Do NOT use to answer questions about code structure; use gp_recall or gp_impact for that.',
93
116
  inputSchema: {
94
117
  type: 'object',
95
118
  properties: {
96
- path: { type: 'string', description: 'Repo path. Default: cwd.' },
119
+ path: { type: 'string', description: PATH_FIELD_DESC },
97
120
  },
98
121
  additionalProperties: false,
99
122
  },
100
123
  },
101
124
  {
102
125
  name: 'gp_index',
103
- description: 'Index or re-index a TypeScript/JavaScript repo into GraphPilot. Call ' +
104
- 'this when the codebase has changed materially or when no index exists.',
126
+ description: 'Re-index the repo after batch edits so subsequent gp_* calls see your changes. ' +
127
+ 'Call after any non-trivial edit session or when gp_stats shows a stale timestamp. ' +
128
+ 'Do NOT call before every query — indexing is slow; only needed when source files changed.',
105
129
  inputSchema: {
106
130
  type: 'object',
107
131
  properties: {
108
132
  path: {
109
133
  type: 'string',
110
- description: 'Repo path to index. Default: cwd.',
134
+ description: PATH_FIELD_DESC,
111
135
  },
112
136
  },
113
137
  additionalProperties: false,
@@ -115,9 +139,11 @@ const TOOLS = [
115
139
  },
116
140
  {
117
141
  name: 'gp_recall',
118
- description: 'Look up symbols (functions, classes, methods, types, interfaces) by ' +
119
- 'name. Returns kind, location, and signature. Default: exact ' +
120
- 'case-insensitive. Pass substring:true for partial matches.',
142
+ description: 'Find a symbol definition by name — returns kind, file:line, and signature. ' +
143
+ 'ALWAYS use instead of `grep -rn "function X"` or reading files to locate a definition: ' +
144
+ 'pre-indexed, no false positives from comments or strings, sub-millisecond. ' +
145
+ 'Pass substring:true for partial-name searches. ' +
146
+ 'Do NOT use for "who calls X?" — use gp_callers for that.',
121
147
  inputSchema: {
122
148
  type: 'object',
123
149
  properties: {
@@ -137,7 +163,7 @@ const TOOLS = [
137
163
  },
138
164
  path: {
139
165
  type: 'string',
140
- description: 'Repo path. Default: cwd.',
166
+ description: PATH_FIELD_DESC,
141
167
  },
142
168
  },
143
169
  required: ['query'],
@@ -146,9 +172,12 @@ const TOOLS = [
146
172
  },
147
173
  {
148
174
  name: 'gp_callers',
149
- description: 'List callers of a symbol (who calls it) or callees (what it calls). ' +
150
- "Use direction='callers' for impact analysis ('what breaks if I " +
151
- "change this?'); direction='callees' to see what a function depends on.",
175
+ description: 'List every caller of a symbol (direction=callers) or everything it calls ' +
176
+ '(direction=callees). ALWAYS use instead of `grep -rn "X("` for "who calls X?" — ' +
177
+ 'pre-indexed reverse map, sub-millisecond, no false positives from comments or strings. ' +
178
+ 'Use direction=callers to find dependents before a rename; direction=callees to ' +
179
+ 'understand what a function depends on. ' +
180
+ 'Do NOT use for full blast-radius analysis across multiple hops — use gp_impact instead.',
152
181
  inputSchema: {
153
182
  type: 'object',
154
183
  properties: {
@@ -173,7 +202,7 @@ const TOOLS = [
173
202
  },
174
203
  path: {
175
204
  type: 'string',
176
- description: 'Repo path. Default: cwd.',
205
+ description: PATH_FIELD_DESC,
177
206
  },
178
207
  },
179
208
  required: ['symbol'],
@@ -182,15 +211,14 @@ const TOOLS = [
182
211
  },
183
212
  {
184
213
  name: 'gp_impact',
185
- description: 'Analyze the BLAST RADIUS of changing a symbol. Returns direct callers, ' +
186
- 'transitive callers (default depth 3), tests likely affected, and ' +
187
- 'whether the symbol is part of the public API (exported). ' +
188
- 'Use this BEFORE proposing a rename, signature change, or behavior ' +
189
- 'change it answers "what breaks if I change X?" in one call instead ' +
190
- 'of composing multiple gp_callers queries. ' +
191
- 'Pass `since: <commit|branch>` to restrict callers to files changed ' +
192
- 'since that ref ideal for PR review ("what does this branch touch?") ' +
193
- 'and refactor scoping.',
214
+ description: 'Compute the blast radius of a rename or signature change: direct callers, ' +
215
+ 'transitive callers up to depth 3, affected tests, and whether the symbol is ' +
216
+ 'exported (breaking-change risk). ALWAYS call before proposing a rename, ' +
217
+ 'signature change, or behavior change replaces `git diff | xargs grep` with ' +
218
+ 'a single structured answer. ' +
219
+ 'Pass `since: <commit|branch>` to scope callers to files changed since that ref ' +
220
+ '(ideal for PR review or refactor scoping). ' +
221
+ 'Do NOT use just to see direct callers; use gp_callers for that.',
194
222
  inputSchema: {
195
223
  type: 'object',
196
224
  properties: {
@@ -206,7 +234,7 @@ const TOOLS = [
206
234
  },
207
235
  path: {
208
236
  type: 'string',
209
- description: 'Repo path. Default: cwd.',
237
+ description: PATH_FIELD_DESC,
210
238
  },
211
239
  since: {
212
240
  type: 'string',
@@ -219,7 +247,8 @@ const TOOLS = [
219
247
  },
220
248
  },
221
249
  ];
222
- function handleGpStats(args) {
250
+ async function handleGpStats(args) {
251
+ await ensureClientRootsCached();
223
252
  const out = getOrLoadIndex(args.path);
224
253
  if ('error' in out) {
225
254
  return { text: out.error, results: 0, isError: true };
@@ -247,7 +276,8 @@ function handleGpStats(args) {
247
276
  return { text, results: 1 };
248
277
  }
249
278
  async function handleGpIndex(args) {
250
- const requested = resolve(args.path ?? process.cwd());
279
+ await ensureClientRootsCached();
280
+ const requested = resolveRepoPath(args.path);
251
281
  const { root, redirected } = resolveIndexRoot(requested);
252
282
  const refusal = validateRootPath(root);
253
283
  if (refusal)
@@ -294,7 +324,8 @@ async function handleGpIndex(args) {
294
324
  ` Took: ${result.durationMs}ms`;
295
325
  return { text, results: 1 };
296
326
  }
297
- function handleGpRecall(args) {
327
+ async function handleGpRecall(args) {
328
+ await ensureClientRootsCached();
298
329
  const out = getOrLoadIndex(args.path);
299
330
  if ('error' in out) {
300
331
  return { text: out.error, results: 0, isError: true };
@@ -314,7 +345,8 @@ function handleGpRecall(args) {
314
345
  const body = matches.map((s, i) => fmtSymbol(s, idx, i)).join('\n\n');
315
346
  return { text: header + body, results: matches.length };
316
347
  }
317
- function handleGpCallers(args) {
348
+ async function handleGpCallers(args) {
349
+ await ensureClientRootsCached();
318
350
  const out = getOrLoadIndex(args.path);
319
351
  if ('error' in out) {
320
352
  return { text: out.error, results: 0, isError: true };
@@ -423,6 +455,7 @@ function fmtImpactReport(report, idx, diff = { changedFileCount: null }) {
423
455
  return lines.join('\n');
424
456
  }
425
457
  async function handleGpImpact(args) {
458
+ await ensureClientRootsCached();
426
459
  const out = getOrLoadIndex(args.path);
427
460
  if ('error' in out) {
428
461
  return { text: out.error, results: 0, isError: true };
@@ -460,10 +493,57 @@ async function handleGpImpact(args) {
460
493
  return { text, results: totalResults };
461
494
  }
462
495
  // ----------------------------------------------------------------------------
496
+ // MCP workspace roots (client → server)
497
+ // ----------------------------------------------------------------------------
498
+ /** Ensure roots/list has run when the client supports workspace roots. */
499
+ async function ensureClientRootsCached() {
500
+ if (!mcpServerForRoots?.getClientCapabilities()?.roots)
501
+ return;
502
+ if (getMcpClientRoots().length > 0)
503
+ return;
504
+ if (!rootsRefreshInflight) {
505
+ rootsRefreshInflight = refreshMcpClientRoots(mcpServerForRoots).finally(() => {
506
+ rootsRefreshInflight = null;
507
+ });
508
+ }
509
+ await rootsRefreshInflight;
510
+ }
511
+ async function refreshMcpClientRoots(server) {
512
+ const caps = server.getClientCapabilities();
513
+ if (!caps?.roots) {
514
+ setMcpClientRoots([]);
515
+ return;
516
+ }
517
+ try {
518
+ const { roots } = await server.listRoots();
519
+ const paths = roots
520
+ .map((r) => rootUriToFilesystemPath(r.uri))
521
+ .filter((p) => p !== null);
522
+ setMcpClientRoots(paths);
523
+ if (paths.length > 0) {
524
+ process.stderr.write(`[graphpilot] MCP workspace roots: ${paths.join(', ')}\n`);
525
+ }
526
+ }
527
+ catch (err) {
528
+ process.stderr.write(`[graphpilot] roots/list failed: ${err instanceof Error ? err.message : String(err)}\n`);
529
+ setMcpClientRoots([]);
530
+ }
531
+ }
532
+ function wireMcpClientRoots(server) {
533
+ mcpServerForRoots = server;
534
+ server.oninitialized = () => {
535
+ void refreshMcpClientRoots(server);
536
+ };
537
+ server.setNotificationHandler(RootsListChangedNotificationSchema, () => {
538
+ void refreshMcpClientRoots(server);
539
+ });
540
+ }
541
+ // ----------------------------------------------------------------------------
463
542
  // Server builder + dispatcher
464
543
  // ----------------------------------------------------------------------------
465
544
  export function buildMcpServer() {
466
545
  const server = new Server({ name: SERVER_NAME, version: SERVER_VERSION }, { capabilities: { tools: {} } });
546
+ wireMcpClientRoots(server);
467
547
  server.setRequestHandler(ListToolsRequestSchema, async () => ({
468
548
  tools: TOOLS,
469
549
  }));
@@ -474,7 +554,7 @@ export function buildMcpServer() {
474
554
  // so the log captures even invalid-input attempts. Fall back to cwd.
475
555
  // Resolve to the worktree top so per-tool calls from a subdir land in
476
556
  // the same interaction log as the rest of the branch's work.
477
- const requestedLogPath = typeof rawArgs.path === 'string' ? rawArgs.path : process.cwd();
557
+ const requestedLogPath = resolveRepoPath(typeof rawArgs.path === 'string' ? rawArgs.path : undefined);
478
558
  const repoRootForLog = resolveIndexRoot(requestedLogPath).root;
479
559
  return withInteractionLog(repoRootForLog, name, rawArgs, async () => {
480
560
  // Validate first
@@ -486,7 +566,7 @@ export function buildMcpServer() {
486
566
  result = { text: `Invalid input: ${v.error}`, results: 0, isError: true };
487
567
  break;
488
568
  }
489
- result = handleGpStats(v.value);
569
+ result = await handleGpStats(v.value);
490
570
  break;
491
571
  }
492
572
  case 'gp_index': {
@@ -504,7 +584,7 @@ export function buildMcpServer() {
504
584
  result = { text: `Invalid input: ${v.error}`, results: 0, isError: true };
505
585
  break;
506
586
  }
507
- result = handleGpRecall(v.value);
587
+ result = await handleGpRecall(v.value);
508
588
  break;
509
589
  }
510
590
  case 'gp_callers': {
@@ -513,7 +593,7 @@ export function buildMcpServer() {
513
593
  result = { text: `Invalid input: ${v.error}`, results: 0, isError: true };
514
594
  break;
515
595
  }
516
- result = handleGpCallers(v.value);
596
+ result = await handleGpCallers(v.value);
517
597
  break;
518
598
  }
519
599
  case 'gp_impact': {
package/dist/mcp.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../src/mcp.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../src/mcp.ts"],"names":[],"mappings":"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"}