@provos/ironcurtain 0.11.0 → 0.13.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 (472) hide show
  1. package/README.md +23 -19
  2. package/dist/cli-help.d.ts +12 -0
  3. package/dist/cli-help.js +21 -0
  4. package/dist/cli-help.js.map +1 -1
  5. package/dist/cli.js +14 -6
  6. package/dist/cli.js.map +1 -1
  7. package/dist/config/agent-model-guard.d.ts +14 -0
  8. package/dist/config/agent-model-guard.js +24 -0
  9. package/dist/config/agent-model-guard.js.map +1 -0
  10. package/dist/config/config-command.d.ts +33 -1
  11. package/dist/config/config-command.js +723 -11
  12. package/dist/config/config-command.js.map +1 -1
  13. package/dist/config/first-start.js +2 -8
  14. package/dist/config/first-start.js.map +1 -1
  15. package/dist/config/model-provider.d.ts +9 -0
  16. package/dist/config/model-provider.js +13 -0
  17. package/dist/config/model-provider.js.map +1 -1
  18. package/dist/config/openrouter-catalog.d.ts +46 -0
  19. package/dist/config/openrouter-catalog.js +111 -0
  20. package/dist/config/openrouter-catalog.js.map +1 -0
  21. package/dist/config/openrouter-models-fallback.d.ts +15 -0
  22. package/dist/config/openrouter-models-fallback.js +49 -0
  23. package/dist/config/openrouter-models-fallback.js.map +1 -0
  24. package/dist/config/paths.d.ts +48 -6
  25. package/dist/config/paths.js +63 -8
  26. package/dist/config/paths.js.map +1 -1
  27. package/dist/config/types.d.ts +8 -0
  28. package/dist/config/user-config.d.ts +179 -6
  29. package/dist/config/user-config.js +282 -5
  30. package/dist/config/user-config.js.map +1 -1
  31. package/dist/daemon/daemon-command.js +14 -5
  32. package/dist/daemon/daemon-command.js.map +1 -1
  33. package/dist/daemon/ironcurtain-daemon.d.ts +18 -0
  34. package/dist/daemon/ironcurtain-daemon.js +28 -1
  35. package/dist/daemon/ironcurtain-daemon.js.map +1 -1
  36. package/dist/daemon-client/daemon-client.d.ts +123 -0
  37. package/dist/daemon-client/daemon-client.js +324 -0
  38. package/dist/daemon-client/daemon-client.js.map +1 -0
  39. package/dist/docker/adapters/claude-code.js +109 -1
  40. package/dist/docker/adapters/claude-code.js.map +1 -1
  41. package/dist/docker/adapters/codex.d.ts +18 -0
  42. package/dist/docker/adapters/codex.js +376 -0
  43. package/dist/docker/adapters/codex.js.map +1 -0
  44. package/dist/docker/adapters/goose.js +38 -2
  45. package/dist/docker/adapters/goose.js.map +1 -1
  46. package/dist/docker/agent-adapter.d.ts +34 -6
  47. package/dist/docker/agent-adapter.js +2 -0
  48. package/dist/docker/agent-adapter.js.map +1 -1
  49. package/dist/docker/agent-registry.js +5 -0
  50. package/dist/docker/agent-registry.js.map +1 -1
  51. package/dist/docker/apple-container-manager.d.ts +49 -0
  52. package/dist/docker/apple-container-manager.js +486 -0
  53. package/dist/docker/apple-container-manager.js.map +1 -0
  54. package/dist/docker/ca.js +9 -2
  55. package/dist/docker/ca.js.map +1 -1
  56. package/dist/docker/code-mode-proxy.d.ts +11 -0
  57. package/dist/docker/code-mode-proxy.js +3 -1
  58. package/dist/docker/code-mode-proxy.js.map +1 -1
  59. package/dist/docker/container-lifecycle.d.ts +2 -2
  60. package/dist/docker/container-lifecycle.js +9 -0
  61. package/dist/docker/container-lifecycle.js.map +1 -1
  62. package/dist/docker/container-runtime.d.ts +29 -0
  63. package/dist/docker/container-runtime.js +76 -0
  64. package/dist/docker/container-runtime.js.map +1 -0
  65. package/dist/docker/docker-agent-session.d.ts +31 -0
  66. package/dist/docker/docker-agent-session.js +97 -7
  67. package/dist/docker/docker-agent-session.js.map +1 -1
  68. package/dist/docker/docker-infrastructure.d.ts +232 -15
  69. package/dist/docker/docker-infrastructure.js +762 -118
  70. package/dist/docker/docker-infrastructure.js.map +1 -1
  71. package/dist/docker/docker-manager.d.ts +25 -5
  72. package/dist/docker/docker-manager.js +388 -21
  73. package/dist/docker/docker-manager.js.map +1 -1
  74. package/dist/docker/docker-probe.d.ts +45 -0
  75. package/dist/docker/docker-probe.js +86 -0
  76. package/dist/docker/docker-probe.js.map +1 -0
  77. package/dist/docker/docker-progress-sink.d.ts +1 -1
  78. package/dist/docker/docker-resource-lifecycle.d.ts +71 -0
  79. package/dist/docker/docker-resource-lifecycle.js +454 -0
  80. package/dist/docker/docker-resource-lifecycle.js.map +1 -0
  81. package/dist/docker/gc-command.d.ts +2 -0
  82. package/dist/docker/gc-command.js +37 -0
  83. package/dist/docker/gc-command.js.map +1 -0
  84. package/dist/docker/mitm-proxy.d.ts +58 -5
  85. package/dist/docker/mitm-proxy.js +338 -26
  86. package/dist/docker/mitm-proxy.js.map +1 -1
  87. package/dist/docker/network-topology.d.ts +88 -0
  88. package/dist/docker/network-topology.js +167 -0
  89. package/dist/docker/network-topology.js.map +1 -0
  90. package/dist/docker/oauth-credentials.d.ts +13 -0
  91. package/dist/docker/oauth-credentials.js +125 -0
  92. package/dist/docker/oauth-credentials.js.map +1 -1
  93. package/dist/docker/openrouter.d.ts +107 -0
  94. package/dist/docker/openrouter.js +236 -0
  95. package/dist/docker/openrouter.js.map +1 -0
  96. package/dist/docker/orientation.js +1 -1
  97. package/dist/docker/orientation.js.map +1 -1
  98. package/dist/docker/package-types.d.ts +1 -1
  99. package/dist/docker/platform.d.ts +3 -1
  100. package/dist/docker/platform.js +3 -1
  101. package/dist/docker/platform.js.map +1 -1
  102. package/dist/docker/provider-config.d.ts +35 -1
  103. package/dist/docker/provider-config.js +93 -3
  104. package/dist/docker/provider-config.js.map +1 -1
  105. package/dist/docker/provision-lock.d.ts +46 -0
  106. package/dist/docker/provision-lock.js +152 -0
  107. package/dist/docker/provision-lock.js.map +1 -0
  108. package/dist/docker/pty-session.d.ts +22 -0
  109. package/dist/docker/pty-session.js +238 -84
  110. package/dist/docker/pty-session.js.map +1 -1
  111. package/dist/docker/pty-types.d.ts +15 -0
  112. package/dist/docker/pty-types.js +8 -0
  113. package/dist/docker/pty-types.js.map +1 -1
  114. package/dist/docker/registry-proxy.d.ts +46 -0
  115. package/dist/docker/registry-proxy.js +255 -1
  116. package/dist/docker/registry-proxy.js.map +1 -1
  117. package/dist/docker/resource-limits.d.ts +14 -5
  118. package/dist/docker/resource-limits.js +11 -8
  119. package/dist/docker/resource-limits.js.map +1 -1
  120. package/dist/docker/sse-extractor.js +55 -5
  121. package/dist/docker/sse-extractor.js.map +1 -1
  122. package/dist/docker/stream-delay.d.ts +86 -0
  123. package/dist/docker/stream-delay.js +218 -0
  124. package/dist/docker/stream-delay.js.map +1 -0
  125. package/dist/docker/token-stream-types.d.ts +15 -0
  126. package/dist/docker/trajectory-capture.d.ts +79 -0
  127. package/dist/docker/trajectory-capture.js +521 -0
  128. package/dist/docker/trajectory-capture.js.map +1 -0
  129. package/dist/docker/trajectory-reassembler.d.ts +286 -0
  130. package/dist/docker/trajectory-reassembler.js +1010 -0
  131. package/dist/docker/trajectory-reassembler.js.map +1 -0
  132. package/dist/docker/trajectory-tap.d.ts +100 -0
  133. package/dist/docker/trajectory-tap.js +410 -0
  134. package/dist/docker/trajectory-tap.js.map +1 -0
  135. package/dist/docker/trajectory-types.d.ts +187 -0
  136. package/dist/docker/trajectory-types.js +43 -0
  137. package/dist/docker/trajectory-types.js.map +1 -0
  138. package/dist/docker/types.d.ts +116 -12
  139. package/dist/doctor/checks.d.ts +39 -6
  140. package/dist/doctor/checks.js +129 -25
  141. package/dist/doctor/checks.js.map +1 -1
  142. package/dist/doctor/doctor-command.js +39 -9
  143. package/dist/doctor/doctor-command.js.map +1 -1
  144. package/dist/doctor/mcp-liveness.d.ts +1 -1
  145. package/dist/doctor/mcp-liveness.js +12 -4
  146. package/dist/doctor/mcp-liveness.js.map +1 -1
  147. package/dist/escalation/escalation-watcher.js +6 -0
  148. package/dist/escalation/escalation-watcher.js.map +1 -1
  149. package/dist/{mux → escalation}/trusted-input.d.ts +7 -4
  150. package/dist/{mux → escalation}/trusted-input.js +8 -5
  151. package/dist/escalation/trusted-input.js.map +1 -0
  152. package/dist/hash.js.map +1 -1
  153. package/dist/index.js +65 -16
  154. package/dist/index.js.map +1 -1
  155. package/dist/mux/mux-app.d.ts +9 -0
  156. package/dist/mux/mux-app.js +18 -16
  157. package/dist/mux/mux-app.js.map +1 -1
  158. package/dist/mux/mux-command.js +26 -8
  159. package/dist/mux/mux-command.js.map +1 -1
  160. package/dist/mux/mux-input-handler.d.ts +26 -2
  161. package/dist/mux/mux-input-handler.js +93 -11
  162. package/dist/mux/mux-input-handler.js.map +1 -1
  163. package/dist/mux/mux-renderer.d.ts +2 -1
  164. package/dist/mux/mux-renderer.js +67 -0
  165. package/dist/mux/mux-renderer.js.map +1 -1
  166. package/dist/mux/provider-profile-snapshot.d.ts +44 -0
  167. package/dist/mux/provider-profile-snapshot.js +56 -0
  168. package/dist/mux/provider-profile-snapshot.js.map +1 -0
  169. package/dist/mux/types.d.ts +3 -2
  170. package/dist/mux/types.js +6 -2
  171. package/dist/mux/types.js.map +1 -1
  172. package/dist/observe/observe-command.js +112 -125
  173. package/dist/observe/observe-command.js.map +1 -1
  174. package/dist/persona/broad-policy-validator.d.ts +95 -0
  175. package/dist/persona/broad-policy-validator.js +171 -0
  176. package/dist/persona/broad-policy-validator.js.map +1 -0
  177. package/dist/persona/compile-persona-policy.d.ts +54 -2
  178. package/dist/persona/compile-persona-policy.js +29 -4
  179. package/dist/persona/compile-persona-policy.js.map +1 -1
  180. package/dist/persona/event-bus-progress-reporter.d.ts +57 -0
  181. package/dist/persona/event-bus-progress-reporter.js +66 -0
  182. package/dist/persona/event-bus-progress-reporter.js.map +1 -0
  183. package/dist/persona/persona-command.js +46 -76
  184. package/dist/persona/persona-command.js.map +1 -1
  185. package/dist/persona/persona-compile-orchestrator.d.ts +101 -0
  186. package/dist/persona/persona-compile-orchestrator.js +504 -0
  187. package/dist/persona/persona-compile-orchestrator.js.map +1 -0
  188. package/dist/persona/persona-service.d.ts +137 -0
  189. package/dist/persona/persona-service.js +263 -0
  190. package/dist/persona/persona-service.js.map +1 -0
  191. package/dist/persona/policy-mutation-audit.d.ts +109 -0
  192. package/dist/persona/policy-mutation-audit.js +179 -0
  193. package/dist/persona/policy-mutation-audit.js.map +1 -0
  194. package/dist/persona/rule-delta.d.ts +30 -0
  195. package/dist/persona/rule-delta.js +82 -0
  196. package/dist/persona/rule-delta.js.map +1 -0
  197. package/dist/persona/types.d.ts +12 -0
  198. package/dist/pipeline/annotate.js +10 -2
  199. package/dist/pipeline/annotate.js.map +1 -1
  200. package/dist/pipeline/compile.js +14 -2
  201. package/dist/pipeline/compile.js.map +1 -1
  202. package/dist/pipeline/constitution-compiler.js.map +1 -1
  203. package/dist/pipeline/generate-with-repair.js.map +1 -1
  204. package/dist/pipeline/pipeline-runner.d.ts +63 -4
  205. package/dist/pipeline/pipeline-runner.js +159 -50
  206. package/dist/pipeline/pipeline-runner.js.map +1 -1
  207. package/dist/pipeline/pipeline-shared.d.ts +32 -3
  208. package/dist/pipeline/pipeline-shared.js +76 -8
  209. package/dist/pipeline/pipeline-shared.js.map +1 -1
  210. package/dist/pipeline/refresh-lists.js +3 -5
  211. package/dist/pipeline/refresh-lists.js.map +1 -1
  212. package/dist/pipeline/scenario-schema-validator.js.map +1 -1
  213. package/dist/{mux → pty}/pty-bridge.d.ts +41 -3
  214. package/dist/{mux → pty}/pty-bridge.js +71 -18
  215. package/dist/pty/pty-bridge.js.map +1 -0
  216. package/dist/pty/resolve-ironcurtain-bin.d.ts +17 -0
  217. package/dist/pty/resolve-ironcurtain-bin.js +22 -0
  218. package/dist/pty/resolve-ironcurtain-bin.js.map +1 -0
  219. package/dist/sandbox/index.d.ts +19 -4
  220. package/dist/sandbox/index.js +31 -18
  221. package/dist/sandbox/index.js.map +1 -1
  222. package/dist/servers/fetch-server.js +2 -0
  223. package/dist/servers/fetch-server.js.map +1 -1
  224. package/dist/session/index.d.ts +1 -1
  225. package/dist/session/index.js +20 -2
  226. package/dist/session/index.js.map +1 -1
  227. package/dist/session/preflight.d.ts +20 -35
  228. package/dist/session/preflight.js +92 -109
  229. package/dist/session/preflight.js.map +1 -1
  230. package/dist/session/resource-budget-tracker.js +8 -0
  231. package/dist/session/resource-budget-tracker.js.map +1 -1
  232. package/dist/session/session-manager.d.ts +7 -0
  233. package/dist/session/session-manager.js.map +1 -1
  234. package/dist/session/types.d.ts +23 -0
  235. package/dist/signal/bot-command.js +6 -1
  236. package/dist/signal/bot-command.js.map +1 -1
  237. package/dist/signal/setup-signal.js +1 -1
  238. package/dist/signal/setup-signal.js.map +1 -1
  239. package/dist/signal/signal-bot-daemon.d.ts +1 -0
  240. package/dist/signal/signal-bot-daemon.js +9 -2
  241. package/dist/signal/signal-bot-daemon.js.map +1 -1
  242. package/dist/signal/signal-container.d.ts +3 -3
  243. package/dist/signal/signal-container.js +2 -2
  244. package/dist/signal/signal-container.js.map +1 -1
  245. package/dist/trusted-process/call-circuit-breaker.d.ts +6 -0
  246. package/dist/trusted-process/call-circuit-breaker.js +22 -3
  247. package/dist/trusted-process/call-circuit-breaker.js.map +1 -1
  248. package/dist/trusted-process/container-command.d.ts +35 -0
  249. package/dist/trusted-process/container-command.js +49 -0
  250. package/dist/trusted-process/container-command.js.map +1 -0
  251. package/dist/trusted-process/mcp-error-utils.js +4 -1
  252. package/dist/trusted-process/mcp-error-utils.js.map +1 -1
  253. package/dist/trusted-process/mcp-proxy-server.js +37 -3
  254. package/dist/trusted-process/mcp-proxy-server.js.map +1 -1
  255. package/dist/trusted-process/policy-engine.js +13 -2
  256. package/dist/trusted-process/policy-engine.js.map +1 -1
  257. package/dist/trusted-process/tcp-server-transport.d.ts +19 -1
  258. package/dist/trusted-process/tcp-server-transport.js +56 -10
  259. package/dist/trusted-process/tcp-server-transport.js.map +1 -1
  260. package/dist/trusted-process/tool-call-coordinator.d.ts +22 -8
  261. package/dist/trusted-process/tool-call-coordinator.js +149 -65
  262. package/dist/trusted-process/tool-call-coordinator.js.map +1 -1
  263. package/dist/trusted-process/tool-call-pipeline.d.ts +8 -0
  264. package/dist/trusted-process/tool-call-pipeline.js +68 -34
  265. package/dist/trusted-process/tool-call-pipeline.js.map +1 -1
  266. package/dist/util/atomic-write.d.ts +31 -0
  267. package/dist/util/atomic-write.js +43 -0
  268. package/dist/util/atomic-write.js.map +1 -0
  269. package/dist/utils/preflight-checks.js +1 -3
  270. package/dist/utils/preflight-checks.js.map +1 -1
  271. package/dist/utils/stdio-guard.d.ts +1 -0
  272. package/dist/utils/stdio-guard.js +27 -0
  273. package/dist/utils/stdio-guard.js.map +1 -0
  274. package/dist/web-ui/__tests__/config-dispatch.test.d.ts +13 -0
  275. package/dist/web-ui/__tests__/config-dispatch.test.js +383 -0
  276. package/dist/web-ui/__tests__/config-dispatch.test.js.map +1 -0
  277. package/dist/web-ui/__tests__/json-rpc-dispatch.test.js +6 -0
  278. package/dist/web-ui/__tests__/json-rpc-dispatch.test.js.map +1 -1
  279. package/dist/web-ui/conn-registry.d.ts +14 -0
  280. package/dist/web-ui/conn-registry.js +25 -0
  281. package/dist/web-ui/conn-registry.js.map +1 -0
  282. package/dist/web-ui/dispatch/config-dispatch.d.ts +15 -0
  283. package/dist/web-ui/dispatch/config-dispatch.js +277 -0
  284. package/dist/web-ui/dispatch/config-dispatch.js.map +1 -0
  285. package/dist/web-ui/dispatch/escalation-dispatch.js +11 -2
  286. package/dist/web-ui/dispatch/escalation-dispatch.js.map +1 -1
  287. package/dist/web-ui/dispatch/persona-dispatch.d.ts +46 -2
  288. package/dist/web-ui/dispatch/persona-dispatch.js +209 -56
  289. package/dist/web-ui/dispatch/persona-dispatch.js.map +1 -1
  290. package/dist/web-ui/dispatch/pty-dispatch.d.ts +15 -0
  291. package/dist/web-ui/dispatch/pty-dispatch.js +66 -0
  292. package/dist/web-ui/dispatch/pty-dispatch.js.map +1 -0
  293. package/dist/web-ui/dispatch/session-dispatch.js +89 -6
  294. package/dist/web-ui/dispatch/session-dispatch.js.map +1 -1
  295. package/dist/web-ui/dispatch/types.d.ts +35 -0
  296. package/dist/web-ui/dispatch/types.js +42 -1
  297. package/dist/web-ui/dispatch/types.js.map +1 -1
  298. package/dist/web-ui/dispatch/workflow-dispatch.js +116 -5
  299. package/dist/web-ui/dispatch/workflow-dispatch.js.map +1 -1
  300. package/dist/web-ui/json-rpc-dispatch.js +4 -1
  301. package/dist/web-ui/json-rpc-dispatch.js.map +1 -1
  302. package/dist/web-ui/pty-session-manager.d.ts +234 -0
  303. package/dist/web-ui/pty-session-manager.js +599 -0
  304. package/dist/web-ui/pty-session-manager.js.map +1 -0
  305. package/dist/web-ui/web-event-bus.d.ts +34 -1
  306. package/dist/web-ui/web-event-bus.js.map +1 -1
  307. package/dist/web-ui/web-session-transport.js.map +1 -1
  308. package/dist/web-ui/web-ui-server.d.ts +22 -0
  309. package/dist/web-ui/web-ui-server.js +41 -0
  310. package/dist/web-ui/web-ui-server.js.map +1 -1
  311. package/dist/web-ui/web-ui-types.d.ts +212 -5
  312. package/dist/web-ui/web-ui-types.js.map +1 -1
  313. package/dist/web-ui-static/assets/index-CCVI4nEK.css +1 -0
  314. package/dist/web-ui-static/assets/index-Dm012gvY.js +114 -0
  315. package/dist/web-ui-static/index.html +2 -2
  316. package/dist/workflow/cli-shared.d.ts +62 -0
  317. package/dist/workflow/cli-shared.js +117 -0
  318. package/dist/workflow/cli-shared.js.map +1 -0
  319. package/dist/workflow/cli-support.js +0 -2
  320. package/dist/workflow/cli-support.js.map +1 -1
  321. package/dist/workflow/container-snapshots.d.ts +29 -0
  322. package/dist/workflow/container-snapshots.js +137 -0
  323. package/dist/workflow/container-snapshots.js.map +1 -0
  324. package/dist/workflow/daemon-gate-commands.d.ts +21 -0
  325. package/dist/workflow/daemon-gate-commands.js +595 -0
  326. package/dist/workflow/daemon-gate-commands.js.map +1 -0
  327. package/dist/workflow/discovery.d.ts +29 -0
  328. package/dist/workflow/discovery.js +67 -7
  329. package/dist/workflow/discovery.js.map +1 -1
  330. package/dist/workflow/lane-template.d.ts +89 -0
  331. package/dist/workflow/lane-template.js +141 -0
  332. package/dist/workflow/lane-template.js.map +1 -0
  333. package/dist/workflow/lint.d.ts +7 -1
  334. package/dist/workflow/lint.js +186 -3
  335. package/dist/workflow/lint.js.map +1 -1
  336. package/dist/workflow/machine-builder.d.ts +90 -2
  337. package/dist/workflow/machine-builder.js +222 -29
  338. package/dist/workflow/machine-builder.js.map +1 -1
  339. package/dist/workflow/message-log.d.ts +15 -1
  340. package/dist/workflow/message-log.js.map +1 -1
  341. package/dist/workflow/orchestrator.d.ts +505 -1
  342. package/dist/workflow/orchestrator.js +1725 -69
  343. package/dist/workflow/orchestrator.js.map +1 -1
  344. package/dist/workflow/prompt-builder.js +2 -1
  345. package/dist/workflow/prompt-builder.js.map +1 -1
  346. package/dist/workflow/run-state-command.js +1 -1
  347. package/dist/workflow/run-state-command.js.map +1 -1
  348. package/dist/workflow/shutdown-signals.d.ts +7 -0
  349. package/dist/workflow/shutdown-signals.js +40 -0
  350. package/dist/workflow/shutdown-signals.js.map +1 -0
  351. package/dist/workflow/status-parser.js +19 -4
  352. package/dist/workflow/status-parser.js.map +1 -1
  353. package/dist/workflow/types.d.ts +123 -23
  354. package/dist/workflow/types.js +2 -0
  355. package/dist/workflow/types.js.map +1 -1
  356. package/dist/workflow/validate.d.ts +23 -1
  357. package/dist/workflow/validate.js +311 -22
  358. package/dist/workflow/validate.js.map +1 -1
  359. package/dist/workflow/workflow-command.d.ts +0 -17
  360. package/dist/workflow/workflow-command.js +118 -94
  361. package/dist/workflow/workflow-command.js.map +1 -1
  362. package/dist/workflow/workflow-discovery.d.ts +2 -0
  363. package/dist/workflow/workflow-discovery.js +22 -1
  364. package/dist/workflow/workflow-discovery.js.map +1 -1
  365. package/dist/workflow/workflow-manager.d.ts +34 -0
  366. package/dist/workflow/workflow-manager.js +52 -1
  367. package/dist/workflow/workflow-manager.js.map +1 -1
  368. package/dist/workflow/workflows/design-and-code/README.md +50 -0
  369. package/dist/workflow/workflows/deterministic-eval-smoke/scripts/format_report.js +29 -0
  370. package/dist/workflow/workflows/deterministic-eval-smoke/scripts/package.json +5 -0
  371. package/dist/workflow/workflows/deterministic-eval-smoke/scripts/requirements.txt +1 -0
  372. package/dist/workflow/workflows/deterministic-eval-smoke/scripts/run_eval.py +41 -0
  373. package/dist/workflow/workflows/deterministic-eval-smoke/workflow.yaml +57 -0
  374. package/dist/workflow/workflows/deterministic-verdict-smoke/scripts/classify.py +18 -0
  375. package/dist/workflow/workflows/deterministic-verdict-smoke/workflow.yaml +51 -0
  376. package/dist/workflow/workflows/evolve/README.md +66 -0
  377. package/dist/workflow/workflows/evolve/scripts/LICENSE +201 -0
  378. package/dist/workflow/workflows/evolve/scripts/README.md +314 -0
  379. package/dist/workflow/workflows/evolve/scripts/evolve-brief +16 -0
  380. package/dist/workflow/workflows/evolve/scripts/evolve-cognition +16 -0
  381. package/dist/workflow/workflows/evolve/scripts/evolve-db +16 -0
  382. package/dist/workflow/workflows/evolve/scripts/evolve-eval +16 -0
  383. package/dist/workflow/workflows/evolve/scripts/evolve-files +16 -0
  384. package/dist/workflow/workflows/evolve/scripts/evolve-summary +16 -0
  385. package/dist/workflow/workflows/evolve/scripts/evolve_core/__init__.py +14 -0
  386. package/dist/workflow/workflows/evolve/scripts/evolve_core/algorithms/__init__.py +17 -0
  387. package/dist/workflow/workflows/evolve/scripts/evolve_core/algorithms/base.py +21 -0
  388. package/dist/workflow/workflows/evolve/scripts/evolve_core/algorithms/factory.py +90 -0
  389. package/dist/workflow/workflows/evolve/scripts/evolve_core/algorithms/greedy.py +17 -0
  390. package/dist/workflow/workflows/evolve/scripts/evolve_core/algorithms/island.py +316 -0
  391. package/dist/workflow/workflows/evolve/scripts/evolve_core/algorithms/random.py +18 -0
  392. package/dist/workflow/workflows/evolve/scripts/evolve_core/algorithms/ucb1.py +55 -0
  393. package/dist/workflow/workflows/evolve/scripts/evolve_core/best_snapshot.py +62 -0
  394. package/dist/workflow/workflows/evolve/scripts/evolve_core/cli.py +752 -0
  395. package/dist/workflow/workflows/evolve/scripts/evolve_core/cognition.py +127 -0
  396. package/dist/workflow/workflows/evolve/scripts/evolve_core/database.py +218 -0
  397. package/dist/workflow/workflows/evolve/scripts/evolve_core/diff.py +57 -0
  398. package/dist/workflow/workflows/evolve/scripts/evolve_core/embedding.py +84 -0
  399. package/dist/workflow/workflows/evolve/scripts/evolve_core/file_lock.py +45 -0
  400. package/dist/workflow/workflows/evolve/scripts/evolve_core/run_state.py +343 -0
  401. package/dist/workflow/workflows/evolve/scripts/evolve_core/sampling_config.py +173 -0
  402. package/dist/workflow/workflows/evolve/scripts/evolve_core/structures.py +93 -0
  403. package/dist/workflow/workflows/evolve/scripts/evolve_core/vector_index.py +191 -0
  404. package/dist/workflow/workflows/evolve/scripts/evolve_result.py +1503 -0
  405. package/dist/workflow/workflows/evolve/scripts/requirements.txt +2 -0
  406. package/dist/workflow/workflows/evolve/workflow.yaml +646 -0
  407. package/dist/workflow/workflows/test-email-summary/workflow.yaml +1 -0
  408. package/dist/workflow/workflows/vuln-discovery/README.md +54 -0
  409. package/dist/workflow/workflows/vuln-discovery/skills/harness-design-fuzzing/SKILL.md +6 -1
  410. package/dist/workflow/workflows/vuln-discovery/skills/memory-safety-c-cpp/SKILL.md +1 -0
  411. package/dist/workflow/workflows/vuln-discovery/skills/vulnerability-triage/SKILL.md +4 -0
  412. package/dist/workflow/workflows/vuln-discovery/workflow.yaml +13 -8
  413. package/docker/Dockerfile.base +22 -0
  414. package/docker/Dockerfile.base.arm64 +18 -0
  415. package/docker/Dockerfile.claude-code +3 -1
  416. package/docker/Dockerfile.codex +17 -0
  417. package/docker/Dockerfile.goose +3 -1
  418. package/docker/entrypoint-claude-code.sh +28 -45
  419. package/docker/entrypoint-codex.sh +42 -0
  420. package/docker/entrypoint-goose.sh +5 -24
  421. package/docker/entrypoint-uid-remap.sh +93 -0
  422. package/package.json +39 -30
  423. package/src/workflow/workflows/design-and-code/README.md +50 -0
  424. package/src/workflow/workflows/deterministic-eval-smoke/scripts/format_report.js +29 -0
  425. package/src/workflow/workflows/deterministic-eval-smoke/scripts/package.json +5 -0
  426. package/src/workflow/workflows/deterministic-eval-smoke/scripts/requirements.txt +1 -0
  427. package/src/workflow/workflows/deterministic-eval-smoke/scripts/run_eval.py +41 -0
  428. package/src/workflow/workflows/deterministic-eval-smoke/workflow.yaml +57 -0
  429. package/src/workflow/workflows/deterministic-verdict-smoke/scripts/classify.py +18 -0
  430. package/src/workflow/workflows/deterministic-verdict-smoke/workflow.yaml +51 -0
  431. package/src/workflow/workflows/evolve/README.md +66 -0
  432. package/src/workflow/workflows/evolve/scripts/LICENSE +201 -0
  433. package/src/workflow/workflows/evolve/scripts/README.md +314 -0
  434. package/src/workflow/workflows/evolve/scripts/evolve-brief +16 -0
  435. package/src/workflow/workflows/evolve/scripts/evolve-cognition +16 -0
  436. package/src/workflow/workflows/evolve/scripts/evolve-db +16 -0
  437. package/src/workflow/workflows/evolve/scripts/evolve-eval +16 -0
  438. package/src/workflow/workflows/evolve/scripts/evolve-files +16 -0
  439. package/src/workflow/workflows/evolve/scripts/evolve-summary +16 -0
  440. package/src/workflow/workflows/evolve/scripts/evolve_core/__init__.py +14 -0
  441. package/src/workflow/workflows/evolve/scripts/evolve_core/algorithms/__init__.py +17 -0
  442. package/src/workflow/workflows/evolve/scripts/evolve_core/algorithms/base.py +21 -0
  443. package/src/workflow/workflows/evolve/scripts/evolve_core/algorithms/factory.py +90 -0
  444. package/src/workflow/workflows/evolve/scripts/evolve_core/algorithms/greedy.py +17 -0
  445. package/src/workflow/workflows/evolve/scripts/evolve_core/algorithms/island.py +316 -0
  446. package/src/workflow/workflows/evolve/scripts/evolve_core/algorithms/random.py +18 -0
  447. package/src/workflow/workflows/evolve/scripts/evolve_core/algorithms/ucb1.py +55 -0
  448. package/src/workflow/workflows/evolve/scripts/evolve_core/best_snapshot.py +62 -0
  449. package/src/workflow/workflows/evolve/scripts/evolve_core/cli.py +752 -0
  450. package/src/workflow/workflows/evolve/scripts/evolve_core/cognition.py +127 -0
  451. package/src/workflow/workflows/evolve/scripts/evolve_core/database.py +218 -0
  452. package/src/workflow/workflows/evolve/scripts/evolve_core/diff.py +57 -0
  453. package/src/workflow/workflows/evolve/scripts/evolve_core/embedding.py +84 -0
  454. package/src/workflow/workflows/evolve/scripts/evolve_core/file_lock.py +45 -0
  455. package/src/workflow/workflows/evolve/scripts/evolve_core/run_state.py +343 -0
  456. package/src/workflow/workflows/evolve/scripts/evolve_core/sampling_config.py +173 -0
  457. package/src/workflow/workflows/evolve/scripts/evolve_core/structures.py +93 -0
  458. package/src/workflow/workflows/evolve/scripts/evolve_core/vector_index.py +191 -0
  459. package/src/workflow/workflows/evolve/scripts/evolve_result.py +1503 -0
  460. package/src/workflow/workflows/evolve/scripts/requirements.txt +2 -0
  461. package/src/workflow/workflows/evolve/workflow.yaml +646 -0
  462. package/src/workflow/workflows/test-email-summary/workflow.yaml +1 -0
  463. package/src/workflow/workflows/vuln-discovery/README.md +54 -0
  464. package/src/workflow/workflows/vuln-discovery/skills/harness-design-fuzzing/SKILL.md +6 -1
  465. package/src/workflow/workflows/vuln-discovery/skills/memory-safety-c-cpp/SKILL.md +1 -0
  466. package/src/workflow/workflows/vuln-discovery/skills/vulnerability-triage/SKILL.md +4 -0
  467. package/src/workflow/workflows/vuln-discovery/workflow.yaml +13 -8
  468. package/dist/mux/pty-bridge.js.map +0 -1
  469. package/dist/mux/trusted-input.js.map +0 -1
  470. package/dist/web-ui-static/assets/index-BFO5z1js.js +0 -76
  471. package/dist/web-ui-static/assets/index-CCUwrkIL.css +0 -1
  472. package/packages/web-ui/README.md +0 -113
