@provos/ironcurtain 0.9.1 → 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 (502) hide show
  1. package/README.md +69 -10
  2. package/dist/auth/oauth-provider.js +1 -4
  3. package/dist/auth/oauth-provider.js.map +1 -1
  4. package/dist/cli.js +40 -2
  5. package/dist/cli.js.map +1 -1
  6. package/dist/config/config-command.js +174 -10
  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/model-provider.d.ts +8 -2
  18. package/dist/config/model-provider.js +52 -9
  19. package/dist/config/model-provider.js.map +1 -1
  20. package/dist/config/paths.d.ts +181 -0
  21. package/dist/config/paths.js +326 -23
  22. package/dist/config/paths.js.map +1 -1
  23. package/dist/config/types.d.ts +7 -1
  24. package/dist/config/user-config.d.ts +61 -4
  25. package/dist/config/user-config.js +108 -21
  26. package/dist/config/user-config.js.map +1 -1
  27. package/dist/config/validate-policy-dir.d.ts +10 -0
  28. package/dist/config/validate-policy-dir.js +59 -0
  29. package/dist/config/validate-policy-dir.js.map +1 -0
  30. package/dist/cron/compile-task-policy.js +1 -0
  31. package/dist/cron/compile-task-policy.js.map +1 -1
  32. package/dist/cron/job-commands.js +22 -2
  33. package/dist/cron/job-commands.js.map +1 -1
  34. package/dist/cron/types.d.ts +16 -2
  35. package/dist/cron/types.js +1 -3
  36. package/dist/cron/types.js.map +1 -1
  37. package/dist/daemon/daemon-command.js +16 -2
  38. package/dist/daemon/daemon-command.js.map +1 -1
  39. package/dist/daemon/ironcurtain-daemon.d.ts +44 -1
  40. package/dist/daemon/ironcurtain-daemon.js +210 -8
  41. package/dist/daemon/ironcurtain-daemon.js.map +1 -1
  42. package/dist/docker/adapters/claude-code.d.ts +2 -1
  43. package/dist/docker/adapters/claude-code.js +320 -131
  44. package/dist/docker/adapters/claude-code.js.map +1 -1
  45. package/dist/docker/adapters/goose.d.ts +12 -11
  46. package/dist/docker/adapters/goose.js +80 -27
  47. package/dist/docker/adapters/goose.js.map +1 -1
  48. package/dist/docker/agent-adapter.d.ts +178 -4
  49. package/dist/docker/agent-adapter.js +14 -0
  50. package/dist/docker/agent-adapter.js.map +1 -1
  51. package/dist/docker/agent-registry.js +3 -2
  52. package/dist/docker/agent-registry.js.map +1 -1
  53. package/dist/docker/code-mode-proxy.d.ts +27 -0
  54. package/dist/docker/code-mode-proxy.js +3 -0
  55. package/dist/docker/code-mode-proxy.js.map +1 -1
  56. package/dist/docker/container-lifecycle.d.ts +15 -0
  57. package/dist/docker/container-lifecycle.js +32 -0
  58. package/dist/docker/container-lifecycle.js.map +1 -0
  59. package/dist/docker/docker-agent-session.d.ts +113 -62
  60. package/dist/docker/docker-agent-session.js +241 -300
  61. package/dist/docker/docker-agent-session.js.map +1 -1
  62. package/dist/docker/docker-infrastructure.d.ts +256 -21
  63. package/dist/docker/docker-infrastructure.js +585 -30
  64. package/dist/docker/docker-infrastructure.js.map +1 -1
  65. package/dist/docker/docker-manager.d.ts +36 -1
  66. package/dist/docker/docker-manager.js +168 -26
  67. package/dist/docker/docker-manager.js.map +1 -1
  68. package/dist/docker/docker-progress-sink.d.ts +43 -0
  69. package/dist/docker/docker-progress-sink.js +299 -0
  70. package/dist/docker/docker-progress-sink.js.map +1 -0
  71. package/dist/docker/mitm-proxy.d.ts +90 -1
  72. package/dist/docker/mitm-proxy.js +720 -40
  73. package/dist/docker/mitm-proxy.js.map +1 -1
  74. package/dist/docker/oauth-credentials.d.ts +46 -3
  75. package/dist/docker/oauth-credentials.js +56 -14
  76. package/dist/docker/oauth-credentials.js.map +1 -1
  77. package/dist/docker/oauth-token-manager.js +2 -2
  78. package/dist/docker/oauth-token-manager.js.map +1 -1
  79. package/dist/docker/orientation.d.ts +1 -1
  80. package/dist/docker/provider-config.d.ts +81 -2
  81. package/dist/docker/provider-config.js +222 -28
  82. package/dist/docker/provider-config.js.map +1 -1
  83. package/dist/docker/proxy-tools.d.ts +0 -2
  84. package/dist/docker/proxy-tools.js +2 -7
  85. package/dist/docker/proxy-tools.js.map +1 -1
  86. package/dist/docker/pty-session.d.ts +49 -1
  87. package/dist/docker/pty-session.js +212 -90
  88. package/dist/docker/pty-session.js.map +1 -1
  89. package/dist/docker/pty-types.d.ts +0 -2
  90. package/dist/docker/pty-types.js +0 -2
  91. package/dist/docker/pty-types.js.map +1 -1
  92. package/dist/docker/resource-limits.d.ts +125 -0
  93. package/dist/docker/resource-limits.js +200 -0
  94. package/dist/docker/resource-limits.js.map +1 -0
  95. package/dist/docker/spawn-with-idle-timeout.d.ts +39 -0
  96. package/dist/docker/spawn-with-idle-timeout.js +152 -0
  97. package/dist/docker/spawn-with-idle-timeout.js.map +1 -0
  98. package/dist/docker/sse-extractor.d.ts +51 -0
  99. package/dist/docker/sse-extractor.js +303 -0
  100. package/dist/docker/sse-extractor.js.map +1 -0
  101. package/dist/docker/token-stream-bus.d.ts +83 -0
  102. package/dist/docker/token-stream-bus.js +98 -0
  103. package/dist/docker/token-stream-bus.js.map +1 -0
  104. package/dist/docker/token-stream-types.d.ts +71 -0
  105. package/dist/docker/token-stream-types.js +8 -0
  106. package/dist/docker/token-stream-types.js.map +1 -0
  107. package/dist/docker/types.d.ts +61 -6
  108. package/dist/doctor/checks.d.ts +138 -0
  109. package/dist/doctor/checks.js +511 -0
  110. package/dist/doctor/checks.js.map +1 -0
  111. package/dist/doctor/doctor-command.d.ts +29 -0
  112. package/dist/doctor/doctor-command.js +160 -0
  113. package/dist/doctor/doctor-command.js.map +1 -0
  114. package/dist/doctor/mcp-liveness.d.ts +28 -0
  115. package/dist/doctor/mcp-liveness.js +84 -0
  116. package/dist/doctor/mcp-liveness.js.map +1 -0
  117. package/dist/doctor/oauth-checks.d.ts +23 -0
  118. package/dist/doctor/oauth-checks.js +157 -0
  119. package/dist/doctor/oauth-checks.js.map +1 -0
  120. package/dist/doctor/output.d.ts +26 -0
  121. package/dist/doctor/output.js +82 -0
  122. package/dist/doctor/output.js.map +1 -0
  123. package/dist/escalation/listener-command.js +0 -3
  124. package/dist/escalation/listener-command.js.map +1 -1
  125. package/dist/event-bus/typed-event-bus.d.ts +26 -0
  126. package/dist/event-bus/typed-event-bus.js +35 -0
  127. package/dist/event-bus/typed-event-bus.js.map +1 -0
  128. package/dist/index.js +32 -9
  129. package/dist/index.js.map +1 -1
  130. package/dist/logger.js +31 -2
  131. package/dist/logger.js.map +1 -1
  132. package/dist/memory/auto-save.d.ts +18 -4
  133. package/dist/memory/auto-save.js +46 -6
  134. package/dist/memory/auto-save.js.map +1 -1
  135. package/dist/memory/memory-policy.d.ts +41 -0
  136. package/dist/memory/memory-policy.js +36 -0
  137. package/dist/memory/memory-policy.js.map +1 -0
  138. package/dist/mux/mux-app.d.ts +2 -0
  139. package/dist/mux/mux-app.js +30 -34
  140. package/dist/mux/mux-app.js.map +1 -1
  141. package/dist/mux/mux-command.d.ts +10 -1
  142. package/dist/mux/mux-command.js +62 -35
  143. package/dist/mux/mux-command.js.map +1 -1
  144. package/dist/mux/mux-renderer.js +22 -17
  145. package/dist/mux/mux-renderer.js.map +1 -1
  146. package/dist/mux/pty-bridge.d.ts +2 -0
  147. package/dist/mux/pty-bridge.js +3 -0
  148. package/dist/mux/pty-bridge.js.map +1 -1
  149. package/dist/mux/session-scanner.d.ts +7 -0
  150. package/dist/mux/session-scanner.js +21 -2
  151. package/dist/mux/session-scanner.js.map +1 -1
  152. package/dist/mux/types.d.ts +0 -4
  153. package/dist/mux/types.js.map +1 -1
  154. package/dist/{pipeline → observability}/llm-logger.d.ts +9 -3
  155. package/dist/{pipeline → observability}/llm-logger.js +16 -4
  156. package/dist/observability/llm-logger.js.map +1 -0
  157. package/dist/observe/observe-command.d.ts +12 -0
  158. package/dist/observe/observe-command.js +298 -0
  159. package/dist/observe/observe-command.js.map +1 -0
  160. package/dist/observe/observe-renderer.d.ts +24 -0
  161. package/dist/observe/observe-renderer.js +87 -0
  162. package/dist/observe/observe-renderer.js.map +1 -0
  163. package/dist/observe/observe-tui-rain.d.ts +42 -0
  164. package/dist/observe/observe-tui-rain.js +531 -0
  165. package/dist/observe/observe-tui-rain.js.map +1 -0
  166. package/dist/observe/observe-tui-text-panel.d.ts +46 -0
  167. package/dist/observe/observe-tui-text-panel.js +525 -0
  168. package/dist/observe/observe-tui-text-panel.js.map +1 -0
  169. package/dist/observe/observe-tui-types.d.ts +270 -0
  170. package/dist/observe/observe-tui-types.js +200 -0
  171. package/dist/observe/observe-tui-types.js.map +1 -0
  172. package/dist/observe/observe-tui-word-scorer.d.ts +143 -0
  173. package/dist/observe/observe-tui-word-scorer.js +572 -0
  174. package/dist/observe/observe-tui-word-scorer.js.map +1 -0
  175. package/dist/observe/observe-tui.d.ts +59 -0
  176. package/dist/observe/observe-tui.js +592 -0
  177. package/dist/observe/observe-tui.js.map +1 -0
  178. package/dist/persona/compile-persona-policy.js +1 -0
  179. package/dist/persona/compile-persona-policy.js.map +1 -1
  180. package/dist/persona/memory-gate.d.ts +19 -0
  181. package/dist/persona/memory-gate.js +33 -0
  182. package/dist/persona/memory-gate.js.map +1 -0
  183. package/dist/persona/persona-command.js +41 -6
  184. package/dist/persona/persona-command.js.map +1 -1
  185. package/dist/persona/resolve.d.ts +22 -0
  186. package/dist/persona/resolve.js +45 -2
  187. package/dist/persona/resolve.js.map +1 -1
  188. package/dist/persona/types.d.ts +16 -0
  189. package/dist/pipeline/annotate.d.ts +7 -1
  190. package/dist/pipeline/annotate.js +92 -2
  191. package/dist/pipeline/annotate.js.map +1 -1
  192. package/dist/pipeline/compile.js +2 -0
  193. package/dist/pipeline/compile.js.map +1 -1
  194. package/dist/pipeline/constitution-compiler.d.ts +25 -14
  195. package/dist/pipeline/constitution-compiler.js +107 -38
  196. package/dist/pipeline/constitution-compiler.js.map +1 -1
  197. package/dist/pipeline/dynamic-list-types.d.ts +3 -6
  198. package/dist/pipeline/dynamic-list-types.js +3 -16
  199. package/dist/pipeline/dynamic-list-types.js.map +1 -1
  200. package/dist/pipeline/parallel-progress.d.ts +59 -0
  201. package/dist/pipeline/parallel-progress.js +263 -0
  202. package/dist/pipeline/parallel-progress.js.map +1 -0
  203. package/dist/pipeline/pipeline-runner.d.ts +49 -8
  204. package/dist/pipeline/pipeline-runner.js +419 -231
  205. package/dist/pipeline/pipeline-runner.js.map +1 -1
  206. package/dist/pipeline/pipeline-shared.d.ts +59 -1
  207. package/dist/pipeline/pipeline-shared.js +127 -12
  208. package/dist/pipeline/pipeline-shared.js.map +1 -1
  209. package/dist/pipeline/policy-verifier.js +16 -3
  210. package/dist/pipeline/policy-verifier.js.map +1 -1
  211. package/dist/pipeline/proxy-mcp-connections.js +17 -2
  212. package/dist/pipeline/proxy-mcp-connections.js.map +1 -1
  213. package/dist/pipeline/scenario-generator.d.ts +4 -8
  214. package/dist/pipeline/scenario-generator.js +13 -46
  215. package/dist/pipeline/scenario-generator.js.map +1 -1
  216. package/dist/pipeline/server-prefilter.d.ts +31 -0
  217. package/dist/pipeline/server-prefilter.js +115 -0
  218. package/dist/pipeline/server-prefilter.js.map +1 -0
  219. package/dist/pipeline/types.d.ts +5 -0
  220. package/dist/sandbox/index.d.ts +14 -0
  221. package/dist/sandbox/index.js +335 -116
  222. package/dist/sandbox/index.js.map +1 -1
  223. package/dist/sandbox/ironcurtain-protocol.d.ts +52 -0
  224. package/dist/sandbox/ironcurtain-protocol.js +185 -0
  225. package/dist/sandbox/ironcurtain-protocol.js.map +1 -0
  226. package/dist/session/agent-session.d.ts +6 -0
  227. package/dist/session/agent-session.js +16 -5
  228. package/dist/session/agent-session.js.map +1 -1
  229. package/dist/session/cli-transport.js +0 -6
  230. package/dist/session/cli-transport.js.map +1 -1
  231. package/dist/session/index.d.ts +35 -14
  232. package/dist/session/index.js +324 -130
  233. package/dist/session/index.js.map +1 -1
  234. package/dist/session/preflight.d.ts +50 -13
  235. package/dist/session/preflight.js +252 -80
  236. package/dist/session/preflight.js.map +1 -1
  237. package/dist/session/prompts.d.ts +2 -5
  238. package/dist/session/prompts.js.map +1 -1
  239. package/dist/session/session-manager.d.ts +61 -6
  240. package/dist/session/session-manager.js +72 -10
  241. package/dist/session/session-manager.js.map +1 -1
  242. package/dist/session/session-metadata.d.ts +21 -5
  243. package/dist/session/session-metadata.js +34 -12
  244. package/dist/session/session-metadata.js.map +1 -1
  245. package/dist/session/types.d.ts +311 -5
  246. package/dist/session/types.js +57 -1
  247. package/dist/session/types.js.map +1 -1
  248. package/dist/signal/setup-signal.js +13 -21
  249. package/dist/signal/setup-signal.js.map +1 -1
  250. package/dist/signal/signal-bot-daemon.d.ts +16 -1
  251. package/dist/signal/signal-bot-daemon.js +39 -27
  252. package/dist/signal/signal-bot-daemon.js.map +1 -1
  253. package/dist/signal/signal-container.js +7 -1
  254. package/dist/signal/signal-container.js.map +1 -1
  255. package/dist/skills/discovery.d.ts +77 -0
  256. package/dist/skills/discovery.js +206 -0
  257. package/dist/skills/discovery.js.map +1 -0
  258. package/dist/skills/index.d.ts +4 -0
  259. package/dist/skills/index.js +3 -0
  260. package/dist/skills/index.js.map +1 -0
  261. package/dist/skills/staging.d.ts +28 -0
  262. package/dist/skills/staging.js +68 -0
  263. package/dist/skills/staging.js.map +1 -0
  264. package/dist/skills/types.d.ts +46 -0
  265. package/dist/skills/types.js +2 -0
  266. package/dist/skills/types.js.map +1 -0
  267. package/dist/trusted-process/approval-whitelist.d.ts +0 -2
  268. package/dist/trusted-process/approval-whitelist.js +17 -17
  269. package/dist/trusted-process/approval-whitelist.js.map +1 -1
  270. package/dist/trusted-process/async-mutex.d.ts +32 -0
  271. package/dist/trusted-process/async-mutex.js +50 -0
  272. package/dist/trusted-process/async-mutex.js.map +1 -0
  273. package/dist/trusted-process/audit-log.d.ts +38 -1
  274. package/dist/trusted-process/audit-log.js +82 -13
  275. package/dist/trusted-process/audit-log.js.map +1 -1
  276. package/dist/trusted-process/call-circuit-breaker.js +2 -1
  277. package/dist/trusted-process/call-circuit-breaker.js.map +1 -1
  278. package/dist/trusted-process/control-server.d.ts +101 -0
  279. package/dist/trusted-process/control-server.js +282 -0
  280. package/dist/trusted-process/control-server.js.map +1 -0
  281. package/dist/trusted-process/domain-utils.d.ts +6 -6
  282. package/dist/trusted-process/domain-utils.js +7 -23
  283. package/dist/trusted-process/domain-utils.js.map +1 -1
  284. package/dist/trusted-process/error-prefixes.d.ts +16 -0
  285. package/dist/trusted-process/error-prefixes.js +17 -0
  286. package/dist/trusted-process/error-prefixes.js.map +1 -0
  287. package/dist/trusted-process/index.d.ts +40 -23
  288. package/dist/trusted-process/index.js +131 -225
  289. package/dist/trusted-process/index.js.map +1 -1
  290. package/dist/trusted-process/list-matcher.d.ts +17 -0
  291. package/dist/trusted-process/list-matcher.js +31 -0
  292. package/dist/trusted-process/list-matcher.js.map +1 -0
  293. package/dist/trusted-process/mcp-client-manager.d.ts +35 -6
  294. package/dist/trusted-process/mcp-client-manager.js +40 -45
  295. package/dist/trusted-process/mcp-client-manager.js.map +1 -1
  296. package/dist/trusted-process/mcp-proxy-server.d.ts +31 -120
  297. package/dist/trusted-process/mcp-proxy-server.js +166 -657
  298. package/dist/trusted-process/mcp-proxy-server.js.map +1 -1
  299. package/dist/trusted-process/policy-engine.d.ts +16 -4
  300. package/dist/trusted-process/policy-engine.js +90 -45
  301. package/dist/trusted-process/policy-engine.js.map +1 -1
  302. package/dist/trusted-process/policy-roots.d.ts +6 -0
  303. package/dist/trusted-process/policy-roots.js +20 -0
  304. package/dist/trusted-process/policy-roots.js.map +1 -1
  305. package/dist/trusted-process/sandbox-integration.d.ts +12 -0
  306. package/dist/trusted-process/sandbox-integration.js +26 -0
  307. package/dist/trusted-process/sandbox-integration.js.map +1 -1
  308. package/dist/trusted-process/tool-call-coordinator.d.ts +269 -0
  309. package/dist/trusted-process/tool-call-coordinator.js +508 -0
  310. package/dist/trusted-process/tool-call-coordinator.js.map +1 -0
  311. package/dist/trusted-process/tool-call-pipeline.d.ts +205 -0
  312. package/dist/trusted-process/tool-call-pipeline.js +798 -0
  313. package/dist/trusted-process/tool-call-pipeline.js.map +1 -0
  314. package/dist/trusted-process/tool-description-hints.d.ts +1 -1
  315. package/dist/types/argument-roles.d.ts +1 -1
  316. package/dist/types/argument-roles.js +14 -1
  317. package/dist/types/argument-roles.js.map +1 -1
  318. package/dist/types/audit.d.ts +9 -0
  319. package/dist/{session → types}/errors.d.ts +8 -2
  320. package/dist/{session → types}/errors.js +8 -2
  321. package/dist/types/errors.js.map +1 -0
  322. package/dist/types/reserved-servers.d.ts +11 -0
  323. package/dist/types/reserved-servers.js +12 -0
  324. package/dist/types/reserved-servers.js.map +1 -0
  325. package/dist/types/server-listing.d.ts +14 -0
  326. package/dist/types/server-listing.js +2 -0
  327. package/dist/types/server-listing.js.map +1 -0
  328. package/dist/types/slug.d.ts +2 -0
  329. package/dist/types/slug.js +2 -0
  330. package/dist/types/slug.js.map +1 -1
  331. package/dist/types/url-normalize.d.ts +16 -0
  332. package/dist/types/url-normalize.js +33 -0
  333. package/dist/types/url-normalize.js.map +1 -0
  334. package/dist/utils/error-message.d.ts +8 -0
  335. package/dist/utils/error-message.js +11 -0
  336. package/dist/utils/error-message.js.map +1 -0
  337. package/dist/utils/exec-error.d.ts +19 -0
  338. package/dist/utils/exec-error.js +16 -0
  339. package/dist/utils/exec-error.js.map +1 -0
  340. package/dist/utils/is-plain-object.d.ts +7 -0
  341. package/dist/utils/is-plain-object.js +12 -0
  342. package/dist/utils/is-plain-object.js.map +1 -0
  343. package/dist/utils/preflight-checks.d.ts +16 -0
  344. package/dist/utils/preflight-checks.js +178 -0
  345. package/dist/utils/preflight-checks.js.map +1 -0
  346. package/dist/web-ui/__tests__/json-rpc-dispatch.test.d.ts +7 -0
  347. package/dist/web-ui/__tests__/json-rpc-dispatch.test.js +725 -0
  348. package/dist/web-ui/__tests__/json-rpc-dispatch.test.js.map +1 -0
  349. package/dist/web-ui/dispatch/escalation-dispatch.d.ts +7 -0
  350. package/dist/web-ui/dispatch/escalation-dispatch.js +52 -0
  351. package/dist/web-ui/dispatch/escalation-dispatch.js.map +1 -0
  352. package/dist/web-ui/dispatch/job-dispatch.d.ts +8 -0
  353. package/dist/web-ui/dispatch/job-dispatch.js +83 -0
  354. package/dist/web-ui/dispatch/job-dispatch.js.map +1 -0
  355. package/dist/web-ui/dispatch/persona-dispatch.d.ts +6 -0
  356. package/dist/web-ui/dispatch/persona-dispatch.js +116 -0
  357. package/dist/web-ui/dispatch/persona-dispatch.js.map +1 -0
  358. package/dist/web-ui/dispatch/session-dispatch.d.ts +9 -0
  359. package/dist/web-ui/dispatch/session-dispatch.js +201 -0
  360. package/dist/web-ui/dispatch/session-dispatch.js.map +1 -0
  361. package/dist/web-ui/dispatch/token-stream-dispatch.d.ts +15 -0
  362. package/dist/web-ui/dispatch/token-stream-dispatch.js +55 -0
  363. package/dist/web-ui/dispatch/token-stream-dispatch.js.map +1 -0
  364. package/dist/web-ui/dispatch/types.d.ts +31 -0
  365. package/dist/web-ui/dispatch/types.js +68 -0
  366. package/dist/web-ui/dispatch/types.js.map +1 -0
  367. package/dist/web-ui/dispatch/workflow-dispatch.d.ts +103 -0
  368. package/dist/web-ui/dispatch/workflow-dispatch.js +925 -0
  369. package/dist/web-ui/dispatch/workflow-dispatch.js.map +1 -0
  370. package/dist/web-ui/json-rpc-dispatch.d.ts +12 -0
  371. package/dist/web-ui/json-rpc-dispatch.js +34 -0
  372. package/dist/web-ui/json-rpc-dispatch.js.map +1 -0
  373. package/dist/web-ui/state-graph.d.ts +13 -0
  374. package/dist/web-ui/state-graph.js +82 -0
  375. package/dist/web-ui/state-graph.js.map +1 -0
  376. package/dist/web-ui/token-stream-bridge.d.ts +76 -0
  377. package/dist/web-ui/token-stream-bridge.js +265 -0
  378. package/dist/web-ui/token-stream-bridge.js.map +1 -0
  379. package/dist/web-ui/web-event-bus.d.ts +152 -0
  380. package/dist/web-ui/web-event-bus.js +19 -0
  381. package/dist/web-ui/web-event-bus.js.map +1 -0
  382. package/dist/web-ui/web-session-transport.d.ts +31 -0
  383. package/dist/web-ui/web-session-transport.js +109 -0
  384. package/dist/web-ui/web-session-transport.js.map +1 -0
  385. package/dist/web-ui/web-ui-server.d.ts +76 -0
  386. package/dist/web-ui/web-ui-server.js +461 -0
  387. package/dist/web-ui/web-ui-server.js.map +1 -0
  388. package/dist/web-ui/web-ui-types.d.ts +290 -0
  389. package/dist/web-ui/web-ui-types.js +32 -0
  390. package/dist/web-ui/web-ui-types.js.map +1 -0
  391. package/dist/web-ui/ws-utils.d.ts +5 -0
  392. package/dist/web-ui/ws-utils.js +12 -0
  393. package/dist/web-ui/ws-utils.js.map +1 -0
  394. package/dist/web-ui-static/assets/index-BFO5z1js.js +76 -0
  395. package/dist/web-ui-static/assets/index-CCUwrkIL.css +1 -0
  396. package/dist/web-ui-static/assets/orbitron-latin-700-normal-4jsRXGGJ.woff2 +0 -0
  397. package/dist/web-ui-static/assets/orbitron-latin-700-normal-DmYOh-W9.woff +0 -0
  398. package/dist/web-ui-static/index.html +14 -0
  399. package/dist/workflow/artifacts.d.ts +59 -0
  400. package/dist/workflow/artifacts.js +188 -0
  401. package/dist/workflow/artifacts.js.map +1 -0
  402. package/dist/workflow/checkpoint-selection.d.ts +34 -0
  403. package/dist/workflow/checkpoint-selection.js +48 -0
  404. package/dist/workflow/checkpoint-selection.js.map +1 -0
  405. package/dist/workflow/checkpoint.d.ts +35 -0
  406. package/dist/workflow/checkpoint.js +84 -0
  407. package/dist/workflow/checkpoint.js.map +1 -0
  408. package/dist/workflow/cli-support.d.ts +92 -0
  409. package/dist/workflow/cli-support.js +423 -0
  410. package/dist/workflow/cli-support.js.map +1 -0
  411. package/dist/workflow/definition-loader.d.ts +32 -0
  412. package/dist/workflow/definition-loader.js +56 -0
  413. package/dist/workflow/definition-loader.js.map +1 -0
  414. package/dist/workflow/discovery.d.ts +78 -0
  415. package/dist/workflow/discovery.js +203 -0
  416. package/dist/workflow/discovery.js.map +1 -0
  417. package/dist/workflow/errors.d.ts +66 -0
  418. package/dist/workflow/errors.js +49 -0
  419. package/dist/workflow/errors.js.map +1 -0
  420. package/dist/workflow/guards.d.ts +8 -0
  421. package/dist/workflow/guards.js +38 -0
  422. package/dist/workflow/guards.js.map +1 -0
  423. package/dist/workflow/lint-integration.d.ts +64 -0
  424. package/dist/workflow/lint-integration.js +56 -0
  425. package/dist/workflow/lint-integration.js.map +1 -0
  426. package/dist/workflow/lint.d.ts +66 -0
  427. package/dist/workflow/lint.js +410 -0
  428. package/dist/workflow/lint.js.map +1 -0
  429. package/dist/workflow/machine-builder.d.ts +90 -0
  430. package/dist/workflow/machine-builder.js +485 -0
  431. package/dist/workflow/machine-builder.js.map +1 -0
  432. package/dist/workflow/message-log.d.ts +85 -0
  433. package/dist/workflow/message-log.js +40 -0
  434. package/dist/workflow/message-log.js.map +1 -0
  435. package/dist/workflow/orchestrator.d.ts +450 -0
  436. package/dist/workflow/orchestrator.js +1941 -0
  437. package/dist/workflow/orchestrator.js.map +1 -0
  438. package/dist/workflow/prompt-builder.d.ts +39 -0
  439. package/dist/workflow/prompt-builder.js +242 -0
  440. package/dist/workflow/prompt-builder.js.map +1 -0
  441. package/dist/workflow/run-state-command.d.ts +9 -0
  442. package/dist/workflow/run-state-command.js +414 -0
  443. package/dist/workflow/run-state-command.js.map +1 -0
  444. package/dist/workflow/run-state-debug-capture.d.ts +40 -0
  445. package/dist/workflow/run-state-debug-capture.js +101 -0
  446. package/dist/workflow/run-state-debug-capture.js.map +1 -0
  447. package/dist/workflow/status-parser.d.ts +68 -0
  448. package/dist/workflow/status-parser.js +259 -0
  449. package/dist/workflow/status-parser.js.map +1 -0
  450. package/dist/workflow/types.d.ts +498 -0
  451. package/dist/workflow/types.js +83 -0
  452. package/dist/workflow/types.js.map +1 -0
  453. package/dist/workflow/validate.d.ts +58 -0
  454. package/dist/workflow/validate.js +499 -0
  455. package/dist/workflow/validate.js.map +1 -0
  456. package/dist/workflow/workflow-command.d.ts +26 -0
  457. package/dist/workflow/workflow-command.js +648 -0
  458. package/dist/workflow/workflow-command.js.map +1 -0
  459. package/dist/workflow/workflow-discovery.d.ts +25 -0
  460. package/dist/workflow/workflow-discovery.js +100 -0
  461. package/dist/workflow/workflow-discovery.js.map +1 -0
  462. package/dist/workflow/workflow-manager.d.ts +122 -0
  463. package/dist/workflow/workflow-manager.js +308 -0
  464. package/dist/workflow/workflow-manager.js.map +1 -0
  465. package/dist/workflow/workflows/design-and-code/workflow.yaml +169 -0
  466. package/dist/workflow/workflows/test-email-summary/skills/email-formatting/SKILL.md +55 -0
  467. package/dist/workflow/workflows/test-email-summary/skills/gmail-query-syntax/SKILL.md +63 -0
  468. package/dist/workflow/workflows/test-email-summary/skills/json-schema-emails/SKILL.md +41 -0
  469. package/dist/workflow/workflows/test-email-summary/skills/json-schema-emails/schema.json +34 -0
  470. package/dist/workflow/workflows/test-email-summary/skills/summary-style-guide/SKILL.md +51 -0
  471. package/dist/workflow/workflows/test-email-summary/workflow.yaml +89 -0
  472. package/dist/workflow/workflows/vuln-discovery/skills/harness-design-fuzzing/SKILL.md +201 -0
  473. package/dist/workflow/workflows/vuln-discovery/skills/memory-safety-c-cpp/SKILL.md +166 -0
  474. package/dist/workflow/workflows/vuln-discovery/skills/vulnerability-triage/SKILL.md +185 -0
  475. package/dist/workflow/workflows/vuln-discovery/workflow.yaml +920 -0
  476. package/dist/workflow/worktree.d.ts +43 -0
  477. package/dist/workflow/worktree.js +106 -0
  478. package/dist/workflow/worktree.js.map +1 -0
  479. package/docker/Dockerfile.base +12 -1
  480. package/docker/Dockerfile.base.arm64 +17 -1
  481. package/docker/entrypoint-claude-code.sh +46 -0
  482. package/docker/entrypoint-goose.sh +25 -0
  483. package/package.json +22 -8
  484. package/packages/web-ui/README.md +113 -0
  485. package/packages/web-ui/docs/workflow-state-machine.png +0 -0
  486. package/src/config/generated/compiled-policy.json +528 -161
  487. package/src/config/generated/test-scenarios.json +4810 -170
  488. package/src/config/generated/tool-annotations.json +34 -47
  489. package/src/config/mcp-servers.json +2 -2
  490. package/src/workflow/workflows/design-and-code/workflow.yaml +169 -0
  491. package/src/workflow/workflows/test-email-summary/skills/email-formatting/SKILL.md +55 -0
  492. package/src/workflow/workflows/test-email-summary/skills/gmail-query-syntax/SKILL.md +63 -0
  493. package/src/workflow/workflows/test-email-summary/skills/json-schema-emails/SKILL.md +41 -0
  494. package/src/workflow/workflows/test-email-summary/skills/json-schema-emails/schema.json +34 -0
  495. package/src/workflow/workflows/test-email-summary/skills/summary-style-guide/SKILL.md +51 -0
  496. package/src/workflow/workflows/test-email-summary/workflow.yaml +89 -0
  497. package/src/workflow/workflows/vuln-discovery/skills/harness-design-fuzzing/SKILL.md +201 -0
  498. package/src/workflow/workflows/vuln-discovery/skills/memory-safety-c-cpp/SKILL.md +166 -0
  499. package/src/workflow/workflows/vuln-discovery/skills/vulnerability-triage/SKILL.md +185 -0
  500. package/src/workflow/workflows/vuln-discovery/workflow.yaml +920 -0
  501. package/dist/pipeline/llm-logger.js.map +0 -1
  502. package/dist/session/errors.js.map +0 -1
