@yu_robotics/remote-cli 1.6.26 → 1.6.32

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 (85) hide show
  1. package/README.md +8 -8
  2. package/dist/client/MessageHandler.d.ts +5 -3
  3. package/dist/client/MessageHandler.d.ts.map +1 -1
  4. package/dist/client/MessageHandler.js +57 -26
  5. package/dist/client/MessageHandler.js.map +1 -1
  6. package/dist/commands/start.d.ts +7 -0
  7. package/dist/commands/start.d.ts.map +1 -1
  8. package/dist/commands/start.js +29 -8
  9. package/dist/commands/start.js.map +1 -1
  10. package/dist/config/ConfigManager.d.ts +2 -0
  11. package/dist/config/ConfigManager.d.ts.map +1 -1
  12. package/dist/config/ConfigManager.js +34 -2
  13. package/dist/config/ConfigManager.js.map +1 -1
  14. package/dist/executor/AcpExecutor.d.ts +79 -0
  15. package/dist/executor/AcpExecutor.d.ts.map +1 -0
  16. package/dist/executor/AcpExecutor.js +532 -0
  17. package/dist/executor/AcpExecutor.js.map +1 -0
  18. package/dist/executor/ClaudePersistentExecutor.d.ts.map +1 -1
  19. package/dist/executor/ClaudePersistentExecutor.js +2 -1
  20. package/dist/executor/ClaudePersistentExecutor.js.map +1 -1
  21. package/dist/executor/KimiExecutor.d.ts +18 -0
  22. package/dist/executor/KimiExecutor.d.ts.map +1 -0
  23. package/dist/executor/KimiExecutor.js +28 -0
  24. package/dist/executor/KimiExecutor.js.map +1 -0
  25. package/dist/executor/OpenCodeExecutor.d.ts +19 -0
  26. package/dist/executor/OpenCodeExecutor.d.ts.map +1 -0
  27. package/dist/executor/OpenCodeExecutor.js +28 -0
  28. package/dist/executor/OpenCodeExecutor.js.map +1 -0
  29. package/dist/executor/ZCodeExecutor.d.ts +20 -0
  30. package/dist/executor/ZCodeExecutor.d.ts.map +1 -0
  31. package/dist/executor/ZCodeExecutor.js +37 -0
  32. package/dist/executor/ZCodeExecutor.js.map +1 -0
  33. package/dist/executor/acp/AcpClient.d.ts +50 -40
  34. package/dist/executor/acp/AcpClient.d.ts.map +1 -1
  35. package/dist/executor/acp/AcpClient.js +113 -189
  36. package/dist/executor/acp/AcpClient.js.map +1 -1
  37. package/dist/executor/acp/AcpTypes.d.ts +27 -68
  38. package/dist/executor/acp/AcpTypes.d.ts.map +1 -1
  39. package/dist/executor/acp/AcpTypes.js +0 -9
  40. package/dist/executor/acp/AcpTypes.js.map +1 -1
  41. package/dist/executor/index.d.ts +8 -13
  42. package/dist/executor/index.d.ts.map +1 -1
  43. package/dist/executor/index.js +55 -78
  44. package/dist/executor/index.js.map +1 -1
  45. package/dist/executor/zcode/ZCodeClient.d.ts +73 -0
  46. package/dist/executor/zcode/ZCodeClient.d.ts.map +1 -0
  47. package/dist/executor/zcode/ZCodeClient.js +681 -0
  48. package/dist/executor/zcode/ZCodeClient.js.map +1 -0
  49. package/dist/executor/zcode/ZCodeCommand.d.ts +9 -0
  50. package/dist/executor/zcode/ZCodeCommand.d.ts.map +1 -0
  51. package/dist/executor/zcode/ZCodeCommand.js +122 -0
  52. package/dist/executor/zcode/ZCodeCommand.js.map +1 -0
  53. package/dist/thread/ThreadExecutorPool.js +2 -2
  54. package/dist/thread/ThreadExecutorPool.js.map +1 -1
  55. package/dist/thread/types.d.ts +1 -1
  56. package/dist/thread/types.d.ts.map +1 -1
  57. package/dist/types/config.d.ts +30 -16
  58. package/dist/types/config.d.ts.map +1 -1
  59. package/dist/types/config.js +8 -2
  60. package/dist/types/config.js.map +1 -1
  61. package/package.json +2 -2
  62. package/dist/executor/ClaudeExecutor.d.ts +0 -93
  63. package/dist/executor/ClaudeExecutor.d.ts.map +0 -1
  64. package/dist/executor/ClaudeExecutor.js +0 -380
  65. package/dist/executor/ClaudeExecutor.js.map +0 -1
  66. package/dist/executor/CodexExecutor.d.ts +0 -140
  67. package/dist/executor/CodexExecutor.d.ts.map +0 -1
  68. package/dist/executor/CodexExecutor.js +0 -789
  69. package/dist/executor/CodexExecutor.js.map +0 -1
  70. package/dist/executor/GeminiExecutor.d.ts +0 -93
  71. package/dist/executor/GeminiExecutor.d.ts.map +0 -1
  72. package/dist/executor/GeminiExecutor.js +0 -415
  73. package/dist/executor/GeminiExecutor.js.map +0 -1
  74. package/dist/executor/acp/SessionManager.d.ts +0 -41
  75. package/dist/executor/acp/SessionManager.d.ts.map +0 -1
  76. package/dist/executor/acp/SessionManager.js +0 -152
  77. package/dist/executor/acp/SessionManager.js.map +0 -1
  78. package/dist/utils/processUtils.d.ts +0 -16
  79. package/dist/utils/processUtils.d.ts.map +0 -1
  80. package/dist/utils/processUtils.js +0 -37
  81. package/dist/utils/processUtils.js.map +0 -1
  82. package/dist/worktree/WorktreeManager.d.ts +0 -119
  83. package/dist/worktree/WorktreeManager.d.ts.map +0 -1
  84. package/dist/worktree/WorktreeManager.js +0 -451
  85. package/dist/worktree/WorktreeManager.js.map +0 -1
