@smartmemory/stratum 0.3.3 → 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 (81) hide show
  1. package/dist/cli/guard.js +63 -6
  2. package/dist/cli/guard.js.map +1 -1
  3. package/dist/cli/learn.js +226 -0
  4. package/dist/cli/learn.js.map +1 -0
  5. package/dist/cli/query_gate.js +2 -1
  6. package/dist/cli/query_gate.js.map +1 -1
  7. package/dist/cli/stratum.js +5 -2
  8. package/dist/cli/stratum.js.map +1 -1
  9. package/dist/connectors/background.js +58 -10
  10. package/dist/connectors/background.js.map +1 -1
  11. package/dist/connectors/base.js +16 -0
  12. package/dist/connectors/base.js.map +1 -1
  13. package/dist/connectors/cancellation.js +119 -0
  14. package/dist/connectors/cancellation.js.map +1 -0
  15. package/dist/connectors/claude-bg-worker.js +9 -1
  16. package/dist/connectors/claude-bg-worker.js.map +1 -1
  17. package/dist/connectors/claude.js +179 -86
  18. package/dist/connectors/claude.js.map +1 -1
  19. package/dist/connectors/codex.js +289 -61
  20. package/dist/connectors/codex.js.map +1 -1
  21. package/dist/connectors/runner.js +44 -3
  22. package/dist/connectors/runner.js.map +1 -1
  23. package/dist/contracts/events.json +34 -1
  24. package/dist/contracts/guard-signers.allowed +36 -0
  25. package/dist/contracts/mcp-surface.json +1097 -104
  26. package/dist/engine/checkpoint.js +8 -1
  27. package/dist/engine/checkpoint.js.map +1 -1
  28. package/dist/engine/engine.js +508 -42
  29. package/dist/engine/engine.js.map +1 -1
  30. package/dist/engine/evaluate.js +61 -0
  31. package/dist/engine/evaluate.js.map +1 -0
  32. package/dist/engine/ledger.js +12 -0
  33. package/dist/engine/ledger.js.map +1 -1
  34. package/dist/engine/receipts.js +91 -0
  35. package/dist/engine/receipts.js.map +1 -0
  36. package/dist/engine/state.js +51 -1
  37. package/dist/engine/state.js.map +1 -1
  38. package/dist/guard/authorization.js +71 -0
  39. package/dist/guard/authorization.js.map +1 -0
  40. package/dist/guard/descriptors.js +248 -0
  41. package/dist/guard/descriptors.js.map +1 -0
  42. package/dist/guard/errors.js +12 -0
  43. package/dist/guard/errors.js.map +1 -1
  44. package/dist/guard/evidence.js +24 -3
  45. package/dist/guard/evidence.js.map +1 -1
  46. package/dist/guard/sshsig.js +264 -0
  47. package/dist/guard/sshsig.js.map +1 -0
  48. package/dist/guard/store.js +13 -0
  49. package/dist/guard/store.js.map +1 -1
  50. package/dist/guard/transition.js +484 -33
  51. package/dist/guard/transition.js.map +1 -1
  52. package/dist/guard/trust.js +78 -0
  53. package/dist/guard/trust.js.map +1 -0
  54. package/dist/ir/schema.js +8 -1
  55. package/dist/ir/schema.js.map +1 -1
  56. package/dist/ir/validate.js +3 -1
  57. package/dist/ir/validate.js.map +1 -1
  58. package/dist/judge/judged.js +1 -1
  59. package/dist/judge/pricing.js +1 -0
  60. package/dist/judge/pricing.js.map +1 -1
  61. package/dist/learn/apply.js +600 -0
  62. package/dist/learn/apply.js.map +1 -0
  63. package/dist/learn/candidate.js +186 -0
  64. package/dist/learn/candidate.js.map +1 -0
  65. package/dist/learn/classify.js +181 -0
  66. package/dist/learn/classify.js.map +1 -0
  67. package/dist/learn/harvest.js +138 -0
  68. package/dist/learn/harvest.js.map +1 -0
  69. package/dist/learn/smartmemory_egress.js +330 -0
  70. package/dist/learn/smartmemory_egress.js.map +1 -0
  71. package/dist/mcp/server.js +155 -24
  72. package/dist/mcp/server.js.map +1 -1
  73. package/dist/policy/bundle.js +195 -0
  74. package/dist/policy/bundle.js.map +1 -0
  75. package/dist/policy/events.js +51 -0
  76. package/dist/policy/events.js.map +1 -0
  77. package/dist/policy/smartmemory_client.js +332 -0
  78. package/dist/policy/smartmemory_client.js.map +1 -0
  79. package/dist/policy/types.js +2 -0
  80. package/dist/policy/types.js.map +1 -0
  81. package/package.json +3 -2
@@ -1,7 +1,79 @@
1
1
  import { spawn as nodeSpawn } from "node:child_process";
2
+ import { accessSync, constants, existsSync, readdirSync } from "node:fs";
3
+ import { homedir } from "node:os";
4
+ import { delimiter, dirname, join } from "node:path";
5
+ import { createRequire } from "node:module";
2
6
  import { Codex } from "@openai/codex-sdk";
