sverklo 0.2.8 → 0.2.9
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/dist/src/server/hints.d.ts +21 -0
- package/dist/src/server/hints.js +175 -0
- package/dist/src/server/hints.js.map +1 -0
- package/dist/src/server/mcp-server.js +46 -1
- package/dist/src/server/mcp-server.js.map +1 -1
- package/dist/src/server/prompts.d.ts +17 -0
- package/dist/src/server/prompts.js +148 -0
- package/dist/src/server/prompts.js.map +1 -0
- package/dist/src/server/tools/context.d.ts +25 -0
- package/dist/src/server/tools/context.js +162 -0
- package/dist/src/server/tools/context.js.map +1 -0
- package/dist/src/server/tools/review-diff.js +92 -1
- package/dist/src/server/tools/review-diff.js.map +1 -1
- package/dist/src/server/tools/risk-score.d.ts +26 -0
- package/dist/src/server/tools/risk-score.js +138 -0
- package/dist/src/server/tools/risk-score.js.map +1 -0
- package/dist/src/server/tools/test-map.js +36 -68
- package/dist/src/server/tools/test-map.js.map +1 -1
- package/dist/src/server/tools/test-paths.d.ts +8 -0
- package/dist/src/server/tools/test-paths.js +62 -0
- package/dist/src/server/tools/test-paths.js.map +1 -0
- package/package.json +2 -2
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export type IntentLabel = "exploring" | "reviewing-diff" | "tracing-impact" | "debugging" | "onboarding" | "memory-curating" | "unknown";
|
|
2
|
+
export interface ToolCall {
|
|
3
|
+
name: string;
|
|
4
|
+
args: Record<string, unknown>;
|
|
5
|
+
ts: number;
|
|
6
|
+
}
|
|
7
|
+
export declare class HintEngine {
|
|
8
|
+
private history;
|
|
9
|
+
record(name: string, args: Record<string, unknown>): void;
|
|
10
|
+
/**
|
|
11
|
+
* Best-effort intent classification from the recent call sequence.
|
|
12
|
+
* Order of checks matters: more specific patterns win over generic ones.
|
|
13
|
+
*/
|
|
14
|
+
classifyIntent(): IntentLabel;
|
|
15
|
+
/**
|
|
16
|
+
* Build a hint block for the tool that just ran. Returns null when there
|
|
17
|
+
* is nothing useful to say — we'd rather be silent than add noise.
|
|
18
|
+
*/
|
|
19
|
+
buildHint(currentTool: string, currentArgs: Record<string, unknown>): string | null;
|
|
20
|
+
private suggestNext;
|
|
21
|
+
}
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
// Intent-aware hint engine.
|
|
2
|
+
//
|
|
3
|
+
// Inspired by code-review-graph's hints.py: track the recent tool-call
|
|
4
|
+
// trajectory and append a short "next steps" suggestion to each response so
|
|
5
|
+
// the model is nudged toward better composition without needing prompt
|
|
6
|
+
// changes on the client side.
|
|
7
|
+
//
|
|
8
|
+
// The hint engine is intentionally cheap and stateless across processes —
|
|
9
|
+
// it lives in a per-server ring buffer of the last N tool calls. It does
|
|
10
|
+
// not look at tool *output*, only the call sequence and current call
|
|
11
|
+
// arguments, so it never blocks the response on extra DB work.
|
|
12
|
+
const HISTORY_LIMIT = 10;
|
|
13
|
+
export class HintEngine {
|
|
14
|
+
history = [];
|
|
15
|
+
record(name, args) {
|
|
16
|
+
this.history.push({ name, args, ts: Date.now() });
|
|
17
|
+
if (this.history.length > HISTORY_LIMIT) {
|
|
18
|
+
this.history.shift();
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Best-effort intent classification from the recent call sequence.
|
|
23
|
+
* Order of checks matters: more specific patterns win over generic ones.
|
|
24
|
+
*/
|
|
25
|
+
classifyIntent() {
|
|
26
|
+
if (this.history.length === 0)
|
|
27
|
+
return "unknown";
|
|
28
|
+
const names = this.history.map((c) => c.name);
|
|
29
|
+
const last = names[names.length - 1];
|
|
30
|
+
const hasAny = (...patterns) => names.some((n) => patterns.includes(n));
|
|
31
|
+
// Diff workflow: any of the diff-aware tools were used recently
|
|
32
|
+
if (hasAny("sverklo_review_diff", "sverklo_test_map", "sverklo_diff_search")) {
|
|
33
|
+
return "reviewing-diff";
|
|
34
|
+
}
|
|
35
|
+
// Impact tracing: chained refs/impact lookups
|
|
36
|
+
if (last === "sverklo_impact" ||
|
|
37
|
+
last === "sverklo_refs" ||
|
|
38
|
+
(names.filter((n) => n === "sverklo_refs" || n === "sverklo_impact").length >= 2)) {
|
|
39
|
+
return "tracing-impact";
|
|
40
|
+
}
|
|
41
|
+
// Memory curation: remember/recall/forget activity
|
|
42
|
+
if (hasAny("sverklo_remember", "sverklo_forget", "sverklo_promote", "sverklo_demote")) {
|
|
43
|
+
return "memory-curating";
|
|
44
|
+
}
|
|
45
|
+
// Onboarding: overview followed by lookups/searches without a target
|
|
46
|
+
if (names.includes("sverklo_overview") &&
|
|
47
|
+
names.length <= 4) {
|
|
48
|
+
return "onboarding";
|
|
49
|
+
}
|
|
50
|
+
// Debugging: search-heavy with error-shaped queries
|
|
51
|
+
const recentSearches = this.history.filter((c) => c.name === "sverklo_search");
|
|
52
|
+
if (recentSearches.length >= 2) {
|
|
53
|
+
const queries = recentSearches
|
|
54
|
+
.map((c) => String(c.args?.query ?? "").toLowerCase())
|
|
55
|
+
.join(" ");
|
|
56
|
+
if (/error|exception|fail|crash|bug|null|undefined|throw/.test(queries)) {
|
|
57
|
+
return "debugging";
|
|
58
|
+
}
|
|
59
|
+
return "exploring";
|
|
60
|
+
}
|
|
61
|
+
if (last === "sverklo_search" || last === "sverklo_lookup") {
|
|
62
|
+
return "exploring";
|
|
63
|
+
}
|
|
64
|
+
return "unknown";
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Build a hint block for the tool that just ran. Returns null when there
|
|
68
|
+
* is nothing useful to say — we'd rather be silent than add noise.
|
|
69
|
+
*/
|
|
70
|
+
buildHint(currentTool, currentArgs) {
|
|
71
|
+
const intent = this.classifyIntent();
|
|
72
|
+
const suggestions = this.suggestNext(currentTool, currentArgs, intent);
|
|
73
|
+
if (suggestions.length === 0)
|
|
74
|
+
return null;
|
|
75
|
+
const lines = [];
|
|
76
|
+
lines.push("");
|
|
77
|
+
lines.push("---");
|
|
78
|
+
lines.push(`_Hints (intent: ${intent})_`);
|
|
79
|
+
for (const s of suggestions)
|
|
80
|
+
lines.push(`- ${s}`);
|
|
81
|
+
return lines.join("\n");
|
|
82
|
+
}
|
|
83
|
+
suggestNext(tool, args, intent) {
|
|
84
|
+
const out = [];
|
|
85
|
+
switch (tool) {
|
|
86
|
+
case "sverklo_review_diff": {
|
|
87
|
+
const ref = args.ref || "main..HEAD";
|
|
88
|
+
out.push(`Run \`sverklo_test_map ref:"${ref}"\` to see which changes lack tests.`);
|
|
89
|
+
out.push(`For any removed symbol with dangling refs, call \`sverklo_impact symbol:"<name>"\`.`);
|
|
90
|
+
break;
|
|
91
|
+
}
|
|
92
|
+
case "sverklo_test_map": {
|
|
93
|
+
const ref = args.ref || "main..HEAD";
|
|
94
|
+
if (!this.history.some((c) => c.name === "sverklo_review_diff")) {
|
|
95
|
+
out.push(`Pair this with \`sverklo_review_diff ref:"${ref}"\` for blast radius and risk scores.`);
|
|
96
|
+
}
|
|
97
|
+
out.push(`Untested high-risk files are the ones to push back on in review.`);
|
|
98
|
+
break;
|
|
99
|
+
}
|
|
100
|
+
case "sverklo_impact":
|
|
101
|
+
case "sverklo_refs": {
|
|
102
|
+
const sym = args.symbol || args.name || "<name>";
|
|
103
|
+
out.push(`Call \`sverklo_lookup name:"${sym}"\` to see the definition you're tracing.`);
|
|
104
|
+
if (intent === "reviewing-diff") {
|
|
105
|
+
out.push(`Each caller listed needs to be updated in the same diff if you removed the symbol.`);
|
|
106
|
+
}
|
|
107
|
+
break;
|
|
108
|
+
}
|
|
109
|
+
case "sverklo_search": {
|
|
110
|
+
if (intent === "debugging") {
|
|
111
|
+
out.push(`Narrow with \`sverklo_lookup\` if the search surfaced a likely target symbol.`);
|
|
112
|
+
out.push(`Call \`sverklo_recall query:"<error>"\` — there may be a saved memory about this issue.`);
|
|
113
|
+
}
|
|
114
|
+
else if (intent === "exploring") {
|
|
115
|
+
out.push(`If a symbol stands out, \`sverklo_refs symbol:"<name>"\` shows everything that uses it.`);
|
|
116
|
+
}
|
|
117
|
+
break;
|
|
118
|
+
}
|
|
119
|
+
case "sverklo_lookup": {
|
|
120
|
+
const name = args.name || "<name>";
|
|
121
|
+
out.push(`\`sverklo_refs symbol:"${name}"\` enumerates everything that calls this.`);
|
|
122
|
+
out.push(`\`sverklo_deps file:"<file>"\` shows what the containing file imports.`);
|
|
123
|
+
break;
|
|
124
|
+
}
|
|
125
|
+
case "sverklo_overview": {
|
|
126
|
+
out.push(`Try \`sverklo_recall query:"architecture"\` for any saved design decisions.`);
|
|
127
|
+
out.push(`Call \`sverklo_deps file:"<top-pagerank file>"\` on a high-PR file to see its centrality.`);
|
|
128
|
+
break;
|
|
129
|
+
}
|
|
130
|
+
case "sverklo_deps": {
|
|
131
|
+
out.push(`If a dependency looks suspicious, \`sverklo_search query:"<concept>"\` finds related code.`);
|
|
132
|
+
break;
|
|
133
|
+
}
|
|
134
|
+
case "sverklo_recall": {
|
|
135
|
+
if (intent === "memory-curating") {
|
|
136
|
+
out.push(`Use \`sverklo_promote\` to mark a memory as core (always-loaded) context.`);
|
|
137
|
+
}
|
|
138
|
+
else {
|
|
139
|
+
out.push(`If you act on a memory, \`sverklo_remember\` the outcome so the next session starts smarter.`);
|
|
140
|
+
}
|
|
141
|
+
break;
|
|
142
|
+
}
|
|
143
|
+
case "sverklo_remember": {
|
|
144
|
+
out.push(`\`sverklo_promote id:<id>\` to make this a core memory loaded on every session.`);
|
|
145
|
+
break;
|
|
146
|
+
}
|
|
147
|
+
case "sverklo_context": {
|
|
148
|
+
const task = args.task || "";
|
|
149
|
+
const detail = args.detail_level || "normal";
|
|
150
|
+
if (detail !== "full") {
|
|
151
|
+
out.push(`If the bundle isn't enough, re-run with \`detail_level:"full"\` for dependency neighbours.`);
|
|
152
|
+
}
|
|
153
|
+
out.push(`Drill into a specific symbol with \`sverklo_lookup\` or \`sverklo_refs\` from the relevant-code list.`);
|
|
154
|
+
if (/bug|error|fail|broken/i.test(task)) {
|
|
155
|
+
out.push(`Looks like a debug task — \`sverklo_recall query:"${task.slice(0, 60)}"\` may surface a known issue.`);
|
|
156
|
+
}
|
|
157
|
+
break;
|
|
158
|
+
}
|
|
159
|
+
case "sverklo_diff_search": {
|
|
160
|
+
const ref = args.ref || "main..HEAD";
|
|
161
|
+
if (!this.history.some((c) => c.name === "sverklo_review_diff")) {
|
|
162
|
+
out.push(`Run \`sverklo_review_diff ref:"${ref}"\` first for the structural picture.`);
|
|
163
|
+
}
|
|
164
|
+
break;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
// Generic loop-protection hint: model is hammering one tool
|
|
168
|
+
const sameToolCount = this.history.filter((c) => c.name === tool).length;
|
|
169
|
+
if (sameToolCount >= 4) {
|
|
170
|
+
out.push(`You've called \`${tool}\` ${sameToolCount} times — consider switching tools or summarising what you've found so far.`);
|
|
171
|
+
}
|
|
172
|
+
return out;
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
//# sourceMappingURL=hints.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hints.js","sourceRoot":"","sources":["../../../src/server/hints.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
|
|
2
2
|
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
3
|
-
import { CallToolRequestSchema, ListToolsRequestSchema, ListResourcesRequestSchema, ReadResourceRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
|
|
3
|
+
import { CallToolRequestSchema, ListToolsRequestSchema, ListResourcesRequestSchema, ReadResourceRequestSchema, ListPromptsRequestSchema, GetPromptRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
|
|
4
|
+
import { ALL_PROMPTS, findPrompt } from "./prompts.js";
|
|
5
|
+
import { HintEngine } from "./hints.js";
|
|
4
6
|
import { Indexer } from "../indexer/indexer.js";
|
|
5
7
|
import { startWatcher } from "../indexer/watcher.js";
|
|
6
8
|
import { getProjectConfig } from "../utils/config.js";
|
|
@@ -22,6 +24,7 @@ import { wakeupTool, handleWakeup } from "./tools/wakeup.js";
|
|
|
22
24
|
import { reviewDiffTool, handleReviewDiff } from "./tools/review-diff.js";
|
|
23
25
|
import { diffSearchTool, handleDiffSearch } from "./tools/diff-search.js";
|
|
24
26
|
import { testMapTool, handleTestMap } from "./tools/test-map.js";
|
|
27
|
+
import { contextTool, handleContext } from "./tools/context.js";
|
|
25
28
|
import { promoteTool, demoteTool, handlePromote, handleDemote, } from "./tools/tier.js";
|
|
26
29
|
import { startHttpServer } from "./http-server.js";
|
|
27
30
|
// Zilliz claude-context compatibility tool definitions.
|
|
@@ -86,6 +89,7 @@ const getIndexingStatusTool = {
|
|
|
86
89
|
export async function startMcpServer(rootPath) {
|
|
87
90
|
const config = getProjectConfig(rootPath);
|
|
88
91
|
const indexer = new Indexer(config);
|
|
92
|
+
const hints = new HintEngine();
|
|
89
93
|
// Start indexing in background. Tracked in a mutable holder so clear_index
|
|
90
94
|
// can swap in a fresh promise after wiping the database.
|
|
91
95
|
let indexPromise = indexer.index().catch((err) => {
|
|
@@ -121,6 +125,7 @@ export async function startMcpServer(rootPath) {
|
|
|
121
125
|
capabilities: {
|
|
122
126
|
tools: {},
|
|
123
127
|
resources: {},
|
|
128
|
+
prompts: {},
|
|
124
129
|
},
|
|
125
130
|
instructions: "Sverklo: code intelligence for this repo. Use it for exploratory search, " +
|
|
126
131
|
"refactor blast-radius, dependency graphs, diff-aware review, and persistent " +
|
|
@@ -186,6 +191,33 @@ export async function startMcpServer(rootPath) {
|
|
|
186
191
|
}
|
|
187
192
|
return { contents: [] };
|
|
188
193
|
});
|
|
194
|
+
// Prompts: workflow templates that show up in IDE pickers (Claude Code,
|
|
195
|
+
// Cursor, Antigravity). These encode the *order* of sverklo tool calls
|
|
196
|
+
// for common code-intelligence tasks — review, pre-merge, onboarding,
|
|
197
|
+
// architecture mapping, and debugging.
|
|
198
|
+
server.setRequestHandler(ListPromptsRequestSchema, async () => ({
|
|
199
|
+
prompts: ALL_PROMPTS.map((p) => ({
|
|
200
|
+
name: p.name,
|
|
201
|
+
description: p.description,
|
|
202
|
+
arguments: p.arguments,
|
|
203
|
+
})),
|
|
204
|
+
}));
|
|
205
|
+
server.setRequestHandler(GetPromptRequestSchema, async (request) => {
|
|
206
|
+
const prompt = findPrompt(request.params.name);
|
|
207
|
+
if (!prompt) {
|
|
208
|
+
throw new Error(`Unknown prompt: ${request.params.name}`);
|
|
209
|
+
}
|
|
210
|
+
const args = (request.params.arguments || {});
|
|
211
|
+
return {
|
|
212
|
+
description: prompt.description,
|
|
213
|
+
messages: [
|
|
214
|
+
{
|
|
215
|
+
role: "user",
|
|
216
|
+
content: { type: "text", text: prompt.build(args) },
|
|
217
|
+
},
|
|
218
|
+
],
|
|
219
|
+
};
|
|
220
|
+
});
|
|
189
221
|
// List tools. Zilliz claude-context compat aliases are gated behind
|
|
190
222
|
// SVERKLO_ZILLIZ_COMPAT=1 — they pay ~450 tokens of schema overhead on
|
|
191
223
|
// every session and most users don't need them. Dispatch cases below are
|
|
@@ -193,6 +225,7 @@ export async function startMcpServer(rootPath) {
|
|
|
193
225
|
const enableZilliz = process.env.SVERKLO_ZILLIZ_COMPAT === "1";
|
|
194
226
|
server.setRequestHandler(ListToolsRequestSchema, async () => ({
|
|
195
227
|
tools: [
|
|
228
|
+
contextTool,
|
|
196
229
|
searchTool,
|
|
197
230
|
overviewTool,
|
|
198
231
|
lookupTool,
|
|
@@ -232,6 +265,9 @@ export async function startMcpServer(rootPath) {
|
|
|
232
265
|
try {
|
|
233
266
|
let result;
|
|
234
267
|
switch (name) {
|
|
268
|
+
case "sverklo_context":
|
|
269
|
+
result = await handleContext(indexer, args || {});
|
|
270
|
+
break;
|
|
235
271
|
case "sverklo_search":
|
|
236
272
|
result = await handleSearch(indexer, args || {});
|
|
237
273
|
break;
|
|
@@ -347,6 +383,15 @@ export async function startMcpServer(rootPath) {
|
|
|
347
383
|
default:
|
|
348
384
|
result = `Unknown tool: ${name}`;
|
|
349
385
|
}
|
|
386
|
+
// Append intent-aware hints unless the caller opts out via env var.
|
|
387
|
+
// Hints are off the critical path of the actual answer — append-only.
|
|
388
|
+
if (process.env.SVERKLO_DISABLE_HINTS !== "1") {
|
|
389
|
+
const argRecord = (args || {});
|
|
390
|
+
hints.record(name, argRecord);
|
|
391
|
+
const hintBlock = hints.buildHint(name, argRecord);
|
|
392
|
+
if (hintBlock)
|
|
393
|
+
result = result + "\n" + hintBlock;
|
|
394
|
+
}
|
|
350
395
|
return {
|
|
351
396
|
content: [{ type: "text", text: result }],
|
|
352
397
|
};
|
|
@@ -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,17 @@
|
|
|
1
|
+
export interface PromptArgument {
|
|
2
|
+
name: string;
|
|
3
|
+
description: string;
|
|
4
|
+
required?: boolean;
|
|
5
|
+
}
|
|
6
|
+
export interface PromptDefinition {
|
|
7
|
+
name: string;
|
|
8
|
+
description: string;
|
|
9
|
+
arguments: PromptArgument[];
|
|
10
|
+
/**
|
|
11
|
+
* Build the prompt body. Receives the raw arguments object from the MCP
|
|
12
|
+
* client; missing optional args are undefined.
|
|
13
|
+
*/
|
|
14
|
+
build: (args: Record<string, string | undefined>) => string;
|
|
15
|
+
}
|
|
16
|
+
export declare const ALL_PROMPTS: PromptDefinition[];
|
|
17
|
+
export declare function findPrompt(name: string): PromptDefinition | undefined;
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
// MCP prompt templates exposed via prompts/list and prompts/get.
|
|
2
|
+
//
|
|
3
|
+
// Prompts show up in IDE pickers (Claude Code, Cursor, Antigravity) as
|
|
4
|
+
// reusable workflows. Sverklo's value lives mostly in tool composition, so
|
|
5
|
+
// these templates encode the *order* of tool calls a user should make for
|
|
6
|
+
// common code-intelligence tasks. Each prompt accepts a small number of
|
|
7
|
+
// arguments and returns a single user-role message that the host model can
|
|
8
|
+
// then act on with sverklo's tools available.
|
|
9
|
+
const REVIEW_CHANGES = {
|
|
10
|
+
name: "sverklo/review-changes",
|
|
11
|
+
description: "Diff-aware code review workflow. Walks the model through sverklo's diff tools to surface blast radius, dangling references, missing tests, and risk-scored hotspots.",
|
|
12
|
+
arguments: [
|
|
13
|
+
{
|
|
14
|
+
name: "ref",
|
|
15
|
+
description: "Git ref or range to review (default: main..HEAD)",
|
|
16
|
+
required: false,
|
|
17
|
+
},
|
|
18
|
+
],
|
|
19
|
+
build: ({ ref }) => {
|
|
20
|
+
const r = ref || "main..HEAD";
|
|
21
|
+
return `You are reviewing the diff \`${r}\`. Use sverklo's diff-aware tools, in order:
|
|
22
|
+
|
|
23
|
+
1. Call \`sverklo_review_diff\` with \`ref:"${r}"\` to get the changed files, semantic delta (added/removed/modified symbols), dangling references for removed symbols, importer counts, and a per-file risk score. Read the **Highest-risk files** section first.
|
|
24
|
+
2. Call \`sverklo_test_map\` with \`ref:"${r}"\` to see which tests cover the changes and which changed files have no matching tests. Prioritise the risk-ranked uncovered list.
|
|
25
|
+
3. For any removed symbol with dangling references, call \`sverklo_impact symbol:"<name>"\` to enumerate every caller — these are likely breakages.
|
|
26
|
+
4. For any added symbol that looks like it duplicates existing functionality, call \`sverklo_lookup\` to find the existing definition.
|
|
27
|
+
5. Only after the above, read the actual diff with \`git diff ${r}\` for the highest-risk file(s).
|
|
28
|
+
|
|
29
|
+
Constraint: keep the total number of tool calls under 8. Do not grep for things sverklo can answer structurally. Do not paraphrase the tool output back at the user — synthesise the review. End with a clear verdict (LGTM / request changes / blocking concern) and a bulleted list of must-fix items, each tied to a file:line.`;
|
|
30
|
+
},
|
|
31
|
+
};
|
|
32
|
+
const PRE_MERGE_CHECK = {
|
|
33
|
+
name: "sverklo/pre-merge",
|
|
34
|
+
description: "Final pre-merge sanity check. Stricter than review-changes — looks for unsafe removals, untested security-sensitive changes, and high-fan-in modifications.",
|
|
35
|
+
arguments: [
|
|
36
|
+
{
|
|
37
|
+
name: "ref",
|
|
38
|
+
description: "Git ref or range about to be merged (default: main..HEAD)",
|
|
39
|
+
required: false,
|
|
40
|
+
},
|
|
41
|
+
],
|
|
42
|
+
build: ({ ref }) => {
|
|
43
|
+
const r = ref || "main..HEAD";
|
|
44
|
+
return `You are the last reviewer before merging \`${r}\`. Be strict.
|
|
45
|
+
|
|
46
|
+
1. Call \`sverklo_review_diff ref:"${r}"\`. The response includes a per-file risk score. **Block the merge** if any file is risk level "critical" without an explicit reason in the PR description.
|
|
47
|
+
2. Call \`sverklo_test_map ref:"${r}"\`. **Block the merge** if any uncovered file has risk level "high" or "critical" — require tests or an explicit waiver.
|
|
48
|
+
3. For every removed symbol with dangling references, call \`sverklo_impact\` and verify each caller has been updated in the same diff. A dangling reference is a hard block.
|
|
49
|
+
4. Call \`sverklo_recall query:"<area being changed>"\` to surface any prior decisions or invariants that this change might violate.
|
|
50
|
+
|
|
51
|
+
Output a structured verdict:
|
|
52
|
+
- **Status:** APPROVED / BLOCKED / NEEDS CLARIFICATION
|
|
53
|
+
- **Blocking issues:** (file:line + reason)
|
|
54
|
+
- **Non-blocking concerns:** (file:line + reason)
|
|
55
|
+
- **Suggested follow-ups:** (memories to save with sverklo_remember, or tests to add)
|
|
56
|
+
|
|
57
|
+
Do not approve without justification for every "high" or "critical" risk file.`;
|
|
58
|
+
},
|
|
59
|
+
};
|
|
60
|
+
const ONBOARD = {
|
|
61
|
+
name: "sverklo/onboard",
|
|
62
|
+
description: "New-developer onboarding tour. Builds a mental model of the codebase using sverklo_overview, top-PageRank files, and core memories.",
|
|
63
|
+
arguments: [
|
|
64
|
+
{
|
|
65
|
+
name: "focus",
|
|
66
|
+
description: "Optional area to focus on (e.g. 'auth', 'billing', 'data pipeline')",
|
|
67
|
+
required: false,
|
|
68
|
+
},
|
|
69
|
+
],
|
|
70
|
+
build: ({ focus }) => {
|
|
71
|
+
const focusLine = focus
|
|
72
|
+
? `The new developer is specifically interested in: **${focus}**. Tailor the tour to that area.`
|
|
73
|
+
: "Give a generalist tour suitable for any new contributor.";
|
|
74
|
+
return `Help a new developer get oriented in this codebase. ${focusLine}
|
|
75
|
+
|
|
76
|
+
1. Call \`sverklo_overview\` to get the high-level structure: top languages, top-PageRank files, module map.
|
|
77
|
+
2. Call \`sverklo_recall query:"architecture"\` and \`sverklo_recall query:"conventions"\` to surface any saved invariants and design decisions.
|
|
78
|
+
3. ${focus ? `Call \`sverklo_search query:"${focus}"\` to find the entry points for the focus area.` : "Pick 2-3 of the highest-PageRank source files and call `sverklo_lookup` on their main exported symbols to show what they do."}
|
|
79
|
+
4. For the most central file you find, call \`sverklo_deps\` to show its place in the import graph.
|
|
80
|
+
|
|
81
|
+
Then write a concise onboarding doc (under 600 words) with:
|
|
82
|
+
- "Start here" — the 3-5 files to read first, in order, with a one-line reason for each
|
|
83
|
+
- "Key abstractions" — the named concepts a new dev needs to understand
|
|
84
|
+
- "Conventions" — anything from recall that affects how to write code in this repo
|
|
85
|
+
- "Where to look for X" — a short index mapping common tasks to relevant directories
|
|
86
|
+
|
|
87
|
+
Do not invent facts. If sverklo doesn't surface something, say so.`;
|
|
88
|
+
},
|
|
89
|
+
};
|
|
90
|
+
const ARCHITECTURE_MAP = {
|
|
91
|
+
name: "sverklo/architecture-map",
|
|
92
|
+
description: "Generate an architecture map of the codebase using sverklo's overview, dependency graph, and PageRank-ranked centrality.",
|
|
93
|
+
arguments: [],
|
|
94
|
+
build: () => `Produce an architecture map of this codebase using only sverklo tools.
|
|
95
|
+
|
|
96
|
+
1. Call \`sverklo_overview\` for the structural summary (file/chunk/language counts, top-PageRank files).
|
|
97
|
+
2. For each of the top 5 PageRank files, call \`sverklo_deps\` to see what depends on it and what it depends on. These are the load-bearing modules.
|
|
98
|
+
3. Call \`sverklo_recall query:"architecture"\` for any saved design decisions.
|
|
99
|
+
4. Call \`sverklo_search query:"entry point main bootstrap"\` to find the application entry points.
|
|
100
|
+
|
|
101
|
+
Produce an architecture map with:
|
|
102
|
+
- **Entry points** — where execution starts
|
|
103
|
+
- **Core modules** — the high-PageRank files that everything else hangs off, with a one-line role for each
|
|
104
|
+
- **Layering** — what depends on what (group by module, not file)
|
|
105
|
+
- **Cross-cutting concerns** — anything that shows up in many unrelated places (logging, auth, config)
|
|
106
|
+
- **Risks** — high-fan-in files with no tests, circular dependencies, or anything recall flagged as fragile
|
|
107
|
+
|
|
108
|
+
Use only what sverklo returns. Do not invent module names.`,
|
|
109
|
+
};
|
|
110
|
+
const DEBUG_ISSUE = {
|
|
111
|
+
name: "sverklo/debug-issue",
|
|
112
|
+
description: "Bug-hunt workflow. Uses semantic search, references, and saved memories to localise an issue without grepping the whole repo.",
|
|
113
|
+
arguments: [
|
|
114
|
+
{
|
|
115
|
+
name: "symptom",
|
|
116
|
+
description: "Short description of the bug or symptom (e.g. 'login returns 500 for OAuth users')",
|
|
117
|
+
required: true,
|
|
118
|
+
},
|
|
119
|
+
],
|
|
120
|
+
build: ({ symptom }) => {
|
|
121
|
+
return `Help debug this issue: **${symptom || "(unspecified — ask the user for the symptom first)"}**
|
|
122
|
+
|
|
123
|
+
1. Call \`sverklo_recall query:"${symptom}"\` — there may be a prior decision or known-issue memory that explains this.
|
|
124
|
+
2. Call \`sverklo_search query:"${symptom}"\` to find the most semantically relevant code regions. Read the top 3 results.
|
|
125
|
+
3. From those results, identify the 1-2 most likely entry points or error sources. Call \`sverklo_refs symbol:"<name>"\` on each to see who calls them — the bug may be in a caller, not the function itself.
|
|
126
|
+
4. If the symptom mentions a specific error message, call \`sverklo_search query:"<error string>"\` to find where it's thrown.
|
|
127
|
+
5. Call \`sverklo_deps file:"<suspect file>"\` to see what the suspect code depends on — the bug may be in a dependency.
|
|
128
|
+
|
|
129
|
+
Then produce:
|
|
130
|
+
- **Most likely root cause:** (file:line + one-paragraph explanation)
|
|
131
|
+
- **Other candidates:** (ranked, with reasoning)
|
|
132
|
+
- **What to verify:** specific assertions or test inputs that would confirm/deny each hypothesis
|
|
133
|
+
- **Suggested fix:** only if the root cause is clear
|
|
134
|
+
|
|
135
|
+
Do not propose code changes without identifying a specific file:line. If the search turns up nothing relevant, say so and ask the user for more context (stack trace, repro steps).`;
|
|
136
|
+
},
|
|
137
|
+
};
|
|
138
|
+
export const ALL_PROMPTS = [
|
|
139
|
+
REVIEW_CHANGES,
|
|
140
|
+
PRE_MERGE_CHECK,
|
|
141
|
+
ONBOARD,
|
|
142
|
+
ARCHITECTURE_MAP,
|
|
143
|
+
DEBUG_ISSUE,
|
|
144
|
+
];
|
|
145
|
+
export function findPrompt(name) {
|
|
146
|
+
return ALL_PROMPTS.find((p) => p.name === name);
|
|
147
|
+
}
|
|
148
|
+
//# sourceMappingURL=prompts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../../src/server/prompts.ts"],"names":[],"mappings":"AAAA,iEAAiE;AACjE,EAAE;AACF,uEAAuE;AACvE,2EAA2E;AAC3E,0EAA0E;AAC1E,wEAAwE;AACxE,2EAA2E;AAC3E,8CAA8C;AAmB9C,MAAM,cAAc,GAAqB;IACvC,IAAI,EAAE,wBAAwB;IAC9B,WAAW,EACT,sKAAsK;IACxK,SAAS,EAAE;QACT;YACE,IAAI,EAAE,KAAK;YACX,WAAW,EAAE,kDAAkD;YAC/D,QAAQ,EAAE,KAAK;SAChB;KACF;IACD,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE;QACjB,MAAM,CAAC,GAAG,GAAG,IAAI,YAAY,CAAC;QAC9B,OAAO,gCAAgC,CAAC;;8CAEE,CAAC;2CACJ,CAAC;;;gEAGoB,CAAC;;mUAEkQ,CAAC;IAClU,CAAC;CACF,CAAC;AAEF,MAAM,eAAe,GAAqB;IACxC,IAAI,EAAE,mBAAmB;IACzB,WAAW,EACT,6JAA6J;IAC/J,SAAS,EAAE;QACT;YACE,IAAI,EAAE,KAAK;YACX,WAAW,EAAE,2DAA2D;YACxE,QAAQ,EAAE,KAAK;SAChB;KACF;IACD,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE;QACjB,MAAM,CAAC,GAAG,GAAG,IAAI,YAAY,CAAC;QAC9B,OAAO,8CAA8C,CAAC;;qCAErB,CAAC;kCACJ,CAAC;;;;;;;;;;+EAU4C,CAAC;IAC9E,CAAC;CACF,CAAC;AAEF,MAAM,OAAO,GAAqB;IAChC,IAAI,EAAE,iBAAiB;IACvB,WAAW,EACT,qIAAqI;IACvI,SAAS,EAAE;QACT;YACE,IAAI,EAAE,OAAO;YACb,WAAW,EAAE,qEAAqE;YAClF,QAAQ,EAAE,KAAK;SAChB;KACF;IACD,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;QACnB,MAAM,SAAS,GAAG,KAAK;YACrB,CAAC,CAAC,sDAAsD,KAAK,mCAAmC;YAChG,CAAC,CAAC,0DAA0D,CAAC;QAC/D,OAAO,uDAAuD,SAAS;;;;KAItE,KAAK,CAAC,CAAC,CAAC,gCAAgC,KAAK,kDAAkD,CAAC,CAAC,CAAC,8HAA8H;;;;;;;;;mEASlK,CAAC;IAClE,CAAC;CACF,CAAC;AAEF,MAAM,gBAAgB,GAAqB;IACzC,IAAI,EAAE,0BAA0B;IAChC,WAAW,EACT,0HAA0H;IAC5H,SAAS,EAAE,EAAE;IACb,KAAK,EAAE,GAAG,EAAE,CAAC;;;;;;;;;;;;;;2DAc4C;CAC1D,CAAC;AAEF,MAAM,WAAW,GAAqB;IACpC,IAAI,EAAE,qBAAqB;IAC3B,WAAW,EACT,+HAA+H;IACjI,SAAS,EAAE;QACT;YACE,IAAI,EAAE,SAAS;YACf,WAAW,EAAE,oFAAoF;YACjG,QAAQ,EAAE,IAAI;SACf;KACF;IACD,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;QACrB,OAAO,4BAA4B,OAAO,IAAI,oDAAoD;;kCAEpE,OAAO;kCACP,OAAO;;;;;;;;;;;oLAW2I,CAAC;IACnL,CAAC;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAuB;IAC7C,cAAc;IACd,eAAe;IACf,OAAO;IACP,gBAAgB;IAChB,WAAW;CACZ,CAAC;AAEF,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AAClD,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { Indexer } from "../../indexer/indexer.js";
|
|
2
|
+
export declare const contextTool: {
|
|
3
|
+
name: string;
|
|
4
|
+
description: string;
|
|
5
|
+
inputSchema: {
|
|
6
|
+
type: "object";
|
|
7
|
+
properties: {
|
|
8
|
+
task: {
|
|
9
|
+
type: string;
|
|
10
|
+
description: string;
|
|
11
|
+
};
|
|
12
|
+
detail_level: {
|
|
13
|
+
type: string;
|
|
14
|
+
enum: string[];
|
|
15
|
+
description: string;
|
|
16
|
+
};
|
|
17
|
+
scope: {
|
|
18
|
+
type: string;
|
|
19
|
+
description: string;
|
|
20
|
+
};
|
|
21
|
+
};
|
|
22
|
+
required: string[];
|
|
23
|
+
};
|
|
24
|
+
};
|
|
25
|
+
export declare function handleContext(indexer: Indexer, args: Record<string, unknown>): Promise<string>;
|