sverklo 0.2.12 → 0.2.13
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 +102 -13
- package/dist/bin/sverklo.js +69 -1
- package/dist/bin/sverklo.js.map +1 -1
- package/dist/src/audit-prompt.d.ts +2 -0
- package/dist/src/audit-prompt.js +91 -0
- package/dist/src/audit-prompt.js.map +1 -0
- package/dist/src/doctor.js +55 -0
- package/dist/src/doctor.js.map +1 -1
- package/dist/src/indexer/embedding-providers.d.ts +34 -0
- package/dist/src/indexer/embedding-providers.js +215 -0
- package/dist/src/indexer/embedding-providers.js.map +1 -0
- package/dist/src/indexer/embedding-providers.test.d.ts +1 -0
- package/dist/src/indexer/embedding-providers.test.js +83 -0
- package/dist/src/indexer/embedding-providers.test.js.map +1 -0
- package/dist/src/indexer/indexer-freshness.test.d.ts +1 -0
- package/dist/src/indexer/indexer-freshness.test.js +109 -0
- package/dist/src/indexer/indexer-freshness.test.js.map +1 -0
- package/dist/src/indexer/indexer.d.ts +10 -0
- package/dist/src/indexer/indexer.js +46 -4
- package/dist/src/indexer/indexer.js.map +1 -1
- package/dist/src/indexer/watcher.js +4 -0
- package/dist/src/indexer/watcher.js.map +1 -1
- package/dist/src/memory/journal.d.ts +62 -0
- package/dist/src/memory/journal.js +136 -0
- package/dist/src/memory/journal.js.map +1 -0
- package/dist/src/memory/journal.test.d.ts +1 -0
- package/dist/src/memory/journal.test.js +98 -0
- package/dist/src/memory/journal.test.js.map +1 -0
- package/dist/src/modes.d.ts +16 -0
- package/dist/src/modes.js +104 -0
- package/dist/src/modes.js.map +1 -0
- package/dist/src/modes.test.d.ts +1 -0
- package/dist/src/modes.test.js +48 -0
- package/dist/src/modes.test.js.map +1 -0
- package/dist/src/search/hybrid-search.d.ts +22 -0
- package/dist/src/search/hybrid-search.js +167 -5
- package/dist/src/search/hybrid-search.js.map +1 -1
- package/dist/src/search/hybrid-search.test.d.ts +1 -0
- package/dist/src/search/hybrid-search.test.js +109 -0
- package/dist/src/search/hybrid-search.test.js.map +1 -0
- package/dist/src/search/token-budget.d.ts +1 -0
- package/dist/src/search/token-budget.js +1 -1
- package/dist/src/search/token-budget.js.map +1 -1
- package/dist/src/server/mcp-server.js +32 -25
- package/dist/src/server/mcp-server.js.map +1 -1
- package/dist/src/server/tool-overrides.d.ts +16 -0
- package/dist/src/server/tool-overrides.js +102 -0
- package/dist/src/server/tool-overrides.js.map +1 -0
- package/dist/src/server/tool-overrides.test.d.ts +1 -0
- package/dist/src/server/tool-overrides.test.js +124 -0
- package/dist/src/server/tool-overrides.test.js.map +1 -0
- package/dist/src/server/tools/context-budget.test.d.ts +1 -0
- package/dist/src/server/tools/context-budget.test.js +150 -0
- package/dist/src/server/tools/context-budget.test.js.map +1 -0
- package/dist/src/server/tools/context.d.ts +11 -1
- package/dist/src/server/tools/context.js +202 -8
- package/dist/src/server/tools/context.js.map +1 -1
- package/dist/src/server/tools/diff-heuristics.d.ts +28 -0
- package/dist/src/server/tools/diff-heuristics.js +213 -0
- package/dist/src/server/tools/diff-heuristics.js.map +1 -0
- package/dist/src/server/tools/diff-heuristics.test.d.ts +1 -0
- package/dist/src/server/tools/diff-heuristics.test.js +151 -0
- package/dist/src/server/tools/diff-heuristics.test.js.map +1 -0
- package/dist/src/server/tools/forget.js +3 -0
- package/dist/src/server/tools/forget.js.map +1 -1
- package/dist/src/server/tools/index-status.js +16 -0
- package/dist/src/server/tools/index-status.js.map +1 -1
- package/dist/src/server/tools/lookup.js +12 -13
- package/dist/src/server/tools/lookup.js.map +1 -1
- package/dist/src/server/tools/recall.d.ts +5 -1
- package/dist/src/server/tools/recall.js +66 -4
- package/dist/src/server/tools/recall.js.map +1 -1
- package/dist/src/server/tools/recall.test.d.ts +1 -0
- package/dist/src/server/tools/recall.test.js +116 -0
- package/dist/src/server/tools/recall.test.js.map +1 -0
- package/dist/src/server/tools/remember.js +14 -0
- package/dist/src/server/tools/remember.js.map +1 -1
- package/dist/src/server/tools/review-diff.js +31 -0
- package/dist/src/server/tools/review-diff.js.map +1 -1
- package/dist/src/server/tools/search.js +29 -4
- package/dist/src/server/tools/search.js.map +1 -1
- package/dist/src/server/tools/search.test.d.ts +1 -0
- package/dist/src/server/tools/search.test.js +118 -0
- package/dist/src/server/tools/search.test.js.map +1 -0
- package/dist/src/server/tools/tier.js +25 -1
- package/dist/src/server/tools/tier.js.map +1 -1
- package/dist/src/storage/chunk-store.d.ts +12 -0
- package/dist/src/storage/chunk-store.js +16 -0
- package/dist/src/storage/chunk-store.js.map +1 -1
- package/dist/src/storage/chunk-store.test.d.ts +1 -0
- package/dist/src/storage/chunk-store.test.js +69 -0
- package/dist/src/storage/chunk-store.test.js.map +1 -0
- package/package.json +5 -2
|
@@ -1,8 +1,112 @@
|
|
|
1
1
|
import { embed, cosineSimilarity } from "../indexer/embedder.js";
|
|
2
2
|
// Reciprocal Rank Fusion constant
|
|
3
3
|
const RRF_K = 60;
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
// Issue #4: query-shape classification. Research showed semantic search
|
|
5
|
+
// consistently underperforms on framework-wiring questions where the
|
|
6
|
+
// answer lives in an annotation, config file, or build-time-generated
|
|
7
|
+
// class rather than in code that names the concept being searched for.
|
|
8
|
+
// When we detect one of these shapes, we lower confidence and surface a
|
|
9
|
+
// suggestion to fall back to Grep for the specific annotation pattern.
|
|
10
|
+
const FRAMEWORK_WIRING_TOKENS = [
|
|
11
|
+
"registered",
|
|
12
|
+
"registration",
|
|
13
|
+
"autowired",
|
|
14
|
+
"auto-wired",
|
|
15
|
+
"auto-discovered",
|
|
16
|
+
"bean",
|
|
17
|
+
"beans",
|
|
18
|
+
"annotation",
|
|
19
|
+
"annotated",
|
|
20
|
+
"interceptor",
|
|
21
|
+
"decorator",
|
|
22
|
+
"middleware setup",
|
|
23
|
+
"wired",
|
|
24
|
+
"wiring",
|
|
25
|
+
"injected",
|
|
26
|
+
"injection",
|
|
27
|
+
"provider",
|
|
28
|
+
"providers",
|
|
29
|
+
"binding",
|
|
30
|
+
"bound to",
|
|
31
|
+
"@component",
|
|
32
|
+
"@configuration",
|
|
33
|
+
"@service",
|
|
34
|
+
"@repository",
|
|
35
|
+
"@inject",
|
|
36
|
+
"@module",
|
|
37
|
+
];
|
|
38
|
+
function classifyQueryShape(query) {
|
|
39
|
+
const lower = query.toLowerCase();
|
|
40
|
+
const hit = FRAMEWORK_WIRING_TOKENS.find((t) => lower.includes(t));
|
|
41
|
+
if (hit) {
|
|
42
|
+
return {
|
|
43
|
+
shape: "framework_wiring",
|
|
44
|
+
reason: `query mentions "${hit}" — framework registration/wiring questions are often better answered by grep for the specific annotation`,
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
return { shape: "general" };
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Build a confidence signal from the ranked candidates. Low confidence
|
|
51
|
+
* means either (a) no strong top result, or (b) the top and second-best
|
|
52
|
+
* results are too close to distinguish, or (c) the query shape is one
|
|
53
|
+
* we know semantic search struggles with.
|
|
54
|
+
*
|
|
55
|
+
* This is advisory — the results still come back, but the agent sees a
|
|
56
|
+
* hint at the bottom suggesting grep as a fallback. Issue #4.
|
|
57
|
+
*/
|
|
58
|
+
function computeConfidence(ranked, queryShape) {
|
|
59
|
+
if (ranked.length === 0) {
|
|
60
|
+
return { level: "low", reason: "no results matched" };
|
|
61
|
+
}
|
|
62
|
+
const top = ranked[0].score;
|
|
63
|
+
const second = ranked[1]?.score ?? 0;
|
|
64
|
+
// The RRF scores are small (~0.03 at rank 0 for k=60). A "strong"
|
|
65
|
+
// top-of-rank hit lands around ~0.03+. Below ~0.005 the query is
|
|
66
|
+
// either matching weakly or is out-of-distribution. These thresholds
|
|
67
|
+
// were calibrated against the profiler results in issue #6.
|
|
68
|
+
const WEAK_TOP_THRESHOLD = 0.005;
|
|
69
|
+
if (top < WEAK_TOP_THRESHOLD) {
|
|
70
|
+
return {
|
|
71
|
+
level: "low",
|
|
72
|
+
reason: "top result has a weak relevance score; the query may be out of distribution",
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
// Gap ratio: if the second result is >= 80% of the top result, the
|
|
76
|
+
// ranking has no clear winner and an agent copying the first result
|
|
77
|
+
// is taking a coin flip.
|
|
78
|
+
if (second > 0 && second / top > 0.8) {
|
|
79
|
+
if (queryShape.shape === "framework_wiring") {
|
|
80
|
+
return {
|
|
81
|
+
level: "low",
|
|
82
|
+
reason: queryShape.reason,
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
return {
|
|
86
|
+
level: "medium",
|
|
87
|
+
reason: "top two results are close — consider reading both or refining the query",
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
if (queryShape.shape === "framework_wiring") {
|
|
91
|
+
return {
|
|
92
|
+
level: "medium",
|
|
93
|
+
reason: queryShape.reason,
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
return { level: "high", reason: null };
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Internal: compute the full ranked candidate list without packing.
|
|
100
|
+
* Extracted so hybridSearch and hybridSearchWithConfidence both share
|
|
101
|
+
* it — the original implementation ran this pipeline twice, once
|
|
102
|
+
* inside hybridSearch (packed) and again implicitly when the
|
|
103
|
+
* confidence wrapper called hybridSearch with a sky-high budget and
|
|
104
|
+
* then repacked. That was doubling the work on every search call.
|
|
105
|
+
*
|
|
106
|
+
* Returns the full ranked list (not token-budgeted). Callers pack.
|
|
107
|
+
*/
|
|
108
|
+
async function rankCandidates(indexer, options) {
|
|
109
|
+
const { query, scope, language, type } = options;
|
|
6
110
|
// Signal A: BM25 text search
|
|
7
111
|
const ftsResults = indexer.chunkStore.searchFts(query, 50);
|
|
8
112
|
// Signal B: Vector similarity search
|
|
@@ -84,10 +188,68 @@ export async function hybridSearch(indexer, options) {
|
|
|
84
188
|
const finalScore = rrfScore * pagerankBoost;
|
|
85
189
|
candidates.push({ chunk, file, score: finalScore });
|
|
86
190
|
}
|
|
87
|
-
// Sort by score
|
|
191
|
+
// Sort by score, return unbounded — caller packs.
|
|
88
192
|
candidates.sort((a, b) => b.score - a.score);
|
|
89
|
-
|
|
90
|
-
|
|
193
|
+
return candidates;
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Public entry point: returns the ranked+packed result list.
|
|
197
|
+
* Backwards compat for any in-process callers that don't need the
|
|
198
|
+
* confidence signal.
|
|
199
|
+
*/
|
|
200
|
+
export async function hybridSearch(indexer, options) {
|
|
201
|
+
const ranked = await rankCandidates(indexer, options);
|
|
202
|
+
return packResults(ranked, options.tokenBudget);
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Same as hybridSearch but returns a confidence signal and a suggested
|
|
206
|
+
* fallback hint. This is the preferred entry point for the MCP tool —
|
|
207
|
+
* it lets us tell agents when semantic search is likely to be weak so
|
|
208
|
+
* they can fall back to Grep without burning a second tool call.
|
|
209
|
+
*/
|
|
210
|
+
export async function hybridSearchWithConfidence(indexer, options) {
|
|
211
|
+
// Single rank pass; confidence reads the unbounded list, the output
|
|
212
|
+
// is packed to the caller's budget. No double work.
|
|
213
|
+
const ranked = await rankCandidates(indexer, options);
|
|
214
|
+
const shape = classifyQueryShape(options.query);
|
|
215
|
+
const confidence = computeConfidence(ranked, shape);
|
|
216
|
+
const packed = packResults(ranked, options.tokenBudget);
|
|
217
|
+
// Fallback hint wording. Keep the hint specific to *what went wrong*
|
|
218
|
+
// so the agent can act on it rather than staring at an "unsure" tag.
|
|
219
|
+
let fallbackHint = null;
|
|
220
|
+
if (confidence.level === "low") {
|
|
221
|
+
if (shape.shape === "framework_wiring") {
|
|
222
|
+
fallbackHint =
|
|
223
|
+
"This query looks like a framework-wiring / registration question. " +
|
|
224
|
+
"Semantic search struggles with these because the answer often lives " +
|
|
225
|
+
"in a bean annotation, a config file, or a build-time-generated class. " +
|
|
226
|
+
"Try Grep for the specific annotation pattern (e.g. `@Component`, " +
|
|
227
|
+
"`@Configuration`, `@Inject`) or the framework-level class name.";
|
|
228
|
+
}
|
|
229
|
+
else if (ranked.length === 0) {
|
|
230
|
+
fallbackHint =
|
|
231
|
+
"No matches. The query may be out of distribution for the current " +
|
|
232
|
+
"embedding model. Try rephrasing with concrete identifier names, or " +
|
|
233
|
+
"fall back to `Grep` for exact string matching.";
|
|
234
|
+
}
|
|
235
|
+
else {
|
|
236
|
+
fallbackHint =
|
|
237
|
+
"Top result has a weak relevance score. Consider a more specific " +
|
|
238
|
+
"query, or fall back to `Grep` if you know the exact symbol name.";
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
else if (confidence.level === "medium" && shape.shape === "framework_wiring") {
|
|
242
|
+
fallbackHint =
|
|
243
|
+
"These results may be framework-wiring-adjacent. If none of the top " +
|
|
244
|
+
"matches directly answer the question, grep for the specific annotation " +
|
|
245
|
+
"(e.g. `@Configuration`, `@Component`) — that's often the faster path.";
|
|
246
|
+
}
|
|
247
|
+
return {
|
|
248
|
+
results: packed,
|
|
249
|
+
confidence: confidence.level,
|
|
250
|
+
confidenceReason: confidence.reason,
|
|
251
|
+
fallbackHint,
|
|
252
|
+
};
|
|
91
253
|
}
|
|
92
254
|
export function packResults(candidates, tokenBudget) {
|
|
93
255
|
const results = [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hybrid-search.js","sourceRoot":"","sources":["../../../src/search/hybrid-search.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAYjE,kCAAkC;AAClC,MAAM,KAAK,GAAG,EAAE,CAAC;AAEjB,MAAM,CAAC,KAAK,UAAU,
|
|
1
|
+
{"version":3,"file":"hybrid-search.js","sourceRoot":"","sources":["../../../src/search/hybrid-search.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import { describe, it, expect } from "vitest";
|
|
2
|
+
// Minimal SearchResult fixture helper.
|
|
3
|
+
function mkResult(score) {
|
|
4
|
+
return {
|
|
5
|
+
chunk: {
|
|
6
|
+
id: 1,
|
|
7
|
+
file_id: 1,
|
|
8
|
+
start_line: 1,
|
|
9
|
+
end_line: 2,
|
|
10
|
+
content: "x",
|
|
11
|
+
type: "function",
|
|
12
|
+
name: "foo",
|
|
13
|
+
token_count: 10,
|
|
14
|
+
signature: null,
|
|
15
|
+
metadata: null,
|
|
16
|
+
},
|
|
17
|
+
file: {
|
|
18
|
+
id: 1,
|
|
19
|
+
path: "src/foo.ts",
|
|
20
|
+
language: "typescript",
|
|
21
|
+
pagerank: 0.5,
|
|
22
|
+
last_modified: 0,
|
|
23
|
+
},
|
|
24
|
+
score,
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
// We exercise the module through a tiny monkey-patched shim that
|
|
28
|
+
// imports the same helpers. Since they're not exported, we re-declare
|
|
29
|
+
// them here for test coverage — if the production copies diverge, the
|
|
30
|
+
// behavioral tests against the public API (below) will catch it.
|
|
31
|
+
describe("query-shape classifier", () => {
|
|
32
|
+
// Importing the real module forces the branch coverage to run against
|
|
33
|
+
// its real exports. We call hybridSearchWithConfidence with a fake
|
|
34
|
+
// indexer that returns empty results and assert the framework-wiring
|
|
35
|
+
// detection fires on the confidence hint.
|
|
36
|
+
it("flags framework-wiring queries as low confidence with grep hint", async () => {
|
|
37
|
+
const { hybridSearchWithConfidence } = await import("./hybrid-search.js");
|
|
38
|
+
const fakeIndexer = {
|
|
39
|
+
chunkStore: {
|
|
40
|
+
searchFts: () => [],
|
|
41
|
+
getByFile: () => [],
|
|
42
|
+
getById: () => undefined,
|
|
43
|
+
},
|
|
44
|
+
fileStore: {
|
|
45
|
+
getAll: () => [],
|
|
46
|
+
},
|
|
47
|
+
embeddingStore: {
|
|
48
|
+
get: () => undefined,
|
|
49
|
+
},
|
|
50
|
+
};
|
|
51
|
+
const result = await hybridSearchWithConfidence(fakeIndexer, {
|
|
52
|
+
query: "how is CallerTraceInterceptor registered as a bean",
|
|
53
|
+
tokenBudget: 1000,
|
|
54
|
+
});
|
|
55
|
+
expect(result.confidence).toBe("low");
|
|
56
|
+
expect(result.fallbackHint).not.toBeNull();
|
|
57
|
+
expect(result.fallbackHint).toMatch(/framework.wiring|annotation|grep/i);
|
|
58
|
+
});
|
|
59
|
+
it("does not flag general semantic queries as low confidence", async () => {
|
|
60
|
+
const { hybridSearchWithConfidence } = await import("./hybrid-search.js");
|
|
61
|
+
const fakeIndexer = {
|
|
62
|
+
chunkStore: {
|
|
63
|
+
searchFts: () => [],
|
|
64
|
+
getByFile: () => [],
|
|
65
|
+
getById: () => undefined,
|
|
66
|
+
},
|
|
67
|
+
fileStore: {
|
|
68
|
+
getAll: () => [],
|
|
69
|
+
},
|
|
70
|
+
embeddingStore: {
|
|
71
|
+
get: () => undefined,
|
|
72
|
+
},
|
|
73
|
+
};
|
|
74
|
+
// Empty results will still trigger "no results" low-confidence, but
|
|
75
|
+
// the reason must NOT mention framework wiring.
|
|
76
|
+
const result = await hybridSearchWithConfidence(fakeIndexer, {
|
|
77
|
+
query: "find the retry logic for http requests",
|
|
78
|
+
tokenBudget: 1000,
|
|
79
|
+
});
|
|
80
|
+
expect(result.confidence).toBe("low");
|
|
81
|
+
if (result.fallbackHint) {
|
|
82
|
+
expect(result.fallbackHint).not.toMatch(/framework.wiring/i);
|
|
83
|
+
}
|
|
84
|
+
});
|
|
85
|
+
it("handles @annotation tokens case-insensitively", async () => {
|
|
86
|
+
const { hybridSearchWithConfidence } = await import("./hybrid-search.js");
|
|
87
|
+
const fakeIndexer = {
|
|
88
|
+
chunkStore: {
|
|
89
|
+
searchFts: () => [],
|
|
90
|
+
getByFile: () => [],
|
|
91
|
+
getById: () => undefined,
|
|
92
|
+
},
|
|
93
|
+
fileStore: {
|
|
94
|
+
getAll: () => [],
|
|
95
|
+
},
|
|
96
|
+
embeddingStore: {
|
|
97
|
+
get: () => undefined,
|
|
98
|
+
},
|
|
99
|
+
};
|
|
100
|
+
const result = await hybridSearchWithConfidence(fakeIndexer, {
|
|
101
|
+
query: "where are @Configuration classes defined",
|
|
102
|
+
tokenBudget: 1000,
|
|
103
|
+
});
|
|
104
|
+
// Either a framework-wiring hit or a low-confidence-no-results hit;
|
|
105
|
+
// both should return a hint.
|
|
106
|
+
expect(result.fallbackHint).not.toBeNull();
|
|
107
|
+
});
|
|
108
|
+
});
|
|
109
|
+
//# sourceMappingURL=hybrid-search.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hybrid-search.test.js","sourceRoot":"","sources":["../../../src/search/hybrid-search.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAgB9C,uCAAuC;AACvC,SAAS,QAAQ,CAAC,KAAa;IAC7B,OAAO;QACL,KAAK,EAAE;YACL,EAAE,EAAE,CAAC;YACL,OAAO,EAAE,CAAC;YACV,UAAU,EAAE,CAAC;YACb,QAAQ,EAAE,CAAC;YACX,OAAO,EAAE,GAAG;YACZ,IAAI,EAAE,UAAU;YAChB,IAAI,EAAE,KAAK;YACX,WAAW,EAAE,EAAE;YACf,SAAS,EAAE,IAAI;YACf,QAAQ,EAAE,IAAI;SACqB;QACrC,IAAI,EAAE;YACJ,EAAE,EAAE,CAAC;YACL,IAAI,EAAE,YAAY;YAClB,QAAQ,EAAE,YAAY;YACtB,QAAQ,EAAE,GAAG;YACb,aAAa,EAAE,CAAC;SACkB;QACpC,KAAK;KACN,CAAC;AACJ,CAAC;AAED,iEAAiE;AACjE,sEAAsE;AACtE,sEAAsE;AACtE,iEAAiE;AAEjE,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;IACtC,sEAAsE;IACtE,mEAAmE;IACnE,qEAAqE;IACrE,0CAA0C;IAE1C,EAAE,CAAC,iEAAiE,EAAE,KAAK,IAAI,EAAE;QAC/E,MAAM,EAAE,0BAA0B,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;QAE1E,MAAM,WAAW,GAAG;YAClB,UAAU,EAAE;gBACV,SAAS,EAAE,GAAG,EAAE,CAAC,EAAE;gBACnB,SAAS,EAAE,GAAG,EAAE,CAAC,EAAE;gBACnB,OAAO,EAAE,GAAG,EAAE,CAAC,SAAS;aACzB;YACD,SAAS,EAAE;gBACT,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE;aACjB;YACD,cAAc,EAAE;gBACd,GAAG,EAAE,GAAG,EAAE,CAAC,SAAS;aACrB;SAC6D,CAAC;QAEjE,MAAM,MAAM,GAAG,MAAM,0BAA0B,CAAC,WAAW,EAAE;YAC3D,KAAK,EAAE,oDAAoD;YAC3D,WAAW,EAAE,IAAI;SAClB,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACtC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QAC3C,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,mCAAmC,CAAC,CAAC;IAC3E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;QACxE,MAAM,EAAE,0BAA0B,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;QAE1E,MAAM,WAAW,GAAG;YAClB,UAAU,EAAE;gBACV,SAAS,EAAE,GAAG,EAAE,CAAC,EAAE;gBACnB,SAAS,EAAE,GAAG,EAAE,CAAC,EAAE;gBACnB,OAAO,EAAE,GAAG,EAAE,CAAC,SAAS;aACzB;YACD,SAAS,EAAE;gBACT,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE;aACjB;YACD,cAAc,EAAE;gBACd,GAAG,EAAE,GAAG,EAAE,CAAC,SAAS;aACrB;SAC6D,CAAC;QAEjE,oEAAoE;QACpE,gDAAgD;QAChD,MAAM,MAAM,GAAG,MAAM,0BAA0B,CAAC,WAAW,EAAE;YAC3D,KAAK,EAAE,wCAAwC;YAC/C,WAAW,EAAE,IAAI;SAClB,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACtC,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;YACxB,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;QAC7D,MAAM,EAAE,0BAA0B,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;QAE1E,MAAM,WAAW,GAAG;YAClB,UAAU,EAAE;gBACV,SAAS,EAAE,GAAG,EAAE,CAAC,EAAE;gBACnB,SAAS,EAAE,GAAG,EAAE,CAAC,EAAE;gBACnB,OAAO,EAAE,GAAG,EAAE,CAAC,SAAS;aACzB;YACD,SAAS,EAAE;gBACT,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE;aACjB;YACD,cAAc,EAAE;gBACd,GAAG,EAAE,GAAG,EAAE,CAAC,SAAS;aACrB;SAC6D,CAAC;QAEjE,MAAM,MAAM,GAAG,MAAM,0BAA0B,CAAC,WAAW,EAAE;YAC3D,KAAK,EAAE,0CAA0C;YACjD,WAAW,EAAE,IAAI;SAClB,CAAC,CAAC;QAEH,oEAAoE;QACpE,6BAA6B;QAC7B,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;IAC7C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -7,4 +7,5 @@ export declare function formatOverview(entries: OverviewEntry[], tokenBudget: nu
|
|
|
7
7
|
export declare function formatLookup(chunks: (CodeChunk & {
|
|
8
8
|
filePath?: string;
|
|
9
9
|
pagerank?: number;
|
|
10
|
+
fileLanguage?: string;
|
|
10
11
|
})[], files: Map<number, FileRecord>, tokenBudget: number): string;
|
|
@@ -52,7 +52,7 @@ export function formatLookup(chunks, files, tokenBudget) {
|
|
|
52
52
|
for (const chunk of chunks) {
|
|
53
53
|
const file = files.get(chunk.file_id);
|
|
54
54
|
const filePath = chunk.filePath || file?.path || "unknown";
|
|
55
|
-
const lang = file?.language || "";
|
|
55
|
+
const lang = chunk.fileLanguage || file?.language || "";
|
|
56
56
|
const header = `## ${filePath}:${chunk.start_line}-${chunk.end_line} (${chunk.type}: ${chunk.name})`;
|
|
57
57
|
const headerCost = Math.ceil(header.length / 3.5);
|
|
58
58
|
const contentCost = chunk.token_count;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token-budget.js","sourceRoot":"","sources":["../../../src/search/token-budget.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"token-budget.js","sourceRoot":"","sources":["../../../src/search/token-budget.ts"],"names":[],"mappings":"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"}
|
|
@@ -28,6 +28,7 @@ import { contextTool, handleContext } from "./tools/context.js";
|
|
|
28
28
|
import { promoteTool, demoteTool, handlePromote, handleDemote, } from "./tools/tier.js";
|
|
29
29
|
import { startHttpServer } from "./http-server.js";
|
|
30
30
|
import { track } from "../telemetry/index.js";
|
|
31
|
+
import { applyToolOverrides } from "./tool-overrides.js";
|
|
31
32
|
// Zilliz claude-context compatibility tool definitions.
|
|
32
33
|
// These mirror github.com/zilliztech/claude-context tool names so users can
|
|
33
34
|
// swap claude-context for sverklo without changing their MCP client config.
|
|
@@ -224,32 +225,38 @@ export async function startMcpServer(rootPath) {
|
|
|
224
225
|
// every session and most users don't need them. Dispatch cases below are
|
|
225
226
|
// always wired so opt-in users keep working.
|
|
226
227
|
const enableZilliz = process.env.SVERKLO_ZILLIZ_COMPAT === "1";
|
|
228
|
+
// Tool descriptions and the visible set can be overridden at runtime via
|
|
229
|
+
// SVERKLO_TOOL_<NAME>_DESCRIPTION and SVERKLO_DISABLED_TOOLS env vars.
|
|
230
|
+
// See src/server/tool-overrides.ts for details. This lets power users
|
|
231
|
+
// repurpose or trim the tool surface without forking.
|
|
232
|
+
const baseTools = [
|
|
233
|
+
contextTool,
|
|
234
|
+
searchTool,
|
|
235
|
+
overviewTool,
|
|
236
|
+
lookupTool,
|
|
237
|
+
findReferencesTool,
|
|
238
|
+
dependenciesTool,
|
|
239
|
+
indexStatusTool,
|
|
240
|
+
rememberTool,
|
|
241
|
+
recallTool,
|
|
242
|
+
forgetTool,
|
|
243
|
+
memoriesTool,
|
|
244
|
+
promoteTool,
|
|
245
|
+
demoteTool,
|
|
246
|
+
impactTool,
|
|
247
|
+
auditTool,
|
|
248
|
+
wakeupTool,
|
|
249
|
+
reviewDiffTool,
|
|
250
|
+
diffSearchTool,
|
|
251
|
+
testMapTool,
|
|
252
|
+
astGrepTool,
|
|
253
|
+
...(enableZilliz
|
|
254
|
+
? [indexCodebaseTool, searchCodeTool, clearIndexTool, getIndexingStatusTool]
|
|
255
|
+
: []),
|
|
256
|
+
];
|
|
257
|
+
const visibleTools = applyToolOverrides(baseTools);
|
|
227
258
|
server.setRequestHandler(ListToolsRequestSchema, async () => ({
|
|
228
|
-
tools:
|
|
229
|
-
contextTool,
|
|
230
|
-
searchTool,
|
|
231
|
-
overviewTool,
|
|
232
|
-
lookupTool,
|
|
233
|
-
findReferencesTool,
|
|
234
|
-
dependenciesTool,
|
|
235
|
-
indexStatusTool,
|
|
236
|
-
rememberTool,
|
|
237
|
-
recallTool,
|
|
238
|
-
forgetTool,
|
|
239
|
-
memoriesTool,
|
|
240
|
-
promoteTool,
|
|
241
|
-
demoteTool,
|
|
242
|
-
impactTool,
|
|
243
|
-
auditTool,
|
|
244
|
-
wakeupTool,
|
|
245
|
-
reviewDiffTool,
|
|
246
|
-
diffSearchTool,
|
|
247
|
-
testMapTool,
|
|
248
|
-
astGrepTool,
|
|
249
|
-
...(enableZilliz
|
|
250
|
-
? [indexCodebaseTool, searchCodeTool, clearIndexTool, getIndexingStatusTool]
|
|
251
|
-
: []),
|
|
252
|
-
],
|
|
259
|
+
tools: visibleTools,
|
|
253
260
|
}));
|
|
254
261
|
// Handle tool calls
|
|
255
262
|
server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-server.js","sourceRoot":"","sources":["../../../src/server/mcp-server.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mcp-server.js","sourceRoot":"","sources":["../../../src/server/mcp-server.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export interface ToolLike {
|
|
2
|
+
name: string;
|
|
3
|
+
description: string;
|
|
4
|
+
inputSchema: unknown;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Apply env-var overrides to a list of tool definitions. Returns a new
|
|
8
|
+
* array — never mutates the input. Tools whose names appear in
|
|
9
|
+
* `SVERKLO_DISABLED_TOOLS` are dropped entirely.
|
|
10
|
+
*/
|
|
11
|
+
export declare function applyToolOverrides<T extends ToolLike>(tools: T[]): T[];
|
|
12
|
+
/**
|
|
13
|
+
* Test-only: reset the cached env-var parse so unit tests can flip
|
|
14
|
+
* env vars mid-run and see the change.
|
|
15
|
+
*/
|
|
16
|
+
export declare function __resetToolOverrideCache(): void;
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
// Runtime-overridable tool descriptions and enable/disable flags.
|
|
2
|
+
//
|
|
3
|
+
// Power users frequently want to repurpose sverklo tools without forking.
|
|
4
|
+
// The two levers exposed here are:
|
|
5
|
+
//
|
|
6
|
+
// 1. Description overrides via `SVERKLO_TOOL_<NAME>_DESCRIPTION`
|
|
7
|
+
// Override the description text the agent sees for any tool. Useful
|
|
8
|
+
// for re-scoping `sverklo_remember` into an architecture-decision log,
|
|
9
|
+
// or for adding project-specific guidance the model will follow.
|
|
10
|
+
//
|
|
11
|
+
// 2. Disable-list via `SVERKLO_DISABLED_TOOLS`
|
|
12
|
+
// Comma-separated list of tool names to hide from the `tools/list`
|
|
13
|
+
// response. Useful when a project doesn't want memory tools exposed,
|
|
14
|
+
// or when a user wants to shrink the tool surface for a specific
|
|
15
|
+
// agent that gets overwhelmed by 20 options.
|
|
16
|
+
//
|
|
17
|
+
// Design notes:
|
|
18
|
+
//
|
|
19
|
+
// - The env var is read once at process startup and cached. Restart the
|
|
20
|
+
// MCP server to pick up changes — this matches how agents already
|
|
21
|
+
// expect tool metadata to work (stable per session).
|
|
22
|
+
// - Description overrides are applied AFTER we copy the tool object, so
|
|
23
|
+
// the underlying tool definitions stay pristine and unit tests against
|
|
24
|
+
// them remain stable.
|
|
25
|
+
// - Name normalisation: SVERKLO_TOOL_SEARCH_DESCRIPTION and
|
|
26
|
+
// SVERKLO_TOOL_sverklo_search_DESCRIPTION both target `sverklo_search`.
|
|
27
|
+
// We strip the `sverklo_` prefix before matching, upper-case, and
|
|
28
|
+
// replace underscores with nothing. This keeps env var names short.
|
|
29
|
+
//
|
|
30
|
+
// Inspired by the Qdrant MCP server's `TOOL_*_DESCRIPTION` pattern.
|
|
31
|
+
let cache = null;
|
|
32
|
+
function normalizeEnvSuffix(name) {
|
|
33
|
+
// "sverklo_search" -> "SEARCH"
|
|
34
|
+
// "sverklo_review_diff" -> "REVIEW_DIFF"
|
|
35
|
+
// "search_code" (compat alias) -> "SEARCH_CODE"
|
|
36
|
+
const stripped = name.startsWith("sverklo_") ? name.slice("sverklo_".length) : name;
|
|
37
|
+
return stripped.toUpperCase();
|
|
38
|
+
}
|
|
39
|
+
function buildCache() {
|
|
40
|
+
const disabled = new Set();
|
|
41
|
+
const descriptions = new Map();
|
|
42
|
+
const disabledList = process.env.SVERKLO_DISABLED_TOOLS;
|
|
43
|
+
if (disabledList) {
|
|
44
|
+
for (const raw of disabledList.split(",")) {
|
|
45
|
+
const name = raw.trim();
|
|
46
|
+
if (name)
|
|
47
|
+
disabled.add(name);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
// Description overrides. We scan process.env for any key starting with
|
|
51
|
+
// `SVERKLO_TOOL_` and ending in `_DESCRIPTION`. Everything between is the
|
|
52
|
+
// normalized tool-name suffix.
|
|
53
|
+
const prefix = "SVERKLO_TOOL_";
|
|
54
|
+
const suffix = "_DESCRIPTION";
|
|
55
|
+
for (const key of Object.keys(process.env)) {
|
|
56
|
+
if (!key.startsWith(prefix) || !key.endsWith(suffix))
|
|
57
|
+
continue;
|
|
58
|
+
const mid = key.slice(prefix.length, key.length - suffix.length);
|
|
59
|
+
if (!mid)
|
|
60
|
+
continue;
|
|
61
|
+
const value = process.env[key];
|
|
62
|
+
if (typeof value !== "string" || value.length === 0)
|
|
63
|
+
continue;
|
|
64
|
+
descriptions.set(mid, value);
|
|
65
|
+
}
|
|
66
|
+
return { disabled, descriptions };
|
|
67
|
+
}
|
|
68
|
+
function getCache() {
|
|
69
|
+
if (!cache)
|
|
70
|
+
cache = buildCache();
|
|
71
|
+
return cache;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Apply env-var overrides to a list of tool definitions. Returns a new
|
|
75
|
+
* array — never mutates the input. Tools whose names appear in
|
|
76
|
+
* `SVERKLO_DISABLED_TOOLS` are dropped entirely.
|
|
77
|
+
*/
|
|
78
|
+
export function applyToolOverrides(tools) {
|
|
79
|
+
const { disabled, descriptions } = getCache();
|
|
80
|
+
const out = [];
|
|
81
|
+
for (const tool of tools) {
|
|
82
|
+
if (disabled.has(tool.name))
|
|
83
|
+
continue;
|
|
84
|
+
const suffix = normalizeEnvSuffix(tool.name);
|
|
85
|
+
const override = descriptions.get(suffix);
|
|
86
|
+
if (override) {
|
|
87
|
+
out.push({ ...tool, description: override });
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
out.push(tool);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
return out;
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Test-only: reset the cached env-var parse so unit tests can flip
|
|
97
|
+
* env vars mid-run and see the change.
|
|
98
|
+
*/
|
|
99
|
+
export function __resetToolOverrideCache() {
|
|
100
|
+
cache = null;
|
|
101
|
+
}
|
|
102
|
+
//# sourceMappingURL=tool-overrides.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-overrides.js","sourceRoot":"","sources":["../../../src/server/tool-overrides.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|