@@ -1,8 +1,9 @@
1
- import type { IronCurtainConfig } from '../config/types.js';
1
+ import type { DockerAuthKind, IronCurtainConfig } from '../config/types.js';
2
2
  import type { Sandbox } from '../sandbox/index.js';
3
3
  import type { ResolvedResourceBudgetConfig } from '../config/user-config.js';
4
4
  import type { CumulativeBudgetSnapshot } from './resource-budget-tracker.js';
5
- import type { AgentId } from '../docker/agent-adapter.js';
5
+ import type { AgentId, TransientFailureKind } from '../docker/agent-adapter.js';
6
+ import type { DockerInfrastructure } from '../docker/docker-infrastructure.js';
6
7
  import type { WhitelistCandidateIpc } from '../trusted-process/approval-whitelist.js';
7
8
  /**
8
9
  * Unique identifier for a session. Branded to prevent accidental
@@ -11,8 +12,81 @@ import type { WhitelistCandidateIpc } from '../trusted-process/approval-whitelis
11
12
  export type SessionId = string & {
12
13
  readonly __brand: 'SessionId';
13
14
  };
14
- /** Creates a new unique SessionId. */
15
+ /** Creates a new unique SessionId (v4 UUID). */
15
16
  export declare function createSessionId(): SessionId;
