@yu_robotics/remote-cli 1.6.30 → 1.6.34

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 (77) hide show
  1. package/dist/client/MessageHandler.d.ts +5 -3
  2. package/dist/client/MessageHandler.d.ts.map +1 -1
  3. package/dist/client/MessageHandler.js +26 -16
  4. package/dist/client/MessageHandler.js.map +1 -1
  5. package/dist/commands/start.d.ts +7 -0
  6. package/dist/commands/start.d.ts.map +1 -1
  7. package/dist/commands/start.js +21 -5
  8. package/dist/commands/start.js.map +1 -1
  9. package/dist/config/ConfigManager.d.ts +2 -0
  10. package/dist/config/ConfigManager.d.ts.map +1 -1
  11. package/dist/config/ConfigManager.js +34 -2
  12. package/dist/config/ConfigManager.js.map +1 -1
  13. package/dist/executor/AcpExecutor.d.ts +79 -0
  14. package/dist/executor/AcpExecutor.d.ts.map +1 -0
  15. package/dist/executor/AcpExecutor.js +532 -0
  16. package/dist/executor/AcpExecutor.js.map +1 -0
  17. package/dist/executor/ClaudePersistentExecutor.d.ts.map +1 -1
  18. package/dist/executor/ClaudePersistentExecutor.js +2 -1
  19. package/dist/executor/ClaudePersistentExecutor.js.map +1 -1
  20. package/dist/executor/KimiExecutor.d.ts +2 -2
  21. package/dist/executor/KimiExecutor.d.ts.map +1 -1
  22. package/dist/executor/KimiExecutor.js +2 -2
  23. package/dist/executor/KimiExecutor.js.map +1 -1
  24. package/dist/executor/OpenCodeExecutor.d.ts +4 -65
  25. package/dist/executor/OpenCodeExecutor.d.ts.map +1 -1
  26. package/dist/executor/OpenCodeExecutor.js +19 -504
  27. package/dist/executor/OpenCodeExecutor.js.map +1 -1
  28. package/dist/executor/ZCodeExecutor.d.ts +20 -0
  29. package/dist/executor/ZCodeExecutor.d.ts.map +1 -0
  30. package/dist/executor/ZCodeExecutor.js +37 -0
  31. package/dist/executor/ZCodeExecutor.js.map +1 -0
  32. package/dist/executor/acp/AcpClient.d.ts +3 -0
  33. package/dist/executor/acp/AcpClient.d.ts.map +1 -1
  34. package/dist/executor/acp/AcpClient.js.map +1 -1
  35. package/dist/executor/index.d.ts +6 -9
  36. package/dist/executor/index.d.ts.map +1 -1
  37. package/dist/executor/index.js +26 -54
  38. package/dist/executor/index.js.map +1 -1
  39. package/dist/executor/zcode/ZCodeClient.d.ts +73 -0
  40. package/dist/executor/zcode/ZCodeClient.d.ts.map +1 -0
  41. package/dist/executor/zcode/ZCodeClient.js +681 -0
  42. package/dist/executor/zcode/ZCodeClient.js.map +1 -0
  43. package/dist/executor/zcode/ZCodeCommand.d.ts +9 -0
  44. package/dist/executor/zcode/ZCodeCommand.d.ts.map +1 -0
  45. package/dist/executor/zcode/ZCodeCommand.js +122 -0
  46. package/dist/executor/zcode/ZCodeCommand.js.map +1 -0
  47. package/dist/thread/ThreadExecutorPool.js +2 -2
  48. package/dist/thread/ThreadExecutorPool.js.map +1 -1
  49. package/dist/types/config.d.ts +13 -5
  50. package/dist/types/config.d.ts.map +1 -1
  51. package/dist/types/config.js +2 -0
  52. package/dist/types/config.js.map +1 -1
  53. package/package.json +2 -2
  54. package/dist/executor/ClaudeExecutor.d.ts +0 -93
  55. package/dist/executor/ClaudeExecutor.d.ts.map +0 -1
  56. package/dist/executor/ClaudeExecutor.js +0 -380
  57. package/dist/executor/ClaudeExecutor.js.map +0 -1
  58. package/dist/executor/CodexExecutor.d.ts +0 -140
  59. package/dist/executor/CodexExecutor.d.ts.map +0 -1
  60. package/dist/executor/CodexExecutor.js +0 -789
  61. package/dist/executor/CodexExecutor.js.map +0 -1
  62. package/dist/executor/GeminiExecutor.d.ts +0 -93
  63. package/dist/executor/GeminiExecutor.d.ts.map +0 -1
  64. package/dist/executor/GeminiExecutor.js +0 -415
  65. package/dist/executor/GeminiExecutor.js.map +0 -1
  66. package/dist/executor/acp/SessionManager.d.ts +0 -41
  67. package/dist/executor/acp/SessionManager.d.ts.map +0 -1
  68. package/dist/executor/acp/SessionManager.js +0 -152
  69. package/dist/executor/acp/SessionManager.js.map +0 -1
  70. package/dist/utils/processUtils.d.ts +0 -16
  71. package/dist/utils/processUtils.d.ts.map +0 -1
  72. package/dist/utils/processUtils.js +0 -37
  73. package/dist/utils/processUtils.js.map +0 -1
  74. package/dist/worktree/WorktreeManager.d.ts +0 -119
  75. package/dist/worktree/WorktreeManager.d.ts.map +0 -1
  76. package/dist/worktree/WorktreeManager.js +0 -451
  77. package/dist/worktree/WorktreeManager.js.map +0 -1
