@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.
@@ -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
- /** Stable ID for JSONL history file, survives across spawns. */
35
- private conversationId;
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 truncating to the most recent turns.
45
- * Gemini ACP has no built-in /compact command, so we reduce context size
46
- * by keeping only the last COMPACT_KEEP_TURNS entries from the JSONL history.
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 the Gemini session history file for a thread.
67
+ * Delete session data for a thread.
53
68
  * Called by ThreadExecutorPool before removing this executor from the pool.
54
69
  */
55
- deleteThreadData(threadId: string): Promise<void>;
70
+ deleteThreadData(_threadId: string): Promise<void>;
56
71
  getSessionId(): string | null;
57
72
  /**
58
- * Runs a single attempt with a specific model alias.
59
- * Throws on quota errors so the caller can retry with the next model.
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 executeWithModel;
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;AAOvE,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;AA0DD;;;;;;;;;GASG;AACH,qBAAa,cAAe,YAAW,SAAS;IAC9C,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,uBAAuB,CAAS;IACxC,OAAO,CAAC,cAAc,CAAiB;IAEvC,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,gEAAgE;IAChE,OAAO,CAAC,cAAc,CAAuB;IAE7C,8DAA8D;IAC9D,OAAO,CAAC,cAAc,CAA0B;gBAEpC,cAAc,EAAE,cAAc,EAAE,OAAO,GAAE,qBAA0B;IAoBzE,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC;IA8C9E,0BAA0B,IAAI,MAAM;IAI9B,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAS5D,YAAY,IAAI,IAAI;IASpB;;;;OAIG;IACG,eAAe,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC;IAsB3E,KAAK,IAAI,OAAO,CAAC,OAAO,CAAC;IAOzB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAO9B;;;OAGG;IACG,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQvD,YAAY,IAAI,MAAM,GAAG,IAAI;IAI7B;;;OAGG;YACW,gBAAgB;IAkF9B,OAAO,CAAC,eAAe;IAYvB,OAAO,CAAC,kBAAkB;CAqB3B"}
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
- const SessionManager_1 = require("./acp/SessionManager");
6
- /** Number of most-recent conversation turns to keep after compaction. */
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
- /** Stable ID for JSONL history file, survives across spawns. */
77
- conversationId = null;
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
- // Ensure a stable conversation ID exists for history tracking across spawns
100
- if (!this.conversationId) {
101
- this.conversationId = `conv-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;
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
- // Prepend history context for follow-up turns within the same conversation
104
- const historyContext = this.sessionManager.buildResumeContext(this.conversationId);
105
- const finalPrompt = historyContext ? `${historyContext}${prompt}` : prompt;
106
- this.sessionManager.append(this.conversationId, 'user', prompt);
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
- const result = await this.executeWithModel(modelForAttempt, modelLabel, finalPrompt, prompt, options);
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 on this model — try the next one in the chain
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: surface a friendly message
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
- // Changing directory resets the conversation context if not using a thread-bound session
145
- if (!this.threadId) {
146
- this.conversationId = null;
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
- if (this.conversationId) {
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 truncating to the most recent turns.
159
- * Gemini ACP has no built-in /compact command, so we reduce context size
160
- * by keeping only the last COMPACT_KEEP_TURNS entries from the JSONL history.
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.conversationId) {
174
+ if (!this.persistentClient) {
164
175
  return { success: true, output: 'No active conversation to compact.' };
165
176
  }
166
- // The previous execute() attempt failed (likely Prompt too long), but it already
167
- // appended the user's prompt to the history. When the caller retries, they will
168
- // send the exact same prompt again. To avoid duplicating it, we pop the last entry
169
- // if it's a 'user' entry.
170
- this.sessionManager.popLastUserEntry(this.conversationId);
171
- onStream?.(`Truncating history to last ${COMPACT_KEEP_TURNS} turns...\n`);
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
- this.inflightClient.destroy();
183
- this.inflightClient = null;
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.inflightClient.destroy();
189
- this.inflightClient = null;
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 the Gemini session history file for a thread.
219
+ * Delete session data for a thread.
194
220
  * Called by ThreadExecutorPool before removing this executor from the pool.
195
221
  */
196
- async deleteThreadData(threadId) {
197
- if (this.conversationId) {
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.conversationId;
226
+ return this.persistentSessionId;
206
227
  }
228
+ // ─── Internal helpers ────────────────────────────────────────────────────────
207
229
  /**
208
- * Runs a single attempt with a specific model alias.
209
- * Throws on quota errors so the caller can retry with the next model.
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 executeWithModel(model, modelLabel, finalPrompt, originalPrompt, options) {
212
- let accumulatedOutput = '';
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
- // Stream Gemini's thinking to the user, same as Claude does for thinking blocks
216
- accumulatedOutput += text;
217
- options.onStream?.(text);
248
+ this.activeOptions.onStream?.(text);
218
249
  },
219
250
  onTextChunk: (text) => {
220
- accumulatedOutput += text;
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
- options.onToolUse?.({ id: toolCallId, name, input });
255
+ this.activeOptions.onToolUse?.({ id: toolCallId, name, input });
229
256
  },
230
257
  onToolResult: (toolCallId, status, output) => {
231
- options.onToolResult?.({
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
- options.onPlanMode?.(text);
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] Spawning ACP client (model=${modelLabel}) for cwd: ${this.currentWorkingDirectory}`);
247
- console.log(`[GeminiExecutor] Gemini command: ${this.geminiCommand} ${args.join(' ')}`);
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: this.conversationId.slice(0, 8),
312
+ sessionAbbr: sessionId.slice(0, 8),
268
313
  };
269
314
  }
270
315
  finally {
271
- client.destroy();
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;AAsLD;;;;;;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"}
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":"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"}
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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yu_robotics/remote-cli",
3
- "version": "1.1.37",
3
+ "version": "1.1.38",
4
4
  "description": "Remote control Claude Code CLI via mobile",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",