@yu_robotics/remote-cli 1.6.26 → 1.6.30

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/README.md +8 -8
  2. package/dist/client/MessageHandler.d.ts +1 -1
  3. package/dist/client/MessageHandler.d.ts.map +1 -1
  4. package/dist/client/MessageHandler.js +43 -22
  5. package/dist/client/MessageHandler.js.map +1 -1
  6. package/dist/commands/start.d.ts.map +1 -1
  7. package/dist/commands/start.js +9 -4
  8. package/dist/commands/start.js.map +1 -1
  9. package/dist/executor/KimiExecutor.d.ts +18 -0
  10. package/dist/executor/KimiExecutor.d.ts.map +1 -0
  11. package/dist/executor/KimiExecutor.js +28 -0
  12. package/dist/executor/KimiExecutor.js.map +1 -0
  13. package/dist/executor/OpenCodeExecutor.d.ts +80 -0
  14. package/dist/executor/OpenCodeExecutor.d.ts.map +1 -0
  15. package/dist/executor/OpenCodeExecutor.js +513 -0
  16. package/dist/executor/OpenCodeExecutor.js.map +1 -0
  17. package/dist/executor/acp/AcpClient.d.ts +47 -40
  18. package/dist/executor/acp/AcpClient.d.ts.map +1 -1
  19. package/dist/executor/acp/AcpClient.js +113 -189
  20. package/dist/executor/acp/AcpClient.js.map +1 -1
  21. package/dist/executor/acp/AcpTypes.d.ts +27 -68
  22. package/dist/executor/acp/AcpTypes.d.ts.map +1 -1
  23. package/dist/executor/acp/AcpTypes.js +0 -9
  24. package/dist/executor/acp/AcpTypes.js.map +1 -1
  25. package/dist/executor/index.d.ts +4 -6
  26. package/dist/executor/index.d.ts.map +1 -1
  27. package/dist/executor/index.js +32 -27
  28. package/dist/executor/index.js.map +1 -1
  29. package/dist/thread/ThreadExecutorPool.js +1 -1
  30. package/dist/thread/ThreadExecutorPool.js.map +1 -1
  31. package/dist/thread/types.d.ts +1 -1
  32. package/dist/thread/types.d.ts.map +1 -1
  33. package/dist/types/config.d.ts +19 -13
  34. package/dist/types/config.d.ts.map +1 -1
  35. package/dist/types/config.js +6 -2
  36. package/dist/types/config.js.map +1 -1
  37. package/package.json +1 -1