17
+ /**
18
+ * Coerce an unknown WS-boundary value into a SessionId, or return undefined
19
+ * if it is not a string. Use at the JSON-RPC / WebSocket boundary so the
20
+ * `as SessionId` brand-injection happens at one typed seam instead of
21
+ * scattered across call sites.
22
+ */
23
+ export declare function parseSessionId(value: unknown): SessionId | undefined;
24
+ /**
25
+ * Unique key for a Docker infrastructure bundle: one container + its
26
+ * MITM proxy, Code Mode proxy, CA, fake keys, and sockets tree. A
27
+ * single-session CLI run has one `BundleId` (equal to the session's
28
+ * `SessionId` at the value level, though the brands remain distinct at
29
+ * the type level). A shared-container workflow has one `BundleId` per
30
+ * distinct `containerScope` used across its states.
31
+ *
32
+ * Used to key the on-disk directory tree
33
+ * (`workflow-runs/<wfId>/containers/<bundleId>/`), the Docker container
34
+ * name suffix (`ironcurtain-<bundleId[0:12]>`), the
35
+ * `ironcurtain.bundle` Docker label, and the coordinator control socket
36
+ * path.
37
+ *
38
+ * See `docs/designs/workflow-session-identity.md` §2.1.
39
+ */
40
+ export type BundleId = string & {
41
+ readonly __brand: 'BundleId';
42
+ };
43
+ /** Creates a new unique BundleId (v4 UUID). */
44
+ export declare function createBundleId(): BundleId;
45
+ /**
46
+ * Re-brand a `SessionId` as a `BundleId`. Use ONLY in standalone single-
47
+ * session mode, where the workflow-session-identity invariant (§2.1)
48
+ * guarantees the SessionId value doubles as the BundleId and the
49
+ * deterministic `ironcurtain-<sessionId[0:12]>` container name is
50
+ * preserved across crashes.
51
+ *
52
+ * Workflow / multi-session mode mints a separate BundleId; in that mode
53
+ * SessionId and BundleId values diverge and this helper must NOT be
54
+ * used. Centralized here so the cross-brand cast appears in one auditable
55
+ * place rather than scattered `as unknown as BundleId` sites.
56
+ */
57
+ export declare function bundleIdFromSessionId(sessionId: SessionId): BundleId;
58
+ /**
59
+ * Deterministic short slug of a `BundleId` for use in Docker container
60
+ * names. Hyphens are stripped first so the result preserves
61
+ * `BUNDLE_SHORT_ID_LEN` hex chars of entropy (16^12 ≈ 2.8e14). A raw
62
+ * `substring(0, 12)` on a canonical UUID would include the hyphen at
63
+ * index 8 and yield only 11 hex digits.
64
+ *
65
+ * Mirrors `toBundleSlug` in `config/paths.ts`: both must produce the
66
+ * same 12-hex-char slug so that `ironcurtain.bundle` labels,
67
+ * `ironcurtain-<shortId>` container names, and the
68
+ * `~/.ironcurtain/run/<slug>/` runtime tree share a single
69
+ * bundle-identity convention.
70
+ */
71
+ export declare function getBundleShortId(bundleId: BundleId): string;
72
+ /**
73
+ * UUID the external agent CLI (e.g., Claude Code) uses for conversation
74
+ * continuity. Passed as `--session-id <id>` on first turn and
75
+ * `--resume <id>` on subsequent turns. Shape is dictated by the external
76
+ * agent: Claude Code writes `projects/<cwd-hash>/<id>.jsonl`, so the
77
+ * UUID must be preserved across turns for the agent to find its own
78
+ * history.
79
+ *
80
+ * This identity does NOT correspond to any IronCurtain-owned directory;
81
+ * its entire purpose is to be handed back to the agent CLI on re-entry.
82
+ *
83
+ * See `docs/designs/workflow-session-identity.md` §2.1.
84
+ */
85
+ export type AgentConversationId = string & {
86
+ readonly __brand: 'AgentConversationId';
87
+ };
88
+ /** Creates a new unique AgentConversationId (v4 UUID). */
89
+ export declare function createAgentConversationId(): AgentConversationId;
16
90
  /**
17
91
  * Persisted session metadata written to session-metadata.json.
18
92
  * Stores the original user intent (persona name, explicit workspace)
@@ -25,6 +99,15 @@ export interface SessionMetadata {
25
99
  readonly workspacePath?: string;
26
100
  readonly policyDir?: string;
27
101
  readonly disableAutoApprove?: boolean;
102
+ /**
103
+ * Agent-CLI conversation id assigned when this session was first
104
+ * created. Persisted so `ironcurtain --resume <sessionId>` can reuse
105
+ * the same id and continue the Claude conversation where it left
106
+ * off. Absent on sessions created before this field was introduced;
107
+ * `createStandaloneSession` falls through to a fresh mint in that
108
+ * case (legacy-session fallback).
109
+ */
110
+ readonly agentConversationId?: AgentConversationId;
28
111
  }
