ariadne-mcp 0.1.0 → 0.2.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.
package/README.md CHANGED
@@ -29,20 +29,20 @@ This burns tokens fast and produces shallow answers. Ariadne gives agents the sa
29
29
 
30
30
  ## Setup
31
31
 
32
- Add this to your MCP config (Claude Desktop, Cursor, or any MCP-compatible editor) once, and never touch it again:
32
+ Add this to your **project-level** MCP config (not global) Ariadne uses `process.cwd()` as the repo root, so it must be spawned from the project directory:
33
33
 
34
34
  ```json
35
35
  {
36
36
  "mcpServers": {
37
37
  "ariadne": {
38
38
  "command": "npx",
39
- "args": ["-y", "ariadne"]
39
+ "args": ["-y", "ariadne-mcp"]
40
40
  }
41
41
  }
42
42
  }
43
43
  ```
44
44
 
45
- That's it. Ariadne is spawned as a subprocess and inherits the editor's working directory (your project root). No flags, no paths, no configuration.
45
+ > ⚠️ **Do not add Ariadne to your global MCP config.** It needs to run inside a project directory to index correctly. Use your editor's per-project config (e.g. `.cursor/mcp.json`, `.kiro/settings/mcp.json`, or the project-level Claude Desktop config).
46
46
 
47
47
  ## What happens on first run
48
48
 
@@ -84,7 +84,7 @@ That's it. Ariadne is spawned as a subprocess and inherits the editor's working
84
84
  ## How it works
85
85
 
86
86
  ```
87
- npx ariadne
87
+ npx ariadne-mcp
88
88
  → process.cwd() repo root (inherited from editor)
89
89
  → scip-typescript / scip-python full semantic index → .ariadne/index.scip
90
90
  → loadScipIndex() symbols + edges → .ariadne/graph.db (SQLite)
@@ -7,6 +7,9 @@ import type { Symbol, DefinitionResult, CallSite, CallPath } from "../types/inde
7
7
  export declare function getDefinition(db: Database.Database, name: string, file?: string): Promise<DefinitionResult | null>;
8
8
  /**
9
9
  * Find all call sites that invoke symbols matching `symbolName`.
10
+ * Falls back to all reference edges (imports, references) when no call edges
11
+ * exist — this surfaces class registrations and import sites for non-callable
12
+ * symbols like classes.
10
13
  */
11
14
  export declare function getCallers(db: Database.Database, symbolName: string): Promise<CallSite[]>;
12
15
  /**
@@ -15,6 +18,8 @@ export declare function getCallers(db: Database.Database, symbolName: string): P
15
18
  export declare function getCallees(db: Database.Database, symbolName: string): Promise<Symbol[]>;
16
19
  /**
17
20
  * Find all edges pointing at symbols matching `symbolName`, any edge kind.
21
+ * Includes calls, imports, references, and implements edges — so decorators,
22
+ * class registrations, and function calls are all surfaced.
18
23
  */
19
24
  export declare function getReferences(db: Database.Database, symbolName: string): Promise<CallSite[]>;
20
25
  /**
@@ -25,6 +30,26 @@ export declare function getImplementations(db: Database.Database, symbolName: st
25
30
  * Return all symbols defined in a given file, ordered by line number.
26
31
  */
27
32
  export declare function getFileSymbols(db: Database.Database, filePath: string): Promise<Symbol[]>;
33
+ /**
34
+ * Return all symbols defined in files under a given directory, ordered by file + line.
35
+ */
36
+ export declare function getDirectorySymbols(db: Database.Database, dirPath: string): Promise<Symbol[]>;
37
+ /**
38
+ * Fuzzy symbol search — returns all symbols whose name contains the query string.
39
+ */
40
+ export declare function findSymbol(db: Database.Database, query: string, limit?: number): Promise<Symbol[]>;
41
+ /**
42
+ * Return all symbols (in other files) that import the given file.
43
+ */
44
+ export declare function getImporters(db: Database.Database, filePath: string): Promise<{
45
+ symbol: Symbol;
46
+ line: number;
47
+ }[]>;
48
+ /**
49
+ * Find all indexed files whose path matches a glob-style pattern.
50
+ * Supports * (any chars except /) and ** (any chars including /).
51
+ */
52
+ export declare function searchFiles(db: Database.Database, pattern: string): Promise<string[]>;
28
53
  /**
29
54
  * Best-effort: find the type/interface a symbol references.
30
55
  */
@@ -1 +1 @@
1
- {"version":3,"file":"queries.d.ts","sourceRoot":"","sources":["../../src/graph/queries.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,KAAK,EAAE,MAAM,EAAQ,gBAAgB,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAsB5F;;;GAGG;AACH,wBAAsB,aAAa,CACjC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CASlC;AAED;;GAEG;AACH,wBAAsB,UAAU,CAC9B,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,QAAQ,EAAE,CAAC,CAgBrB;AAED;;GAEG;AACH,wBAAsB,UAAU,CAC9B,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,EAAE,CAAC,CAcnB;AAED;;GAEG;AACH,wBAAsB,aAAa,CACjC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,QAAQ,EAAE,CAAC,CAerB;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAW7B;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,EAAE,CAAC,CAMnB;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAiB7B;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAgBlC;AAED;;;GAGG;AACH,wBAAsB,WAAW,CAC/B,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CA8E1B"}
1
+ {"version":3,"file":"queries.d.ts","sourceRoot":"","sources":["../../src/graph/queries.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,KAAK,EAAE,MAAM,EAAQ,gBAAgB,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAsB5F;;;GAGG;AACH,wBAAsB,aAAa,CACjC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CASlC;AAED;;;;;GAKG;AACH,wBAAsB,UAAU,CAC9B,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,QAAQ,EAAE,CAAC,CAmCrB;AAED;;GAEG;AACH,wBAAsB,UAAU,CAC9B,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,EAAE,CAAC,CAcnB;AAED;;;;GAIG;AACH,wBAAsB,aAAa,CACjC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,QAAQ,EAAE,CAAC,CAgBrB;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAW7B;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,EAAE,CAAC,CAMnB;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,EAAE,CAAC,CAMnB;AAED;;GAEG;AACH,wBAAsB,UAAU,CAC9B,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,KAAK,EAAE,MAAM,EACb,KAAK,SAAK,GACT,OAAO,CAAC,MAAM,EAAE,CAAC,CAiBnB;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAAE,CAAC,CAgB7C;AAED;;;GAGG;AACH,wBAAsB,WAAW,CAC/B,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,EAAE,CAAC,CAYnB;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAiB7B;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAgBlC;AAED;;;GAGG;AACH,wBAAsB,WAAW,CAC/B,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CA8E1B"}
@@ -6,6 +6,10 @@ exports.getCallees = getCallees;
6
6
  exports.getReferences = getReferences;
7
7
  exports.getImplementations = getImplementations;
8
8
  exports.getFileSymbols = getFileSymbols;
9
+ exports.getDirectorySymbols = getDirectorySymbols;
10
+ exports.findSymbol = findSymbol;
11
+ exports.getImporters = getImporters;
12
+ exports.searchFiles = searchFiles;
9
13
  exports.getTypeDefinition = getTypeDefinition;
10
14
  exports.getSourceDefinition = getSourceDefinition;
11
15
  exports.getCallPath = getCallPath;
@@ -42,9 +46,12 @@ async function getDefinition(db, name, file) {
42
46
  }
43
47
  /**
44
48
  * Find all call sites that invoke symbols matching `symbolName`.
49
+ * Falls back to all reference edges (imports, references) when no call edges
50
+ * exist — this surfaces class registrations and import sites for non-callable
51
+ * symbols like classes.
45
52
  */
46
53
  async function getCallers(db, symbolName) {
47
- const rows = db.prepare(`
54
+ const callRows = db.prepare(`
48
55
  SELECT
49
56
  s.id, s.name, s.kind, s.file, s.line, s.signature, s.docstring,
50
57
  e.line AS call_line
@@ -54,7 +61,24 @@ async function getCallers(db, symbolName) {
54
61
  AND e.kind = 'calls'
55
62
  ORDER BY s.file, e.line
56
63
  `).all({ name: symbolName });
