opencode-rag-plugin 1.10.5 → 1.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/ReadMe.md +22 -6
  2. package/dist/api.d.ts +1 -0
  3. package/dist/api.js +1 -0
  4. package/dist/api.js.map +1 -1
  5. package/dist/cli.js +154 -2
  6. package/dist/cli.js.map +1 -1
  7. package/dist/core/config.d.ts +2 -0
  8. package/dist/core/config.js +3 -2
  9. package/dist/core/config.js.map +1 -1
  10. package/dist/core/interfaces.d.ts +12 -0
  11. package/dist/core/runtime-overrides.d.ts +1 -0
  12. package/dist/core/runtime-overrides.js +3 -1
  13. package/dist/core/runtime-overrides.js.map +1 -1
  14. package/dist/eval/index.d.ts +3 -0
  15. package/dist/eval/index.js +2 -0
  16. package/dist/eval/index.js.map +1 -1
  17. package/dist/eval/run-token-test.d.ts +7 -0
  18. package/dist/eval/run-token-test.js +288 -0
  19. package/dist/eval/run-token-test.js.map +1 -0
  20. package/dist/eval/token-analysis.d.ts +111 -0
  21. package/dist/eval/token-analysis.js +286 -0
  22. package/dist/eval/token-analysis.js.map +1 -0
  23. package/dist/eval/token-counter.d.ts +41 -0
  24. package/dist/eval/token-counter.js +102 -0
  25. package/dist/eval/token-counter.js.map +1 -0
  26. package/dist/mcp/cli.js +8 -6
  27. package/dist/mcp/cli.js.map +1 -1
  28. package/dist/opencode/tools.js +12 -5
  29. package/dist/opencode/tools.js.map +1 -1
  30. package/dist/plugin.js +71 -29
  31. package/dist/plugin.js.map +1 -1
  32. package/dist/retriever/keyword-index.d.ts +1 -0
  33. package/dist/retriever/keyword-index.js +11 -0
  34. package/dist/retriever/keyword-index.js.map +1 -1
  35. package/dist/retriever/retriever.d.ts +1 -0
  36. package/dist/retriever/retriever.js +49 -7
  37. package/dist/retriever/retriever.js.map +1 -1
  38. package/dist/tui.js +54 -5
  39. package/dist/tui.js.map +1 -1
  40. package/dist/web/server.js +31 -0
  41. package/dist/web/server.js.map +1 -1
  42. package/dist/web/ui/app.css +1 -0
  43. package/dist/web/ui/github-dark.css +118 -0
  44. package/dist/web/ui/highlight.min.js +1213 -0
  45. package/dist/web/ui/index.html +3 -29
  46. package/package.json +8 -2
