@maxanatsko/gemini-mcp-tool 2.3.0 → 2.3.2
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/tools/ask-gemini.tool.d.ts.map +1 -1
- package/dist/tools/ask-gemini.tool.js +2 -8
- package/dist/tools/ask-gemini.tool.js.map +1 -1
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +1 -2
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/review-code.tool.d.ts.map +1 -1
- package/dist/tools/review-code.tool.js +5 -1
- package/dist/tools/review-code.tool.js.map +1 -1
- package/dist/utils/changeModeTranslator.d.ts +2 -6
- package/dist/utils/changeModeTranslator.d.ts.map +1 -1
- package/dist/utils/changeModeTranslator.js +6 -34
- package/dist/utils/changeModeTranslator.js.map +1 -1
- package/dist/utils/geminiExecutor.d.ts +1 -1
- package/dist/utils/geminiExecutor.d.ts.map +1 -1
- package/dist/utils/geminiExecutor.js +7 -35
- package/dist/utils/geminiExecutor.js.map +1 -1
- package/package.json +1 -1
- package/dist/tools/fetch-chunk.tool.d.ts +0 -3
- package/dist/tools/fetch-chunk.tool.d.ts.map +0 -1
- package/dist/tools/fetch-chunk.tool.js +0 -62
- package/dist/tools/fetch-chunk.tool.js.map +0 -1
- package/dist/utils/changeModeChunker.d.ts +0 -11
- package/dist/utils/changeModeChunker.d.ts.map +0 -1
- package/dist/utils/changeModeChunker.js +0 -89
- package/dist/utils/changeModeChunker.js.map +0 -1
- package/dist/utils/chunkCache.d.ts +0 -22
- package/dist/utils/chunkCache.d.ts.map +0 -1
- package/dist/utils/chunkCache.js +0 -161
- package/dist/utils/chunkCache.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ask-gemini.tool.d.ts","sourceRoot":"","sources":["../../src/tools/ask-gemini.tool.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"ask-gemini.tool.d.ts","sourceRoot":"","sources":["../../src/tools/ask-gemini.tool.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAsB5C,eAAO,MAAM,aAAa,EAAE,WAyE3B,CAAC"}
|
|
@@ -12,8 +12,6 @@ const askGeminiArgsSchema = z.object({
|
|
|
12
12
|
changeMode: z.boolean().default(false).describe("Enable structured change mode - formats prompts to prevent tool errors and returns structured edit suggestions that Claude can apply directly"),
|
|
13
13
|
includeHistory: z.boolean().default(true).describe("Include conversation history in context (only applies when session is provided). Default: true"),
|
|
14
14
|
allowedTools: z.array(z.string()).optional().describe("Tools that Gemini can auto-approve without confirmation (e.g., ['run_shell_command'] for git commands). Use sparingly for security."),
|
|
15
|
-
chunkIndex: z.union([z.number(), z.string()]).optional().describe("Which chunk to return (1-based)"),
|
|
16
|
-
chunkCacheKey: z.string().optional().describe("Optional cache key for continuation"),
|
|
17
15
|
cwd: z.string().optional().describe("Working directory for Gemini CLI execution. Use this to match your IDE workspace directory if you get 'Directory mismatch' errors."),
|
|
18
16
|
});
|
|
19
17
|
export const askGeminiTool = {
|
|
@@ -25,14 +23,10 @@ export const askGeminiTool = {
|
|
|
25
23
|
},
|
|
26
24
|
category: 'gemini',
|
|
27
25
|
execute: async (args, onProgress) => {
|
|
28
|
-
const { prompt, session, model, sandbox, changeMode, includeHistory, allowedTools,
|
|
26
|
+
const { prompt, session, model, sandbox, changeMode, includeHistory, allowedTools, cwd } = args;
|
|
29
27
|
if (!prompt?.trim()) {
|
|
30
28
|
throw new Error(ERROR_MESSAGES.NO_PROMPT_PROVIDED);
|
|
31
29
|
}
|
|
32
|
-
// Handle chunking (existing logic)
|
|
33
|
-
if (changeMode && chunkIndex && chunkCacheKey) {
|
|
34
|
-
return processChangeModeOutput('', chunkIndex, chunkCacheKey, prompt);
|
|
35
|
-
}
|
|
36
30
|
// Session handling
|
|
37
31
|
let sessionData = null;
|
|
38
32
|
let enhancedPrompt = prompt;
|
|
@@ -68,7 +62,7 @@ export const askGeminiTool = {
|
|
|
68
62
|
}
|
|
69
63
|
}
|
|
70
64
|
if (changeMode) {
|
|
71
|
-
return processChangeModeOutput(result
|
|
65
|
+
return processChangeModeOutput(result);
|
|
72
66
|
}
|
|
73
67
|
return `${STATUS_MESSAGES.GEMINI_RESPONSE}\n${result}`;
|
|
74
68
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ask-gemini.tool.js","sourceRoot":"","sources":["../../src/tools/ask-gemini.tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AACvF,OAAO,EACL,cAAc,EACd,eAAe,EACf,MAAM,EACP,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AAC9E,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IACnC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,yHAAyH,CAAC;IAC7J,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oHAAoH,CAAC;IAC7J,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wFAAwF,CAAC;IAC/H,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,yIAAyI,CAAC;IACvL,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,+IAA+I,CAAC;IAChM,cAAc,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,gGAAgG,CAAC;IACpJ,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qIAAqI,CAAC;IAC5L,
|
|
1
|
+
{"version":3,"file":"ask-gemini.tool.js","sourceRoot":"","sources":["../../src/tools/ask-gemini.tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAcA,cAAc,eAAe,CAAC"}
|
package/dist/tools/index.js
CHANGED
|
@@ -2,9 +2,8 @@
|
|
|
2
2
|
import { toolRegistry } from './registry.js';
|
|
3
3
|
import { askGeminiTool } from './ask-gemini.tool.js';
|
|
4
4
|
import { brainstormTool } from './brainstorm.tool.js';
|
|
5
|
-
import { fetchChunkTool } from './fetch-chunk.tool.js';
|
|
6
5
|
import { timeoutTestTool } from './timeout-test.tool.js';
|
|
7
6
|
import { reviewCodeTool } from './review-code.tool.js';
|
|
8
|
-
toolRegistry.push(askGeminiTool, brainstormTool,
|
|
7
|
+
toolRegistry.push(askGeminiTool, brainstormTool, timeoutTestTool, reviewCodeTool);
|
|
9
8
|
export * from './registry.js';
|
|
10
9
|
//# sourceMappingURL=index.js.map
|
package/dist/tools/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,4CAA4C;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,4CAA4C;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,YAAY,CAAC,IAAI,CACf,aAAa,EACb,cAAc,EACd,eAAe,EACf,cAAc,CACf,CAAC;AAEF,cAAc,eAAe,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"review-code.tool.d.ts","sourceRoot":"","sources":["../../src/tools/review-code.tool.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AA4E5C,eAAO,MAAM,cAAc,EAAE,
|
|
1
|
+
{"version":3,"file":"review-code.tool.d.ts","sourceRoot":"","sources":["../../src/tools/review-code.tool.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AA4E5C,eAAO,MAAM,cAAc,EAAE,WAuK5B,CAAC"}
|
|
@@ -65,7 +65,11 @@ export const reviewCodeTool = {
|
|
|
65
65
|
onProgress?.('🔍 Detecting git state and session...');
|
|
66
66
|
const currentGitState = await getCurrentGitState();
|
|
67
67
|
const detectedSessionId = generateSessionId(currentGitState);
|
|
68
|
-
|
|
68
|
+
// If user provides a session ID, incorporate git state to prevent cross-task context bleeding
|
|
69
|
+
// e.g., "iterative-review" becomes "iterative-review-main-abc12345"
|
|
70
|
+
const targetSessionId = sessionId
|
|
71
|
+
? `${sessionId}-${currentGitState.branch.replace(/[^a-zA-Z0-9-_]/g, '-')}-${currentGitState.commitHash.slice(0, 8)}`
|
|
72
|
+
: detectedSessionId;
|
|
69
73
|
Logger.debug(`Current git state: ${currentGitState.branch} @ ${currentGitState.commitHash.slice(0, 8)}`);
|
|
70
74
|
Logger.debug(`Target session ID: ${targetSessionId}`);
|
|
71
75
|
// Step 2: Load or create session
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"review-code.tool.js","sourceRoot":"","sources":["../../src/tools/review-code.tool.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"review-code.tool.js","sourceRoot":"","sources":["../../src/tools/review-code.tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,4 @@
|
|
|
1
1
|
import { ChangeModeEdit } from './changeModeParser.js';
|
|
2
|
-
export declare function formatChangeModeResponse(edits: ChangeModeEdit[]
|
|
3
|
-
|
|
4
|
-
total: number;
|
|
5
|
-
cacheKey?: string;
|
|
6
|
-
}): string;
|
|
7
|
-
export declare function summarizeChangeModeEdits(edits: ChangeModeEdit[], isPartialView?: boolean): string;
|
|
2
|
+
export declare function formatChangeModeResponse(edits: ChangeModeEdit[]): string;
|
|
3
|
+
export declare function summarizeChangeModeEdits(edits: ChangeModeEdit[]): string;
|
|
8
4
|
//# sourceMappingURL=changeModeTranslator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"changeModeTranslator.d.ts","sourceRoot":"","sources":["../../src/utils/changeModeTranslator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"changeModeTranslator.d.ts","sourceRoot":"","sources":["../../src/utils/changeModeTranslator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,cAAc,EAAE,GAAG,MAAM,CA6BxE;AAGD,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,cAAc,EAAE,GAAG,MAAM,CAcxE"}
|
|
@@ -1,15 +1,5 @@
|
|
|
1
|
-
export function formatChangeModeResponse(edits
|
|
2
|
-
const header =
|
|
3
|
-
? `[CHANGEMODE OUTPUT - Chunk ${chunkInfo.current} of ${chunkInfo.total}]
|
|
4
|
-
|
|
5
|
-
Gemini has analyzed your codebase and generated edits across ${chunkInfo.total} chunks.
|
|
6
|
-
This chunk contains ${edits.length} complete edit${edits.length === 1 ? '' : 's'} that can be applied independently.
|
|
7
|
-
|
|
8
|
-
Each chunk contains self-contained edits grouped by file. You can safely apply these edits
|
|
9
|
-
before fetching the next chunk.
|
|
10
|
-
|
|
11
|
-
`
|
|
12
|
-
: `[CHANGEMODE OUTPUT - Gemini has analyzed the files and provided these edits]
|
|
1
|
+
export function formatChangeModeResponse(edits) {
|
|
2
|
+
const header = `[CHANGEMODE OUTPUT - Gemini has analyzed the files and provided these edits]
|
|
13
3
|
|
|
14
4
|
I have prepared ${edits.length} modification${edits.length === 1 ? '' : 's'} for your codebase.
|
|
15
5
|
|
|
@@ -30,39 +20,21 @@ ${edit.newCode}
|
|
|
30
20
|
\`\`\`
|
|
31
21
|
`;
|
|
32
22
|
}).join('\n');
|
|
33
|
-
|
|
23
|
+
const footer = `
|
|
34
24
|
---
|
|
35
25
|
Apply these edits in order. Each edit uses exact string matching, so the old_str must match exactly what appears between the code blocks.`;
|
|
36
|
-
if (chunkInfo && chunkInfo.current < chunkInfo.total && chunkInfo.cacheKey) {
|
|
37
|
-
footer += `
|
|
38
|
-
|
|
39
|
-
---
|
|
40
|
-
**Next Step**: After applying the edits above, retrieve the next chunk (${chunkInfo.current + 1} of ${chunkInfo.total}) using:
|
|
41
|
-
|
|
42
|
-
\`\`\`
|
|
43
|
-
fetch-chunk cacheKey="${chunkInfo.cacheKey}" chunkIndex=${chunkInfo.current + 1}
|
|
44
|
-
\`\`\`
|
|
45
|
-
|
|
46
|
-
There ${chunkInfo.total - chunkInfo.current === 1 ? 'is' : 'are'} ${chunkInfo.total - chunkInfo.current} more chunk${chunkInfo.total - chunkInfo.current === 1 ? '' : 's'} containing additional edits.
|
|
47
|
-
|
|
48
|
-
**CONTINUE**: You are working on a multi-chunk changeMode response. After applying these edits, fetch the next chunk to continue with the remaining modifications.`;
|
|
49
|
-
}
|
|
50
26
|
return header + instructions + footer;
|
|
51
27
|
}
|
|
52
|
-
export function summarizeChangeModeEdits(edits
|
|
28
|
+
export function summarizeChangeModeEdits(edits) {
|
|
53
29
|
const fileGroups = new Map();
|
|
54
|
-
// Count edits per file
|
|
55
30
|
for (const edit of edits) {
|
|
56
31
|
fileGroups.set(edit.filename, (fileGroups.get(edit.filename) || 0) + 1);
|
|
57
32
|
}
|
|
58
33
|
const summary = Array.from(fileGroups.entries())
|
|
59
34
|
.map(([file, count]) => `- ${file}: ${count} edit${count === 1 ? '' : 's'}`)
|
|
60
35
|
.join('\n');
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
: `ChangeMode Summary:`;
|
|
64
|
-
return `${title}
|
|
65
|
-
Total edits: ${edits.length}${isPartialView ? ' (across all chunks)' : ''}
|
|
36
|
+
return `ChangeMode Summary:
|
|
37
|
+
Total edits: ${edits.length}
|
|
66
38
|
Files affected: ${fileGroups.size}
|
|
67
39
|
|
|
68
40
|
${summary}`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"changeModeTranslator.js","sourceRoot":"","sources":["../../src/utils/changeModeTranslator.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"changeModeTranslator.js","sourceRoot":"","sources":["../../src/utils/changeModeTranslator.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,wBAAwB,CAAC,KAAuB;IAC9D,MAAM,MAAM,GAAG;;kBAEC,KAAK,CAAC,MAAM,gBAAgB,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG;;;;CAI1E,CAAC;IAEA,MAAM,YAAY,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QAC7C,OAAO,YAAY,KAAK,GAAG,CAAC,KAAK,IAAI,CAAC,QAAQ;;;;EAIhD,IAAI,CAAC,OAAO;;;;;EAKZ,IAAI,CAAC,OAAO;;CAEb,CAAC;IACA,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,MAAM,MAAM,GAAG;;0IAEyH,CAAC;IAEzI,OAAO,MAAM,GAAG,YAAY,GAAG,MAAM,CAAC;AACxC,CAAC;AAGD,MAAM,UAAU,wBAAwB,CAAC,KAAuB;IAC9D,MAAM,UAAU,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC7C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1E,CAAC;IACD,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;SAC7C,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,IAAI,KAAK,KAAK,QAAQ,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;SAC3E,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,OAAO;eACM,KAAK,CAAC,MAAM;kBACT,UAAU,CAAC,IAAI;;EAE/B,OAAO,EAAE,CAAC;AACZ,CAAC"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export declare function executeGeminiCLI(prompt: string, model?: string, sandbox?: boolean, changeMode?: boolean, onProgress?: (newOutput: string) => void, allowedTools?: string[], cwd?: string): Promise<string>;
|
|
2
|
-
export declare function processChangeModeOutput(rawResult: string
|
|
2
|
+
export declare function processChangeModeOutput(rawResult: string): string;
|
|
3
3
|
//# sourceMappingURL=geminiExecutor.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"geminiExecutor.d.ts","sourceRoot":"","sources":["../../src/utils/geminiExecutor.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"geminiExecutor.d.ts","sourceRoot":"","sources":["../../src/utils/geminiExecutor.ts"],"names":[],"mappings":"AAYA,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,MAAM,EACd,KAAK,CAAC,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,OAAO,EACjB,UAAU,CAAC,EAAE,OAAO,EACpB,UAAU,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,EACxC,YAAY,CAAC,EAAE,MAAM,EAAE,EACvB,GAAG,CAAC,EAAE,MAAM,GACX,OAAO,CAAC,MAAM,CAAC,CA8HjB;AAED,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAwBjE"}
|
|
@@ -3,8 +3,6 @@ import { Logger } from './logger.js';
|
|
|
3
3
|
import { ERROR_MESSAGES, STATUS_MESSAGES, MODELS, CLI } from '../constants.js';
|
|
4
4
|
import { parseChangeModeOutput, validateChangeModeEdits } from './changeModeParser.js';
|
|
5
5
|
import { formatChangeModeResponse, summarizeChangeModeEdits } from './changeModeTranslator.js';
|
|
6
|
-
import { chunkChangeModeEdits } from './changeModeChunker.js';
|
|
7
|
-
import { cacheChunks, getChunks } from './chunkCache.js';
|
|
8
6
|
export async function executeGeminiCLI(prompt, model, sandbox, changeMode, onProgress, allowedTools, cwd) {
|
|
9
7
|
let prompt_processed = prompt;
|
|
10
8
|
if (changeMode) {
|
|
@@ -129,50 +127,24 @@ ${prompt_processed}
|
|
|
129
127
|
}
|
|
130
128
|
}
|
|
131
129
|
}
|
|
132
|
-
export
|
|
133
|
-
// Check for cached chunks first
|
|
134
|
-
if (chunkIndex && chunkCacheKey) {
|
|
135
|
-
const cachedChunks = getChunks(chunkCacheKey);
|
|
136
|
-
if (cachedChunks && chunkIndex > 0 && chunkIndex <= cachedChunks.length) {
|
|
137
|
-
Logger.debug(`Using cached chunk ${chunkIndex} of ${cachedChunks.length}`);
|
|
138
|
-
const chunk = cachedChunks[chunkIndex - 1];
|
|
139
|
-
let result = formatChangeModeResponse(chunk.edits, { current: chunkIndex, total: cachedChunks.length, cacheKey: chunkCacheKey });
|
|
140
|
-
// Add summary for first chunk only
|
|
141
|
-
if (chunkIndex === 1 && chunk.edits.length > 5) {
|
|
142
|
-
const allEdits = cachedChunks.flatMap(c => c.edits);
|
|
143
|
-
result = summarizeChangeModeEdits(allEdits) + '\n\n' + result;
|
|
144
|
-
}
|
|
145
|
-
return result;
|
|
146
|
-
}
|
|
147
|
-
Logger.debug(`Cache miss or invalid chunk index, processing new result`);
|
|
148
|
-
}
|
|
130
|
+
export function processChangeModeOutput(rawResult) {
|
|
149
131
|
// Parse OLD/NEW format
|
|
150
132
|
const edits = parseChangeModeOutput(rawResult);
|
|
151
133
|
if (edits.length === 0) {
|
|
152
|
-
return `No edits found in Gemini's response. Please ensure Gemini uses the OLD/NEW format
|
|
134
|
+
return `No edits found in Gemini's response. Please ensure Gemini uses the OLD/NEW format.\n\n${rawResult}`;
|
|
153
135
|
}
|
|
154
136
|
// Validate edits
|
|
155
137
|
const validation = validateChangeModeEdits(edits);
|
|
156
138
|
if (!validation.valid) {
|
|
157
139
|
return `Edit validation failed:\n${validation.errors.join('\n')}`;
|
|
158
140
|
}
|
|
159
|
-
const chunks = chunkChangeModeEdits(edits);
|
|
160
|
-
// Cache if multiple chunks and we have the original prompt
|
|
161
|
-
let cacheKey;
|
|
162
|
-
if (chunks.length > 1 && prompt) {
|
|
163
|
-
cacheKey = cacheChunks(prompt, chunks);
|
|
164
|
-
Logger.debug(`Cached ${chunks.length} chunks with key: ${cacheKey}`);
|
|
165
|
-
}
|
|
166
|
-
// Return requested chunk or first chunk
|
|
167
|
-
const returnChunkIndex = (chunkIndex && chunkIndex > 0 && chunkIndex <= chunks.length) ? chunkIndex : 1;
|
|
168
|
-
const returnChunk = chunks[returnChunkIndex - 1];
|
|
169
141
|
// Format the response
|
|
170
|
-
let result = formatChangeModeResponse(
|
|
171
|
-
// Add summary if
|
|
172
|
-
if (
|
|
173
|
-
result = summarizeChangeModeEdits(edits
|
|
142
|
+
let result = formatChangeModeResponse(edits);
|
|
143
|
+
// Add summary if many edits
|
|
144
|
+
if (edits.length > 5) {
|
|
145
|
+
result = summarizeChangeModeEdits(edits) + '\n\n' + result;
|
|
174
146
|
}
|
|
175
|
-
Logger.debug(`ChangeMode: Parsed ${edits.length} edits
|
|
147
|
+
Logger.debug(`ChangeMode: Parsed ${edits.length} edits`);
|
|
176
148
|
return result;
|
|
177
149
|
}
|
|
178
150
|
// Placeholder
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"geminiExecutor.js","sourceRoot":"","sources":["../../src/utils/geminiExecutor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EACL,cAAc,EACd,eAAe,EACf,MAAM,EACN,GAAG,EACJ,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AACvF,OAAO,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"geminiExecutor.js","sourceRoot":"","sources":["../../src/utils/geminiExecutor.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fetch-chunk.tool.d.ts","sourceRoot":"","sources":["../../src/tools/fetch-chunk.tool.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAU5C,eAAO,MAAM,cAAc,EAAE,WAoE5B,CAAC"}
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
import { z } from 'zod';
|
|
2
|
-
import { getChunks } from '../utils/chunkCache.js';
|
|
3
|
-
import { formatChangeModeResponse, summarizeChangeModeEdits } from '../utils/changeModeTranslator.js';
|
|
4
|
-
import { Logger } from '../utils/logger.js';
|
|
5
|
-
const inputSchema = z.object({
|
|
6
|
-
cacheKey: z.string().describe("The cache key provided in the initial changeMode response"),
|
|
7
|
-
chunkIndex: z.number().min(1).describe("Which chunk to retrieve (1-based index)")
|
|
8
|
-
});
|
|
9
|
-
export const fetchChunkTool = {
|
|
10
|
-
name: 'fetch-chunk',
|
|
11
|
-
description: 'Retrieves cached chunks from a changeMode response. Use this to get subsequent chunks after receiving a partial changeMode response.',
|
|
12
|
-
zodSchema: inputSchema,
|
|
13
|
-
prompt: {
|
|
14
|
-
description: 'Fetch the next chunk of a response',
|
|
15
|
-
arguments: [
|
|
16
|
-
{
|
|
17
|
-
name: 'prompt',
|
|
18
|
-
description: 'fetch-chunk cacheKey=<key> chunkIndex=<number>',
|
|
19
|
-
required: true
|
|
20
|
-
}
|
|
21
|
-
]
|
|
22
|
-
},
|
|
23
|
-
category: 'utility',
|
|
24
|
-
execute: async (args, onProgress) => {
|
|
25
|
-
const { cacheKey, chunkIndex } = args;
|
|
26
|
-
Logger.toolInvocation('fetch-chunk', args);
|
|
27
|
-
Logger.debug(`Fetching chunk ${chunkIndex} with cache key: ${cacheKey}`);
|
|
28
|
-
// Retrieve cached chunks
|
|
29
|
-
const chunks = getChunks(cacheKey);
|
|
30
|
-
if (!chunks) {
|
|
31
|
-
return `❌ Cache miss: No chunks found for cache key "${cacheKey}".
|
|
32
|
-
|
|
33
|
-
Possible reasons:
|
|
34
|
-
1. The cache key is incorrect, Have you ran ask-gemini with changeMode enabled?
|
|
35
|
-
2. The cache has expired (10 minute TTL)
|
|
36
|
-
3. The MCP server was restarted and the file-based cache was cleared
|
|
37
|
-
|
|
38
|
-
Please re-run the original changeMode request to regenerate the chunks.`;
|
|
39
|
-
}
|
|
40
|
-
// Validate chunk index
|
|
41
|
-
if (chunkIndex < 1 || chunkIndex > chunks.length) {
|
|
42
|
-
return `❌ Invalid chunk index: ${chunkIndex}
|
|
43
|
-
|
|
44
|
-
Available chunks: 1 to ${chunks.length}
|
|
45
|
-
You requested: ${chunkIndex}
|
|
46
|
-
|
|
47
|
-
Please use a valid chunk index.`;
|
|
48
|
-
}
|
|
49
|
-
// Get the requested chunk
|
|
50
|
-
const chunk = chunks[chunkIndex - 1];
|
|
51
|
-
// Format the response
|
|
52
|
-
let result = formatChangeModeResponse(chunk.edits, { current: chunkIndex, total: chunks.length, cacheKey });
|
|
53
|
-
// Add summary for first chunk
|
|
54
|
-
if (chunkIndex === 1 && chunks.length > 1) {
|
|
55
|
-
const allEdits = chunks.flatMap(c => c.edits);
|
|
56
|
-
result = summarizeChangeModeEdits(allEdits, true) + '\n\n' + result;
|
|
57
|
-
}
|
|
58
|
-
Logger.debug(`Returning chunk ${chunkIndex} of ${chunks.length} with ${chunk.edits.length} edits`);
|
|
59
|
-
return result;
|
|
60
|
-
}
|
|
61
|
-
};
|
|
62
|
-
//# sourceMappingURL=fetch-chunk.tool.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fetch-chunk.tool.js","sourceRoot":"","sources":["../../src/tools/fetch-chunk.tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AACtG,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,2DAA2D,CAAC;IAC1F,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,yCAAyC,CAAC;CAClF,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,cAAc,GAAgB;IACzC,IAAI,EAAE,aAAa;IACnB,WAAW,EAAE,sIAAsI;IAEnJ,SAAS,EAAE,WAAW;IAEtB,MAAM,EAAE;QACN,WAAW,EAAE,oCAAoC;QACjD,SAAS,EAAE;YACT;gBACE,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,gDAAgD;gBAC7D,QAAQ,EAAE,IAAI;aACf;SACF;KACF;IAED,QAAQ,EAAE,SAAS;IAEnB,OAAO,EAAE,KAAK,EAAE,IAAS,EAAE,UAAwC,EAAmB,EAAE;QACtF,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC;QAEtC,MAAM,CAAC,cAAc,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;QAC3C,MAAM,CAAC,KAAK,CAAC,kBAAkB,UAAU,oBAAoB,QAAQ,EAAE,CAAC,CAAC;QAEzE,yBAAyB;QACzB,MAAM,MAAM,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;QAEnC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,gDAAgD,QAAQ;;;;;;;wEAOG,CAAC;QACrE,CAAC;QAED,uBAAuB;QACvB,IAAI,UAAU,GAAG,CAAC,IAAI,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;YACjD,OAAO,0BAA0B,UAAU;;yBAExB,MAAM,CAAC,MAAM;iBACrB,UAAU;;gCAEK,CAAC;QAC7B,CAAC;QAED,0BAA0B;QAC1B,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;QAErC,sBAAsB;QACtB,IAAI,MAAM,GAAG,wBAAwB,CACnC,KAAK,CAAC,KAAK,EACX,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,CACxD,CAAC;QAEF,8BAA8B;QAC9B,IAAI,UAAU,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1C,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YAC9C,MAAM,GAAG,wBAAwB,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,MAAM,GAAG,MAAM,CAAC;QACtE,CAAC;QAED,MAAM,CAAC,KAAK,CAAC,mBAAmB,UAAU,OAAO,MAAM,CAAC,MAAM,SAAS,KAAK,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,CAAC;QAEnG,OAAO,MAAM,CAAC;IAChB,CAAC;CACF,CAAC"}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { ChangeModeEdit } from './changeModeParser.js';
|
|
2
|
-
export interface EditChunk {
|
|
3
|
-
edits: ChangeModeEdit[];
|
|
4
|
-
chunkIndex: number;
|
|
5
|
-
totalChunks: number;
|
|
6
|
-
hasMore: boolean;
|
|
7
|
-
estimatedChars: number;
|
|
8
|
-
}
|
|
9
|
-
export declare function chunkChangeModeEdits(edits: ChangeModeEdit[], maxCharsPerChunk?: number): EditChunk[];
|
|
10
|
-
export declare function summarizeChunking(chunks: EditChunk[]): string;
|
|
11
|
-
//# sourceMappingURL=changeModeChunker.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"changeModeChunker.d.ts","sourceRoot":"","sources":["../../src/utils/changeModeChunker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;CACxB;AAgBD,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,cAAc,EAAE,EACvB,gBAAgB,GAAE,MAAc,GAC/B,SAAS,EAAE,CAyDb;AAgBD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAc7D"}
|
|
@@ -1,89 +0,0 @@
|
|
|
1
|
-
function estimateEditSize(edit) {
|
|
2
|
-
const jsonOverhead = 250;
|
|
3
|
-
const contentSize = edit.filename.length * 2 + edit.oldCode.length + edit.newCode.length;
|
|
4
|
-
return jsonOverhead + contentSize;
|
|
5
|
-
}
|
|
6
|
-
function groupEditsByFile(edits) {
|
|
7
|
-
const groups = new Map();
|
|
8
|
-
for (const edit of edits) {
|
|
9
|
-
const fileEdits = groups.get(edit.filename) || [];
|
|
10
|
-
fileEdits.push(edit);
|
|
11
|
-
groups.set(edit.filename, fileEdits);
|
|
12
|
-
}
|
|
13
|
-
return groups;
|
|
14
|
-
}
|
|
15
|
-
export function chunkChangeModeEdits(edits, maxCharsPerChunk = 20000) {
|
|
16
|
-
if (edits.length === 0) {
|
|
17
|
-
return [{
|
|
18
|
-
edits: [],
|
|
19
|
-
chunkIndex: 1,
|
|
20
|
-
totalChunks: 1,
|
|
21
|
-
hasMore: false,
|
|
22
|
-
estimatedChars: 0
|
|
23
|
-
}];
|
|
24
|
-
}
|
|
25
|
-
const chunks = [];
|
|
26
|
-
const fileGroups = groupEditsByFile(edits);
|
|
27
|
-
let currentChunk = [];
|
|
28
|
-
let currentSize = 0;
|
|
29
|
-
for (const [filename, fileEdits] of fileGroups) {
|
|
30
|
-
const fileSize = fileEdits.reduce((sum, edit) => sum + estimateEditSize(edit), 0);
|
|
31
|
-
if (fileSize > maxCharsPerChunk) {
|
|
32
|
-
if (currentChunk.length > 0) {
|
|
33
|
-
chunks.push(createChunk(currentChunk, chunks.length + 1, 0, currentSize));
|
|
34
|
-
currentChunk = [];
|
|
35
|
-
currentSize = 0;
|
|
36
|
-
}
|
|
37
|
-
for (const edit of fileEdits) {
|
|
38
|
-
const editSize = estimateEditSize(edit);
|
|
39
|
-
if (currentSize + editSize > maxCharsPerChunk && currentChunk.length > 0) {
|
|
40
|
-
chunks.push(createChunk(currentChunk, chunks.length + 1, 0, currentSize));
|
|
41
|
-
currentChunk = [];
|
|
42
|
-
currentSize = 0;
|
|
43
|
-
}
|
|
44
|
-
currentChunk.push(edit);
|
|
45
|
-
currentSize += editSize;
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
else {
|
|
49
|
-
if (currentSize + fileSize > maxCharsPerChunk && currentChunk.length > 0) {
|
|
50
|
-
chunks.push(createChunk(currentChunk, chunks.length + 1, 0, currentSize));
|
|
51
|
-
currentChunk = [];
|
|
52
|
-
currentSize = 0;
|
|
53
|
-
}
|
|
54
|
-
currentChunk.push(...fileEdits);
|
|
55
|
-
currentSize += fileSize;
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
if (currentChunk.length > 0) {
|
|
59
|
-
chunks.push(createChunk(currentChunk, chunks.length + 1, 0, currentSize));
|
|
60
|
-
}
|
|
61
|
-
const totalChunks = chunks.length;
|
|
62
|
-
return chunks.map((chunk, index) => ({
|
|
63
|
-
...chunk,
|
|
64
|
-
totalChunks,
|
|
65
|
-
hasMore: index < totalChunks - 1
|
|
66
|
-
}));
|
|
67
|
-
}
|
|
68
|
-
function createChunk(edits, chunkIndex, totalChunks, estimatedChars) {
|
|
69
|
-
return {
|
|
70
|
-
edits,
|
|
71
|
-
chunkIndex,
|
|
72
|
-
totalChunks,
|
|
73
|
-
hasMore: false,
|
|
74
|
-
estimatedChars
|
|
75
|
-
};
|
|
76
|
-
}
|
|
77
|
-
export function summarizeChunking(chunks) {
|
|
78
|
-
const totalEdits = chunks.reduce((sum, chunk) => sum + chunk.edits.length, 0);
|
|
79
|
-
const totalChars = chunks.reduce((sum, chunk) => sum + chunk.estimatedChars, 0);
|
|
80
|
-
return `Chunking Summary:
|
|
81
|
-
# edits: ${totalEdits}
|
|
82
|
-
# chunks: ${chunks.length}
|
|
83
|
-
est chars: ${totalChars.toLocaleString()}
|
|
84
|
-
mean size: ${Math.round(totalChars / chunks.length).toLocaleString()} chars
|
|
85
|
-
|
|
86
|
-
Chunks:
|
|
87
|
-
${chunks.map(chunk => ` Chunk ${chunk.chunkIndex}: ${chunk.edits.length} edits, ~${chunk.estimatedChars.toLocaleString()} chars`).join('\n')}`;
|
|
88
|
-
}
|
|
89
|
-
//# sourceMappingURL=changeModeChunker.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"changeModeChunker.js","sourceRoot":"","sources":["../../src/utils/changeModeChunker.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { EditChunk } from './changeModeChunker.js';
|
|
2
|
-
/**
|
|
3
|
-
* Caches chunks from a changeMode response
|
|
4
|
-
* @param prompt The original prompt (used for hash generation)
|
|
5
|
-
* @param chunks The parsed and chunked edits
|
|
6
|
-
* @returns A short cache key for retrieval
|
|
7
|
-
*/
|
|
8
|
-
export declare function cacheChunks(prompt: string, chunks: EditChunk[]): string;
|
|
9
|
-
/**
|
|
10
|
-
* Retrieves cached chunks if they exist and haven't expired
|
|
11
|
-
* @param cacheKey The cache key returned from cacheChunks
|
|
12
|
-
* @returns The cached chunks or null if expired/not found
|
|
13
|
-
*/
|
|
14
|
-
export declare function getChunks(cacheKey: string): EditChunk[] | null;
|
|
15
|
-
export declare function getCacheStats(): {
|
|
16
|
-
size: number;
|
|
17
|
-
ttl: number;
|
|
18
|
-
maxSize: number;
|
|
19
|
-
cacheDir: string;
|
|
20
|
-
};
|
|
21
|
-
export declare function clearCache(): void;
|
|
22
|
-
//# sourceMappingURL=chunkCache.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"chunkCache.d.ts","sourceRoot":"","sources":["../../src/utils/chunkCache.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAsBnD;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAwBvE;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAAE,GAAG,IAAI,CA0B9D;AA+DD,wBAAgB,aAAa,IAAI;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAehG;AAED,wBAAgB,UAAU,IAAI,IAAI,CAejC"}
|
package/dist/utils/chunkCache.js
DELETED
|
@@ -1,161 +0,0 @@
|
|
|
1
|
-
import { createHash } from 'crypto';
|
|
2
|
-
import * as fs from 'fs';
|
|
3
|
-
import * as path from 'path';
|
|
4
|
-
import * as os from 'os';
|
|
5
|
-
import { Logger } from './logger.js';
|
|
6
|
-
const CACHE_DIR = path.join(os.tmpdir(), 'gemini-mcp-chunks');
|
|
7
|
-
const CACHE_TTL = 10 * 60 * 1000;
|
|
8
|
-
const MAX_CACHE_FILES = 50;
|
|
9
|
-
function ensureCacheDir() {
|
|
10
|
-
if (!fs.existsSync(CACHE_DIR)) {
|
|
11
|
-
fs.mkdirSync(CACHE_DIR, { recursive: true });
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
/**
|
|
15
|
-
* Caches chunks from a changeMode response
|
|
16
|
-
* @param prompt The original prompt (used for hash generation)
|
|
17
|
-
* @param chunks The parsed and chunked edits
|
|
18
|
-
* @returns A short cache key for retrieval
|
|
19
|
-
*/
|
|
20
|
-
export function cacheChunks(prompt, chunks) {
|
|
21
|
-
ensureCacheDir();
|
|
22
|
-
cleanExpiredFiles(); // Cleanup on each write
|
|
23
|
-
// Generate deterministic cache key from prompt
|
|
24
|
-
const promptHash = createHash('sha256').update(prompt).digest('hex');
|
|
25
|
-
const cacheKey = promptHash.slice(0, 8);
|
|
26
|
-
const filePath = path.join(CACHE_DIR, `${cacheKey}.json`);
|
|
27
|
-
// Store with metadata
|
|
28
|
-
const cacheData = {
|
|
29
|
-
chunks,
|
|
30
|
-
timestamp: Date.now(),
|
|
31
|
-
promptHash
|
|
32
|
-
};
|
|
33
|
-
try {
|
|
34
|
-
fs.writeFileSync(filePath, JSON.stringify(cacheData));
|
|
35
|
-
Logger.debug(`Cached ${chunks.length} chunks to file: ${cacheKey}.json`);
|
|
36
|
-
}
|
|
37
|
-
catch (error) {
|
|
38
|
-
Logger.error(`Failed to cache chunks: ${error}`);
|
|
39
|
-
}
|
|
40
|
-
enforceFileLimits();
|
|
41
|
-
return cacheKey;
|
|
42
|
-
}
|
|
43
|
-
/**
|
|
44
|
-
* Retrieves cached chunks if they exist and haven't expired
|
|
45
|
-
* @param cacheKey The cache key returned from cacheChunks
|
|
46
|
-
* @returns The cached chunks or null if expired/not found
|
|
47
|
-
*/
|
|
48
|
-
export function getChunks(cacheKey) {
|
|
49
|
-
const filePath = path.join(CACHE_DIR, `${cacheKey}.json`);
|
|
50
|
-
try {
|
|
51
|
-
if (!fs.existsSync(filePath)) {
|
|
52
|
-
return null;
|
|
53
|
-
}
|
|
54
|
-
const fileContent = fs.readFileSync(filePath, 'utf-8');
|
|
55
|
-
const data = JSON.parse(fileContent);
|
|
56
|
-
if (Date.now() - data.timestamp > CACHE_TTL) {
|
|
57
|
-
fs.unlinkSync(filePath);
|
|
58
|
-
Logger.debug(`Cache expired for ${cacheKey}, deleted file`);
|
|
59
|
-
return null;
|
|
60
|
-
}
|
|
61
|
-
Logger.debug(`Cache hit for ${cacheKey}, returning ${data.chunks.length} chunks`);
|
|
62
|
-
return data.chunks;
|
|
63
|
-
}
|
|
64
|
-
catch (error) {
|
|
65
|
-
Logger.debug(`Cache read error for ${cacheKey}: ${error}`);
|
|
66
|
-
try {
|
|
67
|
-
fs.unlinkSync(filePath); // Clean up bad file
|
|
68
|
-
}
|
|
69
|
-
catch { }
|
|
70
|
-
return null;
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
function cleanExpiredFiles() {
|
|
74
|
-
try {
|
|
75
|
-
ensureCacheDir();
|
|
76
|
-
const files = fs.readdirSync(CACHE_DIR);
|
|
77
|
-
const now = Date.now();
|
|
78
|
-
let cleaned = 0;
|
|
79
|
-
for (const file of files) {
|
|
80
|
-
if (!file.endsWith('.json'))
|
|
81
|
-
continue;
|
|
82
|
-
const filePath = path.join(CACHE_DIR, file);
|
|
83
|
-
try {
|
|
84
|
-
const stats = fs.statSync(filePath);
|
|
85
|
-
if (now - stats.mtimeMs > CACHE_TTL) {
|
|
86
|
-
fs.unlinkSync(filePath);
|
|
87
|
-
cleaned++;
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
catch (error) {
|
|
91
|
-
// Individual file error - continue with others
|
|
92
|
-
Logger.debug(`Error checking file ${file}: ${error}`);
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
if (cleaned > 0) {
|
|
96
|
-
Logger.debug(`Cleaned ${cleaned} expired cache files`);
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
catch (error) {
|
|
100
|
-
// Non-critical, just log
|
|
101
|
-
Logger.debug(`Cache cleanup error: ${error}`);
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
// maximum file count limit (FIFO) --> LRU?
|
|
105
|
-
function enforceFileLimits() {
|
|
106
|
-
try {
|
|
107
|
-
const files = fs.readdirSync(CACHE_DIR)
|
|
108
|
-
.filter(f => f.endsWith('.json'))
|
|
109
|
-
.map(f => ({
|
|
110
|
-
name: f,
|
|
111
|
-
path: path.join(CACHE_DIR, f),
|
|
112
|
-
mtime: fs.statSync(path.join(CACHE_DIR, f)).mtimeMs
|
|
113
|
-
}))
|
|
114
|
-
.sort((a, b) => a.mtime - b.mtime); // Oldest first
|
|
115
|
-
// Remove oldest files if over limit
|
|
116
|
-
if (files.length > MAX_CACHE_FILES) {
|
|
117
|
-
const toRemove = files.slice(0, files.length - MAX_CACHE_FILES);
|
|
118
|
-
for (const file of toRemove) {
|
|
119
|
-
try {
|
|
120
|
-
fs.unlinkSync(file.path);
|
|
121
|
-
}
|
|
122
|
-
catch { }
|
|
123
|
-
}
|
|
124
|
-
Logger.debug(`Removed ${toRemove.length} old cache files to enforce limit`);
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
catch (error) {
|
|
128
|
-
Logger.debug(`Error enforcing file limits: ${error}`);
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
export function getCacheStats() {
|
|
132
|
-
ensureCacheDir();
|
|
133
|
-
let size = 0;
|
|
134
|
-
try {
|
|
135
|
-
const files = fs.readdirSync(CACHE_DIR);
|
|
136
|
-
size = files.filter(f => f.endsWith('.json')).length;
|
|
137
|
-
}
|
|
138
|
-
catch { }
|
|
139
|
-
return {
|
|
140
|
-
size,
|
|
141
|
-
ttl: CACHE_TTL,
|
|
142
|
-
maxSize: MAX_CACHE_FILES,
|
|
143
|
-
cacheDir: CACHE_DIR
|
|
144
|
-
};
|
|
145
|
-
}
|
|
146
|
-
export function clearCache() {
|
|
147
|
-
try {
|
|
148
|
-
ensureCacheDir();
|
|
149
|
-
const files = fs.readdirSync(CACHE_DIR);
|
|
150
|
-
for (const file of files) {
|
|
151
|
-
if (file.endsWith('.json')) {
|
|
152
|
-
fs.unlinkSync(path.join(CACHE_DIR, file));
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
Logger.debug('Cache emptied');
|
|
156
|
-
}
|
|
157
|
-
catch (error) {
|
|
158
|
-
Logger.error(`Failed to empty cache: ${error}`);
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
//# sourceMappingURL=chunkCache.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"chunkCache.js","sourceRoot":"","sources":["../../src/utils/chunkCache.ts"],"names":[],"mappings":"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"}
|