@@ -1,513 +1,28 @@
1
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
2
  Object.defineProperty(exports, "__esModule", { value: true });
36
3
  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();
4
+ const AcpExecutor_1 = require("./AcpExecutor");
5
+ /** OpenCode executor backed by the official persistent ACP server. */
6
+ class OpenCodeExecutor extends AcpExecutor_1.AcpExecutor {
119
7
  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();
8
+ super(directoryGuard, {
9
+ model: options.model,
10
+ effort: options.effort,
11
+ autoApprove: options.autoApprove,
12
+ initialWorkingDirectory: options.initialWorkingDirectory,
13
+ threadId: options.threadId,
14
+ sessionBaseDir: options.sessionBaseDir,
15
+ clientFactory: options.clientFactory,
16
+ acpCommand: options.openCodeCommand ?? 'opencode',
17
+ acpArgs: ['acp'],
18
+ backendLabel: 'OpenCode',
19
+ sessionNamespace: 'opencode-sessions',
20
+ effortConfigId: 'effort',
21
+ effortAutoValue: 'default',
22
+ installCommand: 'npm install --global @opencode/cli',
23
+ authCommand: 'opencode auth login',
155
24
  });
156
25
  }
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
26
  }
512
27
  exports.OpenCodeExecutor = OpenCodeExecutor;
513
28
  //# sourceMappingURL=OpenCodeExecutor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"OpenCodeExecutor.js","sourceRoot":"","sources":["../../src/executor/OpenCodeExecutor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"OpenCodeExecutor.js","sourceRoot":"","sources":["../../src/executor/OpenCodeExecutor.ts"],"names":[],"mappings":";;;AACA,+CAA4C;AAe5C,sEAAsE;AACtE,MAAa,gBAAiB,SAAQ,yBAAW;IAC/C,YAAY,cAA8B,EAAE,UAAmC,EAAE;QAC/E,KAAK,CAAC,cAAc,EAAE;YACpB,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,uBAAuB,EAAE,OAAO,CAAC,uBAAuB;YACxD,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,cAAc,EAAE,OAAO,CAAC,cAAc;YACtC,aAAa,EAAE,OAAO,CAAC,aAAa;YACpC,UAAU,EAAE,OAAO,CAAC,eAAe,IAAI,UAAU;YACjD,OAAO,EAAE,CAAC,KAAK,CAAC;YAChB,YAAY,EAAE,UAAU;YACxB,gBAAgB,EAAE,mBAAmB;YACrC,cAAc,EAAE,QAAQ;YACxB,eAAe,EAAE,SAAS;YAC1B,cAAc,EAAE,oCAAoC;YACpD,WAAW,EAAE,qBAAqB;SACnC,CAAC,CAAC;IACL,CAAC;CACF;AApBD,4CAoBC"}