3
- import { finiteNonnegative, modelIdentity } from "./base.js";
4
- const CODEX_SCRUB_VARS = ["ANTHROPIC_API_KEY", "CLAUDE_API_KEY", "CLAUDECODE"];
7
+ import { finiteNonnegative, modelIdentity, SMARTMEMORY_SCRUB_VARS } from "./base.js";
8
+ import { linkAbort, cancellationGraceMs, processTermination, requireProcessGroups } from "./cancellation.js";
9
+ /** How long a post-spawn `error` may wait for the matching `close` before the
10
+ * run settles on the error alone. Short: it only covers the gap between the two
11
+ * events for a child that did start. */
12
+ const SPAWN_ERROR_CLOSE_MS = 250;
13
+ const CODEX_SCRUB_VARS = ["ANTHROPIC_API_KEY", "CLAUDE_API_KEY", "CLAUDECODE", ...SMARTMEMORY_SCRUB_VARS];
14
+ /** GUI apps cannot start inside the Codex OS sandbox: full Chrome aborts
15
+ * (SIGABRT) during WindowServer registration even with --headless. Agents that
16
+ * discover this by crashing tend to retry into a crash loop, so every dispatch
17
+ * states the constraint up front. */
18
+ export const CODEX_SANDBOX_PREAMBLE = [
19
+ "[sandbox constraints]",
20
+ "You are running inside a restricted OS sandbox (macOS seatbelt / Linux landlock).",
21
+ "GUI applications cannot start here: full Chrome/Chromium, Electron, or anything",
22
+ "that opens a window aborts at launch (SIGABRT). That abort is the sandbox, not",
23
+ "a bug in the code under test. For browser work use chrome-headless-shell (set",
24
+ "via PUPPETEER_EXECUTABLE_PATH when available) or another headless-only tool.",
25
+ "If a GUI launch aborts, do not retry it.",
26
+ "[/sandbox constraints]",
27
+ ].join("\n");
28
+ /** Deliberately NOT gated on sandboxMode. Both values of CodexSandboxMode
29
+ * ("read-only" | "workspace-write") are passed to `codex --sandbox`, so every
30
+ * dispatch runs under seatbelt/landlock — the modes differ in write permission,
31
+ * not window-server access, and GUI apps abort under both. Gating on the mode
32
+ * would strip the warning from workspace-write agents, which are exactly the
33
+ * ones that run browser tests and crash-looped before this existed. Revisit
34
+ * only if an unsandboxed mode is ever added to CodexSandboxMode. */
35
+ export function withSandboxPreamble(prompt) {
36
+ if (prompt.startsWith("[sandbox constraints]"))
37
+ return prompt;
38
+ return `${CODEX_SANDBOX_PREAMBLE}\n\n${prompt}`;
39
+ }
40
+ /** Newest chrome-headless-shell in the Puppeteer cache, if any. Sandboxed
41
+ * agents can run this binary where full Chrome aborts (see
42
+ * CODEX_SANDBOX_PREAMBLE), but cannot install it themselves without network. */
43
+ export function resolveHeadlessShellPath(home = homedir()) {
44
+ const root = join(home, ".cache", "puppeteer", "chrome-headless-shell");
45
+ if (!existsSync(root))
46
+ return undefined;
47
+ const buildOf = (dir) => (dir.split("-").pop() ?? "").split(".").map(Number);
48
+ const versions = readdirSync(root)
49
+ .filter((dir) => /-[\d.]+$/.test(dir))
50
+ .sort((a, b) => {
51
+ const [va, vb] = [buildOf(a), buildOf(b)];
52
+ for (let i = 0; i < Math.max(va.length, vb.length); i++) {
53
+ if ((va[i] ?? 0) !== (vb[i] ?? 0))
54
+ return (vb[i] ?? 0) - (va[i] ?? 0);
55
+ }
56
+ return 0;
57
+ });
58
+ const binaryName = process.platform === "win32" ? "chrome-headless-shell.exe" : "chrome-headless-shell";
59
+ for (const version of versions) {
60
+ const versionDir = join(root, version);
61
+ const binary = readdirSync(versionDir)
62
+ .filter((dir) => dir.startsWith("chrome-headless-shell-"))
63
+ .map((dir) => join(versionDir, dir, binaryName))
64
+ .find((candidate) => existsSync(candidate));
65
+ if (binary)
66
+ return binary;
67
+ }
68
+ return undefined;
69
+ }
70
+ export function applyHeadlessShellEnv(env, home) {
71
+ if (env.PUPPETEER_EXECUTABLE_PATH)
72
+ return;
73
+ const shell = resolveHeadlessShellPath(home);
74
+ if (shell)
75
+ env.PUPPETEER_EXECUTABLE_PATH = shell;
76
+ }
5
77
  export function defaultCodexModel() {
6
78
  return process.env.CODEX_MODEL ?? "gpt-5.6-terra/high";
7
79
  }
@@ -44,92 +116,139 @@ export function codexCommand(modelId, cwd, sandboxMode) {
44
116
  }