@@ -11,11 +11,26 @@
11
11
  * 1. Code Mode instructions (from session/prompts.ts) for tool discovery
12
12
  * 2. Docker environment context explaining workspace, host access, and policy
13
13
  */
14
+ import { OPENROUTER_BASE_URL, OPENROUTER_HOST } from '../../config/user-config.js';
14
15
  import { parseModelId } from '../../config/model-provider.js';
16
+ import { makeOpenRouterProviderForProfile, openRouterCredential, resolveMappedModel } from '../openrouter.js';
15
17
  import { anthropicProvider, claudePlatformProvider, anthropicOAuthProvider, claudePlatformOAuthProvider, } from '../provider-config.js';
16
18
  import { buildSystemPrompt } from '../../session/prompts.js';
17
19
  import { buildResizePtyScript, buildCheckPtySizeScript, buildNetworkSection, buildPolicySection, buildAttributionSection, } from './shared-scripts.js';
18
20
  const CLAUDE_CODE_IMAGE = 'ironcurtain-claude-code:latest';
21
+ /**
22
+ * Claude Code streaming-watchdog tuning vars forwarded from the host env into
23
+ * the container when set (see `buildEnv`). Curated allowlist — these govern
24
+ * the idle-stream abort ("Response stalled mid-stream", issue #367) and let it
25
+ * be exercised against the MITM stream-delay knob without rebuilding the image.
26
+ */
27
+ const WATCHDOG_ENV_PASSTHROUGH = [
28
+ 'CLAUDE_STREAM_IDLE_TIMEOUT_MS',
29
+ 'CLAUDE_ENABLE_STREAM_WATCHDOG',
30
+ 'CLAUDE_ENABLE_BYTE_WATCHDOG',
31
+ 'API_FORCE_IDLE_TIMEOUT',
32
+ 'API_TIMEOUT_MS',
33
+ ];
19
34
  /**
20
35
  * Container path used as the parent for Claude Code's skill discovery.
21
36
  * Claude Code's `--add-dir <path>` flag scans `<path>/.claude/skills/`,
@@ -84,6 +99,10 @@ export function createClaudeCodeAdapter(userConfig) {
84
99
  async getImage() {
85
100
  return CLAUDE_CODE_IMAGE;
86
101
  },
102
+ // Claude Code is installed unpinned in the image; log the resolved version
103
+ // at infra prep so a silent minor bump (which can change subagent semantics
104
+ // — issue #367) is visible.
105
+ versionProbe: ['claude', '--version'],
87
106
  // Generates MCP config file passed via --mcp-config on the command line.
88
107
  // socketPath is either a UDS path or a TCP host:port address.
89
108
  generateMcpConfig(socketPath) {
@@ -193,21 +212,103 @@ exit $STATUS
193
212
  const dockerPrompt = buildDockerEnvironmentPrompt(context);
194
213
  return `${codeModePrompt}\n${dockerPrompt}`;
195
214
  },
196
- getProviders(authKind) {
215
+ getProviders(config, authKind) {
216
+ const profile = config.activeProviderProfile;
217
+ if (profile?.type === 'openrouter') {
218
+ // OpenRouter routing: the single bearer-auth provider replaces both
219
+ // the Anthropic API and telemetry providers (and the OAuth pair). No
220
+ // api.anthropic.com host is allowlisted (decision B); Claude Code's
221
+ // telemetry calls are simply blocked at CONNECT.
222
+ return [makeOpenRouterProviderForProfile('messages', profile, 'claude-code')];
223
+ }
197
224
  if (authKind === 'oauth') {
198
225
  return [anthropicOAuthProvider, claudePlatformOAuthProvider];
199
226
  }
200
227
  return [anthropicProvider, claudePlatformProvider];
201
228
  },
229
+ detectCredential(config) {
230
+ // B2a/B2b: an OpenRouter-only user has no Anthropic OAuth/API key, so the
231
+ // generic detectAuthMethod() would throw. openRouterCredential reports an
232
+ // api-key AuthMethod for a keyed OpenRouter profile (authKind ⇒ 'apikey'),
233
+ // { kind: 'none' } for an empty-key profile (feeds m5), and `undefined`
234
+ // for a native profile — DEFERRING to detectAuthMethod() and preserving
235
+ // today's OAuth+API-key detection byte-for-byte.
236
+ return openRouterCredential(config);
237
+ },
202
238
  buildEnv(config, fakeKeys) {
203
239
  const env = {
204
240
  CLAUDE_CODE_DISABLE_UPDATE_CHECK: '1',
205
241
  // Node.js does not use the system CA store -- must set this explicitly
206
242
  NODE_EXTRA_CA_CERTS: '/usr/local/share/ca-certificates/ironcurtain-ca.crt',
243
+ // Force subagents (Agent/Task tool) and `run_in_background` to run in the
244
+ // FOREGROUND (synchronously), disabling auto-backgrounding. As of Claude
245
+ // Code v2.1.198 subagents run in the *background* by default: the tool
246
+ // returns immediately and the parent is "notified automatically when it
247
+ // completes" via a persistent supervisor that re-fires the session. We
248
+ // invoke `claude -p` as a one-shot subprocess with no such supervisor, so
249
+ // when a workflow agent (e.g. vuln-discovery `analyze`) fans out to
250
+ // parallel subagents, the turn never receives their completions and stalls
251
+ // ("Response stalled mid-stream" / no `agent_status` block). This env var
252
+ // restores the pre-2.1.198 synchronous behavior, which the FSM's
253
+ // one-turn=one-result model requires. See docs/en/env-vars.
254
+ CLAUDE_CODE_DISABLE_BACKGROUND_TASKS: '1',
255
+ // Disable the streaming idle watchdog (on by default since Claude
256
+ // Code v2.1.196). Behind the MITM proxy, long tool-use turns and
257
+ // SSE re-buffering trip the watchdog's idle threshold, which
258
+ // aborts the request with "API Error: Response stalled
259
+ // mid-stream" — the actual root cause of issue #367 (PR #372's
260
+ // background-task fix alone did not resolve it). Turning the
261
+ // watchdog off restores the pre-2.1.196 behavior; the workflow
262
+ // orchestrator already enforces its own wall-clock/step budgets.
263
+ CLAUDE_ENABLE_STREAM_WATCHDOG: '0',
207
264
  };
265
+ // DEBUG / operability (issue #367 watchdog harness): forward a curated
266
+ // allowlist of Claude Code streaming-watchdog tuning vars from the host
267
+ // env into the container when set. Lets the streaming idle watchdog be
268
+ // exercised against the MITM stream-delay knob (see stream-delay.ts)
269
+ // without rebuilding the image. No-op unless the host sets them.
270
+ for (const key of WATCHDOG_ENV_PASSTHROUGH) {
271
+ const value = process.env[key];
272
+ if (value !== undefined)
273
+ env[key] = value;
274
+ }
208
275
  if (modelId) {
209
276
  env.IRONCURTAIN_MODEL = modelId;
210
277
  }
278
+ const profile = config.activeProviderProfile;
279
+ if (profile?.type === 'openrouter') {
280
+ // B2c: OpenRouter mode auth-var exclusivity. Claude Code sends its
281
+ // credential as `Authorization: Bearer` ONLY when it comes from
282
+ // ANTHROPIC_AUTH_TOKEN (not ANTHROPIC_API_KEY, which is sent as
283
+ // x-api-key). We therefore inject the sentinel via ANTHROPIC_AUTH_TOKEN
284
+ // and set NEITHER CLAUDE_CODE_OAUTH_TOKEN NOR IRONCURTAIN_API_KEY — even
285
+ // when host OAuth creds exist (OpenRouter overrides OAuth detection).
286
+ const fakeKey = fakeKeys.get(OPENROUTER_HOST);
287
+ if (!fakeKey) {
288
+ throw new Error(`No fake key generated for ${OPENROUTER_HOST} — cannot configure Claude Code OpenRouter authentication`);
289
+ }
290
+ env.ANTHROPIC_BASE_URL = OPENROUTER_BASE_URL;
291
+ env.ANTHROPIC_AUTH_TOKEN = fakeKey;
292
+ // Suppress Anthropic-only pre-release beta fields (e.g. context_management)
293
+ // that non-Anthropic upstreams reject (§4.3 belt; the MITM strips too).
294
+ env.CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS = '1';
295
+ // m2: per-tier model hints for the agent's own context budgeting /
296
+ // [1m] handling. The MITM does the authoritative remap; these are hints
297
+ // only. Each resolves as perAgent['claude-code'] ?? glob-map(probe) ??
298
+ // omit (the DEFAULT_MODEL_MAP *sonnet*/*opus*/*haiku* globs match these
299
+ // probe strings).
300
+ const perAgent = profile.perAgent['claude-code'];
301
+ const sonnet = perAgent ?? resolveMappedModel('claude-sonnet', profile.modelMap);
302
+ const opus = perAgent ?? resolveMappedModel('claude-opus', profile.modelMap);
303
+ const haiku = perAgent ?? resolveMappedModel('claude-haiku', profile.modelMap);
304
+ if (sonnet !== undefined)
305
+ env.ANTHROPIC_DEFAULT_SONNET_MODEL = sonnet;
306
+ if (opus !== undefined)
307
+ env.ANTHROPIC_DEFAULT_OPUS_MODEL = opus;
308
+ if (haiku !== undefined)
309
+ env.ANTHROPIC_DEFAULT_HAIKU_MODEL = haiku;
310
+ return env;
311
+ }
211
312
  const fakeKey = fakeKeys.get('api.anthropic.com');
212
313
  if (!fakeKey) {
213
314
  throw new Error('No fake key generated for api.anthropic.com — cannot configure Claude Code authentication');
@@ -264,6 +365,13 @@ exit $STATUS
264
365
  const hardFailure = stdout.trim().length === 0;
265
366
  return { text: `Agent exited with code ${exitCode}.\n\nOutput:\n${stdout}`, hardFailure };
266
367
  }
368
+ if (stdout.trim().length === 0) {
369
+ return {
370
+ text: 'Claude Code exited without producing output. Check the session log for startup failures ' +
371
+ '(for example, exhausted Docker storage).',
372
+ hardFailure: true,
373
+ };
374
+ }
267
375
  return parseClaudeCodeJson(stdout);
268
376
  },
269
377
  buildPtyCommand(_systemPrompt, ptySockPath, ptyPort) {
@@ -1 +1 @@
1
- {"version":3,"file":"claude-code.js","sourceRoot":"","sources":["../../../src/docker/adapters/claude-code.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"claude-code.js","sourceRoot":"","sources":["../../../src/docker/adapters/claude-code.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Codex CLI adapter for Docker Agent Mode.
3
+ *
4
+ * Runs OpenAI Codex CLI non-interactively through the same container,
5
+ * MCP proxy, and MITM fake-token path as other Docker agents. The adapter
6
+ * uses Codex's ChatGPT OAuth/access-token flow, not OPENAI_API_KEY.
7
+ */
8
+ import type { AgentAdapter } from '../agent-adapter.js';
9
+ import type { ResolvedUserConfig } from '../../config/user-config.js';
10
+ /**
11
+ * @param userConfig - Resolved user config, accepted for factory-signature
12
+ * symmetry with the other adapters (m3). Codex reads no non-profile field
13
+ * from it today; the ACTIVE PROFILE is read from the per-session stamped
14
+ * `config.activeProviderProfile` at method-call time, never captured here
15
+ * (§9 F1 — a factory-captured profile would leak across the process-global
16
+ * registry's cached instance).
17
+ */
18
+ export declare function createCodexAdapter(userConfig?: ResolvedUserConfig): AgentAdapter;
@@ -0,0 +1,376 @@
1
+ /**
2
+ * Codex CLI adapter for Docker Agent Mode.
3
+ *
4
+ * Runs OpenAI Codex CLI non-interactively through the same container,
5
+ * MCP proxy, and MITM fake-token path as other Docker agents. The adapter
6
+ * uses Codex's ChatGPT OAuth/access-token flow, not OPENAI_API_KEY.
7
+ */
8
+ import { DEFAULT_GLM_SLUG, OPENROUTER_API_V1, OPENROUTER_HOST } from '../../config/user-config.js';
9
+ import { buildSystemPrompt } from '../../session/prompts.js';
10
+ import { codexAuthProvider, codexChatGptProvider } from '../provider-config.js';
11
+ import { makeOpenRouterProviderForProfile, openRouterCredential, resolveMappedModel } from '../openrouter.js';
12
+ import { loadCodexOAuthCredentials } from '../oauth-credentials.js';
13
+ import { parseModelId } from '../../config/model-provider.js';
14
+ import { buildAttributionSection, buildCheckPtySizeScript, buildNetworkSection, buildPolicySection, buildResizePtyScript, } from './shared-scripts.js';
15
+ const CODEX_IMAGE = 'ironcurtain-codex:latest';
16
+ const CODEX_FAKE_ID_TOKEN = 'eyJhbGciOiJub25lIiwidHlwIjoiSldUIn0.' +
17
+ 'eyJlbWFpbCI6Imlyb25jdXJ0YWluQGV4YW1wbGUuaW52YWxpZCIsImh0dHBzOi8vYXBpLm9wZW5haS5jb20vYXV0aCI6eyJjaGF0Z3B0X3BsYW5fdHlwZSI6InBybyIsImNoYXRncHRfdXNlcl9pZCI6Imlyb25jdXJ0YWluLXVzZXIiLCJjaGF0Z3B0X2FjY291bnRfaWQiOiJpcm9uY3VydGFpbi1hY2NvdW50IiwiY2hhdGdwdF9hY2NvdW50X2lzX2ZlZHJhbXAiOmZhbHNlfX0.' +
18
+ 'c2ln';
19
+ function tomlString(value) {
20
+ return JSON.stringify(value);
21
+ }
22
+ function buildCodexDockerEnvironmentPrompt(context) {
23
+ return `## Docker Environment
24
+
25
+ ### Workspace (\`${context.workspaceDir}\`)
26
+ This is your workspace inside the container. You have full access here.
27
+ For local file operations inside ${context.workspaceDir}, use your built-in shell tools.
28
+
29
+ ### External Operations (MCP tools)
30
+ Use the IronCurtain MCP server for operations that require external access:
31
+ - Network requests (HTTP fetches, web searches, API calls)
32
+ - Git remote operations (clone, push, pull, fetch)
33
+ - Reading files outside ${context.workspaceDir}
34
+
35
+ After cloning a repo or writing files via MCP tools, use your built-in
36
+ tools for subsequent file operations.
37
+
38
+ ${buildNetworkSection('the IronCurtain MCP tools')}
39
+ ${buildPolicySection('MCP tool call')}
40
+ ${buildAttributionSection()}`;
41
+ }
42
+ function buildStartScript() {
43
+ return `#!/bin/bash
44
+ if [ -n "$IRONCURTAIN_INITIAL_COLS" ] && [ -n "$IRONCURTAIN_INITIAL_ROWS" ]; then
45
+ stty cols "$IRONCURTAIN_INITIAL_COLS" rows "$IRONCURTAIN_INITIAL_ROWS" 2>/dev/null
46
+ fi
47
+ cd /workspace
48
+
49
+ MODEL_ARGS=()
50
+ if [ -n "$IRONCURTAIN_MODEL" ]; then
51
+ MODEL_ARGS=(--model "$IRONCURTAIN_MODEL")
52
+ fi
53
+
54
+ exec codex --ask-for-approval never --sandbox danger-full-access "\${MODEL_ARGS[@]}" --cd /workspace
55
+ `;
56
+ }
57
+ /**
58
+ * Codex slug under an openrouter-type profile (D2). Codex has NO native model
59
+ * field in IronCurtain config, so the slug is `perAgent.codex`, else the
60
+ * `DEFAULT_GLM_SLUG` run through the profile's `modelMap` — never an unmapped
61
+ * passthrough (a non-matching map falls back to `DEFAULT_GLM_SLUG`).
62
+ *
63
+ * Applying the map here is what keeps `config.toml`'s `model` consistent with
64
+ * the model the MITM rewriter actually serves: the rewriter (D1) re-globs
65
+ * whatever Codex sends, so without the same map the container would budget its
66
+ * context window for one model while being routed to another.
67
+ */
68
+ function codexSlugFor(profile) {
69
+ return profile.perAgent.codex ?? resolveMappedModel(DEFAULT_GLM_SLUG, profile.modelMap) ?? DEFAULT_GLM_SLUG;
70
+ }
71
+ /**
72
+ * Builds the Codex `config.toml` string. Under an openrouter-type profile the
73
+ * two root keys (`model`, `model_provider`) are PREPENDED before the first
74
+ * `[table]` (TOML is order-sensitive — root keys must precede any table header,
75
+ * §4.6/B1), and the `[model_providers.openrouter]` table is APPENDED.
76
+ */
77
+ function buildCodexToml(connectTarget, profile) {
78
+ const rootKeys = ['cli_auth_credentials_store = "file"', 'project_doc_fallback_filenames = ["CLAUDE.md"]'];
79
+ const openrouterRootKeys = profile
80
+ ? [`model = ${tomlString(codexSlugFor(profile))}`, 'model_provider = "openrouter"']
81
+ : [];
82
+ const openrouterProviderTable = profile
83
+ ? [
84
+ '',
85
+ '[model_providers.openrouter]',
86
+ `base_url = ${tomlString(OPENROUTER_API_V1)}`,
87
+ 'env_key = "OPENROUTER_API_KEY"',
88
+ 'wire_api = "responses"',
89
+ ]
90
+ : [];
91
+ return [
92
+ ...openrouterRootKeys,
93
+ ...rootKeys,
94
+ '',
95
+ '[projects."/workspace"]',
96
+ 'trust_level = "trusted"',
97
+ ...openrouterProviderTable,
98
+ '',
99
+ '[mcp_servers.ironcurtain]',
100
+ 'command = "socat"',
101
+ `args = ["STDIO", ${tomlString(connectTarget)}]`,
102
+ 'startup_timeout_sec = 20',
103
+ 'tool_timeout_sec = 600',
104
+ 'default_tools_approval_mode = "auto"',
105
+ '',
106
+ ].join('\n');
107
+ }
108
+ /**
109
+ * @param userConfig - Resolved user config, accepted for factory-signature
110
+ * symmetry with the other adapters (m3). Codex reads no non-profile field
111
+ * from it today; the ACTIVE PROFILE is read from the per-session stamped
112
+ * `config.activeProviderProfile` at method-call time, never captured here
113
+ * (§9 F1 — a factory-captured profile would leak across the process-global
114
+ * registry's cached instance).
115
+ */
116
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars -- userConfig kept for factory-signature symmetry (m3)
117
+ export function createCodexAdapter(userConfig) {
118
+ return {
119
+ id: 'codex',
120
+ displayName: 'Codex CLI',
121
+ credentialHelpText: 'No Codex OAuth credentials found. Run `codex login` on the host; OPENAI_API_KEY is not required.',
122
+ // eslint-disable-next-line @typescript-eslint/require-await -- interface requires Promise return
123
+ async getImage() {
124
+ return CODEX_IMAGE;
125
+ },
126
+ generateMcpConfig(socketPath, config) {
127
+ const isTcp = socketPath.includes(':');
128
+ const connectTarget = isTcp ? `TCP:${socketPath}` : `UNIX-CONNECT:${socketPath}`;
129
+ const profile = config.activeProviderProfile;
130
+ const openrouterProfile = profile?.type === 'openrouter' ? profile : undefined;
131
+ const toml = buildCodexToml(connectTarget, openrouterProfile);
132
+ return [{ path: 'codex-config.toml', content: toml }];
133
+ },
134
+ generateOrientationFiles() {
135
+ return [
136
+ { path: 'start-codex.sh', content: buildStartScript(), mode: 0o755 },
137
+ { path: 'resize-pty.sh', content: buildResizePtyScript('codex'), mode: 0o755 },
138
+ { path: 'check-pty-size.sh', content: buildCheckPtySizeScript('codex'), mode: 0o755 },
139
+ ];
140
+ },
141
+ buildCommand(message, systemPrompt, options) {
142
+ const prompt = `${systemPrompt}\n\n---\n\nUser request:\n${message}`;
143
+ const cmd = ['codex', '--ask-for-approval', 'never', '--sandbox', 'danger-full-access'];
144
+ if (options.modelOverride) {
145
+ cmd.push('--model', parseModelId(options.modelOverride).modelId);
146
+ }
147
+ cmd.push('exec', '--json', '--skip-git-repo-check', '--cd', '/workspace', prompt);
148
+ return cmd;
149
+ },
150
+ buildSystemPrompt(context) {
151
+ const codeModePrompt = buildSystemPrompt(context.serverListings, context.hostSandboxDir);
152
+ const dockerPrompt = buildCodexDockerEnvironmentPrompt(context);
153
+ return `${codeModePrompt}\n${dockerPrompt}`;
154
+ },
155
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars -- authKind kept for adapter interface symmetry
156
+ getProviders(config, _authKind) {
157
+ const profile = config.activeProviderProfile;
158
+ if (profile?.type === 'openrouter') {
159
+ // Codex speaks the Responses wire format; the bearer OpenRouter provider
160
+ // replaces the ChatGPT OAuth providers entirely.
161
+ return [makeOpenRouterProviderForProfile('responses', profile, 'codex')];
162
+ }
163
+ return [codexChatGptProvider, codexAuthProvider];
164
+ },
165
+ buildEnv(config, fakeKeys) {
166
+ const profile = config.activeProviderProfile;
167
+ if (profile?.type === 'openrouter') {
168
+ // OpenRouter mode: Codex reads OPENROUTER_API_KEY (referenced by the
169
+ // generated config.toml's env_key). Drop the Codex OAuth token env
170
+ // entirely — the ChatGPT auth flow is not used here.
171
+ const fakeKey = fakeKeys.get(OPENROUTER_HOST);
172
+ if (!fakeKey) {
173
+ throw new Error(`No fake key generated for ${OPENROUTER_HOST} — cannot configure Codex OpenRouter authentication`);
174
+ }
175
+ return {
176
+ CODEX_HOME: '/home/codespace/.codex',
177
+ OPENROUTER_API_KEY: fakeKey,
178
+ CODEX_CA_CERTIFICATE: '/usr/local/share/ca-certificates/ironcurtain-ca.crt',
179
+ SSL_CERT_FILE: '/etc/ssl/certs/ca-certificates.crt',
180
+ RUST_LOG: 'error',
181
+ };
182
+ }
183
+ const fakeToken = fakeKeys.get('chatgpt.com');
184
+ if (!fakeToken) {
185
+ throw new Error('No fake token generated for chatgpt.com — cannot configure Codex authentication');
186
+ }
187
+ return {
188
+ CODEX_HOME: '/home/codespace/.codex',
189
+ IRONCURTAIN_CODEX_ACCESS_TOKEN: fakeToken,
190
+ IRONCURTAIN_CODEX_ID_TOKEN: CODEX_FAKE_ID_TOKEN,
191
+ IRONCURTAIN_CODEX_ACCOUNT_ID: 'ironcurtain-account',
192
+ CODEX_CA_CERTIFICATE: '/usr/local/share/ca-certificates/ironcurtain-ca.crt',
193
+ SSL_CERT_FILE: '/etc/ssl/certs/ca-certificates.crt',
194
+ RUST_LOG: 'error',
195
+ };
196
+ },
197
+ /**
198
+ * NOTE on quota / transient-failure handling and the assumed Codex
199
+ * envelope schema.
200
+ *
201
+ * Codex `exec --json` emits a JSONL event stream, one JSON object per
202
+ * line. The happy path carries `item.completed` events whose `item.type`
203
+ * is `agent_message` (the model's text). We CANNOT confirm Codex's exact
204
+ * failure-event schema from the repo, so detection is intentionally
205
+ * conservative and generic (see `scanCodexEvents`):
206
+ *
207
+ * - A top-level event is treated as a failure when its `type` ends in
208
+ * `.failed` (e.g. `turn.failed`) or equals `error`, OR when its
209
+ * `item.type` is `error`. We pull a human-readable message from the
210
+ * event's / item's `error.message`, `message`, or `text` field.
211
+ * - From that failure message (plus the non-zero-exit stderr/stdout on
212
+ * the error path), `withFailureSignal` does narrow, string-based
213
+ * matching: a rate-limit / usage-limit / quota / HTTP-429 hit sets
214
+ * `quotaExhausted` (the orchestrator pauses-and-resumes instead of
215
+ * burning the run); anything else error-shaped sets a transient
216
+ * `degenerate_response` failure.
217
+ *
218
+ * Detection is deliberately narrow so it cannot misfire on normal
219
+ * output: the happy-path return value below is byte-identical to the
220
+ * previous implementation (last `agent_message`, else raw stdout). See
221
+ * the Claude Code adapter (`adapters/claude-code.ts`) for the canonical
222
+ * contract and `AgentResponse.quotaExhausted` / `transientFailure` in
223
+ * `../agent-adapter.ts` for the interface requirement.
224
+ */
225
+ extractResponse(exitCode, stdout, stderr) {
226
+ const clean = stdout.trim();
227
+ const scan = scanCodexEvents(clean);
228
+ if (exitCode !== 0) {
229
+ const errorOutput = [clean, stderr?.trim()].filter((part) => part && part.length > 0).join('\n\n');
230
+ const baseText = `Codex exited with code ${exitCode}.\n\nOutput:\n${errorOutput}`;
231
+ // Combine any in-band failure message with the raw error output so a
232
+ // 429 surfaced either in-band OR only in stderr/stdout is detected.
233
+ const probe = [scan.errorMessage, clean, stderr].filter((p) => p && p.length > 0).join('\n');
234
+ return withFailureSignal({ text: baseText }, probe);
235
+ }
236
+ // Exit 0: prefer the model's final message. If none is present but the
237
+ // stream carried a failure event, describe the failure (and attach the
238
+ // structured signal) instead of dumping a raw JSONL line.
239
+ if (scan.finalMessage) {
240
+ return { text: scan.finalMessage };
241
+ }
242
+ if (scan.errorMessage) {
243
+ return withFailureSignal({ text: `Codex reported an error:\n\n${scan.errorMessage}` }, scan.errorMessage);
244
+ }
245
+ return { text: clean };
246
+ },
247
+ buildPtyCommand(_systemPrompt, ptySockPath, ptyPort) {
248
+ const listenArg = ptySockPath ? `UNIX-LISTEN:${ptySockPath},fork` : `TCP-LISTEN:${ptyPort},reuseaddr`;
249
+ return ['socat', listenArg, 'EXEC:/etc/ironcurtain/start-codex.sh,pty,setsid,ctty,stderr,rawer'];
250
+ },
251
+ detectCredential(config) {
252
+ // OpenRouter mode: credential presence is the profile's non-empty apiKey
253
+ // (no `codex login` needed); empty ⇒ 'none' (feeds m5). Native ⇒ undefined,
254
+ // so fall through to Codex ChatGPT OAuth detection.
255
+ const openRouter = openRouterCredential(config);
256
+ if (openRouter)
257
+ return openRouter;
258
+ const credentials = loadCodexOAuthCredentials();
259
+ if (!credentials)
260
+ return { kind: 'none' };
261
+ return {
262
+ kind: 'oauth',
263
+ credentials: {
264
+ accessToken: credentials.accessToken,
265
+ refreshToken: credentials.refreshToken,
266
+ expiresAt: credentials.expiresAt,
267
+ },
268
+ source: 'file',
269
+ };
270
+ },
271
+ getConversationStateConfig() {
272
+ return {
273
+ hostDirName: 'codex-state',
274
+ containerMountPath: '/home/codespace/.codex/',
275
+ seed: [
276
+ { path: 'sessions/', content: '' },
277
+ { path: 'logs/', content: '' },
278
+ ],
279
+ resumeFlags: [],
280
+ };
281
+ },
282
+ };
283
+ }
284
+ /**
285
+ * Single-pass scan over the Codex `exec --json` JSONL stream.
286
+ *
287
+ * Collects the last `agent_message` text and the first detected
288
+ * failure/error message. Malformed/truncated lines are skipped (the JSONL
289
+ * stream can be truncated when a process is killed), so a valid
290
+ * `agent_message` on a later line is still recovered.
291
+ */
292
+ function scanCodexEvents(stdout) {
293
+ if (stdout.length === 0)
294
+ return { finalMessage: null, errorMessage: null };
295
+ let lastAgentMessage = null;
296
+ let errorMessage = null;
297
+ for (const line of stdout.split(/\r?\n/)) {
298
+ if (line.trim().length === 0)
299
+ continue;
300
+ let parsed;
301
+ try {
302
+ parsed = JSON.parse(line);
303
+ }
304
+ catch {
305
+ continue;
306
+ }
307
+ if (!parsed || typeof parsed !== 'object')
308
+ continue;
309
+ const event = parsed;
310
+ const item = event.item && typeof event.item === 'object' ? event.item : undefined;
311
+ if (item && item.type === 'agent_message' && typeof item.text === 'string') {
312
+ lastAgentMessage = item.text;
313
+ }
314
+ if (errorMessage === null) {
315
+ errorMessage = extractCodexErrorMessage(event, item);
316
+ }
317
+ }
318
+ return { finalMessage: lastAgentMessage?.trim() || null, errorMessage };
319
+ }
320
+ /**
321
+ * Recognizes a Codex failure/error envelope generically (the exact schema
322
+ * is not confirmable from the repo): a top-level `type` ending in `.failed`
323
+ * or equal to `error`, or an item whose `type` is `error`. Returns a
324
+ * best-effort human-readable message, or null when the event is not a
325
+ * failure shape.
326
+ */
327
+ function extractCodexErrorMessage(event, item) {
328
+ const eventType = typeof event.type === 'string' ? event.type : undefined;
329
+ const isEventFailure = eventType !== undefined && (eventType.endsWith('.failed') || eventType === 'error');
330
+ const isItemFailure = item !== undefined && item.type === 'error';
331
+ if (!isEventFailure && !isItemFailure)
332
+ return null;
333
+ return pickErrorMessage(event) ?? (item ? pickErrorMessage(item) : undefined) ?? eventType ?? 'unknown Codex error';
334
+ }
335
+ /** Pulls a message string from an `error.message` / `message` / `text` field. */
336
+ function pickErrorMessage(obj) {
337
+ const nested = obj.error;
338
+ if (nested && typeof nested === 'object') {
339
+ const msg = nested.message;
340
+ if (typeof msg === 'string' && msg.length > 0)
341
+ return msg;
342
+ }
343
+ if (typeof obj.message === 'string' && obj.message.length > 0)
344
+ return obj.message;
345
+ if (typeof obj.text === 'string' && obj.text.length > 0)
346
+ return obj.text;
347
+ return undefined;
348
+ }
349
+ /** Narrow, case-insensitive substring matches for upstream quota/rate-limit. */
350
+ const QUOTA_PROBE_PATTERNS = [
351
+ /\b429\b/,
352
+ /rate.?limit/i,
353
+ /usage.?limit/i,
354
+ /\bquota\b/i,
355
+ /too many requests/i,
356
+ ];
357
+ /**
358
+ * Best-effort classification of a Codex error string into a structured
359
+ * signal. Quota / rate-limit / 429 hits map to `quotaExhausted`; any other
360
+ * non-empty error string maps to a transient `degenerate_response`.
361
+ * Returns the response unchanged when `probe` is empty.
362
+ *
363
+ * Detection is intentionally string-based and narrow so it cannot misfire
364
+ * on normal model output (only reached when a failure event was detected or
365
+ * the process exited non-zero).
366
+ */
367
+ function withFailureSignal(response, probe) {
368
+ const trimmed = probe.trim();
369
+ if (trimmed.length === 0)
370
+ return response;
371
+ if (QUOTA_PROBE_PATTERNS.some((re) => re.test(trimmed))) {
372
+ return { ...response, quotaExhausted: { rawMessage: trimmed } };
373
+ }
374
+ return { ...response, transientFailure: { kind: 'degenerate_response', rawMessage: trimmed } };
375
+ }
376
+ //# sourceMappingURL=codex.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex.js","sourceRoot":"","sources":["../../../src/docker/adapters/codex.ts"],"names":[],"mappings":"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"}