29
112
  /**
30
113
  * The possible states a session can be in. Linear progression:
@@ -48,7 +131,7 @@ export type SessionMode = {
48
131
  } | {
49
132
  readonly kind: 'docker';
50
133
  readonly agent: AgentId;
51
- readonly authKind?: 'oauth' | 'apikey';
134
+ readonly authKind?: DockerAuthKind;
52
135
  };
53
136
  /**
54
137
  * A single turn in the conversation. Captures what the user said,
@@ -158,6 +241,88 @@ export interface EscalationRequest {
158
241
  /** Whitelist candidates for display. Present when the proxy supports whitelisting. */
159
242
  readonly whitelistCandidates?: readonly WhitelistCandidateIpc[];
160
243
  }
244
+ /**
245
+ * Workflow-driven session options, grouped under one optional record so
246
+ * the all-or-nothing relationship between borrow-mode fields is
247
+ * structurally enforced. Set by the workflow orchestrator; standalone
248
+ * CLI / daemon callers leave it unset.
249
+ *
250
+ * Borrow-mode invariant: `stateDir` and `stateSlug` are only meaningful
251
+ * alongside `infrastructure` — the per-state artifact dir and slug have
252
+ * no owner without a bundle. `buildSessionConfig` enforces this at
253
+ * runtime; nesting both under one record keeps the bug surface tight.
254
+ *
255
+ * `skillsDir` and `skillFilter` are workflow-specific but apply in BOTH
256
+ * borrow and non-borrow modes (e.g., a non-shared-container Docker
257
+ * workflow still bundles its package's `skills/`). They live here
258
+ * because their meaning is "this is a workflow run", which is the same
259
+ * gate as the rest of the record.
260
+ *
261
+ * The caller's bundle MUST outlive the session: the session records
262
+ * references into the bundle (MCP clients, file paths, etc.) and
263
+ * expects them to remain valid for its lifetime. Do not destroy the
264
+ * bundle while any session is still holding it.
265
+ */
266
+ export interface WorkflowBorrowOptions {
267
+ /**
268
+ * Pre-built Docker infrastructure bundle. When set, the session
269
+ * factory borrows this bundle instead of creating its own, and the
270
+ * resulting session is constructed with `ownsInfra: false` so
271
+ * `close()` does NOT destroy the bundle. The caller retains full
272
+ * responsibility for destroying it via `destroyDockerInfrastructure`.
273
+ *
274
+ * Optional because workflow runs in non-shared-container mode (each
275
+ * state owns its own bundle) still pass workflow-bundled skills
276
+ * through this record — they have no infrastructure to borrow but
277
+ * still need the rest of the workflow context.
278
+ */
279
+ readonly infrastructure?: DockerInfrastructure;
280
+ /**
281
+ * Per-state artifact directory. When set, the session writes
282
+ * `session.log` and `session-metadata.json` here instead of
283
+ * `{home}/sessions/{sessionId}/`. The directory is created by the
284
+ * caller (orchestrator) before session creation.
285
+ *
286
+ * Only valid alongside `infrastructure`; `buildSessionConfig` throws
287
+ * if `stateDir` is supplied without an infrastructure bundle.
288
+ */
289
+ readonly stateDir?: string;
290
+ /**
291
+ * Human-readable slug identifying this state invocation — used only
292
+ * for logging/diagnostics (e.g., "fetch.1", "plan.2"). Paired with
293
+ * `stateDir` so log messages identify which state produced them.
294
+ */
295
+ readonly stateSlug?: string;
296
+ /**
297
+ * Workflow-bundled skills directory: `<workflow-pkg>/skills/`. When
298
+ * set, skills here are layered into the session's resolved skill set
299
+ * (see `src/skills/discovery.ts` for the layering order). Used in
300
+ * both modes: in standalone mode the resolved set rides through
301
+ * `SessionDirConfig.resolvedSkills` for the docker factory to stage
302
+ * at bundle creation; in borrow mode this matters MOST because the
303
+ * workflow orchestrator passes it per-state and `buildSessionConfig`
304
+ * re-stages in place via `restageSkills` — the bind mount is already
305
+ * live so each state's filter takes effect without a remount.
306
+ */
307
+ readonly skillsDir?: string;
308
+ /**
309
+ * When set, restricts the workflow layer to skills whose `name` is in
310
+ * this set. Built from the agent state's optional `skills:` field;
311
+ * left undefined when the state should receive every workflow-package
312
+ * skill. User-global skills are always included regardless. Honored
313
+ * in both modes — see `skillsDir` for how each mode applies the
314
+ * resolved set.
315
+ */
316
+ readonly skillFilter?: ReadonlySet<string>;
317
+ /**
318
+ * Hard off-switch for every skill layer. When true, no user-global,
319
+ * persona, or workflow-package skills are resolved for this session.
320
+ * Set by workflow states that declare `skills: none`. Mutually
321
+ * exclusive in spirit with `skillsDir` / `skillFilter` — when this
322
+ * is true, those fields are ignored and the resolver returns `[]`.
323
+ */
324
+ readonly disableAllSkills?: boolean;
325
+ }
161
326
  /**
162
327
  * Options for creating a session. Extends the base config with
163
328
  * session-specific overrides.
@@ -247,7 +412,68 @@ export interface SessionOptions {
247
412
  * a job-specific database at ~/.ironcurtain/jobs/{jobId}/memory.db.
248
413
  */