@@ -1,15 +1,15 @@
1
1
  import { DirectoryGuard } from '../security/DirectoryGuard';
2
- import { ClaudeExecutor } from './ClaudeExecutor';
3
2
  import { ClaudePersistentExecutor } from './ClaudePersistentExecutor';
4
3
  import type { IExecutor } from './IExecutor';
5
4
  import type { ExecutorConfig } from '../types/config';
6
- export type { ClaudeExecuteOptions, ClaudeExecuteResult } from './ClaudeExecutor';
7
5
  export type { PersistentClaudeOptions, PersistentClaudeResult } from './ClaudePersistentExecutor';
8
- export { ClaudeExecutor } from './ClaudeExecutor';
6
+ export type { PersistentClaudeOptions as ClaudeExecuteOptions, PersistentClaudeResult as ClaudeExecuteResult, } from './ClaudePersistentExecutor';
9
7
  export { ClaudePersistentExecutor } from './ClaudePersistentExecutor';
10
8
  export { AgyExecutor } from './AgyExecutor';
11
- export { CodexExecutor } from './CodexExecutor';
12
9
  export { CodexAppServerExecutor } from './CodexAppServerExecutor';
10
+ export { OpenCodeExecutor } from './OpenCodeExecutor';
11
+ export { KimiExecutor } from './KimiExecutor';
12
+ export { ZCodeExecutor } from './ZCodeExecutor';
13
13
  export type { ExecutorModelInfo, IExecutor } from './IExecutor';
14
14
  /**
15
15
  * Executor type
@@ -19,20 +19,15 @@ export type ExecutorType = 'persistent' | 'spawn' | 'auto';
19
19
  * Create an appropriate Claude executor (legacy API — preserved for backward compatibility)
20
20
  *
21
21
  * @param directoryGuard Directory guard instance
22
- * @param type Executor type: 'persistent' (long-running process), 'spawn' (one-shot process), or 'auto' (choose based on environment)
22
+ * @param type Executor type. The legacy 'spawn' value is mapped to persistent mode.
23
23
  * @param initialWorkingDirectory Optional initial working directory for persistent executor
24
24
  * @returns Executor instance
25
25
  */