@@ -0,0 +1,286 @@
1
+ /**
2
+ * Token usage analysis for comparing RAG-on vs RAG-off sessions.
3
+ *
4
+ * Provides functions to:
5
+ * - Analyze per-query token breakdown from session events
6
+ * - Estimate token savings from RAG (fewer read tool calls)
7
+ * - Generate comparison reports between RAG-on and RAG-off sessions
8
+ */
9
+ import { readSessionEvents, computeSummary } from "./storage.js";
10
+ import { countTokens } from "./token-counter.js";
11
+ /** Average tokens consumed by a `read` tool call (typical file read). */
12
+ const AVG_READ_TOOL_TOKENS = 1200;
13
+ /** Average tokens consumed by a `search_semantic` tool call. */
14
+ const AVG_SEARCH_TOOL_TOKENS = 800;
15
+ /** Average tokens for system prompt guidance injected by RAG (~150 tokens). */
16
+ const SYSTEM_GUIDANCE_TOKENS = 150;
17
+ /**
18
+ * Analyze token usage for a single session from its JSONL event log.
19
+ *
20
+ * Reads all events, groups them by message, and computes per-query breakdowns
21
+ * including RAG context injection, tool calls, and response times.
22
+ */
23
+ export function analyzeTokenUsage(storePath, sessionID) {
24
+ const events = readSessionEvents(storePath, sessionID);
25
+ const summary = computeSummary(events);
26
+ // Group events by messageID
27
+ const messageEvents = new Map();
28
+ const ragContextByMessage = new Map();
29
+ const toolCallsByMessage = new Map();
30
+ for (const ev of events) {
31
+ const mid = ev.messageID ?? "unknown";
32
+ if (ev.event === "message" && ev.role === "assistant") {
33
+ if (!messageEvents.has(mid))
34
+ messageEvents.set(mid, []);
35
+ messageEvents.get(mid).push(ev);
36
+ }
37
+ if (ev.event === "rag.context") {
38
+ ragContextByMessage.set(mid, ev);
39
+ }
40
+ if (ev.event === "tool") {
41
+ if (!toolCallsByMessage.has(mid))
42
+ toolCallsByMessage.set(mid, []);
43
+ toolCallsByMessage.get(mid).push(ev);
44
+ }
45
+ }
46
+ const breakdowns = [];
47
+ let totalReadToolCalls = 0;
48
+ let totalRagToolCalls = 0;
49
+ let totalRagContextTokens = 0;
50
+ let totalCost = 0;
51
+ let systemGuidanceTokens = 0;
52
+ // System guidance is injected when chunks are indexed (ragContextCount > 0)
53
+ if (summary.ragContextCount > 0) {
54
+ systemGuidanceTokens = SYSTEM_GUIDANCE_TOKENS * summary.messageCount;
55
+ }
56
+ for (const [mid, msgEvents] of messageEvents) {
57
+ const msgEvent = msgEvents[0]; // Should be exactly one per messageID
58
+ const ragCtx = ragContextByMessage.get(mid);
59
+ const tools = toolCallsByMessage.get(mid) ?? [];
60
+ const readCalls = tools.filter((t) => t.tool === "read").length;
61
+ const ragCalls = tools.filter((t) => ["search_semantic", "get_file_skeleton", "find_usages", "search_semantic"].includes(t.tool ?? "")).length;
62
+ const timeDiff = (msgEvent.timeCreated && msgEvent.timeCompleted)
63
+ ? msgEvent.timeCompleted - msgEvent.timeCreated
64
+ : 0;
65
+ totalReadToolCalls += readCalls;
66
+ totalRagToolCalls += ragCalls;
67
+ totalRagContextTokens += ragCtx?.ragContextTokens ?? 0;
68
+ totalCost += msgEvent.cost ?? 0;
69
+ breakdowns.push({
70
+ messageID: mid,
71
+ inputTokens: msgEvent.tokens?.input ?? 0,
72
+ outputTokens: msgEvent.tokens?.output ?? 0,
73
+ reasoningTokens: msgEvent.tokens?.reasoning ?? 0,
74
+ cacheRead: msgEvent.tokens?.cache?.read ?? 0,
75
+ cacheWrite: msgEvent.tokens?.cache?.write ?? 0,
76
+ cost: msgEvent.cost ?? 0,
77
+ ragContextTokens: ragCtx?.ragContextTokens ?? 0,
78
+ ragChunkCount: ragCtx?.ragChunkCount ?? 0,
79
+ ragTopScore: ragCtx?.ragTopScore ?? 0,
80
+ readToolCalls: readCalls,
81
+ ragToolCalls: ragCalls,
82
+ responseTimeMs: timeDiff,
83
+ });
84
+ }
85
+ // Aggregate execution time and models
86
+ const responseTimes = breakdowns.filter((b) => b.responseTimeMs > 0).map((b) => b.responseTimeMs);
87
+ const avgResponseTimeMs = responseTimes.length > 0
88
+ ? Math.round(responseTimes.reduce((a, b) => a + b, 0) / responseTimes.length)
89
+ : 0;
90
+ const totalToolTimeMs = breakdowns.reduce((sum, b) => sum + b.ragToolCalls * 40 + b.readToolCalls * 25, 0); // estimated
91
+ const modelSet = new Set();
92
+ for (const ev of events) {
93
+ if (ev.event === "message" && ev.modelID)
94
+ modelSet.add(ev.modelID);
95
+ }
96
+ const totals = {
97
+ inputTokens: summary.totalTokens.input,
98
+ outputTokens: summary.totalTokens.output,
99
+ reasoningTokens: summary.totalTokens.reasoning,
100
+ cacheRead: summary.totalTokens.cacheRead,
101
+ cacheWrite: summary.totalTokens.cacheWrite,
102
+ cost: totalCost,
103
+ ragContextTokens: totalRagContextTokens,
104
+ readToolCalls: totalReadToolCalls,
105
+ ragToolCalls: totalRagToolCalls,
106
+ systemGuidanceTokens,
107
+ avgResponseTimeMs,
108
+ totalToolTimeMs,
109
+ models: [...modelSet],
110
+ };
111
+ // Estimate what tokens would look like without RAG:
112
+ // - No RAG context tokens injected
113
+ // - No system guidance tokens
114
+ // - More read tool calls (estimated 2-3 extra per query)
115
+ // - More search_semantic calls would become read calls
116
+ const avgReadCallsPerQuery = summary.messageCount > 0 ? totalReadToolCalls / summary.messageCount : 0;
117
+ const estimatedExtraReadsPerQuery = Math.max(0, 2.5 - avgReadCallsPerQuery); // RAG typically reduces reads by ~2.5
118
+ const estimatedExtraReadTokens = estimatedExtraReadsPerQuery * AVG_READ_TOOL_TOKENS * summary.messageCount;
119
+ const estimatedExtraSearchTokens = totalRagToolCalls * AVG_SEARCH_TOOL_TOKENS;
120
+ const tokensWithoutRAG = totals.inputTokens
121
+ - totals.ragContextTokens
122
+ - totals.systemGuidanceTokens
123
+ + estimatedExtraReadTokens
124
+ + estimatedExtraSearchTokens;
125
+ const tokensWithRAG = totals.inputTokens;
126
+ const netSavings = tokensWithoutRAG - tokensWithRAG;
127
+ const percentSavings = tokensWithoutRAG > 0 ? (netSavings / tokensWithoutRAG) * 100 : 0;
128
+ return {
129
+ sessionID,
130
+ queryCount: summary.messageCount,
131
+ breakdowns,
132
+ totals,
133
+ estimates: {
134
+ tokensWithoutRAG: Math.round(tokensWithoutRAG),
135
+ tokensWithRAG,
136
+ netSavings: Math.round(netSavings),
137
+ percentSavings: Math.round(percentSavings * 10) / 10,
138
+ },
139
+ };
140
+ }
141
+ /**
142
+ * Compare two token analyses (RAG-on vs RAG-off) and produce a delta report.
143
+ */
144
+ export function compareTokenAnalyses(ragOn, ragOff) {
145
+ const dInput = ragOn.totals.inputTokens - ragOff.totals.inputTokens;
146
+ const dOutput = ragOn.totals.outputTokens - ragOff.totals.outputTokens;
147
+ const dReasoning = ragOn.totals.reasoningTokens - ragOff.totals.reasoningTokens;
148
+ const dCache = ragOn.totals.cacheRead - ragOff.totals.cacheRead;
149
+ const dCost = ragOn.totals.cost - ragOff.totals.cost;
150
+ const dRagCtx = ragOn.totals.ragContextTokens - ragOff.totals.ragContextTokens;
151
+ const dReads = ragOn.totals.readToolCalls - ragOff.totals.readToolCalls;
152
+ const dRagTools = ragOn.totals.ragToolCalls - ragOff.totals.ragToolCalls;
153
+ const dSysGuidance = ragOn.totals.systemGuidanceTokens - ragOff.totals.systemGuidanceTokens;
154
+ const avgOnTime = ragOn.breakdowns.length > 0
155
+ ? ragOn.breakdowns.reduce((s, b) => s + b.responseTimeMs, 0) / ragOn.breakdowns.length
156
+ : 0;
157
+ const avgOffTime = ragOff.breakdowns.length > 0
158
+ ? ragOff.breakdowns.reduce((s, b) => s + b.responseTimeMs, 0) / ragOff.breakdowns.length
159
+ : 0;
160
+ const dResponseTime = avgOnTime - avgOffTime;
161
+ const pct = (delta, base) => base === 0 ? 0 : Math.round((delta / base) * 1000) / 10;
162
+ const totalOn = ragOn.totals.inputTokens + ragOn.totals.outputTokens;
163
+ const totalOff = ragOff.totals.inputTokens + ragOff.totals.outputTokens;
164
+ // Verdict
165
+ let verdict;
166
+ if (ragOn.totals.inputTokens < ragOff.totals.inputTokens) {
167
+ verdict = `RAG SAVES tokens: ${Math.abs(dInput)} fewer input tokens (${Math.abs(pct(dInput, ragOff.totals.inputTokens))}% reduction)`;
168
+ }
169
+ else if (ragOn.totals.inputTokens > ragOff.totals.inputTokens) {
170
+ verdict = `RAG COSTS tokens: ${dInput} more input tokens (${pct(dInput, ragOff.totals.inputTokens)}% increase)`;
171
+ }
172
+ else {
173
+ verdict = "RAG has no effect on input token usage";
174
+ }
175
+ if (dReads < 0) {
176
+ verdict += ` | ${Math.abs(dReads)} fewer read calls`;
177
+ }
178
+ if (dRagTools > 0) {
179
+ verdict += ` | ${dRagTools} additional RAG tool calls`;
180
+ }
181
+ return {
182
+ delta: {
183
+ inputTokens: dInput,
184
+ outputTokens: dOutput,
185
+ reasoningTokens: dReasoning,
186
+ cacheRead: dCache,
187
+ cost: dCost,
188
+ ragContextTokens: dRagCtx,
189
+ readToolCalls: dReads,
190
+ ragToolCalls: dRagTools,
191
+ systemGuidanceTokens: dSysGuidance,
192
+ responseTimeMs: Math.round(dResponseTime),
193
+ },
194
+ percentChange: {
195
+ inputTokens: pct(dInput, ragOff.totals.inputTokens),
196
+ outputTokens: pct(dOutput, ragOff.totals.outputTokens),
197
+ cost: pct(dCost, ragOff.totals.cost),
198
+ readToolCalls: pct(dReads, ragOff.totals.readToolCalls),
199
+ responseTimeMs: pct(dResponseTime, avgOffTime),
200
+ },
201
+ verdict,
202
+ };
203
+ }
204
+ /**
205
+ * Format a token comparison report as a human-readable string.
206
+ */
207
+ export function formatTokenReport(ragOn, ragOff, comparison) {
208
+ const lines = [];
209
+ const sep = "─".repeat(70);
210
+ lines.push("");
211
+ lines.push(sep);
212
+ lines.push(" TOKEN USAGE COMPARISON: RAG ON vs RAG OFF");
213
+ lines.push(sep);
214
+ lines.push("");
215
+ // Summary table
216
+ lines.push(" Metric RAG ON RAG OFF Delta");
217
+ lines.push(` ${"─".repeat(66)}`);
218
+ const row = (label, on, off, delta) => {
219
+ const onStr = typeof on === "number" ? on.toLocaleString() : on;
220
+ const offStr = typeof off === "number" ? off.toLocaleString() : off;
221
+ const deltaStr = typeof delta === "number"
222
+ ? (delta > 0 ? `+${delta.toLocaleString()}` : delta.toLocaleString())
223
+ : delta;
224
+ lines.push(` ${label.padEnd(34)}${onStr.padStart(12)}${offStr.padStart(14)}${deltaStr.padStart(14)}`);
225
+ };
226
+ row("Input tokens", ragOn.totals.inputTokens, ragOff.totals.inputTokens, comparison.delta.inputTokens);
227
+ row("Output tokens", ragOn.totals.outputTokens, ragOff.totals.outputTokens, comparison.delta.outputTokens);
228
+ row("Reasoning tokens", ragOn.totals.reasoningTokens, ragOff.totals.reasoningTokens, comparison.delta.reasoningTokens);
229
+ row("Cache read", ragOn.totals.cacheRead, ragOff.totals.cacheRead, comparison.delta.cacheRead);
230
+ row("Cost ($)", `$${ragOn.totals.cost.toFixed(4)}`, `$${ragOff.totals.cost.toFixed(4)}`, `$${comparison.delta.cost.toFixed(4)}`);
231
+ lines.push(` ${"─".repeat(66)}`);
232
+ row("RAG context tokens", ragOn.totals.ragContextTokens, ragOff.totals.ragContextTokens, comparison.delta.ragContextTokens);
233
+ row("System guidance tokens", ragOn.totals.systemGuidanceTokens, ragOff.totals.systemGuidanceTokens, comparison.delta.systemGuidanceTokens);
234
+ row("Read tool calls", ragOn.totals.readToolCalls, ragOff.totals.readToolCalls, comparison.delta.readToolCalls);
235
+ row("RAG tool calls", ragOn.totals.ragToolCalls, ragOff.totals.ragToolCalls, comparison.delta.ragToolCalls);
236
+ row("Avg response time (ms)", ragOn.totals.avgResponseTimeMs, ragOff.totals.avgResponseTimeMs, comparison.delta.responseTimeMs);
237
+ row("Queries processed", ragOn.queryCount, ragOff.queryCount, ragOn.queryCount - ragOff.queryCount);
238
+ lines.push(` ${"─".repeat(66)}`);
239
+ lines.push(` Models: ${ragOn.totals.models.join(", ") || "unknown"}`);
240
+ lines.push(` ${ragOff.totals.models.join(", ") || "unknown"}`);
241
+ lines.push("");
242
+ lines.push(` Verdict: ${comparison.verdict}`);
243
+ lines.push("");
244
+ // Per-query breakdown
245
+ lines.push(" PER-QUERY BREAKDOWN (RAG ON)");
246
+ lines.push(` ${"─".repeat(66)}`);
247
+ lines.push(" # Input Output RAG ctx Reads RAG tools Score");
248
+ lines.push(` ${"─".repeat(66)}`);
249
+ for (let i = 0; i < ragOn.breakdowns.length; i++) {
250
+ const b = ragOn.breakdowns[i];
251
+ lines.push(` ${String(i + 1).padStart(2)} ${String(b.inputTokens).padStart(7)} ${String(b.outputTokens).padStart(7)} ${String(b.ragContextTokens).padStart(7)} ${String(b.readToolCalls).padStart(5)} ${String(b.ragToolCalls).padStart(9)} ${b.ragTopScore.toFixed(2)}`);
252
+ }
253
+ lines.push("");
254
+ lines.push(sep);
255
+ lines.push("");
256
+ return lines.join("\n");
257
+ }
258
+ /**
259
+ * Estimate the token count for given text content.
260
+ * Uses tiktoken BPE (cl100k_base) when available, falls back to ceil(len/4).
261
+ */
262
+ export function estimateContextTokens(text) {
263
+ return countTokens(text);
264
+ }
265
+ /**
266
+ * Project whether RAG would save tokens for a given query profile.
267
+ *
268
+ * @param avgChunkSize - Average size of injected code chunks in characters
269
+ * @param avgChunksPerQuery - Average chunks injected per query
270
+ * @param avgReadsPerQueryWithoutRAG - Average read calls without RAG
271
+ * @param avgReadsPerQueryWithRAG - Average read calls with RAG
272
+ * @param queryCount - Number of queries in the session
273
+ */
274
+ export function projectTokenSavings(params) {
275
+ const ragOverheadTokens = Math.ceil(params.avgChunkSize / 4) * params.avgChunksPerQuery * params.queryCount;
276
+ const savedReads = Math.max(0, params.avgReadsPerQueryWithoutRAG - params.avgReadsPerQueryWithRAG);
277
+ const savedReadTokens = savedReads * AVG_READ_TOOL_TOKENS * params.queryCount;
278
+ const netSavings = savedReadTokens - ragOverheadTokens;
279
+ return {
280
+ ragOverheadTokens,
281
+ savedReadTokens,
282
+ netSavings,
283
+ isPositive: netSavings > 0,
284
+ };
285
+ }
286
+ //# sourceMappingURL=token-analysis.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token-analysis.js","sourceRoot":"","sources":["../../src/eval/token-analysis.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Token counting with tiktoken BPE + fallback heuristic.
3
+ *
4
+ * Uses js-tiktoken (cl100k_base encoding) for BPE-accurate counts.
5
+ * Falls back to ceil(text.length / 4) when tiktoken is unavailable.
6
+ *
7
+ * cl100k_base is the encoding used by GPT-4, GPT-4o, Claude, and most
8
+ * modern LLMs. It is the closest universal approximation available locally.
9
+ */
10
+ import type { SearchResult } from "../core/interfaces.js";
11
+ /**
12
+ * Count the number of tokens in a text string.
13
+ *
14
+ * Uses tiktoken BPE (cl100k_base) when available, falls back to
15
+ * the ceil(characters / 4) heuristic otherwise.
16
+ */
17
+ export declare function countTokens(text: string): number;
18
+ /**
19
+ * Count tokens for multiple texts individually.
20
+ * Returns an array of token counts, one per input text.
21
+ */
22
+ export declare function countTokensBatch(texts: string[]): number[];
23
+ /**
24
+ * Sum token counts for multiple texts.
25
+ */
26
+ export declare function sumTokens(texts: string[]): number;
27
+ /**
28
+ * Estimate the token overhead of auto-injected RAG context.
29
+ *
30
+ * Counts each chunk's content + description + formatting overhead individually,
31
+ * providing a more accurate estimate than counting the fully-assembled string.
32
+ *
33
+ * @param chunks - Search results to count
34
+ * @param worktree - Working tree for path relativity (unused, kept for interface compat)
35
+ * @param estimateFn - Fallback estimator (used if tiktoken unavailable)
36
+ */
37
+ export declare function estimateContextTokensFormatted(chunks: SearchResult[], worktree: string): number;
38
+ /**
39
+ * Returns the tokenizer method used ("tiktoken" or "heuristic").
40
+ */
41
+ export declare function tokenizerMethod(): "tiktoken" | "heuristic";
@@ -0,0 +1,102 @@
1
+ /**
2
+ * Token counting with tiktoken BPE + fallback heuristic.
3
+ *
4
+ * Uses js-tiktoken (cl100k_base encoding) for BPE-accurate counts.
5
+ * Falls back to ceil(text.length / 4) when tiktoken is unavailable.
6
+ *
7
+ * cl100k_base is the encoding used by GPT-4, GPT-4o, Claude, and most
8
+ * modern LLMs. It is the closest universal approximation available locally.
9
+ */
10
+ let cachedEncoder = null;
11
+ let loadFailed = false;
12
+ function getEncoder() {
13
+ if (loadFailed)
14
+ return null;
15
+ if (cachedEncoder)
16
+ return cachedEncoder;
17
+ try {
18
+ // Dynamic import — CJS module in an ESM project
19
+ const mod = require("js-tiktoken");
20
+ cachedEncoder = mod.getEncoding("cl100k_base");
21
+ return cachedEncoder;
22
+ }
23
+ catch {
24
+ loadFailed = true;
25
+ return null;
26
+ }
27
+ }
28
+ function fallbackEstimate(text) {
29
+ return Math.ceil(text.length / 4);
30
+ }
31
+ /**
32
+ * Count the number of tokens in a text string.
33
+ *
34
+ * Uses tiktoken BPE (cl100k_base) when available, falls back to
35
+ * the ceil(characters / 4) heuristic otherwise.
36
+ */
37
+ export function countTokens(text) {
38
+ if (text.length === 0)
39
+ return 0;
40
+ const encoder = getEncoder();
41
+ if (encoder) {
42
+ try {
43
+ return encoder.encode(text, [], []).length;
44
+ }
45
+ catch {
46
+ // Encoding failed — fall through to heuristic
47
+ }
48
+ }
49
+ return fallbackEstimate(text);
50
+ }
51
+ /**
52
+ * Count tokens for multiple texts individually.
53
+ * Returns an array of token counts, one per input text.
54
+ */
55
+ export function countTokensBatch(texts) {
56
+ return texts.map(countTokens);
57
+ }
58
+ /**
59
+ * Sum token counts for multiple texts.
60
+ */
61
+ export function sumTokens(texts) {
62
+ let total = 0;
63
+ for (const text of texts) {
64
+ total += countTokens(text);
65
+ }
66
+ return total;
67
+ }
68
+ /**
69
+ * Estimate the token overhead of auto-injected RAG context.
70
+ *
71
+ * Counts each chunk's content + description + formatting overhead individually,
72
+ * providing a more accurate estimate than counting the fully-assembled string.
73
+ *
74
+ * @param chunks - Search results to count
75
+ * @param worktree - Working tree for path relativity (unused, kept for interface compat)
76
+ * @param estimateFn - Fallback estimator (used if tiktoken unavailable)
77
+ */
78
+ export function estimateContextTokensFormatted(chunks, worktree) {
79
+ if (chunks.length === 0)
80
+ return 0;
81
+ let tokens = 0;
82
+ for (const r of chunks) {
83
+ // Content tokens
84
+ tokens += countTokens(r.chunk.content);
85
+ // Description tokens
86
+ if (r.chunk.description) {
87
+ tokens += countTokens(r.chunk.description);
88
+ }
89
+ // Formatting overhead: file path, line range, language, score, backticks, newlines
90
+ tokens += 12;
91
+ }
92
+ // Header overhead: "Auto-retrieved code context" + metadata line + separators
93
+ tokens += 30;
94
+ return tokens;
95
+ }
96
+ /**
97
+ * Returns the tokenizer method used ("tiktoken" or "heuristic").
98
+ */
99
+ export function tokenizerMethod() {
100
+ return getEncoder() ? "tiktoken" : "heuristic";
101
+ }
102
+ //# sourceMappingURL=token-counter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token-counter.js","sourceRoot":"","sources":["../../src/eval/token-counter.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAQH,IAAI,aAAa,GAA2B,IAAI,CAAC;AACjD,IAAI,UAAU,GAAG,KAAK,CAAC;AAEvB,SAAS,UAAU;IACjB,IAAI,UAAU;QAAE,OAAO,IAAI,CAAC;IAC5B,IAAI,aAAa;QAAE,OAAO,aAAa,CAAC;IAExC,IAAI,CAAC;QACH,gDAAgD;QAChD,MAAM,GAAG,GAAG,OAAO,CAAC,aAAa,CAAmD,CAAC;QACrF,aAAa,GAAG,GAAG,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;QAC/C,OAAO,aAAa,CAAC;IACvB,CAAC;IAAC,MAAM,CAAC;QACP,UAAU,GAAG,IAAI,CAAC;QAClB,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAY;IACpC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACpC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CAAC,IAAY;IACtC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IAEhC,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAC7B,IAAI,OAAO,EAAE,CAAC;QACZ,IAAI,CAAC;YACH,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC;QAC7C,CAAC;QAAC,MAAM,CAAC;YACP,8CAA8C;QAChD,CAAC;IACH,CAAC;IAED,OAAO,gBAAgB,CAAC,IAAI,CAAC,CAAC;AAChC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAe;IAC9C,OAAO,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;AAChC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,KAAe;IACvC,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,KAAK,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,8BAA8B,CAC5C,MAAsB,EACtB,QAAgB;IAEhB,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IAElC,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACvB,iBAAiB;QACjB,MAAM,IAAI,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACvC,qBAAqB;QACrB,IAAI,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;YACxB,MAAM,IAAI,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAC7C,CAAC;QACD,mFAAmF;QACnF,MAAM,IAAI,EAAE,CAAC;IACf,CAAC;IAED,8EAA8E;IAC9E,MAAM,IAAI,EAAE,CAAC;IAEb,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe;IAC7B,OAAO,UAAU,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC;AACjD,CAAC"}
package/dist/mcp/cli.js CHANGED
@@ -1,15 +1,17 @@
1
1
  import process from "node:process";
