@yu_robotics/remote-cli 1.1.37 → 1.1.39
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/executor/GeminiExecutor.d.ts +49 -21
- package/dist/executor/GeminiExecutor.d.ts.map +1 -1
- package/dist/executor/GeminiExecutor.js +201 -123
- package/dist/executor/GeminiExecutor.js.map +1 -1
- package/dist/security/security-guard.d.ts.map +1 -1
- package/dist/security/security-guard.js +2 -1
- package/dist/security/security-guard.js.map +1 -1
- package/package.json +1 -1
|
@@ -12,53 +12,81 @@ export interface GeminiExecutorOptions {
|
|
|
12
12
|
/** Thread ID for session isolation */
|
|
13
13
|
threadId?: string;
|
|
14
14
|
}
|
|
15
|
-
/**
|
|
16
|
-
* IExecutor implementation for Gemini CLI via ACP (Agent Client Protocol).
|
|
17
|
-
*
|
|
18
|
-
* Each execute() call spawns a fresh Gemini CLI subprocess (vibe-kanban style).
|
|
19
|
-
* This ensures full isolation between turns — a broken session in one turn
|
|
20
|
-
* cannot affect subsequent turns.
|
|
21
|
-
*
|
|
22
|
-
* Conversation history is persisted as JSONL via SessionManager and replayed
|
|
23
|
-
* as context prefix on subsequent calls within the same conversation.
|
|
24
|
-
*/
|
|
25
15
|
export declare class GeminiExecutor implements IExecutor {
|
|
26
16
|
private directoryGuard;
|
|
27
17
|
private currentWorkingDirectory;
|
|
28
|
-
private sessionManager;
|
|
29
18
|
private readonly model;
|
|
30
19
|
private readonly autoApprove;
|
|
31
20
|
private readonly geminiCommand;
|
|
32
21
|
private readonly geminiVersion;
|
|
33
22
|
private readonly threadId?;
|
|
34
|
-
/**
|
|
35
|
-
private
|
|
23
|
+
/** Long-lived ACP client — null means not yet spawned or was destroyed. */
|
|
24
|
+
private persistentClient;
|
|
25
|
+
/** ACP session ID of the persistent session. */
|
|
26
|
+
private persistentSessionId;
|
|
27
|
+
/**
|
|
28
|
+
* Mutable options for the current execute() call.
|
|
29
|
+
* The persistent AcpClient callbacks close over this object so they always
|
|
30
|
+
* dispatch to whichever execute() invocation is currently in flight.
|
|
31
|
+
*/
|
|
32
|
+
private activeOptions;
|
|
36
33
|
/** Reference to the in-flight AcpClient for abort support. */
|
|
37
34
|
private inflightClient;
|
|
35
|
+
/** ACP session ID of the in-flight prompt, needed for cooperative sendCancel. */
|
|
36
|
+
private inflightSessionId;
|
|
37
|
+
/** Handle for the abort grace-period timer so it can be cancelled early. */
|
|
38
|
+
private abortTimer;
|
|
39
|
+
/**
|
|
40
|
+
* Command queue for sequential execution.
|
|
41
|
+
* Matching ClaudePersistentExecutor's approach to ensure thread-safety.
|
|
42
|
+
*/
|
|
43
|
+
private commandQueue;
|
|
44
|
+
private isProcessing;
|
|
38
45
|
constructor(directoryGuard: DirectoryGuard, options?: GeminiExecutorOptions);
|
|
39
46
|
execute(prompt: string, options: ExecuteOptions): Promise<ExecuteResult>;
|
|
47
|
+
/**
|
|
48
|
+
* Processes the command queue sequentially.
|
|
49
|
+
*/
|
|
50
|
+
private processQueue;
|
|
51
|
+
/**
|
|
52
|
+
* Actual execution logic for a single prompt.
|
|
53
|
+
*/
|
|
54
|
+
private executeQueued;
|
|
40
55
|
getCurrentWorkingDirectory(): string;
|
|
41
56
|
setWorkingDirectory(targetPath: string): Promise<void>;
|
|
42
57
|
resetContext(): void;
|
|
43
58
|
/**
|
|
44
|
-
* Compact conversation history by
|
|
45
|
-
* Gemini ACP has no built-in /compact
|
|
46
|
-
*
|
|
59
|
+
* Compact conversation history by resetting the persistent session.
|
|
60
|
+
* Gemini ACP has no built-in /compact, so we destroy the client entirely.
|
|
61
|
+
* The next execute() call will spawn a fresh process with no prior context.
|
|
47
62
|
*/
|
|
48
63
|
compactWhenFull(onStream?: (chunk: string) => void): Promise<ExecuteResult>;
|
|
49
64
|
abort(): Promise<boolean>;
|
|
50
65
|
destroy(): Promise<void>;
|
|
51
66
|
/**
|
|
52
|
-
* Delete
|
|
67
|
+
* Delete session data for a thread.
|
|
53
68
|
* Called by ThreadExecutorPool before removing this executor from the pool.
|
|
54
69
|
*/
|
|
55
|
-
deleteThreadData(
|
|
70
|
+
deleteThreadData(_threadId: string): Promise<void>;
|
|
56
71
|
getSessionId(): string | null;
|
|
57
72
|
/**
|
|
58
|
-
*
|
|
59
|
-
*
|
|
73
|
+
* Returns the existing persistent session if alive, or spawns a new one.
|
|
74
|
+
* The model parameter is only used when spawning a new session.
|
|
75
|
+
*/
|
|
76
|
+
private ensurePersistentSession;
|
|
77
|
+
/**
|
|
78
|
+
* Spawns a fresh Gemini CLI subprocess, initializes ACP, and creates a new session.
|
|
79
|
+
* The AcpClient callbacks close over `this.activeOptions` so they always dispatch
|
|
80
|
+
* to whichever execute() call is currently in flight.
|
|
81
|
+
*/
|
|
82
|
+
private spawnNewSession;
|
|
83
|
+
/**
|
|
84
|
+
* Sends a single prompt to an existing persistent ACP session.
|
|
85
|
+
* Sets activeOptions so the persistent callbacks dispatch to this call's handlers.
|
|
60
86
|
*/
|
|
61
|
-
private
|
|
87
|
+
private executeWithClient;
|
|
88
|
+
/** Destroys the persistent client and clears all related state. */
|
|
89
|
+
private destroyPersistentClient;
|
|
62
90
|
private buildGeminiArgs;
|
|
63
91
|
private buildFriendlyError;
|
|
64
92
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GeminiExecutor.d.ts","sourceRoot":"","sources":["../../src/executor/GeminiExecutor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"GeminiExecutor.d.ts","sourceRoot":"","sources":["../../src/executor/GeminiExecutor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAMvE,MAAM,WAAW,qBAAqB;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gEAAgE;IAChE,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,gDAAgD;IAChD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,qFAAqF;IACrF,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,sCAAsC;IACtC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AA2ED,qBAAa,cAAe,YAAW,SAAS;IAC9C,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,uBAAuB,CAAS;IAExC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAU;IACtC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAS;IAEnC,2EAA2E;IAC3E,OAAO,CAAC,gBAAgB,CAA0B;IAClD,gDAAgD;IAChD,OAAO,CAAC,mBAAmB,CAAuB;IAElD;;;;OAIG;IACH,OAAO,CAAC,aAAa,CAAqB;IAE1C,8DAA8D;IAC9D,OAAO,CAAC,cAAc,CAA0B;IAChD,iFAAiF;IACjF,OAAO,CAAC,iBAAiB,CAAuB;IAChD,4EAA4E;IAC5E,OAAO,CAAC,UAAU,CAA8C;IAEhE;;;OAGG;IACH,OAAO,CAAC,YAAY,CAKZ;IACR,OAAO,CAAC,YAAY,CAAS;gBAEjB,cAAc,EAAE,cAAc,EAAE,OAAO,GAAE,qBAA0B;IAYzE,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC;IAO9E;;OAEG;YACW,YAAY;IAoB1B;;OAEG;YACW,aAAa;IAqC3B,0BAA0B,IAAI,MAAM;IAI9B,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAgB5D,YAAY,IAAI,IAAI;IAIpB;;;;OAIG;IACG,eAAe,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC;IAa3E,KAAK,IAAI,OAAO,CAAC,OAAO,CAAC;IAqCzB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAY9B;;;OAGG;IACG,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIxD,YAAY,IAAI,MAAM,GAAG,IAAI;IAM7B;;;OAGG;YACW,uBAAuB;IAOrC;;;;OAIG;YACW,eAAe;IAoD7B;;;OAGG;YACW,iBAAiB;IAkD/B,mEAAmE;IACnE,OAAO,CAAC,uBAAuB;IAc/B,OAAO,CAAC,eAAe;IAYvB,OAAO,CAAC,kBAAkB;CAqB3B"}
|
|
@@ -2,9 +2,8 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.GeminiExecutor = void 0;
|
|
4
4
|
const AcpClient_1 = require("./acp/AcpClient");
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
const COMPACT_KEEP_TURNS = 10;
|
|
5
|
+
/** Grace period (ms) between cooperative ACP cancel and force SIGTERM/SIGKILL. */
|
|
6
|
+
const CANCEL_GRACE_MS = 3_000;
|
|
8
7
|
/**
|
|
9
8
|
* Maps a Gemini ACP tool call (kind + title) to a Claude-compatible
|
|
10
9
|
* { name, input } shape so the router's ToolFormatter renders it with
|
|
@@ -15,33 +14,22 @@ const COMPACT_KEEP_TURNS = 10;
|
|
|
15
14
|
function mapAcpToolCall(kind, title) {
|
|
16
15
|
switch (kind) {
|
|
17
16
|
case 'exec':
|
|
18
|
-
// Shell command — map to Bash so extractBashContext renders it
|
|
19
17
|
return { name: 'Bash', input: { command: title } };
|
|
20
18
|
case 'read':
|
|
21
|
-
// File read — map to Read so extractReadContext renders it
|
|
22
19
|
return { name: 'Read', input: { file_path: title } };
|
|
23
20
|
case 'write':
|
|
24
|
-
// File write/edit — map to Write
|
|
25
21
|
return { name: 'Write', input: { file_path: title } };
|
|
26
22
|
case 'list':
|
|
27
|
-
// Directory listing — map to Glob
|
|
28
23
|
return { name: 'Glob', input: { pattern: title } };
|
|
29
24
|
case 'service':
|
|
30
|
-
// MCP / service call
|
|
31
25
|
return { name: 'Service', input: { call: title } };
|
|
32
26
|
default:
|
|
33
|
-
// Unknown kind — show raw title under generic tool name
|
|
34
27
|
return { name: kind ?? 'Tool', input: { command: title } };
|
|
35
28
|
}
|
|
36
29
|
}
|
|
37
30
|
/**
|
|
38
31
|
* Gemini CLI stable model aliases used for quota fallback.
|
|
39
32
|
*
|
|
40
|
-
* These are Gemini CLI's own named aliases (not versioned model strings), so
|
|
41
|
-
* they remain valid across model releases. Gemini CLI's ACP mode does NOT
|
|
42
|
-
* implement automatic model fallback on quota exhaustion (unlike interactive
|
|
43
|
-
* mode), so we handle it here instead.
|
|
44
|
-
*
|
|
45
33
|
* Fallback order: user-configured model → flash → flash-lite
|
|
46
34
|
*/
|
|
47
35
|
const QUOTA_FALLBACK_ALIASES = ['flash', 'flash-lite'];
|
|
@@ -54,59 +42,80 @@ function isQuotaError(error) {
|
|
|
54
42
|
msg.includes('quota') ||
|
|
55
43
|
msg.includes('No capacity available'));
|
|
56
44
|
}
|
|
57
|
-
/**
|
|
58
|
-
* IExecutor implementation for Gemini CLI via ACP (Agent Client Protocol).
|
|
59
|
-
*
|
|
60
|
-
* Each execute() call spawns a fresh Gemini CLI subprocess (vibe-kanban style).
|
|
61
|
-
* This ensures full isolation between turns — a broken session in one turn
|
|
62
|
-
* cannot affect subsequent turns.
|
|
63
|
-
*
|
|
64
|
-
* Conversation history is persisted as JSONL via SessionManager and replayed
|
|
65
|
-
* as context prefix on subsequent calls within the same conversation.
|
|
66
|
-
*/
|
|
67
45
|
class GeminiExecutor {
|
|
68
46
|
directoryGuard;
|
|
69
47
|
currentWorkingDirectory;
|
|
70
|
-
sessionManager;
|
|
71
48
|
model;
|
|
72
49
|
autoApprove;
|
|
73
50
|
geminiCommand;
|
|
74
51
|
geminiVersion;
|
|
75
52
|
threadId;
|
|
76
|
-
/**
|
|
77
|
-
|
|
53
|
+
/** Long-lived ACP client — null means not yet spawned or was destroyed. */
|
|
54
|
+
persistentClient = null;
|
|
55
|
+
/** ACP session ID of the persistent session. */
|
|
56
|
+
persistentSessionId = null;
|
|
57
|
+
/**
|
|
58
|
+
* Mutable options for the current execute() call.
|
|
59
|
+
* The persistent AcpClient callbacks close over this object so they always
|
|
60
|
+
* dispatch to whichever execute() invocation is currently in flight.
|
|
61
|
+
*/
|
|
62
|
+
activeOptions = {};
|
|
78
63
|
/** Reference to the in-flight AcpClient for abort support. */
|
|
79
64
|
inflightClient = null;
|
|
65
|
+
/** ACP session ID of the in-flight prompt, needed for cooperative sendCancel. */
|
|
66
|
+
inflightSessionId = null;
|
|
67
|
+
/** Handle for the abort grace-period timer so it can be cancelled early. */
|
|
68
|
+
abortTimer = null;
|
|
69
|
+
/**
|
|
70
|
+
* Command queue for sequential execution.
|
|
71
|
+
* Matching ClaudePersistentExecutor's approach to ensure thread-safety.
|
|
72
|
+
*/
|
|
73
|
+
commandQueue = [];
|
|
74
|
+
isProcessing = false;
|
|
80
75
|
constructor(directoryGuard, options = {}) {
|
|
81
76
|
this.directoryGuard = directoryGuard;
|
|
82
|
-
// Leave model unset by default so Gemini CLI uses its own default
|
|
83
|
-
// (gemini-2.5-pro). NOTE: '--model auto' maps to gemini-3-pro-preview
|
|
84
|
-
// which has stricter quota limits — do NOT default to 'auto'.
|
|
85
|
-
// Users can override via executor.gemini.model in config.
|
|
86
77
|
this.model = options.model ?? '';
|
|
87
78
|
this.autoApprove = options.autoApprove ?? true;
|
|
88
79
|
this.geminiCommand = options.geminiCommand ?? 'npx';
|
|
89
80
|
this.geminiVersion = options.geminiVersion ?? '@google/gemini-cli@latest';
|
|
90
81
|
this.currentWorkingDirectory = options.initialWorkingDirectory ?? process.cwd();
|
|
91
|
-
this.sessionManager = new SessionManager_1.SessionManager();
|
|
92
82
|
this.threadId = options.threadId;
|
|
93
|
-
if (this.threadId) {
|
|
94
|
-
this.conversationId = this.threadId;
|
|
95
|
-
}
|
|
96
83
|
}
|
|
97
84
|
// ─── IExecutor required ─────────────────────────────────────────────────────
|
|
98
85
|
async execute(prompt, options) {
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
this.
|
|
86
|
+
return new Promise((resolve, reject) => {
|
|
87
|
+
this.commandQueue.push({ prompt, options, resolve, reject });
|
|
88
|
+
this.processQueue();
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Processes the command queue sequentially.
|
|
93
|
+
*/
|
|
94
|
+
async processQueue() {
|
|
95
|
+
if (this.isProcessing || this.commandQueue.length === 0) {
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
const command = this.commandQueue.shift();
|
|
99
|
+
if (!command)
|
|
100
|
+
return;
|
|
101
|
+
this.isProcessing = true;
|
|
102
|
+
try {
|
|
103
|
+
const result = await this.executeQueued(command.prompt, command.options);
|
|
104
|
+
command.resolve(result);
|
|
102
105
|
}
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
106
|
+
catch (error) {
|
|
107
|
+
command.reject(error instanceof Error ? error : new Error(String(error)));
|
|
108
|
+
}
|
|
109
|
+
finally {
|
|
110
|
+
this.isProcessing = false;
|
|
111
|
+
this.processQueue();
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Actual execution logic for a single prompt.
|
|
116
|
+
*/
|
|
117
|
+
async executeQueued(prompt, options) {
|
|
107
118
|
// Build fallback chain: configured model first, then quota fallback aliases.
|
|
108
|
-
// Filter out aliases that are already the configured model to avoid retrying
|
|
109
|
-
// the same model twice.
|
|
110
119
|
const fallbackAliases = QUOTA_FALLBACK_ALIASES.filter(a => a !== this.model);
|
|
111
120
|
const modelsToTry = [this.model, ...fallbackAliases];
|
|
112
121
|
for (let attempt = 0; attempt < modelsToTry.length; attempt++) {
|
|
@@ -118,21 +127,24 @@ class GeminiExecutor {
|
|
|
118
127
|
console.warn(`[GeminiExecutor] Quota exhausted on "${modelsToTry[attempt - 1] || 'pro'}", retrying with "${modelLabel}"`);
|
|
119
128
|
}
|
|
120
129
|
try {
|
|
121
|
-
|
|
130
|
+
// Ensure a persistent session exists (spawn if needed)
|
|
131
|
+
const { client, sessionId } = await this.ensurePersistentSession(modelForAttempt);
|
|
132
|
+
const result = await this.executeWithClient(client, sessionId, modelLabel, prompt, options);
|
|
122
133
|
return result;
|
|
123
134
|
}
|
|
124
135
|
catch (error) {
|
|
125
136
|
if (isQuotaError(error) && attempt < modelsToTry.length - 1) {
|
|
126
|
-
// Quota exhausted
|
|
137
|
+
// Quota exhausted — destroy current client, next iteration spawns with fallback model
|
|
138
|
+
this.destroyPersistentClient();
|
|
127
139
|
continue;
|
|
128
140
|
}
|
|
129
|
-
// Final attempt or non-quota error:
|
|
141
|
+
// Final attempt or non-quota error: destroy client (so next call respawns) and surface error
|
|
142
|
+
this.destroyPersistentClient();
|
|
130
143
|
console.error(`[GeminiExecutor] ❌ Execute error:`, error);
|
|
131
144
|
const msg = error instanceof Error ? error.message : 'Unknown error';
|
|
132
145
|
return { success: false, error: this.buildFriendlyError(msg, modelLabel) };
|
|
133
146
|
}
|
|
134
147
|
}
|
|
135
|
-
// Should never reach here, but satisfy TypeScript
|
|
136
148
|
return { success: false, error: 'All Gemini models exhausted quota.' };
|
|
137
149
|
}
|
|
138
150
|
getCurrentWorkingDirectory() {
|
|
@@ -140,136 +152,202 @@ class GeminiExecutor {
|
|
|
140
152
|
}
|
|
141
153
|
async setWorkingDirectory(targetPath) {
|
|
142
154
|
const resolved = this.directoryGuard.resolveWorkingDirectory(targetPath);
|
|
155
|
+
// If directory changes, we MUST restart the persistent process in the new directory.
|
|
156
|
+
// This matches ClaudePersistentExecutor and ensures that tools (ls, read, etc.)
|
|
157
|
+
// run in the expected location.
|
|
158
|
+
const needsRestart = this.currentWorkingDirectory !== resolved && this.persistentClient !== null;
|
|
143
159
|
this.currentWorkingDirectory = resolved;
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
this.
|
|
160
|
+
if (needsRestart) {
|
|
161
|
+
console.log(`[GeminiExecutor] Restarting persistent client in new directory: ${resolved}`);
|
|
162
|
+
this.destroyPersistentClient();
|
|
147
163
|
}
|
|
148
164
|
}
|
|
149
165
|
resetContext() {
|
|
150
|
-
|
|
151
|
-
this.sessionManager.remove(this.conversationId);
|
|
152
|
-
if (!this.threadId) {
|
|
153
|
-
this.conversationId = null;
|
|
154
|
-
}
|
|
155
|
-
}
|
|
166
|
+
this.destroyPersistentClient();
|
|
156
167
|
}
|
|
157
168
|
/**
|
|
158
|
-
* Compact conversation history by
|
|
159
|
-
* Gemini ACP has no built-in /compact
|
|
160
|
-
*
|
|
169
|
+
* Compact conversation history by resetting the persistent session.
|
|
170
|
+
* Gemini ACP has no built-in /compact, so we destroy the client entirely.
|
|
171
|
+
* The next execute() call will spawn a fresh process with no prior context.
|
|
161
172
|
*/
|
|
162
173
|
async compactWhenFull(onStream) {
|
|
163
|
-
if (!this.
|
|
174
|
+
if (!this.persistentClient) {
|
|
164
175
|
return { success: true, output: 'No active conversation to compact.' };
|
|
165
176
|
}
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
const removed = this.sessionManager.truncate(this.conversationId, COMPACT_KEEP_TURNS);
|
|
173
|
-
if (removed === 0) {
|
|
174
|
-
return { success: true, output: 'Conversation history is already compact.' };
|
|
175
|
-
}
|
|
176
|
-
onStream?.(`Removed ${removed} older entries from conversation history.\n`);
|
|
177
|
-
return { success: true, output: `Compacted: removed ${removed} older entries, kept ${COMPACT_KEEP_TURNS} most recent turns.` };
|
|
177
|
+
onStream?.('Resetting conversation context (Gemini has no /compact equivalent — starting fresh session)...\n');
|
|
178
|
+
this.destroyPersistentClient();
|
|
179
|
+
return {
|
|
180
|
+
success: true,
|
|
181
|
+
output: 'Context reset: conversation history cleared. Next message starts a fresh Gemini session.',
|
|
182
|
+
};
|
|
178
183
|
}
|
|
179
184
|
async abort() {
|
|
180
185
|
if (!this.inflightClient)
|
|
181
186
|
return false;
|
|
182
|
-
|
|
183
|
-
this
|
|
187
|
+
// Clear any existing grace-period timer before starting a new one.
|
|
188
|
+
// Without this, rapid double-abort would leak the first timer, which could
|
|
189
|
+
// fire later and unexpectedly destroy the session.
|
|
190
|
+
if (this.abortTimer !== null) {
|
|
191
|
+
clearTimeout(this.abortTimer);
|
|
192
|
+
this.abortTimer = null;
|
|
193
|
+
}
|
|
194
|
+
// Send cooperative ACP cancel so Gemini can finish the current tool call
|
|
195
|
+
// cleanly before stopping (avoids half-written files).
|
|
196
|
+
// NOTE: session/cancel only aborts the current prompt — it does NOT destroy
|
|
197
|
+
// the session. The persistent client and session are preserved so the user
|
|
198
|
+
// can continue the conversation after aborting.
|
|
199
|
+
if (this.inflightSessionId) {
|
|
200
|
+
this.inflightClient.sendCancel(this.inflightSessionId);
|
|
201
|
+
console.log(`[GeminiExecutor] Sent ACP cancel for session ${this.inflightSessionId.slice(0, 8)}`);
|
|
202
|
+
}
|
|
203
|
+
// Give Gemini a grace period to respond with stopReason='cancelled'.
|
|
204
|
+
// After the grace period, if Gemini hasn't responded yet, we force-destroy
|
|
205
|
+
// the persistent client as a last resort (session recovery is not possible
|
|
206
|
+
// once the subprocess is killed).
|
|
207
|
+
const clientRef = this.inflightClient;
|
|
208
|
+
this.abortTimer = setTimeout(() => {
|
|
209
|
+
this.abortTimer = null;
|
|
210
|
+
if (clientRef === this.inflightClient) {
|
|
211
|
+
console.warn('[GeminiExecutor] Cancel grace period elapsed, force-destroying persistent client');
|
|
212
|
+
this.destroyPersistentClient();
|
|
213
|
+
}
|
|
214
|
+
}, CANCEL_GRACE_MS);
|
|
184
215
|
return true;
|
|
185
216
|
}
|
|
186
217
|
async destroy() {
|
|
187
|
-
if (this.inflightClient) {
|
|
188
|
-
this.inflightClient.
|
|
189
|
-
this.inflightClient = null;
|
|
218
|
+
if (this.inflightClient && this.inflightSessionId) {
|
|
219
|
+
this.inflightClient.sendCancel(this.inflightSessionId);
|
|
190
220
|
}
|
|
221
|
+
// Always clear any pending abort timer, regardless of inflightClient state.
|
|
222
|
+
if (this.abortTimer !== null) {
|
|
223
|
+
clearTimeout(this.abortTimer);
|
|
224
|
+
this.abortTimer = null;
|
|
225
|
+
}
|
|
226
|
+
this.destroyPersistentClient();
|
|
191
227
|
}
|
|
192
228
|
/**
|
|
193
|
-
* Delete
|
|
229
|
+
* Delete session data for a thread.
|
|
194
230
|
* Called by ThreadExecutorPool before removing this executor from the pool.
|
|
195
231
|
*/
|
|
196
|
-
async deleteThreadData(
|
|
197
|
-
|
|
198
|
-
this.sessionManager.remove(this.conversationId);
|
|
199
|
-
}
|
|
200
|
-
else {
|
|
201
|
-
this.sessionManager.remove(threadId);
|
|
202
|
-
}
|
|
232
|
+
async deleteThreadData(_threadId) {
|
|
233
|
+
this.destroyPersistentClient();
|
|
203
234
|
}
|
|
204
235
|
getSessionId() {
|
|
205
|
-
return this.
|
|
236
|
+
return this.persistentSessionId;
|
|
206
237
|
}
|
|
238
|
+
// ─── Internal helpers ────────────────────────────────────────────────────────
|
|
207
239
|
/**
|
|
208
|
-
*
|
|
209
|
-
*
|
|
240
|
+
* Returns the existing persistent session if alive, or spawns a new one.
|
|
241
|
+
* The model parameter is only used when spawning a new session.
|
|
210
242
|
*/
|
|
211
|
-
async
|
|
212
|
-
|
|
243
|
+
async ensurePersistentSession(model) {
|
|
244
|
+
if (this.persistentClient && this.persistentSessionId) {
|
|
245
|
+
return { client: this.persistentClient, sessionId: this.persistentSessionId };
|
|
246
|
+
}
|
|
247
|
+
return this.spawnNewSession(model);
|
|
248
|
+
}
|
|
249
|
+
/**
|
|
250
|
+
* Spawns a fresh Gemini CLI subprocess, initializes ACP, and creates a new session.
|
|
251
|
+
* The AcpClient callbacks close over `this.activeOptions` so they always dispatch
|
|
252
|
+
* to whichever execute() call is currently in flight.
|
|
253
|
+
*/
|
|
254
|
+
async spawnNewSession(model) {
|
|
255
|
+
const args = this.buildGeminiArgs(model);
|
|
213
256
|
const acpCallbacks = {
|
|
214
257
|
onThoughtChunk: (text) => {
|
|
215
|
-
|
|
216
|
-
accumulatedOutput += text;
|
|
217
|
-
options.onStream?.(text);
|
|
258
|
+
this.activeOptions.onStream?.(text);
|
|
218
259
|
},
|
|
219
260
|
onTextChunk: (text) => {
|
|
220
|
-
|
|
221
|
-
options.onStream?.(text);
|
|
261
|
+
this.activeOptions.onStream?.(text);
|
|
222
262
|
},
|
|
223
263
|
onToolCall: (toolCallId, title, kind) => {
|
|
224
|
-
// Map Gemini ACP kind → Claude-compatible tool name + structured input
|
|
225
|
-
// so the router's ToolFormatter renders it consistently with Claude tools.
|
|
226
|
-
// The tool card itself provides the progress indicator — no extra onStream needed.
|
|
227
264
|
const { name, input } = mapAcpToolCall(kind, title);
|
|
228
|
-
|
|
265
|
+
this.activeOptions.onToolUse?.({ id: toolCallId, name, input });
|
|
229
266
|
},
|
|
230
267
|
onToolResult: (toolCallId, status, output) => {
|
|
231
|
-
|
|
268
|
+
this.activeOptions.onToolResult?.({
|
|
232
269
|
tool_use_id: toolCallId,
|
|
233
270
|
content: output ?? '',
|
|
234
271
|
is_error: status !== 'completed',
|
|
235
272
|
});
|
|
236
273
|
},
|
|
237
274
|
onPlan: (text) => {
|
|
238
|
-
|
|
275
|
+
this.activeOptions.onPlanMode?.(text);
|
|
239
276
|
},
|
|
240
277
|
onPermissionRequest: this.autoApprove ? undefined : async () => 0,
|
|
241
278
|
};
|
|
242
|
-
const args = this.buildGeminiArgs(model);
|
|
243
279
|
const client = new AcpClient_1.AcpClient(this.geminiCommand, args, this.currentWorkingDirectory, acpCallbacks);
|
|
280
|
+
console.log(`[GeminiExecutor] Spawning persistent ACP client (model=${model || 'pro (default)'}) for cwd: ${this.currentWorkingDirectory}`);
|
|
281
|
+
await client.initialize();
|
|
282
|
+
const sessionId = await client.newSession(this.currentWorkingDirectory);
|
|
283
|
+
console.log(`[GeminiExecutor] Persistent ACP session created: ${sessionId.slice(0, 8)}`);
|
|
284
|
+
if (this.autoApprove) {
|
|
285
|
+
try {
|
|
286
|
+
await client.setSessionMode(sessionId, 'yolo');
|
|
287
|
+
}
|
|
288
|
+
catch (e) {
|
|
289
|
+
console.warn(`[GeminiExecutor] Optional session mode 'yolo' not supported or rejected:`, e);
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
this.persistentClient = client;
|
|
293
|
+
this.persistentSessionId = sessionId;
|
|
294
|
+
return { client, sessionId };
|
|
295
|
+
}
|
|
296
|
+
/**
|
|
297
|
+
* Sends a single prompt to an existing persistent ACP session.
|
|
298
|
+
* Sets activeOptions so the persistent callbacks dispatch to this call's handlers.
|
|
299
|
+
*/
|
|
300
|
+
async executeWithClient(client, sessionId, modelLabel, prompt, options) {
|
|
301
|
+
let accumulatedOutput = '';
|
|
302
|
+
// Wire per-execute callbacks via activeOptions so the persistent AcpClient
|
|
303
|
+
// callbacks (which close over this.activeOptions) dispatch to this call.
|
|
304
|
+
this.activeOptions = {
|
|
305
|
+
onStream: (chunk) => {
|
|
306
|
+
accumulatedOutput += chunk;
|
|
307
|
+
options.onStream?.(chunk);
|
|
308
|
+
},
|
|
309
|
+
onToolUse: options.onToolUse,
|
|
310
|
+
onToolResult: options.onToolResult,
|
|
311
|
+
onPlanMode: options.onPlanMode,
|
|
312
|
+
};
|
|
244
313
|
this.inflightClient = client;
|
|
314
|
+
this.inflightSessionId = sessionId;
|
|
245
315
|
try {
|
|
246
|
-
console.log(`[GeminiExecutor]
|
|
247
|
-
|
|
248
|
-
await client.initialize();
|
|
249
|
-
const sessionId = await client.newSession(this.currentWorkingDirectory);
|
|
250
|
-
console.log(`[GeminiExecutor] ACP session created: ${sessionId.slice(0, 8)}`);
|
|
251
|
-
if (this.autoApprove) {
|
|
252
|
-
try {
|
|
253
|
-
await client.setSessionMode(sessionId, 'yolo');
|
|
254
|
-
}
|
|
255
|
-
catch (e) {
|
|
256
|
-
console.warn(`[GeminiExecutor] Optional session mode 'yolo' not supported or rejected:`, e);
|
|
257
|
-
// Non-fatal: AcpClient will still auto-approve individual permissions if setSessionMode fails
|
|
258
|
-
}
|
|
259
|
-
}
|
|
260
|
-
console.log(`[GeminiExecutor] Sending prompt (length=${finalPrompt.length})...`);
|
|
261
|
-
const promptResult = await client.prompt(sessionId, finalPrompt);
|
|
316
|
+
console.log(`[GeminiExecutor] Sending prompt (model=${modelLabel}, length=${prompt.length})...`);
|
|
317
|
+
const promptResult = await client.prompt(sessionId, prompt);
|
|
262
318
|
console.log(`[GeminiExecutor] Prompt completed, stopReason=${promptResult.stopReason}, model=${modelLabel}`);
|
|
263
|
-
this.sessionManager.append(this.conversationId, 'assistant', accumulatedOutput);
|
|
264
319
|
return {
|
|
265
|
-
success: promptResult.stopReason !== 'refusal',
|
|
320
|
+
success: promptResult.stopReason !== 'refusal' && promptResult.stopReason !== 'cancelled',
|
|
266
321
|
output: accumulatedOutput,
|
|
267
|
-
sessionAbbr:
|
|
322
|
+
sessionAbbr: sessionId.slice(0, 8),
|
|
268
323
|
};
|
|
269
324
|
}
|
|
270
325
|
finally {
|
|
271
|
-
|
|
326
|
+
// Clear activeOptions so stale callbacks don't fire after this call ends
|
|
327
|
+
this.activeOptions = {};
|
|
328
|
+
// If abort() was called and its timer is still pending, Gemini responded to
|
|
329
|
+
// the cancel before the grace period elapsed. Cancel the timer — the session
|
|
330
|
+
// remains alive so the user can continue the conversation after aborting.
|
|
331
|
+
if (this.abortTimer !== null) {
|
|
332
|
+
clearTimeout(this.abortTimer);
|
|
333
|
+
this.abortTimer = null;
|
|
334
|
+
}
|
|
272
335
|
this.inflightClient = null;
|
|
336
|
+
this.inflightSessionId = null;
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
/** Destroys the persistent client and clears all related state. */
|
|
340
|
+
destroyPersistentClient() {
|
|
341
|
+
// Also cancel any pending abort grace-period timer so it doesn't fire
|
|
342
|
+
// as a spurious no-op after the client is already gone.
|
|
343
|
+
if (this.abortTimer !== null) {
|
|
344
|
+
clearTimeout(this.abortTimer);
|
|
345
|
+
this.abortTimer = null;
|
|
346
|
+
}
|
|
347
|
+
if (this.persistentClient) {
|
|
348
|
+
this.persistentClient.destroy();
|
|
349
|
+
this.persistentClient = null;
|
|
350
|
+
this.persistentSessionId = null;
|
|
273
351
|
}
|
|
274
352
|
}
|
|
275
353
|
buildGeminiArgs(model) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GeminiExecutor.js","sourceRoot":"","sources":["../../src/executor/GeminiExecutor.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"GeminiExecutor.js","sourceRoot":"","sources":["../../src/executor/GeminiExecutor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"security-guard.d.ts","sourceRoot":"","sources":["../../src/security/security-guard.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAKH;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS,CAAC;IAC5C,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;
|
|
1
|
+
{"version":3,"file":"security-guard.d.ts","sourceRoot":"","sources":["../../src/security/security-guard.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAKH;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS,CAAC;IAC5C,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAuLD;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,gBAAgB,CA+D3F;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAoB7D;AAED;;;GAGG;AACH,wBAAsB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAiC1C"}
|
|
@@ -66,7 +66,8 @@ const PIPE_TO_SHELL_PATTERNS = [
|
|
|
66
66
|
/\|\s*sh\b/,
|
|
67
67
|
/\|\s*zsh\b/,
|
|
68
68
|
/\|\s*source\b/,
|
|
69
|
-
/\$\(/, // Command substitution
|
|
69
|
+
/\$\(/, // Command substitution $()
|
|
70
|
+
/`/, // Backtick command substitution
|
|
70
71
|
];
|
|
71
72
|
/**
|
|
72
73
|
* Resolve a path that may contain ~ to an absolute path
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"security-guard.js","sourceRoot":"","sources":["../../src/security/security-guard.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;GAWG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"security-guard.js","sourceRoot":"","sources":["../../src/security/security-guard.ts"],"names":[],"mappings":"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"}
|