@@ -0,0 +1,20 @@
1
+ import { DirectoryGuard } from '../security/DirectoryGuard';
2
+ import { AcpExecutor } from './AcpExecutor';
3
+ import type { AcpEventCallbacks, AcpTransport } from './acp/AcpClient';
4
+ import type { ZCodeLaunchSpec } from './zcode/ZCodeCommand';
5
+ export interface ZCodeExecutorOptions {
6
+ model?: string;
7
+ effort?: string;
8
+ autoApprove?: boolean;
9
+ initialWorkingDirectory?: string;
10
+ zcodeCommand?: string;
11
+ threadId?: string;
12
+ sessionBaseDir?: string;
13
+ launch?: ZCodeLaunchSpec;
14
+ clientFactory?: (callbacks: AcpEventCallbacks, cwd: string) => AcpTransport;
15
+ }
16
+ /** Persistent executor that talks directly to the official ZCode app-server. */
17
+ export declare class ZCodeExecutor extends AcpExecutor {
18
+ constructor(directoryGuard: DirectoryGuard, options?: ZCodeExecutorOptions);
19
+ }
20
+ //# sourceMappingURL=ZCodeExecutor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ZCodeExecutor.d.ts","sourceRoot":"","sources":["../../src/executor/ZCodeExecutor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,WAAW,EAA2B,MAAM,eAAe,CAAC;AACrE,OAAO,KAAK,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEvE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAE5D,MAAM,WAAW,oBAAoB;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB,aAAa,CAAC,EAAE,CAAC,SAAS,EAAE,iBAAiB,EAAE,GAAG,EAAE,MAAM,KAAK,YAAY,CAAC;CAC7E;AAED,gFAAgF;AAChF,qBAAa,aAAc,SAAQ,WAAW;gBAChC,cAAc,EAAE,cAAc,EAAE,OAAO,GAAE,oBAAyB;CA2B/E"}
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ZCodeExecutor = void 0;
4
+ const AcpExecutor_1 = require("./AcpExecutor");
5
+ const ZCodeClient_1 = require("./zcode/ZCodeClient");
6
+ /** Persistent executor that talks directly to the official ZCode app-server. */
7
+ class ZCodeExecutor extends AcpExecutor_1.AcpExecutor {
8
+ constructor(directoryGuard, options = {}) {
9
+ const autoApprove = options.autoApprove ?? true;
10
+ const clientFactory = options.clientFactory ?? ((callbacks, cwd) => new ZCodeClient_1.ZCodeClient({
11
+ cwd,
12
+ command: options.zcodeCommand,
13
+ autoApprove,
14
+ launch: options.launch,
15
+ }, callbacks));
16
+ const baseOptions = {
17
+ model: options.model,
18
+ effort: options.effort,
19
+ autoApprove,
20
+ initialWorkingDirectory: options.initialWorkingDirectory,
21
+ acpCommand: options.zcodeCommand ?? 'zcode',
22
+ acpArgs: [],
23
+ backendLabel: 'ZCode',
24
+ sessionNamespace: 'zcode-sessions',
25
+ effortConfigId: 'thought',
26
+ effortAutoValue: 'max',
27
+ installCommand: 'download ZCode from https://zcode.z.ai/en/docs/install',
28
+ authCommand: 'zcode login',
29
+ threadId: options.threadId,
30
+ sessionBaseDir: options.sessionBaseDir,
31
+ clientFactory,
32
+ };
33
+ super(directoryGuard, baseOptions);
34
+ }
35
+ }
36
+ exports.ZCodeExecutor = ZCodeExecutor;
37
+ //# sourceMappingURL=ZCodeExecutor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ZCodeExecutor.js","sourceRoot":"","sources":["../../src/executor/ZCodeExecutor.ts"],"names":[],"mappings":";;;AACA,+CAAqE;AAErE,qDAAkD;AAelD,gFAAgF;AAChF,MAAa,aAAc,SAAQ,yBAAW;IAC5C,YAAY,cAA8B,EAAE,UAAgC,EAAE;QAC5E,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,IAAI,CAAC;QAChD,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,CAAC,CAAC,SAA4B,EAAE,GAAW,EAAE,EAAE,CAAC,IAAI,yBAAW,CAAC;YAC7G,GAAG;YACH,OAAO,EAAE,OAAO,CAAC,YAAY;YAC7B,WAAW;YACX,MAAM,EAAE,OAAO,CAAC,MAAM;SACvB,EAAE,SAAS,CAAC,CAAC,CAAC;QACf,MAAM,WAAW,GAAuB;YACtC,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,WAAW;YACX,uBAAuB,EAAE,OAAO,CAAC,uBAAuB;YACxD,UAAU,EAAE,OAAO,CAAC,YAAY,IAAI,OAAO;YAC3C,OAAO,EAAE,EAAE;YACX,YAAY,EAAE,OAAO;YACrB,gBAAgB,EAAE,gBAAgB;YAClC,cAAc,EAAE,SAAS;YACzB,eAAe,EAAE,KAAK;YACtB,cAAc,EAAE,wDAAwD;YACxE,WAAW,EAAE,aAAa;YAC1B,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,cAAc,EAAE,OAAO,CAAC,cAAc;YACtC,aAAa;SACd,CAAC;QACF,KAAK,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;IACrC,CAAC;CACF;AA5BD,sCA4BC"}
@@ -30,6 +30,9 @@ export interface AcpTransport {
30
30
  stopReason: string;
31
31
  }>;
32
32
  setConfigOption(sessionId: string, configId: string, value: string): Promise<AcpSessionResult>;
33
+ compactSession?(sessionId: string): Promise<{
34
+ stopReason: string;
35
+ }>;
33
36
  deleteSession(sessionId: string): Promise<void>;
34
37
  sendCancel(sessionId: string): void;
35
38
  destroy(): void;