57
- return rows.map((row) => ({
64
+ if (callRows.length > 0) {
65
+ return callRows.map((row) => ({
66
+ caller: rowToSymbol(row),
67
+ line: row["call_line"] ?? row["line"],
68
+ }));
69
+ }
70
+ // No call edges — fall back to imports + references (e.g. class registrations)
71
+ const refRows = db.prepare(`
72
+ SELECT
73
+ s.id, s.name, s.kind, s.file, s.line, s.signature, s.docstring,
74
+ e.line AS call_line
75
+ FROM edges e
76
+ JOIN symbols s ON s.id = e.from_symbol
77
+ WHERE e.to_symbol IN (SELECT id FROM symbols WHERE name = $name)
78
+ AND e.kind IN ('imports', 'references')
79
+ ORDER BY s.file, e.line
80
+ `).all({ name: symbolName });
81
+ return refRows.map((row) => ({
58
82
  caller: rowToSymbol(row),
59
83
  line: row["call_line"] ?? row["line"],
60
84
  }));
@@ -78,12 +102,15 @@ async function getCallees(db, symbolName) {
78
102
  }
79
103
  /**
80
104
  * Find all edges pointing at symbols matching `symbolName`, any edge kind.
105
+ * Includes calls, imports, references, and implements edges — so decorators,
106
+ * class registrations, and function calls are all surfaced.
81
107
  */
82
108
  async function getReferences(db, symbolName) {
83
109
  const rows = db.prepare(`
84
110
  SELECT
85
111
  s.id, s.name, s.kind, s.file, s.line, s.signature, s.docstring,
86
- e.line AS ref_line
112
+ e.line AS ref_line,
113
+ e.kind AS edge_kind
87
114
  FROM edges e
88
115
  JOIN symbols s ON s.id = e.from_symbol
89
116
  WHERE e.to_symbol IN (SELECT id FROM symbols WHERE name = $name)
@@ -115,6 +142,68 @@ async function getFileSymbols(db, filePath) {
115
142
  const rows = db.prepare(`SELECT * FROM symbols WHERE file = $file ORDER BY line`).all({ file: filePath });
116
143
  return rows.map(rowToSymbol);
117
144
  }
145
+ /**
146
+ * Return all symbols defined in files under a given directory, ordered by file + line.
147
+ */
148
+ async function getDirectorySymbols(db, dirPath) {
149
+ const prefix = dirPath.replace(/\/$/, "") + "/";
150
+ const rows = db.prepare(`SELECT * FROM symbols WHERE file LIKE $prefix ORDER BY file, line`).all({ prefix: prefix + "%" });
151
+ return rows.map(rowToSymbol);
152
+ }
153
+ /**
154
+ * Fuzzy symbol search — returns all symbols whose name contains the query string.
155
+ */
156
+ async function findSymbol(db, query, limit = 50) {
157
+ const rows = db.prepare(`
158
+ SELECT * FROM symbols
159
+ WHERE name LIKE $pattern
160
+ ORDER BY
161
+ CASE WHEN name = $exact THEN 0
162
+ WHEN name LIKE $prefix THEN 1
163
+ ELSE 2 END,
164
+ name
165
+ LIMIT $limit
166
+ `).all({
167
+ pattern: `%${query}%`,
168
+ exact: query,
169
+ prefix: `${query}%`,
170
+ limit,
171
+ });
172
+ return rows.map(rowToSymbol);
173
+ }
174
+ /**
175
+ * Return all symbols (in other files) that import the given file.
176
+ */
177
+ async function getImporters(db, filePath) {
178
+ const rows = db.prepare(`
179
+ SELECT
180
+ s.id, s.name, s.kind, s.file, s.line, s.signature, s.docstring,
181
+ e.line AS import_line
182
+ FROM edges e
183
+ JOIN symbols s ON s.id = e.from_symbol
184
+ WHERE e.kind = 'imports'
185
+ AND e.to_symbol IN (SELECT id FROM symbols WHERE file = $file OR file = $absFile)
186
+ GROUP BY s.file
187
+ ORDER BY s.file
188
+ `).all({ file: filePath, absFile: filePath });
189
+ return rows.map((row) => ({
190
+ symbol: rowToSymbol(row),
191
+ line: row["import_line"] ?? row["line"],
192
+ }));
193
+ }
194
+ /**
195
+ * Find all indexed files whose path matches a glob-style pattern.
196
+ * Supports * (any chars except /) and ** (any chars including /).
197
+ */
198
+ async function searchFiles(db, pattern) {
199
+ // Convert glob pattern to SQL LIKE pattern
200
+ const sqlPattern = pattern
201
+ .replace(/%/g, "\\%") // escape existing %
202
+ .replace(/\*\*/g, "%") // ** → %
203
+ .replace(/\*/g, "%"); // * → %
204
+ const rows = db.prepare(`SELECT DISTINCT file FROM symbols WHERE file LIKE $pattern ESCAPE '\\' ORDER BY file`).all({ pattern: sqlPattern });
205
+ return rows.map((r) => r.file);
206
+ }
118
207
  /**
119
208
  * Best-effort: find the type/interface a symbol references.
120
209
  */
@@ -1 +1 @@
1
- {"version":3,"file":"queries.js","sourceRoot":"","sources":["../../src/graph/queries.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"queries.js","sourceRoot":"","sources":["../../src/graph/queries.ts"],"names":[],"mappings":"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"}
@@ -20,7 +20,7 @@
20
20
  export declare function runPythonIndexer(repoPath: string): Promise<string>;
21
21
  /**
22
22
  * Run the TypeScript/JavaScript SCIP indexer against repoPath.
23
- * Uses npx so no global install is required — npx caches on first run.
23
+ * Auto-detects monorepo type and uses the appropriate scip-typescript flags.
24
24
  * Returns the path to the generated .scip file.
25
25
  */
26
26
  export declare function runTypescriptIndexer(repoPath: string): Promise<string>;
@@ -1 +1 @@
1
- {"version":3,"file":"scip-runner.d.ts","sourceRoot":"","sources":["../../src/indexer/scip-runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AA4CH;;;;;;;;;GASG;AACH,wBAAsB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAoDxE;AAMD;;;;GAIG;AACH,wBAAsB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CA4B5E"}
1
+ {"version":3,"file":"scip-runner.d.ts","sourceRoot":"","sources":["../../src/indexer/scip-runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AA4CH;;;;;;;;;GASG;AACH,wBAAsB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAoDxE;AA8DD;;;;GAIG;AACH,wBAAsB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAwC5E"}
@@ -97,33 +97,97 @@ async function runPythonIndexer(repoPath) {
97
97
  }
98
98
  return outputPath;
99
99
  }
100
- // ---------------------------------------------------------------------------
101
- // TypeScript / JavaScript indexer (@sourcegraph/scip-typescript)
102
- // ---------------------------------------------------------------------------
100
+ async function fileExists(p) {
101
+ return promises_1.default.access(p).then(() => true).catch(() => false);
102
+ }
103
+ /**
104
+ * Detect the best indexing strategy for the repo.
105
+ *
106
+ * Tier 1: pnpm-workspace.yaml → --pnpm-workspaces (native, single run)
107
+ * Tier 2: package.json#workspaces or lerna.json → --yarn-workspaces
108
+ * Tier 3: root tsconfig.json (may have project references) → pass as positional arg
109
+ * Tier 4: filesystem walk — find first tsconfig.json in common monorepo dirs
110
+ * Tier 5: fallback (no tsconfig found, let scip-typescript try from root)
111
+ */
112
+ async function detectStrategy(repoPath) {
113
+ // Tier 1: pnpm workspaces
114
+ if (await fileExists(node_path_1.default.join(repoPath, "pnpm-workspace.yaml"))) {
115
+ return { kind: "pnpm-workspaces" };
116
+ }
117
+ // Tier 2: yarn/npm workspaces or lerna
118
+ if (await fileExists(node_path_1.default.join(repoPath, "lerna.json"))) {
119
+ return { kind: "yarn-workspaces" };
120
+ }
121
+ try {
122
+ const pkg = JSON.parse(await promises_1.default.readFile(node_path_1.default.join(repoPath, "package.json"), "utf8"));
123
+ if (pkg.workspaces)
124
+ return { kind: "yarn-workspaces" };
125
+ }
126
+ catch { /* no package.json */ }
127
+ // Tier 3: root tsconfig.json (handles project references automatically)
128
+ const rootTsconfig = node_path_1.default.join(repoPath, "tsconfig.json");
129
+ if (await fileExists(rootTsconfig)) {
130
+ return { kind: "tsconfig-root", tsconfig: rootTsconfig };
131
+ }
132
+ // Tier 4: search one level deep in common monorepo dirs
133
+ const searchDirs = ["packages", "apps", "applications", "src"];
134
+ for (const dir of searchDirs) {
135
+ let entries;
136
+ try {
137
+ entries = await promises_1.default.readdir(node_path_1.default.join(repoPath, dir));
138
+ }
139
+ catch {
140
+ continue;
141
+ }
142
+ for (const entry of entries) {
143
+ const candidate = node_path_1.default.join(repoPath, dir, entry, "tsconfig.json");
144
+ if (await fileExists(candidate)) {
145
+ return { kind: "tsconfig-root", tsconfig: candidate };
146
+ }
147
+ }
148
+ }
149
+ return { kind: "fallback" };
150
+ }
103
151
  /**
104
152
  * Run the TypeScript/JavaScript SCIP indexer against repoPath.
105
- * Uses npx so no global install is required — npx caches on first run.
153
+ * Auto-detects monorepo type and uses the appropriate scip-typescript flags.
106
154
  * Returns the path to the generated .scip file.
107
155
  */
108
156
  async function runTypescriptIndexer(repoPath) {
109
157
  const outputPath = node_path_1.default.join(repoPath, ".ariadne", "index-ts.scip");
110
- // If a fresh SCIP file already exists (< 24 h old), skip re-indexing.
111
- // This avoids a 5–10 min scip-typescript run when only the DB load needs to
112
- // be re-done (e.g. after a crash during the loading phase).
158
+ // Reuse fresh index (< 24 h old)
113
159
  try {
114
- const stat = await promises_1.default.stat(outputPath);
115
- const ageMs = Date.now() - stat.mtimeMs;
160
+ const ageMs = Date.now() - (await promises_1.default.stat(outputPath)).mtimeMs;
116
161
  if (ageMs < 24 * 60 * 60 * 1000) {
117
162
  process.stderr.write("→ Reusing existing TypeScript SCIP index (< 24 h old).\n");
118
163
  return outputPath;
119
164
  }
120
165
  }
121
- catch {
122
- // File doesn't exist yet — proceed to index
166
+ catch { /* no existing index */ }
167
+ const strategy = await detectStrategy(repoPath);
168
+ const baseArgs = ["--yes", "@sourcegraph/scip-typescript", "index",
169
+ "--cwd", repoPath, "--output", outputPath];
170
+ let args;
171
+ switch (strategy.kind) {
172
+ case "pnpm-workspaces":
173
+ process.stderr.write("→ Indexing TypeScript/JavaScript files (pnpm workspaces)...\n");
174
+ args = [...baseArgs, "--pnpm-workspaces"];
175
+ break;
176
+ case "yarn-workspaces":
177
+ process.stderr.write("→ Indexing TypeScript/JavaScript files (yarn/npm workspaces)...\n");
178
+ args = [...baseArgs, "--yarn-workspaces"];
179
+ break;
180
+ case "tsconfig-root": {
181
+ const rel = node_path_1.default.relative(repoPath, strategy.tsconfig);
182
+ process.stderr.write(`→ Indexing TypeScript/JavaScript files (tsconfig: ${rel})...\n`);
183
+ args = [...baseArgs, strategy.tsconfig];
184
+ break;
185
+ }
186
+ default:
187
+ process.stderr.write("→ Indexing TypeScript/JavaScript files...\n");
188
+ args = baseArgs;
123
189
  }
124
- process.stderr.write(" Indexing TypeScript/JavaScript files...\n");
125
- // npx --yes auto-installs the package if not cached
126
- await runSubprocess("npx", ["--yes", "@sourcegraph/scip-typescript", "index", "--output", outputPath], repoPath);
190
+ await runSubprocess("npx", args, repoPath);
127
191
  await promises_1.default.access(outputPath);
128
192
  return outputPath;
129
193
  }
@@ -1 +1 @@
1
- {"version":3,"file":"scip-runner.js","sourceRoot":"","sources":["../../src/indexer/scip-runner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scip-runner.js","sourceRoot":"","sources":["../../src/indexer/scip-runner.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAoBpE,wBAAgB,YAAY,IAAI,SAAS,CA0HxC"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAuBpE,wBAAgB,YAAY,IAAI,SAAS,CAwJxC"}
package/dist/server.js CHANGED
@@ -22,7 +22,7 @@ function createServer() {
22
22
  { type: "text", text: await (0, index_js_1.handleGetDefinition)((0, db_js_1.getDb)(), { symbol, file }) },
23
23
  ],
24
24
  }));
25
- server.tool("get_callers", "List all call sites that invoke the given symbol.", { symbol: zod_1.z.string().describe("Symbol name to find callers for") }, async ({ symbol }) => ({
25
+ server.tool("get_callers", "List all call sites that invoke the given symbol. For classes, also returns import and registration sites (e.g. NestJS module registrations).", { symbol: zod_1.z.string().describe("Symbol name to find callers for") }, async ({ symbol }) => ({
26
26
  content: [{ type: "text", text: await (0, index_js_1.handleGetCallers)((0, db_js_1.getDb)(), { symbol }) }],
27
27
  }));
28
28
  server.tool("get_callees", "List all symbols that the given symbol calls.", { symbol: zod_1.z.string().describe("Symbol name to find callees for") }, async ({ symbol }) => ({
@@ -45,8 +45,11 @@ function createServer() {
45
45
  server.tool("get_references", "Find every place in the repo that references the given symbol.", { symbol: zod_1.z.string().describe("Symbol name to find references for") }, async ({ symbol }) => ({
46
46
  content: [{ type: "text", text: await (0, index_js_1.handleGetReferences)((0, db_js_1.getDb)(), { symbol }) }],
47
47
  }));
48
- server.tool("get_file_symbols", "Return the full symbol map for a file every function, class, and method defined in it.", { file: zod_1.z.string().describe("Repo-relative or absolute path to the file") }, async ({ file }) => ({
49
- content: [{ type: "text", text: await (0, index_js_1.handleGetFileSymbols)((0, db_js_1.getDb)(), { file }) }],
48
+ server.tool("get_file_symbols", "Return every symbol defined in a file or directory. Pass a file path (e.g. src/auth/guard.ts) for a single file, or a directory path (e.g. src/modules/copilot) to get all symbols across every file in that directory. Use the optional 'query' param to filter by name (e.g. query='password' returns only symbols whose name contains 'password').", {
49
+ file: zod_1.z.string().describe("Repo-relative path to a file or directory"),
50
+ query: zod_1.z.string().optional().describe("Optional: filter symbols by name (case-insensitive substring match)"),
51
+ }, async ({ file, query }) => ({
52
+ content: [{ type: "text", text: await (0, index_js_1.handleGetFileSymbols)((0, db_js_1.getDb)(), { file, query }) }],
50
53
  }));
51
54
  server.tool("get_type_definition", "Best-effort: find the type or interface that a symbol references.", { symbol: zod_1.z.string().describe("Symbol name to look up the type for") }, async ({ symbol }) => ({
52
55
  content: [
@@ -69,6 +72,15 @@ function createServer() {
69
72
  "If state is not 'ready', tell the user the index is still being built and they should wait.", {}, async () => ({
70
73
  content: [{ type: "text", text: (0, index_js_1.handleGetIndexStatus)() }],
71
74
  }));
75
+ server.tool("find_symbol", "Fuzzy search for symbols by name across the entire codebase. Use when you don't know the exact symbol name — e.g. find_symbol('password') returns all symbols whose name contains 'password'. Replaces glob patterns like **/*password*.", { query: zod_1.z.string().describe("Substring to search for in symbol names (case-insensitive)") }, async ({ query }) => ({
76
+ content: [{ type: "text", text: await (0, index_js_1.handleFindSymbol)((0, db_js_1.getDb)(), { query }) }],
77
+ }));
78
+ server.tool("get_importers", "Find all files that import a given file. Use this to trace usage upward through the module tree — e.g. get_importers('src/services/auth-service.ts') shows every file that imports it.", { file: zod_1.z.string().describe("Repo-relative path to the file") }, async ({ file }) => ({
79
+ content: [{ type: "text", text: await (0, index_js_1.handleGetImporters)((0, db_js_1.getDb)(), { file }) }],
80
+ }));
81
+ server.tool("search_files", "Find all indexed files whose path matches a pattern. Supports * (any chars) and ** (any path segment). E.g. search_files('**/*password*') finds all files with 'password' in the name. Replaces glob.", { pattern: zod_1.z.string().describe("Glob-style pattern (e.g. **/*password*, src/modules/**)") }, async ({ pattern }) => ({
82
+ content: [{ type: "text", text: await (0, index_js_1.handleSearchFiles)((0, db_js_1.getDb)(), { pattern }) }],
83
+ }));
72
84
  return server;
73
85
  }
74
86
  //# sourceMappingURL=server.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import type { Database } from "../graph/db.js";
2
+ export declare const FIND_SYMBOL_TOOL: {
3
+ readonly name: "find_symbol";
4
+ readonly description: "Fuzzy search for symbols by name across the entire codebase. Use this when you don't know the exact symbol name — e.g. find_symbol('password') returns all symbols whose name contains 'password'. Replaces glob patterns like **/*password*.";
5
+ readonly inputSchema: {
6
+ readonly type: "object";
7
+ readonly properties: {
8
+ readonly query: {
9
+ readonly type: "string";
10
+ readonly description: "Substring to search for in symbol names (case-insensitive)";
11
+ };
12
+ };
13
+ readonly required: readonly ["query"];
14
+ };
15
+ };
16
+ export declare function handleFindSymbol(db: Database.Database, args: {
17
+ query: string;
18
+ }): Promise<string>;
19
+ //# sourceMappingURL=find-symbol.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"find-symbol.d.ts","sourceRoot":"","sources":["../../src/tools/find-symbol.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAI/C,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;CAUnB,CAAC;AAEX,wBAAsB,gBAAgB,CACpC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,IAAI,EAAE;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,GACtB,OAAO,CAAC,MAAM,CAAC,CAMjB"}
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FIND_SYMBOL_TOOL = void 0;
4
+ exports.handleFindSymbol = handleFindSymbol;
5
+ const queries_js_1 = require("../graph/queries.js");
6
+ const format_js_1 = require("./format.js");
7
+ exports.FIND_SYMBOL_TOOL = {
8
+ name: "find_symbol",
9
+ description: "Fuzzy search for symbols by name across the entire codebase. Use this when you don't know the exact symbol name — e.g. find_symbol('password') returns all symbols whose name contains 'password'. Replaces glob patterns like **/*password*.",
10
+ inputSchema: {
11
+ type: "object",
12
+ properties: {
13
+ query: { type: "string", description: "Substring to search for in symbol names (case-insensitive)" },
14
+ },
15
+ required: ["query"],
16
+ },
17
+ };
18
+ async function handleFindSymbol(db, args) {
19
+ const results = await (0, queries_js_1.findSymbol)(db, args.query);
20
+ if (results.length === 0)
21
+ return `No symbols found matching "${args.query}".`;
22
+ const { items, note } = (0, format_js_1.cap)(results, "symbols");
23
+ const out = items.map(format_js_1.fmtSymbol);
24
+ return JSON.stringify(note ? { note, symbols: out } : out, null, 2);
25
+ }
26
+ //# sourceMappingURL=find-symbol.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"find-symbol.js","sourceRoot":"","sources":["../../src/tools/find-symbol.ts"],"names":[],"mappings":";;;AAiBA,4CASC;AAxBD,oDAAiD;AACjD,2CAA6C;AAEhC,QAAA,gBAAgB,GAAG;IAC9B,IAAI,EAAE,aAAa;IACnB,WAAW,EAAE,+OAA+O;IAC5P,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,4DAA4D,EAAE;SACrG;QACD,QAAQ,EAAE,CAAC,OAAO,CAAC;KACpB;CACO,CAAC;AAEJ,KAAK,UAAU,gBAAgB,CACpC,EAAqB,EACrB,IAAuB;IAEvB,MAAM,OAAO,GAAG,MAAM,IAAA,uBAAU,EAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACjD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,8BAA8B,IAAI,CAAC,KAAK,IAAI,CAAC;IAC9E,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,IAAA,eAAG,EAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IAChD,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,qBAAS,CAAC,CAAC;IACjC,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AACtE,CAAC"}
@@ -1,13 +1,17 @@
1
1
  import type { Database } from "../graph/db.js";
2
2
  export declare const GET_FILE_SYMBOLS_TOOL: {
3
3
  readonly name: "get_file_symbols";
4
- readonly description: "Return the full symbol map for a file every function, class, and method defined in it.";
4
+ readonly description: "Return every symbol defined in a file or directory. Pass a file path (e.g. src/auth/guard.ts) for a single file, or a directory path (e.g. src/modules/copilot) to get all symbols across every file in that directory. Use the optional 'query' param to filter by name (e.g. query='password' returns only symbols whose name contains 'password').";
5
5
  readonly inputSchema: {
6
6
  readonly type: "object";
7
7
  readonly properties: {
8
8
  readonly file: {
9
9
  readonly type: "string";
10
- readonly description: "Repo-relative path to the file";
10
+ readonly description: "Repo-relative path to a file or directory";
11
+ };
12
+ readonly query: {
13
+ readonly type: "string";
14
+ readonly description: "Optional: filter symbols by name (case-insensitive substring match)";
11
15
  };
12
16
  };
13
17
  readonly required: readonly ["file"];
@@ -15,5 +19,6 @@ export declare const GET_FILE_SYMBOLS_TOOL: {
15
19
  };
16
20
  export declare function handleGetFileSymbols(db: Database.Database, args: {
17
21
  file: string;
22
+ query?: string;
18
23
  }): Promise<string>;
19
24
  //# sourceMappingURL=get-file-symbols.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"get-file-symbols.d.ts","sourceRoot":"","sources":["../../src/tools/get-file-symbols.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAI/C,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;CAUxB,CAAC;AAEX,wBAAsB,oBAAoB,CACxC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,IAAI,EAAE;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GACrB,OAAO,CAAC,MAAM,CAAC,CAYjB"}
1
+ {"version":3,"file":"get-file-symbols.d.ts","sourceRoot":"","sources":["../../src/tools/get-file-symbols.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAI/C,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;CAWxB,CAAC;AAEX,wBAAsB,oBAAoB,CACxC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,IAAI,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GACrC,OAAO,CAAC,MAAM,CAAC,CA0BjB"}
@@ -1,28 +1,51 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
6
  exports.GET_FILE_SYMBOLS_TOOL = void 0;
4
7
  exports.handleGetFileSymbols = handleGetFileSymbols;
8
+ // MCP tool: get_file_symbols
9
+ const node_path_1 = __importDefault(require("node:path"));
5
10
  const queries_js_1 = require("../graph/queries.js");
6
11
  const format_js_1 = require("./format.js");
7
12
  exports.GET_FILE_SYMBOLS_TOOL = {
8
13
  name: "get_file_symbols",
9
- description: "Return the full symbol map for a file every function, class, and method defined in it.",
14
+ description: "Return every symbol defined in a file or directory. Pass a file path (e.g. src/auth/guard.ts) for a single file, or a directory path (e.g. src/modules/copilot) to get all symbols across every file in that directory. Use the optional 'query' param to filter by name (e.g. query='password' returns only symbols whose name contains 'password').",
10
15
  inputSchema: {
11
16
  type: "object",
12
17
  properties: {
13
- file: { type: "string", description: "Repo-relative path to the file" },
18
+ file: { type: "string", description: "Repo-relative path to a file or directory" },
19
+ query: { type: "string", description: "Optional: filter symbols by name (case-insensitive substring match)" },
14
20
  },
15
21
  required: ["file"],
16
22
  },
17
23
  };
18
24
  async function handleGetFileSymbols(db, args) {
19
- // Accept both absolute and relative paths
20
- const absFile = args.file.startsWith("/") ? args.file : `${process.cwd()}/${args.file}`;
21
- let results = await (0, queries_js_1.getFileSymbols)(db, absFile);
22
- if (results.length === 0)
23
- results = await (0, queries_js_1.getFileSymbols)(db, args.file);
24
- if (results.length === 0) {
25
- return `No symbols found in "${args.file}". The file may not have been indexed, or the path may be incorrect.`;
25
+ const input = args.file;
26
+ const isDir = !node_path_1.default.extname(input);
27
+ let results;
28
+ if (isDir) {
29
+ const absDir = input.startsWith("/") ? input : node_path_1.default.join(process.cwd(), input);
30
+ results = await (0, queries_js_1.getDirectorySymbols)(db, absDir);
31
+ if (results.length === 0)
32
+ results = await (0, queries_js_1.getDirectorySymbols)(db, input);
33
+ if (results.length === 0)
34
+ return `No symbols found under "${input}".`;
35
+ }
36
+ else {
37
+ const absFile = input.startsWith("/") ? input : node_path_1.default.join(process.cwd(), input);
38
+ results = await (0, queries_js_1.getFileSymbols)(db, absFile);
39
+ if (results.length === 0)
40
+ results = await (0, queries_js_1.getFileSymbols)(db, input);
41
+ if (results.length === 0)
42
+ return `No symbols found in "${input}". The file may not have been indexed, or the path may be incorrect.`;
43
+ }
44
+ if (args.query) {
45
+ const q = args.query.toLowerCase();
46
+ results = results.filter((s) => s.name.toLowerCase().includes(q));
47
+ if (results.length === 0)
48
+ return `No symbols matching "${args.query}" found in "${input}".`;
26
49
  }
27
50
  const { items, note } = (0, format_js_1.cap)(results, "symbols");
28
51
  const out = items.map(format_js_1.fmtSymbol);
@@ -1 +1 @@
1
- {"version":3,"file":"get-file-symbols.js","sourceRoot":"","sources":["../../src/tools/get-file-symbols.ts"],"names":[],"mappings":";;;AAiBA,oDAeC;AA9BD,oDAAqD;AACrD,2CAA6C;AAEhC,QAAA,qBAAqB,GAAG;IACnC,IAAI,EAAE,kBAAkB;IACxB,WAAW,EAAE,0FAA0F;IACvG,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,gCAAgC,EAAE;SACxE;QACD,QAAQ,EAAE,CAAC,MAAM,CAAC;KACnB;CACO,CAAC;AAEJ,KAAK,UAAU,oBAAoB,CACxC,EAAqB,EACrB,IAAsB;IAEtB,0CAA0C;IAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;IACxF,IAAI,OAAO,GAAG,MAAM,IAAA,2BAAc,EAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IAChD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,GAAG,MAAM,IAAA,2BAAc,EAAC,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACxE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,wBAAwB,IAAI,CAAC,IAAI,sEAAsE,CAAC;IACjH,CAAC;IAED,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,IAAA,eAAG,EAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IAChD,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,qBAAS,CAAC,CAAC;IACjC,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AACtE,CAAC"}
1
+ {"version":3,"file":"get-file-symbols.js","sourceRoot":"","sources":["../../src/tools/get-file-symbols.ts"],"names":[],"mappings":";;;;;;AAmBA,oDA6BC;AAhDD,6BAA6B;AAC7B,0DAA6B;AAE7B,oDAA0E;AAC1E,2CAA6C;AAEhC,QAAA,qBAAqB,GAAG;IACnC,IAAI,EAAE,kBAAkB;IACxB,WAAW,EAAE,uVAAuV;IACpW,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,IAAI,EAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,2CAA2C,EAAE;YACnF,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,qEAAqE,EAAE;SAC9G;QACD,QAAQ,EAAE,CAAC,MAAM,CAAC;KACnB;CACO,CAAC;AAEJ,KAAK,UAAU,oBAAoB,CACxC,EAAqB,EACrB,IAAsC;IAEtC,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC;IACxB,MAAM,KAAK,GAAG,CAAC,mBAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAEnC,IAAI,OAAO,CAAC;IACZ,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,MAAM,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,mBAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,KAAK,CAAC,CAAC;QAC/E,OAAO,GAAG,MAAM,IAAA,gCAAmB,EAAC,EAAE,EAAE,MAAM,CAAC,CAAC;QAChD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,GAAG,MAAM,IAAA,gCAAmB,EAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QACzE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,2BAA2B,KAAK,IAAI,CAAC;IACxE,CAAC;SAAM,CAAC;QACN,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,mBAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,KAAK,CAAC,CAAC;QAChF,OAAO,GAAG,MAAM,IAAA,2BAAc,EAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QAC5C,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,GAAG,MAAM,IAAA,2BAAc,EAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QACpE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,wBAAwB,KAAK,sEAAsE,CAAC;IACvI,CAAC;IAED,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;QACnC,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QAClE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,wBAAwB,IAAI,CAAC,KAAK,eAAe,KAAK,IAAI,CAAC;IAC9F,CAAC;IAED,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,IAAA,eAAG,EAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IAChD,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,qBAAS,CAAC,CAAC;IACjC,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AACtE,CAAC"}
@@ -0,0 +1,19 @@
1
+ import type { Database } from "../graph/db.js";
2
+ export declare const GET_IMPORTERS_TOOL: {
3
+ readonly name: "get_importers";
4
+ readonly description: "Find all files that import a given file. Use this to trace usage upward through the module tree — e.g. get_importers('src/services/auth-service.ts') shows every file that imports it.";
5
+ readonly inputSchema: {
6
+ readonly type: "object";
7
+ readonly properties: {
8
+ readonly file: {
9
+ readonly type: "string";
10
+ readonly description: "Repo-relative path to the file";
11
+ };
12
+ };
13
+ readonly required: readonly ["file"];
14
+ };
15
+ };
16
+ export declare function handleGetImporters(db: Database.Database, args: {
17
+ file: string;
18
+ }): Promise<string>;
19
+ //# sourceMappingURL=get-importers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-importers.d.ts","sourceRoot":"","sources":["../../src/tools/get-importers.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAI/C,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;CAUrB,CAAC;AAEX,wBAAsB,kBAAkB,CACtC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,IAAI,EAAE;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GACrB,OAAO,CAAC,MAAM,CAAC,CAUjB"}
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GET_IMPORTERS_TOOL = void 0;
4
+ exports.handleGetImporters = handleGetImporters;
5
+ const queries_js_1 = require("../graph/queries.js");
6
+ const format_js_1 = require("./format.js");
7
+ exports.GET_IMPORTERS_TOOL = {
8
+ name: "get_importers",
9
+ description: "Find all files that import a given file. Use this to trace usage upward through the module tree — e.g. get_importers('src/services/auth-service.ts') shows every file that imports it.",
10
+ inputSchema: {
11
+ type: "object",
12
+ properties: {
13
+ file: { type: "string", description: "Repo-relative path to the file" },
14
+ },
15
+ required: ["file"],
16
+ },
17
+ };
18
+ async function handleGetImporters(db, args) {
19
+ const absFile = args.file.startsWith("/") ? args.file : `${process.cwd()}/${args.file}`;
20
+ let results = await (0, queries_js_1.getImporters)(db, absFile);
21
+ if (results.length === 0)
22
+ results = await (0, queries_js_1.getImporters)(db, args.file);
23
+ if (results.length === 0)
24
+ return `No importers found for "${args.file}".`;
25
+ const callSites = results.map((r) => ({ caller: r.symbol, line: r.line }));
26
+ const { items, note } = (0, format_js_1.cap)(callSites, "importers");
27
+ const out = items.map(format_js_1.fmtCallSite);
28
+ return JSON.stringify(note ? { note, importers: out } : out, null, 2);
29
+ }
30
+ //# sourceMappingURL=get-importers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-importers.js","sourceRoot":"","sources":["../../src/tools/get-importers.ts"],"names":[],"mappings":";;;AAiBA,gDAaC;AA5BD,oDAAmD;AACnD,2CAA+C;AAElC,QAAA,kBAAkB,GAAG;IAChC,IAAI,EAAE,eAAe;IACrB,WAAW,EAAE,wLAAwL;IACrM,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,gCAAgC,EAAE;SACxE;QACD,QAAQ,EAAE,CAAC,MAAM,CAAC;KACnB;CACO,CAAC;AAEJ,KAAK,UAAU,kBAAkB,CACtC,EAAqB,EACrB,IAAsB;IAEtB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;IACxF,IAAI,OAAO,GAAG,MAAM,IAAA,yBAAY,EAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IAC9C,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,GAAG,MAAM,IAAA,yBAAY,EAAC,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACtE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,2BAA2B,IAAI,CAAC,IAAI,IAAI,CAAC;IAE1E,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAC3E,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,IAAA,eAAG,EAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IACpD,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,uBAAW,CAAC,CAAC;IACnC,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AACxE,CAAC"}
@@ -8,6 +8,9 @@ export { GET_FILE_SYMBOLS_TOOL, handleGetFileSymbols } from "./get-file-symbols.
8
8
  export { GET_TYPE_DEFINITION_TOOL, handleGetTypeDefinition } from "./get-type-definition.js";
9
9
  export { GET_SOURCE_DEFINITION_TOOL, handleGetSourceDefinition } from "./get-source-definition.js";
10
10
  export { GET_INDEX_STATUS_TOOL, handleGetIndexStatus } from "./get-index-status.js";
11
+ export { FIND_SYMBOL_TOOL, handleFindSymbol } from "./find-symbol.js";
12
+ export { GET_IMPORTERS_TOOL, handleGetImporters } from "./get-importers.js";
13
+ export { SEARCH_FILES_TOOL, handleSearchFiles } from "./search-files.js";
11
14
  export declare const ALL_TOOLS: ({
12
15
  readonly name: "get_definition";
13
16
  readonly description: "Find where a symbol is defined — returns its file, line, and signature.";
@@ -96,13 +99,17 @@ export declare const ALL_TOOLS: ({
96
99
  };
97
100
  } | {
98
101
  readonly name: "get_file_symbols";
99
- readonly description: "Return the full symbol map for a file every function, class, and method defined in it.";
102
+ readonly description: "Return every symbol defined in a file or directory. Pass a file path (e.g. src/auth/guard.ts) for a single file, or a directory path (e.g. src/modules/copilot) to get all symbols across every file in that directory. Use the optional 'query' param to filter by name (e.g. query='password' returns only symbols whose name contains 'password').";
100
103
  readonly inputSchema: {
101
104
  readonly type: "object";
102
105
  readonly properties: {
103
106
  readonly file: {
104
107
  readonly type: "string";
105
- readonly description: "Repo-relative path to the file";
108
+ readonly description: "Repo-relative path to a file or directory";
109
+ };
110
+ readonly query: {
111
+ readonly type: "string";
112
+ readonly description: "Optional: filter symbols by name (case-insensitive substring match)";
106
113
  };
107
114
  };
108
115
  readonly required: readonly ["file"];
@@ -145,5 +152,44 @@ export declare const ALL_TOOLS: ({
145
152
  readonly properties: {};
146
153
  readonly required: readonly [];
147
154
  };
155
+ } | {
156
+ readonly name: "find_symbol";
157
+ readonly description: "Fuzzy search for symbols by name across the entire codebase. Use this when you don't know the exact symbol name — e.g. find_symbol('password') returns all symbols whose name contains 'password'. Replaces glob patterns like **/*password*.";
158
+ readonly inputSchema: {
159
+ readonly type: "object";
160
+ readonly properties: {
161
+ readonly query: {
162
+ readonly type: "string";
163
+ readonly description: "Substring to search for in symbol names (case-insensitive)";
164
+ };
165
+ };
166
+ readonly required: readonly ["query"];
167
+ };
168
+ } | {
169
+ readonly name: "get_importers";
170
+ readonly description: "Find all files that import a given file. Use this to trace usage upward through the module tree — e.g. get_importers('src/services/auth-service.ts') shows every file that imports it.";
171
+ readonly inputSchema: {
172
+ readonly type: "object";
173
+ readonly properties: {
174
+ readonly file: {
175
+ readonly type: "string";
176
+ readonly description: "Repo-relative path to the file";
177
+ };
178
+ };
179
+ readonly required: readonly ["file"];
180
+ };
181
+ } | {
182
+ readonly name: "search_files";
183
+ readonly description: "Find all indexed files whose path matches a pattern. Supports * (any chars) and ** (any path segment). E.g. search_files('**/*password*') finds all files with 'password' in the name. Replaces glob.";
184
+ readonly inputSchema: {
185
+ readonly type: "object";
186
+ readonly properties: {
187
+ readonly pattern: {
188
+ readonly type: "string";
189
+ readonly description: "Glob-style pattern (e.g. **/*password*, src/modules/**)";
190
+ };
191
+ };
192
+ readonly required: readonly ["pattern"];
193
+ };
148
194
  })[];
149
195
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC/E,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAC9F,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC3E,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC/E,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AACpF,OAAO,EAAE,wBAAwB,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AAC7F,OAAO,EAAE,0BAA0B,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AACnG,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAapF,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAWrB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC/E,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAC9F,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC3E,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC/E,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AACpF,OAAO,EAAE,wBAAwB,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AAC7F,OAAO,EAAE,0BAA0B,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AACnG,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AACpF,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC5E,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAgBzE,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAcrB,CAAC"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ALL_TOOLS = exports.handleGetIndexStatus = exports.GET_INDEX_STATUS_TOOL = exports.handleGetSourceDefinition = exports.GET_SOURCE_DEFINITION_TOOL = exports.handleGetTypeDefinition = exports.GET_TYPE_DEFINITION_TOOL = exports.handleGetFileSymbols = exports.GET_FILE_SYMBOLS_TOOL = exports.handleGetReferences = exports.GET_REFERENCES_TOOL = exports.handleGetCallPath = exports.GET_CALL_PATH_TOOL = exports.handleGetImplementations = exports.GET_IMPLEMENTATIONS_TOOL = exports.handleGetCallees = exports.GET_CALLEES_TOOL = exports.handleGetCallers = exports.GET_CALLERS_TOOL = exports.handleGetDefinition = exports.GET_DEFINITION_TOOL = void 0;
3
+ exports.ALL_TOOLS = exports.handleSearchFiles = exports.SEARCH_FILES_TOOL = exports.handleGetImporters = exports.GET_IMPORTERS_TOOL = exports.handleFindSymbol = exports.FIND_SYMBOL_TOOL = exports.handleGetIndexStatus = exports.GET_INDEX_STATUS_TOOL = exports.handleGetSourceDefinition = exports.GET_SOURCE_DEFINITION_TOOL = exports.handleGetTypeDefinition = exports.GET_TYPE_DEFINITION_TOOL = exports.handleGetFileSymbols = exports.GET_FILE_SYMBOLS_TOOL = exports.handleGetReferences = exports.GET_REFERENCES_TOOL = exports.handleGetCallPath = exports.GET_CALL_PATH_TOOL = exports.handleGetImplementations = exports.GET_IMPLEMENTATIONS_TOOL = exports.handleGetCallees = exports.GET_CALLEES_TOOL = exports.handleGetCallers = exports.GET_CALLERS_TOOL = exports.handleGetDefinition = exports.GET_DEFINITION_TOOL = void 0;
4
4
  // Barrel: re-export all tool definitions and handlers.
5
5
  var get_definition_js_1 = require("./get-definition.js");
6
6
  Object.defineProperty(exports, "GET_DEFINITION_TOOL", { enumerable: true, get: function () { return get_definition_js_1.GET_DEFINITION_TOOL; } });
@@ -32,6 +32,15 @@ Object.defineProperty(exports, "handleGetSourceDefinition", { enumerable: true,
32
32
  var get_index_status_js_1 = require("./get-index-status.js");
33
33
  Object.defineProperty(exports, "GET_INDEX_STATUS_TOOL", { enumerable: true, get: function () { return get_index_status_js_1.GET_INDEX_STATUS_TOOL; } });
34
34
  Object.defineProperty(exports, "handleGetIndexStatus", { enumerable: true, get: function () { return get_index_status_js_1.handleGetIndexStatus; } });
35
+ var find_symbol_js_1 = require("./find-symbol.js");
36
+ Object.defineProperty(exports, "FIND_SYMBOL_TOOL", { enumerable: true, get: function () { return find_symbol_js_1.FIND_SYMBOL_TOOL; } });
37
+ Object.defineProperty(exports, "handleFindSymbol", { enumerable: true, get: function () { return find_symbol_js_1.handleFindSymbol; } });
38
+ var get_importers_js_1 = require("./get-importers.js");
39
+ Object.defineProperty(exports, "GET_IMPORTERS_TOOL", { enumerable: true, get: function () { return get_importers_js_1.GET_IMPORTERS_TOOL; } });
40
+ Object.defineProperty(exports, "handleGetImporters", { enumerable: true, get: function () { return get_importers_js_1.handleGetImporters; } });
41
+ var search_files_js_1 = require("./search-files.js");
42
+ Object.defineProperty(exports, "SEARCH_FILES_TOOL", { enumerable: true, get: function () { return search_files_js_1.SEARCH_FILES_TOOL; } });
43
+ Object.defineProperty(exports, "handleSearchFiles", { enumerable: true, get: function () { return search_files_js_1.handleSearchFiles; } });
35
44
  const get_definition_js_2 = require("./get-definition.js");
36
45
  const get_callers_js_2 = require("./get-callers.js");
37
46
  const get_callees_js_2 = require("./get-callees.js");
@@ -42,6 +51,9 @@ const get_file_symbols_js_2 = require("./get-file-symbols.js");
42
51
  const get_type_definition_js_2 = require("./get-type-definition.js");
43
52
  const get_source_definition_js_2 = require("./get-source-definition.js");
44
53
  const get_index_status_js_2 = require("./get-index-status.js");
54
+ const find_symbol_js_2 = require("./find-symbol.js");
55
+ const get_importers_js_2 = require("./get-importers.js");
56
+ const search_files_js_2 = require("./search-files.js");
45
57
  exports.ALL_TOOLS = [
46
58
  get_definition_js_2.GET_DEFINITION_TOOL,
47
59
  get_callers_js_2.GET_CALLERS_TOOL,
@@ -53,5 +65,8 @@ exports.ALL_TOOLS = [
53
65
  get_type_definition_js_2.GET_TYPE_DEFINITION_TOOL,
54
66
  get_source_definition_js_2.GET_SOURCE_DEFINITION_TOOL,
55
67
  get_index_status_js_2.GET_INDEX_STATUS_TOOL,
68
+ find_symbol_js_2.FIND_SYMBOL_TOOL,
69
+ get_importers_js_2.GET_IMPORTERS_TOOL,
70
+ search_files_js_2.SEARCH_FILES_TOOL,
56
71
  ];
57
72
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":";;;AAAA,uDAAuD;AACvD,yDAA+E;AAAtE,wHAAA,mBAAmB,OAAA;AAAE,wHAAA,mBAAmB,OAAA;AACjD,mDAAsE;AAA7D,kHAAA,gBAAgB,OAAA;AAAE,kHAAA,gBAAgB,OAAA;AAC3C,mDAAsE;AAA7D,kHAAA,gBAAgB,OAAA;AAAE,kHAAA,gBAAgB,OAAA;AAC3C,mEAA8F;AAArF,kIAAA,wBAAwB,OAAA;AAAE,kIAAA,wBAAwB,OAAA;AAC3D,uDAA2E;AAAlE,sHAAA,kBAAkB,OAAA;AAAE,qHAAA,iBAAiB,OAAA;AAC9C,yDAA+E;AAAtE,wHAAA,mBAAmB,OAAA;AAAE,wHAAA,mBAAmB,OAAA;AACjD,6DAAoF;AAA3E,4HAAA,qBAAqB,OAAA;AAAE,2HAAA,oBAAoB,OAAA;AACpD,mEAA6F;AAApF,kIAAA,wBAAwB,OAAA;AAAE,iIAAA,uBAAuB,OAAA;AAC1D,uEAAmG;AAA1F,sIAAA,0BAA0B,OAAA;AAAE,qIAAA,yBAAyB,OAAA;AAC9D,6DAAoF;AAA3E,4HAAA,qBAAqB,OAAA;AAAE,2HAAA,oBAAoB,OAAA;AAEpD,2DAA0D;AAC1D,qDAAoD;AACpD,qDAAoD;AACpD,qEAAoE;AACpE,yDAAwD;AACxD,2DAA0D;AAC1D,+DAA8D;AAC9D,qEAAoE;AACpE,yEAAwE;AACxE,+DAA8D;AAEjD,QAAA,SAAS,GAAG;IACvB,uCAAmB;IACnB,iCAAgB;IAChB,iCAAgB;IAChB,iDAAwB;IACxB,qCAAkB;IAClB,uCAAmB;IACnB,2CAAqB;IACrB,iDAAwB;IACxB,qDAA0B;IAC1B,2CAAqB;CACtB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":";;;AAAA,uDAAuD;AACvD,yDAA+E;AAAtE,wHAAA,mBAAmB,OAAA;AAAE,wHAAA,mBAAmB,OAAA;AACjD,mDAAsE;AAA7D,kHAAA,gBAAgB,OAAA;AAAE,kHAAA,gBAAgB,OAAA;AAC3C,mDAAsE;AAA7D,kHAAA,gBAAgB,OAAA;AAAE,kHAAA,gBAAgB,OAAA;AAC3C,mEAA8F;AAArF,kIAAA,wBAAwB,OAAA;AAAE,kIAAA,wBAAwB,OAAA;AAC3D,uDAA2E;AAAlE,sHAAA,kBAAkB,OAAA;AAAE,qHAAA,iBAAiB,OAAA;AAC9C,yDAA+E;AAAtE,wHAAA,mBAAmB,OAAA;AAAE,wHAAA,mBAAmB,OAAA;AACjD,6DAAoF;AAA3E,4HAAA,qBAAqB,OAAA;AAAE,2HAAA,oBAAoB,OAAA;AACpD,mEAA6F;AAApF,kIAAA,wBAAwB,OAAA;AAAE,iIAAA,uBAAuB,OAAA;AAC1D,uEAAmG;AAA1F,sIAAA,0BAA0B,OAAA;AAAE,qIAAA,yBAAyB,OAAA;AAC9D,6DAAoF;AAA3E,4HAAA,qBAAqB,OAAA;AAAE,2HAAA,oBAAoB,OAAA;AACpD,mDAAsE;AAA7D,kHAAA,gBAAgB,OAAA;AAAE,kHAAA,gBAAgB,OAAA;AAC3C,uDAA4E;AAAnE,sHAAA,kBAAkB,OAAA;AAAE,sHAAA,kBAAkB,OAAA;AAC/C,qDAAyE;AAAhE,oHAAA,iBAAiB,OAAA;AAAE,oHAAA,iBAAiB,OAAA;AAE7C,2DAA0D;AAC1D,qDAAoD;AACpD,qDAAoD;AACpD,qEAAoE;AACpE,yDAAwD;AACxD,2DAA0D;AAC1D,+DAA8D;AAC9D,qEAAoE;AACpE,yEAAwE;AACxE,+DAA8D;AAC9D,qDAAoD;AACpD,yDAAwD;AACxD,uDAAsD;AAEzC,QAAA,SAAS,GAAG;IACvB,uCAAmB;IACnB,iCAAgB;IAChB,iCAAgB;IAChB,iDAAwB;IACxB,qCAAkB;IAClB,uCAAmB;IACnB,2CAAqB;IACrB,iDAAwB;IACxB,qDAA0B;IAC1B,2CAAqB;IACrB,iCAAgB;IAChB,qCAAkB;IAClB,mCAAiB;CAClB,CAAC"}
@@ -0,0 +1,19 @@
1
+ import type { Database } from "../graph/db.js";
2
+ export declare const SEARCH_FILES_TOOL: {
3
+ readonly name: "search_files";
4
+ readonly description: "Find all indexed files whose path matches a pattern. Supports * (any chars) and ** (any path segment). E.g. search_files('**/*password*') finds all files with 'password' in the name. Replaces glob.";
5
+ readonly inputSchema: {
6
+ readonly type: "object";
7
+ readonly properties: {
8
+ readonly pattern: {
9
+ readonly type: "string";
10
+ readonly description: "Glob-style pattern (e.g. **/*password*, src/modules/**)";
11
+ };
12
+ };
13
+ readonly required: readonly ["pattern"];
14
+ };
15
+ };
16
+ export declare function handleSearchFiles(db: Database.Database, args: {
17
+ pattern: string;
18
+ }): Promise<string>;
19
+ //# sourceMappingURL=search-files.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search-files.d.ts","sourceRoot":"","sources":["../../src/tools/search-files.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG/C,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;CAUpB,CAAC;AAEX,wBAAsB,iBAAiB,CACrC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,IAAI,EAAE;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,GACxB,OAAO,CAAC,MAAM,CAAC,CAIjB"}
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SEARCH_FILES_TOOL = void 0;
4
+ exports.handleSearchFiles = handleSearchFiles;
5
+ const queries_js_1 = require("../graph/queries.js");
6
+ exports.SEARCH_FILES_TOOL = {
7
+ name: "search_files",
8
+ description: "Find all indexed files whose path matches a pattern. Supports * (any chars) and ** (any path segment). E.g. search_files('**/*password*') finds all files with 'password' in the name. Replaces glob.",
9
+ inputSchema: {
10
+ type: "object",
11
+ properties: {
12
+ pattern: { type: "string", description: "Glob-style pattern (e.g. **/*password*, src/modules/**)" },
13
+ },
14
+ required: ["pattern"],
15
+ },
16
+ };
17
+ async function handleSearchFiles(db, args) {
18
+ const results = await (0, queries_js_1.searchFiles)(db, args.pattern);
19
+ if (results.length === 0)
20
+ return `No files found matching "${args.pattern}".`;
21
+ return JSON.stringify(results, null, 2);
22
+ }
23
+ //# sourceMappingURL=search-files.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search-files.js","sourceRoot":"","sources":["../../src/tools/search-files.ts"],"names":[],"mappings":";;;AAgBA,8CAOC;AArBD,oDAAkD;AAErC,QAAA,iBAAiB,GAAG;IAC/B,IAAI,EAAE,cAAc;IACpB,WAAW,EAAE,uMAAuM;IACpN,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,yDAAyD,EAAE;SACpG;QACD,QAAQ,EAAE,CAAC,SAAS,CAAC;KACtB;CACO,CAAC;AAEJ,KAAK,UAAU,iBAAiB,CACrC,EAAqB,EACrB,IAAyB;IAEzB,MAAM,OAAO,GAAG,MAAM,IAAA,wBAAW,EAAC,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACpD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,4BAA4B,IAAI,CAAC,OAAO,IAAI,CAAC;IAC9E,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AAC1C,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ariadne-mcp",
3
- "version": "0.1.0",
3
+ "version": "0.2.0",
4
4
  "description": "MCP server that gives coding agents a structural map of a codebase",
5
5
  "main": "dist/index.js",
6
6
  "bin": {
@@ -25,23 +25,25 @@
25
25
  ],
26
26
  "repository": {
27
27
  "type": "git",
28
- "url": "https://github.com/YOUR_USERNAME/ariadne.git"
28
+ "url": "https://github.com/Madan2248c/ariadne.git"
29
29
  },
30
- "homepage": "https://github.com/YOUR_USERNAME/ariadne#readme",
30
+ "homepage": "https://github.com/Madan2248c/ariadne#readme",
31
31
  "bugs": {
32
- "url": "https://github.com/YOUR_USERNAME/ariadne/issues"
32
+ "url": "https://github.com/Madan2248c/ariadne/issues"
33
33
  },
34
34
  "scripts": {
35
35
  "build": "tsc",
36
36
  "dev": "tsc --watch",
37
37
  "start": "node dist/index.js",
38
38
  "clean": "rm -rf dist",
39
+ "lint": "eslint src/",
40
+ "smoke": "npx tsx scripts/smoke-test.ts",
39
41
  "prepublishOnly": "npm run clean && npm run build"
40
42
  },
41
43
  "dependencies": {
42
44
  "@modelcontextprotocol/sdk": "^1.10.1",
43
- "better-sqlite3": "^11.9.1",
44
45
  "@types/google-protobuf": "^3.15.12",
46
+ "better-sqlite3": "^11.9.1",
45
47
  "chokidar": "^3.6.0",
46
48
  "google-protobuf": "^3.21.4",
47
49
  "tree-sitter": "^0.21.1",
@@ -50,10 +52,15 @@
50
52
  "tree-sitter-typescript": "^0.21.2"
51
53
  },
52
54
  "devDependencies": {
55
+ "@eslint/js": "^10.0.1",
53
56
  "@types/better-sqlite3": "^7.6.13",
54
57
  "@types/node": "^22.0.0",
58
+ "@typescript-eslint/eslint-plugin": "^8.58.2",
59
+ "@typescript-eslint/parser": "^8.58.2",
60
+ "eslint": "^10.2.0",
55
61
  "tsx": "^4.21.0",
56
- "typescript": "^5.7.0"
62
+ "typescript": "^5.7.0",
63
+ "typescript-eslint": "^8.58.2"
57
64
  },
58
65
  "engines": {
59
66
  "node": ">=20.0.0"