@provos/ironcurtain 0.10.0 → 0.11.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 (467) hide show
  1. package/README.md +60 -8
  2. package/dist/auth/oauth-provider.js +1 -4
  3. package/dist/auth/oauth-provider.js.map +1 -1
  4. package/dist/cli.js +38 -0
  5. package/dist/cli.js.map +1 -1
  6. package/dist/config/config-command.js +162 -7
  7. package/dist/config/config-command.js.map +1 -1
  8. package/dist/config/first-start.js +61 -0
  9. package/dist/config/first-start.js.map +1 -1
  10. package/dist/config/generated/compiled-policy.json +528 -161
  11. package/dist/config/generated/test-scenarios.json +4810 -170
  12. package/dist/config/generated/tool-annotations.json +34 -47
  13. package/dist/config/index.d.ts +58 -0
  14. package/dist/config/index.js +97 -15
  15. package/dist/config/index.js.map +1 -1
  16. package/dist/config/mcp-servers.json +2 -2
  17. package/dist/config/paths.d.ts +175 -0
  18. package/dist/config/paths.js +308 -14
  19. package/dist/config/paths.js.map +1 -1
  20. package/dist/config/types.d.ts +7 -1
  21. package/dist/config/user-config.d.ts +53 -5
  22. package/dist/config/user-config.js +96 -30
  23. package/dist/config/user-config.js.map +1 -1
  24. package/dist/config/validate-policy-dir.d.ts +10 -0
  25. package/dist/config/validate-policy-dir.js +59 -0
  26. package/dist/config/validate-policy-dir.js.map +1 -0
  27. package/dist/cron/job-commands.js +22 -2
  28. package/dist/cron/job-commands.js.map +1 -1
  29. package/dist/cron/types.d.ts +16 -2
  30. package/dist/cron/types.js +1 -3
  31. package/dist/cron/types.js.map +1 -1
  32. package/dist/daemon/daemon-command.js +16 -2
  33. package/dist/daemon/daemon-command.js.map +1 -1
  34. package/dist/daemon/ironcurtain-daemon.d.ts +44 -1
  35. package/dist/daemon/ironcurtain-daemon.js +210 -8
  36. package/dist/daemon/ironcurtain-daemon.js.map +1 -1
  37. package/dist/docker/adapters/claude-code.js +194 -20
  38. package/dist/docker/adapters/claude-code.js.map +1 -1
  39. package/dist/docker/adapters/goose.d.ts +12 -11
  40. package/dist/docker/adapters/goose.js +80 -27
  41. package/dist/docker/adapters/goose.js.map +1 -1
  42. package/dist/docker/agent-adapter.d.ts +178 -4
  43. package/dist/docker/agent-adapter.js +14 -0
  44. package/dist/docker/agent-adapter.js.map +1 -1
  45. package/dist/docker/code-mode-proxy.d.ts +27 -0
  46. package/dist/docker/code-mode-proxy.js +3 -0
  47. package/dist/docker/code-mode-proxy.js.map +1 -1
  48. package/dist/docker/docker-agent-session.d.ts +113 -62
  49. package/dist/docker/docker-agent-session.js +242 -294
  50. package/dist/docker/docker-agent-session.js.map +1 -1
  51. package/dist/docker/docker-infrastructure.d.ts +246 -21
  52. package/dist/docker/docker-infrastructure.js +520 -29
  53. package/dist/docker/docker-infrastructure.js.map +1 -1
  54. package/dist/docker/docker-manager.d.ts +36 -1
  55. package/dist/docker/docker-manager.js +135 -30
  56. package/dist/docker/docker-manager.js.map +1 -1
  57. package/dist/docker/docker-progress-sink.d.ts +43 -0
  58. package/dist/docker/docker-progress-sink.js +299 -0
  59. package/dist/docker/docker-progress-sink.js.map +1 -0
  60. package/dist/docker/mitm-proxy.d.ts +84 -1
  61. package/dist/docker/mitm-proxy.js +380 -18
  62. package/dist/docker/mitm-proxy.js.map +1 -1
  63. package/dist/docker/oauth-credentials.d.ts +46 -3
  64. package/dist/docker/oauth-credentials.js +56 -14
  65. package/dist/docker/oauth-credentials.js.map +1 -1
  66. package/dist/docker/oauth-token-manager.js +2 -2
  67. package/dist/docker/oauth-token-manager.js.map +1 -1
  68. package/dist/docker/orientation.d.ts +1 -1
  69. package/dist/docker/provider-config.d.ts +49 -2
  70. package/dist/docker/provider-config.js +202 -28
  71. package/dist/docker/provider-config.js.map +1 -1
  72. package/dist/docker/proxy-tools.d.ts +0 -2
  73. package/dist/docker/proxy-tools.js +2 -7
  74. package/dist/docker/proxy-tools.js.map +1 -1
  75. package/dist/docker/pty-session.d.ts +49 -1
  76. package/dist/docker/pty-session.js +199 -69
  77. package/dist/docker/pty-session.js.map +1 -1
  78. package/dist/docker/pty-types.d.ts +0 -2
  79. package/dist/docker/pty-types.js +0 -2
  80. package/dist/docker/pty-types.js.map +1 -1
  81. package/dist/docker/resource-limits.d.ts +125 -0
  82. package/dist/docker/resource-limits.js +200 -0
  83. package/dist/docker/resource-limits.js.map +1 -0
  84. package/dist/docker/spawn-with-idle-timeout.d.ts +39 -0
  85. package/dist/docker/spawn-with-idle-timeout.js +152 -0
  86. package/dist/docker/spawn-with-idle-timeout.js.map +1 -0
  87. package/dist/docker/sse-extractor.d.ts +51 -0
  88. package/dist/docker/sse-extractor.js +303 -0
  89. package/dist/docker/sse-extractor.js.map +1 -0
  90. package/dist/docker/token-stream-bus.d.ts +83 -0
  91. package/dist/docker/token-stream-bus.js +98 -0
  92. package/dist/docker/token-stream-bus.js.map +1 -0
  93. package/dist/docker/token-stream-types.d.ts +71 -0
  94. package/dist/docker/token-stream-types.js +8 -0
  95. package/dist/docker/token-stream-types.js.map +1 -0
  96. package/dist/docker/types.d.ts +53 -6
  97. package/dist/doctor/checks.d.ts +138 -0
  98. package/dist/doctor/checks.js +511 -0
  99. package/dist/doctor/checks.js.map +1 -0
  100. package/dist/doctor/doctor-command.d.ts +29 -0
  101. package/dist/doctor/doctor-command.js +160 -0
  102. package/dist/doctor/doctor-command.js.map +1 -0
  103. package/dist/doctor/mcp-liveness.d.ts +28 -0
  104. package/dist/doctor/mcp-liveness.js +84 -0
  105. package/dist/doctor/mcp-liveness.js.map +1 -0
  106. package/dist/doctor/oauth-checks.d.ts +23 -0
  107. package/dist/doctor/oauth-checks.js +157 -0
  108. package/dist/doctor/oauth-checks.js.map +1 -0
  109. package/dist/doctor/output.d.ts +26 -0
  110. package/dist/doctor/output.js +82 -0
  111. package/dist/doctor/output.js.map +1 -0
  112. package/dist/escalation/listener-command.js +0 -3
  113. package/dist/escalation/listener-command.js.map +1 -1
  114. package/dist/event-bus/typed-event-bus.d.ts +26 -0
  115. package/dist/event-bus/typed-event-bus.js +35 -0
  116. package/dist/event-bus/typed-event-bus.js.map +1 -0
  117. package/dist/index.js +24 -9
  118. package/dist/index.js.map +1 -1
  119. package/dist/logger.js +31 -2
  120. package/dist/logger.js.map +1 -1
  121. package/dist/memory/auto-save.d.ts +18 -4
  122. package/dist/memory/auto-save.js +46 -6
  123. package/dist/memory/auto-save.js.map +1 -1
  124. package/dist/memory/memory-policy.d.ts +41 -0
  125. package/dist/memory/memory-policy.js +36 -0
  126. package/dist/memory/memory-policy.js.map +1 -0
  127. package/dist/mux/mux-command.d.ts +10 -1
  128. package/dist/mux/mux-command.js +56 -35
  129. package/dist/mux/mux-command.js.map +1 -1
  130. package/dist/mux/mux-renderer.js +2 -12
  131. package/dist/mux/mux-renderer.js.map +1 -1
  132. package/dist/mux/session-scanner.js +1 -2
  133. package/dist/mux/session-scanner.js.map +1 -1
  134. package/dist/{pipeline → observability}/llm-logger.d.ts +8 -3
  135. package/dist/{pipeline → observability}/llm-logger.js +8 -3
  136. package/dist/observability/llm-logger.js.map +1 -0
  137. package/dist/observe/observe-command.d.ts +12 -0
  138. package/dist/observe/observe-command.js +298 -0
  139. package/dist/observe/observe-command.js.map +1 -0
  140. package/dist/observe/observe-renderer.d.ts +24 -0
  141. package/dist/observe/observe-renderer.js +87 -0
  142. package/dist/observe/observe-renderer.js.map +1 -0
  143. package/dist/observe/observe-tui-rain.d.ts +42 -0
  144. package/dist/observe/observe-tui-rain.js +531 -0
  145. package/dist/observe/observe-tui-rain.js.map +1 -0
  146. package/dist/observe/observe-tui-text-panel.d.ts +46 -0
  147. package/dist/observe/observe-tui-text-panel.js +525 -0
  148. package/dist/observe/observe-tui-text-panel.js.map +1 -0
  149. package/dist/observe/observe-tui-types.d.ts +270 -0
  150. package/dist/observe/observe-tui-types.js +200 -0
  151. package/dist/observe/observe-tui-types.js.map +1 -0
  152. package/dist/observe/observe-tui-word-scorer.d.ts +143 -0
  153. package/dist/observe/observe-tui-word-scorer.js +572 -0
  154. package/dist/observe/observe-tui-word-scorer.js.map +1 -0
  155. package/dist/observe/observe-tui.d.ts +59 -0
  156. package/dist/observe/observe-tui.js +592 -0
  157. package/dist/observe/observe-tui.js.map +1 -0
  158. package/dist/persona/memory-gate.d.ts +19 -0
  159. package/dist/persona/memory-gate.js +33 -0
  160. package/dist/persona/memory-gate.js.map +1 -0
  161. package/dist/persona/persona-command.js +41 -6
  162. package/dist/persona/persona-command.js.map +1 -1
  163. package/dist/persona/resolve.d.ts +22 -0
  164. package/dist/persona/resolve.js +45 -2
  165. package/dist/persona/resolve.js.map +1 -1
  166. package/dist/persona/types.d.ts +16 -0
  167. package/dist/pipeline/constitution-compiler.d.ts +25 -14
  168. package/dist/pipeline/constitution-compiler.js +107 -38
  169. package/dist/pipeline/constitution-compiler.js.map +1 -1
  170. package/dist/pipeline/dynamic-list-types.d.ts +3 -6
  171. package/dist/pipeline/dynamic-list-types.js +3 -16
  172. package/dist/pipeline/dynamic-list-types.js.map +1 -1
  173. package/dist/pipeline/pipeline-runner.js +89 -50
  174. package/dist/pipeline/pipeline-runner.js.map +1 -1
  175. package/dist/pipeline/pipeline-shared.d.ts +1 -1
  176. package/dist/pipeline/pipeline-shared.js +3 -11
  177. package/dist/pipeline/pipeline-shared.js.map +1 -1
  178. package/dist/pipeline/policy-verifier.js +16 -3
  179. package/dist/pipeline/policy-verifier.js.map +1 -1
  180. package/dist/pipeline/proxy-mcp-connections.js +17 -2
  181. package/dist/pipeline/proxy-mcp-connections.js.map +1 -1
  182. package/dist/pipeline/scenario-generator.d.ts +4 -8
  183. package/dist/pipeline/scenario-generator.js +13 -46
  184. package/dist/pipeline/scenario-generator.js.map +1 -1
  185. package/dist/sandbox/index.d.ts +14 -0
  186. package/dist/sandbox/index.js +335 -116
  187. package/dist/sandbox/index.js.map +1 -1
  188. package/dist/sandbox/ironcurtain-protocol.d.ts +52 -0
  189. package/dist/sandbox/ironcurtain-protocol.js +185 -0
  190. package/dist/sandbox/ironcurtain-protocol.js.map +1 -0
  191. package/dist/session/agent-session.d.ts +6 -0
  192. package/dist/session/agent-session.js +16 -5
  193. package/dist/session/agent-session.js.map +1 -1
  194. package/dist/session/cli-transport.js +0 -6
  195. package/dist/session/cli-transport.js.map +1 -1
  196. package/dist/session/index.d.ts +35 -14
  197. package/dist/session/index.js +324 -130
  198. package/dist/session/index.js.map +1 -1
  199. package/dist/session/preflight.d.ts +50 -13
  200. package/dist/session/preflight.js +252 -80
  201. package/dist/session/preflight.js.map +1 -1
  202. package/dist/session/prompts.d.ts +2 -5
  203. package/dist/session/prompts.js.map +1 -1
  204. package/dist/session/session-manager.d.ts +61 -6
  205. package/dist/session/session-manager.js +72 -10
  206. package/dist/session/session-manager.js.map +1 -1
  207. package/dist/session/session-metadata.d.ts +21 -5
  208. package/dist/session/session-metadata.js +34 -12
  209. package/dist/session/session-metadata.js.map +1 -1
  210. package/dist/session/types.d.ts +311 -5
  211. package/dist/session/types.js +57 -1
  212. package/dist/session/types.js.map +1 -1
  213. package/dist/signal/setup-signal.js +13 -21
  214. package/dist/signal/setup-signal.js.map +1 -1
  215. package/dist/signal/signal-bot-daemon.d.ts +16 -1
  216. package/dist/signal/signal-bot-daemon.js +39 -27
  217. package/dist/signal/signal-bot-daemon.js.map +1 -1
  218. package/dist/signal/signal-container.js +7 -1
  219. package/dist/signal/signal-container.js.map +1 -1
  220. package/dist/skills/discovery.d.ts +77 -0
  221. package/dist/skills/discovery.js +206 -0
  222. package/dist/skills/discovery.js.map +1 -0
  223. package/dist/skills/index.d.ts +4 -0
  224. package/dist/skills/index.js +3 -0
  225. package/dist/skills/index.js.map +1 -0
  226. package/dist/skills/staging.d.ts +28 -0
  227. package/dist/skills/staging.js +68 -0
  228. package/dist/skills/staging.js.map +1 -0
  229. package/dist/skills/types.d.ts +46 -0
  230. package/dist/skills/types.js +2 -0
  231. package/dist/skills/types.js.map +1 -0
  232. package/dist/trusted-process/approval-whitelist.d.ts +0 -2
  233. package/dist/trusted-process/approval-whitelist.js +17 -17
  234. package/dist/trusted-process/approval-whitelist.js.map +1 -1
  235. package/dist/trusted-process/async-mutex.d.ts +32 -0
  236. package/dist/trusted-process/async-mutex.js +50 -0
  237. package/dist/trusted-process/async-mutex.js.map +1 -0
  238. package/dist/trusted-process/audit-log.d.ts +38 -1
  239. package/dist/trusted-process/audit-log.js +82 -13
  240. package/dist/trusted-process/audit-log.js.map +1 -1
  241. package/dist/trusted-process/call-circuit-breaker.js +2 -1
  242. package/dist/trusted-process/call-circuit-breaker.js.map +1 -1
  243. package/dist/trusted-process/control-server.d.ts +101 -0
  244. package/dist/trusted-process/control-server.js +282 -0
  245. package/dist/trusted-process/control-server.js.map +1 -0
  246. package/dist/trusted-process/domain-utils.d.ts +6 -6
  247. package/dist/trusted-process/domain-utils.js +7 -23
  248. package/dist/trusted-process/domain-utils.js.map +1 -1
  249. package/dist/trusted-process/error-prefixes.d.ts +16 -0
  250. package/dist/trusted-process/error-prefixes.js +17 -0
  251. package/dist/trusted-process/error-prefixes.js.map +1 -0
  252. package/dist/trusted-process/index.d.ts +40 -23
  253. package/dist/trusted-process/index.js +131 -225
  254. package/dist/trusted-process/index.js.map +1 -1
  255. package/dist/trusted-process/list-matcher.d.ts +17 -0
  256. package/dist/trusted-process/list-matcher.js +31 -0
  257. package/dist/trusted-process/list-matcher.js.map +1 -0
  258. package/dist/trusted-process/mcp-client-manager.d.ts +35 -6
  259. package/dist/trusted-process/mcp-client-manager.js +40 -45
  260. package/dist/trusted-process/mcp-client-manager.js.map +1 -1
  261. package/dist/trusted-process/mcp-proxy-server.d.ts +31 -120
  262. package/dist/trusted-process/mcp-proxy-server.js +166 -657
  263. package/dist/trusted-process/mcp-proxy-server.js.map +1 -1
  264. package/dist/trusted-process/policy-engine.d.ts +16 -4
  265. package/dist/trusted-process/policy-engine.js +90 -45
  266. package/dist/trusted-process/policy-engine.js.map +1 -1
  267. package/dist/trusted-process/policy-roots.d.ts +6 -0
  268. package/dist/trusted-process/policy-roots.js +20 -0
  269. package/dist/trusted-process/policy-roots.js.map +1 -1
  270. package/dist/trusted-process/sandbox-integration.d.ts +12 -0
  271. package/dist/trusted-process/sandbox-integration.js +18 -0
  272. package/dist/trusted-process/sandbox-integration.js.map +1 -1
  273. package/dist/trusted-process/tool-call-coordinator.d.ts +269 -0
  274. package/dist/trusted-process/tool-call-coordinator.js +508 -0
  275. package/dist/trusted-process/tool-call-coordinator.js.map +1 -0
  276. package/dist/trusted-process/tool-call-pipeline.d.ts +205 -0
  277. package/dist/trusted-process/tool-call-pipeline.js +798 -0
  278. package/dist/trusted-process/tool-call-pipeline.js.map +1 -0
  279. package/dist/trusted-process/tool-description-hints.d.ts +1 -1
  280. package/dist/types/argument-roles.d.ts +1 -1
  281. package/dist/types/argument-roles.js +14 -1
  282. package/dist/types/argument-roles.js.map +1 -1
  283. package/dist/types/audit.d.ts +9 -0
  284. package/dist/{session → types}/errors.d.ts +8 -2
  285. package/dist/{session → types}/errors.js +8 -2
  286. package/dist/types/errors.js.map +1 -0
  287. package/dist/types/reserved-servers.d.ts +11 -0
  288. package/dist/types/reserved-servers.js +12 -0
  289. package/dist/types/reserved-servers.js.map +1 -0
  290. package/dist/types/server-listing.d.ts +14 -0
  291. package/dist/types/server-listing.js +2 -0
  292. package/dist/types/server-listing.js.map +1 -0
  293. package/dist/types/slug.d.ts +2 -0
  294. package/dist/types/slug.js +2 -0
  295. package/dist/types/slug.js.map +1 -1
  296. package/dist/types/url-normalize.d.ts +16 -0
  297. package/dist/types/url-normalize.js +33 -0
  298. package/dist/types/url-normalize.js.map +1 -0
  299. package/dist/utils/error-message.d.ts +8 -0
  300. package/dist/utils/error-message.js +11 -0
  301. package/dist/utils/error-message.js.map +1 -0
  302. package/dist/utils/exec-error.d.ts +19 -0
  303. package/dist/utils/exec-error.js +16 -0
  304. package/dist/utils/exec-error.js.map +1 -0
  305. package/dist/utils/is-plain-object.d.ts +7 -0
  306. package/dist/utils/is-plain-object.js +12 -0
  307. package/dist/utils/is-plain-object.js.map +1 -0
  308. package/dist/utils/preflight-checks.d.ts +16 -0
  309. package/dist/utils/preflight-checks.js +178 -0
  310. package/dist/utils/preflight-checks.js.map +1 -0
  311. package/dist/web-ui/__tests__/json-rpc-dispatch.test.d.ts +7 -0
  312. package/dist/web-ui/__tests__/json-rpc-dispatch.test.js +725 -0
  313. package/dist/web-ui/__tests__/json-rpc-dispatch.test.js.map +1 -0
  314. package/dist/web-ui/dispatch/escalation-dispatch.d.ts +7 -0
  315. package/dist/web-ui/dispatch/escalation-dispatch.js +52 -0
  316. package/dist/web-ui/dispatch/escalation-dispatch.js.map +1 -0
  317. package/dist/web-ui/dispatch/job-dispatch.d.ts +8 -0
  318. package/dist/web-ui/dispatch/job-dispatch.js +83 -0
  319. package/dist/web-ui/dispatch/job-dispatch.js.map +1 -0
  320. package/dist/web-ui/dispatch/persona-dispatch.d.ts +6 -0
  321. package/dist/web-ui/dispatch/persona-dispatch.js +116 -0
  322. package/dist/web-ui/dispatch/persona-dispatch.js.map +1 -0
  323. package/dist/web-ui/dispatch/session-dispatch.d.ts +9 -0
  324. package/dist/web-ui/dispatch/session-dispatch.js +201 -0
  325. package/dist/web-ui/dispatch/session-dispatch.js.map +1 -0
  326. package/dist/web-ui/dispatch/token-stream-dispatch.d.ts +15 -0
  327. package/dist/web-ui/dispatch/token-stream-dispatch.js +55 -0
  328. package/dist/web-ui/dispatch/token-stream-dispatch.js.map +1 -0
  329. package/dist/web-ui/dispatch/types.d.ts +31 -0
  330. package/dist/web-ui/dispatch/types.js +68 -0
  331. package/dist/web-ui/dispatch/types.js.map +1 -0
  332. package/dist/web-ui/dispatch/workflow-dispatch.d.ts +103 -0
  333. package/dist/web-ui/dispatch/workflow-dispatch.js +925 -0
  334. package/dist/web-ui/dispatch/workflow-dispatch.js.map +1 -0
  335. package/dist/web-ui/json-rpc-dispatch.d.ts +12 -0
  336. package/dist/web-ui/json-rpc-dispatch.js +34 -0
  337. package/dist/web-ui/json-rpc-dispatch.js.map +1 -0
  338. package/dist/web-ui/state-graph.d.ts +13 -0
  339. package/dist/web-ui/state-graph.js +82 -0
  340. package/dist/web-ui/state-graph.js.map +1 -0
  341. package/dist/web-ui/token-stream-bridge.d.ts +76 -0
  342. package/dist/web-ui/token-stream-bridge.js +265 -0
  343. package/dist/web-ui/token-stream-bridge.js.map +1 -0
  344. package/dist/web-ui/web-event-bus.d.ts +152 -0
  345. package/dist/web-ui/web-event-bus.js +19 -0
  346. package/dist/web-ui/web-event-bus.js.map +1 -0
  347. package/dist/web-ui/web-session-transport.d.ts +31 -0
  348. package/dist/web-ui/web-session-transport.js +109 -0
  349. package/dist/web-ui/web-session-transport.js.map +1 -0
  350. package/dist/web-ui/web-ui-server.d.ts +76 -0
  351. package/dist/web-ui/web-ui-server.js +461 -0
  352. package/dist/web-ui/web-ui-server.js.map +1 -0
  353. package/dist/web-ui/web-ui-types.d.ts +290 -0
  354. package/dist/web-ui/web-ui-types.js +32 -0
  355. package/dist/web-ui/web-ui-types.js.map +1 -0
  356. package/dist/web-ui/ws-utils.d.ts +5 -0
  357. package/dist/web-ui/ws-utils.js +12 -0
  358. package/dist/web-ui/ws-utils.js.map +1 -0
  359. package/dist/web-ui-static/assets/index-BFO5z1js.js +76 -0
  360. package/dist/web-ui-static/assets/index-CCUwrkIL.css +1 -0
  361. package/dist/web-ui-static/assets/orbitron-latin-700-normal-4jsRXGGJ.woff2 +0 -0
  362. package/dist/web-ui-static/assets/orbitron-latin-700-normal-DmYOh-W9.woff +0 -0
  363. package/dist/web-ui-static/index.html +14 -0
  364. package/dist/workflow/artifacts.d.ts +59 -0
  365. package/dist/workflow/artifacts.js +188 -0
  366. package/dist/workflow/artifacts.js.map +1 -0
  367. package/dist/workflow/checkpoint-selection.d.ts +34 -0
  368. package/dist/workflow/checkpoint-selection.js +48 -0
  369. package/dist/workflow/checkpoint-selection.js.map +1 -0
  370. package/dist/workflow/checkpoint.d.ts +35 -0
  371. package/dist/workflow/checkpoint.js +84 -0
  372. package/dist/workflow/checkpoint.js.map +1 -0
  373. package/dist/workflow/cli-support.d.ts +92 -0
  374. package/dist/workflow/cli-support.js +423 -0
  375. package/dist/workflow/cli-support.js.map +1 -0
  376. package/dist/workflow/definition-loader.d.ts +32 -0
  377. package/dist/workflow/definition-loader.js +56 -0
  378. package/dist/workflow/definition-loader.js.map +1 -0
  379. package/dist/workflow/discovery.d.ts +78 -0
  380. package/dist/workflow/discovery.js +203 -0
  381. package/dist/workflow/discovery.js.map +1 -0
  382. package/dist/workflow/errors.d.ts +66 -0
  383. package/dist/workflow/errors.js +49 -0
  384. package/dist/workflow/errors.js.map +1 -0
  385. package/dist/workflow/guards.d.ts +8 -0
  386. package/dist/workflow/guards.js +38 -0
  387. package/dist/workflow/guards.js.map +1 -0
  388. package/dist/workflow/lint-integration.d.ts +64 -0
  389. package/dist/workflow/lint-integration.js +56 -0
  390. package/dist/workflow/lint-integration.js.map +1 -0
  391. package/dist/workflow/lint.d.ts +66 -0
  392. package/dist/workflow/lint.js +410 -0
  393. package/dist/workflow/lint.js.map +1 -0
  394. package/dist/workflow/machine-builder.d.ts +90 -0
  395. package/dist/workflow/machine-builder.js +485 -0
  396. package/dist/workflow/machine-builder.js.map +1 -0
  397. package/dist/workflow/message-log.d.ts +85 -0
  398. package/dist/workflow/message-log.js +40 -0
  399. package/dist/workflow/message-log.js.map +1 -0
  400. package/dist/workflow/orchestrator.d.ts +450 -0
  401. package/dist/workflow/orchestrator.js +1941 -0
  402. package/dist/workflow/orchestrator.js.map +1 -0
  403. package/dist/workflow/prompt-builder.d.ts +39 -0
  404. package/dist/workflow/prompt-builder.js +242 -0
  405. package/dist/workflow/prompt-builder.js.map +1 -0
  406. package/dist/workflow/run-state-command.d.ts +9 -0
  407. package/dist/workflow/run-state-command.js +414 -0
  408. package/dist/workflow/run-state-command.js.map +1 -0
  409. package/dist/workflow/run-state-debug-capture.d.ts +40 -0
  410. package/dist/workflow/run-state-debug-capture.js +101 -0
  411. package/dist/workflow/run-state-debug-capture.js.map +1 -0
  412. package/dist/workflow/status-parser.d.ts +68 -0
  413. package/dist/workflow/status-parser.js +259 -0
  414. package/dist/workflow/status-parser.js.map +1 -0
  415. package/dist/workflow/types.d.ts +498 -0
  416. package/dist/workflow/types.js +83 -0
  417. package/dist/workflow/types.js.map +1 -0
  418. package/dist/workflow/validate.d.ts +58 -0
  419. package/dist/workflow/validate.js +499 -0
  420. package/dist/workflow/validate.js.map +1 -0
  421. package/dist/workflow/workflow-command.d.ts +26 -0
  422. package/dist/workflow/workflow-command.js +648 -0
  423. package/dist/workflow/workflow-command.js.map +1 -0
  424. package/dist/workflow/workflow-discovery.d.ts +25 -0
  425. package/dist/workflow/workflow-discovery.js +100 -0
  426. package/dist/workflow/workflow-discovery.js.map +1 -0
  427. package/dist/workflow/workflow-manager.d.ts +122 -0
  428. package/dist/workflow/workflow-manager.js +308 -0
  429. package/dist/workflow/workflow-manager.js.map +1 -0
  430. package/dist/workflow/workflows/design-and-code/workflow.yaml +169 -0
  431. package/dist/workflow/workflows/test-email-summary/skills/email-formatting/SKILL.md +55 -0
  432. package/dist/workflow/workflows/test-email-summary/skills/gmail-query-syntax/SKILL.md +63 -0
  433. package/dist/workflow/workflows/test-email-summary/skills/json-schema-emails/SKILL.md +41 -0
  434. package/dist/workflow/workflows/test-email-summary/skills/json-schema-emails/schema.json +34 -0
  435. package/dist/workflow/workflows/test-email-summary/skills/summary-style-guide/SKILL.md +51 -0
  436. package/dist/workflow/workflows/test-email-summary/workflow.yaml +89 -0
  437. package/dist/workflow/workflows/vuln-discovery/skills/harness-design-fuzzing/SKILL.md +201 -0
  438. package/dist/workflow/workflows/vuln-discovery/skills/memory-safety-c-cpp/SKILL.md +166 -0
  439. package/dist/workflow/workflows/vuln-discovery/skills/vulnerability-triage/SKILL.md +185 -0
  440. package/dist/workflow/workflows/vuln-discovery/workflow.yaml +920 -0
  441. package/dist/workflow/worktree.d.ts +43 -0
  442. package/dist/workflow/worktree.js +106 -0
  443. package/dist/workflow/worktree.js.map +1 -0
  444. package/docker/Dockerfile.base +9 -0
  445. package/docker/Dockerfile.base.arm64 +9 -0
  446. package/docker/entrypoint-claude-code.sh +46 -0
  447. package/docker/entrypoint-goose.sh +25 -0
  448. package/package.json +19 -8
  449. package/packages/web-ui/README.md +113 -0
  450. package/packages/web-ui/docs/workflow-state-machine.png +0 -0
  451. package/src/config/generated/compiled-policy.json +528 -161
  452. package/src/config/generated/test-scenarios.json +4810 -170
  453. package/src/config/generated/tool-annotations.json +34 -47
  454. package/src/config/mcp-servers.json +2 -2
  455. package/src/workflow/workflows/design-and-code/workflow.yaml +169 -0
  456. package/src/workflow/workflows/test-email-summary/skills/email-formatting/SKILL.md +55 -0
  457. package/src/workflow/workflows/test-email-summary/skills/gmail-query-syntax/SKILL.md +63 -0
  458. package/src/workflow/workflows/test-email-summary/skills/json-schema-emails/SKILL.md +41 -0
  459. package/src/workflow/workflows/test-email-summary/skills/json-schema-emails/schema.json +34 -0
  460. package/src/workflow/workflows/test-email-summary/skills/summary-style-guide/SKILL.md +51 -0
  461. package/src/workflow/workflows/test-email-summary/workflow.yaml +89 -0
  462. package/src/workflow/workflows/vuln-discovery/skills/harness-design-fuzzing/SKILL.md +201 -0
  463. package/src/workflow/workflows/vuln-discovery/skills/memory-safety-c-cpp/SKILL.md +166 -0
  464. package/src/workflow/workflows/vuln-discovery/skills/vulnerability-triage/SKILL.md +185 -0
  465. package/src/workflow/workflows/vuln-discovery/workflow.yaml +920 -0
  466. package/dist/pipeline/llm-logger.js.map +0 -1
  467. package/dist/session/errors.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-command.js","sourceRoot":"","sources":["../../src/workflow/workflow-command.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import type { WorkflowId } from './types.js';
