@rithamnatani/agentmux 1.5.39

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 (235) hide show
  1. package/README.md +440 -0
  2. package/dist/clientFilter.d.ts +5 -0
  3. package/dist/clientFilter.d.ts.map +1 -0
  4. package/dist/clientFilter.js +31 -0
  5. package/dist/clientFilter.js.map +1 -0
  6. package/dist/config.d.ts +28 -0
  7. package/dist/config.d.ts.map +1 -0
  8. package/dist/config.js +112 -0
  9. package/dist/config.js.map +1 -0
  10. package/dist/constants.d.ts +115 -0
  11. package/dist/constants.d.ts.map +1 -0
  12. package/dist/constants.js +118 -0
  13. package/dist/constants.js.map +1 -0
  14. package/dist/execution.d.ts +23 -0
  15. package/dist/execution.d.ts.map +1 -0
  16. package/dist/execution.js +2 -0
  17. package/dist/execution.js.map +1 -0
  18. package/dist/httpServer.d.ts +12 -0
  19. package/dist/httpServer.d.ts.map +1 -0
  20. package/dist/httpServer.js +323 -0
  21. package/dist/httpServer.js.map +1 -0
  22. package/dist/index.d.ts +3 -0
  23. package/dist/index.d.ts.map +1 -0
  24. package/dist/index.js +98 -0
  25. package/dist/index.js.map +1 -0
  26. package/dist/logger.d.ts +19 -0
  27. package/dist/logger.d.ts.map +1 -0
  28. package/dist/logger.js +172 -0
  29. package/dist/logger.js.map +1 -0
  30. package/dist/modelCatalog.d.ts +15 -0
  31. package/dist/modelCatalog.d.ts.map +1 -0
  32. package/dist/modelCatalog.generated.json +80 -0
  33. package/dist/modelCatalog.js +81 -0
  34. package/dist/modelCatalog.js.map +1 -0
  35. package/dist/router/config.d.ts +13 -0
  36. package/dist/router/config.d.ts.map +1 -0
  37. package/dist/router/config.js +198 -0
  38. package/dist/router/config.js.map +1 -0
  39. package/dist/router/defaultConfig.d.ts +13 -0
  40. package/dist/router/defaultConfig.d.ts.map +1 -0
  41. package/dist/router/defaultConfig.js +82 -0
  42. package/dist/router/defaultConfig.js.map +1 -0
  43. package/dist/router/executor.d.ts +35 -0
  44. package/dist/router/executor.d.ts.map +1 -0
  45. package/dist/router/executor.js +189 -0
  46. package/dist/router/executor.js.map +1 -0
  47. package/dist/router/modelMetadata.d.ts +5 -0
  48. package/dist/router/modelMetadata.d.ts.map +1 -0
  49. package/dist/router/modelMetadata.js +81 -0
  50. package/dist/router/modelMetadata.js.map +1 -0
  51. package/dist/router/quota.d.ts +4 -0
  52. package/dist/router/quota.d.ts.map +1 -0
  53. package/dist/router/quota.js +5 -0
  54. package/dist/router/quota.js.map +1 -0
  55. package/dist/router/router.d.ts +3 -0
  56. package/dist/router/router.d.ts.map +1 -0
  57. package/dist/router/router.js +141 -0
  58. package/dist/router/router.js.map +1 -0
  59. package/dist/router/types.d.ts +86 -0
  60. package/dist/router/types.d.ts.map +1 -0
  61. package/dist/router/types.js +2 -0
  62. package/dist/router/types.js.map +1 -0
  63. package/dist/routerConfig.d.ts +14 -0
  64. package/dist/routerConfig.d.ts.map +1 -0
  65. package/dist/routerConfig.js +194 -0
  66. package/dist/routerConfig.js.map +1 -0
  67. package/dist/serverApp.d.ts +43 -0
  68. package/dist/serverApp.d.ts.map +1 -0
  69. package/dist/serverApp.js +618 -0
  70. package/dist/serverApp.js.map +1 -0
  71. package/dist/service/bootstrap.d.ts +3 -0
  72. package/dist/service/bootstrap.d.ts.map +1 -0
  73. package/dist/service/bootstrap.js +32 -0
  74. package/dist/service/bootstrap.js.map +1 -0
  75. package/dist/service/manager.d.ts +6 -0
  76. package/dist/service/manager.d.ts.map +1 -0
  77. package/dist/service/manager.js +318 -0
  78. package/dist/service/manager.js.map +1 -0
  79. package/dist/service/paths.d.ts +10 -0
  80. package/dist/service/paths.d.ts.map +1 -0
  81. package/dist/service/paths.js +57 -0
  82. package/dist/service/paths.js.map +1 -0
  83. package/dist/service/renderers.d.ts +7 -0
  84. package/dist/service/renderers.d.ts.map +1 -0
  85. package/dist/service/renderers.js +110 -0
  86. package/dist/service/renderers.js.map +1 -0
  87. package/dist/service/runtime.d.ts +14 -0
  88. package/dist/service/runtime.d.ts.map +1 -0
  89. package/dist/service/runtime.js +129 -0
  90. package/dist/service/runtime.js.map +1 -0
  91. package/dist/service/types.d.ts +33 -0
  92. package/dist/service/types.d.ts.map +1 -0
  93. package/dist/service/types.js +2 -0
  94. package/dist/service/types.js.map +1 -0
  95. package/dist/taskClientPolicy.d.ts +16 -0
  96. package/dist/taskClientPolicy.d.ts.map +1 -0
  97. package/dist/taskClientPolicy.js +44 -0
  98. package/dist/taskClientPolicy.js.map +1 -0
  99. package/dist/taskStore.d.ts +12 -0
  100. package/dist/taskStore.d.ts.map +1 -0
  101. package/dist/taskStore.js +30 -0
  102. package/dist/taskStore.js.map +1 -0
  103. package/dist/tierConfig.d.ts +16 -0
  104. package/dist/tierConfig.d.ts.map +1 -0
  105. package/dist/tierConfig.js +70 -0
  106. package/dist/tierConfig.js.map +1 -0
  107. package/dist/tools/ask-claude.tool.d.ts +3 -0
  108. package/dist/tools/ask-claude.tool.d.ts.map +1 -0
  109. package/dist/tools/ask-claude.tool.js +30 -0
  110. package/dist/tools/ask-claude.tool.js.map +1 -0
  111. package/dist/tools/ask-codex.tool.d.ts +3 -0
  112. package/dist/tools/ask-codex.tool.d.ts.map +1 -0
  113. package/dist/tools/ask-codex.tool.js +29 -0
  114. package/dist/tools/ask-codex.tool.js.map +1 -0
  115. package/dist/tools/ask-cursor.tool.d.ts +3 -0
  116. package/dist/tools/ask-cursor.tool.d.ts.map +1 -0
  117. package/dist/tools/ask-cursor.tool.js +30 -0
  118. package/dist/tools/ask-cursor.tool.js.map +1 -0
  119. package/dist/tools/ask-gemini.tool.d.ts +3 -0
  120. package/dist/tools/ask-gemini.tool.d.ts.map +1 -0
  121. package/dist/tools/ask-gemini.tool.js +40 -0
  122. package/dist/tools/ask-gemini.tool.js.map +1 -0
  123. package/dist/tools/ask-opencode.tool.d.ts +3 -0
  124. package/dist/tools/ask-opencode.tool.d.ts.map +1 -0
  125. package/dist/tools/ask-opencode.tool.js +29 -0
  126. package/dist/tools/ask-opencode.tool.js.map +1 -0
  127. package/dist/tools/ask-router.tool.d.ts +20 -0
  128. package/dist/tools/ask-router.tool.d.ts.map +1 -0
  129. package/dist/tools/ask-router.tool.js +550 -0
  130. package/dist/tools/ask-router.tool.js.map +1 -0
  131. package/dist/tools/fetch-chunk.tool.d.ts +3 -0
  132. package/dist/tools/fetch-chunk.tool.d.ts.map +1 -0
  133. package/dist/tools/fetch-chunk.tool.js +58 -0
  134. package/dist/tools/fetch-chunk.tool.js.map +1 -0
  135. package/dist/tools/get-run.tool.d.ts +3 -0
  136. package/dist/tools/get-run.tool.d.ts.map +1 -0
  137. package/dist/tools/get-run.tool.js +53 -0
  138. package/dist/tools/get-run.tool.js.map +1 -0
  139. package/dist/tools/important-read-now.tool.d.ts +3 -0
  140. package/dist/tools/important-read-now.tool.d.ts.map +1 -0
  141. package/dist/tools/important-read-now.tool.js +31 -0
  142. package/dist/tools/important-read-now.tool.js.map +1 -0
  143. package/dist/tools/index.d.ts +12 -0
  144. package/dist/tools/index.d.ts.map +1 -0
  145. package/dist/tools/index.js +59 -0
  146. package/dist/tools/index.js.map +1 -0
  147. package/dist/tools/opencode-copilot-usage.tool.d.ts +3 -0
  148. package/dist/tools/opencode-copilot-usage.tool.d.ts.map +1 -0
  149. package/dist/tools/opencode-copilot-usage.tool.js +85 -0
  150. package/dist/tools/opencode-copilot-usage.tool.js.map +1 -0
  151. package/dist/tools/recommend-route.tool.d.ts +3 -0
  152. package/dist/tools/recommend-route.tool.d.ts.map +1 -0
  153. package/dist/tools/recommend-route.tool.js +88 -0
  154. package/dist/tools/recommend-route.tool.js.map +1 -0
  155. package/dist/tools/registry.d.ts +31 -0
  156. package/dist/tools/registry.d.ts.map +1 -0
  157. package/dist/tools/registry.js +105 -0
  158. package/dist/tools/registry.js.map +1 -0
  159. package/dist/tools/simple-tools.d.ts +12 -0
  160. package/dist/tools/simple-tools.d.ts.map +1 -0
  161. package/dist/tools/simple-tools.js +121 -0
  162. package/dist/tools/simple-tools.js.map +1 -0
  163. package/dist/tools/test-tool.example.d.ts +13 -0
  164. package/dist/tools/test-tool.example.d.ts.map +1 -0
  165. package/dist/tools/test-tool.example.js +32 -0
  166. package/dist/tools/test-tool.example.js.map +1 -0
  167. package/dist/tools/tiered-request.tool.d.ts +3 -0
  168. package/dist/tools/tiered-request.tool.d.ts.map +1 -0
  169. package/dist/tools/tiered-request.tool.js +147 -0
  170. package/dist/tools/tiered-request.tool.js.map +1 -0
  171. package/dist/utils/changeModeChunker.d.ts +11 -0
  172. package/dist/utils/changeModeChunker.d.ts.map +1 -0
  173. package/dist/utils/changeModeChunker.js +89 -0
  174. package/dist/utils/changeModeChunker.js.map +1 -0
  175. package/dist/utils/changeModeParser.d.ts +15 -0
  176. package/dist/utils/changeModeParser.d.ts.map +1 -0
  177. package/dist/utils/changeModeParser.js +67 -0
  178. package/dist/utils/changeModeParser.js.map +1 -0
  179. package/dist/utils/changeModeTranslator.d.ts +8 -0
  180. package/dist/utils/changeModeTranslator.d.ts.map +1 -0
  181. package/dist/utils/changeModeTranslator.js +70 -0
  182. package/dist/utils/changeModeTranslator.js.map +1 -0
  183. package/dist/utils/chunkCache.d.ts +22 -0
  184. package/dist/utils/chunkCache.d.ts.map +1 -0
  185. package/dist/utils/chunkCache.js +147 -0
  186. package/dist/utils/chunkCache.js.map +1 -0
  187. package/dist/utils/claudeExecutor.d.ts +3 -0
  188. package/dist/utils/claudeExecutor.d.ts.map +1 -0
  189. package/dist/utils/claudeExecutor.js +21 -0
  190. package/dist/utils/claudeExecutor.js.map +1 -0
  191. package/dist/utils/cliDetector.d.ts +20 -0
  192. package/dist/utils/cliDetector.d.ts.map +1 -0
  193. package/dist/utils/cliDetector.js +95 -0
  194. package/dist/utils/cliDetector.js.map +1 -0
  195. package/dist/utils/codexExecutor.d.ts +3 -0
  196. package/dist/utils/codexExecutor.d.ts.map +1 -0
  197. package/dist/utils/codexExecutor.js +19 -0
  198. package/dist/utils/codexExecutor.js.map +1 -0
  199. package/dist/utils/commandExecutor.d.ts +29 -0
  200. package/dist/utils/commandExecutor.d.ts.map +1 -0
  201. package/dist/utils/commandExecutor.js +487 -0
  202. package/dist/utils/commandExecutor.js.map +1 -0
  203. package/dist/utils/cursorCli.d.ts +3 -0
  204. package/dist/utils/cursorCli.d.ts.map +1 -0
  205. package/dist/utils/cursorCli.js +20 -0
  206. package/dist/utils/cursorCli.js.map +1 -0
  207. package/dist/utils/cursorExecutor.d.ts +3 -0
  208. package/dist/utils/cursorExecutor.d.ts.map +1 -0
  209. package/dist/utils/cursorExecutor.js +22 -0
  210. package/dist/utils/cursorExecutor.js.map +1 -0
  211. package/dist/utils/geminiExecutor.d.ts +4 -0
  212. package/dist/utils/geminiExecutor.d.ts.map +1 -0
  213. package/dist/utils/geminiExecutor.js +131 -0
  214. package/dist/utils/geminiExecutor.js.map +1 -0
  215. package/dist/utils/githubCli.d.ts +22 -0
  216. package/dist/utils/githubCli.d.ts.map +1 -0
  217. package/dist/utils/githubCli.js +131 -0
  218. package/dist/utils/githubCli.js.map +1 -0
  219. package/dist/utils/opencodeCatalog.d.ts +33 -0
  220. package/dist/utils/opencodeCatalog.d.ts.map +1 -0
  221. package/dist/utils/opencodeCatalog.js +171 -0
  222. package/dist/utils/opencodeCatalog.js.map +1 -0
  223. package/dist/utils/opencodeExecutor.d.ts +3 -0
  224. package/dist/utils/opencodeExecutor.d.ts.map +1 -0
  225. package/dist/utils/opencodeExecutor.js +16 -0
  226. package/dist/utils/opencodeExecutor.js.map +1 -0
  227. package/dist/utils/timeoutManager.d.ts +2 -0
  228. package/dist/utils/timeoutManager.d.ts.map +1 -0
  229. package/dist/utils/timeoutManager.js +2 -0
  230. package/dist/utils/timeoutManager.js.map +1 -0
  231. package/dist/utils/worktrunkIsolation.d.ts +26 -0
  232. package/dist/utils/worktrunkIsolation.d.ts.map +1 -0
  233. package/dist/utils/worktrunkIsolation.js +80 -0
  234. package/dist/utils/worktrunkIsolation.js.map +1 -0
  235. package/package.json +72 -0
