agent-composer 0.3.1 → 0.4.0

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 (180) hide show
  1. package/README.md +495 -180
  2. package/composer.config.schema.json +206 -2
  3. package/dist/cli/cleanup.d.ts +24 -0
  4. package/dist/cli/cleanup.js +151 -0
  5. package/dist/cli/cleanup.js.map +1 -0
  6. package/dist/cli/doctor.d.ts +12 -0
  7. package/dist/cli/doctor.js +244 -4
  8. package/dist/cli/doctor.js.map +1 -1
  9. package/dist/cli/goal.d.ts +28 -0
  10. package/dist/cli/goal.js +251 -0
  11. package/dist/cli/goal.js.map +1 -0
  12. package/dist/cli/help.d.ts +3 -0
  13. package/dist/cli/help.js +31 -0
  14. package/dist/cli/help.js.map +1 -0
  15. package/dist/cli/init.d.ts +5 -0
  16. package/dist/cli/init.js +116 -21
  17. package/dist/cli/init.js.map +1 -1
  18. package/dist/cli/initArgs.d.ts +16 -0
  19. package/dist/cli/initArgs.js +19 -0
  20. package/dist/cli/initArgs.js.map +1 -0
  21. package/dist/cli/installGitHook.d.ts +7 -0
  22. package/dist/cli/installGitHook.js +61 -0
  23. package/dist/cli/installGitHook.js.map +1 -0
  24. package/dist/cli/mode.d.ts +6 -0
  25. package/dist/cli/mode.js +25 -0
  26. package/dist/cli/mode.js.map +1 -0
  27. package/dist/cli/status.d.ts +105 -0
  28. package/dist/cli/status.js +400 -0
  29. package/dist/cli/status.js.map +1 -0
  30. package/dist/config/env.d.ts +1 -1
  31. package/dist/config/modes.d.ts +10 -0
  32. package/dist/config/modes.js +26 -0
  33. package/dist/config/modes.js.map +1 -0
  34. package/dist/config/oracleRole.d.ts +10 -0
  35. package/dist/config/oracleRole.js +11 -0
  36. package/dist/config/oracleRole.js.map +1 -0
  37. package/dist/config/schema.d.ts +246 -0
  38. package/dist/config/schema.js +127 -2
  39. package/dist/config/schema.js.map +1 -1
  40. package/dist/evolve/reflection.d.ts +9 -0
  41. package/dist/evolve/reflection.js +14 -0
  42. package/dist/evolve/reflection.js.map +1 -1
  43. package/dist/evolve/runner.d.ts +2 -1
  44. package/dist/evolve/runner.js +2 -1
  45. package/dist/evolve/runner.js.map +1 -1
  46. package/dist/index.js +115 -6
  47. package/dist/index.js.map +1 -1
  48. package/dist/providers/AnthropicCompatibleProvider.d.ts +13 -1
  49. package/dist/providers/AnthropicCompatibleProvider.js +115 -9
  50. package/dist/providers/AnthropicCompatibleProvider.js.map +1 -1
  51. package/dist/providers/CLIProvider.d.ts +18 -0
  52. package/dist/providers/CLIProvider.js +265 -62
  53. package/dist/providers/CLIProvider.js.map +1 -1
  54. package/dist/providers/IProvider.d.ts +12 -0
  55. package/dist/providers/SpendGuardProvider.d.ts +32 -0
  56. package/dist/providers/SpendGuardProvider.js +98 -0
  57. package/dist/providers/SpendGuardProvider.js.map +1 -0
  58. package/dist/registry.d.ts +5 -2
  59. package/dist/registry.js +17 -2
  60. package/dist/registry.js.map +1 -1
  61. package/dist/server/activeRuns.d.ts +17 -0
  62. package/dist/server/activeRuns.js +114 -0
  63. package/dist/server/activeRuns.js.map +1 -0
  64. package/dist/server/codexLifecycleRunner.d.ts +29 -0
  65. package/dist/server/codexLifecycleRunner.js +188 -0
  66. package/dist/server/codexLifecycleRunner.js.map +1 -0
  67. package/dist/server/configMutation.d.ts +22 -0
  68. package/dist/server/configMutation.js +121 -0
  69. package/dist/server/configMutation.js.map +1 -0
  70. package/dist/server/handoffContext.d.ts +1 -0
  71. package/dist/server/handoffContext.js +12 -0
  72. package/dist/server/handoffContext.js.map +1 -0
  73. package/dist/server/progress.d.ts +24 -0
  74. package/dist/server/progress.js +109 -0
  75. package/dist/server/progress.js.map +1 -0
  76. package/dist/server/toolDescriptions.d.ts +60 -0
  77. package/dist/server/toolDescriptions.js +134 -0
  78. package/dist/server/toolDescriptions.js.map +1 -0
  79. package/dist/server.d.ts +19 -25
  80. package/dist/server.js +87 -377
  81. package/dist/server.js.map +1 -1
  82. package/dist/tools/audit.d.ts +2 -0
  83. package/dist/tools/audit.js +66 -0
  84. package/dist/tools/audit.js.map +1 -0
  85. package/dist/tools/code.d.ts +2 -0
  86. package/dist/tools/code.js +160 -0
  87. package/dist/tools/code.js.map +1 -0
  88. package/dist/tools/codexLifecycle.d.ts +2 -0
  89. package/dist/tools/codexLifecycle.js +206 -0
  90. package/dist/tools/codexLifecycle.js.map +1 -0
  91. package/dist/tools/config.d.ts +2 -0
  92. package/dist/tools/config.js +183 -0
  93. package/dist/tools/config.js.map +1 -0
  94. package/dist/tools/context.d.ts +31 -0
  95. package/dist/tools/context.js +2 -0
  96. package/dist/tools/context.js.map +1 -0
  97. package/dist/tools/goal.d.ts +2 -0
  98. package/dist/tools/goal.js +159 -0
  99. package/dist/tools/goal.js.map +1 -0
  100. package/dist/tools/handoff.d.ts +2 -0
  101. package/dist/tools/handoff.js +57 -0
  102. package/dist/tools/handoff.js.map +1 -0
  103. package/dist/tools/oracle.d.ts +2 -0
  104. package/dist/tools/oracle.js +248 -0
  105. package/dist/tools/oracle.js.map +1 -0
  106. package/dist/tools/research.d.ts +2 -0
  107. package/dist/tools/research.js +51 -0
  108. package/dist/tools/research.js.map +1 -0
  109. package/dist/tools/review.d.ts +2 -0
  110. package/dist/tools/review.js +233 -0
  111. package/dist/tools/review.js.map +1 -0
  112. package/dist/tools/route.d.ts +2 -0
  113. package/dist/tools/route.js +69 -0
  114. package/dist/tools/route.js.map +1 -0
  115. package/dist/tools/session.d.ts +2 -0
  116. package/dist/tools/session.js +37 -0
  117. package/dist/tools/session.js.map +1 -0
  118. package/dist/tools/status.d.ts +2 -0
  119. package/dist/tools/status.js +34 -0
  120. package/dist/tools/status.js.map +1 -0
  121. package/dist/tools/workflow.d.ts +2 -0
  122. package/dist/tools/workflow.js +27 -0
  123. package/dist/tools/workflow.js.map +1 -0
  124. package/dist/util/applyFileBlocks.d.ts +18 -0
  125. package/dist/util/applyFileBlocks.js +163 -0
  126. package/dist/util/applyFileBlocks.js.map +1 -0
  127. package/dist/util/asyncControl.d.ts +14 -0
  128. package/dist/util/asyncControl.js +106 -0
  129. package/dist/util/asyncControl.js.map +1 -0
  130. package/dist/util/auditLog.d.ts +56 -0
  131. package/dist/util/auditLog.js +232 -0
  132. package/dist/util/auditLog.js.map +1 -0
  133. package/dist/util/codexLifecycle.d.ts +55 -0
  134. package/dist/util/codexLifecycle.js +102 -0
  135. package/dist/util/codexLifecycle.js.map +1 -0
  136. package/dist/util/codexLifecycleJob.d.ts +209 -0
  137. package/dist/util/codexLifecycleJob.js +360 -0
  138. package/dist/util/codexLifecycleJob.js.map +1 -0
  139. package/dist/util/composerDisabled.d.ts +6 -0
  140. package/dist/util/composerDisabled.js +27 -0
  141. package/dist/util/composerDisabled.js.map +1 -0
  142. package/dist/util/dispatchHint.d.ts +5 -3
  143. package/dist/util/dispatchHint.js +62 -2
  144. package/dist/util/dispatchHint.js.map +1 -1
  145. package/dist/util/goal.d.ts +132 -0
  146. package/dist/util/goal.js +616 -0
  147. package/dist/util/goal.js.map +1 -0
  148. package/dist/util/goalReport.d.ts +51 -0
  149. package/dist/util/goalReport.js +164 -0
  150. package/dist/util/goalReport.js.map +1 -0
  151. package/dist/util/jobPolling.d.ts +9 -0
  152. package/dist/util/jobPolling.js +17 -0
  153. package/dist/util/jobPolling.js.map +1 -0
  154. package/dist/util/oracleJob.d.ts +66 -0
  155. package/dist/util/oracleJob.js +295 -0
  156. package/dist/util/oracleJob.js.map +1 -0
  157. package/dist/util/oracleLock.d.ts +38 -0
  158. package/dist/util/oracleLock.js +182 -0
  159. package/dist/util/oracleLock.js.map +1 -0
  160. package/dist/util/reviewDiff.d.ts +8 -0
  161. package/dist/util/reviewDiff.js +29 -0
  162. package/dist/util/reviewDiff.js.map +1 -0
  163. package/dist/util/reviewJob.d.ts +57 -0
  164. package/dist/util/reviewJob.js +207 -0
  165. package/dist/util/reviewJob.js.map +1 -0
  166. package/dist/util/workflowPlan.d.ts +24 -0
  167. package/dist/util/workflowPlan.js +49 -0
  168. package/dist/util/workflowPlan.js.map +1 -0
  169. package/package.json +8 -1
  170. package/plugin/composer-mastermind/commands/evolve.md +4 -0
  171. package/plugin/composer-mastermind/hooks/boundary_guard.sh +43 -2
  172. package/plugin/composer-mastermind/hooks/codex_warm_review.sh +161 -9
  173. package/plugin/composer-mastermind/hooks/learn.sh +172 -32
  174. package/plugin/composer-mastermind/hooks/precommit_codex_review.sh +430 -62
  175. package/plugin/composer-mastermind/skills/composer-mastermind/SKILL.md +184 -4
  176. package/scripts/composer-oracle-router-safe.sh +47 -0
  177. package/scripts/composer-statusline-segment.mjs +40 -0
  178. package/scripts/oracle-codex-handoff-safe.sh +49 -0
  179. package/scripts/oracle-plan-mcp.sh +66 -0
  180. package/scripts/oracle-pro-safe.sh +471 -0
