@yu_robotics/remote-cli 1.1.37 → 1.1.38
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 +185 -122
- 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;IAyBzB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAa9B;;;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;IAmD/B,mEAAmE;IACnE,OAAO,CAAC,uBAAuB;IAQ/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);
|
|
105
|
+
}
|
|
106
|
+
catch (error) {
|
|
107
|
+
command.reject(error instanceof Error ? error : new Error(String(error)));
|
|
108
|
+
}
|
|
109
|
+
finally {
|
|
110
|
+
this.isProcessing = false;
|
|
111
|
+
this.processQueue();
|
|
102
112
|
}
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
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,187 @@ 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
|
-
|
|
187
|
+
// Step 1: Send cooperative ACP cancel so Gemini can finish the current
|
|
188
|
+
// tool call cleanly before exiting (avoids half-written files).
|
|
189
|
+
if (this.inflightSessionId) {
|
|
190
|
+
this.inflightClient.sendCancel(this.inflightSessionId);
|
|
191
|
+
console.log(`[GeminiExecutor] Sent ACP cancel for session ${this.inflightSessionId.slice(0, 8)}`);
|
|
192
|
+
}
|
|
193
|
+
// Step 2: Give Gemini a short grace period to respond with stopReason='cancelled'.
|
|
194
|
+
// After either the grace period or natural completion, we destroy the persistent
|
|
195
|
+
// client so the next execute() starts a clean session.
|
|
196
|
+
const clientRef = this.inflightClient;
|
|
197
|
+
this.abortTimer = setTimeout(() => {
|
|
198
|
+
this.abortTimer = null;
|
|
199
|
+
if (clientRef === this.inflightClient) {
|
|
200
|
+
console.warn('[GeminiExecutor] Cancel grace period elapsed, force-destroying persistent client');
|
|
201
|
+
this.destroyPersistentClient();
|
|
202
|
+
}
|
|
203
|
+
}, CANCEL_GRACE_MS);
|
|
184
204
|
return true;
|
|
185
205
|
}
|
|
186
206
|
async destroy() {
|
|
187
207
|
if (this.inflightClient) {
|
|
188
|
-
this.
|
|
189
|
-
|
|
208
|
+
if (this.inflightSessionId) {
|
|
209
|
+
this.inflightClient.sendCancel(this.inflightSessionId);
|
|
210
|
+
}
|
|
211
|
+
if (this.abortTimer !== null) {
|
|
212
|
+
clearTimeout(this.abortTimer);
|
|
213
|
+
this.abortTimer = null;
|
|
214
|
+
}
|
|
190
215
|
}
|
|
216
|
+
this.destroyPersistentClient();
|
|
191
217
|
}
|
|
192
218
|
/**
|
|
193
|
-
* Delete
|
|
219
|
+
* Delete session data for a thread.
|
|
194
220
|
* Called by ThreadExecutorPool before removing this executor from the pool.
|
|
195
221
|
*/
|
|
196
|
-
async deleteThreadData(
|
|
197
|
-
|
|
198
|
-
this.sessionManager.remove(this.conversationId);
|
|
199
|
-
}
|
|
200
|
-
else {
|
|
201
|
-
this.sessionManager.remove(threadId);
|
|
202
|
-
}
|
|
222
|
+
async deleteThreadData(_threadId) {
|
|
223
|
+
this.destroyPersistentClient();
|
|
203
224
|
}
|
|
204
225
|
getSessionId() {
|
|
205
|
-
return this.
|
|
226
|
+
return this.persistentSessionId;
|
|
206
227
|
}
|
|
228
|
+
// ─── Internal helpers ────────────────────────────────────────────────────────
|
|
207
229
|
/**
|
|
208
|
-
*
|
|
209
|
-
*
|
|
230
|
+
* Returns the existing persistent session if alive, or spawns a new one.
|
|
231
|
+
* The model parameter is only used when spawning a new session.
|
|
210
232
|
*/
|
|
211
|
-
async
|
|
212
|
-
|
|
233
|
+
async ensurePersistentSession(model) {
|
|
234
|
+
if (this.persistentClient && this.persistentSessionId) {
|
|
235
|
+
return { client: this.persistentClient, sessionId: this.persistentSessionId };
|
|
236
|
+
}
|
|
237
|
+
return this.spawnNewSession(model);
|
|
238
|
+
}
|
|
239
|
+
/**
|
|
240
|
+
* Spawns a fresh Gemini CLI subprocess, initializes ACP, and creates a new session.
|
|
241
|
+
* The AcpClient callbacks close over `this.activeOptions` so they always dispatch
|
|
242
|
+
* to whichever execute() call is currently in flight.
|
|
243
|
+
*/
|
|
244
|
+
async spawnNewSession(model) {
|
|
245
|
+
const args = this.buildGeminiArgs(model);
|
|
213
246
|
const acpCallbacks = {
|
|
214
247
|
onThoughtChunk: (text) => {
|
|
215
|
-
|
|
216
|
-
accumulatedOutput += text;
|
|
217
|
-
options.onStream?.(text);
|
|
248
|
+
this.activeOptions.onStream?.(text);
|
|
218
249
|
},
|
|
219
250
|
onTextChunk: (text) => {
|
|
220
|
-
|
|
221
|
-
options.onStream?.(text);
|
|
251
|
+
this.activeOptions.onStream?.(text);
|
|
222
252
|
},
|
|
223
253
|
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
254
|
const { name, input } = mapAcpToolCall(kind, title);
|
|
228
|
-
|
|
255
|
+
this.activeOptions.onToolUse?.({ id: toolCallId, name, input });
|
|
229
256
|
},
|
|
230
257
|
onToolResult: (toolCallId, status, output) => {
|
|
231
|
-
|
|
258
|
+
this.activeOptions.onToolResult?.({
|
|
232
259
|
tool_use_id: toolCallId,
|
|
233
260
|
content: output ?? '',
|
|
234
261
|
is_error: status !== 'completed',
|
|
235
262
|
});
|
|
236
263
|
},
|
|
237
264
|
onPlan: (text) => {
|
|
238
|
-
|
|
265
|
+
this.activeOptions.onPlanMode?.(text);
|
|
239
266
|
},
|
|
240
267
|
onPermissionRequest: this.autoApprove ? undefined : async () => 0,
|
|
241
268
|
};
|
|
242
|
-
const args = this.buildGeminiArgs(model);
|
|
243
269
|
const client = new AcpClient_1.AcpClient(this.geminiCommand, args, this.currentWorkingDirectory, acpCallbacks);
|
|
270
|
+
console.log(`[GeminiExecutor] Spawning persistent ACP client (model=${model || 'pro (default)'}) for cwd: ${this.currentWorkingDirectory}`);
|
|
271
|
+
await client.initialize();
|
|
272
|
+
const sessionId = await client.newSession(this.currentWorkingDirectory);
|
|
273
|
+
console.log(`[GeminiExecutor] Persistent ACP session created: ${sessionId.slice(0, 8)}`);
|
|
274
|
+
if (this.autoApprove) {
|
|
275
|
+
try {
|
|
276
|
+
await client.setSessionMode(sessionId, 'yolo');
|
|
277
|
+
}
|
|
278
|
+
catch (e) {
|
|
279
|
+
console.warn(`[GeminiExecutor] Optional session mode 'yolo' not supported or rejected:`, e);
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
this.persistentClient = client;
|
|
283
|
+
this.persistentSessionId = sessionId;
|
|
284
|
+
return { client, sessionId };
|
|
285
|
+
}
|
|
286
|
+
/**
|
|
287
|
+
* Sends a single prompt to an existing persistent ACP session.
|
|
288
|
+
* Sets activeOptions so the persistent callbacks dispatch to this call's handlers.
|
|
289
|
+
*/
|
|
290
|
+
async executeWithClient(client, sessionId, modelLabel, prompt, options) {
|
|
291
|
+
let accumulatedOutput = '';
|
|
292
|
+
// Wire per-execute callbacks via activeOptions so the persistent AcpClient
|
|
293
|
+
// callbacks (which close over this.activeOptions) dispatch to this call.
|
|
294
|
+
this.activeOptions = {
|
|
295
|
+
onStream: (chunk) => {
|
|
296
|
+
accumulatedOutput += chunk;
|
|
297
|
+
options.onStream?.(chunk);
|
|
298
|
+
},
|
|
299
|
+
onToolUse: options.onToolUse,
|
|
300
|
+
onToolResult: options.onToolResult,
|
|
301
|
+
onPlanMode: options.onPlanMode,
|
|
302
|
+
};
|
|
244
303
|
this.inflightClient = client;
|
|
304
|
+
this.inflightSessionId = sessionId;
|
|
245
305
|
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);
|
|
306
|
+
console.log(`[GeminiExecutor] Sending prompt (model=${modelLabel}, length=${prompt.length})...`);
|
|
307
|
+
const promptResult = await client.prompt(sessionId, prompt);
|
|
262
308
|
console.log(`[GeminiExecutor] Prompt completed, stopReason=${promptResult.stopReason}, model=${modelLabel}`);
|
|
263
|
-
this.sessionManager.append(this.conversationId, 'assistant', accumulatedOutput);
|
|
264
309
|
return {
|
|
265
|
-
success: promptResult.stopReason !== 'refusal',
|
|
310
|
+
success: promptResult.stopReason !== 'refusal' && promptResult.stopReason !== 'cancelled',
|
|
266
311
|
output: accumulatedOutput,
|
|
267
|
-
sessionAbbr:
|
|
312
|
+
sessionAbbr: sessionId.slice(0, 8),
|
|
268
313
|
};
|
|
269
314
|
}
|
|
270
315
|
finally {
|
|
271
|
-
|
|
316
|
+
// Clear activeOptions so stale callbacks don't fire after this call ends
|
|
317
|
+
this.activeOptions = {};
|
|
318
|
+
// If abort() was called and its timer is still pending, Gemini responded to
|
|
319
|
+
// the cancel before the grace period elapsed. Destroy the persistent client
|
|
320
|
+
// now (a cancelled session should not be reused) and cancel the timer.
|
|
321
|
+
if (this.abortTimer !== null) {
|
|
322
|
+
clearTimeout(this.abortTimer);
|
|
323
|
+
this.abortTimer = null;
|
|
324
|
+
this.destroyPersistentClient();
|
|
325
|
+
}
|
|
272
326
|
this.inflightClient = null;
|
|
327
|
+
this.inflightSessionId = null;
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
/** Destroys the persistent client and clears all related state. */
|
|
331
|
+
destroyPersistentClient() {
|
|
332
|
+
if (this.persistentClient) {
|
|
333
|
+
this.persistentClient.destroy();
|
|
334
|
+
this.persistentClient = null;
|
|
335
|
+
this.persistentSessionId = null;
|
|
273
336
|
}
|
|
274
337
|
}
|
|
275
338
|
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":";AAAA;;;;;;;;;;;GAWG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkNH,0CA+DC;AAOD,0CAoBC;AAMD,oBAiCC;AAjVD,2CAA6B;AAC7B,uCAAyB;AAmBzB;;GAEG;AACH,MAAM,UAAU,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC;AAE7E;;GAEG;AACH,MAAM,kBAAkB,GAAG,CAAC,MAAM,CAAC,CAAC;AAEpC;;GAEG;AACH,MAAM,sBAAsB,GAAG;IAC7B,aAAa;IACb,WAAW;IACX,YAAY;IACZ,eAAe;IACf,MAAM,EAAG,2BAA2B;IACpC,GAAG,EAAM,gCAAgC;CAC1C,CAAC;AAEF;;GAEG;AACH,SAAS,WAAW,CAAC,QAAgB,EAAE,GAAY;IACjD,yBAAyB;IACzB,IAAI,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;QACpC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAChD,CAAC;IAED,wBAAwB;IACxB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC/B,MAAM,QAAQ,GAAG,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QACtC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC9C,CAAC;IAED,gCAAgC;IAChC,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;AAClC,CAAC;AAED;;GAEG;AACH,SAAS,iBAAiB,CAAC,OAAe;IACxC,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;QACpC,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3D,CAAC;IACD,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;AAC/C,CAAC;AAED;;GAEG;AACH,SAAS,mBAAmB,CAAC,QAAgB,EAAE,WAAqB;IAClE,MAAM,kBAAkB,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IAEpD,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;QACrC,MAAM,oBAAoB,GAAG,iBAAiB,CAAC,UAAU,CAAC,CAAC;QAE3D,mDAAmD;QACnD,sEAAsE;QACtE,IAAI,kBAAkB,KAAK,oBAAoB,EAAE,CAAC;YAChD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,oEAAoE;QACpE,iEAAiE;QACjE,MAAM,cAAc,GAAG,oBAAoB,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC;YAC5D,CAAC,CAAC,oBAAoB;YACtB,CAAC,CAAC,oBAAoB,GAAG,IAAI,CAAC,GAAG,CAAC;QAEpC,IAAI,kBAAkB,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;YAClD,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,SAAS,eAAe,CAAC,QAAgB,EAAE,SAA8B;IACvE,+DAA+D;IAC/D,IAAI,QAAQ,KAAK,cAAc,EAAE,CAAC;QAChC,OAAO,SAAS,CAAC,aAAa,IAAI,IAAI,CAAC;IACzC,CAAC;IAED,IAAI,QAAQ,KAAK,MAAM,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;QAC/C,qCAAqC;QACrC,OAAO,SAAS,CAAC,IAAI,IAAI,SAAS,CAAC,SAAS,IAAI,IAAI,CAAC;IACvD,CAAC;IAED,oCAAoC;IACpC,OAAO,SAAS,CAAC,SAAS,IAAI,IAAI,CAAC;AACrC,CAAC;AAED;;;GAGG;AACH,SAAS,uBAAuB,CAAC,OAAe,EAAE,GAAY;IAC5D,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,gCAAgC;IAChC,+EAA+E;IAC/E,MAAM,YAAY,GAAG;QACnB,iCAAiC;QACjC,mCAAmC;QACnC,cAAc;QACd,oCAAoC;QACpC,yCAAyC;QACzC,qCAAqC;QACrC,mCAAmC;KACpC,CAAC;IAEF,KAAK,MAAM,OAAO,IAAI,YAAY,EAAE,CAAC;QACnC,IAAI,KAAK,CAAC;QACV,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YAChD,MAAM,aAAa,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YACtC,qCAAqC;YACrC,IAAI,aAAa,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,wBAAwB,CAAC,EAAE,CAAC;gBACpE,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,SAAS,mBAAmB,CAC1B,OAAe,EACf,GAAuB,EACvB,WAAqB;IAErB,+BAA+B;IAC/B,KAAK,MAAM,SAAS,IAAI,kBAAkB,EAAE,CAAC;QAC3C,IAAI,IAAI,MAAM,CAAC,MAAM,SAAS,KAAK,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YACnD,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,MAAM,EAAE,qCAAqC,SAAS,EAAE;aACzD,CAAC;QACJ,CAAC;IACH,CAAC;IAED,mCAAmC;IACnC,KAAK,MAAM,OAAO,IAAI,sBAAsB,EAAE,CAAC;QAC7C,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAC1B,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,MAAM,EAAE,mDAAmD;aAC5D,CAAC;QACJ,CAAC;IACH,CAAC;IAED,gDAAgD;IAChD,MAAM,cAAc,GAAG,uBAAuB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IAE7D,KAAK,MAAM,aAAa,IAAI,cAAc,EAAE,CAAC;QAC3C,MAAM,YAAY,GAAG,WAAW,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;QAErD,IAAI,CAAC,mBAAmB,CAAC,YAAY,EAAE,WAAW,CAAC,EAAE,CAAC;YACpD,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,MAAM,EAAE,SAAS,aAAa,qCAAqC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;aAC5F,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO;QACL,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,gCAAgC;KACzC,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,eAAe,CAAC,QAAkB,EAAE,WAAqB;IACvE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,EAAE,GAAG,QAAQ,CAAC;IAEhD,kDAAkD;IAClD,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7C,OAAO;YACL,OAAO,EAAE,IAAI;YACb,MAAM,EAAE,sCAAsC;SAC/C,CAAC;IACJ,CAAC;IAED,6BAA6B;IAC7B,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;QACzB,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,CAAC;YACzB,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,MAAM,EAAE,+BAA+B;aACxC,CAAC;QACJ,CAAC;QACD,OAAO,mBAAmB,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,EAAE,WAAW,CAAC,CAAC;IACnE,CAAC;IAED,0DAA0D;IAC1D,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QACpC,OAAO;YACL,OAAO,EAAE,IAAI;YACb,MAAM,EAAE,eAAe;SACxB,CAAC;IACJ,CAAC;IAED,yCAAyC;IACzC,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO;YACL,OAAO,EAAE,IAAI;YACb,MAAM,EAAE,8CAA8C;SACvD,CAAC;IACJ,CAAC;IAED,oCAAoC;IACpC,MAAM,QAAQ,GAAG,eAAe,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IAExD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO;YACL,OAAO,EAAE,IAAI;YACb,MAAM,EAAE,4BAA4B;SACrC,CAAC;IACJ,CAAC;IAED,oCAAoC;IACpC,MAAM,YAAY,GAAG,WAAW,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IAEhD,8CAA8C;IAC9C,IAAI,mBAAmB,CAAC,YAAY,EAAE,WAAW,CAAC,EAAE,CAAC;QACnD,OAAO;YACL,OAAO,EAAE,IAAI;YACb,MAAM,EAAE,+BAA+B;SACxC,CAAC;IACJ,CAAC;IAED,OAAO;QACL,OAAO,EAAE,KAAK;QACd,MAAM,EAAE,SAAS,QAAQ,qCAAqC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;KACvF,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,SAAgB,eAAe,CAAC,UAAmB;IACjD,MAAM,aAAa,GAAG,UAAU;QAC9B,OAAO,CAAC,GAAG,CAAC,iBAAiB;QAC7B,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,aAAa,EAAE,aAAa,CAAC,CAAC;IAElE,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC;QAElE,MAAM,UAAU,GAAa,MAAM,CAAC,QAAQ,EAAE,kBAAkB,IAAI,EAAE,CAAC;QAEvE,mFAAmF;QACnF,IAAI,MAAM,CAAC,oBAAoB,EAAE,CAAC;YAChC,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,UAAU,EAAE,MAAM,CAAC,oBAAoB,CAAC,CAAC,CAAC;YACrE,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC5B,CAAC;QAED,OAAO,UAAU,CAAC;IACpB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED;;;GAGG;AACI,KAAK,UAAU,IAAI;IACxB,IAAI,KAAK,GAAG,EAAE,CAAC;IAEf,kBAAkB;IAClB,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAElC,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QACxC,KAAK,IAAI,KAAK,CAAC;IACjB,CAAC;IAED,IAAI,CAAC;QACH,MAAM,QAAQ,GAAa,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC7C,MAAM,WAAW,GAAG,eAAe,EAAE,CAAC;QAEtC,wEAAwE;QACxE,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7B,OAAO,CAAC,KAAK,CAAC,mFAAmF,CAAC,CAAC;YACnG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,MAAM,GAAG,eAAe,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;QAEtD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,OAAO,CAAC,KAAK,CAAC,4BAA4B,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;YAC3D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,0BAA0B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC;QACpG,yDAAyD;QACzD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,gCAAgC;AAChC,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;IAC5B,IAAI,EAAE,CAAC;AACT,CAAC"}
|