@@ -0,0 +1,487 @@
1
+ import { spawn } from "child_process";
2
+ import { mkdir, writeFile } from "fs/promises";
3
+ import { randomUUID } from "crypto";
4
+ import path from "path";
5
+ import { getRunsDir } from "../service/paths.js";
6
+ // Detect Windows platform for shell compatibility
7
+ const isWindows = process.platform === "win32";
8
+ const SENSITIVE_VALUE_FLAGS = new Set(['--header', '-H', '--token', '--api-key', '--apikey', '--auth-token']);
9
+ export class CommandExecutionError extends Error {
10
+ kind;
11
+ details;
12
+ constructor(kind, message, details) {
13
+ const errorType = mapKindToErrorType(kind, details.stderr || "", details.stdout || "");
14
+ const retryable = isRetryable(errorType);
15
+ const retryAfter = parseRetryAfter(details.stderr || "");
16
+ let finalMessage = message;
17
+ if (errorType === "MODEL_NOT_FOUND") {
18
+ finalMessage += " (Note: model IDs are tool-specific; ensure you are using a model ID supported by this specific CLI tool)";
19
+ }
20
+ const structured = {
21
+ status: details.exitCode ?? -1,
22
+ error_type: errorType,
23
+ retryable,
24
+ retry_after_seconds: retryAfter,
25
+ command: details.command,
26
+ args: redactArgsForLogging(details.args),
27
+ exit_code: details.exitCode,
28
+ stdout_tail: tail(details.stdout, 500),
29
+ stderr_tail: tail(details.stderr, 500),
30
+ run_id: details.runId
31
+ };
32
+ super(`${finalMessage}\n\n\`\`\`json\n${JSON.stringify(structured, null, 2)}\n\`\`\``);
33
+ this.kind = kind;
34
+ this.details = details;
35
+ this.name = "CommandExecutionError";
36
+ }
37
+ }
38
+ function mapKindToErrorType(kind, stderr, stdout) {
39
+ if (kind === "timeout")
40
+ return "TIMEOUT";
41
+ if (kind === "spawn")
42
+ return "SPAWN";
43
+ if (kind === "cancelled")
44
+ return "CANCELLED";
45
+ if (kind === "no-output")
46
+ return "NO_OUTPUT";
47
+ const combined = (stderr + "\n" + stdout).toLowerCase();
48
+ if (combined.includes("resource_exhausted") ||
49
+ combined.includes("429") ||
50
+ combined.includes("model_capacity_exhausted") ||
51
+ combined.includes("no capacity available") ||
52
+ combined.includes("rate limit") ||
53
+ combined.includes("quota")) {
54
+ return "RESOURCE_EXHAUSTED";
55
+ }
56
+ if (combined.includes("auth") ||
57
+ combined.includes("invalid api key") ||
58
+ combined.includes("api_key_invalid") ||
59
+ combined.includes("unauthorized")) {
60
+ return "AUTH_ERROR";
61
+ }
62
+ if (combined.includes("model not found") || combined.includes("404")) {
63
+ return "MODEL_NOT_FOUND";
64
+ }
65
+ return "FAILED";
66
+ }
67
+ function isRetryable(type) {
68
+ return type === "RESOURCE_EXHAUSTED" || type === "TIMEOUT";
69
+ }
70
+ function parseRetryAfter(stderr) {
71
+ const match = stderr.match(/retry after (\d+)/i);
72
+ return match ? parseInt(match[1], 10) : null;
73
+ }
74
+ function tail(text, limit) {
75
+ if (!text)
76
+ return "";
77
+ const redacted = redactSensitiveText(text);
78
+ if (redacted.length <= limit)
79
+ return redacted;
80
+ return "..." + redacted.slice(-limit);
81
+ }
82
+ async function recordRun(runId, command, args, cwd, status, errorType, exitCode, stdout, stderr, pid) {
83
+ try {
84
+ const runsDir = getRunsDir();
85
+ await mkdir(runsDir, { recursive: true });
86
+ const runData = {
87
+ run_id: runId,
88
+ timestamp: new Date().toISOString(),
89
+ command,
90
+ args: redactArgsForLogging(args),
91
+ cwd: cwd || process.cwd(),
92
+ status,
93
+ running: status === "running",
94
+ pid,
95
+ error_type: errorType,
96
+ exit_code: exitCode,
97
+ stdout_tail: tail(stdout, 1000),
98
+ stderr_tail: tail(stderr, 1000),
99
+ };
100
+ await writeFile(path.join(runsDir, `${runId}.json`), JSON.stringify(runData, null, 2));
101
+ }
102
+ catch (error) {
103
+ // Best effort, don't crash the command execution
104
+ }
105
+ }
106
+ /**
107
+ * Format a single argument for safe use with cmd.exe (shell: true on Windows).
108
+ * Ensures the argument survives cmd.exe parsing as one argv entry.
109
+ */
110
+ export function sanitizeArgForCmd(arg) {
111
+ if (arg === '')
112
+ return '""';
113
+ const sanitized = arg.replace(/[\r\n]+/g, ' ');
114
+ const needsQuotes = /[\s"]/.test(sanitized);
115
+ if (needsQuotes) {
116
+ const escaped = sanitized
117
+ .replace(/%/g, '%%')
118
+ .replace(/"/g, '""')
119
+ .replace(/\\+$/, m => m + m);
120
+ return `"${escaped}"`;
121
+ }
122
+ else {
123
+ return sanitized
124
+ .replace(/%/g, '%%')
125
+ .replace(/[&|<>^()]/g, c => `^${c}`);
126
+ }
127
+ }
128
+ function redactSensitiveText(text) {
129
+ return text
130
+ .replace(/(Authorization:\s*Bearer\s+)[^\s'"]+/gi, '$1[Redacted]')
131
+ .replace(/(X-API-Key:\s*)[^\s'"]+/gi, '$1[Redacted]')
132
+ .replace(/("authorization"\s*:\s*")([^"]+)(")/gi, '$1[Redacted]$3')
133
+ .replace(/("token"\s*:\s*")([^"]+)(")/gi, '$1[Redacted]$3');
134
+ }
135
+ function redactArgValueForLogging(flag, value) {
136
+ if (flag === '--header' || flag === '-H') {
137
+ return redactSensitiveText(value);
138
+ }
139
+ return '[Redacted]';
140
+ }
141
+ function redactArgsForLogging(args) {
142
+ const redacted = [];
143
+ for (let index = 0; index < args.length; index += 1) {
144
+ const arg = args[index];
145
+ const equalsIndex = arg.indexOf('=');
146
+ if (equalsIndex > 0) {
147
+ const flag = arg.slice(0, equalsIndex);
148
+ const value = arg.slice(equalsIndex + 1);
149
+ if (SENSITIVE_VALUE_FLAGS.has(flag)) {
150
+ redacted.push(`${flag}=${redactArgValueForLogging(flag, value)}`);
151
+ continue;
152
+ }
153
+ }
154
+ if (SENSITIVE_VALUE_FLAGS.has(arg) && index + 1 < args.length) {
155
+ redacted.push(arg);
156
+ redacted.push(redactArgValueForLogging(arg, args[index + 1]));
157
+ index += 1;
158
+ continue;
159
+ }
160
+ redacted.push(redactSensitiveText(arg));
161
+ }
162
+ return redacted;
163
+ }
164
+ function terminateWindowsProcessTree(pid, force) {
165
+ const killArgs = ["/pid", String(pid), "/T"];
166
+ if (force)
167
+ killArgs.push("/F");
168
+ const killer = spawn("taskkill", killArgs, { stdio: ["ignore", "ignore", "ignore"], shell: false });
169
+ killer.on("error", () => { });
170
+ }
171
+ function terminateChildProcess(pid, force) {
172
+ if (isWindows) {
173
+ terminateWindowsProcessTree(pid, force);
174
+ return;
175
+ }
176
+ try {
177
+ process.kill(-pid, force ? "SIGKILL" : "SIGTERM");
178
+ }
179
+ catch { }
180
+ }
181
+ export async function executeCommand(command, args, options = {}) {
182
+ const { onProgress, signal, timeoutMs, killGraceMs = 5000, cwd, env, logger, allowNoStdoutOnSuccess, } = options;
183
+ const runId = randomUUID();
184
+ return new Promise((resolve, reject) => {
185
+ const safeArgs = isWindows ? args.map(sanitizeArgForCmd) : args;
186
+ const loggedArgs = redactArgsForLogging(args);
187
+ const loggedSafeArgs = redactArgsForLogging(safeArgs);
188
+ logger?.info("command_spawn_requested", {
189
+ runId,
190
+ command,
191
+ args: loggedArgs,
192
+ safeArgs: loggedSafeArgs,
193
+ cwd,
194
+ timeoutMs,
195
+ killGraceMs,
196
+ platform: process.platform,
197
+ shell: isWindows,
198
+ detached: !isWindows,
199
+ envKeys: env ? Object.keys(env).sort() : undefined,
200
+ });
201
+ const childProcess = spawn(command, safeArgs, {
202
+ cwd,
203
+ env: env ?? process.env,
204
+ shell: isWindows,
205
+ stdio: ["ignore", "pipe", "pipe"],
206
+ detached: !isWindows,
207
+ });
208
+ let stdout = "";
209
+ let stderr = "";
210
+ let isSettled = false;
211
+ let lastReportedLength = 0;
212
+ let timeoutId;
213
+ let forceKillTimeoutId;
214
+ let terminationStarted = false;
215
+ let stdoutChunkCount = 0;
216
+ let stderrChunkCount = 0;
217
+ let lastRunSnapshotAt = 0;
218
+ logger?.info("command_spawned", {
219
+ runId,
220
+ command,
221
+ args: loggedArgs,
222
+ cwd,
223
+ pid: childProcess.pid,
224
+ });
225
+ const writeRunningSnapshot = (force = false) => {
226
+ const now = Date.now();
227
+ if (!force && now - lastRunSnapshotAt < 2000) {
228
+ return;
229
+ }
230
+ lastRunSnapshotAt = now;
231
+ void recordRun(runId, command, args, cwd, "running", undefined, undefined, stdout, stderr, childProcess.pid);
232
+ };
233
+ writeRunningSnapshot(true);
234
+ const clearRequestTimer = () => {
235
+ if (timeoutId)
236
+ clearTimeout(timeoutId);
237
+ };
238
+ const clearTerminationTimer = () => {
239
+ if (forceKillTimeoutId)
240
+ clearTimeout(forceKillTimeoutId);
241
+ };
242
+ const settle = (error, output, exitCode) => {
243
+ if (isSettled)
244
+ return;
245
+ isSettled = true;
246
+ clearRequestTimer();
247
+ signal?.removeEventListener("abort", abortListener);
248
+ const status = error instanceof CommandExecutionError
249
+ ? error.kind
250
+ : error
251
+ ? "failed"
252
+ : "success";
253
+ let errorType;
254
+ if (error instanceof CommandExecutionError) {
255
+ errorType = mapKindToErrorType(error.kind, stderr, stdout);
256
+ }
257
+ else if (error) {
258
+ errorType = "FAILED";
259
+ }
260
+ void recordRun(runId, command, args, cwd, status, errorType, exitCode, stdout, stderr, childProcess.pid);
261
+ if (error)
262
+ reject(error);
263
+ else
264
+ resolve(output ?? "");
265
+ };
266
+ const beginTermination = (error) => {
267
+ if (!terminationStarted && childProcess.pid) {
268
+ terminationStarted = true;
269
+ logger?.error("command_termination_started", {
270
+ runId,
271
+ command,
272
+ args: loggedArgs,
273
+ cwd,
274
+ pid: childProcess.pid,
275
+ reason: error.message,
276
+ error,
277
+ });
278
+ terminateChildProcess(childProcess.pid, false);
279
+ forceKillTimeoutId = setTimeout(() => {
280
+ if (childProcess.pid) {
281
+ logger?.error("command_termination_escalated", {
282
+ runId,
283
+ command,
284
+ args: loggedArgs,
285
+ cwd,
286
+ pid: childProcess.pid,
287
+ killGraceMs,
288
+ });
289
+ terminateChildProcess(childProcess.pid, true);
290
+ }
291
+ }, killGraceMs);
292
+ }
293
+ settle(error);
294
+ };
295
+ const abortListener = () => {
296
+ logger?.error("command_abort_signal_received", {
297
+ runId,
298
+ command,
299
+ args: loggedArgs,
300
+ cwd,
301
+ pid: childProcess.pid,
302
+ signalReason: signal?.reason,
303
+ });
304
+ beginTermination(new CommandExecutionError("cancelled", "Command cancelled", {
305
+ runId,
306
+ command,
307
+ args: loggedArgs,
308
+ stdout,
309
+ stderr,
310
+ }));
311
+ };
312
+ signal?.addEventListener("abort", abortListener, { once: true });
313
+ if (signal?.aborted) {
314
+ abortListener();
315
+ return;
316
+ }
317
+ if (timeoutMs && timeoutMs > 0) {
318
+ logger?.debug("command_timeout_started", {
319
+ runId,
320
+ command,
321
+ args: loggedArgs,
322
+ cwd,
323
+ timeoutMs,
324
+ });
325
+ timeoutId = setTimeout(() => {
326
+ logger?.error("command_timeout_elapsed", {
327
+ runId,
328
+ command,
329
+ args: loggedArgs,
330
+ cwd,
331
+ pid: childProcess.pid,
332
+ timeoutMs,
333
+ });
334
+ beginTermination(new CommandExecutionError("timeout", `Command timed out after ${timeoutMs}ms`, {
335
+ runId,
336
+ command,
337
+ args: loggedArgs,
338
+ stdout,
339
+ stderr,
340
+ }));
341
+ }, timeoutMs);
342
+ }
343
+ childProcess.stdout?.on("data", (data) => {
344
+ if (isSettled)
345
+ return;
346
+ const chunk = data.toString();
347
+ stdout += chunk;
348
+ stdoutChunkCount += 1;
349
+ const loggedChunk = redactSensitiveText(chunk);
350
+ logger?.debug("command_stdout_chunk", {
351
+ runId,
352
+ command,
353
+ args: loggedArgs,
354
+ cwd,
355
+ pid: childProcess.pid,
356
+ chunkIndex: stdoutChunkCount,
357
+ chunkLength: chunk.length,
358
+ chunk: loggedChunk,
359
+ });
360
+ if (onProgress && stdout.length > lastReportedLength) {
361
+ const newContent = stdout.substring(lastReportedLength);
362
+ lastReportedLength = stdout.length;
363
+ onProgress(newContent);
364
+ }
365
+ writeRunningSnapshot();
366
+ });
367
+ childProcess.stderr?.on("data", (data) => {
368
+ if (isSettled)
369
+ return;
370
+ const chunk = data.toString();
371
+ stderr += chunk;
372
+ stderrChunkCount += 1;
373
+ const loggedChunk = redactSensitiveText(chunk);
374
+ logger?.debug("command_stderr_chunk", {
375
+ runId,
376
+ command,
377
+ args: loggedArgs,
378
+ cwd,
379
+ pid: childProcess.pid,
380
+ chunkIndex: stderrChunkCount,
381
+ chunkLength: chunk.length,
382
+ chunk: loggedChunk,
383
+ });
384
+ if (mapKindToErrorType("failed", stderr, stdout) === "RESOURCE_EXHAUSTED") {
385
+ logger?.error("command_quota_exhausted", {
386
+ runId,
387
+ command,
388
+ args: loggedArgs,
389
+ cwd,
390
+ pid: childProcess.pid,
391
+ stderr: redactSensitiveText(stderr),
392
+ });
393
+ beginTermination(new CommandExecutionError("quota", `Quota exhausted: ${redactSensitiveText(stderr).trim()}`, { runId, command, args: loggedArgs, stdout, stderr }));
394
+ }
395
+ writeRunningSnapshot();
396
+ });
397
+ childProcess.on("error", (error) => {
398
+ if (!isSettled) {
399
+ clearRequestTimer();
400
+ clearTerminationTimer();
401
+ signal?.removeEventListener("abort", abortListener);
402
+ logger?.error("command_spawn_failed", {
403
+ runId,
404
+ command,
405
+ args: loggedArgs,
406
+ cwd,
407
+ pid: childProcess.pid,
408
+ error,
409
+ });
410
+ settle(new CommandExecutionError("spawn", `Failed to spawn command: ${error.message}`, {
411
+ runId,
412
+ command,
413
+ args: loggedArgs,
414
+ stdout,
415
+ stderr,
416
+ }));
417
+ }
418
+ });
419
+ childProcess.on("close", (code) => {
420
+ clearRequestTimer();
421
+ clearTerminationTimer();
422
+ signal?.removeEventListener("abort", abortListener);
423
+ logger?.info("command_closed", {
424
+ runId,
425
+ command,
426
+ args: loggedArgs,
427
+ cwd,
428
+ pid: childProcess.pid,
429
+ exitCode: code,
430
+ stdoutLength: stdout.length,
431
+ stderrLength: stderr.length,
432
+ stdoutChunkCount,
433
+ stderrChunkCount,
434
+ settledEarly: isSettled,
435
+ });
436
+ if (isSettled) {
437
+ return;
438
+ }
439
+ if (code === 0) {
440
+ const output = stdout.trim();
441
+ if (output || !stderr.trim() || allowNoStdoutOnSuccess) {
442
+ logger?.info("command_completed", {
443
+ runId,
444
+ command,
445
+ args: loggedArgs,
446
+ cwd,
447
+ pid: childProcess.pid,
448
+ exitCode: code,
449
+ resultKind: "success",
450
+ outputLength: output.length,
451
+ });
452
+ settle(undefined, output, code);
453
+ return;
454
+ }
455
+ logger?.error("command_completed_without_stdout", {
456
+ runId,
457
+ command,
458
+ args: loggedArgs,
459
+ cwd,
460
+ pid: childProcess.pid,
461
+ exitCode: code,
462
+ stderr: redactSensitiveText(stderr),
463
+ });
464
+ settle(new CommandExecutionError("no-output", `Command produced no output. stderr: ${redactSensitiveText(stderr).trim()}`, { runId, command, args: loggedArgs, exitCode: code, stdout, stderr }), undefined, code);
465
+ return;
466
+ }
467
+ const exhausted = mapKindToErrorType("failed", stderr, stdout) === "RESOURCE_EXHAUSTED";
468
+ const redactedStdout = redactSensitiveText(stdout);
469
+ const redactedStderr = redactSensitiveText(stderr);
470
+ const errorMessage = redactedStderr.trim() || "Unknown error";
471
+ logger?.error("command_failed", {
472
+ runId,
473
+ command,
474
+ args: loggedArgs,
475
+ cwd,
476
+ pid: childProcess.pid,
477
+ exitCode: code,
478
+ stderr: redactedStderr,
479
+ stdout: redactedStdout,
480
+ });
481
+ settle(new CommandExecutionError(exhausted ? "quota" : "failed", exhausted
482
+ ? `Quota exhausted: ${redactedStderr.trim()}`
483
+ : `Command failed with code ${code}: ${errorMessage}`, { runId, command, args: loggedArgs, exitCode: code, stdout, stderr }), undefined, code);
484
+ });
485
+ });
486
+ }
487
+ //# sourceMappingURL=commandExecutor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commandExecutor.js","sourceRoot":"","sources":["../../src/utils/commandExecutor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export declare function getCursorCommandCandidates(): string[];
2
+ export declare function getCursorCommand(): string;
3
+ //# sourceMappingURL=cursorCli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cursorCli.d.ts","sourceRoot":"","sources":["../../src/utils/cursorCli.ts"],"names":[],"mappings":"AAKA,wBAAgB,0BAA0B,IAAI,MAAM,EAAE,CAUrD;AAED,wBAAgB,gBAAgB,IAAI,MAAM,CAIzC"}
@@ -0,0 +1,20 @@
1
+ import { existsSync } from 'fs';
2
+ import { homedir } from 'os';
3
+ import { join } from 'path';
4
+ import { CLI } from '../constants.js';
5
+ export function getCursorCommandCandidates() {
6
+ const candidates = [
7
+ process.env.CURSOR_AGENT_BIN,
8
+ CLI.COMMANDS.CURSOR_AGENT,
9
+ 'agent',
10
+ join(homedir(), '.local', 'bin', 'cursor-agent'),
11
+ join(homedir(), '.local', 'bin', 'agent'),
12
+ ];
13
+ return candidates.filter((candidate) => !!candidate);
14
+ }
15
+ export function getCursorCommand() {
16
+ const candidates = getCursorCommandCandidates();
17
+ const absoluteMatch = candidates.find(candidate => candidate.startsWith('/') && existsSync(candidate));
18
+ return absoluteMatch ?? candidates[0] ?? CLI.COMMANDS.CURSOR_AGENT;
19
+ }
20
+ //# sourceMappingURL=cursorCli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cursorCli.js","sourceRoot":"","sources":["../../src/utils/cursorCli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;AAEtC,MAAM,UAAU,0BAA0B;IACxC,MAAM,UAAU,GAAG;QACjB,OAAO,CAAC,GAAG,CAAC,gBAAgB;QAC5B,GAAG,CAAC,QAAQ,CAAC,YAAY;QACzB,OAAO;QACP,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,cAAc,CAAC;QAChD,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,CAAC;KAC1C,CAAC;IAEF,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC,SAAS,EAAuB,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;AAC5E,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC9B,MAAM,UAAU,GAAG,0BAA0B,EAAE,CAAC;IAChD,MAAM,aAAa,GAAG,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;IACvG,OAAO,aAAa,IAAI,UAAU,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC;AACrE,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { ToolExecutionContext } from '../execution.js';
2
+ export declare function executeCursorCLI(prompt: string, model: string, force?: boolean, trust?: boolean, workspace?: string, context?: ToolExecutionContext): Promise<string>;
3
+ //# sourceMappingURL=cursorExecutor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cursorExecutor.d.ts","sourceRoot":"","sources":["../../src/utils/cursorExecutor.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAEvD,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,KAAK,CAAC,EAAE,OAAO,EACf,KAAK,CAAC,EAAE,OAAO,EACf,SAAS,CAAC,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,oBAAoB,GAC7B,OAAO,CAAC,MAAM,CAAC,CAoBjB"}
@@ -0,0 +1,22 @@
1
+ import { executeCommand } from './commandExecutor.js';
2
+ import { getCursorCommand } from './cursorCli.js';
3
+ import { CLI } from '../constants.js';
4
+ export async function executeCursorCLI(prompt, model, force, trust, workspace, context) {
5
+ const args = [
6
+ CLI.CURSOR_FLAGS.PRINT,
7
+ CLI.CURSOR_FLAGS.OUTPUT_FORMAT, 'text',
8
+ CLI.CURSOR_FLAGS.MODEL, model,
9
+ ];
10
+ if (force) {
11
+ args.push(CLI.CURSOR_FLAGS.FORCE);
12
+ }
13
+ if (trust) {
14
+ args.push(CLI.CURSOR_FLAGS.TRUST);
15
+ }
16
+ if (workspace) {
17
+ args.push(CLI.CURSOR_FLAGS.WORKSPACE, workspace);
18
+ }
19
+ args.push(prompt);
20
+ return executeCommand(getCursorCommand(), args, context);
21
+ }
22
+ //# sourceMappingURL=cursorExecutor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cursorExecutor.js","sourceRoot":"","sources":["../../src/utils/cursorExecutor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;AAGtC,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,MAAc,EACd,KAAa,EACb,KAAe,EACf,KAAe,EACf,SAAkB,EAClB,OAA8B;IAE9B,MAAM,IAAI,GAAa;QACrB,GAAG,CAAC,YAAY,CAAC,KAAK;QACtB,GAAG,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM;QACtC,GAAG,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK;KAC9B,CAAC;IAEF,IAAI,KAAK,EAAE,CAAC;QACV,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;IACD,IAAI,KAAK,EAAE,CAAC;QACV,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;IACD,IAAI,SAAS,EAAE,CAAC;QACd,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IACnD,CAAC;IAED,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAElB,OAAO,cAAc,CAAC,gBAAgB,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;AAC3D,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { ToolExecutionContext } from '../execution.js';
2
+ export declare function executeGeminiCLI(prompt: string, model: string, sandbox?: boolean, changeMode?: boolean, approvalMode?: string, skipTrust?: boolean, context?: ToolExecutionContext): Promise<string>;
3
+ export declare function processChangeModeOutput(rawResult: string, chunkIndex?: number, chunkCacheKey?: string, prompt?: string): Promise<string>;
4
+ //# sourceMappingURL=geminiExecutor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"geminiExecutor.d.ts","sourceRoot":"","sources":["../../src/utils/geminiExecutor.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAOvD,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,OAAO,EACjB,UAAU,CAAC,EAAE,OAAO,EACpB,YAAY,CAAC,EAAE,MAAM,EACrB,SAAS,CAAC,EAAE,OAAO,EACnB,OAAO,CAAC,EAAE,oBAAoB,GAC7B,OAAO,CAAC,MAAM,CAAC,CAsFjB;AAED,wBAAsB,uBAAuB,CAC3C,SAAS,EAAE,MAAM,EACjB,UAAU,CAAC,EAAE,MAAM,EACnB,aAAa,CAAC,EAAE,MAAM,EACtB,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,CAAC,CA0DjB"}