26
- export declare function createClaudeExecutor(directoryGuard: DirectoryGuard, type?: ExecutorType, initialWorkingDirectory?: string): ClaudeExecutor | ClaudePersistentExecutor;
26
+ export declare function createClaudeExecutor(directoryGuard: DirectoryGuard, type?: ExecutorType, initialWorkingDirectory?: string): ClaudePersistentExecutor;
27
27
  /**
28
28
  * Create an executor based on the executor config.
29
- * Supports Claude (persistent / spawn / auto), AGY (Antigravity CLI,
30
- * stream-json protocol), and Codex (app-server by default, with exec fallback).
31
- *
32
- * Legacy note: configs written before the Gemini→AGY migration may still
33
- * say `type: 'gemini'`. That slot now maps to the AGY backend (the Gemini
34
- * CLI/ACP stack was removed), with `executor.gemini.*` read as a fallback
35
- * for `executor.agy.*` where applicable.
29
+ * Supports Claude (persistent), AGY (stream-json), Codex (app-server),
30
+ * OpenCode and Kimi Code (ACP), and official ZCode (app-server).
36
31
  *
37
32
  * @param directoryGuard Directory guard instance
38
33
  * @param executorConfig Executor config from remote-cli config (defaults to auto)
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/executor/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAItE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEtD,YAAY,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAClF,YAAY,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAClG,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,YAAY,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAmBhE;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,YAAY,GAAG,OAAO,GAAG,MAAM,CAAC;AAE3D;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAClC,cAAc,EAAE,cAAc,EAC9B,IAAI,GAAE,YAAqB,EAC3B,uBAAuB,CAAC,EAAE,MAAM,GAC/B,cAAc,GAAG,wBAAwB,CAiB3C;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,cAAc,CAC5B,cAAc,EAAE,cAAc,EAC9B,cAAc,GAAE,cAAiC,EACjD,uBAAuB,CAAC,EAAE,MAAM,EAChC,QAAQ,CAAC,EAAE,MAAM,EACjB,KAAK,CAAC,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,MAAM,GACd,SAAS,CAwEX"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/executor/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAMtE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEtD,YAAY,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAClG,YAAY,EACV,uBAAuB,IAAI,oBAAoB,EAC/C,sBAAsB,IAAI,mBAAmB,GAC9C,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,YAAY,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAEhE;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,YAAY,GAAG,OAAO,GAAG,MAAM,CAAC;AAE3D;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAClC,cAAc,EAAE,cAAc,EAC9B,IAAI,GAAE,YAAqB,EAC3B,uBAAuB,CAAC,EAAE,MAAM,GAC/B,wBAAwB,CAM1B;AAED;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAC5B,cAAc,EAAE,cAAc,EAC9B,cAAc,GAAE,cAAiC,EACjD,uBAAuB,CAAC,EAAE,MAAM,EAChC,QAAQ,CAAC,EAAE,MAAM,EACjB,KAAK,CAAC,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,MAAM,GACd,SAAS,CA4EX"}
@@ -1,70 +1,45 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.CodexAppServerExecutor = exports.CodexExecutor = exports.AgyExecutor = exports.ClaudePersistentExecutor = exports.ClaudeExecutor = void 0;
3
+ exports.ZCodeExecutor = exports.KimiExecutor = exports.OpenCodeExecutor = exports.CodexAppServerExecutor = exports.AgyExecutor = exports.ClaudePersistentExecutor = void 0;
4
4
  exports.createClaudeExecutor = createClaudeExecutor;
5
5
  exports.createExecutor = createExecutor;
6
- const ClaudeExecutor_1 = require("./ClaudeExecutor");
7
6
  const ClaudePersistentExecutor_1 = require("./ClaudePersistentExecutor");
8
7
  const AgyExecutor_1 = require("./AgyExecutor");
9
- const CodexExecutor_1 = require("./CodexExecutor");
10
8
  const CodexAppServerExecutor_1 = require("./CodexAppServerExecutor");
11
- var ClaudeExecutor_2 = require("./ClaudeExecutor");
12
- Object.defineProperty(exports, "ClaudeExecutor", { enumerable: true, get: function () { return ClaudeExecutor_2.ClaudeExecutor; } });
9
+ const OpenCodeExecutor_1 = require("./OpenCodeExecutor");
10
+ const KimiExecutor_1 = require("./KimiExecutor");
11
+ const ZCodeExecutor_1 = require("./ZCodeExecutor");
13
12
  var ClaudePersistentExecutor_2 = require("./ClaudePersistentExecutor");
14
13
  Object.defineProperty(exports, "ClaudePersistentExecutor", { enumerable: true, get: function () { return ClaudePersistentExecutor_2.ClaudePersistentExecutor; } });
15
14
  var AgyExecutor_2 = require("./AgyExecutor");
16
15
  Object.defineProperty(exports, "AgyExecutor", { enumerable: true, get: function () { return AgyExecutor_2.AgyExecutor; } });
17
- var CodexExecutor_2 = require("./CodexExecutor");
18
- Object.defineProperty(exports, "CodexExecutor", { enumerable: true, get: function () { return CodexExecutor_2.CodexExecutor; } });
19
16
  var CodexAppServerExecutor_2 = require("./CodexAppServerExecutor");
20
17
  Object.defineProperty(exports, "CodexAppServerExecutor", { enumerable: true, get: function () { return CodexAppServerExecutor_2.CodexAppServerExecutor; } });
21
- /**
22
- * Check if we're running inside a Claude Code session
23
- */
24
- function isRunningInsideClaudeCode() {
25
- // Check for CLAUDECODE environment variable
26
- if (process.env.CLAUDECODE) {
27
- return true;
28
- }
29
- // Check for other indicators
30
- if (process.env.CLAUDE_CODE) {
31
- return true;
32
- }
33
- return false;
34
- }
18
+ var OpenCodeExecutor_2 = require("./OpenCodeExecutor");
19
+ Object.defineProperty(exports, "OpenCodeExecutor", { enumerable: true, get: function () { return OpenCodeExecutor_2.OpenCodeExecutor; } });
20
+ var KimiExecutor_2 = require("./KimiExecutor");
21
+ Object.defineProperty(exports, "KimiExecutor", { enumerable: true, get: function () { return KimiExecutor_2.KimiExecutor; } });
22
+ var ZCodeExecutor_2 = require("./ZCodeExecutor");
23
+ Object.defineProperty(exports, "ZCodeExecutor", { enumerable: true, get: function () { return ZCodeExecutor_2.ZCodeExecutor; } });
35
24
  /**
36
25
  * Create an appropriate Claude executor (legacy API — preserved for backward compatibility)
37
26
  *
38
27
  * @param directoryGuard Directory guard instance
39
- * @param type Executor type: 'persistent' (long-running process), 'spawn' (one-shot process), or 'auto' (choose based on environment)
28
+ * @param type Executor type. The legacy 'spawn' value is mapped to persistent mode.
40
29
  * @param initialWorkingDirectory Optional initial working directory for persistent executor
41
30
  * @returns Executor instance
42
31
  */