2
2
  import { createMcpServer } from "./server.js";
3
+ let closed = false;
3
4
  export async function runMcpServer(options) {
4
5
  const instance = await createMcpServer(options);
5
- process.on("SIGINT", async () => {
6
+ async function shutdown() {
7
+ if (closed)
8
+ return;
9
+ closed = true;
6
10
  await instance.close();
7
11
  process.exit(0);
8
- });
9
- process.on("SIGTERM", async () => {
10
- await instance.close();
11
- process.exit(0);
12
- });
12
+ }
13
+ process.on("SIGINT", shutdown);
14
+ process.on("SIGTERM", shutdown);
13
15
  await new Promise(() => { });
14
16
  }
15
17
  //# sourceMappingURL=cli.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/mcp/cli.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,OAGlC;IACC,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,OAAO,CAAC,CAAC;IAEhD,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;QAC9B,MAAM,QAAQ,CAAC,KAAK,EAAE,CAAC;QACvB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;IACH,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,IAAI,EAAE;QAC/B,MAAM,QAAQ,CAAC,KAAK,EAAE,CAAC;QACvB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;IAEH,MAAM,IAAI,OAAO,CAAO,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;AACpC,CAAC"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/mcp/cli.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,IAAI,MAAM,GAAG,KAAK,CAAC;AAEnB,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,OAGlC;IACC,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,OAAO,CAAC,CAAC;IAEhD,KAAK,UAAU,QAAQ;QACrB,IAAI,MAAM;YAAE,OAAO;QACnB,MAAM,GAAG,IAAI,CAAC;QACd,MAAM,QAAQ,CAAC,KAAK,EAAE,CAAC;QACvB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC/B,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAEhC,MAAM,IAAI,OAAO,CAAO,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;AACpC,CAAC"}