45
117
  export class CodexConnector {
46
118
  model;
119
+ signal;
47
120
  cwd;
48
121
  sandboxMode;
49
122
  env;
50
123
  transport;
124
+ ownProcessGroup;
125
+ graceMs;
126
+ injectedSpawn;
51
127
  sdkFactory;
52
128
  spawn;
53
129
  onEvent;
54
130
  constructor(options = {}) {
55
- this.model = options.model ?? defaultCodexModel();
131
+ this.model = codexModelWithEffort(options.model ?? (options.effort === undefined ? defaultCodexModel() : modelIdentity(defaultCodexModel()).model), options.effort);
132
+ this.signal = options.signal;
56
133
  this.cwd = options.cwd ?? process.cwd();
57
134
  this.sandboxMode = options.sandboxMode ?? "read-only";
58
135
  this.env = { ...(options.env ?? process.env) };
59
136
  for (const key of CODEX_SCRUB_VARS)
60
137
  delete this.env[key];
138
+ // A caller-supplied env is authoritative; the headless-shell default is
139
+ // only layered onto the ambient process.env fallback.
140
+ if (options.env === undefined)
141
+ applyHeadlessShellEnv(this.env);
61
142
  // Passing an injected spawn is itself an explicit request for the legacy
62
143
  // process seam. Production selects exec with STRATUM_CODEX_TRANSPORT=exec.
63
- this.transport = options.transport ?? (options.spawn ? "exec" : resolveCodexTransport(this.env));
144
+ const selectedTransport = options.transport ?? (options.spawn ? "exec" : resolveCodexTransport(this.env));
145
+ // Owning a process group requires exec. A transport request or signal alone
146
+ // keeps the selected SDK/exec transport; only the MCP cancellation contract
147
+ // opts into process-group ownership.
148
+ this.ownProcessGroup = options.ownProcessGroup === true;
149
+ this.transport = this.ownProcessGroup ? "exec" : selectedTransport;
150
+ this.graceMs = options.cancellationGraceMs ?? cancellationGraceMs(this.env);
151
+ this.injectedSpawn = options.spawn !== undefined;
64
152
  this.sdkFactory = options.sdkFactory ?? defaultSdkFactory;
65
153
  this.spawn = options.spawn ?? nodeSpawn;
66
154
  this.onEvent = options.onEvent;
67
155
  }
68
156
  async run(prompt) {
69
- return this.transport === "sdk" ? this.runSdk(prompt) : this.runExec(prompt);
157
+ this.signal?.throwIfAborted();
158
+ if (this.ownProcessGroup)
159
+ requireProcessGroups();
160
+ const framed = withSandboxPreamble(prompt);
161
+ return this.transport === "sdk" ? this.runSdk(framed) : this.runExec(framed);
70
162
  }
71
163
  async runSdk(prompt) {
72
164
  const startedAt = Date.now();
73
165
  const stdoutLimit = resolveStdoutLimit();
74
166
  const controller = new AbortController();
75
- const identity = modelIdentity(this.model);
76
- const options = {
77
- approvalPolicy: "never",
78
- model: identity.model,
79
- sandboxMode: this.sandboxMode,
80
- skipGitRepoCheck: true,
81
- workingDirectory: this.cwd,
82
- ...(identity.effort !== undefined ? { modelReasoningEffort: reasoningEffort(identity.effort) } : {}),
83
- };
84
- const client = this.sdkFactory({ env: stringEnvironment(this.env) });
85
- const streamed = await client.startThread(options).runStreamed(prompt, { signal: controller.signal });
86
- const text = [];
167
+ const unlink = linkAbort(this.signal, controller);
87
168
  let inputTokens = 0;
88
169
  let outputTokens = 0;
89
- // Consume SDK events directly rather than run(), which buffers every tool
90
- // and file-change item for the whole turn. Stratum only retains the final
91
- // agent text and accounting data, matching the direct JSONL transport. The
92
- // SDK does not expose its raw readline/stderr buffers, so this enforces the
93
- // same per-JSONL-line bound immediately after each event is yielded.
94
- for await (const event of streamed.events) {
95
- if (exceedsStreamLimit(JSON.stringify(event), stdoutLimit)) {
96
- controller.abort();
97
- throw stdoutOverrunError(stdoutLimit);
98
- }
99
- for (const connectorEvent of codexConnectorEvents(event, this.model, prompt)) {
100
- await this.emit(connectorEvent);
101
- }
102
- if (event.type === "error")
103
- throw new Error(event.message);
104
- if (event.type === "turn.failed")
105
- throw new Error(event.error.message);
106
- if (event.type === "item.completed" && event.item.type === "agent_message" && event.item.text) {
107
- text.push(event.item.text);
108
- }
109
- if (event.type === "turn.completed") {
110
- inputTokens += finiteNonnegative(event.usage.input_tokens);
111
- outputTokens += finiteNonnegative(event.usage.output_tokens);
170
+ let cacheRead = 0;
171
+ let costUsd = 0;
172
+ try {
173
+ const identity = modelIdentity(this.model);
174
+ const options = {
175
+ approvalPolicy: "never",
176
+ model: identity.model,
177
+ sandboxMode: this.sandboxMode,
178
+ skipGitRepoCheck: true,
179
+ workingDirectory: this.cwd,
180
+ ...(identity.effort !== undefined ? { modelReasoningEffort: reasoningEffort(identity.effort) } : {}),
181
+ };
182
+ const pathBinary = pathCodex(this.env);
183
+ const client = this.sdkFactory({ env: stringEnvironment(this.env), ...(pathBinary ? { codexPathOverride: pathBinary } : {}) });
184
+ const streamed = await client.startThread(options).runStreamed(prompt, { signal: controller.signal });
185
+ const text = [];
186
+ // Consume SDK events directly rather than run(), which buffers every tool
187
+ // and file-change item for the whole turn. Stratum only retains the final
188
+ // agent text and accounting data, matching the direct JSONL transport. The
189
+ // SDK does not expose its raw readline/stderr buffers, so this enforces the
190
+ // same per-JSONL-line bound immediately after each event is yielded.
191
+ for await (const event of streamed.events) {
192
+ if (exceedsStreamLimit(JSON.stringify(event), stdoutLimit)) {
193
+ controller.abort();
194
+ throw stdoutOverrunError(stdoutLimit);
195
+ }
196
+ for (const connectorEvent of codexConnectorEvents(event, this.model, prompt)) {
197
+ await this.emit(connectorEvent);
198
+ }
199
+ if ((event.type === "turn.completed" || event.type === "turn.failed") && "usage" in event && isRecord(event.usage)) {
200
+ inputTokens += finiteNonnegative(event.usage.input_tokens);
201
+ outputTokens += finiteNonnegative(event.usage.output_tokens);
202
+ cacheRead += finiteNonnegative(event.usage.cached_input_tokens);
203
+ costUsd += finiteNonnegative(event.usage.total_cost_usd ?? event.usage.cost_usd);
204
+ }
205
+ if (event.type === "error")
206
+ throw new Error(event.message);
207
+ if (event.type === "turn.failed")
208
+ throw new Error(event.error.message);
209
+ if (event.type === "item.completed" && event.item.type === "agent_message" && event.item.text) {
210
+ text.push(event.item.text);
211
+ }
112
212
  }
213
+ controller.signal.throwIfAborted();
214
+ const durationMs = Math.max(0, Date.now() - startedAt);
215
+ return {
216
+ text: text.join(""),
217
+ usage: { tokens: inputTokens + outputTokens, ms: durationMs },
218
+ split: { input: inputTokens, output: outputTokens },
219
+ telemetry: { durationMs, ...identity },
220
+ };
221
+ }
222
+ catch (error) {
223
+ throw attachCodexUsage(error, inputTokens, outputTokens, cacheRead, costUsd, Date.now() - startedAt, this.model);
224
+ }
225
+ finally {
226
+ unlink();
113
227
  }
114
- const durationMs = Math.max(0, Date.now() - startedAt);
115
- return {
116
- text: text.join(""),
117
- usage: { tokens: inputTokens + outputTokens, ms: durationMs },
118
- telemetry: { durationMs, ...identity },
119
- };
120
228
  }
121
229
  async runExec(prompt) {
122
230
  const startedAt = Date.now();
123
- const child = this.spawn("codex", codexExecArgs(this.model, this.cwd, this.sandboxMode), {
231
+ const command = this.injectedSpawn ? { command: "codex", prefix: [] } : resolveCodexCommand(this.env);
232
+ const child = this.spawn(command.command, [...command.prefix, ...codexExecArgs(this.model, this.cwd, this.sandboxMode)], {
124
233
  cwd: this.cwd,
125
234
  env: this.env,
235
+ detached: this.ownProcessGroup && process.platform !== "win32",
126
236
  });
237
+ const termination = processTermination(child, this.ownProcessGroup, this.graceMs);
238
+ const killGroup = () => { void termination.terminate(); };
239
+ const abort = killGroup;
240
+ this.signal?.addEventListener("abort", abort, { once: true });
241
+ if (this.signal?.aborted)
242
+ abort();
127
243
  const stdoutLimit = resolveStdoutLimit();
128
244
  const text = [];
129
245
  let inputTokens = 0;
130
246
  let outputTokens = 0;
247
+ let cacheRead = 0;
248
+ let costUsd = 0;
131
249
  let codexError;
132
250
  let eventDelivery = Promise.resolve();
251
+ let eventDeliveryError;
133
252
  const handleLine = (line) => {
134
253
  const record = parseRecord(line);
135
254
  if (!record)
@@ -137,10 +256,24 @@ export class CodexConnector {
137
256
  const connectorEvents = codexConnectorEvents(record, this.model, prompt);
138
257
  if (connectorEvents.length > 0) {
139
258
  eventDelivery = eventDelivery.then(async () => {
259
+ if (eventDeliveryError)
260
+ return;
140
261
  for (const connectorEvent of connectorEvents)
141
262
  await this.emit(connectorEvent);
263
+ }).catch((error) => {
264
+ // Attach immediately, while the process is still alive: a callback
265
+ // rejection must neither escape as unhandled nor leave an agent running.
266
+ eventDeliveryError = error instanceof Error ? error : new Error(String(error));
267
+ try {
268
+ killGroup();
269
+ }
270
+ catch (killError) {
271
+ eventDeliveryError = new Error("Could not terminate Codex after an event callback failed", { cause: killError });
272
+ }
142
273
  });
143
274
  }
275
+ if (record.type === "turn.failed" && isRecord(record.error))
276
+ codexError = String(record.error.message ?? "codex turn failed");
144
277
  if (record.type === "error" && codexError === undefined) {
145
278
  codexError = typeof record.message === "string" ? record.message : "codex error";
146
279
  }
@@ -148,9 +281,11 @@ export class CodexConnector {
148
281
  if (typeof record.item.text === "string" && record.item.text)
149
282
  text.push(record.item.text);
150
283
  }
151
- if (record.type === "turn.completed" && isRecord(record.usage)) {
284
+ if ((record.type === "turn.completed" || record.type === "turn.failed") && isRecord(record.usage)) {
152
285
  inputTokens += finiteNonnegative(record.usage.input_tokens);
153
286
  outputTokens += finiteNonnegative(record.usage.output_tokens);
287
+ cacheRead += finiteNonnegative(record.usage.cached_input_tokens);
288
+ costUsd += finiteNonnegative(record.usage.total_cost_usd ?? record.usage.cost_usd);
154
289
  }
155
290
  };
156
291
  // Lines are parsed as they stream, so only one pending partial line is
@@ -166,7 +301,10 @@ export class CodexConnector {
166
301
  overrun = true;
167
302
  pending = "";
168
303
  pendingBytes = 0;
169
- child.kill("SIGKILL");
304
+ // Overrun means the child is producing output we can no longer parse, so
305
+ // the graceful window buys nothing and lets it keep flooding: SIGKILL the
306
+ // group now. Teardown (including group reaping) is still awaited below.
307
+ void termination.terminate("SIGKILL");
170
308
  };
171
309
  child.stdout.on("data", (chunk) => {
172
310
  if (overrun)
@@ -190,25 +328,63 @@ export class CodexConnector {
190
328
  declareOverrun();
191
329
  });
192
330
  child.stderr.on("data", (chunk) => { stderr = (stderr + chunk).slice(-stdoutLimit); });
331
+ // A cancelled child may close stdin before it consumes the prompt.
332
+ child.stdin.on("error", () => { });
193
333
  child.stdin.end(prompt, "utf8");
194
- const exitCode = await new Promise((resolve, reject) => {
195
- child.once("error", reject);
196
- child.once("close", (code) => resolve(code ?? 1));
197
- });
198
- if (overrun) {
199
- throw stdoutOverrunError(stdoutLimit);
200
- }
201
- if (pending)
334
+ let spawnError;
335
+ const exitCode = await new Promise((resolve) => {
336
+ let settled = false;
337
+ let deadline;
338
+ const settle = (code) => {
339
+ if (settled)
340
+ return;
341
+ settled = true;
342
+ if (deadline)
343
+ clearTimeout(deadline);
344
+ resolve(code);
345
+ };
346
+ child.once("close", (code) => settle(code ?? 1));
347
+ child.once("error", (error) => {
348
+ spawnError = error;
349
+ // A process that never started emits `error` and no `close`, so waiting
350
+ // on `close` alone would hang the run forever. A post-spawn `error`
351
+ // (EPIPE on a killed child) is still followed by `close`, so give that
352
+ // a short bound rather than settling immediately and losing the code.
353
+ if (!settled)
354
+ deadline = setTimeout(() => settle(1), SPAWN_ERROR_CLOSE_MS);
355
+ });
356
+ }).finally(() => this.signal?.removeEventListener("abort", abort));
357
+ if (!overrun && pending)
202
358
  handleLine(pending);
359
+ // Child exit is not the whole lifetime: callbacks may still be writing a
360
+ // usage/event ledger. Drain them before every terminal outcome, including
361
+ // abort and stream overrun, so cancellation acknowledges complete teardown.
203
362
  await eventDelivery;
204
- if (codexError)
205
- throw new Error(codexError);
206
- if (exitCode !== 0 && text.length === 0)
207
- throw new Error(stderr.trim() || `codex exited with code ${exitCode}`);
363
+ try {
364
+ await termination.finish();
365
+ this.signal?.throwIfAborted();
366
+ if (overrun)
367
+ throw stdoutOverrunError(stdoutLimit);
368
+ if (spawnError)
369
+ throw spawnError;
370
+ if (eventDeliveryError)
371
+ throw eventDeliveryError;
372
+ if (codexError)
373
+ throw new Error(codexError);
374
+ // A nonzero exit is NOT on its own a failed run: codex exits nonzero on some
375
+ // sandbox denials after it has already emitted a complete agent_message.
376
+ // Only an exit that produced no agent text at all is an error.
377
+ if (exitCode !== 0 && text.length === 0)
378
+ throw new Error(stderr.trim() || `codex exited with code ${exitCode}`);
379
+ }
380
+ catch (error) {
381
+ throw attachCodexUsage(error, inputTokens, outputTokens, cacheRead, costUsd, Date.now() - startedAt, this.model);
382
+ }
208
383
  const durationMs = Math.max(0, Date.now() - startedAt);
209
384
  return {
210
385
  text: text.join(""),
211
386
  usage: { tokens: inputTokens + outputTokens, ms: durationMs },
387
+ split: { input: inputTokens, output: outputTokens },
212
388
  telemetry: { durationMs, ...modelIdentity(this.model) },
213
389
  };
214
390
  }
@@ -316,4 +492,56 @@ function exceedsStreamLimit(value, limit) {
316
492
  function stdoutOverrunError(limit) {
317
493
  return new Error(`codex stdout exceeded STRATUM_CODEX_STREAM_LIMIT_BYTES (current limit ${limit} bytes). Raise the env knob and retry.`);
318
494
  }
495
+ export function codexModelWithEffort(model, effort) {
496
+ const identity = modelIdentity(model);
497
+ if (effort !== undefined && identity.effort !== undefined && effort !== identity.effort) {
498
+ throw new Error("Codex effort conflicts with the effort suffix in model");
499
+ }
500
+ const selected = effort ?? identity.effort;
501
+ if (selected !== undefined)
502
+ reasoningEffort(selected);
503
+ return selected === undefined ? identity.model : `${identity.model}/${selected}`;
504
+ }
505
+ /** Resolve only at execution time; the user's PATH binary takes precedence. */
506
+ export function bundledCodexCommand(env = process.env) {
507
+ try {
508
+ const sdkRequire = createRequire(import.meta.resolve("@openai/codex-sdk"));
509
+ const manifest = sdkRequire.resolve("@openai/codex/package.json");
510
+ const cli = join(dirname(manifest), "bin", "codex.js");
511
+ if (!existsSync(cli))
512
+ throw new Error("SDK CLI entrypoint is absent");
513
+ return { command: process.execPath, prefix: [cli] };
514
+ }
515
+ catch (cause) {
516
+ const command = pathCodex(env);
517
+ if (command)
518
+ return { command, prefix: [] };
519
+ throw new Error("Codex CLI unavailable: no executable codex on PATH and the SDK bundled CLI could not be resolved", { cause });
520
+ }
521
+ }
522
+ function pathCodex(env) {
523
+ for (const directory of (env.PATH ?? "").split(delimiter)) {
524
+ if (!directory)
525
+ continue;
526
+ const candidate = join(directory, process.platform === "win32" ? "codex.exe" : "codex");
527
+ try {
528
+ accessSync(candidate, constants.X_OK);
529
+ return candidate;
530
+ }
531
+ catch { /* try next */ }
532
+ }
533
+ return undefined;
534
+ }
535
+ export function resolveCodexCommand(env = process.env) {
536
+ const command = pathCodex(env);
537
+ return command ? { command, prefix: [] } : bundledCodexCommand(env);
538
+ }
539
+ function attachCodexUsage(error, input, output, cacheRead, usd, ms, model) {
540
+ return Object.assign(error instanceof Error ? error : new Error(String(error)), {
541
+ telemetry: { durationMs: ms, ...modelIdentity(model) },
542
+ usage: { tokens: input + output, ms, ...(usd > 0 ? { usd } : {}) },
543
+ split: { input, output, ...(cacheRead > 0 ? { cacheRead } : {}) },
544
+ ...(usd > 0 ? { usdSource: "reported" } : {}),
545
+ });
546
+ }
319
547
  //# sourceMappingURL=codex.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"codex.js","sourceRoot":"","sources":["../../src/connectors/codex.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,IAAI,SAAS,EAAsE,MAAM,oBAAoB,CAAC;AAC5H,OAAO,EAAE,KAAK,EAAwG,MAAM,mBAAmB,CAAC;AAEhJ,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAkC7D,MAAM,gBAAgB,GAAG,CAAC,mBAAmB,EAAE,gBAAgB,EAAE,YAAY,CAAU,CAAC;AAExF,MAAM,UAAU,iBAAiB;IAC/B,OAAO,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,oBAAoB,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,MAAyB,OAAO,CAAC,GAAG;IACxE,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,uBAAuB,IAAI,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACxE,IAAI,GAAG,KAAK,KAAK,IAAI,GAAG,KAAK,MAAM;QAAE,OAAO,GAAG,CAAC;IAChD,MAAM,IAAI,KAAK,CAAC,mCAAmC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;AAClG,CAAC;AAED;;yDAEyD;AACzD,MAAM,UAAU,kBAAkB;IAChC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC;IACzD,MAAM,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;IAC3D,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;IACjE,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC;AACpC,CAAC;AAED,iEAAiE;AACjE,MAAM,UAAU,aAAa,CAC3B,OAAe,EACf,GAAW,EACX,cAAgC,WAAW;IAE3C,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;IACjD,MAAM,IAAI,GAAG;QACX,MAAM;QACN,QAAQ;QACR,uBAAuB;QACvB,WAAW;QACX,WAAW;QACX,IAAI;QACJ,KAAK;QACL,IAAI;QACJ,GAAG;KACJ,CAAC;IACF,IAAI,MAAM;QAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,2BAA2B,MAAM,GAAG,CAAC,CAAC;IAClE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACf,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,OAAe,EAAE,GAAW,EAAE,WAA6B;IACtF,OAAO,CAAC,OAAO,EAAE,GAAG,aAAa,CAAC,OAAO,EAAE,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC;AAChE,CAAC;AAED,MAAM,OAAO,cAAc;IACR,KAAK,CAAS;IACd,GAAG,CAAS;IACZ,WAAW,CAAmB;IAC9B,GAAG,CAAoB;IACvB,SAAS,CAAiB;IAC1B,UAAU,CAAkB;IAC5B,KAAK,CAAe;IACpB,OAAO,CAAoC;IAE5D,YAAY,UAAiC,EAAE;QAC7C,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,iBAAiB,EAAE,CAAC;QAClD,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QACxC,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,WAAW,CAAC;QACtD,IAAI,CAAC,GAAG,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/C,KAAK,MAAM,GAAG,IAAI,gBAAgB;YAAE,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACzD,yEAAyE;QACzE,2EAA2E;QAC3E,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,qBAAqB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QACjG,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,iBAAiB,CAAC;QAC1D,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,IAAK,SAA0B,CAAC;QAC1D,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,MAAc;QACtB,OAAO,IAAI,CAAC,SAAS,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC/E,CAAC;IAEO,KAAK,CAAC,MAAM,CAAC,MAAc;QACjC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,MAAM,WAAW,GAAG,kBAAkB,EAAE,CAAC;QACzC,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,MAAM,QAAQ,GAAG,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC3C,MAAM,OAAO,GAAkB;YAC7B,cAAc,EAAE,OAAO;YACvB,KAAK,EAAE,QAAQ,CAAC,KAAK;YACrB,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,gBAAgB,EAAE,IAAI;YACtB,gBAAgB,EAAE,IAAI,CAAC,GAAG;YAC1B,GAAG,CAAC,QAAQ,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,oBAAoB,EAAE,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACrG,CAAC;QACF,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,EAAE,GAAG,EAAE,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACrE,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;QACtG,MAAM,IAAI,GAAa,EAAE,CAAC;QAC1B,IAAI,WAAW,GAAG,CAAC,CAAC;QACpB,IAAI,YAAY,GAAG,CAAC,CAAC;QACrB,0EAA0E;QAC1E,0EAA0E;QAC1E,2EAA2E;QAC3E,4EAA4E;QAC5E,qEAAqE;QACrE,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;YAC1C,IAAI,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,WAAW,CAAC,EAAE,CAAC;gBAC3D,UAAU,CAAC,KAAK,EAAE,CAAC;gBACnB,MAAM,kBAAkB,CAAC,WAAW,CAAC,CAAC;YACxC,CAAC;YACD,KAAK,MAAM,cAAc,IAAI,oBAAoB,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC;gBAC7E,MAAM,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAClC,CAAC;YACD,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO;gBAAE,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC3D,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa;gBAAE,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACvE,IAAI,KAAK,CAAC,IAAI,KAAK,gBAAgB,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,eAAe,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;gBAC9F,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC7B,CAAC;YACD,IAAI,KAAK,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;gBACpC,WAAW,IAAI,iBAAiB,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;gBAC3D,YAAY,IAAI,iBAAiB,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;YAC/D,CAAC;QACH,CAAC;QACD,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,CAAC;QACvD,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACnB,KAAK,EAAE,EAAE,MAAM,EAAE,WAAW,GAAG,YAAY,EAAE,EAAE,EAAE,UAAU,EAAE;YAC7D,SAAS,EAAE,EAAE,UAAU,EAAE,GAAG,QAAQ,EAAE;SACvC,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,OAAO,CAAC,MAAc;QAClC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,aAAa,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,WAAW,CAAC,EAAE;YACvF,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,GAAG,EAAE,IAAI,CAAC,GAAG;SACd,CAAC,CAAC;QACH,MAAM,WAAW,GAAG,kBAAkB,EAAE,CAAC;QACzC,MAAM,IAAI,GAAa,EAAE,CAAC;QAC1B,IAAI,WAAW,GAAG,CAAC,CAAC;QACpB,IAAI,YAAY,GAAG,CAAC,CAAC;QACrB,IAAI,UAA8B,CAAC;QACnC,IAAI,aAAa,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;QACtC,MAAM,UAAU,GAAG,CAAC,IAAY,EAAQ,EAAE;YACxC,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;YACjC,IAAI,CAAC,MAAM;gBAAE,OAAO;YACpB,MAAM,eAAe,GAAG,oBAAoB,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YACzE,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC/B,aAAa,GAAG,aAAa,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;oBAC5C,KAAK,MAAM,cAAc,IAAI,eAAe;wBAAE,MAAM,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;gBAChF,CAAC,CAAC,CAAC;YACL,CAAC;YACD,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;gBACxD,UAAU,GAAG,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC;YACnF,CAAC;YACD,IAAI,MAAM,CAAC,IAAI,KAAK,gBAAgB,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;gBACtG,IAAI,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI;oBAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC5F,CAAC;YACD,IAAI,MAAM,CAAC,IAAI,KAAK,gBAAgB,IAAI,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC/D,WAAW,IAAI,iBAAiB,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;gBAC5D,YAAY,IAAI,iBAAiB,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;YAChE,CAAC;QACH,CAAC,CAAC;QAEF,uEAAuE;QACvE,uEAAuE;QACvE,0BAA0B;QAC1B,IAAI,OAAO,GAAG,EAAE,CAAC;QACjB,IAAI,YAAY,GAAG,CAAC,CAAC;QACrB,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QACjC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QACjC,MAAM,cAAc,GAAG,GAAS,EAAE;YAChC,OAAO,GAAG,IAAI,CAAC;YACf,OAAO,GAAG,EAAE,CAAC;YACb,YAAY,GAAG,CAAC,CAAC;YACjB,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACxB,CAAC,CAAC;QACF,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;YACxC,IAAI,OAAO;gBAAE,OAAO;YACpB,OAAO,IAAI,KAAK,CAAC;YACjB,YAAY,IAAI,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YACzC,IAAI,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACpC,OAAO,OAAO,IAAI,CAAC,EAAE,CAAC;gBACpB,sEAAsE;gBACtE,6DAA6D;gBAC7D,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;gBACvC,MAAM,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;gBAC1C,IAAI,kBAAkB,CAAC,IAAI,EAAE,WAAW,CAAC;oBAAE,OAAO,cAAc,EAAE,CAAC;gBACnE,UAAU,CAAC,IAAI,CAAC,CAAC;gBACjB,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;gBACrC,YAAY,IAAI,SAAS,GAAG,CAAC,CAAC;gBAC9B,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAClC,CAAC;YACD,IAAI,YAAY,GAAG,WAAW;gBAAE,cAAc,EAAE,CAAC;QACnD,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE,GAAG,MAAM,GAAG,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/F,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAEhC,MAAM,QAAQ,GAAG,MAAM,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC7D,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YAC5B,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;QACH,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,kBAAkB,CAAC,WAAW,CAAC,CAAC;QACxC,CAAC;QACD,IAAI,OAAO;YAAE,UAAU,CAAC,OAAO,CAAC,CAAC;QACjC,MAAM,aAAa,CAAC;QAEpB,IAAI,UAAU;YAAE,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC;QAC5C,IAAI,QAAQ,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,0BAA0B,QAAQ,EAAE,CAAC,CAAC;QAChH,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,CAAC;QACvD,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACnB,KAAK,EAAE,EAAE,MAAM,EAAE,WAAW,GAAG,YAAY,EAAE,EAAE,EAAE,UAAU,EAAE;YAC7D,SAAS,EAAE,EAAE,UAAU,EAAE,GAAG,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;SACxD,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,IAAI,CAAC,KAAqB;QACtC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;CACF;AAED,MAAM,iBAAiB,GAAoB,CAAC,OAAO,EAAE,EAAE;IACrD,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;IACjC,OAAO,EAAE,WAAW,EAAE,CAAC,aAAa,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE,CAAC;AAC9E,CAAC,CAAC;AAEF,SAAS,iBAAiB,CAAC,GAAsB;IAC/C,MAAM,MAAM,GAA2B,EAAE,CAAC;IAC1C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC;QAAE,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACnG,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,eAAe,CAAC,KAAa;IACpC,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,OAAO;QAAE,OAAO,KAAK,CAAC;IACxH,MAAM,IAAI,KAAK,CAAC,sCAAsC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AACjF,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED,SAAS,WAAW,CAAC,IAAY;IAC/B,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;QAAE,OAAO,SAAS,CAAC;IACnC,IAAI,CAAC;QACH,MAAM,KAAK,GAAY,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACxC,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IAC7C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,MAAM,eAAe,GAAG,KAAK,CAAC;AAE9B,SAAS,oBAAoB,CAAC,KAAc,EAAE,KAAa,EAAE,MAAc;IACzE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAChC,IAAI,KAAK,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;QACpC,OAAO,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACvG,CAAC;IACD,IAAI,KAAK,CAAC,IAAI,KAAK,gBAAgB,IAAI,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;QAC7D,OAAO,CAAC;gBACN,IAAI,EAAE,YAAY;gBAClB,QAAQ,EAAE;oBACR,YAAY,EAAE,iBAAiB,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC;oBACzD,aAAa,EAAE,iBAAiB,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC;oBAC3D,2BAA2B,EAAE,CAAC;oBAC9B,uBAAuB,EAAE,iBAAiB,CAAC,KAAK,CAAC,KAAK,CAAC,mBAAmB,CAAC;oBAC3E,QAAQ,EAAE,CAAC;oBACX,KAAK;iBACN;aACF,CAAC,CAAC;IACL,CAAC;IACD,IAAI,KAAK,CAAC,IAAI,KAAK,gBAAgB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC;QAAE,OAAO,EAAE,CAAC;IACxE,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;IACxB,IAAI,IAAI,CAAC,IAAI,KAAK,eAAe,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QAChF,OAAO,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,CAAC,CAAC;IACrF,CAAC;IACD,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5E,OAAO,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;IAClF,CAAC;IACD,IAAI,IAAI,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;QACtC,MAAM,OAAO,GAAG,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ;YAC9C,CAAC,CAAC,IAAI,CAAC,OAAO;YACd,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7F,MAAM,QAAQ,GAAG,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;QACjF,OAAO,CAAC;gBACN,IAAI,EAAE,kBAAkB;gBACxB,QAAQ,EAAE;oBACR,IAAI,EAAE,MAAM;oBACZ,OAAO,EAAE,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK;oBACtE,EAAE,EAAE,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,CAAC;oBAC5C,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;oBAC5D,KAAK,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,eAAe,CAAC,EAAE;iBACtD;aACF,CAAC,CAAC;IACL,CAAC;IACD,IAAI,IAAI,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;QAChC,MAAM,IAAI,GAAG,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ;YACxC,CAAC,CAAC,IAAI,CAAC,IAAI;YACX,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ;gBACpG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI;gBACtB,CAAC,CAAC,EAAE,CAAC;QACT,OAAO,CAAC;gBACN,IAAI,EAAE,kBAAkB;gBACxB,QAAQ,EAAE;oBACR,IAAI,EAAE,MAAM;oBACZ,OAAO,EAAE,QAAQ,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;oBACpC,EAAE,EAAE,IAAI;oBACR,WAAW,EAAE,CAAC;oBACd,KAAK,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE;iBAC3B;aACF,CAAC,CAAC;IACL,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAa,EAAE,KAAa;IACtD,OAAO,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;AAC1C,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAa;IACvC,OAAO,IAAI,KAAK,CACd,yEAAyE,KAAK,wCAAwC,CACvH,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"codex.js","sourceRoot":"","sources":["../../src/connectors/codex.ts"],"names":[],"mappings":"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"}
@@ -23,36 +23,53 @@ export async function runAgent(options, boundaries = {}) {
23
23
  throw new Error('claude runs with sandboxMode="read-only" are not supported: the Claude connector ' +
24
24
  'cannot enforce read-only (D8). Omit sandboxMode or pass "workspace-write".');
25
25
  }
26
+ options.signal?.throwIfAborted();
27
+ validateAgentSettings(options);
26
28
  const cwd = options.cwd ?? process.cwd();
27
29
  if (options.background) {
30
+ // Claude-only settings never reach a background codex run: startBackgroundRun's
31
+ // codex branch builds its argv from codexCommand() and records CodexRunMeta,
32
+ // neither of which carries a tool filter or a thinking block. Forwarding them
33
+ // here would advertise a guarantee the durable wrapper cannot keep, and
34
+ // validateAgentSettings has already rejected them for codex, so the spread is
35
+ // claude-only rather than dead (D5 / BG-WRITE-A).
28
36
  return startBackgroundRun({
29
37
  agent: options.agent,
30
38
  prompt: options.prompt,
31
39
  cwd,
32
40
  ...(options.model !== undefined ? { model: options.model } : {}),
41
+ ...(options.effort !== undefined ? { effort: options.effort } : {}),
33
42
  ...(options.sandboxMode !== undefined ? { sandboxMode: options.sandboxMode } : {}),
34
43
  ...(options.budgeted !== undefined ? { budgeted: options.budgeted } : {}),
35
44
  ...(options.registryRoot !== undefined ? { registryRoot: options.registryRoot } : {}),
36
45
  ...(options.env !== undefined ? { env: options.env } : {}),
37
46
  ...(boundaries.backgroundCommand !== undefined ? { command: boundaries.backgroundCommand } : {}),
38
- // 4b: carry tool filters through to background runs (D5 / BG-WRITE-A)
39
- ...(options.allowedTools !== undefined ? { allowedTools: options.allowedTools } : {}),
40
- ...(options.disallowedTools !== undefined ? { disallowedTools: options.disallowedTools } : {}),
47
+ ...(options.agent === "claude" && options.thinking !== undefined ? { thinking: options.thinking } : {}),
48
+ // 4b: carry tool filters through to background CLAUDE runs (D5 / BG-WRITE-A)
49
+ ...(options.agent === "claude" && options.allowedTools !== undefined ? { allowedTools: options.allowedTools } : {}),
50
+ ...(options.agent === "claude" && options.disallowedTools !== undefined ? { disallowedTools: options.disallowedTools } : {}),
41
51
  });
42
52
  }
43
53
  if (options.agent === "codex") {
44
54
  return new CodexConnector({
55
+ ...(options.ownProcessGroup !== undefined ? { ownProcessGroup: options.ownProcessGroup } : {}),
45
56
  cwd,
46
57
  ...(options.model !== undefined ? { model: options.model } : {}),
58
+ ...(options.effort !== undefined ? { effort: options.effort } : {}),
47
59
  ...(options.sandboxMode !== undefined ? { sandboxMode: options.sandboxMode } : {}),
48
60
  ...(options.env !== undefined ? { env: options.env } : {}),
49
61
  ...(boundaries.codexSpawn !== undefined ? { spawn: boundaries.codexSpawn } : {}),
50
62
  ...(options.onEvent !== undefined ? { onEvent: options.onEvent } : {}),
63
+ ...(options.signal !== undefined ? { signal: options.signal } : {}),
51
64
  }).run(options.prompt);
52
65
  }
53
66
  return new ClaudeConnector({
54
67
  cwd,
68
+ ...(options.ownProcessGroup !== undefined ? { ownProcessGroup: options.ownProcessGroup } : {}),
55
69
  ...(options.model !== undefined ? { model: options.model } : {}),
70
+ ...(options.effort !== undefined ? { effort: options.effort } : {}),
71
+ ...(options.thinking !== undefined ? { thinking: options.thinking } : {}),
72
+ ...(options.signal !== undefined ? { signal: options.signal } : {}),
56
73
  ...(options.allowedTools !== undefined ? { allowedTools: options.allowedTools } : {}),
57
74
  ...(options.disallowedTools !== undefined ? { disallowedTools: options.disallowedTools } : {}),
58
75
  ...(options.env !== undefined ? { env: options.env } : {}),
@@ -60,4 +77,28 @@ export async function runAgent(options, boundaries = {}) {
60
77
  ...(options.onEvent !== undefined ? { onEvent: options.onEvent } : {}),
61
78
  }).run(options.prompt);
62
79
  }
80
+ /** Reject settings that would otherwise silently disappear at a provider boundary. */
81
+ export function validateAgentSettings(options) {
82
+ if (options.agent === "codex") {
83
+ if (options.thinking !== undefined || options.allowedTools !== undefined || options.disallowedTools !== undefined) {
84
+ throw new Error("Codex does not support Claude thinking/tool filters; select a Codex sandboxMode instead");
85
+ }
86
+ if (options.effort !== undefined && !["minimal", "low", "medium", "high", "xhigh"].includes(options.effort)) {
87
+ throw new Error(`unsupported Codex reasoning effort ${JSON.stringify(options.effort)}`);
88
+ }
89
+ }
90
+ else {
91
+ if (options.effort !== undefined && !["low", "medium", "high", "xhigh", "max"].includes(options.effort)) {
92
+ throw new Error(`unsupported Claude effort ${JSON.stringify(options.effort)}`);
93
+ }
94
+ if (options.thinking !== undefined) {
95
+ const { type, budgetTokens, display, ...unknown } = options.thinking;
96
+ if (!["adaptive", "enabled", "disabled"].includes(String(type)) || Object.keys(unknown).length
97
+ || (budgetTokens !== undefined && (type !== "enabled" || !Number.isInteger(budgetTokens) || Number(budgetTokens) <= 0))
98
+ || (display !== undefined && (type === "disabled" || !["summarized", "omitted"].includes(String(display))))) {
99
+ throw new Error("invalid Claude thinking configuration");
100
+ }
101
+ }
102
+ }
103
+ }
63
104
  //# sourceMappingURL=runner.js.map