249
414
  jobId?: string;
415
+ /**
416
+ * Partial overrides for the resolved resource budget config.
417
+ * Applied on top of the global defaults and user config.
418
+ * Used by workflows to set longer per-turn timeouts.
419
+ */
420
+ resourceBudgetOverrides?: {
421
+ maxSessionSeconds?: number | null;
422
+ };
423
+ /**
424
+ * Qualified model ID ("provider:model-name") for this session only.
425
+ * Takes precedence over `config.agentModelId` when set.
426
+ */
427
+ agentModelOverride?: string;
428
+ /**
429
+ * Workflow context. When set, this session is part of a workflow run;
430
+ * the orchestrator populates fields like the borrowed Docker bundle,
431
+ * per-state artifact dir, and bundled skills. Standalone callers
432
+ * leave this unset.
433
+ *
434
+ * See {@link WorkflowBorrowOptions} for the borrow-mode invariants
435
+ * enforced when `infrastructure` is present.
436
+ */
437
+ readonly workflow?: WorkflowBorrowOptions;
438
+ /**
439
+ * The agent-CLI conversation id. Used as `--session-id` on first turn
440
+ * or `--resume` on subsequent turns. Required for Docker sessions
441
+ * (the factory will not mint on behalf of callers); ignored for builtin
442
+ * sessions — resume semantics there are keyed on IronCurtain session
443
+ * directories, not agent-CLI conversation ids.
444
+ *
445
+ * The required-for-Docker contract is enforced at the type level by
446
+ * `DockerSessionOptions` / `BuiltinSessionOptions` below — callers of
447
+ * `createSession()` that pass `mode.kind === 'docker'` must supply this
448
+ * field.
449
+ *
450
+ * See `docs/designs/workflow-session-identity.md` §2.2 / §3 / §8.5.
451
+ */
452
+ readonly agentConversationId?: AgentConversationId;
250
453
  }
