@provos/ironcurtain 0.10.0 → 0.12.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 (660) hide show
  1. package/README.md +68 -14
  2. package/dist/auth/oauth-provider.js +1 -4
  3. package/dist/auth/oauth-provider.js.map +1 -1
  4. package/dist/cli-help.d.ts +12 -0
  5. package/dist/cli-help.js +21 -0
  6. package/dist/cli-help.js.map +1 -1
  7. package/dist/cli.js +46 -6
  8. package/dist/cli.js.map +1 -1
  9. package/dist/config/agent-model-guard.d.ts +14 -0
  10. package/dist/config/agent-model-guard.js +24 -0
  11. package/dist/config/agent-model-guard.js.map +1 -0
  12. package/dist/config/config-command.js +277 -7
  13. package/dist/config/config-command.js.map +1 -1
  14. package/dist/config/first-start.js +62 -7
  15. package/dist/config/first-start.js.map +1 -1
  16. package/dist/config/generated/compiled-policy.json +528 -161
  17. package/dist/config/generated/test-scenarios.json +4810 -170
  18. package/dist/config/generated/tool-annotations.json +34 -47
  19. package/dist/config/index.d.ts +58 -0
  20. package/dist/config/index.js +97 -15
  21. package/dist/config/index.js.map +1 -1
  22. package/dist/config/mcp-servers.json +2 -2
  23. package/dist/config/model-provider.d.ts +9 -0
  24. package/dist/config/model-provider.js +13 -0
  25. package/dist/config/model-provider.js.map +1 -1
  26. package/dist/config/paths.d.ts +217 -0
  27. package/dist/config/paths.js +363 -14
  28. package/dist/config/paths.js.map +1 -1
  29. package/dist/config/types.d.ts +7 -1
  30. package/dist/config/user-config.d.ts +101 -6
  31. package/dist/config/user-config.js +145 -31
  32. package/dist/config/user-config.js.map +1 -1
  33. package/dist/config/validate-policy-dir.d.ts +10 -0
  34. package/dist/config/validate-policy-dir.js +59 -0
  35. package/dist/config/validate-policy-dir.js.map +1 -0
  36. package/dist/cron/job-commands.js +22 -2
  37. package/dist/cron/job-commands.js.map +1 -1
  38. package/dist/cron/types.d.ts +16 -2
  39. package/dist/cron/types.js +1 -3
  40. package/dist/cron/types.js.map +1 -1
  41. package/dist/daemon/daemon-command.js +30 -7
  42. package/dist/daemon/daemon-command.js.map +1 -1
  43. package/dist/daemon/ironcurtain-daemon.d.ts +62 -1
  44. package/dist/daemon/ironcurtain-daemon.js +231 -8
  45. package/dist/daemon/ironcurtain-daemon.js.map +1 -1
  46. package/dist/daemon-client/daemon-client.d.ts +123 -0
  47. package/dist/daemon-client/daemon-client.js +324 -0
  48. package/dist/daemon-client/daemon-client.js.map +1 -0
  49. package/dist/docker/adapters/claude-code.js +194 -20
  50. package/dist/docker/adapters/claude-code.js.map +1 -1
  51. package/dist/docker/adapters/codex.d.ts +9 -0
  52. package/dist/docker/adapters/codex.js +297 -0
  53. package/dist/docker/adapters/codex.js.map +1 -0
  54. package/dist/docker/adapters/goose.d.ts +12 -11
  55. package/dist/docker/adapters/goose.js +80 -27
  56. package/dist/docker/adapters/goose.js.map +1 -1
  57. package/dist/docker/agent-adapter.d.ts +183 -5
  58. package/dist/docker/agent-adapter.js +16 -0
  59. package/dist/docker/agent-adapter.js.map +1 -1
  60. package/dist/docker/agent-registry.js +5 -0
  61. package/dist/docker/agent-registry.js.map +1 -1
  62. package/dist/docker/apple-container-manager.d.ts +49 -0
  63. package/dist/docker/apple-container-manager.js +464 -0
  64. package/dist/docker/apple-container-manager.js.map +1 -0
  65. package/dist/docker/code-mode-proxy.d.ts +38 -0
  66. package/dist/docker/code-mode-proxy.js +6 -1
  67. package/dist/docker/code-mode-proxy.js.map +1 -1
  68. package/dist/docker/container-lifecycle.d.ts +2 -2
  69. package/dist/docker/container-lifecycle.js.map +1 -1
  70. package/dist/docker/container-runtime.d.ts +29 -0
  71. package/dist/docker/container-runtime.js +76 -0
  72. package/dist/docker/container-runtime.js.map +1 -0
  73. package/dist/docker/docker-agent-session.d.ts +113 -62
  74. package/dist/docker/docker-agent-session.js +271 -294
  75. package/dist/docker/docker-agent-session.js.map +1 -1
  76. package/dist/docker/docker-infrastructure.d.ts +428 -26
  77. package/dist/docker/docker-infrastructure.js +1005 -70
  78. package/dist/docker/docker-infrastructure.js.map +1 -1
  79. package/dist/docker/docker-manager.d.ts +58 -3
  80. package/dist/docker/docker-manager.js +378 -33
  81. package/dist/docker/docker-manager.js.map +1 -1
  82. package/dist/docker/docker-probe.d.ts +45 -0
  83. package/dist/docker/docker-probe.js +86 -0
  84. package/dist/docker/docker-probe.js.map +1 -0
  85. package/dist/docker/docker-progress-sink.d.ts +43 -0
  86. package/dist/docker/docker-progress-sink.js +299 -0
  87. package/dist/docker/docker-progress-sink.js.map +1 -0
  88. package/dist/docker/mitm-proxy.d.ts +135 -1
  89. package/dist/docker/mitm-proxy.js +611 -25
  90. package/dist/docker/mitm-proxy.js.map +1 -1
  91. package/dist/docker/network-topology.d.ts +81 -0
  92. package/dist/docker/network-topology.js +160 -0
  93. package/dist/docker/network-topology.js.map +1 -0
  94. package/dist/docker/oauth-credentials.d.ts +59 -3
  95. package/dist/docker/oauth-credentials.js +181 -14
  96. package/dist/docker/oauth-credentials.js.map +1 -1
  97. package/dist/docker/oauth-token-manager.js +2 -2
  98. package/dist/docker/oauth-token-manager.js.map +1 -1
  99. package/dist/docker/orientation.d.ts +1 -1
  100. package/dist/docker/package-types.d.ts +1 -1
  101. package/dist/docker/provider-config.d.ts +78 -3
  102. package/dist/docker/provider-config.js +295 -31
  103. package/dist/docker/provider-config.js.map +1 -1
  104. package/dist/docker/provision-lock.d.ts +46 -0
  105. package/dist/docker/provision-lock.js +152 -0
  106. package/dist/docker/provision-lock.js.map +1 -0
  107. package/dist/docker/proxy-tools.d.ts +0 -2
  108. package/dist/docker/proxy-tools.js +2 -7
  109. package/dist/docker/proxy-tools.js.map +1 -1
  110. package/dist/docker/pty-session.d.ts +64 -1
  111. package/dist/docker/pty-session.js +306 -104
  112. package/dist/docker/pty-session.js.map +1 -1
  113. package/dist/docker/pty-types.d.ts +0 -2
  114. package/dist/docker/pty-types.js +0 -2
  115. package/dist/docker/pty-types.js.map +1 -1
  116. package/dist/docker/registry-proxy.d.ts +46 -0
  117. package/dist/docker/registry-proxy.js +255 -1
  118. package/dist/docker/registry-proxy.js.map +1 -1
  119. package/dist/docker/resource-limits.d.ts +134 -0
  120. package/dist/docker/resource-limits.js +203 -0
  121. package/dist/docker/resource-limits.js.map +1 -0
  122. package/dist/docker/spawn-with-idle-timeout.d.ts +39 -0
  123. package/dist/docker/spawn-with-idle-timeout.js +152 -0
  124. package/dist/docker/spawn-with-idle-timeout.js.map +1 -0
  125. package/dist/docker/sse-extractor.d.ts +51 -0
  126. package/dist/docker/sse-extractor.js +303 -0
  127. package/dist/docker/sse-extractor.js.map +1 -0
  128. package/dist/docker/token-stream-bus.d.ts +83 -0
  129. package/dist/docker/token-stream-bus.js +98 -0
  130. package/dist/docker/token-stream-bus.js.map +1 -0
  131. package/dist/docker/token-stream-types.d.ts +71 -0
  132. package/dist/docker/token-stream-types.js +8 -0
  133. package/dist/docker/token-stream-types.js.map +1 -0
  134. package/dist/docker/trajectory-capture.d.ts +79 -0
  135. package/dist/docker/trajectory-capture.js +521 -0
  136. package/dist/docker/trajectory-capture.js.map +1 -0
  137. package/dist/docker/trajectory-reassembler.d.ts +286 -0
  138. package/dist/docker/trajectory-reassembler.js +990 -0
  139. package/dist/docker/trajectory-reassembler.js.map +1 -0
  140. package/dist/docker/trajectory-tap.d.ts +100 -0
  141. package/dist/docker/trajectory-tap.js +410 -0
  142. package/dist/docker/trajectory-tap.js.map +1 -0
  143. package/dist/docker/trajectory-types.d.ts +187 -0
  144. package/dist/docker/trajectory-types.js +43 -0
  145. package/dist/docker/trajectory-types.js.map +1 -0
  146. package/dist/docker/types.d.ts +105 -12
  147. package/dist/doctor/checks.d.ts +171 -0
  148. package/dist/doctor/checks.js +598 -0
  149. package/dist/doctor/checks.js.map +1 -0
  150. package/dist/doctor/doctor-command.d.ts +29 -0
  151. package/dist/doctor/doctor-command.js +190 -0
  152. package/dist/doctor/doctor-command.js.map +1 -0
  153. package/dist/doctor/mcp-liveness.d.ts +28 -0
  154. package/dist/doctor/mcp-liveness.js +92 -0
  155. package/dist/doctor/mcp-liveness.js.map +1 -0
  156. package/dist/doctor/oauth-checks.d.ts +23 -0
  157. package/dist/doctor/oauth-checks.js +157 -0
  158. package/dist/doctor/oauth-checks.js.map +1 -0
  159. package/dist/doctor/output.d.ts +26 -0
  160. package/dist/doctor/output.js +82 -0
  161. package/dist/doctor/output.js.map +1 -0
  162. package/dist/escalation/listener-command.js +0 -3
  163. package/dist/escalation/listener-command.js.map +1 -1
  164. package/dist/event-bus/typed-event-bus.d.ts +26 -0
  165. package/dist/event-bus/typed-event-bus.js +35 -0
  166. package/dist/event-bus/typed-event-bus.js.map +1 -0
  167. package/dist/index.js +54 -21
  168. package/dist/index.js.map +1 -1
  169. package/dist/logger.js +31 -2
  170. package/dist/logger.js.map +1 -1
  171. package/dist/memory/auto-save.d.ts +18 -4
  172. package/dist/memory/auto-save.js +46 -6
  173. package/dist/memory/auto-save.js.map +1 -1
  174. package/dist/memory/memory-policy.d.ts +41 -0
  175. package/dist/memory/memory-policy.js +36 -0
  176. package/dist/memory/memory-policy.js.map +1 -0
  177. package/dist/mux/mux-app.d.ts +2 -0
  178. package/dist/mux/mux-app.js +1 -0
  179. package/dist/mux/mux-app.js.map +1 -1
  180. package/dist/mux/mux-command.d.ts +10 -1
  181. package/dist/mux/mux-command.js +74 -40
  182. package/dist/mux/mux-command.js.map +1 -1
  183. package/dist/mux/mux-renderer.js +2 -12
  184. package/dist/mux/mux-renderer.js.map +1 -1
  185. package/dist/mux/pty-bridge.d.ts +2 -0
  186. package/dist/mux/pty-bridge.js +3 -0
  187. package/dist/mux/pty-bridge.js.map +1 -1
  188. package/dist/mux/session-scanner.js +1 -2
  189. package/dist/mux/session-scanner.js.map +1 -1
  190. package/dist/{pipeline → observability}/llm-logger.d.ts +8 -3
  191. package/dist/{pipeline → observability}/llm-logger.js +8 -3
  192. package/dist/observability/llm-logger.js.map +1 -0
  193. package/dist/observe/observe-command.d.ts +12 -0
  194. package/dist/observe/observe-command.js +285 -0
  195. package/dist/observe/observe-command.js.map +1 -0
  196. package/dist/observe/observe-renderer.d.ts +24 -0
  197. package/dist/observe/observe-renderer.js +87 -0
  198. package/dist/observe/observe-renderer.js.map +1 -0
  199. package/dist/observe/observe-tui-rain.d.ts +42 -0
  200. package/dist/observe/observe-tui-rain.js +531 -0
  201. package/dist/observe/observe-tui-rain.js.map +1 -0
  202. package/dist/observe/observe-tui-text-panel.d.ts +46 -0
  203. package/dist/observe/observe-tui-text-panel.js +525 -0
  204. package/dist/observe/observe-tui-text-panel.js.map +1 -0
  205. package/dist/observe/observe-tui-types.d.ts +270 -0
  206. package/dist/observe/observe-tui-types.js +200 -0
  207. package/dist/observe/observe-tui-types.js.map +1 -0
  208. package/dist/observe/observe-tui-word-scorer.d.ts +143 -0
  209. package/dist/observe/observe-tui-word-scorer.js +572 -0
  210. package/dist/observe/observe-tui-word-scorer.js.map +1 -0
  211. package/dist/observe/observe-tui.d.ts +59 -0
  212. package/dist/observe/observe-tui.js +592 -0
  213. package/dist/observe/observe-tui.js.map +1 -0
  214. package/dist/persona/broad-policy-validator.d.ts +95 -0
  215. package/dist/persona/broad-policy-validator.js +171 -0
  216. package/dist/persona/broad-policy-validator.js.map +1 -0
  217. package/dist/persona/compile-persona-policy.d.ts +54 -2
  218. package/dist/persona/compile-persona-policy.js +29 -4
  219. package/dist/persona/compile-persona-policy.js.map +1 -1
  220. package/dist/persona/event-bus-progress-reporter.d.ts +57 -0
  221. package/dist/persona/event-bus-progress-reporter.js +66 -0
  222. package/dist/persona/event-bus-progress-reporter.js.map +1 -0
  223. package/dist/persona/memory-gate.d.ts +19 -0
  224. package/dist/persona/memory-gate.js +33 -0
  225. package/dist/persona/memory-gate.js.map +1 -0
  226. package/dist/persona/persona-command.js +77 -72
  227. package/dist/persona/persona-command.js.map +1 -1
  228. package/dist/persona/persona-compile-orchestrator.d.ts +101 -0
  229. package/dist/persona/persona-compile-orchestrator.js +504 -0
  230. package/dist/persona/persona-compile-orchestrator.js.map +1 -0
  231. package/dist/persona/persona-service.d.ts +137 -0
  232. package/dist/persona/persona-service.js +263 -0
  233. package/dist/persona/persona-service.js.map +1 -0
  234. package/dist/persona/policy-mutation-audit.d.ts +109 -0
  235. package/dist/persona/policy-mutation-audit.js +179 -0
  236. package/dist/persona/policy-mutation-audit.js.map +1 -0
  237. package/dist/persona/resolve.d.ts +22 -0
  238. package/dist/persona/resolve.js +45 -2
  239. package/dist/persona/resolve.js.map +1 -1
  240. package/dist/persona/rule-delta.d.ts +30 -0
  241. package/dist/persona/rule-delta.js +82 -0
  242. package/dist/persona/rule-delta.js.map +1 -0
  243. package/dist/persona/types.d.ts +28 -0
  244. package/dist/pipeline/annotate.js +10 -2
  245. package/dist/pipeline/annotate.js.map +1 -1
  246. package/dist/pipeline/compile.js +14 -2
  247. package/dist/pipeline/compile.js.map +1 -1
  248. package/dist/pipeline/constitution-compiler.d.ts +25 -14
  249. package/dist/pipeline/constitution-compiler.js +107 -38
  250. package/dist/pipeline/constitution-compiler.js.map +1 -1
  251. package/dist/pipeline/dynamic-list-types.d.ts +3 -6
  252. package/dist/pipeline/dynamic-list-types.js +3 -16
  253. package/dist/pipeline/dynamic-list-types.js.map +1 -1
  254. package/dist/pipeline/pipeline-runner.d.ts +63 -4
  255. package/dist/pipeline/pipeline-runner.js +242 -94
  256. package/dist/pipeline/pipeline-runner.js.map +1 -1
  257. package/dist/pipeline/pipeline-shared.d.ts +33 -4
  258. package/dist/pipeline/pipeline-shared.js +79 -19
  259. package/dist/pipeline/pipeline-shared.js.map +1 -1
  260. package/dist/pipeline/policy-verifier.js +16 -3
  261. package/dist/pipeline/policy-verifier.js.map +1 -1
  262. package/dist/pipeline/proxy-mcp-connections.js +17 -2
  263. package/dist/pipeline/proxy-mcp-connections.js.map +1 -1
  264. package/dist/pipeline/refresh-lists.js +3 -5
  265. package/dist/pipeline/refresh-lists.js.map +1 -1
  266. package/dist/pipeline/scenario-generator.d.ts +4 -8
  267. package/dist/pipeline/scenario-generator.js +13 -46
  268. package/dist/pipeline/scenario-generator.js.map +1 -1
  269. package/dist/sandbox/index.d.ts +29 -0
  270. package/dist/sandbox/index.js +351 -119
  271. package/dist/sandbox/index.js.map +1 -1
  272. package/dist/sandbox/ironcurtain-protocol.d.ts +52 -0
  273. package/dist/sandbox/ironcurtain-protocol.js +185 -0
  274. package/dist/sandbox/ironcurtain-protocol.js.map +1 -0
  275. package/dist/session/agent-session.d.ts +6 -0
  276. package/dist/session/agent-session.js +16 -5
  277. package/dist/session/agent-session.js.map +1 -1
  278. package/dist/session/cli-transport.js +0 -6
  279. package/dist/session/cli-transport.js.map +1 -1
  280. package/dist/session/index.d.ts +35 -14
  281. package/dist/session/index.js +333 -130
  282. package/dist/session/index.js.map +1 -1
  283. package/dist/session/preflight.d.ts +21 -13
  284. package/dist/session/preflight.js +227 -88
  285. package/dist/session/preflight.js.map +1 -1
  286. package/dist/session/prompts.d.ts +2 -5
  287. package/dist/session/prompts.js.map +1 -1
  288. package/dist/session/session-manager.d.ts +61 -6
  289. package/dist/session/session-manager.js +72 -10
  290. package/dist/session/session-manager.js.map +1 -1
  291. package/dist/session/session-metadata.d.ts +21 -5
  292. package/dist/session/session-metadata.js +34 -12
  293. package/dist/session/session-metadata.js.map +1 -1
  294. package/dist/session/types.d.ts +320 -5
  295. package/dist/session/types.js +57 -1
  296. package/dist/session/types.js.map +1 -1
  297. package/dist/signal/bot-command.js +6 -1
  298. package/dist/signal/bot-command.js.map +1 -1
  299. package/dist/signal/setup-signal.js +13 -21
  300. package/dist/signal/setup-signal.js.map +1 -1
  301. package/dist/signal/signal-bot-daemon.d.ts +16 -1
  302. package/dist/signal/signal-bot-daemon.js +39 -27
  303. package/dist/signal/signal-bot-daemon.js.map +1 -1
  304. package/dist/signal/signal-container.d.ts +3 -3
  305. package/dist/signal/signal-container.js +9 -3
  306. package/dist/signal/signal-container.js.map +1 -1
  307. package/dist/skills/discovery.d.ts +77 -0
  308. package/dist/skills/discovery.js +206 -0
  309. package/dist/skills/discovery.js.map +1 -0
  310. package/dist/skills/index.d.ts +4 -0
  311. package/dist/skills/index.js +3 -0
  312. package/dist/skills/index.js.map +1 -0
  313. package/dist/skills/staging.d.ts +28 -0
  314. package/dist/skills/staging.js +68 -0
  315. package/dist/skills/staging.js.map +1 -0
  316. package/dist/skills/types.d.ts +46 -0
  317. package/dist/skills/types.js +2 -0
  318. package/dist/skills/types.js.map +1 -0
  319. package/dist/trusted-process/approval-whitelist.d.ts +0 -2
  320. package/dist/trusted-process/approval-whitelist.js +17 -17
  321. package/dist/trusted-process/approval-whitelist.js.map +1 -1
  322. package/dist/trusted-process/async-mutex.d.ts +32 -0
  323. package/dist/trusted-process/async-mutex.js +50 -0
  324. package/dist/trusted-process/async-mutex.js.map +1 -0
  325. package/dist/trusted-process/audit-log.d.ts +38 -1
  326. package/dist/trusted-process/audit-log.js +82 -13
  327. package/dist/trusted-process/audit-log.js.map +1 -1
  328. package/dist/trusted-process/call-circuit-breaker.d.ts +6 -0
  329. package/dist/trusted-process/call-circuit-breaker.js +23 -3
  330. package/dist/trusted-process/call-circuit-breaker.js.map +1 -1
  331. package/dist/trusted-process/container-command.d.ts +35 -0
  332. package/dist/trusted-process/container-command.js +49 -0
  333. package/dist/trusted-process/container-command.js.map +1 -0
  334. package/dist/trusted-process/control-server.d.ts +101 -0
  335. package/dist/trusted-process/control-server.js +282 -0
  336. package/dist/trusted-process/control-server.js.map +1 -0
  337. package/dist/trusted-process/domain-utils.d.ts +6 -6
  338. package/dist/trusted-process/domain-utils.js +7 -23
  339. package/dist/trusted-process/domain-utils.js.map +1 -1
  340. package/dist/trusted-process/error-prefixes.d.ts +16 -0
  341. package/dist/trusted-process/error-prefixes.js +17 -0
  342. package/dist/trusted-process/error-prefixes.js.map +1 -0
  343. package/dist/trusted-process/index.d.ts +40 -23
  344. package/dist/trusted-process/index.js +131 -225
  345. package/dist/trusted-process/index.js.map +1 -1
  346. package/dist/trusted-process/list-matcher.d.ts +17 -0
  347. package/dist/trusted-process/list-matcher.js +31 -0
  348. package/dist/trusted-process/list-matcher.js.map +1 -0
  349. package/dist/trusted-process/mcp-client-manager.d.ts +35 -6
  350. package/dist/trusted-process/mcp-client-manager.js +40 -45
  351. package/dist/trusted-process/mcp-client-manager.js.map +1 -1
  352. package/dist/trusted-process/mcp-proxy-server.d.ts +31 -120
  353. package/dist/trusted-process/mcp-proxy-server.js +201 -660
  354. package/dist/trusted-process/mcp-proxy-server.js.map +1 -1
  355. package/dist/trusted-process/policy-engine.d.ts +16 -4
  356. package/dist/trusted-process/policy-engine.js +103 -47
  357. package/dist/trusted-process/policy-engine.js.map +1 -1
  358. package/dist/trusted-process/policy-roots.d.ts +6 -0
  359. package/dist/trusted-process/policy-roots.js +20 -0
  360. package/dist/trusted-process/policy-roots.js.map +1 -1
  361. package/dist/trusted-process/sandbox-integration.d.ts +12 -0
  362. package/dist/trusted-process/sandbox-integration.js +18 -0
  363. package/dist/trusted-process/sandbox-integration.js.map +1 -1
  364. package/dist/trusted-process/tcp-server-transport.d.ts +12 -1
  365. package/dist/trusted-process/tcp-server-transport.js +9 -1
  366. package/dist/trusted-process/tcp-server-transport.js.map +1 -1
  367. package/dist/trusted-process/tool-call-coordinator.d.ts +283 -0
  368. package/dist/trusted-process/tool-call-coordinator.js +592 -0
  369. package/dist/trusted-process/tool-call-coordinator.js.map +1 -0
  370. package/dist/trusted-process/tool-call-pipeline.d.ts +213 -0
  371. package/dist/trusted-process/tool-call-pipeline.js +832 -0
  372. package/dist/trusted-process/tool-call-pipeline.js.map +1 -0
  373. package/dist/trusted-process/tool-description-hints.d.ts +1 -1
  374. package/dist/types/argument-roles.d.ts +1 -1
  375. package/dist/types/argument-roles.js +14 -1
  376. package/dist/types/argument-roles.js.map +1 -1
  377. package/dist/types/audit.d.ts +9 -0
  378. package/dist/{session → types}/errors.d.ts +8 -2
  379. package/dist/{session → types}/errors.js +8 -2
  380. package/dist/types/errors.js.map +1 -0
  381. package/dist/types/reserved-servers.d.ts +11 -0
  382. package/dist/types/reserved-servers.js +12 -0
  383. package/dist/types/reserved-servers.js.map +1 -0
  384. package/dist/types/server-listing.d.ts +14 -0
  385. package/dist/types/server-listing.js +2 -0
  386. package/dist/types/server-listing.js.map +1 -0
  387. package/dist/types/slug.d.ts +2 -0
  388. package/dist/types/slug.js +2 -0
  389. package/dist/types/slug.js.map +1 -1
  390. package/dist/types/url-normalize.d.ts +16 -0
  391. package/dist/types/url-normalize.js +33 -0
  392. package/dist/types/url-normalize.js.map +1 -0
  393. package/dist/util/atomic-write.d.ts +31 -0
  394. package/dist/util/atomic-write.js +43 -0
  395. package/dist/util/atomic-write.js.map +1 -0
  396. package/dist/utils/error-message.d.ts +8 -0
  397. package/dist/utils/error-message.js +11 -0
  398. package/dist/utils/error-message.js.map +1 -0
  399. package/dist/utils/exec-error.d.ts +19 -0
  400. package/dist/utils/exec-error.js +16 -0
  401. package/dist/utils/exec-error.js.map +1 -0
  402. package/dist/utils/is-plain-object.d.ts +7 -0
  403. package/dist/utils/is-plain-object.js +12 -0
  404. package/dist/utils/is-plain-object.js.map +1 -0
  405. package/dist/utils/preflight-checks.d.ts +16 -0
  406. package/dist/utils/preflight-checks.js +178 -0
  407. package/dist/utils/preflight-checks.js.map +1 -0
  408. package/dist/web-ui/__tests__/json-rpc-dispatch.test.d.ts +7 -0
  409. package/dist/web-ui/__tests__/json-rpc-dispatch.test.js +725 -0
  410. package/dist/web-ui/__tests__/json-rpc-dispatch.test.js.map +1 -0
  411. package/dist/web-ui/conn-registry.d.ts +14 -0
  412. package/dist/web-ui/conn-registry.js +25 -0
  413. package/dist/web-ui/conn-registry.js.map +1 -0
  414. package/dist/web-ui/dispatch/escalation-dispatch.d.ts +7 -0
  415. package/dist/web-ui/dispatch/escalation-dispatch.js +52 -0
  416. package/dist/web-ui/dispatch/escalation-dispatch.js.map +1 -0
  417. package/dist/web-ui/dispatch/job-dispatch.d.ts +8 -0
  418. package/dist/web-ui/dispatch/job-dispatch.js +83 -0
  419. package/dist/web-ui/dispatch/job-dispatch.js.map +1 -0
  420. package/dist/web-ui/dispatch/persona-dispatch.d.ts +50 -0
  421. package/dist/web-ui/dispatch/persona-dispatch.js +269 -0
  422. package/dist/web-ui/dispatch/persona-dispatch.js.map +1 -0
  423. package/dist/web-ui/dispatch/session-dispatch.d.ts +9 -0
  424. package/dist/web-ui/dispatch/session-dispatch.js +219 -0
  425. package/dist/web-ui/dispatch/session-dispatch.js.map +1 -0
  426. package/dist/web-ui/dispatch/token-stream-dispatch.d.ts +15 -0
  427. package/dist/web-ui/dispatch/token-stream-dispatch.js +55 -0
  428. package/dist/web-ui/dispatch/token-stream-dispatch.js.map +1 -0
  429. package/dist/web-ui/dispatch/types.d.ts +54 -0
  430. package/dist/web-ui/dispatch/types.js +72 -0
  431. package/dist/web-ui/dispatch/types.js.map +1 -0
  432. package/dist/web-ui/dispatch/workflow-dispatch.d.ts +103 -0
  433. package/dist/web-ui/dispatch/workflow-dispatch.js +1036 -0
  434. package/dist/web-ui/dispatch/workflow-dispatch.js.map +1 -0
  435. package/dist/web-ui/json-rpc-dispatch.d.ts +12 -0
  436. package/dist/web-ui/json-rpc-dispatch.js +34 -0
  437. package/dist/web-ui/json-rpc-dispatch.js.map +1 -0
  438. package/dist/web-ui/state-graph.d.ts +13 -0
  439. package/dist/web-ui/state-graph.js +82 -0
  440. package/dist/web-ui/state-graph.js.map +1 -0
  441. package/dist/web-ui/token-stream-bridge.d.ts +76 -0
  442. package/dist/web-ui/token-stream-bridge.js +265 -0
  443. package/dist/web-ui/token-stream-bridge.js.map +1 -0
  444. package/dist/web-ui/web-event-bus.d.ts +176 -0
  445. package/dist/web-ui/web-event-bus.js +19 -0
  446. package/dist/web-ui/web-event-bus.js.map +1 -0
  447. package/dist/web-ui/web-session-transport.d.ts +31 -0
  448. package/dist/web-ui/web-session-transport.js +109 -0
  449. package/dist/web-ui/web-session-transport.js.map +1 -0
  450. package/dist/web-ui/web-ui-server.d.ts +90 -0
  451. package/dist/web-ui/web-ui-server.js +477 -0
  452. package/dist/web-ui/web-ui-server.js.map +1 -0
  453. package/dist/web-ui/web-ui-types.d.ts +418 -0
  454. package/dist/web-ui/web-ui-types.js +32 -0
  455. package/dist/web-ui/web-ui-types.js.map +1 -0
  456. package/dist/web-ui/ws-utils.d.ts +5 -0
  457. package/dist/web-ui/ws-utils.js +12 -0
  458. package/dist/web-ui/ws-utils.js.map +1 -0
  459. package/dist/web-ui-static/assets/index-BD5U6ILh.css +1 -0
  460. package/dist/web-ui-static/assets/index-FMsHWEfK.js +79 -0
  461. package/dist/web-ui-static/assets/orbitron-latin-700-normal-4jsRXGGJ.woff2 +0 -0
  462. package/dist/web-ui-static/assets/orbitron-latin-700-normal-DmYOh-W9.woff +0 -0
  463. package/dist/web-ui-static/index.html +14 -0
  464. package/dist/workflow/artifacts.d.ts +59 -0
  465. package/dist/workflow/artifacts.js +188 -0
  466. package/dist/workflow/artifacts.js.map +1 -0
  467. package/dist/workflow/checkpoint-selection.d.ts +34 -0
  468. package/dist/workflow/checkpoint-selection.js +48 -0
  469. package/dist/workflow/checkpoint-selection.js.map +1 -0
  470. package/dist/workflow/checkpoint.d.ts +35 -0
  471. package/dist/workflow/checkpoint.js +84 -0
  472. package/dist/workflow/checkpoint.js.map +1 -0
  473. package/dist/workflow/cli-shared.d.ts +62 -0
  474. package/dist/workflow/cli-shared.js +117 -0
  475. package/dist/workflow/cli-shared.js.map +1 -0
  476. package/dist/workflow/cli-support.d.ts +92 -0
  477. package/dist/workflow/cli-support.js +421 -0
  478. package/dist/workflow/cli-support.js.map +1 -0
  479. package/dist/workflow/container-snapshots.d.ts +29 -0
  480. package/dist/workflow/container-snapshots.js +137 -0
  481. package/dist/workflow/container-snapshots.js.map +1 -0
  482. package/dist/workflow/daemon-gate-commands.d.ts +21 -0
  483. package/dist/workflow/daemon-gate-commands.js +599 -0
  484. package/dist/workflow/daemon-gate-commands.js.map +1 -0
  485. package/dist/workflow/definition-loader.d.ts +32 -0
  486. package/dist/workflow/definition-loader.js +56 -0
  487. package/dist/workflow/definition-loader.js.map +1 -0
  488. package/dist/workflow/discovery.d.ts +107 -0
  489. package/dist/workflow/discovery.js +263 -0
  490. package/dist/workflow/discovery.js.map +1 -0
  491. package/dist/workflow/errors.d.ts +66 -0
  492. package/dist/workflow/errors.js +49 -0
  493. package/dist/workflow/errors.js.map +1 -0
  494. package/dist/workflow/guards.d.ts +8 -0
  495. package/dist/workflow/guards.js +38 -0
  496. package/dist/workflow/guards.js.map +1 -0
  497. package/dist/workflow/lane-template.d.ts +89 -0
  498. package/dist/workflow/lane-template.js +141 -0
  499. package/dist/workflow/lane-template.js.map +1 -0
  500. package/dist/workflow/lint-integration.d.ts +64 -0
  501. package/dist/workflow/lint-integration.js +56 -0
  502. package/dist/workflow/lint-integration.js.map +1 -0
  503. package/dist/workflow/lint.d.ts +72 -0
  504. package/dist/workflow/lint.js +593 -0
  505. package/dist/workflow/lint.js.map +1 -0
  506. package/dist/workflow/machine-builder.d.ts +178 -0
  507. package/dist/workflow/machine-builder.js +678 -0
  508. package/dist/workflow/machine-builder.js.map +1 -0
  509. package/dist/workflow/message-log.d.ts +99 -0
  510. package/dist/workflow/message-log.js +40 -0
  511. package/dist/workflow/message-log.js.map +1 -0
  512. package/dist/workflow/orchestrator.d.ts +954 -0
  513. package/dist/workflow/orchestrator.js +3594 -0
  514. package/dist/workflow/orchestrator.js.map +1 -0
  515. package/dist/workflow/prompt-builder.d.ts +39 -0
  516. package/dist/workflow/prompt-builder.js +243 -0
  517. package/dist/workflow/prompt-builder.js.map +1 -0
  518. package/dist/workflow/run-state-command.d.ts +9 -0
  519. package/dist/workflow/run-state-command.js +414 -0
  520. package/dist/workflow/run-state-command.js.map +1 -0
  521. package/dist/workflow/run-state-debug-capture.d.ts +40 -0
  522. package/dist/workflow/run-state-debug-capture.js +101 -0
  523. package/dist/workflow/run-state-debug-capture.js.map +1 -0
  524. package/dist/workflow/status-parser.d.ts +68 -0
  525. package/dist/workflow/status-parser.js +274 -0
  526. package/dist/workflow/status-parser.js.map +1 -0
  527. package/dist/workflow/types.d.ts +598 -0
  528. package/dist/workflow/types.js +85 -0
  529. package/dist/workflow/types.js.map +1 -0
  530. package/dist/workflow/validate.d.ts +80 -0
  531. package/dist/workflow/validate.js +788 -0
  532. package/dist/workflow/validate.js.map +1 -0
  533. package/dist/workflow/workflow-command.d.ts +9 -0
  534. package/dist/workflow/workflow-command.js +670 -0
  535. package/dist/workflow/workflow-command.js.map +1 -0
  536. package/dist/workflow/workflow-discovery.d.ts +27 -0
  537. package/dist/workflow/workflow-discovery.js +121 -0
  538. package/dist/workflow/workflow-discovery.js.map +1 -0
  539. package/dist/workflow/workflow-manager.d.ts +156 -0
  540. package/dist/workflow/workflow-manager.js +359 -0
  541. package/dist/workflow/workflow-manager.js.map +1 -0
  542. package/dist/workflow/workflows/design-and-code/README.md +50 -0
  543. package/dist/workflow/workflows/design-and-code/workflow.yaml +169 -0
  544. package/dist/workflow/workflows/deterministic-eval-smoke/scripts/format_report.js +29 -0
  545. package/dist/workflow/workflows/deterministic-eval-smoke/scripts/package.json +5 -0
  546. package/dist/workflow/workflows/deterministic-eval-smoke/scripts/requirements.txt +1 -0
  547. package/dist/workflow/workflows/deterministic-eval-smoke/scripts/run_eval.py +41 -0
  548. package/dist/workflow/workflows/deterministic-eval-smoke/workflow.yaml +57 -0
  549. package/dist/workflow/workflows/deterministic-verdict-smoke/scripts/classify.py +18 -0
  550. package/dist/workflow/workflows/deterministic-verdict-smoke/workflow.yaml +51 -0
  551. package/dist/workflow/workflows/evolve/scripts/LICENSE +201 -0
  552. package/dist/workflow/workflows/evolve/scripts/README.md +314 -0
  553. package/dist/workflow/workflows/evolve/scripts/evolve-brief +16 -0
  554. package/dist/workflow/workflows/evolve/scripts/evolve-cognition +16 -0
  555. package/dist/workflow/workflows/evolve/scripts/evolve-db +16 -0
  556. package/dist/workflow/workflows/evolve/scripts/evolve-eval +16 -0
  557. package/dist/workflow/workflows/evolve/scripts/evolve-files +16 -0
  558. package/dist/workflow/workflows/evolve/scripts/evolve-summary +16 -0
  559. package/dist/workflow/workflows/evolve/scripts/evolve_core/__init__.py +14 -0
  560. package/dist/workflow/workflows/evolve/scripts/evolve_core/algorithms/__init__.py +17 -0
  561. package/dist/workflow/workflows/evolve/scripts/evolve_core/algorithms/base.py +21 -0
  562. package/dist/workflow/workflows/evolve/scripts/evolve_core/algorithms/factory.py +90 -0
  563. package/dist/workflow/workflows/evolve/scripts/evolve_core/algorithms/greedy.py +17 -0
  564. package/dist/workflow/workflows/evolve/scripts/evolve_core/algorithms/island.py +316 -0
  565. package/dist/workflow/workflows/evolve/scripts/evolve_core/algorithms/random.py +18 -0
  566. package/dist/workflow/workflows/evolve/scripts/evolve_core/algorithms/ucb1.py +55 -0
  567. package/dist/workflow/workflows/evolve/scripts/evolve_core/best_snapshot.py +62 -0
  568. package/dist/workflow/workflows/evolve/scripts/evolve_core/cli.py +752 -0
  569. package/dist/workflow/workflows/evolve/scripts/evolve_core/cognition.py +127 -0
  570. package/dist/workflow/workflows/evolve/scripts/evolve_core/database.py +218 -0
  571. package/dist/workflow/workflows/evolve/scripts/evolve_core/diff.py +57 -0
  572. package/dist/workflow/workflows/evolve/scripts/evolve_core/embedding.py +84 -0
  573. package/dist/workflow/workflows/evolve/scripts/evolve_core/file_lock.py +45 -0
  574. package/dist/workflow/workflows/evolve/scripts/evolve_core/run_state.py +343 -0
  575. package/dist/workflow/workflows/evolve/scripts/evolve_core/sampling_config.py +173 -0
  576. package/dist/workflow/workflows/evolve/scripts/evolve_core/structures.py +93 -0
  577. package/dist/workflow/workflows/evolve/scripts/evolve_core/vector_index.py +191 -0
  578. package/dist/workflow/workflows/evolve/scripts/evolve_result.py +1503 -0
  579. package/dist/workflow/workflows/evolve/scripts/requirements.txt +2 -0
  580. package/dist/workflow/workflows/evolve/workflow.yaml +646 -0
  581. package/dist/workflow/workflows/test-email-summary/skills/email-formatting/SKILL.md +55 -0
  582. package/dist/workflow/workflows/test-email-summary/skills/gmail-query-syntax/SKILL.md +63 -0
  583. package/dist/workflow/workflows/test-email-summary/skills/json-schema-emails/SKILL.md +41 -0
  584. package/dist/workflow/workflows/test-email-summary/skills/json-schema-emails/schema.json +34 -0
  585. package/dist/workflow/workflows/test-email-summary/skills/summary-style-guide/SKILL.md +51 -0
  586. package/dist/workflow/workflows/test-email-summary/workflow.yaml +90 -0
  587. package/dist/workflow/workflows/vuln-discovery/skills/harness-design-fuzzing/SKILL.md +206 -0
  588. package/dist/workflow/workflows/vuln-discovery/skills/memory-safety-c-cpp/SKILL.md +167 -0
  589. package/dist/workflow/workflows/vuln-discovery/skills/vulnerability-triage/SKILL.md +189 -0
  590. package/dist/workflow/workflows/vuln-discovery/workflow.yaml +925 -0
  591. package/dist/workflow/worktree.d.ts +43 -0
  592. package/dist/workflow/worktree.js +106 -0
  593. package/dist/workflow/worktree.js.map +1 -0
  594. package/docker/Dockerfile.base +31 -0
  595. package/docker/Dockerfile.base.arm64 +27 -0
  596. package/docker/Dockerfile.claude-code +3 -1
  597. package/docker/Dockerfile.codex +17 -0
  598. package/docker/Dockerfile.goose +3 -1
  599. package/docker/entrypoint-claude-code.sh +7 -0
  600. package/docker/entrypoint-codex.sh +42 -0
  601. package/docker/entrypoint-goose.sh +6 -0
  602. package/docker/entrypoint-uid-remap.sh +93 -0
  603. package/package.json +27 -11
  604. package/packages/web-ui/README.md +113 -0
  605. package/packages/web-ui/docs/workflow-state-machine.png +0 -0
  606. package/src/config/generated/compiled-policy.json +528 -161
  607. package/src/config/generated/test-scenarios.json +4810 -170
  608. package/src/config/generated/tool-annotations.json +34 -47
  609. package/src/config/mcp-servers.json +2 -2
  610. package/src/workflow/workflows/design-and-code/README.md +50 -0
  611. package/src/workflow/workflows/design-and-code/workflow.yaml +169 -0
  612. package/src/workflow/workflows/deterministic-eval-smoke/scripts/format_report.js +29 -0
  613. package/src/workflow/workflows/deterministic-eval-smoke/scripts/package.json +5 -0
  614. package/src/workflow/workflows/deterministic-eval-smoke/scripts/requirements.txt +1 -0
  615. package/src/workflow/workflows/deterministic-eval-smoke/scripts/run_eval.py +41 -0
  616. package/src/workflow/workflows/deterministic-eval-smoke/workflow.yaml +57 -0
  617. package/src/workflow/workflows/deterministic-verdict-smoke/scripts/classify.py +18 -0
  618. package/src/workflow/workflows/deterministic-verdict-smoke/workflow.yaml +51 -0
  619. package/src/workflow/workflows/evolve/scripts/LICENSE +201 -0
  620. package/src/workflow/workflows/evolve/scripts/README.md +314 -0
  621. package/src/workflow/workflows/evolve/scripts/evolve-brief +16 -0
  622. package/src/workflow/workflows/evolve/scripts/evolve-cognition +16 -0
  623. package/src/workflow/workflows/evolve/scripts/evolve-db +16 -0
  624. package/src/workflow/workflows/evolve/scripts/evolve-eval +16 -0
  625. package/src/workflow/workflows/evolve/scripts/evolve-files +16 -0
  626. package/src/workflow/workflows/evolve/scripts/evolve-summary +16 -0
  627. package/src/workflow/workflows/evolve/scripts/evolve_core/__init__.py +14 -0
  628. package/src/workflow/workflows/evolve/scripts/evolve_core/algorithms/__init__.py +17 -0
  629. package/src/workflow/workflows/evolve/scripts/evolve_core/algorithms/base.py +21 -0
  630. package/src/workflow/workflows/evolve/scripts/evolve_core/algorithms/factory.py +90 -0
  631. package/src/workflow/workflows/evolve/scripts/evolve_core/algorithms/greedy.py +17 -0
  632. package/src/workflow/workflows/evolve/scripts/evolve_core/algorithms/island.py +316 -0
  633. package/src/workflow/workflows/evolve/scripts/evolve_core/algorithms/random.py +18 -0
  634. package/src/workflow/workflows/evolve/scripts/evolve_core/algorithms/ucb1.py +55 -0
  635. package/src/workflow/workflows/evolve/scripts/evolve_core/best_snapshot.py +62 -0
  636. package/src/workflow/workflows/evolve/scripts/evolve_core/cli.py +752 -0
  637. package/src/workflow/workflows/evolve/scripts/evolve_core/cognition.py +127 -0
  638. package/src/workflow/workflows/evolve/scripts/evolve_core/database.py +218 -0
  639. package/src/workflow/workflows/evolve/scripts/evolve_core/diff.py +57 -0
  640. package/src/workflow/workflows/evolve/scripts/evolve_core/embedding.py +84 -0
  641. package/src/workflow/workflows/evolve/scripts/evolve_core/file_lock.py +45 -0
  642. package/src/workflow/workflows/evolve/scripts/evolve_core/run_state.py +343 -0
  643. package/src/workflow/workflows/evolve/scripts/evolve_core/sampling_config.py +173 -0
  644. package/src/workflow/workflows/evolve/scripts/evolve_core/structures.py +93 -0
  645. package/src/workflow/workflows/evolve/scripts/evolve_core/vector_index.py +191 -0
  646. package/src/workflow/workflows/evolve/scripts/evolve_result.py +1503 -0
  647. package/src/workflow/workflows/evolve/scripts/requirements.txt +2 -0
  648. package/src/workflow/workflows/evolve/workflow.yaml +646 -0
  649. package/src/workflow/workflows/test-email-summary/skills/email-formatting/SKILL.md +55 -0
  650. package/src/workflow/workflows/test-email-summary/skills/gmail-query-syntax/SKILL.md +63 -0
  651. package/src/workflow/workflows/test-email-summary/skills/json-schema-emails/SKILL.md +41 -0
  652. package/src/workflow/workflows/test-email-summary/skills/json-schema-emails/schema.json +34 -0
  653. package/src/workflow/workflows/test-email-summary/skills/summary-style-guide/SKILL.md +51 -0
  654. package/src/workflow/workflows/test-email-summary/workflow.yaml +90 -0
  655. package/src/workflow/workflows/vuln-discovery/skills/harness-design-fuzzing/SKILL.md +206 -0
  656. package/src/workflow/workflows/vuln-discovery/skills/memory-safety-c-cpp/SKILL.md +167 -0
  657. package/src/workflow/workflows/vuln-discovery/skills/vulnerability-triage/SKILL.md +189 -0
  658. package/src/workflow/workflows/vuln-discovery/workflow.yaml +925 -0
  659. package/dist/pipeline/llm-logger.js.map +0 -1
  660. package/dist/session/errors.js.map +0 -1