@@ -0,0 +1,513 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.OpenCodeExecutor = void 0;
37
+ const fs = __importStar(require("fs"));
38
+ const os = __importStar(require("os"));
39
+ const path = __importStar(require("path"));
40
+ const AcpClient_1 = require("./acp/AcpClient");
41
+ const CANCEL_GRACE_MS = 3_000;
42
+ function mapAcpToolCall(tool) {
43
+ if (tool.rawInput && typeof tool.rawInput === 'object' && !Array.isArray(tool.rawInput)) {
44
+ return { name: mapAcpToolName(tool.kind, tool.title), input: tool.rawInput };
45
+ }
46
+ const title = tool.title ?? tool.toolCallId;
47
+ const key = tool.kind === 'read' || tool.kind === 'write' ? 'file_path'
48
+ : tool.kind === 'list' ? 'pattern'
49
+ : 'command';
50
+ return { name: mapAcpToolName(tool.kind, tool.title), input: { [key]: title } };
51
+ }
52
+ function mapAcpToolName(kind, title) {
53
+ if (kind === 'execute' || kind === 'exec')
54
+ return 'Bash';
55
+ if (kind === 'read')
56
+ return 'Read';
57
+ if (kind === 'write' || kind === 'edit')
58
+ return 'Edit';
59
+ if (kind === 'list' || kind === 'search')
60
+ return 'Glob';
61
+ return kind || title || 'Tool';
62
+ }
63
+ function acpToolResult(tool) {
64
+ const text = [];
65
+ const diffs = [];
66
+ for (const block of tool.content ?? []) {
67
+ if (block.type === 'text')
68
+ text.push(String(block.text ?? ''));
69
+ else if (block.type === 'content' && block.content && typeof block.content === 'object') {
70
+ const nested = block.content;
71
+ if (nested.type === 'text')
72
+ text.push(String(nested.text ?? ''));
73
+ else
74
+ text.push(JSON.stringify(nested));
75
+ }
76
+ else if (block.type === 'diff') {
77
+ const filePath = String(block.path ?? 'file');
78
+ const oldText = String(block.oldText ?? '');
79
+ const newText = String(block.newText ?? '');
80
+ diffs.push([
81
+ `--- a/${filePath}`,
82
+ `+++ b/${filePath}`,
83
+ ...oldText.split('\n').map((line) => `-${line}`),
84
+ ...newText.split('\n').map((line) => `+${line}`),
85
+ ].join('\n'));
86
+ }
87
+ else if ('resource' in block)
88
+ text.push(JSON.stringify(block.resource));
89
+ }
90
+ if (text.length === 0 && tool.rawOutput !== undefined) {
91
+ text.push(typeof tool.rawOutput === 'string' ? tool.rawOutput : JSON.stringify(tool.rawOutput));
92
+ }
93
+ return { content: text.filter(Boolean).join('\n'), ...(diffs.length ? { diff: diffs.join('\n') } : {}) };
94
+ }
95
+ class OpenCodeExecutor {
96
+ directoryGuard;
97
+ autoApprove;
98
+ threadId;
99
+ backendLabel;
100
+ effortConfigId;
101
+ effortAutoValue;
102
+ installCommand;
103
+ authCommand;
104
+ sessionFilePath;
105
+ clientFactory;
106
+ currentWorkingDirectory;
107
+ model;
108
+ effort;
109
+ client = null;
110
+ sessionId = null;
111
+ configOptions = [];
112
+ activeCallbacks = {};
113
+ commandQueue = [];
114
+ isProcessing = false;
115
+ isDestroyed = false;
116
+ abortTimer = null;
117
+ pendingPermission = null;
118
+ activeToolCalls = new Map();
119
+ constructor(directoryGuard, options = {}) {
120
+ this.directoryGuard = directoryGuard;
121
+ this.model = options.model;
122
+ this.effort = options.effort;
123
+ this.autoApprove = options.autoApprove ?? true;
124
+ this.threadId = options.threadId;
125
+ this.backendLabel = options.backendLabel ?? 'OpenCode';
126
+ this.effortConfigId = options.effortConfigId ?? 'effort';
127
+ this.effortAutoValue = options.effortAutoValue ?? 'default';
128
+ this.installCommand = options.installCommand ?? 'npm install --global @opencode/cli';
129
+ this.authCommand = options.authCommand ?? 'opencode auth login';
130
+ const command = options.acpCommand ?? options.openCodeCommand ?? 'opencode';
131
+ const args = options.acpArgs ?? ['acp'];
132
+ this.clientFactory = options.clientFactory
133
+ ?? ((callbacks, cwd) => new AcpClient_1.AcpClient(command, args, cwd, callbacks));
134
+ try {
135
+ this.currentWorkingDirectory = options.initialWorkingDirectory
136
+ ? this.directoryGuard.resolveWorkingDirectory(options.initialWorkingDirectory)
137
+ : process.cwd();
138
+ }
139
+ catch (error) {
140
+ console.warn(`[${this.backendLabel}Executor] Failed to use initial working directory`, error);
141
+ this.currentWorkingDirectory = process.cwd();
142
+ }
143
+ const sessionsDir = options.sessionBaseDir
144
+ ?? path.join(os.homedir(), '.remote-cli', options.sessionNamespace ?? 'opencode-sessions');
145
+ fs.mkdirSync(sessionsDir, { recursive: true });
146
+ this.sessionFilePath = path.join(sessionsDir, `${this.threadId ?? 'default'}.json`);
147
+ this.loadSessionPointer();
148
+ }
149
+ execute(prompt, options = {}) {
150
+ if (this.isDestroyed)
151
+ return Promise.reject(new Error('Executor has been destroyed'));
152
+ return new Promise((resolve, reject) => {
153
+ this.commandQueue.push({ prompt, options, resolve, reject });
154
+ void this.processQueue();
155
+ });
156
+ }
157
+ getCurrentWorkingDirectory() {
158
+ return this.currentWorkingDirectory;
159
+ }
160
+ async setWorkingDirectory(targetPath) {
161
+ const resolved = this.directoryGuard.resolveWorkingDirectory(targetPath);
162
+ if (resolved === this.currentWorkingDirectory)
163
+ return;
164
+ this.currentWorkingDirectory = resolved;
165
+ this.destroyClient();
166
+ this.clearSessionPointer();
167
+ }
168
+ resetContext() {
169
+ this.cancelPendingPermission();
170
+ this.destroyClient();
171
+ this.clearSessionPointer();
172
+ }
173
+ async abort() {
174
+ if (!this.client || !this.sessionId || !this.isProcessing)
175
+ return false;
176
+ this.cancelPendingPermission();
177
+ this.client.sendCancel(this.sessionId);
178
+ this.clearAbortTimer();
179
+ const client = this.client;
180
+ this.abortTimer = setTimeout(() => {
181
+ if (this.client === client && this.isProcessing)
182
+ this.destroyClient();
183
+ }, CANCEL_GRACE_MS);
184
+ this.abortTimer.unref?.();
185
+ return true;
186
+ }
187
+ async destroy() {
188
+ if (this.isDestroyed)
189
+ return;
190
+ this.isDestroyed = true;
191
+ const queued = this.commandQueue.splice(0);
192
+ for (const command of queued)
193
+ command.reject(new Error('Executor has been destroyed'));
194
+ this.cancelPendingPermission();
195
+ this.destroyClient();
196
+ }
197
+ isWaitingInput() {
198
+ return this.pendingPermission !== null;
199
+ }
200
+ sendInput(input) {
201
+ const pending = this.pendingPermission;
202
+ if (!pending)
203
+ return false;
204
+ const normalized = input.trim().toLowerCase();
205
+ if (pending.isQuestion) {
206
+ const cancelIndex = pending.options.findIndex((option) => option.kind.startsWith('reject'));
207
+ if (normalized === 'cancel' || normalized === 'skip') {
208
+ this.pendingPermission = null;
209
+ pending.resolve(cancelIndex);
210
+ return true;
211
+ }
212
+ const numeric = Number.parseInt(normalized, 10);
213
+ const index = Number.isInteger(numeric) && numeric > 0
214
+ ? pending.options.findIndex((option, optionIndex) => optionIndex === numeric - 1 && option.kind.startsWith('allow'))
215
+ : pending.options.findIndex((option) => option.kind.startsWith('allow')
216
+ && (option.name?.trim().toLowerCase() === normalized || option.optionId.toLowerCase() === normalized));
217
+ if (index < 0)
218
+ return false;
219
+ this.pendingPermission = null;
220
+ pending.resolve(index);
221
+ return true;
222
+ }
223
+ const kind = normalized === 'always' ? 'allow_always'
224
+ : normalized === 'yes' || normalized === 'y' || normalized === 'accept' ? 'allow_once'
225
+ : normalized === 'no' || normalized === 'n' || normalized === 'decline' ? 'reject_once'
226
+ : normalized === 'cancel' ? null
227
+ : undefined;
228
+ if (kind === undefined)
229
+ return false;
230
+ this.pendingPermission = null;
231
+ if (kind === null) {
232
+ pending.resolve(-1);
233
+ return true;
234
+ }
235
+ let index = pending.options.findIndex((option) => option.kind === kind);
236
+ if (index < 0 && kind === 'allow_once')
237
+ index = pending.options.findIndex((option) => option.kind.startsWith('allow'));
238
+ if (index < 0 && kind === 'reject_once')
239
+ index = pending.options.findIndex((option) => option.kind.startsWith('reject'));
240
+ pending.resolve(index);
241
+ return true;
242
+ }
243
+ isProcessRunning() {
244
+ return this.client !== null;
245
+ }
246
+ getSessionId() {
247
+ return this.sessionId;
248
+ }
249
+ async listModels() {
250
+ await this.ensureSession();
251
+ const modelOption = this.findConfigOption('model');
252
+ const effortOption = this.findConfigOption(this.effortConfigId);
253
+ return (modelOption?.options ?? []).map((entry) => ({
254
+ id: entry.value,
255
+ displayName: entry.name,
256
+ description: entry.description,
257
+ isDefault: entry.value === modelOption?.currentValue,
258
+ supportedReasoningEfforts: entry.value === modelOption?.currentValue
259
+ ? effortOption?.options?.map((option) => option.value)
260
+ : undefined,
261
+ defaultReasoningEffort: entry.value === modelOption?.currentValue ? 'default' : undefined,
262
+ inputModalities: ['text', 'image'],
263
+ }));
264
+ }
265
+ async setModel(model) {
266
+ const { client, sessionId } = await this.ensureSession();
267
+ const option = this.findConfigOption('model');
268
+ if (option?.options?.length && !option.options.some((entry) => entry.value === model)) {
269
+ return { success: false, error: `Unknown ${this.backendLabel} model: ${model}. Use /model to list available models.` };
270
+ }
271
+ try {
272
+ this.updateConfigOptions(await client.setConfigOption(sessionId, 'model', model));
273
+ this.model = model;
274
+ return { success: true, output: `Model set to ${model}.` };
275
+ }
276
+ catch (error) {
277
+ return { success: false, error: this.friendlyError(error) };
278
+ }
279
+ }
280
+ async setEffort(effort) {
281
+ const { client, sessionId } = await this.ensureSession();
282
+ const value = effort === 'auto' ? this.effortAutoValue : effort;
283
+ const option = this.findConfigOption(this.effortConfigId);
284
+ if (!option)
285
+ return { success: false, error: `The selected ${this.backendLabel} model does not expose reasoning effort controls.` };
286
+ if (effort !== 'auto' && option.options?.length && !option.options.some((entry) => entry.value === value)) {
287
+ return { success: false, error: `Unsupported ${this.backendLabel} reasoning effort: ${effort}.` };
288
+ }
289
+ try {
290
+ this.updateConfigOptions(await client.setConfigOption(sessionId, this.effortConfigId, value));
291
+ this.effort = effort === 'auto' ? undefined : effort;
292
+ return { success: true, output: `Reasoning effort set to ${effort}.` };
293
+ }
294
+ catch (error) {
295
+ return { success: false, error: this.friendlyError(error) };
296
+ }
297
+ }
298
+ async compactWhenFull(onStream) {
299
+ return this.execute('/compact', { onStream });
300
+ }
301
+ async deleteThreadData(_threadId) {
302
+ const stored = this.sessionId;
303
+ try {
304
+ if (stored) {
305
+ const { client } = await this.ensureSession();
306
+ await client.deleteSession(stored);
307
+ }
308
+ }
309
+ catch (error) {
310
+ console.warn(`[${this.backendLabel}Executor] Failed to delete session`, error);
311
+ }
312
+ finally {
313
+ this.destroyClient();
314
+ this.clearSessionPointer();
315
+ }
316
+ }
317
+ async processQueue() {
318
+ if (this.isProcessing || this.commandQueue.length === 0)
319
+ return;
320
+ const command = this.commandQueue.shift();
321
+ this.isProcessing = true;
322
+ try {
323
+ command.resolve(await this.executeQueued(command.prompt, command.options));
324
+ }
325
+ catch (error) {
326
+ // A rejected ACP request usually means the child process or transport is
327
+ // no longer usable. Recreate it on the next command and resume the
328
+ // persisted session instead of leaving subsequent requests pending.
329
+ this.destroyClient();
330
+ command.resolve({ success: false, error: this.friendlyError(error) });
331
+ }
332
+ finally {
333
+ this.activeCallbacks = {};
334
+ this.activeToolCalls.clear();
335
+ this.clearAbortTimer();
336
+ this.isProcessing = false;
337
+ void this.processQueue();
338
+ }
339
+ }
340
+ async executeQueued(prompt, options) {
341
+ const blocks = [];
342
+ if (prompt)
343
+ blocks.push({ type: 'text', text: prompt });
344
+ for (const attachment of options.attachments ?? []) {
345
+ if (attachment.type === 'image') {
346
+ blocks.push({ type: 'image', data: attachment.data, mimeType: attachment.mimeType });
347
+ }
348
+ }
349
+ if (blocks.length === 0)
350
+ return { success: false, error: 'Empty prompt' };
351
+ let output = '';
352
+ this.activeCallbacks = {
353
+ onStream: (chunk) => {
354
+ output += chunk;
355
+ options.onStream?.(chunk);
356
+ },
357
+ onToolUse: options.onToolUse,
358
+ onToolResult: options.onToolResult,
359
+ onPlanMode: options.onPlanMode,
360
+ onImage: options.onImage,
361
+ };
362
+ const { client, sessionId } = await this.ensureSession();
363
+ const result = await client.prompt(sessionId, blocks);
364
+ const success = !['refusal', 'cancelled', 'error'].includes(result.stopReason);
365
+ return {
366
+ success,
367
+ output,
368
+ error: success ? undefined : `${this.backendLabel} stopped with reason: ${result.stopReason}`,
369
+ sessionAbbr: sessionId.slice(0, 8),
370
+ };
371
+ }
372
+ async ensureSession() {
373
+ if (this.client && this.sessionId)
374
+ return { client: this.client, sessionId: this.sessionId };
375
+ const client = this.createClient();
376
+ try {
377
+ await client.initialize();
378
+ let result;
379
+ if (this.sessionId) {
380
+ try {
381
+ result = await client.loadSession(this.sessionId, this.currentWorkingDirectory);
382
+ }
383
+ catch (error) {
384
+ console.warn(`[${this.backendLabel}Executor] Stored session could not be loaded; starting fresh`, error);
385
+ this.clearSessionPointer();
386
+ }
387
+ }
388
+ if (!this.sessionId) {
389
+ result = await client.newSession(this.currentWorkingDirectory);
390
+ if (!result.sessionId)
391
+ throw new Error(`${this.backendLabel} did not return a session ID`);
392
+ this.sessionId = result.sessionId;
393
+ this.saveSessionPointer();
394
+ }
395
+ this.updateConfigOptions(result);
396
+ this.client = client;
397
+ await this.applyConfiguredOptions(client, this.sessionId);
398
+ return { client, sessionId: this.sessionId };
399
+ }
400
+ catch (error) {
401
+ client.destroy();
402
+ throw error;
403
+ }
404
+ }
405
+ createClient() {
406
+ const callbacks = {
407
+ onTextChunk: (content) => this.handleContent(content, false),
408
+ onThoughtChunk: (content) => this.handleContent(content, true),
409
+ onToolCall: (tool) => {
410
+ const previous = this.activeToolCalls.get(tool.toolCallId);
411
+ const merged = { ...previous, ...tool };
412
+ this.activeToolCalls.set(tool.toolCallId, merged);
413
+ const mapped = mapAcpToolCall(merged);
414
+ this.activeCallbacks.onToolUse?.({ id: tool.toolCallId, ...mapped });
415
+ },
416
+ onToolResult: (tool) => {
417
+ const merged = { ...this.activeToolCalls.get(tool.toolCallId), ...tool };
418
+ this.activeToolCalls.delete(tool.toolCallId);
419
+ this.activeCallbacks.onToolResult?.({
420
+ tool_use_id: tool.toolCallId,
421
+ ...acpToolResult(merged),
422
+ is_error: tool.status === 'failed',
423
+ });
424
+ },
425
+ onPlan: (entries) => this.activeCallbacks.onPlanMode?.(entries.map((entry) => `[${entry.status ?? 'pending'}] ${entry.content}`).join('\n')),
426
+ onConfigOptions: (options) => { this.configOptions = options; },
427
+ onPermissionRequest: async (title, options) => {
428
+ const isQuestion = options.some((option) => /^q\d+_opt_\d+$/.test(option.optionId));
429
+ if (this.autoApprove && !isQuestion) {
430
+ const allowed = options.findIndex((option) => option.kind === 'allow_once');
431
+ return allowed >= 0 ? allowed : 0;
432
+ }
433
+ this.cancelPendingPermission();
434
+ const prompt = isQuestion
435
+ ? [`\n${title}`, ...options.filter((option) => option.kind.startsWith('allow')).map((option, index) => `${index + 1}. ${option.name ?? option.optionId}`), 'Reply with an option number, option name, skip, or cancel.\n'].join('\n')
436
+ : `\nApproval required for ${title}. Reply yes, always, no, or cancel.\n`;
437
+ this.activeCallbacks.onStream?.(prompt);
438
+ return new Promise((resolve) => {
439
+ this.pendingPermission = { title, options, isQuestion, resolve };
440
+ });
441
+ },
442
+ };
443
+ return this.clientFactory(callbacks, this.currentWorkingDirectory);
444
+ }
445
+ handleContent(content, thinking) {
446
+ if (content.type === 'text' && typeof content.text === 'string') {
447
+ this.activeCallbacks.onStream?.(content.text);
448
+ }
449
+ else if (!thinking && content.type === 'image' && typeof content.data === 'string' && typeof content.mimeType === 'string') {
450
+ this.activeCallbacks.onImage?.({ type: 'image', data: content.data, mimeType: content.mimeType });
451
+ }
452
+ }
453
+ async applyConfiguredOptions(client, sessionId) {
454
+ if (this.model)
455
+ this.updateConfigOptions(await client.setConfigOption(sessionId, 'model', this.model));
456
+ if (this.effort)
457
+ this.updateConfigOptions(await client.setConfigOption(sessionId, this.effortConfigId, this.effort));
458
+ }
459
+ updateConfigOptions(result) {
460
+ if (result?.configOptions)
461
+ this.configOptions = result.configOptions;
462
+ }
463
+ findConfigOption(id) {
464
+ return this.configOptions.find((option) => option.id === id);
465
+ }
466
+ loadSessionPointer() {
467
+ try {
468
+ const value = JSON.parse(fs.readFileSync(this.sessionFilePath, 'utf8'));
469
+ if (value.id && (!value.cwd || value.cwd === this.currentWorkingDirectory))
470
+ this.sessionId = value.id;
471
+ }
472
+ catch { }
473
+ }
474
+ saveSessionPointer() {
475
+ fs.writeFileSync(this.sessionFilePath, JSON.stringify({ id: this.sessionId, cwd: this.currentWorkingDirectory }), 'utf8');
476
+ }
477
+ clearSessionPointer() {
478
+ this.sessionId = null;
479
+ this.configOptions = [];
480
+ try {
481
+ fs.unlinkSync(this.sessionFilePath);
482
+ }
483
+ catch { }
484
+ }
485
+ destroyClient() {
486
+ this.clearAbortTimer();
487
+ this.cancelPendingPermission();
488
+ this.client?.destroy();
489
+ this.client = null;
490
+ }
491
+ clearAbortTimer() {
492
+ if (this.abortTimer)
493
+ clearTimeout(this.abortTimer);
494
+ this.abortTimer = null;
495
+ }
496
+ cancelPendingPermission() {
497
+ const pending = this.pendingPermission;
498
+ this.pendingPermission = null;
499
+ pending?.resolve(-1);
500
+ }
501
+ friendlyError(error) {
502
+ const message = error instanceof Error ? error.message : String(error);
503
+ if (/ENOENT|not found/i.test(message)) {
504
+ return `${this.backendLabel} CLI is not installed or not found on PATH. Install it with \`${this.installCommand}\`, or use /backend to switch backends.`;
505
+ }
506
+ if (/provider\.auth|authentication required|no provider configured|not available in your country/i.test(message)) {
507
+ return `${this.backendLabel} authentication failed: ${message}. Use /model to choose an available model or run \`${this.authCommand}\`.`;
508
+ }
509
+ return message;
510
+ }
511
+ }
512
+ exports.OpenCodeExecutor = OpenCodeExecutor;
513
+ //# sourceMappingURL=OpenCodeExecutor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OpenCodeExecutor.js","sourceRoot":"","sources":["../../src/executor/OpenCodeExecutor.ts"],"names":[],"mappings":"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"}
@@ -1,50 +1,58 @@
1
- import type { PermissionOption, ContentBlock } from './AcpTypes';
1
+ import type { AcpConfigOption, AcpContentBlock, AcpPermissionOption, AcpSessionResult } from './AcpTypes';
2
+ export interface AcpToolCallUpdate {
3
+ toolCallId: string;
4
+ title?: string;
5
+ kind?: string;
6
+ status?: string;
7
+ rawInput?: unknown;
8
+ content?: Array<Record<string, unknown>>;
9
+ rawOutput?: unknown;
10
+ }
2
11
  export interface AcpEventCallbacks {
3
- onTextChunk: (text: string) => void;
4
- onThoughtChunk?: (text: string) => void;
5
- onToolCall?: (toolCallId: string, title: string, kind?: string) => void;
6
- onToolResult?: (toolCallId: string, status: string, output?: string) => void;
7
- onPlan?: (text: string) => void;
8
- /** Returns the index of the chosen option (0 = first = typically allow_once). */
9
- onPermissionRequest?: (title: string, options: PermissionOption[]) => Promise<number>;
12
+ onTextChunk?: (content: AcpContentBlock) => void;
13
+ onThoughtChunk?: (content: AcpContentBlock) => void;
14
+ onToolCall?: (toolCall: AcpToolCallUpdate) => void;
15
+ onToolResult?: (toolCall: AcpToolCallUpdate) => void;
16
+ onPlan?: (entries: Array<{
17
+ content: string;
18
+ status?: string;
19
+ priority?: string;
20
+ }>) => void;
21
+ onConfigOptions?: (options: AcpConfigOption[]) => void;
22
+ onUsage?: (update: Record<string, unknown>) => void;
23
+ onPermissionRequest?: (title: string, options: AcpPermissionOption[]) => Promise<number>;
24
+ }
25
+ export interface AcpTransport {
26
+ initialize(): Promise<unknown>;
27
+ newSession(cwd: string): Promise<AcpSessionResult>;
28
+ loadSession(sessionId: string, cwd: string): Promise<AcpSessionResult>;
29
+ prompt(sessionId: string, blocks: AcpContentBlock[]): Promise<{
30
+ stopReason: string;
31
+ }>;
32
+ setConfigOption(sessionId: string, configId: string, value: string): Promise<AcpSessionResult>;
33
+ deleteSession(sessionId: string): Promise<void>;
34
+ sendCancel(sessionId: string): void;
35
+ destroy(): void;
10
36
  }