43
32
  function createClaudeExecutor(directoryGuard, type = 'auto', initialWorkingDirectory) {
44
- if (type === 'auto') {
45
- // Auto-detect: use spawn mode if running inside Claude Code to avoid nested session error
46
- if (isRunningInsideClaudeCode()) {
47
- console.log('[ExecutorFactory] Detected nested Claude Code session, using spawn mode');
48
- return new ClaudeExecutor_1.ClaudeExecutor(directoryGuard);
49
- }
50
- // Otherwise use persistent mode
51
- console.log('[ExecutorFactory] Using persistent mode for better performance');
52
- return new ClaudePersistentExecutor_1.ClaudePersistentExecutor(directoryGuard, initialWorkingDirectory);
53
- }
54
- if (type === 'persistent') {
55
- return new ClaudePersistentExecutor_1.ClaudePersistentExecutor(directoryGuard, initialWorkingDirectory);
33
+ if (type === 'spawn') {
34
+ console.warn('[ExecutorFactory] Claude spawn mode was removed; using persistent mode.');
56
35
  }
57
- return new ClaudeExecutor_1.ClaudeExecutor(directoryGuard);
36
+ console.log('[ExecutorFactory] Using persistent Claude executor');
37
+ return new ClaudePersistentExecutor_1.ClaudePersistentExecutor(directoryGuard, initialWorkingDirectory);
58
38
  }
59
39
  /**
60
40
  * Create an executor based on the executor config.
61
- * Supports Claude (persistent / spawn / auto), AGY (Antigravity CLI,
62
- * stream-json protocol), and Codex (app-server by default, with exec fallback).
63
- *
64
- * Legacy note: configs written before the Gemini→AGY migration may still
65
- * say `type: 'gemini'`. That slot now maps to the AGY backend (the Gemini
66
- * CLI/ACP stack was removed), with `executor.gemini.*` read as a fallback
67
- * for `executor.agy.*` where applicable.
41
+ * Supports Claude (persistent), AGY (stream-json), Codex (app-server),
42
+ * OpenCode and Kimi Code (ACP), and official ZCode (app-server).
68
43
  *
69
44
  * @param directoryGuard Directory guard instance
70
45
  * @param executorConfig Executor config from remote-cli config (defaults to auto)
@@ -72,46 +47,22 @@ function createClaudeExecutor(directoryGuard, type = 'auto', initialWorkingDirec
72
47
  * @returns IExecutor instance
73
48
  */
74
49
  function createExecutor(directoryGuard, executorConfig = { type: 'auto' }, initialWorkingDirectory, threadId, model, effort) {
75
- // Cast to string so the legacy 'gemini' case compiles even though the
76
- // ExecutorConfig union no longer includes it.
77
- switch (executorConfig.type) {
50
+ const executorType = executorConfig.type;
51
+ switch (executorType) {
78
52
  case 'agy':
79
53
  console.log('[ExecutorFactory] Using AGY CLI executor (stream-json)');
80
54
  return new AgyExecutor_1.AgyExecutor(directoryGuard, {
81
- // Per-thread model (set via /model, persisted on the thread) wins;
82
- // legacy fallback: the user may have switched type to 'agy' while
83
- // their model still lives under the old executor.gemini key.
84
- model: model ?? executorConfig.agy?.model ?? executorConfig.gemini?.model,
55
+ // Per-thread model (set via /model, persisted on the thread) wins.
56
+ model: model ?? executorConfig.agy?.model,
85
57
  effort,
86
- autoApprove: executorConfig.agy?.autoApprove ?? executorConfig.gemini?.autoApprove ?? true,
58
+ autoApprove: executorConfig.agy?.autoApprove ?? true,
87
59
  initialWorkingDirectory,
88
60
  agyCommand: executorConfig.agy?.command,
89
61
  threadId,
90
62
  });
91
- case 'gemini': {
92
- // Legacy alias: the Gemini backend slot was replaced by AGY.
93
- console.log('[ExecutorFactory] Legacy "gemini" backend migrated to AGY CLI executor');
94
- const legacy = executorConfig.gemini;
95
- return new AgyExecutor_1.AgyExecutor(directoryGuard, {
96
- model: model ?? executorConfig.agy?.model ?? legacy?.model,
97
- effort,
98
- autoApprove: executorConfig.agy?.autoApprove ?? legacy?.autoApprove ?? true,
99
- initialWorkingDirectory,
100
- agyCommand: executorConfig.agy?.command,
101
- threadId,
102
- });
103
- }
104
63
  case 'codex':
105
64
  if (executorConfig.codex?.transport === 'exec') {
106
- console.log('[ExecutorFactory] Using Codex CLI executor (exec fallback)');
107
- return new CodexExecutor_1.CodexExecutor(directoryGuard, {
108
- model: model ?? executorConfig.codex?.model,
109
- effort,
110
- autoApprove: executorConfig.codex?.autoApprove ?? true,
111
- initialWorkingDirectory,
112
- codexCommand: executorConfig.codex?.command,
113
- threadId,
114
- });
65
+ console.warn('[ExecutorFactory] Codex exec transport was removed; using app-server.');
115
66
  }
116
67
  console.log('[ExecutorFactory] Using Codex app-server executor');
117
68
  return new CodexAppServerExecutor_1.CodexAppServerExecutor(directoryGuard, {
@@ -123,18 +74,44 @@ function createExecutor(directoryGuard, executorConfig = { type: 'auto' }, initi
123
74
  codexCommand: executorConfig.codex?.command,
124
75
  threadId,
125
76
  });
77
+ case 'opencode':
78
+ console.log('[ExecutorFactory] Using OpenCode ACP executor');
79
+ return new OpenCodeExecutor_1.OpenCodeExecutor(directoryGuard, {
80
+ model: model ?? executorConfig.opencode?.model,
81
+ effort,
82
+ autoApprove: executorConfig.opencode?.autoApprove ?? true,
83
+ initialWorkingDirectory,
84
+ openCodeCommand: executorConfig.opencode?.command,
85
+ threadId,
86
+ });
87
+ case 'kimi':
88
+ console.log('[ExecutorFactory] Using Kimi Code ACP executor');
89
+ return new KimiExecutor_1.KimiExecutor(directoryGuard, {
90
+ model: model ?? executorConfig.kimi?.model,
91
+ effort,
92
+ autoApprove: executorConfig.kimi?.autoApprove ?? true,
93
+ initialWorkingDirectory,
94
+ kimiCommand: executorConfig.kimi?.command,
95
+ threadId,
96
+ });
97
+ case 'zcode':
98
+ console.log('[ExecutorFactory] Using official ZCode app-server executor');
99
+ return new ZCodeExecutor_1.ZCodeExecutor(directoryGuard, {
100
+ model: model ?? executorConfig.zcode?.model,
101
+ effort,
102
+ autoApprove: executorConfig.zcode?.autoApprove ?? true,
103
+ initialWorkingDirectory,
104
+ zcodeCommand: executorConfig.zcode?.command,
105
+ threadId,
106
+ });
126
107
  case 'claude-persistent':
127
108
  console.log('[ExecutorFactory] Using Claude persistent executor');
128
109
  return new ClaudePersistentExecutor_1.ClaudePersistentExecutor(directoryGuard, initialWorkingDirectory, threadId, model);
129
110
  case 'claude-spawn':
130
- console.log('[ExecutorFactory] Using Claude spawn executor');
131
- return new ClaudeExecutor_1.ClaudeExecutor(directoryGuard);
111
+ console.warn('[ExecutorFactory] Claude spawn mode was removed; using persistent mode.');
112
+ return new ClaudePersistentExecutor_1.ClaudePersistentExecutor(directoryGuard, initialWorkingDirectory, threadId, model);
132
113
  case 'auto':
133
114
  default:
134
- if (isRunningInsideClaudeCode()) {
135
- console.log('[ExecutorFactory] Detected nested Claude Code session, using spawn mode');
136
- return new ClaudeExecutor_1.ClaudeExecutor(directoryGuard);
137
- }
138
115
  console.log('[ExecutorFactory] Using Claude persistent executor (auto)');
139
116
  return new ClaudePersistentExecutor_1.ClaudePersistentExecutor(directoryGuard, initialWorkingDirectory, threadId, model);
140
117
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/executor/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/executor/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,73 @@
1
+ import type { AcpEventCallbacks, AcpTransport } from '../acp/AcpClient';
2
+ import type { AcpContentBlock, AcpSessionResult } from '../acp/AcpTypes';
3
+ import { type ZCodeLaunchSpec } from './ZCodeCommand';
4
+ export interface ZCodeClientOptions {
5
+ cwd: string;
6
+ command?: string;
7
+ autoApprove?: boolean;
8
+ requestTimeoutMs?: number;
9
+ compactPollIntervalMs?: number;
10
+ launch?: ZCodeLaunchSpec;
11
+ }
12
+ /** Direct client for the official ZCode app-server line-delimited JSON protocol. */
13
+ export declare class ZCodeClient implements AcpTransport {
14
+ private readonly child;
15
+ private readonly callbacks;
16
+ private readonly cwd;
17
+ private readonly autoApprove;
18
+ private readonly requestTimeoutMs;
19
+ private readonly compactPollIntervalMs;
20
+ private readonly pending;
21
+ private readonly prompts;
22
+ private readonly sessions;
23
+ private readonly interactions;
24
+ private readonly sequence;
25
+ private readonly reader;
26
+ private nextId;
27
+ private destroyed;
28
+ private closed;
29
+ private killTimer;
30
+ constructor(options: ZCodeClientOptions, callbacks: AcpEventCallbacks);
31
+ initialize(): Promise<unknown>;
32
+ newSession(cwd: string): Promise<AcpSessionResult>;
33
+ loadSession(sessionId: string, cwd: string): Promise<AcpSessionResult>;
34
+ prompt(sessionId: string, blocks: AcpContentBlock[]): Promise<{
35
+ stopReason: string;
36
+ }>;
37
+ setConfigOption(sessionId: string, configId: string, value: string): Promise<AcpSessionResult>;
38
+ compactSession(sessionId: string): Promise<{
39
+ stopReason: string;
40
+ }>;
41
+ deleteSession(sessionId: string): Promise<void>;
42
+ sendCancel(sessionId: string): void;
43
+ destroy(): void;
44
+ private request;
45
+ private notify;
46
+ private respond;
47
+ private respondError;
48
+ private write;
49
+ private handleLine;
50
+ private handleServerRequest;
51
+ private handleSessionEvent;
52
+ private handleStreaming;
53
+ private handleToolUpdate;
54
+ private handleStateUpdate;
55
+ private captureSession;
56
+ private configOptions;
57
+ private findModel;
58
+ private permissionOptions;
59
+ private permissionKind;
60
+ private askPermission;
61
+ private handleUserInput;
62
+ private handleInteraction;
63
+ private permissionTitle;
64
+ private codingPlanApiKey;
65
+ private toolKind;
66
+ private extensionForMime;
67
+ private waitForInternalTurn;
68
+ private failPrompt;
69
+ private rejectAll;
70
+ private formatError;
71
+ private clearKillTimer;
72
+ }
73
+ //# sourceMappingURL=ZCodeClient.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ZCodeClient.d.ts","sourceRoot":"","sources":["../../../src/executor/zcode/ZCodeClient.ts"],"names":[],"mappings":"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"}