@@ -0,0 +1,599 @@
1
+ /**
2
+ * Non-interactive, machine-readable CLI surface for driving gated workflows on
3
+ * a running daemon: `run` / `status` / `await` / `gate` / `show`.
4
+ *
5
+ * These commands talk to the daemon's existing WebSocket JSON-RPC interface via
6
+ * the leaf {@link DaemonClient}; they never import the orchestrator/manager
7
+ * runtime. An autonomous agent uses them as run-to-completion tool calls:
8
+ *
9
+ * run -> await -> (show -> gate -> await)* -> terminal
10
+ *
11
+ * Output convention: a single newline-terminated JSON object to **stdout** when
12
+ * `--json` is set (the agent parses stdout); human-readable text to **stderr**.
13
+ * Exit codes are derived from the authoritative workflow `phase`, never from a
14
+ * lifecycle event name (a gate-ABORT fires a `completed` event but reports
15
+ * `phase:'aborted'`).
16
+ */
17
+ import { spawn } from 'node:child_process';
18
+ import { statSync } from 'node:fs';
19
+ import { resolve } from 'node:path';
20
+ import { parseArgs } from 'node:util';
21
+ import { resolveWorkflowPath } from './discovery.js';
22
+ import { createDaemonClient, } from '../daemon-client/daemon-client.js';
23
+ import { parseArgsResult } from './cli-shared.js';
24
+ // ---------------------------------------------------------------------------
25
+ // Exit codes (stable contract for shell-only agents)
26
+ // ---------------------------------------------------------------------------
27
+ const EXIT_OK = 0;
28
+ const EXIT_USAGE = 2;
29
+ /** Terminal failure phase: `failed` or `aborted`. */
30
+ const EXIT_TERMINAL_FAILURE = 3;
31
+ /** `await` timed out before a decision point or terminal. */
32
+ const EXIT_AWAIT_TIMEOUT = 4;
33
+ /** Generic operational failure (RPC error, no daemon, etc.). */
34
+ const EXIT_ERROR = 1;
35
+ const DEFAULT_AWAIT_TIMEOUT_SEC = 600;
36
+ const ENSURE_DAEMON_TIMEOUT_MS = 15_000;
37
+ const ENSURE_DAEMON_POLL_INTERVAL_MS = 250;
38
+ /** Emits a machine-readable JSON object to stdout (when `--json`). */
39
+ function emitJson(mode, obj) {
40
+ if (mode.json) {
41
+ process.stdout.write(`${JSON.stringify(obj)}\n`);
42
+ }
43
+ }
44
+ /** Emits a human-readable line to stderr (never stdout). */
45
+ function emitText(message) {
46
+ process.stderr.write(`${message}\n`);
47
+ }
48
+ /** Prints a CLI-level error in both channels and returns the exit code. */
49
+ function fail(mode, error, extra = {}, exitCode = EXIT_ERROR) {
50
+ emitJson(mode, { ok: false, error, ...extra });
51
+ emitText(formatErrorText(error, extra));
52
+ return exitCode;
53
+ }
54
+ function formatErrorText(error, extra) {
55
+ const message = typeof extra.message === 'string' ? extra.message : undefined;
56
+ return message ? `Error: ${error}: ${message}` : `Error: ${error}`;
57
+ }
58
+ /**
59
+ * Picks the output channel when strict parsing FAILS, before {@link OutputMode}
60
+ * can be read from parsed values. A typo'd flag must still honor the caller's
61
+ * `--json` choice so the failure lands on the right channel (machine JSON on
62
+ * stdout vs human stderr).
63
+ *
64
+ * Uses a NON-strict re-parse — which never throws on the offending flag that
65
+ * triggered this path — rather than a literal `args.includes('--json')`. The
66
+ * loose parse still lets a known value-taking option consume its argument, so
67
+ * `--workspace --json` does NOT enable JSON mode (here `--json` is the
68
+ * workspace value, not a flag) and `--json=...` forms are handled. Falls back
69
+ * to a literal scan only if the loose parse itself cannot run.
70
+ */
71
+ function detectOutputMode(args, options) {
72
+ try {
73
+ const { values } = parseArgs({ args, options, strict: false, allowPositionals: true });
74
+ return { json: values.json === true };
75
+ }
76
+ catch {
77
+ return { json: args.includes('--json') };
78
+ }
79
+ }
80
+ /**
81
+ * Parses a daemon-gate subcommand's args under this module's output contract.
82
+ *
83
+ * On an unknown/typo'd flag or a missing option value, reports a structured
84
+ * `INVALID_USAGE` (JSON on stdout when `--json`, human text on stderr) and exits
85
+ * {@link EXIT_USAGE} — rather than the bare stderr `process.exit(1)` that
86
+ * {@link parseArgsStrict} would do, which an agent driving the CLI cannot parse.
87
+ */
88
+ function parseGateArgs(args, options) {
89
+ const result = parseArgsResult({ args, options, allowPositionals: true });
90
+ if (!result.ok) {
91
+ const mode = detectOutputMode(args, options);
92
+ return {
93
+ ok: false,
94
+ exitCode: fail(mode, 'INVALID_USAGE', { message: result.message, hint: 'Run with --help to see available options.' }, EXIT_USAGE),
95
+ };
96
+ }
97
+ return {
98
+ ok: true,
99
+ mode: { json: result.values.json === true },
100
+ values: result.values,
101
+ positionals: result.positionals,
102
+ };
103
+ }
104
+ /** Projects a `workflows.get` DTO into the stable status shape. */
105
+ function projectStatus(detail) {
106
+ return {
107
+ ok: true,
108
+ workflowId: detail.workflowId,
109
+ phase: detail.phase,
110
+ currentState: detail.currentState,
111
+ round: detail.round,
112
+ ...(detail.phase === 'waiting_human' && detail.gate ? { gate: detail.gate } : {}),
113
+ };
114
+ }
115
+ /** Exit code derived from the authoritative phase (never an event name). */
116
+ function exitCodeForPhase(phase) {
117
+ switch (phase) {
118
+ case 'waiting_human':
119
+ case 'completed':
120
+ return EXIT_OK;
121
+ case 'failed':
122
+ case 'aborted':
123
+ case 'interrupted':
124
+ // `interrupted` is the disk-fallback state for a run stranded by a daemon
125
+ // restart with no live orchestrator: a stuck workflow is a failure, not a
126
+ // success, so it shares the terminal-failure exit code.
127
+ return EXIT_TERMINAL_FAILURE;
128
+ default:
129
+ // `running`: not a resting point for this projection, but surfaced as a
130
+ // non-failure so the agent re-issues `await`.
131
+ return EXIT_OK;
132
+ }
133
+ }
134
+ function isTerminalPhase(phase) {
135
+ return phase === 'completed' || phase === 'failed' || phase === 'aborted';
136
+ }
137
+ /**
138
+ * Performs ONE discover + create + connect cycle. On any failure the half-open
139
+ * client is closed so no attempt leaks a socket. Readiness here means a daemon
140
+ * actually ANSWERED a connect — never merely "the state file exists" (a crashed
141
+ * daemon leaves a stale `web-ui.json` that discovery would otherwise accept).
142
+ */
143
+ async function attemptConnect() {
144
+ let client;
145
+ try {
146
+ client = createDaemonClient();
147
+ }
148
+ catch (err) {
149
+ // Cross-module catch: branch on the `code` discriminant rather than only
150
+ // `instanceof` (per CLAUDE.md), so this stays robust if the error crosses a
151
+ // module boundary that defeats `instanceof`.
152
+ if (isDaemonNotRunning(err))
153
+ return { kind: 'no-endpoint' };
154
+ throw err;
155
+ }
156
+ try {
157
+ await client.connect();
158
+ }
159
+ catch (err) {
160
+ await client.close().catch(() => { });
161
+ return { kind: 'connect-failed', message: err instanceof Error ? err.message : String(err) };
162
+ }
163
+ return { kind: 'connected', client };
164
+ }
165
+ /**
166
+ * Returns a connected {@link DaemonClient}, ensuring a daemon exists first when
167
+ * `--ensure-daemon` is set. Returns `undefined` (after printing an error) when
168
+ * no daemon can be reached.
169
+ *
170
+ * Control flow:
171
+ * 1. Attempt a real connect to an existing daemon; on success, return it.
172
+ * 2. If that fails and `ensureDaemon` is set, spawn a detached daemon ONCE and
173
+ * poll by RE-ATTEMPTING connect (not by polling discovery — a stale state
174
+ * file would make discovery a false positive) until a connect succeeds or
175
+ * `ENSURE_DAEMON_TIMEOUT_MS` elapses.
176
+ * 3. If that fails and `ensureDaemon` is NOT set, report the historical error:
177
+ * `DAEMON_NOT_RUNNING` (no endpoint) or `DAEMON_CONNECT_FAILED` (endpoint
178
+ * present but unreachable).
179
+ */
180
+ async function openClient(mode, ensureDaemon) {
181
+ const initial = await attemptConnect();
182
+ if (initial.kind === 'connected')
183
+ return initial.client;
184
+ if (ensureDaemon) {
185
+ const ensured = await ensureDaemonRunning();
186
+ if (ensured)
187
+ return ensured;
188
+ fail(mode, 'DAEMON_START_TIMEOUT', {
189
+ hint: `Timed out waiting for a daemon to come up after ${ENSURE_DAEMON_TIMEOUT_MS}ms`,
190
+ });
191
+ return undefined;
192
+ }
193
+ if (initial.kind === 'no-endpoint') {
194
+ fail(mode, 'DAEMON_NOT_RUNNING', { hint: 'Start the daemon with: ironcurtain daemon --web-ui' });
195
+ return undefined;
196
+ }
197
+ fail(mode, 'DAEMON_CONNECT_FAILED', { message: initial.message });
198
+ return undefined;
199
+ }
200
+ /** Discriminant check for the "no daemon running" error (no `instanceof`). */
201
+ function isDaemonNotRunning(err) {
202
+ return err !== null && typeof err === 'object' && err.code === 'DAEMON_NOT_RUNNING';
203
+ }
204
+ /**
205
+ * Spawns a detached `ironcurtain daemon --web-ui` ONCE, then polls by
206
+ * re-attempting a real connect until one succeeds or a bounded timeout elapses.
207
+ * Returns the connected client on success, or `undefined` on timeout. Arg-array
208
+ * spawn — no shell string concatenation (CLAUDE.md Safe Coding).
209
+ *
210
+ * Polling on connect (rather than discovery) is what makes readiness real: a
211
+ * stale `web-ui.json` left by a crashed daemon would make `discoverDaemon()`
212
+ * return immediately, but its socket will not accept a connection.
213
+ */
214
+ async function ensureDaemonRunning() {
215
+ const cliEntry = process.argv[1];
216
+ if (!cliEntry)
217
+ return undefined;
218
+ const child = spawn(process.execPath, [cliEntry, 'daemon', '--web-ui'], {
219
+ detached: true,
220
+ stdio: 'ignore',
221
+ });
222
+ child.unref();
223
+ const deadline = Date.now() + ENSURE_DAEMON_TIMEOUT_MS;
224
+ for (;;) {
225
+ const attempt = await attemptConnect();
226
+ if (attempt.kind === 'connected')
227
+ return attempt.client;
228
+ if (Date.now() >= deadline)
229
+ return undefined;
230
+ await delay(ENSURE_DAEMON_POLL_INTERVAL_MS);
231
+ }
232
+ }
233
+ function delay(ms) {
234
+ return new Promise((resolve) => setTimeout(resolve, ms));
235
+ }
236
+ // ---------------------------------------------------------------------------
237
+ // RPC error mapping
238
+ // ---------------------------------------------------------------------------
239
+ /** Reports an `{ok:false}` RPC result and returns the chosen exit code. */
240
+ function reportRpcError(mode, result) {
241
+ const extra = { message: result.message };
242
+ // LINT_FAILED carries structured diagnostics under `error.data.diagnostics`.
243
+ if (result.code === 'LINT_FAILED') {
244
+ const diagnostics = extractDiagnostics(result.data);
245
+ if (diagnostics)
246
+ extra.diagnostics = diagnostics;
247
+ }
248
+ return fail(mode, result.code, extra);
249
+ }
250
+ function extractDiagnostics(data) {
251
+ if (data !== null && typeof data === 'object' && 'diagnostics' in data) {
252
+ const diagnostics = data.diagnostics;
253
+ if (Array.isArray(diagnostics))
254
+ return diagnostics;
255
+ }
256
+ return undefined;
257
+ }
258
+ // ---------------------------------------------------------------------------
259
+ // `workflow run`
260
+ // ---------------------------------------------------------------------------
261
+ async function runRun(args) {
262
+ const parsed = parseGateArgs(args, {
263
+ json: { type: 'boolean' },
264
+ workspace: { type: 'string' },
265
+ 'ensure-daemon': { type: 'boolean' },
266
+ });
267
+ if (!parsed.ok)
268
+ return parsed.exitCode;
269
+ const { mode, values, positionals } = parsed;
270
+ const definitionRef = positionals[0];
271
+ const taskDescription = positionals[1];
272
+ if (!definitionRef || !taskDescription) {
273
+ emitText('Usage: ironcurtain workflow run <name-or-path> "task" [--workspace <path>] [--json] [--ensure-daemon]');
274
+ return EXIT_USAGE;
275
+ }
276
+ // Resolve the definition path client-side: the daemon does not resolve names.
277
+ const definitionPath = resolveWorkflowPath(definitionRef);
278
+ if (!definitionPath) {
279
+ return fail(mode, 'WORKFLOW_DEFINITION_NOT_FOUND', {
280
+ ref: definitionRef,
281
+ hint: "Run 'ironcurtain workflow list' to see available workflows.",
282
+ });
283
+ }
284
+ // Validate the workspace client-side BEFORE connecting to the daemon, so an
285
+ // invalid --workspace fails fast without spawning or connecting it.
286
+ let workspacePath;
287
+ if (typeof values.workspace === 'string') {
288
+ workspacePath = resolve(values.workspace);
289
+ let isDirectory;
290
+ try {
291
+ isDirectory = statSync(workspacePath).isDirectory();
292
+ }
293
+ catch {
294
+ // Any stat failure — ENOENT (incl. a racy delete after a check), EACCES,
295
+ // ELOOP, etc. — means the path is unusable as a workspace. Treat as invalid
296
+ // so the command returns the structured error instead of throwing.
297
+ isDirectory = false;
298
+ }
299
+ if (!isDirectory) {
300
+ return fail(mode, 'WORKSPACE_NOT_DIRECTORY', { path: workspacePath });
301
+ }
302
+ }
303
+ const client = await openClient(mode, values['ensure-daemon'] === true);
304
+ if (!client)
305
+ return EXIT_ERROR;
306
+ try {
307
+ const params = { definitionPath, taskDescription };
308
+ if (workspacePath !== undefined)
309
+ params.workspacePath = workspacePath;
310
+ const result = await client.call('workflows.start', params);
311
+ if (!result.ok)
312
+ return reportRpcError(mode, result);
313
+ const { workflowId } = result.payload;
314
+ emitJson(mode, { ok: true, workflowId, phase: 'running' });
315
+ emitText(`Started workflow ${workflowId} (use: ironcurtain workflow await ${workflowId})`);
316
+ return EXIT_OK;
317
+ }
318
+ finally {
319
+ await client.close().catch(() => { });
320
+ }
321
+ }
322
+ // ---------------------------------------------------------------------------
323
+ // `workflow status`
324
+ // ---------------------------------------------------------------------------
325
+ async function runStatus(args) {
326
+ const parsed = parseGateArgs(args, {
327
+ json: { type: 'boolean' },
328
+ 'ensure-daemon': { type: 'boolean' },
329
+ });
330
+ if (!parsed.ok)
331
+ return parsed.exitCode;
332
+ const { mode, values, positionals } = parsed;
333
+ const workflowId = positionals[0];
334
+ if (!workflowId) {
335
+ emitText('Usage: ironcurtain workflow status <workflowId> [--json] [--ensure-daemon]');
336
+ return EXIT_USAGE;
337
+ }
338
+ const client = await openClient(mode, values['ensure-daemon'] === true);
339
+ if (!client)
340
+ return EXIT_ERROR;
341
+ try {
342
+ const result = await client.call('workflows.get', { workflowId });
343
+ if (!result.ok)
344
+ return reportRpcError(mode, result);
345
+ return emitStatus(mode, result.payload);
346
+ }
347
+ finally {
348
+ await client.close().catch(() => { });
349
+ }
350
+ }
351
+ /** Emits a status projection and returns the phase-derived exit code. */
352
+ function emitStatus(mode, detail) {
353
+ const projection = projectStatus(detail);
354
+ emitJson(mode, { ...projection });
355
+ emitText(formatStatusText(projection));
356
+ return exitCodeForPhase(projection.phase);
357
+ }
358
+ function formatStatusText(p) {
359
+ if (p.phase === 'waiting_human' && p.gate) {
360
+ return `Workflow ${p.workflowId} is waiting at gate "${p.gate.stateName}" (events: ${p.gate.acceptedEvents.join(', ')}; artifacts: ${p.gate.presentedArtifacts.join(', ') || 'none'})`;
361
+ }
362
+ return `Workflow ${p.workflowId} phase: ${p.phase} (state: ${p.currentState})`;
363
+ }
364
+ // ---------------------------------------------------------------------------
365
+ // `workflow await`
366
+ // ---------------------------------------------------------------------------
367
+ async function runAwait(args) {
368
+ const parsed = parseGateArgs(args, {
369
+ json: { type: 'boolean' },
370
+ timeout: { type: 'string' },
371
+ 'ensure-daemon': { type: 'boolean' },
372
+ });
373
+ if (!parsed.ok)
374
+ return parsed.exitCode;
375
+ const { mode, values, positionals } = parsed;
376
+ const workflowId = positionals[0];
377
+ if (!workflowId) {
378
+ emitText('Usage: ironcurtain workflow await <workflowId> [--timeout <sec>] [--json] [--ensure-daemon]');
379
+ return EXIT_USAGE;
380
+ }
381
+ const timeoutSec = parseTimeout(values.timeout);
382
+ if (timeoutSec === undefined) {
383
+ emitText('Error: --timeout must be a positive number of seconds');
384
+ return EXIT_USAGE;
385
+ }
386
+ const client = await openClient(mode, values['ensure-daemon'] === true);
387
+ if (!client)
388
+ return EXIT_ERROR;
389
+ try {
390
+ return await awaitDecisionPoint(client, mode, workflowId, timeoutSec * 1000);
391
+ }
392
+ finally {
393
+ await client.close().catch(() => { });
394
+ }
395
+ }
396
+ /**
397
+ * Blocks until the workflow reaches a gate (`waiting_human`) or a terminal,
398
+ * then makes one authoritative `workflows.get` and reports/branches on its
399
+ * `phase`.
400
+ *
401
+ * Resolution triggers: the initial `get` already at a gate/terminal; a
402
+ * `workflow.gate_raised` event; or a terminal *event*
403
+ * (`workflow.completed` / `workflow.failed`). Because a gate-ABORT emits a
404
+ * `completed` event while reporting `phase:'aborted'`, the event name is never
405
+ * trusted — the follow-up `get` is authoritative.
406
+ */
407
+ async function awaitDecisionPoint(client, mode, workflowId, timeoutMs) {
408
+ const settled = createSettlePromise();
409
+ // The timeout timer rejects `settled.promise`. The early-return branches below
410
+ // (initial get errored, or already at a resting phase) return WITHOUT awaiting
411
+ // it, so if the timer fires during a slow initial get that rejection would go
412
+ // unhandled. Attach a no-op catch as a permanent handler; the explicit
413
+ // `await settled.promise` further down still observes the rejection itself.
414
+ void settled.promise.catch(() => { });
415
+ // Subscribe BEFORE the initial get so we never miss an event that fires in
416
+ // the window between the get returning and the subscription attaching.
417
+ const unsubscribe = client.onEvent((event) => {
418
+ if (eventTargetsWorkflow(event, workflowId) && isResolvingEvent(event.event)) {
419
+ settled.resolve();
420
+ }
421
+ });
422
+ const timer = setTimeout(() => settled.reject(new AwaitTimeoutError()), timeoutMs);
423
+ try {
424
+ // Race-closer: a gate/terminal reached before subscription is caught here.
425
+ const initial = await client.call('workflows.get', { workflowId });
426
+ if (!initial.ok)
427
+ return reportRpcError(mode, initial);
428
+ if (isRestingPhase(initial.payload.phase)) {
429
+ return emitStatus(mode, initial.payload);
430
+ }
431
+ await settled.promise;
432
+ const authoritative = await client.call('workflows.get', { workflowId });
433
+ if (!authoritative.ok)
434
+ return reportRpcError(mode, authoritative);
435
+ return emitStatus(mode, authoritative.payload);
436
+ }
437
+ catch (err) {
438
+ if (err instanceof AwaitTimeoutError) {
439
+ emitJson(mode, { ok: false, error: 'AWAIT_TIMEOUT', phase: 'running' });
440
+ emitText(`Workflow ${workflowId} did not reach a decision point before the timeout`);
441
+ return EXIT_AWAIT_TIMEOUT;
442
+ }
443
+ throw err;
444
+ }
445
+ finally {
446
+ clearTimeout(timer);
447
+ unsubscribe();
448
+ }
449
+ }
450
+ /**
451
+ * A phase at which `await` stops: a gate, any terminal, or `interrupted`.
452
+ *
453
+ * `interrupted` is the on-disk fallback synthesized after a daemon restart for a
454
+ * run whose checkpoint exists but has no live orchestrator. No further lifecycle
455
+ * event will ever fire for it, so `await` must resolve immediately rather than
456
+ * block for the full timeout waiting on an event that will never come.
457
+ */
458
+ function isRestingPhase(phase) {
459
+ return phase === 'waiting_human' || phase === 'interrupted' || isTerminalPhase(phase);
460
+ }
461
+ function isResolvingEvent(eventName) {
462
+ return eventName === 'workflow.gate_raised' || eventName === 'workflow.completed' || eventName === 'workflow.failed';
463
+ }
464
+ function eventTargetsWorkflow(event, workflowId) {
465
+ const payload = event.payload;
466
+ return (payload !== null && typeof payload === 'object' && payload.workflowId === workflowId);
467
+ }
468
+ class AwaitTimeoutError extends Error {
469
+ }
470
+ function createSettlePromise() {
471
+ let resolve;
472
+ let reject;
473
+ const promise = new Promise((res, rej) => {
474
+ resolve = res;
475
+ reject = rej;
476
+ });
477
+ return { promise, resolve, reject };
478
+ }
479
+ function parseTimeout(raw) {
480
+ if (raw === undefined)
481
+ return DEFAULT_AWAIT_TIMEOUT_SEC;
482
+ if (typeof raw !== 'string')
483
+ return undefined;
484
+ const value = Number(raw);
485
+ if (!Number.isFinite(value) || value <= 0)
486
+ return undefined;
487
+ return value;
488
+ }
489
+ // ---------------------------------------------------------------------------
490
+ // `workflow gate`
491
+ // ---------------------------------------------------------------------------
492
+ const GATE_EVENTS = ['APPROVE', 'FORCE_REVISION', 'REPLAN', 'ABORT'];
493
+ function isGateEvent(value) {
494
+ return typeof value === 'string' && GATE_EVENTS.includes(value);
495
+ }
496
+ /** Events whose semantics require non-empty operator feedback. */
497
+ function requiresPrompt(event) {
498
+ return event === 'FORCE_REVISION' || event === 'REPLAN';
499
+ }
500
+ async function runGate(args) {
501
+ const parsed = parseGateArgs(args, {
502
+ json: { type: 'boolean' },
503
+ event: { type: 'string' },
504
+ prompt: { type: 'string' },
505
+ 'ensure-daemon': { type: 'boolean' },
506
+ });
507
+ if (!parsed.ok)
508
+ return parsed.exitCode;
509
+ const { mode, values, positionals } = parsed;
510
+ const workflowId = positionals[0];
511
+ if (!workflowId) {
512
+ emitText('Usage: ironcurtain workflow gate <workflowId> --event <EVENT> [--prompt <text>] [--json] [--ensure-daemon]');
513
+ return EXIT_USAGE;
514
+ }
515
+ const event = values.event;
516
+ if (!isGateEvent(event)) {
517
+ return fail(mode, 'INVALID_EVENT', { hint: `--event must be one of: ${GATE_EVENTS.join(', ')}` }, EXIT_USAGE);
518
+ }
519
+ const prompt = typeof values.prompt === 'string' ? values.prompt : undefined;
520
+ // Local fast-fail (the daemon re-validates and is authoritative).
521
+ if (requiresPrompt(event) && (prompt === undefined || prompt.trim().length === 0)) {
522
+ return fail(mode, 'INVALID_PARAMS', { message: `Feedback is required for ${event} events` }, EXIT_USAGE);
523
+ }
524
+ const client = await openClient(mode, values['ensure-daemon'] === true);
525
+ if (!client)
526
+ return EXIT_ERROR;
527
+ try {
528
+ const params = { workflowId, event };
529
+ if (prompt !== undefined)
530
+ params.prompt = prompt;
531
+ const result = await client.call('workflows.resolveGate', params);
532
+ if (!result.ok)
533
+ return reportRpcError(mode, result);
534
+ emitJson(mode, { ok: true, workflowId, event });
535
+ emitText(`Resolved gate for ${workflowId} with ${event}`);
536
+ return EXIT_OK;
537
+ }
538
+ finally {
539
+ await client.close().catch(() => { });
540
+ }
541
+ }
542
+ async function runShow(args) {
543
+ const parsed = parseGateArgs(args, {
544
+ json: { type: 'boolean' },
545
+ artifact: { type: 'string' },
546
+ 'ensure-daemon': { type: 'boolean' },
547
+ });
548
+ if (!parsed.ok)
549
+ return parsed.exitCode;
550
+ const { mode, values, positionals } = parsed;
551
+ const workflowId = positionals[0];
552
+ const artifactName = values.artifact;
553
+ if (!workflowId || typeof artifactName !== 'string') {
554
+ emitText('Usage: ironcurtain workflow show <workflowId> --artifact <name> [--json] [--ensure-daemon]');
555
+ return EXIT_USAGE;
556
+ }
557
+ const client = await openClient(mode, values['ensure-daemon'] === true);
558
+ if (!client)
559
+ return EXIT_ERROR;
560
+ try {
561
+ const result = await client.call('workflows.artifacts', { workflowId, artifactName });
562
+ if (!result.ok)
563
+ return reportRpcError(mode, result);
564
+ emitJson(mode, { ok: true, files: result.payload.files });
565
+ for (const file of result.payload.files) {
566
+ emitText(`--- ${file.path} ---`);
567
+ emitText(file.content);
568
+ }
569
+ return EXIT_OK;
570
+ }
571
+ finally {
572
+ await client.close().catch(() => { });
573
+ }
574
+ }
575
+ // ---------------------------------------------------------------------------
576
+ // Dispatch
577
+ // ---------------------------------------------------------------------------
578
+ /**
579
+ * Routes a daemon-backed gate subcommand. Returns the process exit code; the
580
+ * caller (`workflow-command.ts`) is responsible for `process.exit`.
581
+ */
582
+ export async function runDaemonGateCommand(subcommand, args) {
583
+ switch (subcommand) {
584
+ case 'run':
585
+ return runRun(args);
586
+ case 'status':
587
+ return runStatus(args);
588
+ case 'await':
589
+ return runAwait(args);
590
+ case 'gate':
591
+ return runGate(args);
592
+ case 'show':
593
+ return runShow(args);
594
+ default:
595
+ emitText(`Unknown daemon-backed workflow subcommand: ${subcommand}`);
596
+ return EXIT_USAGE;
597
+ }
598
+ }
599
+ //# sourceMappingURL=daemon-gate-commands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"daemon-gate-commands.js","sourceRoot":"","sources":["../../src/workflow/daemon-gate-commands.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Centralized loader for workflow definition files.
3
+ *
4
+ * Both the CLI (`workflow start` / `workflow resume` / `workflow lint`) and
5
+ * the daemon (`workflows.start` JSON-RPC and the past-run loader) need the
6
+ * same parse + validate pipeline. This module is the single source of truth.
7
+ *
8
+ * The function never throws: callers receive a discriminated result so they
9
+ * can map errors to their own surface (stderr + `process.exit(1)` for the
10
+ * CLI; `RpcError('INVALID_PARAMS')` for the daemon; `'corrupted'` for the
11
+ * past-run loader).
12
+ */
13
+ import type { WorkflowDefinition } from './types.js';
14
+ export type DefinitionLoadResult = {
15
+ ok: true;
16
+ definition: WorkflowDefinition;
17
+ } | {
18
+ ok: false;
19
+ kind: 'parse' | 'validate';
20
+ message: string;
21
+ issues?: readonly string[];
22
+ };
23
+ /**
24
+ * Reads, parses, and validates a workflow definition file.
25
+ *
26
+ * - `kind: 'parse'` covers any failure before structural validation
27
+ * (file read errors, YAML/JSON syntax errors, alias-bomb rejection).
28
+ * - `kind: 'validate'` covers `WorkflowValidationError` from `validateDefinition`
29
+ * and any other unexpected error during validation. The `issues` array is
30
+ * populated only for the `WorkflowValidationError` path.
31
+ */
32
+ export declare function loadDefinition(path: string): DefinitionLoadResult;