11
- /**
12
- * Bidirectional JSON-RPC 2.0 transport for Gemini CLI ACP.
13
- *
14
- * Improvements over the previous version (inspired by acpx):
15
- * - Uses canonical types from @agentclientprotocol/sdk
16
- * - Multi-stage graceful shutdown: stdin close → SIGTERM → SIGKILL
17
- * - Explicit sendCancel() for cooperative in-flight cancellation
18
- * - Strict JSON-RPC message validation before routing
19
- * - Handles the 'close' event in addition to 'exit' for reliable cleanup
20
- */
21
- export declare class AcpClient {
22
- private child;
23
- private pendingRequests;
37
+ export declare class AcpClient implements AcpTransport {
38
+ private readonly child;
39
+ private readonly callbacks;
40
+ private readonly pendingRequests;
41
+ private readonly rl;
24
42
  private nextId;
25
- private callbacks;
26
- private rl;
27
43
  private destroyed;
44
+ private closed;
28
45
  private killTimer;
29
- constructor(geminiCommand: string, geminiArgs: string[], cwd: string, callbacks: AcpEventCallbacks);
30
- initialize(): Promise<void>;
31
- newSession(cwd: string): Promise<string>;
32
- /** Switch a session to YOLO mode so no per-tool permission requests are sent. */
33
- setSessionMode(sessionId: string, modeId: string): Promise<void>;
34
- prompt(sessionId: string, blocks: ContentBlock[]): Promise<{
46
+ constructor(command: string, args: string[], cwd: string, callbacks: AcpEventCallbacks);
47
+ initialize(): Promise<unknown>;
48
+ newSession(cwd: string): Promise<AcpSessionResult>;
49
+ loadSession(sessionId: string, cwd: string): Promise<AcpSessionResult>;
50
+ prompt(sessionId: string, blocks: AcpContentBlock[]): Promise<{
35
51
  stopReason: string;
36
52
  }>;
37
- /**
38
- * Send a cooperative cancel notification for an in-flight prompt.
39
- * The agent may still send final updates before replying with stopReason='cancelled'.
40
- */
53
+ setConfigOption(sessionId: string, configId: string, value: string): Promise<AcpSessionResult>;
54
+ deleteSession(sessionId: string): Promise<void>;
41
55
  sendCancel(sessionId: string): void;
42
- /**
43
- * Graceful multi-stage shutdown (mirrors acpx):
44
- * 1. Close stdin so the agent sees EOF
45
- * 2. Send SIGTERM and wait SIGKILL_GRACE_MS
46
- * 3. If still alive, send SIGKILL
47
- */
48
56
  destroy(): void;
49
57
  private sendRequest;
50
58
  private sendNotification;
@@ -55,7 +63,6 @@ export declare class AcpClient {
55
63
  private handleResponse;
56
64
  private handleNotification;
57
65
  private handleServerRequest;
58
- private handleSessionUpdate;
59
66
  private handlePermissionRequest;
60
67
  private rejectAllPending;
61
68
  private clearKillTimer;