@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
@@ -24,6 +24,8 @@ import { loadDefinition } from './definition-loader.js';
24
24
  import { getIronCurtainHome } from '../config/paths.js';
25
25
  import { loadConfig } from '../config/index.js';
26
26
  import { toHumanGateRequestDto, } from './types.js';
27
+ import { sweepContainerSnapshots } from './container-snapshots.js';
28
+ import * as logger from '../logger.js';
27
29
  /** Renders an unknown thrown value as a short human-readable string. */
28
30
  function describeError(err) {
29
31
  if (err instanceof Error)
@@ -39,9 +41,16 @@ export class WorkflowManager {
39
41
  orchestrator = null;
40
42
  eventBus;
41
43
  baseDirOverride;
44
+ captureTraces;
45
+ sessionFactoryOverride;
46
+ enableSnapshotGc;
47
+ snapshotGcTimer;
42
48
  constructor(options) {
43
49
  this.eventBus = options.eventBus;
44
50
  this.baseDirOverride = options.baseDirOverride;
51
+ this.captureTraces = options.captureTraces;
52
+ this.sessionFactoryOverride = options.sessionFactoryOverride;
53
+ this.enableSnapshotGc = options.enableSnapshotGc ?? false;
45
54
  }
46
55
  /** Lazily creates the orchestrator on first use. */
47
56
  getOrchestrator() {
@@ -50,8 +59,25 @@ export class WorkflowManager {
50
59
  }
51
60
  return this.orchestrator;
52
61
  }
62
+ /**
63
+ * Eagerly starts background maintenance (snapshot GC startup sweep +
64
+ * periodic timer) at daemon boot rather than lazily on the first workflow
65
+ * request. Without this, a long-lived daemon that never receives a workflow
66
+ * request would never reclaim aged or orphaned snapshot images. No-op unless
67
+ * snapshot GC is enabled for this manager.
68
+ */
69
+ startBackgroundTasks() {
70
+ if (this.enableSnapshotGc) {
71
+ // Forcing orchestrator creation runs startSnapshotGc (sweep + timer).
72
+ this.getOrchestrator();
73
+ }
74
+ }
53
75
  /** Clean shutdown of all workflows. */
54
76
  async shutdown() {
77
+ if (this.snapshotGcTimer !== undefined) {
78
+ clearInterval(this.snapshotGcTimer);
79
+ this.snapshotGcTimer = undefined;
80
+ }
55
81
  if (this.orchestrator) {
56
82
  await this.orchestrator.shutdownAll();
57
83
  this.orchestrator = null;
@@ -217,8 +243,11 @@ export class WorkflowManager {
217
243
  const baseDir = this.getBaseDir();
218
244
  const checkpointStore = new FileCheckpointStore(baseDir);
219
245
  this._checkpointStore = checkpointStore;
220
- const sessionFactory = createWorkflowSessionFactory();
246
+ const sessionFactory = this.sessionFactoryOverride ?? createWorkflowSessionFactory();
221
247
  const config = loadConfig();
248
+ if (this.enableSnapshotGc) {
249
+ this.startSnapshotGc(baseDir, checkpointStore, config.userConfig);
250
+ }
222
251
  const deps = {
223
252
  createSession: sessionFactory,
224
253
  createWorkflowTab: () => this.createNoOpTab(),
@@ -235,11 +264,33 @@ export class WorkflowManager {
235
264
  baseDir,
236
265
  checkpointStore,
237
266
  userConfig: config.userConfig,
267
+ // Forward the raw `--capture-traces` daemon flag; the infrastructure
268
+ // factory resolves it against userConfig (single resolution point).
269
+ captureTracesOverride: this.captureTraces,
238
270
  };
239
271
  const orchestrator = new WorkflowOrchestrator(deps);
240
272
  orchestrator.onEvent((event) => this.forwardLifecycleEvent(event));
241
273
  return orchestrator;
242
274
  }
275
+ startSnapshotGc(baseDir, checkpointStore, userConfig) {
276
+ if (this.snapshotGcTimer !== undefined)
277
+ return;
278
+ const runSweep = () => {
279
+ // The sweep absorbs the expected "Docker absent" case internally; a
280
+ // rejection here is genuinely unexpected, so surface it rather than
281
+ // letting GC die silently.
282
+ sweepContainerSnapshots({ baseDir, checkpointStore, userConfig }).catch((err) => {
283
+ logger.warn(`[workflow] snapshot GC sweep failed: ${err instanceof Error ? err.message : String(err)}`);
284
+ });
285
+ };
286
+ runSweep();
287
+ // Node stores a timer delay in a signed 32-bit int; a delay over ~24.8 days
288
+ // (2^31-1 ms) overflows and fires every 1ms. Clamp to the max safe delay.
289
+ const MAX_TIMER_DELAY_MS = 2_147_483_647;
290
+ const intervalMs = Math.min(MAX_TIMER_DELAY_MS, Math.max(1, userConfig.snapshot.sweepIntervalHours) * 60 * 60 * 1000);
291
+ this.snapshotGcTimer = setInterval(runSweep, intervalMs);
292
+ this.snapshotGcTimer.unref();
293
+ }
243
294
  createNoOpTab() {
244
295
  return {
245
296
  write() { },
@@ -1 +1 @@
1
- {"version":3,"file":"workflow-manager.js","sourceRoot":"","sources":["../../src/workflow/workflow-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workflow-manager.js","sourceRoot":"","sources":["../../src/workflow/workflow-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,50 @@
1
+ # Design & Code
2
+
3
+ A four-phase software workflow that takes a task from **plan → design → implement → review**, with human approval gates between the planning stages and an automated coder–critic loop at the end.
4
+
5
+ Run it from the web UI (**Start Workflow → `design-and-code`**) or the CLI:
6
+
7
+ ```bash
8
+ ironcurtain workflow start design-and-code "Add a rate limiter to the API gateway"
9
+ ```
10
+
11
+ ## What it does
12
+
13
+ The workflow drives a Docker-isolated `claude-code` agent through distinct roles, persisting its artifacts under `.workflow/` in the workspace and writing code directly at the workspace root.
14
+
15
+ | Phase | State | Role | Output |
16
+ |-------|-------|------|--------|
17
+ | 1 | `plan` | Project planner — breaks the task into ordered, numbered steps | `.workflow/plan/plan.md` |
18
+ | — | `plan_review` | **Human gate** — approve, request a revision, or abort | — |
19
+ | 2 | `design` | Architect — module structure, interfaces, typed signatures | `.workflow/spec/spec.md` |
20
+ | — | `design_review` | **Human gate** — approve, request a revision, or abort | — |
21
+ | 3 | `implement` | Engineer — writes the code and unit tests, runs them | `src/`, tests |
22
+ | 4 | `review` | Reviewer — checks correctness, edge cases, quality, coverage | `.workflow/reviews/review.md` |
23
+
24
+ ## Human gates
25
+
26
+ Two gates pause the run for your decision:
27
+
28
+ - **Plan review** — sign off on the approach before any design work.
29
+ - **Design review** — sign off on the interfaces and types before implementation.
30
+
31
+ At each gate the presented artifact (`plan` or `spec`) is shown for inspection. Choose **Approve** to advance, **Request Revision** to send the agent back with feedback, or **Abort** to stop.
32
+
33
+ ## The coder–critic loop
34
+
35
+ After implementation, the **reviewer** judges the code against the spec:
36
+
37
+ - **`approved`** → the workflow completes (`done`).
38
+ - **`rejected`** → control returns to `implement` with the review feedback, and the cycle repeats.
39
+
40
+ The loop is bounded by `maxRounds` (**3**). If the reviewer is still rejecting when the limit is reached, the workflow raises an **escalation gate** so a human can approve as-is, force another revision, or abort — it never loops forever.
41
+
42
+ ## At a glance
43
+
44
+ - **Mode:** Docker (`claude-code` agent, `--network=none`)
45
+ - **Persona:** `global` for every agent state
46
+ - **Max rounds:** 3 (implement ⇄ review)
47
+ - **Artifacts:** `plan`, `spec`, `reviews` — all under `.workflow/`
48
+ - **Terminal states:** `done` (success) · `aborted` (stopped at a gate)
49
+
50
+ > Tip: write a detailed task description. The planner only sees the task text and whatever already exists in the workspace, so specifics about scope, constraints, and acceptance criteria pay off downstream.
@@ -0,0 +1,29 @@
1
+ const fs = require('fs');
2
+ const Ajv = require('ajv');
3
+
4
+ const evalPath = '/workspace/.workflow/eval.json';
5
+ const reportPath = '/workspace/.workflow/report.md';
6
+ const data = JSON.parse(fs.readFileSync(evalPath, 'utf8'));
7
+
8
+ const ajv = new Ajv();
9
+ const validate = ajv.compile({
10
+ type: 'object',
11
+ required: ['score', 'passed', 'cases', 'dependency'],
12
+ properties: {
13
+ score: { type: 'number' },
14
+ passed: { type: 'boolean' },
15
+ cases: { type: 'number' },
16
+ dependency: { const: 'numpy' },
17
+ },
18
+ });
19
+
20
+ if (!validate(data)) {
21
+ console.error(JSON.stringify(validate.errors));
22
+ process.exit(1);
23
+ }
24
+
25
+ fs.writeFileSync(
26
+ reportPath,
27
+ `# Eval report\n\nscore: ${data.score}\npassed: ${data.passed}\ncases: ${data.cases}\nnode_dependency: ajv\n`,
28
+ );
29
+ console.log('1 test pass');
@@ -0,0 +1,5 @@
1
+ {
2
+ "dependencies": {
3
+ "ajv": "^8.17.1"
4
+ }
5
+ }
@@ -0,0 +1,41 @@
1
+ import importlib.util
2
+ import json
3
+ import os
4
+ from pathlib import Path
5
+
6
+ import numpy as np
7
+
8
+
9
+ workspace = Path("/workspace")
10
+ candidate_path = workspace / "candidate.py"
11
+ workflow_dir = workspace / ".workflow"
12
+ workflow_dir.mkdir(exist_ok=True)
13
+
14
+ if not candidate_path.exists():
15
+ raise SystemExit("missing /workspace/candidate.py")
16
+
17
+ spec = importlib.util.spec_from_file_location("candidate", candidate_path)
18
+ if spec is None or spec.loader is None:
19
+ raise SystemExit("failed to load candidate.py")
20
+ module = importlib.util.module_from_spec(spec)
21
+ spec.loader.exec_module(module)
22
+
23
+ cases = [[], [1, 2, 3], [-5, 10, 12]]
24
+ expected = [0, 6, 17]
25
+ actual = [module.solve(xs) for xs in cases]
26
+ passed = bool(np.array_equal(np.array(actual), np.array(expected)))
27
+ score = 1.0 if passed else 0.0
28
+
29
+ result = {
30
+ "score": score,
31
+ "passed": passed,
32
+ "cases": len(cases),
33
+ "actual": actual,
34
+ "expected": expected,
35
+ "dependency": "numpy",
36
+ }
37
+
38
+ (workflow_dir / "eval.json").write_text(json.dumps(result, indent=2) + "\n")
39
+ print(f"{len(cases)} tests pass" if passed else "evaluation failed")
40
+ if not passed:
41
+ raise SystemExit(1)
@@ -0,0 +1,57 @@
1
+ name: deterministic-eval-smoke
2
+ description: 'TESTING ONLY - minimal agent plus deterministic in-container helper execution.'
3
+ hidden: true
4
+ initial: author
5
+
6
+ settings:
7
+ mode: docker
8
+ dockerAgent: claude-code
9
+ sharedContainer: true
10
+ model: anthropic:claude-haiku-4-5
11
+
12
+ states:
13
+ author:
14
+ type: agent
15
+ description: Write the candidate program that deterministic helpers will evaluate.
16
+ persona: global
17
+ prompt: |
18
+ Create exactly one file at /workspace/candidate.py. It must contain:
19
+
20
+ def solve(xs):
21
+ return sum(xs)
22
+
23
+ Do not create additional files. Finish with the required agent_status block.
24
+ inputs: []
25
+ outputs: []
26
+ transitions:
27
+ - to: evaluate
28
+
29
+ evaluate:
30
+ type: deterministic
31
+ description: Run the packaged Python evaluator inside the same shared container.
32
+ container: true
33
+ run:
34
+ - ['/opt/workflow-venv/bin/python', '/workflow-scripts/run_eval.py']
35
+ transitions:
36
+ - to: report
37
+ guard: isPassed
38
+ - to: failed
39
+
40
+ report:
41
+ type: deterministic
42
+ description: Format the evaluation result with the packaged Node helper.
43
+ container: true
44
+ run:
45
+ - ['node', '/workflow-scripts/format_report.js']
46
+ transitions:
47
+ - to: done
48
+ guard: isPassed
49
+ - to: failed
50
+
51
+ done:
52
+ type: terminal
53
+ description: Candidate evaluated and report written.
54
+
55
+ failed:
56
+ type: terminal
57
+ description: Evaluation failed.
@@ -0,0 +1,18 @@
1
+ import json
2
+ import pathlib
3
+
4
+ ws = pathlib.Path("/workspace")
5
+ out = ws / ".workflow"
6
+ out.mkdir(exist_ok=True)
7
+ task = (ws / "task.txt").read_text().strip().lower() if (ws / "task.txt").exists() else ""
8
+
9
+ # An "error" task exercises the missing-file -> result_file_error path: the helper
10
+ # exits 0 but writes no result file, so the orchestrator must route to error_terminal.
11
+ if "error" not in task:
12
+ verdict = "block" if "block" in task else "pass"
13
+ (out / "result.json").write_text(
14
+ json.dumps({"verdict": verdict, "payload": {"task": task}, "passed": True}) + "\n"
15
+ )
16
+
17
+ # stdout is verdict-blind regardless of branch — routing can only come from the file.
18
+ print("classified")
@@ -0,0 +1,51 @@
1
+ name: deterministic-verdict-smoke
2
+ description: 'TESTING ONLY - deterministic state routes on a helper-written verdict file.'
3
+ hidden: true
4
+ initial: author
5
+
6
+ settings:
7
+ mode: docker
8
+ dockerAgent: claude-code
9
+ sharedContainer: true
10
+ model: anthropic:claude-haiku-4-5
11
+
12
+ states:
13
+ author:
14
+ type: agent
15
+ description: Record the task verbatim so the deterministic helper can read it.
16
+ persona: global
17
+ prompt: |
18
+ Write the EXACT task text you were given to the file /workspace/task.txt and nothing else.
19
+ Create no other files. Finish with the required agent_status block.
20
+ inputs: []
21
+ outputs: []
22
+ transitions:
23
+ - to: classify
24
+
25
+ classify:
26
+ type: deterministic
27
+ description: Read the task and emit a verdict file the machine routes on.
28
+ container: true
29
+ resultFile: .workflow/result.json
30
+ run:
31
+ - ['python3', '/workflow-scripts/classify.py']
32
+ transitions:
33
+ - to: passed_terminal
34
+ when: { verdict: pass }
35
+ - to: blocked_terminal
36
+ when: { verdict: block }
37
+ - to: error_terminal
38
+ when: { verdict: result_file_error }
39
+ - to: error_terminal
40
+
41
+ passed_terminal:
42
+ type: terminal
43
+ description: Helper emitted verdict=pass.
44
+
45
+ blocked_terminal:
46
+ type: terminal
47
+ description: Helper emitted verdict=block.
48
+
49
+ error_terminal:
50
+ type: terminal
51
+ description: Verdict file missing/malformed or unexpected verdict.
@@ -0,0 +1,66 @@
1
+ # Evolve
2
+
3
+ A multi-round, evaluator-driven candidate search that runs a tireless AI researcher on a hard problem: each round it **samples a parent, proposes a new candidate, scores it against your evaluator, and distills a transferable lesson** — then repeats, accumulating knowledge until the round budget is spent. It's IronCurtain's packaging of the [ASI-Evolve](scripts/README.md) loop, run by a Docker-isolated `claude-code` agent.
4
+
5
+ Run it from the web UI (**Start Workflow → `evolve`**) or the CLI:
6
+
7
+ ```bash
8
+ ironcurtain workflow start evolve \
9
+ "Improve the linear-attention kernel scored by evaluator.py" \
10
+ --workspace ~/experiments/linear-attention
11
+ ```
12
+
13
+ ## The experiment you point it at
14
+
15
+ Evolve searches over **your** problem. Point `--workspace` at an experiment directory and the `preflight` agent infers the run spec from the files it finds at the workspace root:
16
+
17
+ | File | Role |
18
+ | ------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- |
19
+ | `input.md` / `README.md` | **Objective** — what "better" means, one line, taken faithfully from the brief |
20
+ | `evaluator.py` | **Scoring contract** — `python evaluator.py <code_path> <results_path>`, writing JSON metrics. This is the fitness function. |
21
+ | `initial_program` | _(optional)_ Seed candidate / interface contract the search must respect |
22
+ | `requirements.txt` / `pyproject.toml` | _(optional)_ Python deps installed into the persistent run venv |
23
+ | `init_cognition.py` | _(optional)_ Domain knowledge / heuristics seeded into the cognition store so the search doesn't start from zero |
24
+
25
+ If the workspace is empty, `preflight` falls back to inferring everything from the task description — useful for a quick trial, but a real experiment wants an evaluator. Experiment source files are treated as **read-only**; the run writes only to `.evolve_runs/` and `.workflow/`.
26
+
27
+ ## What it does
28
+
29
+ After a one-time setup, the orchestrator drives rounds. Each round is a linear pipeline that turns sampled history into one scored, recorded candidate.
30
+
31
+ | Phase | State(s) | Role | Output |
32
+ | ------------ | ----------------- | -------------------------------------------------------------------------------------------------------- | ------------------------ |
33
+ | Setup | `provision` | Install the experiment's deps into the persistent venv (idempotent) | provisioned venv |
34
+ | Setup | `preflight` | Infer the run spec, initialize the run, author the cognition seed | run spec, cognition seed |
35
+ | Loop control | `orchestrator` | Round-boundary controller — enforce the budget and stop conditions; route continue / complete / escalate | — |
36
+ | Round | `sample` | Sample parent nodes (UCB1 / greedy / random / MAP-Elites) and retrieve relevant cognition | sampled parents |
37
+ | Round | `researcher` | Evolve one candidate from the sampled parents and retrieved lessons | candidate program |
38
+ | Round | `evaluate` | Run your evaluator on the candidate | JSON metrics |
39
+ | Round | `analyzer` | Distill the outcome into a transferable lesson for future rounds | round lesson |
40
+ | Round | `analysis_record` | Commit the round (candidate + score + lesson + parents) to the experiment database | recorded node |
41
+ | Wrap-up | `final_summary` | Summarize the best candidates and what was learned | run summary |
42
+
43
+ ## Human gates
44
+
45
+ Four gates pause for your decision; each accepts **APPROVE** (continue), **FORCE_REVISION** (loop back with feedback routed into the next agent's prompt), or **ABORT**.
46
+
47
+ - **`provision_review`** — sign off on the environment setup before any candidate runs.
48
+ - **`preflight_review`** — sign off on the inferred run spec (objective, eval command, budget, cognition seed) before the search starts. This is the most important gate: a wrong objective or eval command wastes the whole budget.
49
+ - **`human_escalation`** — a round got blocked (e.g. the evaluator can't run). Redirect, retry, or stop.
50
+ - **`final_review`** — sign off on the run summary at the end.
51
+
52
+ ## The round loop
53
+
54
+ The real budget is `run_spec.budget.max_rounds`, inferred at preflight from your experiment brief and enforced by the **orchestrator** — not the `maxRounds: 200` setting, which is only a safety backstop against a wedged pipeline. After each recorded round the orchestrator re-checks the budget and stop conditions and routes to continue, `complete`, or escalate, so the search ends cleanly instead of running forever.
55
+
56
+ ## At a glance
57
+
58
+ - **Mode:** Docker (`claude-code` agent, `--network=none`, shared container)
59
+ - **Model:** `anthropic:claude-sonnet-4-6`
60
+ - **Persona:** `global` for every agent state
61
+ - **Input:** an experiment directory via `--workspace` (evaluator + objective; optional seed/deps/cognition)
62
+ - **Budget:** `max_rounds` inferred at preflight; `maxRounds: 200` is a backstop only
63
+ - **Run state:** `.evolve_runs/` (experiment DB, cognition store) and `.workflow/` in the workspace
64
+ - **Terminal states:** `done` (budget reached, approved) · `failed` (unrecoverable) · `aborted` (stopped at a gate)
65
+
66
+ > Tip: the search is only as good as `evaluator.py`. A noisy or too-lenient fitness function makes every candidate look equally good and the loop learns nothing — invest in a scorer that cleanly separates better from worse before kicking off a long run. For the framework behind the loop (cognition store, experiment database, sampling strategies) see [`scripts/README.md`](scripts/README.md).