2
+ export interface WorkflowRunSummary {
3
+ readonly workflowId: WorkflowId;
4
+ readonly directoryPath: string;
5
+ readonly hasCheckpoint: boolean;
6
+ readonly hasDefinition: boolean;
7
+ readonly hasMessageLog: boolean;
8
+ readonly mtime: Date;
9
+ }
10
+ /**
11
+ * Scan `baseDir` for workflow-run directories; one summary per immediate
12
+ * subdirectory, sorted newest-first by `mtime`. Missing `baseDir` returns `[]`
13
+ * (mirrors `FileCheckpointStore.listAll()`).
14
+ */
15
+ export declare function discoverWorkflowRuns(baseDir: string): WorkflowRunSummary[];
16
+ /**
17
+ * Recovers the `workspacePath` for a checkpoint-less past run from session-
18
+ * metadata files written per state actor under
19
+ * `<runDir>/containers/*\/states/*\/{SESSION_METADATA_FILENAME}`. Picks the
20
+ * entry with the newest `createdAt`. Returns `undefined` when no usable file
21
+ * is found.
22
+ */
23
+ export declare function discoverWorkspacePathFromContainers(runDir: string): string | undefined;
24
+ /** Single-id variant of {@link discoverWorkflowRuns}; returns `undefined` when the directory doesn't exist. */
25
+ export declare function summaryForId(baseDir: string, workflowId: WorkflowId): WorkflowRunSummary | undefined;
@@ -0,0 +1,100 @@
1
+ import { readdirSync, statSync } from 'node:fs';
2
+ import { resolve } from 'node:path';
3
+ import { SESSION_METADATA_FILENAME } from '../config/paths.js';
4
+ import { loadSessionMetadataFromPath } from '../session/session-metadata.js';
5
+ function buildSummary(directoryPath, workflowId, mtime) {
6
+ return {
7
+ workflowId,
8
+ directoryPath,
9
+ hasCheckpoint: existsSyncSafe(resolve(directoryPath, 'checkpoint.json')),
10
+ hasDefinition: existsSyncSafe(resolve(directoryPath, 'definition.json')),
11
+ hasMessageLog: existsSyncSafe(resolve(directoryPath, 'messages.jsonl')),
12
+ mtime,
13
+ };
14
+ }
15
+ function existsSyncSafe(path) {
16
+ try {
17
+ statSync(path);
18
+ return true;
19
+ }
20
+ catch (err) {
21
+ if (err.code === 'ENOENT')
22
+ return false;
23
+ throw err;
24
+ }
25
+ }
26
+ /** `readdirSync` that swallows ENOENT (returns `[]`); other errors propagate. */
27
+ function readDirEntries(dir) {
28
+ try {
29
+ return readdirSync(dir, { withFileTypes: true });
30
+ }
31
+ catch (err) {
32
+ if (err.code === 'ENOENT')
33
+ return [];
34
+ throw err;
35
+ }
36
+ }
37
+ /**
38
+ * Scan `baseDir` for workflow-run directories; one summary per immediate
39
+ * subdirectory, sorted newest-first by `mtime`. Missing `baseDir` returns `[]`
40
+ * (mirrors `FileCheckpointStore.listAll()`).
41
+ */
42
+ export function discoverWorkflowRuns(baseDir) {
43
+ const entries = readDirEntries(baseDir);
44
+ const summaries = [];
45
+ for (const entry of entries) {
46
+ if (!entry.isDirectory())
47
+ continue;
48
+ const directoryPath = resolve(baseDir, entry.name);
49
+ const stats = statSync(directoryPath);
50
+ summaries.push(buildSummary(directoryPath, entry.name, stats.mtime));
51
+ }
52
+ summaries.sort((a, b) => b.mtime.getTime() - a.mtime.getTime());
53
+ return summaries;
54
+ }
55
+ /**
56
+ * Recovers the `workspacePath` for a checkpoint-less past run from session-
57
+ * metadata files written per state actor under
58
+ * `<runDir>/containers/*\/states/*\/{SESSION_METADATA_FILENAME}`. Picks the
59
+ * entry with the newest `createdAt`. Returns `undefined` when no usable file
60
+ * is found.
61
+ */
62
+ export function discoverWorkspacePathFromContainers(runDir) {
63
+ const containersDir = resolve(runDir, 'containers');
64
+ let bestWorkspace;
65
+ let bestCreatedAt = '';
66
+ for (const container of readDirEntries(containersDir)) {
67
+ if (!container.isDirectory())
68
+ continue;
69
+ const statesDir = resolve(containersDir, container.name, 'states');
70
+ for (const state of readDirEntries(statesDir)) {
71
+ if (!state.isDirectory())
72
+ continue;
73
+ const metadata = loadSessionMetadataFromPath(resolve(statesDir, state.name, SESSION_METADATA_FILENAME));
74
+ if (!metadata?.workspacePath || !metadata.createdAt)
75
+ continue;
76
+ if (metadata.createdAt > bestCreatedAt) {
77
+ bestCreatedAt = metadata.createdAt;
78
+ bestWorkspace = metadata.workspacePath;
79
+ }
80
+ }
81
+ }
82
+ return bestWorkspace;
83
+ }
84
+ /** Single-id variant of {@link discoverWorkflowRuns}; returns `undefined` when the directory doesn't exist. */
85
+ export function summaryForId(baseDir, workflowId) {
86
+ const directoryPath = resolve(baseDir, workflowId);
87
+ let stats;
88
+ try {
89
+ stats = statSync(directoryPath);
90
+ }
91
+ catch (err) {
92
+ if (err.code === 'ENOENT')
93
+ return undefined;
94
+ throw err;
95
+ }
96
+ if (!stats.isDirectory())
97
+ return undefined;
98
+ return buildSummary(directoryPath, workflowId, stats.mtime);
99
+ }
100
+ //# sourceMappingURL=workflow-discovery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-discovery.js","sourceRoot":"","sources":["../../src/workflow/workflow-discovery.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,122 @@
1
+ /**
2
+ * WorkflowManager -- owns WorkflowOrchestrator instances for the web UI
3
+ * and the CLI inspect path.
4
+ *
5
+ * Analogous to SessionManager: the daemon creates one WorkflowManager
6
+ * at startup and passes it into the dispatch context. Lifecycle events
7
+ * from the orchestrator are forwarded to the supplied event bus, which
8
+ * the WebUiServer subscribes to.
9
+ *
10
+ * Layered under `src/workflow/` (rather than `src/web-ui/`) so that
11
+ * non-web consumers (CLI, signal bot daemon) can reuse it without
12
+ * pulling in the web UI module. The event bus parameter is typed
13
+ * against the generic {@link TypedEventBus} fixed to {@link WebEventMap}
14
+ * so existing callers can keep passing `WebEventBus` instances; the
15
+ * `WebEventMap` is a type-only import and adds no runtime coupling.
16
+ */
17
+ import { type WorkflowController } from './orchestrator.js';
18
+ import { FileCheckpointStore } from './checkpoint.js';
19
+ import type { TypedEventBus } from '../event-bus/typed-event-bus.js';
20
+ import type { WebEventMap } from '../web-ui/web-event-bus.js';
21
+ import { type WorkflowId, type WorkflowCheckpoint, type WorkflowDefinition } from './types.js';
22
+ /**
23
+ * Successful past-run load: domain objects only, no DTO mapping.
24
+ *
25
+ * `checkpoint` is optional because a directory may hold a `definition.json`
26
+ * (and optionally a `messages.jsonl`) without a `checkpoint.json` -- this
27
+ * happens for runs that completed before checkpoint retention was introduced
28
+ * and for runs where the checkpoint is missing for any other reason. The
29
+ * dispatch layer synthesizes missing fields from the message log or the
30
+ * definition when `checkpoint` is `undefined`.
31
+ *
32
+ * `messageLogPath` is always returned (never checked for existence here);
33
+ * callers read it via `MessageLog.readAll()`, which returns `[]` when the
34
+ * file does not yet exist.
35
+ */
36
+ export interface PastRunLoadSuccess {
37
+ readonly checkpoint: WorkflowCheckpoint | undefined;
38
+ readonly definition: WorkflowDefinition;
39
+ /** Absolute path to the per-run `messages.jsonl`. Not guaranteed to exist on disk. */
40
+ readonly messageLogPath: string;
41
+ /** True iff `workflowId` is present in `controller.listActive()` at call time. */
42
+ readonly isLive: boolean;
43
+ }
44
+ /**
45
+ * Failed past-run load.
46
+ * - `not_found`: directory doesn't exist OR has no loadable definition (so
47
+ * there's nothing to render).
48
+ * - `corrupted`: a present file (checkpoint or definition) failed to parse
49
+ * or validate.
50
+ */
51
+ export interface PastRunLoadError {
52
+ readonly error: 'not_found' | 'corrupted';
53
+ readonly message?: string;
54
+ }
55
+ export type PastRunLoadResult = PastRunLoadSuccess | PastRunLoadError;
56
+ export interface WorkflowManagerOptions {
57
+ readonly eventBus: TypedEventBus<WebEventMap>;
58
+ /**
59
+ * Optional override for the base directory under which workflow runs are
60
+ * stored. Defaults to `{getIronCurtainHome()}/workflow-runs`. The CLI
61
+ * `workflow inspect` subcommand uses this to inspect arbitrary user-supplied
62
+ * directories without mutating `IRONCURTAIN_HOME`.
63
+ */
64
+ readonly baseDirOverride?: string;
65
+ }
66
+ export declare class WorkflowManager {
67
+ private orchestrator;
68
+ private readonly eventBus;
69
+ private readonly baseDirOverride;
70
+ constructor(options: WorkflowManagerOptions);
71
+ /** Lazily creates the orchestrator on first use. */
72
+ getOrchestrator(): WorkflowController;
73
+ /** Clean shutdown of all workflows. */
74
+ shutdown(): Promise<void>;
75
+ /**
76
+ * Imports a checkpoint from an external directory into the daemon's own store.
77
+ *
78
+ * When `workflowId` is omitted, picks the most recent checkpoint in the external dir.
79
+ * Copies both the checkpoint and `definition.json` so that `resume()` can find them.
80
+ *
81
+ * @returns The workflow ID that was imported.
82
+ */
83
+ importExternalCheckpoint(externalBaseDir: string, workflowId?: string): WorkflowId;
84
+ /**
85
+ * Loads a past workflow run from disk. Returns domain objects only.
86
+ *
87
+ * - `not_found`: directory missing OR no loadable checkpoint + no loadable definition.
88
+ * - `corrupted`: a present file failed to parse. Never throws.
89
+ * - On success, `checkpoint` may be `undefined`; `definition` and `messageLogPath` are always set.
90
+ *
91
+ * Pass `activeIds` when calling in a loop (e.g. `buildResumableList`) to skip
92
+ * the per-call `controller.listActive()` allocation.
93
+ */
94
+ loadPastRun(workflowId: WorkflowId, activeIds?: ReadonlySet<WorkflowId>): PastRunLoadResult;
95
+ /** Returns the stable base directory for workflow data. */
96
+ getBaseDir(): string;
97
+ /** Returns the checkpoint store for the current orchestrator (creates orchestrator if needed). */
98
+ getCheckpointStore(): FileCheckpointStore;
99
+ private _checkpointStore;
100
+ /**
101
+ * Resolves and parses the WorkflowDefinition associated with a workflow run.
102
+ *
103
+ * Preference order:
104
+ * 1. Local JSON copy at `{baseDir}/{workflowId}/definition.json` (written
105
+ * at workflow-start / import). Tried regardless of whether a checkpoint
106
+ * is available.
107
+ * 2. The original `checkpoint.definitionPath`, iff `checkpoint` is defined.
108
+ *
109
+ * When `checkpoint` is `undefined` we have nothing beyond the local copy to
110
+ * try — a directory with no checkpoint and no `definition.json` has no
111
+ * content worth surfacing and is reported as `not_found` (distinct from
112
+ * `corrupted`, which is reserved for present-but-malformed files).
113
+ *
114
+ * Any parse or schema-validation failure of a present file is surfaced as
115
+ * `corrupted`.
116
+ */
117
+ private loadDefinitionForCheckpoint;
118
+ private createOrchestrator;
119
+ private createNoOpTab;
120
+ /** Maps WorkflowLifecycleEvent to web event bus events. */
121
+ private forwardLifecycleEvent;
122
+ }
@@ -0,0 +1,308 @@
1
+ /**
2
+ * WorkflowManager -- owns WorkflowOrchestrator instances for the web UI
3
+ * and the CLI inspect path.
4
+ *
5
+ * Analogous to SessionManager: the daemon creates one WorkflowManager
6
+ * at startup and passes it into the dispatch context. Lifecycle events
7
+ * from the orchestrator are forwarded to the supplied event bus, which
8
+ * the WebUiServer subscribes to.
9
+ *
10
+ * Layered under `src/workflow/` (rather than `src/web-ui/`) so that
11
+ * non-web consumers (CLI, signal bot daemon) can reuse it without
12
+ * pulling in the web UI module. The event bus parameter is typed
13
+ * against the generic {@link TypedEventBus} fixed to {@link WebEventMap}
14
+ * so existing callers can keep passing `WebEventBus` instances; the
15
+ * `WebEventMap` is a type-only import and adds no runtime coupling.
16
+ */
17
+ import { mkdirSync, copyFileSync, existsSync } from 'node:fs';
18
+ import { resolve } from 'node:path';
19
+ import { WorkflowOrchestrator, } from './orchestrator.js';
20
+ import { FileCheckpointStore } from './checkpoint.js';
21
+ import { createWorkflowSessionFactory } from './cli-support.js';
22
+ import { findLatestResumableCheckpoint } from './checkpoint-selection.js';
23
+ import { loadDefinition } from './definition-loader.js';
24
+ import { getIronCurtainHome } from '../config/paths.js';
25
+ import { loadConfig } from '../config/index.js';
26
+ import { toHumanGateRequestDto, } from './types.js';
27
+ /** Renders an unknown thrown value as a short human-readable string. */
28
+ function describeError(err) {
29
+ if (err instanceof Error)
30
+ return err.message;
31
+ if (typeof err === 'string')
32
+ return err;
33
+ return String(err);
34
+ }
35
+ // ---------------------------------------------------------------------------
36
+ // WorkflowManager
37
+ // ---------------------------------------------------------------------------
38
+ export class WorkflowManager {
39
+ orchestrator = null;
40
+ eventBus;
41
+ baseDirOverride;
42
+ constructor(options) {
43
+ this.eventBus = options.eventBus;
44
+ this.baseDirOverride = options.baseDirOverride;
45
+ }
46
+ /** Lazily creates the orchestrator on first use. */
47
+ getOrchestrator() {
48
+ if (!this.orchestrator) {
49
+ this.orchestrator = this.createOrchestrator();
50
+ }
51
+ return this.orchestrator;
52
+ }
53
+ /** Clean shutdown of all workflows. */
54
+ async shutdown() {
55
+ if (this.orchestrator) {
56
+ await this.orchestrator.shutdownAll();
57
+ this.orchestrator = null;
58
+ }
59
+ }
60
+ /**
61
+ * Imports a checkpoint from an external directory into the daemon's own store.
62
+ *
63
+ * When `workflowId` is omitted, picks the most recent checkpoint in the external dir.
64
+ * Copies both the checkpoint and `definition.json` so that `resume()` can find them.
65
+ *
66
+ * @returns The workflow ID that was imported.
67
+ */
68
+ importExternalCheckpoint(externalBaseDir, workflowId) {
69
+ const externalStore = new FileCheckpointStore(externalBaseDir);
70
+ let targetId;
71
+ if (workflowId) {
72
+ targetId = workflowId;
73
+ }
74
+ else {
75
+ // `findLatestResumableCheckpoint` returns the most recent resumable
76
+ // run by `checkpoint.timestamp`. The two error paths preserve the
77
+ // pre-refactor wording so external callers (web UI, scripts) keep
78
+ // their existing diagnostics.
79
+ const latest = findLatestResumableCheckpoint(externalBaseDir, externalStore);
80
+ if (!latest) {
81
+ // Distinguish "no checkpoint files at all" from "checkpoints exist
82
+ // but none are resumable" using a single fast probe — the helper
83
+ // already enumerated and filtered, so we re-derive the discriminator
84
+ // by checking the store directly.
85
+ if (externalStore.listAll().length === 0) {
86
+ throw new Error(`No checkpoints found in ${externalBaseDir}`);
87
+ }
88
+ throw new Error(`No valid checkpoints found in ${externalBaseDir}`);
89
+ }
90
+ targetId = latest.workflowId;
91
+ }
92
+ const checkpoint = externalStore.load(targetId);
93
+ if (!checkpoint) {
94
+ throw new Error(`No checkpoint found for workflow ${targetId} in ${externalBaseDir}`);
95
+ }
96
+ // Save into daemon's own store
97
+ const localStore = this.getCheckpointStore();
98
+ localStore.save(targetId, checkpoint);
99
+ // Copy definition.json if it exists in the external dir
100
+ const externalDefPath = resolve(externalBaseDir, targetId, 'definition.json');
101
+ const localMetaDir = resolve(this.getBaseDir(), targetId);
102
+ mkdirSync(localMetaDir, { recursive: true });
103
+ if (existsSync(externalDefPath)) {
104
+ copyFileSync(externalDefPath, resolve(localMetaDir, 'definition.json'));
105
+ }
106
+ return targetId;
107
+ }
108
+ /**
109
+ * Loads a past workflow run from disk. Returns domain objects only.
110
+ *
111
+ * - `not_found`: directory missing OR no loadable checkpoint + no loadable definition.
112
+ * - `corrupted`: a present file failed to parse. Never throws.
113
+ * - On success, `checkpoint` may be `undefined`; `definition` and `messageLogPath` are always set.
114
+ *
115
+ * Pass `activeIds` when calling in a loop (e.g. `buildResumableList`) to skip
116
+ * the per-call `controller.listActive()` allocation.
117
+ */
118
+ loadPastRun(workflowId, activeIds) {
119
+ const store = this.getCheckpointStore();
120
+ const messageLogPath = resolve(this.getBaseDir(), workflowId, 'messages.jsonl');
121
+ let checkpoint;
122
+ try {
123
+ checkpoint = store.load(workflowId);
124
+ }
125
+ catch (err) {
126
+ return {
127
+ error: 'corrupted',
128
+ message: `Failed to parse checkpoint for ${workflowId}: ${describeError(err)}`,
129
+ };
130
+ }
131
+ const definitionResult = this.loadDefinitionForCheckpoint(workflowId, checkpoint);
132
+ if ('error' in definitionResult) {
133
+ return definitionResult;
134
+ }
135
+ const isLive = activeIds ? activeIds.has(workflowId) : this.getOrchestrator().listActive().includes(workflowId);
136
+ return { checkpoint, definition: definitionResult.definition, messageLogPath, isLive };
137
+ }
138
+ /** Returns the stable base directory for workflow data. */
139
+ getBaseDir() {
140
+ const baseDir = this.baseDirOverride ?? resolve(getIronCurtainHome(), 'workflow-runs');
141
+ mkdirSync(baseDir, { recursive: true });
142
+ return baseDir;
143
+ }
144
+ /** Returns the checkpoint store for the current orchestrator (creates orchestrator if needed). */
145
+ getCheckpointStore() {
146
+ // Ensure orchestrator is created so checkpoint store exists
147
+ this.getOrchestrator();
148
+ if (!this._checkpointStore) {
149
+ throw new Error('Checkpoint store not initialized -- orchestrator creation failed');
150
+ }
151
+ return this._checkpointStore;
152
+ }
153
+ // -----------------------------------------------------------------------
154
+ // Private
155
+ // -----------------------------------------------------------------------
156
+ _checkpointStore = null;
157
+ /**
158
+ * Resolves and parses the WorkflowDefinition associated with a workflow run.
159
+ *
160
+ * Preference order:
161
+ * 1. Local JSON copy at `{baseDir}/{workflowId}/definition.json` (written
162
+ * at workflow-start / import). Tried regardless of whether a checkpoint
163
+ * is available.
164
+ * 2. The original `checkpoint.definitionPath`, iff `checkpoint` is defined.
165
+ *
166
+ * When `checkpoint` is `undefined` we have nothing beyond the local copy to
167
+ * try — a directory with no checkpoint and no `definition.json` has no
168
+ * content worth surfacing and is reported as `not_found` (distinct from
169
+ * `corrupted`, which is reserved for present-but-malformed files).
170
+ *
171
+ * Any parse or schema-validation failure of a present file is surfaced as
172
+ * `corrupted`.
173
+ */
174
+ loadDefinitionForCheckpoint(workflowId, checkpoint) {
175
+ const definitionCopyPath = resolve(this.getBaseDir(), workflowId, 'definition.json');
176
+ const hasCopy = existsSync(definitionCopyPath);
177
+ let definitionPath;
178
+ if (hasCopy) {
179
+ definitionPath = definitionCopyPath;
180
+ }
181
+ else if (checkpoint && existsSync(checkpoint.definitionPath)) {
182
+ definitionPath = checkpoint.definitionPath;
183
+ }
184
+ if (!definitionPath) {
185
+ // Nothing to load: no local copy, and either no checkpoint at all or
186
+ // the checkpoint's original `definitionPath` is gone. The directory
187
+ // has no renderable content — report `not_found` rather than
188
+ // `corrupted` (corrupted is reserved for present-but-malformed files).
189
+ const fallbackDetail = checkpoint ? ` and ${checkpoint.definitionPath}` : '';
190
+ return {
191
+ error: 'not_found',
192
+ message: `Definition file missing for ${workflowId} (looked in ${definitionCopyPath}${fallbackDetail})`,
193
+ };
194
+ }
195
+ // Both `parse` and `validate` failures map to `corrupted`: the file is
196
+ // present on disk but unusable. Preserve the pre-refactor message
197
+ // wording so existing UI consumers keep their diagnostic strings.
198
+ const result = loadDefinition(definitionPath);
199
+ if (result.ok)
200
+ return { definition: result.definition };
201
+ if (result.kind === 'parse') {
202
+ return {
203
+ error: 'corrupted',
204
+ message: `Failed to parse definition at ${definitionPath}: ${result.message}`,
205
+ };
206
+ }
207
+ // `validate`: prefer the structured issues list when present (parity
208
+ // with the old `WorkflowValidationError.issues.join('; ')` path); fall
209
+ // back to the loader's default message otherwise.
210
+ const detail = result.issues ? result.issues.join('; ') : result.message;
211
+ return {
212
+ error: 'corrupted',
213
+ message: `Invalid workflow definition at ${definitionPath}: ${detail}`,
214
+ };
215
+ }
216
+ createOrchestrator() {
217
+ const baseDir = this.getBaseDir();
218
+ const checkpointStore = new FileCheckpointStore(baseDir);
219
+ this._checkpointStore = checkpointStore;
220
+ const sessionFactory = createWorkflowSessionFactory();
221
+ const config = loadConfig();
222
+ const deps = {
223
+ createSession: sessionFactory,
224
+ createWorkflowTab: () => this.createNoOpTab(),
225
+ raiseGate: (gate) => {
226
+ const dto = toHumanGateRequestDto(gate);
227
+ this.eventBus.emit('workflow.gate_raised', {
228
+ workflowId: gate.workflowId,
229
+ gate: dto,
230
+ });
231
+ },
232
+ dismissGate: (workflowId, gateId) => {
233
+ this.eventBus.emit('workflow.gate_dismissed', { workflowId, gateId });
234
+ },
235
+ baseDir,
236
+ checkpointStore,
237
+ userConfig: config.userConfig,
238
+ };
239
+ const orchestrator = new WorkflowOrchestrator(deps);
240
+ orchestrator.onEvent((event) => this.forwardLifecycleEvent(event));
241
+ return orchestrator;
242
+ }
243
+ createNoOpTab() {
244
+ return {
245
+ write() { },
246
+ setLabel() { },
247
+ close() { },
248
+ };
249
+ }
250
+ /** Maps WorkflowLifecycleEvent to web event bus events. */
251
+ forwardLifecycleEvent(event) {
252
+ switch (event.kind) {
253
+ case 'started':
254
+ this.eventBus.emit('workflow.started', {
255
+ workflowId: event.workflowId,
256
+ name: event.name,
257
+ taskDescription: event.taskDescription,
258
+ });
259
+ break;
260
+ case 'state_entered':
261
+ this.eventBus.emit('workflow.state_entered', {
262
+ workflowId: event.workflowId,
263
+ state: event.state,
264
+ });
265
+ break;
266
+ case 'completed':
267
+ this.eventBus.emit('workflow.completed', {
268
+ workflowId: event.workflowId,
269
+ });
270
+ break;
271
+ case 'failed':
272
+ this.eventBus.emit('workflow.failed', {
273
+ workflowId: event.workflowId,
274
+ error: event.error,
275
+ });
276
+ break;
277
+ case 'gate_raised':
278
+ // Already emitted via raiseGate callback
279
+ break;
280
+ case 'gate_dismissed':
281
+ // Already emitted via dismissGate callback
282
+ break;
283
+ case 'agent_started':
284
+ this.eventBus.emit('workflow.agent_started', {
285
+ workflowId: event.workflowId,
286
+ stateId: event.state,
287
+ persona: event.persona,
288
+ sessionId: event.sessionId,
289
+ });
290
+ break;
291
+ case 'agent_completed':
292
+ this.eventBus.emit('workflow.agent_completed', {
293
+ workflowId: event.workflowId,
294
+ stateId: event.state,
295
+ verdict: event.verdict,
296
+ });
297
+ break;
298
+ case 'agent_session_ended':
299
+ this.eventBus.emit('workflow.agent_session_ended', {
300
+ workflowId: event.workflowId,
301
+ stateId: event.state,
302
+ sessionId: event.sessionId,
303
+ });
304
+ break;
305
+ }
306
+ }
307
+ }
308
+ //# sourceMappingURL=workflow-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-manager.js","sourceRoot":"","sources":["../../src/workflow/workflow-manager.ts"],"names":[],"mappings":"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"}