purecontext-mcp 1.2.0 → 1.5.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/AGENT_INSTRUCTIONS.md +110 -784
- package/AGENT_REFERENCE.md +561 -0
- package/CHANGELOG.md +177 -6
- package/FRAMEWORK-ADAPTERS.md +351 -0
- package/LANGUAGE-SUPPORT.md +144 -0
- package/README.md +92 -12
- package/USER-GUIDE.md +8 -0
- package/dist/cli/hooks.d.ts +28 -0
- package/dist/cli/hooks.d.ts.map +1 -0
- package/dist/cli/hooks.js +570 -0
- package/dist/cli/hooks.js.map +1 -0
- package/dist/cli/install-detect.d.ts +16 -0
- package/dist/cli/install-detect.d.ts.map +1 -0
- package/dist/cli/install-detect.js +70 -0
- package/dist/cli/install-detect.js.map +1 -0
- package/dist/cli/install-writers.d.ts +59 -0
- package/dist/cli/install-writers.d.ts.map +1 -0
- package/dist/cli/install-writers.js +292 -0
- package/dist/cli/install-writers.js.map +1 -0
- package/dist/cli/install.d.ts +14 -0
- package/dist/cli/install.d.ts.map +1 -0
- package/dist/cli/install.js +150 -0
- package/dist/cli/install.js.map +1 -0
- package/dist/config/config-loader.js +3 -0
- package/dist/config/config-loader.js.map +1 -1
- package/dist/config/config-schema.d.ts +11 -0
- package/dist/config/config-schema.d.ts.map +1 -1
- package/dist/config/config-schema.js +15 -0
- package/dist/config/config-schema.js.map +1 -1
- package/dist/core/db/symbol-store.d.ts +1 -0
- package/dist/core/db/symbol-store.d.ts.map +1 -1
- package/dist/core/db/symbol-store.js +120 -6
- package/dist/core/db/symbol-store.js.map +1 -1
- package/dist/core/file-discovery.d.ts +6 -0
- package/dist/core/file-discovery.d.ts.map +1 -1
- package/dist/core/file-discovery.js +20 -13
- package/dist/core/file-discovery.js.map +1 -1
- package/dist/core/file-processor.d.ts.map +1 -1
- package/dist/core/file-processor.js +26 -1
- package/dist/core/file-processor.js.map +1 -1
- package/dist/core/git-log-reader.d.ts.map +1 -1
- package/dist/core/git-log-reader.js +21 -0
- package/dist/core/git-log-reader.js.map +1 -1
- package/dist/core/index-manager.d.ts.map +1 -1
- package/dist/core/index-manager.js +21 -7
- package/dist/core/index-manager.js.map +1 -1
- package/dist/core/indexing-worker.d.ts.map +1 -1
- package/dist/core/indexing-worker.js +14 -0
- package/dist/core/indexing-worker.js.map +1 -1
- package/dist/core/parse-dispatcher.d.ts.map +1 -1
- package/dist/core/parse-dispatcher.js +20 -5
- package/dist/core/parse-dispatcher.js.map +1 -1
- package/dist/core/search/query-preprocessor.d.ts +69 -3
- package/dist/core/search/query-preprocessor.d.ts.map +1 -1
- package/dist/core/search/query-preprocessor.js +450 -17
- package/dist/core/search/query-preprocessor.js.map +1 -1
- package/dist/core/search/relevance-ranker.d.ts +60 -5
- package/dist/core/search/relevance-ranker.d.ts.map +1 -1
- package/dist/core/search/relevance-ranker.js +931 -33
- package/dist/core/search/relevance-ranker.js.map +1 -1
- package/dist/core/test-mapper.d.ts.map +1 -1
- package/dist/core/test-mapper.js +7 -1
- package/dist/core/test-mapper.js.map +1 -1
- package/dist/core/types.d.ts +28 -1
- package/dist/core/types.d.ts.map +1 -1
- package/dist/handlers/angular-html.d.ts +3 -0
- package/dist/handlers/angular-html.d.ts.map +1 -0
- package/dist/handlers/angular-html.js +215 -0
- package/dist/handlers/angular-html.js.map +1 -0
- package/dist/handlers/c.d.ts.map +1 -1
- package/dist/handlers/c.js +19 -0
- package/dist/handlers/c.js.map +1 -1
- package/dist/handlers/cpp-macro-registry.d.ts +21 -0
- package/dist/handlers/cpp-macro-registry.d.ts.map +1 -0
- package/dist/handlers/cpp-macro-registry.js +44 -0
- package/dist/handlers/cpp-macro-registry.js.map +1 -0
- package/dist/handlers/cpp.d.ts.map +1 -1
- package/dist/handlers/cpp.js +579 -10
- package/dist/handlers/cpp.js.map +1 -1
- package/dist/handlers/csharp.d.ts.map +1 -1
- package/dist/handlers/csharp.js +39 -2
- package/dist/handlers/csharp.js.map +1 -1
- package/dist/handlers/css.d.ts +3 -0
- package/dist/handlers/css.d.ts.map +1 -0
- package/dist/handlers/css.js +154 -0
- package/dist/handlers/css.js.map +1 -0
- package/dist/handlers/erlang.d.ts.map +1 -1
- package/dist/handlers/erlang.js +8 -1
- package/dist/handlers/erlang.js.map +1 -1
- package/dist/handlers/fortran.js +1 -1
- package/dist/handlers/fortran.js.map +1 -1
- package/dist/handlers/go.d.ts.map +1 -1
- package/dist/handlers/go.js +87 -2
- package/dist/handlers/go.js.map +1 -1
- package/dist/handlers/handler-registry.d.ts.map +1 -1
- package/dist/handlers/handler-registry.js +4 -0
- package/dist/handlers/handler-registry.js.map +1 -1
- package/dist/handlers/hcl.d.ts +3 -0
- package/dist/handlers/hcl.d.ts.map +1 -0
- package/dist/handlers/hcl.js +193 -0
- package/dist/handlers/hcl.js.map +1 -0
- package/dist/handlers/java.d.ts.map +1 -1
- package/dist/handlers/java.js +33 -16
- package/dist/handlers/java.js.map +1 -1
- package/dist/handlers/kotlin.d.ts.map +1 -1
- package/dist/handlers/kotlin.js +48 -3
- package/dist/handlers/kotlin.js.map +1 -1
- package/dist/handlers/less.d.ts +3 -0
- package/dist/handlers/less.d.ts.map +1 -0
- package/dist/handlers/less.js +255 -0
- package/dist/handlers/less.js.map +1 -0
- package/dist/handlers/objective-c.d.ts.map +1 -1
- package/dist/handlers/objective-c.js +122 -64
- package/dist/handlers/objective-c.js.map +1 -1
- package/dist/handlers/openapi.d.ts.map +1 -1
- package/dist/handlers/openapi.js +30 -5
- package/dist/handlers/openapi.js.map +1 -1
- package/dist/handlers/php.d.ts.map +1 -1
- package/dist/handlers/php.js +287 -41
- package/dist/handlers/php.js.map +1 -1
- package/dist/handlers/protobuf.d.ts.map +1 -1
- package/dist/handlers/protobuf.js +1 -0
- package/dist/handlers/protobuf.js.map +1 -1
- package/dist/handlers/python.d.ts.map +1 -1
- package/dist/handlers/python.js +1 -3
- package/dist/handlers/python.js.map +1 -1
- package/dist/handlers/ruby-dsl.d.ts +23 -0
- package/dist/handlers/ruby-dsl.d.ts.map +1 -0
- package/dist/handlers/ruby-dsl.js +251 -0
- package/dist/handlers/ruby-dsl.js.map +1 -0
- package/dist/handlers/ruby.d.ts.map +1 -1
- package/dist/handlers/ruby.js +29 -4
- package/dist/handlers/ruby.js.map +1 -1
- package/dist/handlers/rust.d.ts.map +1 -1
- package/dist/handlers/rust.js +98 -2
- package/dist/handlers/rust.js.map +1 -1
- package/dist/handlers/scss.d.ts +3 -0
- package/dist/handlers/scss.d.ts.map +1 -0
- package/dist/handlers/scss.js +290 -0
- package/dist/handlers/scss.js.map +1 -0
- package/dist/handlers/sql.d.ts.map +1 -1
- package/dist/handlers/sql.js +37 -18
- package/dist/handlers/sql.js.map +1 -1
- package/dist/handlers/typescript.d.ts.map +1 -1
- package/dist/handlers/typescript.js +65 -17
- package/dist/handlers/typescript.js.map +1 -1
- package/dist/handlers/xml.d.ts.map +1 -1
- package/dist/handlers/xml.js +35 -2
- package/dist/handlers/xml.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +91 -0
- package/dist/index.js.map +1 -1
- package/dist/server/mcp-server.d.ts.map +1 -1
- package/dist/server/mcp-server.js +10 -0
- package/dist/server/mcp-server.js.map +1 -1
- package/dist/server/tools/detect-antipatterns.d.ts +1 -1
- package/dist/server/tools/get-architecture-snapshot.d.ts +1 -1
- package/dist/server/tools/get-entry-points.d.ts +1 -1
- package/dist/server/tools/get-lexical-scope-matches.d.ts +54 -0
- package/dist/server/tools/get-lexical-scope-matches.d.ts.map +1 -0
- package/dist/server/tools/get-lexical-scope-matches.js +470 -0
- package/dist/server/tools/get-lexical-scope-matches.js.map +1 -0
- package/dist/server/tools/search-symbols.d.ts +10 -0
- package/dist/server/tools/search-symbols.d.ts.map +1 -1
- package/dist/server/tools/search-symbols.js +353 -8
- package/dist/server/tools/search-symbols.js.map +1 -1
- package/dist/server/tools/trace-invocation-chain.d.ts +53 -0
- package/dist/server/tools/trace-invocation-chain.d.ts.map +1 -0
- package/dist/server/tools/trace-invocation-chain.js +280 -0
- package/dist/server/tools/trace-invocation-chain.js.map +1 -0
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/docs/02-installation.md +89 -17
- package/docs/05-cli-reference.md +89 -0
- package/docs/dev/benchmark-findings-eu-za-tebe.md +210 -0
- package/docs/dev/phase-35-coverage-audit.md +469 -0
- package/package.json +4 -1
|
@@ -9,8 +9,8 @@ import { createEmbeddingProvider } from '../../semantic/embedding-provider.js';
|
|
|
9
9
|
import { VectorStore } from '../../semantic/vector-store.js';
|
|
10
10
|
import { HybridSearcher } from '../../semantic/hybrid-search.js';
|
|
11
11
|
import { logger } from '../../core/logger.js';
|
|
12
|
-
import { preprocessQuery } from '../../core/search/query-preprocessor.js';
|
|
13
|
-
import { rankSymbols } from '../../core/search/relevance-ranker.js';
|
|
12
|
+
import { preprocessQuery, toOrFallbackQuery, isStopWord } from '../../core/search/query-preprocessor.js';
|
|
13
|
+
import { rankSymbols, isLibraryPath } from '../../core/search/relevance-ranker.js';
|
|
14
14
|
import { resolveRepoScope } from '../../core/db/repo-scope.js';
|
|
15
15
|
export const name = 'search_symbols';
|
|
16
16
|
export const description = 'Search for symbols (functions, classes, types, etc.) by name across one or more indexed repos. ' +
|
|
@@ -56,13 +56,90 @@ export const inputSchema = {
|
|
|
56
56
|
.boolean()
|
|
57
57
|
.optional()
|
|
58
58
|
.describe('Return per-result score breakdown for tuning and diagnostics (default false)'),
|
|
59
|
+
cfgFilter: z
|
|
60
|
+
.union([
|
|
61
|
+
z.string().describe('Simple predicate string, e.g. \'target_os = "linux"\''),
|
|
62
|
+
z.object({
|
|
63
|
+
kind: z.string(),
|
|
64
|
+
key: z.string().optional(),
|
|
65
|
+
value: z.string().optional(),
|
|
66
|
+
}).describe('Structured predicate object'),
|
|
67
|
+
])
|
|
68
|
+
.optional()
|
|
69
|
+
.describe('Filter results to only symbols gated by a specific Rust #[cfg(...)] predicate. ' +
|
|
70
|
+
'Applied after ranking. Ignored with a _diagnostics warning when no cfg metadata exists.'),
|
|
59
71
|
};
|
|
72
|
+
/** Parse a string predicate like 'target_os = "linux"' into a structured matcher. */
|
|
73
|
+
function parseCfgFilterString(filter) {
|
|
74
|
+
const m = filter.match(/^(\w+)\s*=\s*"([^"]+)"$/);
|
|
75
|
+
if (m)
|
|
76
|
+
return { kind: 'eq', key: m[1], value: m[2] };
|
|
77
|
+
const bare = filter.match(/^(\w+)$/);
|
|
78
|
+
if (bare)
|
|
79
|
+
return { kind: 'flag', key: bare[1] };
|
|
80
|
+
return null;
|
|
81
|
+
}
|
|
82
|
+
/** Deep-walk a predicate tree to find a matching leaf. */
|
|
83
|
+
function predicateMatches(pred, matcher) {
|
|
84
|
+
if (!pred || typeof pred !== 'object')
|
|
85
|
+
return false;
|
|
86
|
+
const p = pred;
|
|
87
|
+
if (matcher.kind === 'eq') {
|
|
88
|
+
if (p['kind'] === 'eq' && p['key'] === matcher.key && p['value'] === matcher.value)
|
|
89
|
+
return true;
|
|
90
|
+
}
|
|
91
|
+
else if (matcher.kind === 'flag') {
|
|
92
|
+
if (p['kind'] === 'flag' && p['key'] === matcher.key)
|
|
93
|
+
return true;
|
|
94
|
+
if (p['kind'] === 'eq' && p['key'] === matcher.key)
|
|
95
|
+
return true; // key exists in any form
|
|
96
|
+
}
|
|
97
|
+
// Recurse into children (all/any/not)
|
|
98
|
+
if (Array.isArray(p['children'])) {
|
|
99
|
+
for (const child of p['children']) {
|
|
100
|
+
if (predicateMatches(child, matcher))
|
|
101
|
+
return true;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
return false;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Returns true if the symbol's cfg metadata matches the given filter.
|
|
108
|
+
* Handles single CfgMeta object and array of CfgMeta objects.
|
|
109
|
+
*/
|
|
110
|
+
function symbolMatchesCfgFilter(symbol, matcher) {
|
|
111
|
+
const cfg = symbol.frameworkMeta?.['cfg'];
|
|
112
|
+
if (!cfg)
|
|
113
|
+
return false;
|
|
114
|
+
const entries = Array.isArray(cfg) ? cfg : [cfg];
|
|
115
|
+
for (const entry of entries) {
|
|
116
|
+
if (!entry || typeof entry !== 'object')
|
|
117
|
+
continue;
|
|
118
|
+
const e = entry;
|
|
119
|
+
const predicates = Array.isArray(e['predicates']) ? e['predicates'] : [];
|
|
120
|
+
for (const p of predicates) {
|
|
121
|
+
if (predicateMatches(p, matcher))
|
|
122
|
+
return true;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
return false;
|
|
126
|
+
}
|
|
60
127
|
// ─── Handler ──────────────────────────────────────────────────────────────────
|
|
61
128
|
export async function handler(args) {
|
|
62
129
|
const t0 = Date.now();
|
|
63
130
|
const limit = args.limit ?? 50;
|
|
64
131
|
const semanticWeight = args.semantic_weight ?? 0.5;
|
|
65
132
|
const keywordWeight = args.keyword_weight ?? 0.5;
|
|
133
|
+
// ── Resolve cfgFilter matcher ─────────────────────────────────────────────
|
|
134
|
+
let cfgMatcher = null;
|
|
135
|
+
if (args.cfgFilter) {
|
|
136
|
+
if (typeof args.cfgFilter === 'string') {
|
|
137
|
+
cfgMatcher = parseCfgFilterString(args.cfgFilter);
|
|
138
|
+
}
|
|
139
|
+
else {
|
|
140
|
+
cfgMatcher = args.cfgFilter;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
66
143
|
// ── Resolve target repos ───────────────────────────────────────────────────
|
|
67
144
|
const repos = resolveRepoScope({ repoId: args.repoId, repoIds: args.repoIds });
|
|
68
145
|
if (repos.length === 0) {
|
|
@@ -79,6 +156,23 @@ export async function handler(args) {
|
|
|
79
156
|
};
|
|
80
157
|
}
|
|
81
158
|
const reposSearched = repos.map((r) => r.id);
|
|
159
|
+
// ── Detect domain (scopes domain-specific synonyms) ─────────────────────
|
|
160
|
+
// rendering: Only enable rendering synonyms when the repo name suggests a rendering /
|
|
161
|
+
// graphics / PBR codebase — prevents synonym noise in unrelated repos
|
|
162
|
+
// (e.g. nuxt, airodump, origamicms-frontend regressed in Phase 47).
|
|
163
|
+
// rust: Only enable Rust async/serde synonyms (future→poll, spawn→tokio, etc.)
|
|
164
|
+
// for Rust repos — prevents 'future→poll' from making FutureBase::poll outscore
|
|
165
|
+
// folly::Future in C++ repos like facebook-folly.
|
|
166
|
+
const RENDERING_REPO_PATTERN = /render|draw|shader|scene|material|graphic|mitsuba|pbr|tracer|opengl|vulkan|cuda|opencl/i;
|
|
167
|
+
const RUST_REPO_PATTERN = /\brust\b|tokio|serde|actix|axum|hyper|warp|rocket|cargo/i;
|
|
168
|
+
const JAVA_GROOVY_REPO_PATTERN = /\bjenkins\b|\bgradle\b|\bspring\b|\bmaven\b|\bgroovy\b/i;
|
|
169
|
+
const domain = repos.some((r) => RENDERING_REPO_PATTERN.test(r.name))
|
|
170
|
+
? 'rendering'
|
|
171
|
+
: repos.some((r) => RUST_REPO_PATTERN.test(r.name))
|
|
172
|
+
? 'rust'
|
|
173
|
+
: repos.some((r) => JAVA_GROOVY_REPO_PATTERN.test(r.name))
|
|
174
|
+
? 'java'
|
|
175
|
+
: undefined;
|
|
82
176
|
// ── Determine effective mode using first repo with a semantic index ─────────
|
|
83
177
|
let effectiveMode = args.mode;
|
|
84
178
|
if (!effectiveMode) {
|
|
@@ -150,7 +244,14 @@ export async function handler(args) {
|
|
|
150
244
|
if (allResults.length > 0 || effectiveMode === 'semantic') {
|
|
151
245
|
// Sort by combined score descending, take top `limit`
|
|
152
246
|
allResults.sort((a, b) => b.combinedScore - a.combinedScore);
|
|
153
|
-
const
|
|
247
|
+
const cfgDiagnostic = cfgMatcher
|
|
248
|
+
? allResults.every((r) => !r.symbol.frameworkMeta?.['cfg'])
|
|
249
|
+
? 'cfgFilter ignored: no symbols in this repo have cfg metadata'
|
|
250
|
+
: null
|
|
251
|
+
: null;
|
|
252
|
+
const top = cfgMatcher && !cfgDiagnostic
|
|
253
|
+
? allResults.filter((r) => symbolMatchesCfgFilter(r.symbol, cfgMatcher)).slice(0, limit)
|
|
254
|
+
: allResults.slice(0, limit);
|
|
154
255
|
return {
|
|
155
256
|
content: [{
|
|
156
257
|
type: 'text',
|
|
@@ -183,6 +284,7 @@ export async function handler(args) {
|
|
|
183
284
|
},
|
|
184
285
|
} : {}),
|
|
185
286
|
})),
|
|
287
|
+
...(cfgDiagnostic ? { _diagnostics: [cfgDiagnostic] } : {}),
|
|
186
288
|
_meta: {
|
|
187
289
|
...buildMeta({ timingMs: Date.now() - t0, rawBytes: totalRawBytes, responseBytes: totalResponseBytes }),
|
|
188
290
|
mode: effectiveMode,
|
|
@@ -212,13 +314,58 @@ export async function handler(args) {
|
|
|
212
314
|
let symbols;
|
|
213
315
|
const ftsAvailable = hasFtsIndex(db, repo.id);
|
|
214
316
|
if (ftsAvailable) {
|
|
215
|
-
const ftsQuery = preprocessQuery(args.query);
|
|
317
|
+
const ftsQuery = preprocessQuery(args.query, domain);
|
|
318
|
+
// Fetch more candidates than the requested limit so the relevance ranker
|
|
319
|
+
// has a large enough pool to surface the best match even when FTS5 BM25
|
|
320
|
+
// ranking places it slightly outside the bare limit. The ranker then
|
|
321
|
+
// re-sorts and the caller receives exactly `limit` results.
|
|
322
|
+
const ftsLimit = Math.min(limit * 4, 200);
|
|
216
323
|
try {
|
|
217
324
|
symbols = ftsSearchSymbols(db, repo.id, ftsQuery, {
|
|
218
325
|
kind: args.kind,
|
|
219
326
|
filePath: args.filePath,
|
|
220
|
-
limit,
|
|
327
|
+
limit: ftsLimit,
|
|
221
328
|
});
|
|
329
|
+
// OR-fallback: when the AND query returns nothing, retry with terms joined
|
|
330
|
+
// by OR so that natural-language queries match symbols containing only some
|
|
331
|
+
// of the query words (e.g. "parse source file tree-sitter ast" → parseFile).
|
|
332
|
+
// Also fire when AND results contain no application-layer service/repo methods
|
|
333
|
+
// — this means the AND pool is filled with Prisma types or DTOs while the
|
|
334
|
+
// correct service method couldn't satisfy all AND terms (e.g. "listing"
|
|
335
|
+
// doesn't appear in ProductsService.create's FTS content).
|
|
336
|
+
// Also fire when ALL AND results are library code (system/, vendor/, etc.)
|
|
337
|
+
// — in that case application symbols can only enter via the OR pool.
|
|
338
|
+
// Also fire when query asks for a React hook (use*/hook) but AND pool has
|
|
339
|
+
// no use[A-Z] symbols — hook names rarely satisfy all AND terms.
|
|
340
|
+
const isHookQuery = hasReactHookQuery(args.query);
|
|
341
|
+
const needsOrFallback = symbols.length === 0 ||
|
|
342
|
+
!hasServiceMethodCandidate(symbols) ||
|
|
343
|
+
symbols.every((s) => isLibraryPath(s.filePath)) ||
|
|
344
|
+
(isHookQuery && !symbols.some((s) => /^use[A-Z]/.test(s.name)));
|
|
345
|
+
if (needsOrFallback) {
|
|
346
|
+
const orQuery = toOrFallbackQuery(ftsQuery, domain);
|
|
347
|
+
if (orQuery !== ftsQuery) {
|
|
348
|
+
const orSymbols = ftsSearchSymbols(db, repo.id, orQuery, {
|
|
349
|
+
kind: args.kind,
|
|
350
|
+
filePath: args.filePath,
|
|
351
|
+
limit: ftsLimit,
|
|
352
|
+
});
|
|
353
|
+
if (symbols.length === 0) {
|
|
354
|
+
symbols = orSymbols;
|
|
355
|
+
}
|
|
356
|
+
else {
|
|
357
|
+
// Merge: append OR results not already in AND results
|
|
358
|
+
const seen = new Set(symbols.map((s) => s.id));
|
|
359
|
+
for (const s of orSymbols) {
|
|
360
|
+
if (!seen.has(s.id))
|
|
361
|
+
symbols.push(s);
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
if (orSymbols.length > 0) {
|
|
365
|
+
searchMode = 'fts_or_fallback';
|
|
366
|
+
}
|
|
367
|
+
}
|
|
368
|
+
}
|
|
222
369
|
}
|
|
223
370
|
catch (err) {
|
|
224
371
|
logger.warn(`search_symbols: FTS query failed for ${repo.id}, falling back to LIKE: ${err}`);
|
|
@@ -229,6 +376,36 @@ export async function handler(args) {
|
|
|
229
376
|
});
|
|
230
377
|
searchMode = 'like_fallback';
|
|
231
378
|
}
|
|
379
|
+
// ── Class-type injection ────────────────────────────────────────────
|
|
380
|
+
// In large C++ codebases, method symbols with namespace-qualified names
|
|
381
|
+
// (e.g. FutureBase::poll) dominate the FTS5 candidate pool, pushing out
|
|
382
|
+
// class/struct/function symbols. Run a secondary OR query restricted to
|
|
383
|
+
// non-method kinds so class symbols are always represented in the pool.
|
|
384
|
+
// Guard: only fires when the main pool contains C++ style qualified methods
|
|
385
|
+
// (name contains "::"), preventing regression in Ruby/JS repos where
|
|
386
|
+
// single-word class names (Git, Bottle) would incorrectly outscore compound
|
|
387
|
+
// class names (GitDownloadStrategy, BottleSpecification) via identityExact.
|
|
388
|
+
const hasCppStyleMethods = symbols.some((s) => s.kind === 'method' && s.name.includes('::'));
|
|
389
|
+
if (!args.kind && ftsAvailable && hasCppStyleMethods) {
|
|
390
|
+
try {
|
|
391
|
+
const orQuery = toOrFallbackQuery(preprocessQuery(args.query, domain), domain);
|
|
392
|
+
const classSymbols = ftsSearchSymbols(db, repo.id, orQuery, {
|
|
393
|
+
kinds: ['class', 'struct', 'enum', 'function', 'namespace'],
|
|
394
|
+
filePath: args.filePath,
|
|
395
|
+
limit: 50,
|
|
396
|
+
});
|
|
397
|
+
if (classSymbols.length > 0) {
|
|
398
|
+
const seen = new Set(symbols.map((s) => s.id));
|
|
399
|
+
for (const s of classSymbols) {
|
|
400
|
+
if (!seen.has(s.id))
|
|
401
|
+
symbols.push(s);
|
|
402
|
+
}
|
|
403
|
+
}
|
|
404
|
+
}
|
|
405
|
+
catch {
|
|
406
|
+
// Secondary injection is best-effort — never fail the main search
|
|
407
|
+
}
|
|
408
|
+
}
|
|
232
409
|
}
|
|
233
410
|
else {
|
|
234
411
|
symbols = searchSymbols(db, repo.id, args.query, {
|
|
@@ -238,7 +415,13 @@ export async function handler(args) {
|
|
|
238
415
|
});
|
|
239
416
|
searchMode = 'like_fallback';
|
|
240
417
|
}
|
|
241
|
-
const
|
|
418
|
+
const rankOpts = {
|
|
419
|
+
isMixedMonorepo: detectMixedMonorepo(symbols),
|
|
420
|
+
hasReactHookQuery: hasReactHookQuery(args.query),
|
|
421
|
+
isJavaGroovyMixed: detectJavaGroovyMixed(symbols),
|
|
422
|
+
isAngularRepo: symbols.some((s) => s.filePath.endsWith('.component.ts') || s.filePath.endsWith('.module.ts')),
|
|
423
|
+
};
|
|
424
|
+
const ranked = rankSymbols(symbols, args.query, args.debug, domain, rankOpts);
|
|
242
425
|
const uniqueFiles = [...new Set(ranked.map((r) => r.symbol.filePath))];
|
|
243
426
|
const fileSizes = getFileSizesBatch(db, repo.id, uniqueFiles);
|
|
244
427
|
totalRawBytes += uniqueFiles.reduce((sum, fp) => sum + (fileSizes.get(fp) ?? 0), 0);
|
|
@@ -258,14 +441,32 @@ export async function handler(args) {
|
|
|
258
441
|
db.close();
|
|
259
442
|
}
|
|
260
443
|
}
|
|
261
|
-
// Sort by score descending across all repos, take top `limit`
|
|
444
|
+
// Sort by score descending across all repos, apply cfg filter, take top `limit`
|
|
262
445
|
allKeywordResults.sort((a, b) => b.score - a.score);
|
|
263
|
-
const
|
|
446
|
+
const cfgDiagnostic = cfgMatcher
|
|
447
|
+
? allKeywordResults.every((r) => !r.symbol.frameworkMeta?.['cfg'])
|
|
448
|
+
? 'cfgFilter ignored: no symbols in this repo have cfg metadata'
|
|
449
|
+
: null
|
|
450
|
+
: null;
|
|
451
|
+
const top = cfgMatcher && !cfgDiagnostic
|
|
452
|
+
? allKeywordResults.filter((r) => symbolMatchesCfgFilter(r.symbol, cfgMatcher)).slice(0, limit)
|
|
453
|
+
: allKeywordResults.slice(0, limit);
|
|
454
|
+
const negativeEvidence = top.length === 0
|
|
455
|
+
? {
|
|
456
|
+
verdict: 'no_match',
|
|
457
|
+
query: args.query,
|
|
458
|
+
searched_kinds: args.kind ? [args.kind] : [],
|
|
459
|
+
searched_repos: reposSearched,
|
|
460
|
+
suggestion: 'The symbol does not appear to exist. Consider search_text for string/comment lookups or get_repo_outline to survey the codebase.',
|
|
461
|
+
}
|
|
462
|
+
: undefined;
|
|
264
463
|
return {
|
|
265
464
|
content: [{
|
|
266
465
|
type: 'text',
|
|
267
466
|
text: JSON.stringify({
|
|
268
467
|
count: top.length,
|
|
468
|
+
...(negativeEvidence ? { negative_evidence: negativeEvidence } : {}),
|
|
469
|
+
...(cfgDiagnostic ? { _diagnostics: [cfgDiagnostic] } : {}),
|
|
269
470
|
symbols: top.map((r) => ({
|
|
270
471
|
id: r.symbol.id,
|
|
271
472
|
name: r.symbol.name,
|
|
@@ -293,4 +494,148 @@ export async function handler(args) {
|
|
|
293
494
|
function round4(n) {
|
|
294
495
|
return Math.round(n * 10000) / 10000;
|
|
295
496
|
}
|
|
497
|
+
/**
|
|
498
|
+
* Return true when the query is asking for a React hook: the first meaningful
|
|
499
|
+
* token starts with 'use' and has ≥ 4 chars (filters out the English word
|
|
500
|
+
* "use"), OR the query contains the word 'hook' / 'hooks'.
|
|
501
|
+
*/
|
|
502
|
+
function hasReactHookQuery(query) {
|
|
503
|
+
const words = query.toLowerCase().split(/[\s-]+/).filter(Boolean);
|
|
504
|
+
const firstMeaningful = words.find((w) => !isStopWord(w) && w.length >= 2);
|
|
505
|
+
if (firstMeaningful && firstMeaningful.startsWith('use') && firstMeaningful.length >= 4)
|
|
506
|
+
return true;
|
|
507
|
+
return words.includes('hook') || words.includes('hooks');
|
|
508
|
+
}
|
|
509
|
+
/**
|
|
510
|
+
* Return true when the candidate symbol pool contains symbols from both a
|
|
511
|
+
* frontend app path (apps/dashboard/, apps/web/, etc.) and a backend app path
|
|
512
|
+
* (apps/api/, apps/server/, etc.), indicating a mixed frontend+backend monorepo.
|
|
513
|
+
*
|
|
514
|
+
* Uses the already-fetched FTS5 candidate pool — no extra DB queries.
|
|
515
|
+
*/
|
|
516
|
+
function detectMixedMonorepo(symbols) {
|
|
517
|
+
let hasFrontend = false;
|
|
518
|
+
let hasBackend = false;
|
|
519
|
+
for (const s of symbols) {
|
|
520
|
+
const p = '/' + s.filePath.replace(/\\/g, '/');
|
|
521
|
+
if (p.includes('/apps/dashboard/') ||
|
|
522
|
+
p.includes('/apps/web/') ||
|
|
523
|
+
p.includes('/apps/frontend/') ||
|
|
524
|
+
p.includes('/apps/client/'))
|
|
525
|
+
hasFrontend = true;
|
|
526
|
+
if (p.includes('/apps/api/') ||
|
|
527
|
+
p.includes('/apps/server/') ||
|
|
528
|
+
p.includes('/apps/backend/'))
|
|
529
|
+
hasBackend = true;
|
|
530
|
+
if (hasFrontend && hasBackend)
|
|
531
|
+
return true;
|
|
532
|
+
}
|
|
533
|
+
return false;
|
|
534
|
+
}
|
|
535
|
+
/**
|
|
536
|
+
* Return true when the candidate pool contains both .java and .groovy symbols,
|
|
537
|
+
* indicating a mixed Java+Groovy repo (gradle, jenkins, groovy) where Groovy
|
|
538
|
+
* `def` methods may be outranked by numerically-dominant Java methods.
|
|
539
|
+
*/
|
|
540
|
+
function detectJavaGroovyMixed(symbols) {
|
|
541
|
+
let hasJava = false;
|
|
542
|
+
let hasGroovy = false;
|
|
543
|
+
for (const s of symbols) {
|
|
544
|
+
if (s.filePath.endsWith('.java'))
|
|
545
|
+
hasJava = true;
|
|
546
|
+
else if (s.filePath.endsWith('.groovy'))
|
|
547
|
+
hasGroovy = true;
|
|
548
|
+
if (hasJava && hasGroovy)
|
|
549
|
+
return true;
|
|
550
|
+
}
|
|
551
|
+
return false;
|
|
552
|
+
}
|
|
553
|
+
/**
|
|
554
|
+
* Return true when the candidate pool contains at least one method on an
|
|
555
|
+
* application-layer *Service / *Repository / *Manager / *Store class.
|
|
556
|
+
*
|
|
557
|
+
* Used as a quality gate for OR-fallback: if AND results contain no such
|
|
558
|
+
* method, we augment with OR results so the ranker can surface the right
|
|
559
|
+
* service method even when it failed some AND terms.
|
|
560
|
+
*/
|
|
561
|
+
/**
|
|
562
|
+
* Return true when the candidate pool contains at least one application-layer
|
|
563
|
+
* method — i.e. a method on a class that looks like business/data logic rather
|
|
564
|
+
* than a DTO, config constant, or third-party library type.
|
|
565
|
+
*
|
|
566
|
+
* Patterns covered:
|
|
567
|
+
* TypeScript: *Service, *Repository, *Manager, *Store
|
|
568
|
+
* PHP: *_model, *Model (CodeIgniter / Laravel conventions)
|
|
569
|
+
* PHP: *_controller, *Controller
|
|
570
|
+
* Python: *Processor, *Indexer, *Parser
|
|
571
|
+
*
|
|
572
|
+
* Used as a quality gate: if no such candidate exists in the AND result pool,
|
|
573
|
+
* we fire the OR-fallback to widen the search and surface the right symbol.
|
|
574
|
+
*/
|
|
575
|
+
/**
|
|
576
|
+
* For methods stored with bare names (Java/Rust), extract the class name from
|
|
577
|
+
* the signature prefix ("ClassName.method: ..." or "TypeName::method: ...").
|
|
578
|
+
*/
|
|
579
|
+
function classFromSignatureForMethod(name, signature) {
|
|
580
|
+
if (!signature)
|
|
581
|
+
return '';
|
|
582
|
+
const dotPat = '.' + name + ':';
|
|
583
|
+
const di = signature.indexOf(dotPat);
|
|
584
|
+
if (di > 0) {
|
|
585
|
+
const c = signature.slice(0, di);
|
|
586
|
+
if (!c.includes('.') && !c.includes(':'))
|
|
587
|
+
return c.toLowerCase();
|
|
588
|
+
}
|
|
589
|
+
const colonPat = '::' + name;
|
|
590
|
+
const ci = signature.indexOf(colonPat);
|
|
591
|
+
if (ci > 0) {
|
|
592
|
+
const c = signature.slice(0, ci);
|
|
593
|
+
if (!c.includes('.') && !c.includes(':'))
|
|
594
|
+
return c.toLowerCase();
|
|
595
|
+
}
|
|
596
|
+
return '';
|
|
597
|
+
}
|
|
598
|
+
function hasServiceMethodCandidate(symbols) {
|
|
599
|
+
return symbols.some((s) => {
|
|
600
|
+
if (s.kind !== 'method')
|
|
601
|
+
return false;
|
|
602
|
+
const dotIdx = s.name.indexOf('.');
|
|
603
|
+
const colonIdx = s.name.indexOf('::');
|
|
604
|
+
const sepIdx = dotIdx >= 0 ? dotIdx : colonIdx;
|
|
605
|
+
const cls = sepIdx > 0
|
|
606
|
+
? s.name.slice(0, sepIdx).toLowerCase()
|
|
607
|
+
: classFromSignatureForMethod(s.name, s.signature ?? '');
|
|
608
|
+
if (!cls)
|
|
609
|
+
return false;
|
|
610
|
+
return (
|
|
611
|
+
// TypeScript application-layer naming
|
|
612
|
+
cls.endsWith('service') ||
|
|
613
|
+
cls.endsWith('repository') ||
|
|
614
|
+
cls.endsWith('manager') ||
|
|
615
|
+
cls.endsWith('store') ||
|
|
616
|
+
// PHP model conventions (CodeIgniter: *_model; Laravel/generic: *Model)
|
|
617
|
+
cls.endsWith('_model') ||
|
|
618
|
+
(cls.endsWith('model') && cls.length > 5) ||
|
|
619
|
+
// PHP controller conventions
|
|
620
|
+
cls.endsWith('_controller') ||
|
|
621
|
+
(cls.endsWith('controller') && cls.length > 10) ||
|
|
622
|
+
// Go HTTP handlers, database layers, and API clients
|
|
623
|
+
cls.endsWith('handler') ||
|
|
624
|
+
cls.endsWith('db') ||
|
|
625
|
+
cls.endsWith('client') ||
|
|
626
|
+
// Android framework classes (lifecycle methods, adapters)
|
|
627
|
+
cls.endsWith('activity') ||
|
|
628
|
+
cls.endsWith('fragment') ||
|
|
629
|
+
cls.endsWith('adapter') ||
|
|
630
|
+
cls.endsWith('viewmodel') ||
|
|
631
|
+
// Python application-layer class patterns
|
|
632
|
+
cls.endsWith('processor') ||
|
|
633
|
+
cls.endsWith('indexer') ||
|
|
634
|
+
cls.endsWith('parser') ||
|
|
635
|
+
// Symfony event-driven and form patterns
|
|
636
|
+
cls.endsWith('eventsubscriber') ||
|
|
637
|
+
cls.endsWith('listener') ||
|
|
638
|
+
cls.endsWith('formtype'));
|
|
639
|
+
});
|
|
640
|
+
}
|
|
296
641
|
//# sourceMappingURL=search-symbols.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search-symbols.js","sourceRoot":"","sources":["../../../src/server/tools/search-symbols.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC7F,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAC1D,OAAO,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AAC/E,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,yCAAyC,CAAC;AAC1E,OAAO,EAAE,WAAW,EAAE,MAAM,uCAAuC,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAK/D,MAAM,CAAC,MAAM,IAAI,GAAG,gBAAgB,CAAC;AAErC,MAAM,CAAC,MAAM,WAAW,GACtB,iGAAiG;IACjG,iFAAiF;IACjF,uDAAuD;IACvD,+DAA+D;IAC/D,yEAAyE,CAAC;AAE5E,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,MAAM,EAAE,CAAC;SACN,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,kFAAkF,CAAC;IAC/F,OAAO,EAAE,CAAC;SACP,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;SACjB,QAAQ,EAAE;SACV,QAAQ,CAAC,wFAAwF,CAAC;IACrG,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,6DAA6D,CAAC;IACzF,IAAI,EAAE,CAAC;SACJ,IAAI,CAAC,CAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM;QACnE,WAAW,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;SAC7E,QAAQ,EAAE;SACV,QAAQ,CAAC,uBAAuB,CAAC;IACpC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;IAC1E,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;IAClF,IAAI,EAAE,CAAC;SACJ,IAAI,CAAC,CAAC,SAAS,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;SACvC,QAAQ,EAAE;SACV,QAAQ,CACP,2EAA2E;QAC3E,2DAA2D,CAC5D;IACH,eAAe,EAAE,CAAC;SACf,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,EAAE;SACV,QAAQ,CAAC,wDAAwD,CAAC;IACrE,cAAc,EAAE,CAAC;SACd,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,EAAE;SACV,QAAQ,CAAC,uDAAuD,CAAC;IACpE,KAAK,EAAE,CAAC;SACL,OAAO,EAAE;SACT,QAAQ,EAAE;SACV,QAAQ,CAAC,8EAA8E,CAAC;CAC5F,CAAC;AAuBF,iFAAiF;AAEjF,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,IAW7B;IACC,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACtB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;IAC/B,MAAM,cAAc,GAAG,IAAI,CAAC,eAAe,IAAI,GAAG,CAAC;IACnD,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc,IAAI,GAAG,CAAC;IAEjD,8EAA8E;IAC9E,MAAM,KAAK,GAAG,gBAAgB,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IAC/E,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO;YACL,OAAO,EAAE,CAAC;oBACR,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;wBACnB,KAAK,EAAE,IAAI,CAAC,MAAM;4BAChB,CAAC,CAAC,mBAAmB,IAAI,CAAC,MAAM,EAAE;4BAClC,CAAC,CAAC,iDAAiD;qBACtD,CAAC;iBACH,CAAC;YACF,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;IAED,MAAM,aAAa,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAE7C,+EAA+E;IAC/E,IAAI,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC;IAC9B,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,6DAA6D;QAC7D,MAAM,OAAO,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC1C,MAAM,aAAa,GAAG,eAAe,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC5D,OAAO,CAAC,KAAK,EAAE,CAAC;QAChB,aAAa,GAAG,aAAa,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;IAC3D,CAAC;IAED,8EAA8E;IAC9E,IAAI,aAAa,KAAK,QAAQ,IAAI,aAAa,KAAK,UAAU,EAAE,CAAC;QAC/D,IAAI,QAAQ,CAAC;QACb,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;YAC3B,QAAQ,GAAG,uBAAuB,CAAC,MAAM,CAAC,CAAC;QAC7C,CAAC;QAAC,MAAM,CAAC;YACP,iDAAiD;YACjD,MAAM,CAAC,KAAK,CAAC,yEAAyE,CAAC,CAAC;YACxF,aAAa,GAAG,SAAS,CAAC;QAC5B,CAAC;QAED,IAAI,QAAQ,IAAI,CAAC,aAAa,KAAK,QAAQ,IAAI,aAAa,KAAK,UAAU,CAAC,EAAE,CAAC;YAC7E,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,aAAa,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC;gBAClE,MAAM,SAAS,GAAG,aAAa,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC;gBAEpE,MAAM,UAAU,GAAyB,EAAE,CAAC;gBAC5C,IAAI,aAAa,GAAG,CAAC,CAAC;gBACtB,IAAI,kBAAkB,GAAG,CAAC,CAAC;gBAE3B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;oBACzB,MAAM,EAAE,GAAG,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBACjC,IAAI,CAAC;wBACH,MAAM,QAAQ,GAAG,eAAe,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;wBAC9C,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;4BACnB,oEAAoE;4BACpE,MAAM,CAAC,KAAK,CAAC,yCAAyC,IAAI,CAAC,EAAE,iBAAiB,aAAa,OAAO,CAAC,CAAC;4BACpG,SAAS;wBACX,CAAC;wBAED,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,EAAE,EAAE,QAAS,EAAE,EAAE,CAAC,CAAC;wBAC5D,MAAM,WAAW,CAAC,OAAO,EAAE,CAAC;wBAC5B,MAAM,QAAQ,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,EAAE,EAAE,WAAW,EAAE,EAAE,CAAC,CAAC;wBAE9D,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE;4BAChD,UAAU,EAAE,KAAK;4BACjB,aAAa,EAAE,QAAQ;4BACvB,cAAc,EAAE,SAAS;4BACzB,IAAI,EAAE,IAAI,CAAC,IAAI;4BACf,WAAW,EAAE,IAAI,CAAC,QAAQ;4BAC1B,KAAK,EAAE,IAAI,CAAC,KAAK;yBAClB,CAAC,CAAC;wBAEH,MAAM,WAAW,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;wBACxE,MAAM,SAAS,GAAG,iBAAiB,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;wBAC9D,aAAa,IAAI,WAAW,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;wBACpF,kBAAkB,IAAI,OAAO,CAAC,MAAM,CAClC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,EACzD,CAAC,CACF,CAAC;wBAEF,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;4BACxB,UAAU,CAAC,IAAI,CAAC;gCACd,MAAM,EAAE,CAAC,CAAC,MAAM;gCAChB,MAAM,EAAE,IAAI,CAAC,EAAE;gCACf,QAAQ,EAAE,IAAI,CAAC,IAAI;gCACnB,YAAY,EAAE,CAAC,CAAC,YAAY;gCAC5B,aAAa,EAAE,CAAC,CAAC,aAAa;gCAC9B,aAAa,EAAE,CAAC,CAAC,aAAa;gCAC9B,iBAAiB,EAAE,CAAC,CAAC,iBAAiB;6BACvC,CAAC,CAAC;wBACL,CAAC;oBACH,CAAC;4BAAS,CAAC;wBACT,EAAE,CAAC,KAAK,EAAE,CAAC;oBACb,CAAC;gBACH,CAAC;gBAED,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,aAAa,KAAK,UAAU,EAAE,CAAC;oBAC1D,sDAAsD;oBACtD,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,GAAG,CAAC,CAAC,aAAa,CAAC,CAAC;oBAC7D,MAAM,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;oBAEvC,OAAO;wBACL,OAAO,EAAE,CAAC;gCACR,IAAI,EAAE,MAAM;gCACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAClB;oCACE,KAAK,EAAE,GAAG,CAAC,MAAM;oCACjB,OAAO,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;wCACvB,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE;wCACf,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI;wCACnB,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI;wCACnB,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ;wCAC3B,MAAM,EAAE,CAAC,CAAC,MAAM;wCAChB,QAAQ,EAAE,CAAC,CAAC,QAAQ;wCACpB,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,SAAS;wCAC7B,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO;wCACzB,MAAM,EAAE;4CACN,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC;4CAC/B,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC;4CACjC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC;yCAClC;wCACD,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;4CACf,MAAM,EAAE;gDACN,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC;gDAC9B,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC;gDAClC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC;gDACpC,gBAAgB,EAAE,CAAC,CAAC,iBAAiB,KAAK,SAAS;oDACjD,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,iBAAiB,CAAC;oDACjC,CAAC,CAAC,IAAI;gDACR,aAAa,EAAE,QAAQ;gDACvB,cAAc,EAAE,SAAS;6CAC1B;yCACF,CAAC,CAAC,CAAC,EAAE,CAAC;qCACR,CAAC,CAAC;oCACH,KAAK,EAAE;wCACL,GAAG,SAAS,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,QAAQ,EAAE,aAAa,EAAE,aAAa,EAAE,kBAAkB,EAAE,CAAC;wCACvG,IAAI,EAAE,aAAa;wCACnB,aAAa;qCACd;iCACF,EACD,IAAI,EACJ,CAAC,CACF;6BACF,CAAC;qBACH,CAAC;gBACJ,CAAC;gBAED,4DAA4D;gBAC5D,aAAa,GAAG,SAAS,CAAC;YAC5B,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,CAAC,IAAI,CAAC,oEAAoE,GAAG,EAAE,CAAC,CAAC;gBACvF,aAAa,GAAG,SAAS,CAAC;YAC5B,CAAC;QACH,CAAC;IACH,CAAC;IAED,6EAA6E;IAC7E,MAAM,iBAAiB,GAA0B,EAAE,CAAC;IACpD,IAAI,aAAa,GAAG,CAAC,CAAC;IACtB,IAAI,kBAAkB,GAAG,CAAC,CAAC;IAC3B,IAAI,UAAU,GAA4B,KAAK,CAAC;IAEhD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,EAAE,GAAG,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjC,IAAI,CAAC;YACH,IAAI,OAAuB,CAAC;YAC5B,MAAM,YAAY,GAAG,WAAW,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;YAE9C,IAAI,YAAY,EAAE,CAAC;gBACjB,MAAM,QAAQ,GAAG,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAC7C,IAAI,CAAC;oBACH,OAAO,GAAG,gBAAgB,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,QAAQ,EAAE;wBAChD,IAAI,EAAE,IAAI,CAAC,IAAa;wBACxB,QAAQ,EAAE,IAAI,CAAC,QAAQ;wBACvB,KAAK;qBACN,CAAC,CAAC;gBACL,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,MAAM,CAAC,IAAI,CAAC,wCAAwC,IAAI,CAAC,EAAE,2BAA2B,GAAG,EAAE,CAAC,CAAC;oBAC7F,OAAO,GAAG,aAAa,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,EAAE;wBAC/C,IAAI,EAAE,IAAI,CAAC,IAAa;wBACxB,QAAQ,EAAE,IAAI,CAAC,QAAQ;wBACvB,KAAK;qBACN,CAAC,CAAC;oBACH,UAAU,GAAG,eAAe,CAAC;gBAC/B,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,OAAO,GAAG,aAAa,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,EAAE;oBAC/C,IAAI,EAAE,IAAI,CAAC,IAAa;oBACxB,QAAQ,EAAE,IAAI,CAAC,QAAQ;oBACvB,KAAK;iBACN,CAAC,CAAC;gBACH,UAAU,GAAG,eAAe,CAAC;YAC/B,CAAC;YAED,MAAM,MAAM,GAAmB,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YAE5E,MAAM,WAAW,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YACvE,MAAM,SAAS,GAAG,iBAAiB,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;YAC9D,aAAa,IAAI,WAAW,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACpF,kBAAkB,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;YAElG,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;gBACvB,iBAAiB,CAAC,IAAI,CAAC;oBACrB,MAAM,EAAE,CAAC,CAAC,MAAM;oBAChB,MAAM,EAAE,IAAI,CAAC,EAAE;oBACf,QAAQ,EAAE,IAAI,CAAC,IAAI;oBACnB,KAAK,EAAE,CAAC,CAAC,KAAK;oBACd,WAAW,EAAE,CAAC,CAAC,WAAW;oBAC1B,UAAU,EAAE,CAAC,CAAC,UAAU;iBACzB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;gBAAS,CAAC;YACT,EAAE,CAAC,KAAK,EAAE,CAAC;QACb,CAAC;IACH,CAAC;IAED,8DAA8D;IAC9D,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IACpD,MAAM,GAAG,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAE9C,OAAO;QACL,OAAO,EAAE,CAAC;gBACR,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAClB;oBACE,KAAK,EAAE,GAAG,CAAC,MAAM;oBACjB,OAAO,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;wBACvB,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE;wBACf,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI;wBACnB,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI;wBACnB,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ;wBAC3B,MAAM,EAAE,CAAC,CAAC,MAAM;wBAChB,QAAQ,EAAE,CAAC,CAAC,QAAQ;wBACpB,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,SAAS;wBAC7B,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO;wBACzB,KAAK,EAAE,CAAC,CAAC,KAAK;wBACd,WAAW,EAAE,CAAC,CAAC,WAAW;wBAC1B,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;qBAChE,CAAC,CAAC;oBACH,KAAK,EAAE;wBACL,GAAG,SAAS,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,QAAQ,EAAE,aAAa,EAAE,aAAa,EAAE,kBAAkB,EAAE,CAAC;wBACvG,IAAI,EAAE,aAAa;wBACnB,WAAW,EAAE,UAAU;wBACvB,aAAa;qBACd;iBACF,EACD,IAAI,EACJ,CAAC,CACF;aACF,CAAC;KACH,CAAC;AACJ,CAAC;AAED,iFAAiF;AAEjF,SAAS,MAAM,CAAC,CAAS;IACvB,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC;AACvC,CAAC"}
|
|
1
|
+
{"version":3,"file":"search-symbols.js","sourceRoot":"","sources":["../../../src/server/tools/search-symbols.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* trace-invocation-chain.ts
|
|
3
|
+
*
|
|
4
|
+
* MCP tool: trace_invocation_chain
|
|
5
|
+
*
|
|
6
|
+
* Trace multi-hop call chains from a start symbol forward through callees,
|
|
7
|
+
* returning all discovered paths as ordered symbol lists. Useful for questions
|
|
8
|
+
* like "what execution path leads from this API endpoint to a background worker?"
|
|
9
|
+
*
|
|
10
|
+
* Strategy: query-time text scan (same as get_call_hierarchy) — no pre-built
|
|
11
|
+
* call edges required. Scans symbol source text for `identifier(` patterns and
|
|
12
|
+
* matches them against all indexed symbols in the repo.
|
|
13
|
+
*
|
|
14
|
+
* Cycle detection: back-edges are included as leaf nodes with `cyclic: true`
|
|
15
|
+
* so the traversal terminates and the caller can see the cycle.
|
|
16
|
+
*/
|
|
17
|
+
import { z } from 'zod';
|
|
18
|
+
import type { CallToolResult } from '@modelcontextprotocol/sdk/types.js';
|
|
19
|
+
export declare const name = "trace_invocation_chain";
|
|
20
|
+
export declare const description: string;
|
|
21
|
+
export declare const inputSchema: {
|
|
22
|
+
repoId: z.ZodString;
|
|
23
|
+
startSymbol: z.ZodString;
|
|
24
|
+
endHint: z.ZodOptional<z.ZodString>;
|
|
25
|
+
maxDepth: z.ZodOptional<z.ZodNumber>;
|
|
26
|
+
maxChains: z.ZodOptional<z.ZodNumber>;
|
|
27
|
+
includeDynamicCalls: z.ZodOptional<z.ZodBoolean>;
|
|
28
|
+
};
|
|
29
|
+
export interface ChainNode {
|
|
30
|
+
symbolId: string;
|
|
31
|
+
name: string;
|
|
32
|
+
kind: string;
|
|
33
|
+
filePath: string;
|
|
34
|
+
signature: string;
|
|
35
|
+
/** True when this node closes a cycle (i.e. already appears earlier in the chain). */
|
|
36
|
+
cyclic?: boolean;
|
|
37
|
+
}
|
|
38
|
+
export interface SymbolChain {
|
|
39
|
+
nodes: ChainNode[];
|
|
40
|
+
/** True when truncated by maxDepth, not by endHint or leaf. */
|
|
41
|
+
truncatedByDepth: boolean;
|
|
42
|
+
/** True when chain ends at an endHint match. */
|
|
43
|
+
endedAtHint: boolean;
|
|
44
|
+
}
|
|
45
|
+
export declare function handler(args: {
|
|
46
|
+
repoId: string;
|
|
47
|
+
startSymbol: string;
|
|
48
|
+
endHint?: string;
|
|
49
|
+
maxDepth?: number;
|
|
50
|
+
maxChains?: number;
|
|
51
|
+
includeDynamicCalls?: boolean;
|
|
52
|
+
}): Promise<CallToolResult>;
|
|
53
|
+
//# sourceMappingURL=trace-invocation-chain.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trace-invocation-chain.d.ts","sourceRoot":"","sources":["../../../src/server/tools/trace-invocation-chain.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAGzE,eAAO,MAAM,IAAI,2BAA2B,CAAC;AAE7C,eAAO,MAAM,WAAW,QAOsD,CAAC;AAE/E,eAAO,MAAM,WAAW;;;;;;;CAsCvB,CAAC;AAIF,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,sFAAsF;IACtF,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,+DAA+D;IAC/D,gBAAgB,EAAE,OAAO,CAAC;IAC1B,gDAAgD;IAChD,WAAW,EAAE,OAAO,CAAC;CACtB;AAqCD,wBAAsB,OAAO,CAAC,IAAI,EAAE;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B,GAAG,OAAO,CAAC,cAAc,CAAC,CAiO1B"}
|