@@ -192,13 +192,15 @@ export function createSearchSemanticTool(options) {
192
192
  const retrieveFn = options.retrieveFn ?? retrieve;
193
193
  return tool({
194
194
  description: "Search the indexed codebase by meaning, not just keywords. " +
195
- "Call when the user asks 'how does X work?', 'where is Y?', or you need to understand code behavior. " +
196
- "Returns the most relevant code snippets with file paths and line numbers.",
195
+ "ESSENTIAL before any code task replaces blind reading with targeted retrieval. " +
196
+ "Call when the user asks 'how does X work?', 'where is Y?', references files/functions you haven't read, " +
197
+ "or you need to understand code behavior. Returns the most relevant code snippets with file paths, line numbers, and relevance scores.",
197
198
  args: {
198
199
  query: tool.schema.string().min(1, "A search query is required."),
199
200
  pathHints: tool.schema.array(tool.schema.string().min(1)).max(10).optional(),
200
201
  languageHints: tool.schema.array(tool.schema.string().min(1)).max(10).optional(),
201
202
  topK: tool.schema.number().int().min(1).max(25).optional(),
203
+ explain: tool.schema.boolean().optional(),
202
204
  },
203
205
  async execute(args) {
204
206
  try {
@@ -224,6 +226,7 @@ export function createSearchSemanticTool(options) {
224
226
  keywordIndex,
225
227
  keywordWeight: cfg.retrieval.hybridSearch?.keywordWeight,
226
228
  queryPrefix: cfg.embedding.queryPrefix,
229
+ explain: args.explain ?? false,
227
230
  };
228
231
  const results = await retrieveFn(query, embedder, store, retrieveOpts);
229
232
  if (results.length === 0) {
@@ -237,8 +240,12 @@ export function createSearchSemanticTool(options) {
237
240
  const formatted = results.map((r) => {
238
241
  const m = r.chunk.metadata;
239
242
  const desc = r.chunk.description ? `> ${r.chunk.description}\n` : "";
243
+ const explain = r.explanation && args.explain
244
+ ? `> _Vector: ${r.explanation.scoreBreakdown.rawVectorScore.toFixed(4)} | Keyword: ${r.explanation.scoreBreakdown.rawKeywordScore.toFixed(4)} | KW weight: ${r.explanation.scoreBreakdown.keywordWeight.toFixed(2)}${r.explanation.matchedTerms?.length ? ` | Matched: ${r.explanation.matchedTerms.join(", ")}` : ""}_\n`
245
+ : "";
240
246
  return [
241
247
  `**${m.filePath}:${m.startLine}-${m.endLine}** (${m.language}, relevance: ${r.score.toFixed(2)})`,
248
+ explain,
242
249
  desc,
243
250
  "```" + m.language,
244
251
  r.chunk.content,
@@ -279,7 +286,7 @@ export function createFileSkeletonTool(options) {
279
286
  return tool({
280
287
  description: "Get a quick structural overview of a source file — functions, classes, " +
281
288
  "interfaces, methods, and other top-level declarations with their line numbers. " +
282
- "Call before reading a large file to decide which sections to focus on. " +
289
+ "MANDATORY before reading any file calling read without this wastes tokens on irrelevant sections. " +
283
290
  "Supports TypeScript, JavaScript, Python, Java, Go, Rust, C/C++, C#, Ruby, Swift, Kotlin, and more.",
284
291
  args: {
285
292
  filePath: tool.schema.string().min(1, "A file path is required."),
@@ -387,8 +394,8 @@ export function createFindUsagesTool(options) {
387
394
  }
388
395
  return tool({
389
396
  description: "Find usages and references of a symbol (function, variable, class, etc.) " +
390
- "across the indexed codebase. Call BEFORE editing any function, variable, or class " +
391
- "to understand the impact it shows every line that references the symbol with surrounding context.",
397
+ "across the indexed codebase. REQUIRED before editing any function, variable, or class " +
398
+ "skipping this breaks unseen call sites. Shows every line that references the symbol with surrounding context.",
392
399
  args: {
393
400
  symbolName: tool.schema.string().min(1, "A symbol name is required."),
394
401
  pathHint: tool.schema.string().optional(),
@@ -1 +1 @@
1
- {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/opencode/tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/opencode/tools.ts"],"names":[],"mappings":"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"}