454
+ /**
455
+ * Docker-mode options: `agentConversationId` is required because every
456
+ * Docker turn passes it to the agent CLI as `--session-id <id>` /
457
+ * `--resume <id>`. See `SessionOptions.agentConversationId`.
458
+ */
459
+ export type DockerSessionOptions = SessionOptions & {
460
+ readonly mode: {
461
+ readonly kind: 'docker';
462
+ readonly agent: AgentId;
463
+ readonly authKind?: DockerAuthKind;
464
+ };
465
+ readonly agentConversationId: AgentConversationId;
466
+ };
467
+ /**
468
+ * Builtin-mode options: `agentConversationId` is ignored (builtin resume
469
+ * is keyed on the IronCurtain session directory). `mode` may be omitted
470
+ * (defaults to builtin).
471
+ */
472
+ export type BuiltinSessionOptions = SessionOptions & {
473
+ readonly mode?: {
474
+ readonly kind: 'builtin';
475
+ };
476
+ };
251
477
  /**
252
478
  * The core session contract. A session is a stateful conversation
253
479
  * that owns its sandbox, policy engine, and message history.
@@ -258,20 +484,100 @@ export interface SessionOptions {
258
484
  * - After close(), no methods except getInfo() are valid
259
485
  * - The session ID is unique and immutable for the session's lifetime
260
486
  */