@@ -9,17 +9,61 @@ import fs from "node:fs";
9
9
  import os from "node:os";
10
10
  import path from "node:path";
11
11
  import { projectToolResult } from "../util/projectToolResult.js";
12
+ import { createDeadlineSignal, isAbortError, } from "../util/asyncControl.js";
12
13
  // Default executor uses spawn (not execFile) so we can explicitly ignore
13
14
  // stdin. Some CLIs (notably `agy --print`) hang forever waiting on stdin
14
15
  // when launched from a non-TTY parent if stdin is inherited.
15
16
  const DEFAULT_EXEC = (file, args, options) => new Promise((resolve, reject) => {
16
17
  const maxBuffer = options.maxBuffer ?? 32 * 1024 * 1024;
17
18
  const timeoutMs = options.timeout;
19
+ let killed = false;
20
+ let killTimer = null;
18
21
  const child = spawn(file, [...args], {
19
22
  cwd: options.cwd,
20
23
  stdio: ["ignore", "pipe", "pipe"],
21
24
  signal: options.signal,
25
+ // Own process group on POSIX so a timeout can kill descendant
26
+ // processes (e.g. oracle -> Chrome, codex helpers), not just the child.
27
+ detached: process.platform !== "win32",
22
28
  });
29
+ const escalateKill = () => {
30
+ if (typeof child.pid === "number" && process.platform !== "win32") {
31
+ try {
32
+ process.kill(-child.pid, "SIGKILL");
33
+ return;
34
+ }
35
+ catch {
36
+ // group already gone — fall back to direct kill
37
+ }
38
+ }
39
+ try {
40
+ child.kill("SIGKILL");
41
+ }
42
+ catch {
43
+ // child already exited
44
+ }
45
+ };
46
+ const killChildTree = () => {
47
+ if (killed)
48
+ return;
49
+ killed = true;
50
+ if (typeof child.pid === "number" && process.platform !== "win32") {
51
+ try {
52
+ process.kill(-child.pid, "SIGTERM");
53
+ }
54
+ catch {
55
+ child.kill("SIGTERM");
56
+ }
57
+ }
58
+ else {
59
+ child.kill("SIGTERM");
60
+ }
61
+ // Escalate to SIGKILL if the tree ignores SIGTERM within the grace window.
62
+ if (!killTimer) {
63
+ killTimer = setTimeout(escalateKill, KILL_GRACE_MS);
64
+ killTimer.unref?.();
65
+ }
66
+ };
23
67
  let stdout = "";
24
68
  let stderr = "";
25
69
  let timedOut = false;
@@ -27,13 +71,29 @@ const DEFAULT_EXEC = (file, args, options) => new Promise((resolve, reject) => {
27
71
  const timer = typeof timeoutMs === "number" && timeoutMs > 0
28
72
  ? setTimeout(() => {
29
73
  timedOut = true;
30
- child.kill("SIGTERM");
74
+ killChildTree();
31
75
  }, timeoutMs)
32
76
  : null;
77
+ const onAbort = () => killChildTree();
78
+ const cleanupTimers = () => {
79
+ if (timer)
80
+ clearTimeout(timer);
81
+ if (killTimer)
82
+ clearTimeout(killTimer);
83
+ options.signal?.removeEventListener("abort", onAbort);
84
+ };
85
+ if (options.signal) {
86
+ if (options.signal.aborted) {
87
+ killChildTree();
88
+ }
89
+ else {
90
+ options.signal.addEventListener("abort", onAbort, { once: true });
91
+ }
92
+ }
33
93
  const checkBuffer = (kind, payload) => {
34
94
  if (payload.length > maxBuffer) {
35
95
  bufferExceeded = true;
36
- child.kill("SIGTERM");
96
+ killChildTree();
37
97
  }
38
98
  else if (kind === "stdout") {
39
99
  stdout = payload;
@@ -43,25 +103,32 @@ const DEFAULT_EXEC = (file, args, options) => new Promise((resolve, reject) => {
43
103
  }
44
104
  };
45
105
  child.stdout?.on("data", (chunk) => {
46
- checkBuffer("stdout", stdout + chunk.toString());
106
+ const nextStdout = stdout + chunk.toString();
107
+ checkBuffer("stdout", nextStdout);
108
+ options.onStdout?.(nextStdout);
47
109
  });
48
110
  child.stderr?.on("data", (chunk) => {
49
111
  checkBuffer("stderr", stderr + chunk.toString());
50
112
  });
51
113
  child.once("error", (err) => {
52
- if (timer)
53
- clearTimeout(timer);
114
+ cleanupTimers();
115
+ if (options.signal?.aborted && options.signal.reason instanceof Error) {
116
+ reject(options.signal.reason);
117
+ return;
118
+ }
54
119
  reject(err);
55
120
  });
56
121
  child.once("close", (code, signal) => {
57
- if (timer)
58
- clearTimeout(timer);
122
+ cleanupTimers();
59
123
  if (timedOut) {
60
124
  return reject(new Error(`CLIProvider: '${file}' timed out after ${timeoutMs}ms`));
61
125
  }
62
126
  if (bufferExceeded) {
63
127
  return reject(new Error(`CLIProvider: '${file}' exceeded maxBuffer ${maxBuffer}`));
64
128
  }
129
+ if (options.signal?.aborted && options.signal.reason instanceof Error) {
130
+ return reject(options.signal.reason);
131
+ }
65
132
  if (code !== 0) {
66
133
  return reject(new Error(`CLIProvider: '${file}' exited code=${code} signal=${signal ?? "none"}; stderr: ${stderr.slice(0, 500)}`));
67
134
  }
@@ -72,6 +139,7 @@ const DEFAULT_TIMEOUT_MS = 15 * 60_000; // Long enough for Codex apply flows, st
72
139
  const DEFAULT_MAX_BUFFER = 32 * 1024 * 1024; // 32 MB.
73
140
  const DEFAULT_RETRIES = 2; // agy/CLI agents occasionally "time out waiting for response" — retry transient failures.
74
141
  const DEFAULT_MAX_RESULT_CHARS = 16_000;
142
+ const KILL_GRACE_MS = 5000; // SIGTERM grace before escalating to SIGKILL on a stuck child tree.
75
143
  export class CLIProvider {
76
144
  id = "cli";
77
145
  modelLabel;
@@ -79,6 +147,7 @@ export class CLIProvider {
79
147
  exec;
80
148
  cwd;
81
149
  timeoutMs;
150
+ totalWallClockMs;
82
151
  maxBuffer;
83
152
  retries;
84
153
  maxResultChars;
@@ -93,6 +162,13 @@ export class CLIProvider {
93
162
  this.exec = opts.execFn ?? DEFAULT_EXEC;
94
163
  this.cwd = opts.cwd;
95
164
  this.timeoutMs = opts.timeoutMs ?? DEFAULT_TIMEOUT_MS;
165
+ this.totalWallClockMs = opts.totalWallClockMs ?? this.timeoutMs;
166
+ if (!Number.isFinite(this.timeoutMs) || this.timeoutMs <= 0) {
167
+ throw new Error("CLIProvider: timeoutMs must be a positive finite number");
168
+ }
169
+ if (!Number.isFinite(this.totalWallClockMs) || this.totalWallClockMs <= 0) {
170
+ throw new Error("CLIProvider: total_wall_clock_ms must be a positive finite number");
171
+ }
96
172
  this.maxBuffer = opts.maxBuffer ?? DEFAULT_MAX_BUFFER;
97
173
  this.retries = opts.retries ?? DEFAULT_RETRIES;
98
174
  this.maxResultChars = opts.maxResultChars ?? DEFAULT_MAX_RESULT_CHARS;
@@ -111,61 +187,83 @@ export class CLIProvider {
111
187
  throw new Error("CLIProvider: argv missing binary");
112
188
  }
113
189
  const baseCwd = input.cwd ?? this.cwd;
114
- let lastError;
115
- for (let attempt = 0; attempt <= this.retries; attempt++) {
116
- const execution = CLIProvider.prepareArgs(bin, staticArgs, fullPrompt, {
117
- projectDir: input.projectDir,
118
- });
119
- const startedAt = Date.now();
120
- try {
121
- const { stdout } = await this.exec(bin, execution.args, {
122
- cwd: execution.cwd ?? baseCwd,
123
- maxBuffer: this.maxBuffer,
124
- timeout: this.timeoutMs,
125
- signal: input.signal,
126
- });
127
- const durationMs = Date.now() - startedAt;
128
- const text = execution.finalMessagePath
129
- ? CLIProvider.readFinalMessage(execution.finalMessagePath) ?? stdout
130
- : stdout;
131
- const transientFailure = CLIProvider.isTransientFailure(text);
132
- CLIProvider.logUsage({
133
- bin,
134
- model: this.modelLabel,
135
- durationMs,
136
- stdoutChars: stdout.length,
137
- textChars: text.length,
138
- attempt: attempt + 1,
139
- status: transientFailure ? "transient" : "success",
190
+ const deadline = createDeadlineSignal(`CLIProvider '${bin}' total_wall_clock_ms`, this.totalWallClockMs, input.signal);
191
+ try {
192
+ let lastError;
193
+ for (let attempt = 0; attempt <= this.retries; attempt++) {
194
+ deadline.throwIfAborted();
195
+ const remainingMs = deadline.remainingMs();
196
+ if (remainingMs <= 0)
197
+ deadline.throwIfAborted();
198
+ const execution = CLIProvider.prepareArgs(bin, staticArgs, fullPrompt, {
199
+ projectDir: input.projectDir,
200
+ readOnly: input.readOnly,
201
+ model: input.model,
202
+ reasoningEffort: input.reasoningEffort,
203
+ sandbox: input.sandbox,
140
204
  });
141
- if (transientFailure) {
142
- lastError = new Error(`CLIProvider: '${bin}' transient failure on attempt ${attempt + 1}: ${text.trim().slice(0, 200)}`);
143
- continue;
205
+ const startedAt = Date.now();
206
+ try {
207
+ const stdoutProgress = CLIProvider.createStdoutProgressReporter(input.onProgress);
208
+ const { stdout } = await this.exec(bin, execution.args, {
209
+ cwd: execution.cwd ?? baseCwd,
210
+ maxBuffer: this.maxBuffer,
211
+ timeout: Math.max(1, Math.min(this.timeoutMs, remainingMs)),
212
+ signal: deadline.signal,
213
+ onStdout: stdoutProgress,
214
+ });
215
+ deadline.throwIfAborted();
216
+ const durationMs = Date.now() - startedAt;
217
+ const text = execution.finalMessagePath
218
+ ? CLIProvider.readFinalMessage(execution.finalMessagePath) ?? stdout
219
+ : stdout;
220
+ const transientFailure = CLIProvider.isTransientFailure(text);
221
+ CLIProvider.logUsage({
222
+ bin,
223
+ model: this.modelLabel,
224
+ durationMs,
225
+ stdoutChars: stdout.length,
226
+ textChars: text.length,
227
+ attempt: attempt + 1,
228
+ status: transientFailure ? "transient" : "success",
229
+ });
230
+ if (transientFailure) {
231
+ lastError = new Error(`CLIProvider: '${bin}' transient failure on attempt ${attempt + 1}: ${text.trim().slice(0, 200)}`);
232
+ deadline.throwIfAborted();
233
+ continue;
234
+ }
235
+ const bounded = this.maxResultChars > 0
236
+ ? projectToolResult(text, { maxChars: this.maxResultChars }).text
237
+ : text;
238
+ return { text: bounded };
239
+ }
240
+ catch (err) {
241
+ lastError = err instanceof Error ? err : new Error(String(err));
242
+ CLIProvider.logUsage({
243
+ bin,
244
+ model: this.modelLabel,
245
+ durationMs: Date.now() - startedAt,
246
+ stdoutChars: 0,
247
+ textChars: 0,
248
+ attempt: attempt + 1,
249
+ status: "error",
250
+ error: lastError.message.slice(0, 300),
251
+ });
252
+ if (deadline.signal.aborted || input.signal?.aborted || isAbortError(lastError)) {
253
+ throw lastError;
254
+ }
255
+ deadline.throwIfAborted();
256
+ }
257
+ finally {
258
+ execution.cleanup();
144
259
  }
145
- const bounded = this.maxResultChars > 0
146
- ? projectToolResult(text, { maxChars: this.maxResultChars }).text
147
- : text;
148
- return { text: bounded };
149
- }
150
- catch (err) {
151
- lastError = err instanceof Error ? err : new Error(String(err));
152
- CLIProvider.logUsage({
153
- bin,
154
- model: this.modelLabel,
155
- durationMs: Date.now() - startedAt,
156
- stdoutChars: 0,
157
- textChars: 0,
158
- attempt: attempt + 1,
159
- status: "error",
160
- error: lastError.message.slice(0, 300),
161
- });
162
- }
163
- finally {
164
- execution.cleanup();
165
260
  }
261
+ throw (lastError ??
262
+ new Error(`CLIProvider: '${bin}' failed after ${this.retries + 1} attempts`));
263
+ }
264
+ finally {
265
+ deadline.cleanup();
166
266
  }
167
- throw (lastError ??
168
- new Error(`CLIProvider: '${bin}' failed after ${this.retries + 1} attempts`));
169
267
  }
170
268
  /** Output signalling a retryable transient failure (timeout / rate-limit / empty). */
171
269
  static isTransientFailure(stdout) {
@@ -176,9 +274,24 @@ export class CLIProvider {
176
274
  let tempDir;
177
275
  let finalMessagePath = CLIProvider.findFlagValue(args, "--output-last-message");
178
276
  let cwd;
277
+ if (options.readOnly && !CLIProvider.isCodexExec(bin, args)) {
278
+ throw new Error("CLIProvider: readOnly execution requires a supported Codex exec CLI config.");
279
+ }
179
280
  if (CLIProvider.isCodexExec(bin, args)) {
180
281
  if (options.projectDir && !CLIProvider.hasCodexCd(args)) {
181
- args.splice(CLIProvider.codexExecIndex(args), 0, "-C", options.projectDir);
282
+ args.splice(CLIProvider.codexExecCommandIndex(bin, args), 0, "-C", options.projectDir);
283
+ }
284
+ if (options.model && !CLIProvider.hasCodexModel(args)) {
285
+ args.splice(CLIProvider.codexExecCommandIndex(bin, args), 0, "-m", options.model);
286
+ }
287
+ if (options.reasoningEffort && !CLIProvider.hasCodexReasoningEffort(args)) {
288
+ args.splice(CLIProvider.codexExecCommandIndex(bin, args), 0, "-c", `model_reasoning_effort=${options.reasoningEffort}`);
289
+ }
290
+ if (options.sandbox && !options.readOnly && CLIProvider.findSandboxValue(args) === undefined) {
291
+ args.splice(CLIProvider.codexExecCommandIndex(bin, args), 0, "-s", options.sandbox);
292
+ }
293
+ if (options.readOnly) {
294
+ CLIProvider.forceCodexReadOnlySandbox(bin, args);
182
295
  }
183
296
  if (!finalMessagePath) {
184
297
  tempDir = fs.mkdtempSync(path.join(os.tmpdir(), "composer-codex-"));
@@ -201,7 +314,7 @@ export class CLIProvider {
201
314
  };
202
315
  }
203
316
  static isCodexExec(bin, args) {
204
- return path.basename(bin) === "codex" && CLIProvider.codexExecIndex(args) >= 0;
317
+ return CLIProvider.codexExecCommandIndex(bin, args) >= 0;
205
318
  }
206
319
  static assertSafeCli(argv) {
207
320
  const [bin, ...args] = argv;
@@ -209,8 +322,7 @@ export class CLIProvider {
209
322
  return;
210
323
  if (process.env["COMPOSER_ALLOW_DANGEROUS_CODEX"] === "1")
211
324
  return;
212
- const sandboxIndex = args.indexOf("--sandbox");
213
- const sandbox = sandboxIndex >= 0 ? args[sandboxIndex + 1] : undefined;
325
+ const sandbox = CLIProvider.findSandboxValue(args);
214
326
  if (args.includes("--dangerously-bypass-approvals-and-sandbox") ||
215
327
  sandbox === "danger-full-access") {
216
328
  throw new Error("CLIProvider: refusing unsafe Codex exec sandbox. Use --sandbox workspace-write, or set COMPOSER_ALLOW_DANGEROUS_CODEX=1 only inside an external sandbox.");
@@ -241,6 +353,7 @@ export class CLIProvider {
241
353
  "-a",
242
354
  "--add-dir",
243
355
  "--ask-for-approval",
356
+ "-C",
244
357
  "-c",
245
358
  "--cd",
246
359
  "--color",
@@ -282,11 +395,63 @@ export class CLIProvider {
282
395
  static hasCodexCd(args) {
283
396
  return args.some((arg) => arg === "-C" || arg === "--cd" || arg.startsWith("--cd="));
284
397
  }
398
+ static hasCodexModel(args) {
399
+ return args.some((arg) => arg === "-m" || arg === "--model" || arg.startsWith("--model="));
400
+ }
401
+ static hasCodexReasoningEffort(args) {
402
+ return args.some((a) => a.startsWith("model_reasoning_effort="));
403
+ }
285
404
  static findFlagValue(args, flag) {
286
405
  const index = args.indexOf(flag);
287
406
  const value = index >= 0 ? args[index + 1] : undefined;
288
407
  return typeof value === "string" && value.length > 0 ? value : undefined;
289
408
  }
409
+ static forceCodexReadOnlySandbox(bin, args) {
410
+ const equalsIndex = args.findIndex((arg) => arg.startsWith("--sandbox="));
411
+ if (equalsIndex >= 0) {
412
+ args[equalsIndex] = "--sandbox=read-only";
413
+ return;
414
+ }
415
+ const flagIndex = args.findIndex((arg) => arg === "--sandbox" || arg === "-s");
416
+ if (flagIndex >= 0) {
417
+ args[flagIndex] = "--sandbox";
418
+ args[flagIndex + 1] = "read-only";
419
+ return;
420
+ }
421
+ const execIndex = CLIProvider.codexExecCommandIndex(bin, args);
422
+ if (execIndex < 0) {
423
+ throw new Error("CLIProvider: readOnly execution requires a supported Codex exec CLI config.");
424
+ }
425
+ args.splice(execIndex + 1, 0, "--sandbox", "read-only");
426
+ }
427
+ static findSandboxValue(args) {
428
+ const equals = args.find((arg) => arg.startsWith("--sandbox="));
429
+ if (equals)
430
+ return equals.slice("--sandbox=".length);
431
+ const index = args.findIndex((arg) => arg === "--sandbox" || arg === "-s");
432
+ const value = index >= 0 ? args[index + 1] : undefined;
433
+ return typeof value === "string" && value.length > 0 ? value : undefined;
434
+ }
435
+ static codexExecCommandIndex(bin, args) {
436
+ if (path.basename(bin) === "codex") {
437
+ return CLIProvider.codexExecIndex(args);
438
+ }
439
+ if (!CLIProvider.isCodexWrapper(bin))
440
+ return -1;
441
+ const packageIndex = args.findIndex((arg) => CLIProvider.isCodexPackageToken(arg));
442
+ if (packageIndex < 0)
443
+ return -1;
444
+ return args.indexOf("exec", packageIndex + 1);
445
+ }
446
+ static isCodexWrapper(bin) {
447
+ return ["npx", "npm", "pnpm", "yarn", "bun"].includes(path.basename(bin));
448
+ }
449
+ static isCodexPackageToken(arg) {
450
+ return (arg === "codex" ||
451
+ arg.startsWith("codex@") ||
452
+ arg === "@openai/codex" ||
453
+ arg.startsWith("@openai/codex@"));
454
+ }
290
455
  static readFinalMessage(filePath) {
291
456
  try {
292
457
  const text = fs.readFileSync(filePath, "utf8");
@@ -296,5 +461,43 @@ export class CLIProvider {
296
461
  return undefined;
297
462
  }
298
463
  }
464
+ static createStdoutProgressReporter(onProgress) {
465
+ if (!onProgress)
466
+ return undefined;
467
+ let lastDetail = "";
468
+ let lastEmittedAt = 0;
469
+ return (stdout) => {
470
+ const detail = CLIProvider.lastProgressLine(stdout);
471
+ if (!detail || detail === lastDetail)
472
+ return;
473
+ const now = Date.now();
474
+ if (now - lastEmittedAt < 1000)
475
+ return;
476
+ lastDetail = detail;
477
+ lastEmittedAt = now;
478
+ try {
479
+ onProgress({ phase: "working", detail });
480
+ }
481
+ catch {
482
+ // Provider progress is advisory and must not break execution.
483
+ }
484
+ };
485
+ }
486
+ static lastProgressLine(stdout) {
487
+ const line = stdout
488
+ .split(/\r?\n/)
489
+ .map((part) => CLIProvider.sanitizeProgressLine(part))
490
+ .filter((part) => part.length > 0)
491
+ .at(-1);
492
+ if (!line)
493
+ return undefined;
494
+ return line.length > 60 ? `${line.slice(0, 57)}...` : line;
495
+ }
496
+ static sanitizeProgressLine(line) {
497
+ return line
498
+ .replace(/\u001b\[[0-?]*[ -/]*[@-~]/g, "")
499
+ .replace(/\s+/g, " ")
500
+ .trim();
501
+ }
299
502
  }
300
503
  //# sourceMappingURL=CLIProvider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CLIProvider.js","sourceRoot":"","sources":["../../src/providers/CLIProvider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CLIProvider.js","sourceRoot":"","sources":["../../src/providers/CLIProvider.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,18 @@ export interface IProviderExecuteInput {
5
5
  maxTokens?: number;
6
6
  cwd?: string;
7
7
  projectDir?: string;
8
+ readOnly?: boolean;
9
+ /** Optional model override forwarded to model-aware CLIs (currently codex exec via -m). Ignored by providers that pin their own model. */
10
+ model?: string;
11
+ /** Optional Codex reasoning effort, forwarded as `-c model_reasoning_effort=<...>`. Ignored by non-codex providers. */
12
+ reasoningEffort?: "low" | "medium" | "high";
13
+ /** Optional Codex sandbox policy, forwarded as `-s <mode>` (unless a read-only run forces read-only). Ignored by non-codex providers. */
14
+ sandbox?: "read-only" | "workspace-write";
15
+ /** Advisory live progress callback for providers that can stream sub-action status. */
16
+ onProgress?: (update: {
17
+ phase?: string;
18
+ detail?: string;
19
+ }) => void;
8
20
  signal?: AbortSignal;
9
21
  }
10
22
  export interface IProviderExecuteOutput {
@@ -0,0 +1,32 @@
1
+ import type { IProvider, IProviderExecuteInput, IProviderExecuteOutput, ProviderId } from "./IProvider.js";
2
+ import type { SpendAuthorization } from "../config/schema.js";
3
+ /** Thrown when a priced call is blocked by spendAuthorization (deny mode or a cap). */
4
+ export declare class SpendLimitError extends Error {
5
+ constructor(message: string);
6
+ }
7
+ /** Mutable, registry-scoped accumulator of estimated USD spend for the session. */
8
+ export declare class SpendLedger {
9
+ #private;
10
+ get spentUsd(): number;
11
+ add(usd: number): void;
12
+ }
13
+ /**
14
+ * Decorator that enforces spendAuthorization on a priced inner provider.
15
+ * - mode "deny": blocks every call.
16
+ * - maxUsdPerCall: blocks if the worst-case (maxTokens) estimate exceeds the cap.
17
+ * - maxUsdPerSession: blocks if the running ledger + this call's estimate exceeds the cap.
18
+ * After a successful call, the ledger is incremented by the ACTUAL token cost
19
+ * (from the provider's reported usage) when available, else the estimate.
20
+ */
21
+ export declare class SpendGuardProvider implements IProvider {
22
+ private readonly inner;
23
+ private readonly auth;
24
+ private readonly ledger;
25
+ private readonly defaultMaxTokens?;
26
+ readonly id: ProviderId;
27
+ readonly modelLabel: string;
28
+ constructor(inner: IProvider, auth: SpendAuthorization, ledger: SpendLedger, defaultMaxTokens?: number | undefined);
29
+ healthCheck(): Promise<boolean>;
30
+ execute(input: IProviderExecuteInput): Promise<IProviderExecuteOutput>;
31
+ }
32
+ export declare function isPricedProvider(id: ProviderId): boolean;