487
+ /**
488
+ * Outcome of a single agent turn, as returned by
489
+ * `Session.sendMessageDetailed()`. Extends the bare response text
490
+ * with diagnostics the caller may need to decide on retry behavior.
491
+ */
492
+ export interface AgentTurnResult {
493
+ /** The agent's text response. Empty string when the process produced no output. */
494
+ readonly text: string;
495
+ /**
496
+ * Set when the agent process was killed or crashed before producing
497
+ * any output (e.g., upstream provider closed the stream mid-generation).
498
+ * Callers that care about distinguishing "upstream stall — retry with a
499
+ * fresh session" from "agent replied but formatted the answer wrong"
500
+ * should consult this flag rather than parsing `text`.
501
+ */
502
+ readonly hardFailure: boolean;
503
+ /**
504
+ * Set when the adapter detected upstream quota exhaustion. When
505
+ * present, the caller MUST NOT retry the turn — the provider's
506
+ * rate-limit window is the bottleneck, not the agent. Workflow
507
+ * callers halt the run and surface `resetAt` (if any) to the user;
508
+ * interactive callers print and exit. See `AgentResponse.quotaExhausted`
509
+ * in `src/docker/agent-adapter.ts` for the adapter-side contract this
510
+ * field is populated from.
511
+ */
512
+ readonly quotaExhausted?: {
513
+ readonly resetAt?: Date;
514
+ readonly rawMessage: string;
515
+ };
516
+ /**
517
+ * Mirrors `AgentResponse.transientFailure` in
518
+ * `src/docker/agent-adapter.ts`. See that field's JSDoc for the
519
+ * canonical contract; in short: terminal-but-resumable, no retry,
520
+ * checkpoint preserved.
521
+ */
522
+ readonly transientFailure?: {
523
+ readonly kind: TransientFailureKind;
524
+ readonly rawMessage: string;
525
+ };
526
+ }
261
527
  export interface Session {
262
528
  /** Returns a read-only snapshot of session state. */
263
529
  getInfo(): SessionInfo;
264
530
  /**
265
- * Sends a user message and returns the agent's response.
531
+ * Sends a user message and returns the agent's response text.
266
532
  *
267
533
  * Appends the user message to conversation history, calls the LLM
268
534
  * with the full history, appends the response messages, and returns
269
535
  * the agent's text.
270
536
  *
537
+ * For callers that need turn diagnostics (e.g., to detect upstream
538
+ * stalls and retry with a fresh conversation id), call
539
+ * `sendMessageDetailed()` when it exists.
540
+ *
271
541
  * @throws {SessionNotReadyError} if status is not 'ready'
272
542
  * @throws {SessionClosedError} if session has been closed
273
543
  */
274
544
  sendMessage(userMessage: string): Promise<string>;
545
+ /**
546
+ * Sends a user message and returns the response text plus turn
547
+ * diagnostics. Semantically equivalent to `sendMessage()` but surfaces
548
+ * `hardFailure` for callers (e.g., the workflow orchestrator's retry
549
+ * loop) that must react to upstream stalls.
550
+ *
551
+ * Optional because only external-agent sessions (e.g., Claude Code in
552
+ * Docker) can produce hard failures. Consumers that care about the
553
+ * diagnostic should fall back to `sendMessage()` and treat the result
554
+ * as the same response text with `hardFailure: false` when this method
555
+ * is absent.
556
+ *
557
+ * @throws {SessionNotReadyError} if status is not 'ready'
558
+ * @throws {SessionClosedError} if session has been closed
559
+ */
560
+ sendMessageDetailed?(userMessage: string): Promise<AgentTurnResult>;
561
+ /**
562
+ * Rotates the agent-CLI conversation id to a freshly-minted one and
563
+ * returns the new id.
564
+ *
565
+ * Intended for use after a hard failure (see `AgentTurnResult.hardFailure`):
566
+ * when the agent CLI was killed mid-stream, the prior id has been
567
+ * consumed by the CLI even though no resumable transcript exists,
568
+ * so a retry with the same id is rejected. Rotating mints a new id
569
+ * the next turn will pin with `--session-id` (or equivalent).
570
+ *
571
+ * Callers must observe the returned id and propagate it into any
572
+ * subsequent `AgentInvokeResult` / checkpoint persistence — otherwise
573
+ * a later `freshSession: false` visit will try to resume a stale id
574
+ * whose transcript never existed on disk.
575
+ *
576
+ * Optional because only external-agent sessions (e.g., Claude Code
577
+ * in Docker) have a durable conversation id. Built-in sessions that
578
+ * hold all state in-memory do not implement this.
579
+ */
580
+ rotateAgentConversationId?(): AgentConversationId;
275
581
  /**
276
582
  * Returns the conversation history as turn summaries.
277
583
  * Does not expose raw ModelMessage[] to avoid coupling
@@ -1,6 +1,62 @@
1
1
  import { randomUUID } from 'node:crypto';
2
- /** Creates a new unique SessionId. */
2
+ /** Creates a new unique SessionId (v4 UUID). */
3
3
  export function createSessionId() {
4
4
  return randomUUID();
5
5
  }
6
+ /**
7
+ * Coerce an unknown WS-boundary value into a SessionId, or return undefined
8
+ * if it is not a string. Use at the JSON-RPC / WebSocket boundary so the
9
+ * `as SessionId` brand-injection happens at one typed seam instead of
10
+ * scattered across call sites.
11
+ */
12
+ export function parseSessionId(value) {
13
+ if (typeof value !== 'string')
14
+ return undefined;
15
+ return value;
16
+ }
17
+ /** Creates a new unique BundleId (v4 UUID). */
18
+ export function createBundleId() {
19
+ return randomUUID();
20
+ }
21
+ /**
22
+ * Re-brand a `SessionId` as a `BundleId`. Use ONLY in standalone single-
23
+ * session mode, where the workflow-session-identity invariant (§2.1)
24
+ * guarantees the SessionId value doubles as the BundleId and the
25
+ * deterministic `ironcurtain-<sessionId[0:12]>` container name is
26
+ * preserved across crashes.
27
+ *
28
+ * Workflow / multi-session mode mints a separate BundleId; in that mode
29
+ * SessionId and BundleId values diverge and this helper must NOT be
30
+ * used. Centralized here so the cross-brand cast appears in one auditable
31
+ * place rather than scattered `as unknown as BundleId` sites.
32
+ */
33
+ export function bundleIdFromSessionId(sessionId) {
34
+ return sessionId;
35
+ }
36
+ /**
37
+ * Length of the deterministic short slug derived from a `BundleId` for
38
+ * Docker container names (`ironcurtain-<shortId>`). Matches Docker's
39
+ * conventional short-form container-id truncation.
40
+ */
41
+ const BUNDLE_SHORT_ID_LEN = 12;
42
+ /**
43
+ * Deterministic short slug of a `BundleId` for use in Docker container
44
+ * names. Hyphens are stripped first so the result preserves
45
+ * `BUNDLE_SHORT_ID_LEN` hex chars of entropy (16^12 ≈ 2.8e14). A raw
46
+ * `substring(0, 12)` on a canonical UUID would include the hyphen at
47
+ * index 8 and yield only 11 hex digits.
48
+ *
49
+ * Mirrors `toBundleSlug` in `config/paths.ts`: both must produce the
50
+ * same 12-hex-char slug so that `ironcurtain.bundle` labels,
51
+ * `ironcurtain-<shortId>` container names, and the
52
+ * `~/.ironcurtain/run/<slug>/` runtime tree share a single
53
+ * bundle-identity convention.
54
+ */
55
+ export function getBundleShortId(bundleId) {
56
+ return bundleId.replace(/-/g, '').substring(0, BUNDLE_SHORT_ID_LEN);
57
+ }
58
+ /** Creates a new unique AgentConversationId (v4 UUID). */
59
+ export function createAgentConversationId() {
60
+ return randomUUID();
61
+ }
6
62
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/session/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAczC,sCAAsC;AACtC,MAAM,UAAU,eAAe;IAC7B,OAAO,UAAU,EAAe,CAAC;AACnC,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/session/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAezC,gDAAgD;AAChD,MAAM,UAAU,eAAe;IAC7B,OAAO,UAAU,EAAe,CAAC;AACnC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,KAAc;IAC3C,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IAChD,OAAO,KAAkB,CAAC;AAC5B,CAAC;AAoBD,+CAA+C;AAC/C,MAAM,UAAU,cAAc;IAC5B,OAAO,UAAU,EAAc,CAAC;AAClC,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,qBAAqB,CAAC,SAAoB;IACxD,OAAO,SAAgC,CAAC;AAC1C,CAAC;AAED;;;;GAIG;AACH,MAAM,mBAAmB,GAAG,EAAE,CAAC;AAE/B;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,gBAAgB,CAAC,QAAkB;IACjD,OAAO,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,mBAAmB,CAAC,CAAC;AACtE,CAAC;AAiBD,0DAA0D;AAC1D,MAAM,UAAU,yBAAyB;IACvC,OAAO,UAAU,EAAyB,CAAC;AAC7C,CAAC"}
@@ -11,16 +11,14 @@
11
11
  * interactive commands (config, first-start).
12
12
  */
13
13
  import { randomInt } from 'node:crypto';
14
- import { exec as execCb } from 'node:child_process';
15
14
  import { readFileSync } from 'node:fs';
16
15
  import { resolve } from 'node:path';
17
- import { promisify } from 'node:util';
18
16
  import * as p from '@clack/prompts';
19
17
  import { createDockerManager } from '../docker/docker-manager.js';
20
18
  import { saveUserConfig, loadUserConfig } from '../config/user-config.js';
21
19
  import { createSignalContainerManager, } from './signal-container.js';
22
20
  import { SIGNAL_DEFAULTS, resolveSignalConfig, getSignalDataDir } from './signal-config.js';
23
- const execAsync = promisify(execCb);
21
+ import { checkDockerAvailable } from '../session/preflight.js';
24
22
  // ---- Cancel handling ------------------------------------------------
25
23
  /** Checks if a prompt result was cancelled and exits cleanly. */
26
24
  function handleCancel(value) {
@@ -41,27 +39,21 @@ export function validatePhoneNumber(value) {
41
39
  return undefined;
42
40
  }
43
41
  // ---- Docker validation ----------------------------------------------
44
- async function validateDocker(docker) {
42
+ // We deliberately skip docker.preflight() here: that also requires the
43
+ // signal-cli image to exist, but in this wizard we pull/build it ourselves
44
+ // afterwards. We only need to confirm the daemon is reachable.
45
+ async function validateDocker() {
45
46
  const spinner = p.spinner();
46
47
  spinner.start('Checking Docker...');
47
- try {
48
- await docker.preflight(SIGNAL_DEFAULTS.image);
48
+ const status = await checkDockerAvailable();
49
+ if (status.available) {
49
50
  spinner.stop('Docker is available');
51
+ return;
50
52
  }
51
- catch {
52
- // preflight checks both docker info and image -- we only need docker info here
53
- try {
54
- // Check if Docker daemon is reachable at all
55
- await execAsync('docker info', { timeout: 10_000 });
56
- spinner.stop('Docker is available');
57
- }
58
- catch {
59
- spinner.stop('Docker is not available');
60
- p.log.error('Docker is not available. Start Docker and try again.\n\n' +
61
- 'Install Docker: https://docs.docker.com/get-docker/');
62
- process.exit(1);
63
- }
64
- }
53
+ spinner.stop('Docker is not available');
54
+ p.log.error(`Docker is not available. Start Docker and try again.\n\n${status.detailedMessage}\n\n` +
55
+ 'Install Docker: https://docs.docker.com/get-docker/');
56
+ process.exit(1);
65
57
  }
66
58
  // ---- Container setup ------------------------------------------------
67
59
  function resolveContainerConfig() {
@@ -366,8 +358,8 @@ export async function runSignalSetup(options) {
366
358
  process.exit(0);
367
359
  }
368
360
  // Step 1: Docker check
361
+ await validateDocker();
369
362
  const docker = createDockerManager();
370
- await validateDocker(docker);
371
363
  // Step 2: Pull image and start container
372
364
  const containerConfig = resolveContainerConfig();
373
365
  const manager = createSignalContainerManager(docker, containerConfig);
@@ -1 +1 @@
1
- {"version":3,"file":"setup-signal.js","sourceRoot":"","sources":["../../src/signal/setup-signal.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"setup-signal.js","sourceRoot":"","sources":["../../src/signal/setup-signal.ts"],"names":[],"mappings":"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"}
@@ -17,7 +17,7 @@
17
17
  import { type ResolvedSignalConfig } from './signal-config.js';
18
18
  import type { SessionMode } from '../session/types.js';
19
19
  import type { SignalContainerManager } from './signal-container.js';
20
- import { SessionManager } from '../session/session-manager.js';
20
+ import { SessionManager, type ManagedSession } from '../session/session-manager.js';
21
21
  /**
22
22
  * Signal message envelope received via WebSocket.
23
23
  * Only the fields relevant to IronCurtain are typed here;
@@ -52,6 +52,19 @@ export interface SignalBotDaemonOptions {
52
52
  readonly containerManager: SignalContainerManager;
53
53
  readonly mode: SessionMode;
54
54
  readonly sessionManager?: SessionManager;
55
+ /**
56
+ * Optional hook called immediately after a Signal session is registered
57
+ * with the SessionManager. Used to wire sessions into the token stream
58
+ * bridge so that `observe` subscribers can receive events from Signal
59
+ * sessions created while the daemon is running.
60
+ */
61
+ readonly onSessionRegistered?: (label: number, managed: ManagedSession) => void;
62
+ /**
63
+ * Optional hook called after a Signal session is ended (either via /quit
64
+ * or transport exit). Used to tear down any external bookkeeping tied to
65
+ * the session's label.
66
+ */
67
+ readonly onSessionEnded?: (label: number) => void;
55
68
  }
56
69
  export declare class SignalBotDaemon {
57
70
  private config;
@@ -65,6 +78,8 @@ export declare class SignalBotDaemon {
65
78
  private static readonly MAX_RECONNECT_DELAY_MS;
66
79
  private static readonly BASE_RECONNECT_DELAY_MS;
67
80
  private readonly maxConcurrentSessions;
81
+ private readonly onSessionRegistered?;
82
+ private readonly onSessionEnded?;
68
83
  private identityLocked;
69
84
  private lastIdentityCheckMs;
70
85
  private recentTimestamps;