@openrig/cli 0.5.10 → 0.5.11

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 (568) hide show
  1. package/daemon/assets/plugins/openrig-core/README.md +24 -5
  2. package/daemon/assets/plugins/openrig-core/skills/agent-operated-workflows/SKILL.md +4 -2
  3. package/daemon/assets/plugins/openrig-core/skills/applying-a-permission-policy/SKILL.md +11 -14
  4. package/daemon/assets/plugins/openrig-core/skills/claude-compaction-restore/SKILL.md +51 -59
  5. package/daemon/assets/plugins/openrig-core/skills/forming-an-openrig-mental-model/SKILL.md +11 -10
  6. package/daemon/assets/plugins/openrig-core/skills/openrig-operating-model/SKILL.md +39 -50
  7. package/daemon/assets/plugins/openrig-core/skills/openrig-operating-model/scripts/trunk-diff.sh +1 -1
  8. package/daemon/assets/plugins/openrig-core/skills/openrig-operating-model/templates/LEARNED.md +7 -5
  9. package/daemon/assets/plugins/openrig-core/skills/openrig-operating-model/templates/PLAYBOOK.md +3 -4
  10. package/daemon/assets/plugins/openrig-core/skills/openrig-operating-model/templates/SPEC.md +7 -7
  11. package/daemon/assets/plugins/openrig-core/skills/openrig-user/SKILL.md +55 -64
  12. package/daemon/assets/plugins/openrig-core/skills/orienting-to-an-inherited-seat/CHANGELOG.md +14 -58
  13. package/daemon/assets/plugins/openrig-core/skills/queue-handoff/SKILL.md +8 -9
  14. package/daemon/assets/plugins/openrig-core/skills/retiring-and-inheriting-a-seat/CHANGELOG.md +20 -46
  15. package/daemon/assets/plugins/openrig-core/skills/retiring-and-inheriting-a-seat/SKILL.md +62 -76
  16. package/daemon/assets/plugins/openrig-core/skills/seat-continuity-and-handover/SKILL.md +28 -22
  17. package/daemon/assets/plugins/openrig-core/skills/session-compaction-and-restore/SKILL.md +13 -15
  18. package/daemon/context-packs/onboarding-width/manifest.yaml +1 -3
  19. package/daemon/context-packs/onboarding-width/public-reference-material.md +19 -24
  20. package/daemon/context-packs/onboarding-width/public-what-you-can-do.md +55 -24
  21. package/daemon/context-packs/skills/agent-operated-software/manifest.yaml +1 -1
  22. package/daemon/context-packs/skills/agent-operated-workflows/SKILL.md +4 -2
  23. package/daemon/context-packs/skills/agent-operated-workflows/manifest.yaml +1 -1
  24. package/daemon/context-packs/skills/applying-a-permission-policy/SKILL.md +11 -14
  25. package/daemon/context-packs/skills/applying-a-permission-policy/manifest.yaml +1 -1
  26. package/daemon/context-packs/skills/claude-compaction-restore/SKILL.md +51 -59
  27. package/daemon/context-packs/skills/claude-compaction-restore/manifest.yaml +1 -1
  28. package/daemon/context-packs/skills/core/agent-starters/SKILL.md +21 -19
  29. package/daemon/context-packs/skills/core/agent-starters/manifest.yaml +1 -1
  30. package/daemon/context-packs/skills/core/agent-startup-and-context-ingestion/SKILL.md +11 -10
  31. package/daemon/context-packs/skills/core/agent-startup-and-context-ingestion/manifest.yaml +1 -1
  32. package/daemon/context-packs/skills/core/cross-host-rig-commands/SKILL.md +84 -148
  33. package/daemon/context-packs/skills/core/cross-host-rig-commands/manifest.yaml +3 -3
  34. package/daemon/context-packs/skills/core/human-in-the-loop/manifest.yaml +1 -1
  35. package/daemon/context-packs/skills/core/messaging-the-human/manifest.yaml +1 -1
  36. package/daemon/context-packs/skills/core/openrig-architect/SKILL.md +40 -47
  37. package/daemon/context-packs/skills/core/openrig-architect/manifest.yaml +1 -1
  38. package/daemon/context-packs/skills/core/openrig-cmux/manifest.yaml +1 -1
  39. package/daemon/context-packs/skills/core/openrig-herdr/manifest.yaml +1 -1
  40. package/daemon/context-packs/skills/core/openrig-skills/manifest.yaml +1 -1
  41. package/daemon/context-packs/skills/core/openrig-upgrade/SKILL.md +16 -0
  42. package/daemon/context-packs/skills/core/openrig-upgrade/manifest.yaml +1 -1
  43. package/daemon/context-packs/skills/core/rig-bundles-and-shareable-artifacts/manifest.yaml +1 -1
  44. package/daemon/context-packs/skills/core/rig-lifecycle/manifest.yaml +1 -1
  45. package/daemon/context-packs/skills/core/session-source-fork/SKILL.md +12 -10
  46. package/daemon/context-packs/skills/core/session-source-fork/manifest.yaml +1 -1
  47. package/daemon/context-packs/skills/core/specification-system/manifest.yaml +1 -1
  48. package/daemon/context-packs/skills/core/topology-mutation-and-seat-management/SKILL.md +15 -13
  49. package/daemon/context-packs/skills/core/topology-mutation-and-seat-management/manifest.yaml +1 -1
  50. package/daemon/context-packs/skills/core/watchdog/manifest.yaml +1 -1
  51. package/daemon/context-packs/skills/delegating-work/manifest.yaml +1 -1
  52. package/daemon/context-packs/skills/forming-an-openrig-mental-model/SKILL.md +11 -10
  53. package/daemon/context-packs/skills/forming-an-openrig-mental-model/manifest.yaml +1 -1
  54. package/daemon/context-packs/skills/loading-addressable-markdown/manifest.yaml +1 -1
  55. package/daemon/context-packs/skills/mission-slice-sop/manifest.yaml +1 -1
  56. package/daemon/context-packs/skills/openrig-operating-model/SKILL.md +39 -50
  57. package/daemon/context-packs/skills/openrig-operating-model/manifest.yaml +1 -1
  58. package/daemon/context-packs/skills/openrig-operating-model/scripts/trunk-diff.sh +1 -1
  59. package/daemon/context-packs/skills/openrig-operating-model/templates/LEARNED.md +7 -5
  60. package/daemon/context-packs/skills/openrig-operating-model/templates/PLAYBOOK.md +3 -4
  61. package/daemon/context-packs/skills/openrig-operating-model/templates/SPEC.md +7 -7
  62. package/daemon/context-packs/skills/openrig-user/SKILL.md +55 -64
  63. package/daemon/context-packs/skills/openrig-user/manifest.yaml +1 -1
  64. package/daemon/context-packs/skills/orienting-to-an-inherited-seat/CHANGELOG.md +14 -58
  65. package/daemon/context-packs/skills/orienting-to-an-inherited-seat/manifest.yaml +1 -1
  66. package/daemon/context-packs/skills/pm/backlog-capture/manifest.yaml +1 -1
  67. package/daemon/context-packs/skills/pm/context-builder/manifest.yaml +1 -1
  68. package/daemon/context-packs/skills/pm/exec-summary/SKILL.md +1 -1
  69. package/daemon/context-packs/skills/pm/exec-summary/manifest.yaml +1 -1
  70. package/daemon/context-packs/skills/pm/office-hours/manifest.yaml +1 -1
  71. package/daemon/context-packs/skills/pm/plan-review/SKILL.md +2 -2
  72. package/daemon/context-packs/skills/pm/plan-review/manifest.yaml +1 -1
  73. package/daemon/context-packs/skills/pm/requirements-writer/SKILL.md +1 -1
  74. package/daemon/context-packs/skills/pm/requirements-writer/manifest.yaml +1 -1
  75. package/daemon/context-packs/skills/pm/ui-mockup/SKILL.md +3 -3
  76. package/daemon/context-packs/skills/pm/ui-mockup/manifest.yaml +1 -1
  77. package/daemon/context-packs/skills/pods/development-team/manifest.yaml +1 -1
  78. package/daemon/context-packs/skills/pods/orchestration-team/SKILL.md +41 -59
  79. package/daemon/context-packs/skills/pods/orchestration-team/manifest.yaml +1 -1
  80. package/daemon/context-packs/skills/pods/oversight-team/manifest.yaml +1 -1
  81. package/daemon/context-packs/skills/pods/review-team/manifest.yaml +1 -1
  82. package/daemon/context-packs/skills/process/agent-browser/LOCAL-INSIGHTS.md +24 -53
  83. package/daemon/context-packs/skills/process/agent-browser/manifest.yaml +1 -1
  84. package/daemon/context-packs/skills/process/context-engineering/manifest.yaml +1 -1
  85. package/daemon/context-packs/skills/process/dogfood/manifest.yaml +1 -1
  86. package/daemon/context-packs/skills/process/frontend-design/manifest.yaml +1 -1
  87. package/daemon/context-packs/skills/process/systematic-debugging/find-polluter.sh +29 -15
  88. package/daemon/context-packs/skills/process/systematic-debugging/manifest.yaml +1 -1
  89. package/daemon/context-packs/skills/process/test-driven-development/SKILL.md +47 -40
  90. package/daemon/context-packs/skills/process/test-driven-development/manifest.yaml +1 -1
  91. package/daemon/context-packs/skills/process/verification-before-completion/SKILL.md +3 -3
  92. package/daemon/context-packs/skills/process/verification-before-completion/manifest.yaml +1 -1
  93. package/daemon/context-packs/skills/queue-handoff/SKILL.md +8 -9
  94. package/daemon/context-packs/skills/queue-handoff/manifest.yaml +1 -1
  95. package/daemon/context-packs/skills/refocusing/manifest.yaml +1 -1
  96. package/daemon/context-packs/skills/retiring-and-inheriting-a-seat/CHANGELOG.md +20 -46
  97. package/daemon/context-packs/skills/retiring-and-inheriting-a-seat/SKILL.md +62 -76
  98. package/daemon/context-packs/skills/retiring-and-inheriting-a-seat/manifest.yaml +1 -1
  99. package/daemon/context-packs/skills/seat-continuity-and-handover/SKILL.md +28 -22
  100. package/daemon/context-packs/skills/seat-continuity-and-handover/manifest.yaml +1 -1
  101. package/daemon/context-packs/skills/session-compaction-and-restore/SKILL.md +13 -15
  102. package/daemon/context-packs/skills/session-compaction-and-restore/manifest.yaml +1 -1
  103. package/daemon/context-packs/skills/software-for-agents/manifest.yaml +1 -1
  104. package/daemon/context-packs/world-example/manifest.yaml +1 -1
  105. package/daemon/context-packs/world-public/build-your-world.md +12 -7
  106. package/daemon/context-packs/world-public/manifest.yaml +1 -1
  107. package/daemon/dist/adapters/tmux.d.ts +7 -9
  108. package/daemon/dist/adapters/tmux.d.ts.map +1 -1
  109. package/daemon/dist/adapters/tmux.js +7 -35
  110. package/daemon/dist/adapters/tmux.js.map +1 -1
  111. package/daemon/dist/build-info.js +3 -3
  112. package/daemon/dist/daemon-shutdown.d.ts +27 -0
  113. package/daemon/dist/daemon-shutdown.d.ts.map +1 -0
  114. package/daemon/dist/daemon-shutdown.js +84 -0
  115. package/daemon/dist/daemon-shutdown.js.map +1 -0
  116. package/daemon/dist/domain/codex-thread-id.d.ts +1 -0
  117. package/daemon/dist/domain/codex-thread-id.d.ts.map +1 -1
  118. package/daemon/dist/domain/codex-thread-id.js +32 -23
  119. package/daemon/dist/domain/codex-thread-id.js.map +1 -1
  120. package/daemon/dist/domain/context-usage-store.d.ts +2 -0
  121. package/daemon/dist/domain/context-usage-store.d.ts.map +1 -1
  122. package/daemon/dist/domain/context-usage-store.js +7 -28
  123. package/daemon/dist/domain/context-usage-store.js.map +1 -1
  124. package/daemon/dist/domain/crash-cart-conductor.js +1 -1
  125. package/daemon/dist/domain/crash-cart-conductor.js.map +1 -1
  126. package/daemon/dist/domain/execution-view.d.ts.map +1 -1
  127. package/daemon/dist/domain/execution-view.js +24 -3
  128. package/daemon/dist/domain/execution-view.js.map +1 -1
  129. package/daemon/dist/domain/gateway/channel-operations.d.ts +1 -1
  130. package/daemon/dist/domain/gateway/channel-operations.d.ts.map +1 -1
  131. package/daemon/dist/domain/gateway/connections-projection.d.ts +61 -0
  132. package/daemon/dist/domain/gateway/connections-projection.d.ts.map +1 -0
  133. package/daemon/dist/domain/gateway/connections-projection.js +149 -0
  134. package/daemon/dist/domain/gateway/connections-projection.js.map +1 -0
  135. package/daemon/dist/domain/gateway/human-registry.d.ts +3 -1
  136. package/daemon/dist/domain/gateway/human-registry.d.ts.map +1 -1
  137. package/daemon/dist/domain/gateway/human-registry.js +3 -1
  138. package/daemon/dist/domain/gateway/human-registry.js.map +1 -1
  139. package/daemon/dist/domain/gateway/slack/slack-subsystem.d.ts.map +1 -1
  140. package/daemon/dist/domain/gateway/slack/slack-subsystem.js +3 -2
  141. package/daemon/dist/domain/gateway/slack/slack-subsystem.js.map +1 -1
  142. package/daemon/dist/domain/health-diagnosis.js +1 -1
  143. package/daemon/dist/domain/health-diagnosis.js.map +1 -1
  144. package/daemon/dist/domain/lifecycle-obligations.d.ts +18 -0
  145. package/daemon/dist/domain/lifecycle-obligations.d.ts.map +1 -0
  146. package/daemon/dist/domain/lifecycle-obligations.js +35 -0
  147. package/daemon/dist/domain/lifecycle-obligations.js.map +1 -0
  148. package/daemon/dist/domain/model-divergence/current-generation-record.d.ts.map +1 -1
  149. package/daemon/dist/domain/model-divergence/current-generation-record.js +6 -1
  150. package/daemon/dist/domain/model-divergence/current-generation-record.js.map +1 -1
  151. package/daemon/dist/domain/policies/workflow-keepalive.d.ts +1 -0
  152. package/daemon/dist/domain/policies/workflow-keepalive.d.ts.map +1 -1
  153. package/daemon/dist/domain/policies/workflow-keepalive.js +7 -4
  154. package/daemon/dist/domain/policies/workflow-keepalive.js.map +1 -1
  155. package/daemon/dist/domain/project-lifecycle-compiler.d.ts +7 -0
  156. package/daemon/dist/domain/project-lifecycle-compiler.d.ts.map +1 -1
  157. package/daemon/dist/domain/project-lifecycle-compiler.js +119 -23
  158. package/daemon/dist/domain/project-lifecycle-compiler.js.map +1 -1
  159. package/daemon/dist/domain/queue-stuck-sweep.d.ts.map +1 -1
  160. package/daemon/dist/domain/queue-stuck-sweep.js +1 -0
  161. package/daemon/dist/domain/queue-stuck-sweep.js.map +1 -1
  162. package/daemon/dist/domain/seat-lifecycle-service.d.ts.map +1 -1
  163. package/daemon/dist/domain/seat-lifecycle-service.js +8 -1
  164. package/daemon/dist/domain/seat-lifecycle-service.js.map +1 -1
  165. package/daemon/dist/domain/startup-orchestrator.d.ts.map +1 -1
  166. package/daemon/dist/domain/startup-orchestrator.js +27 -11
  167. package/daemon/dist/domain/startup-orchestrator.js.map +1 -1
  168. package/daemon/dist/domain/startup-proof.d.ts.map +1 -1
  169. package/daemon/dist/domain/startup-proof.js +10 -9
  170. package/daemon/dist/domain/startup-proof.js.map +1 -1
  171. package/daemon/dist/domain/startup-resolver.d.ts +3 -1
  172. package/daemon/dist/domain/startup-resolver.d.ts.map +1 -1
  173. package/daemon/dist/domain/startup-resolver.js +18 -0
  174. package/daemon/dist/domain/startup-resolver.js.map +1 -1
  175. package/daemon/dist/domain/startup-validation.d.ts.map +1 -1
  176. package/daemon/dist/domain/startup-validation.js +12 -1
  177. package/daemon/dist/domain/startup-validation.js.map +1 -1
  178. package/daemon/dist/domain/types.d.ts +13 -1
  179. package/daemon/dist/domain/types.d.ts.map +1 -1
  180. package/daemon/dist/domain/types.js.map +1 -1
  181. package/daemon/dist/domain/user-settings/settings-store.d.ts +1 -1
  182. package/daemon/dist/domain/user-settings/settings-store.d.ts.map +1 -1
  183. package/daemon/dist/domain/user-settings/settings-store.js +14 -0
  184. package/daemon/dist/domain/user-settings/settings-store.js.map +1 -1
  185. package/daemon/dist/domain/workflow-boot-sweep.d.ts +1 -0
  186. package/daemon/dist/domain/workflow-boot-sweep.d.ts.map +1 -1
  187. package/daemon/dist/domain/workflow-boot-sweep.js +3 -0
  188. package/daemon/dist/domain/workflow-boot-sweep.js.map +1 -1
  189. package/daemon/dist/domain/workflow-exception-escalation.d.ts +4 -3
  190. package/daemon/dist/domain/workflow-exception-escalation.d.ts.map +1 -1
  191. package/daemon/dist/domain/workflow-exception-escalation.js +22 -21
  192. package/daemon/dist/domain/workflow-exception-escalation.js.map +1 -1
  193. package/daemon/dist/domain/workflow-exception-router.d.ts +4 -3
  194. package/daemon/dist/domain/workflow-exception-router.d.ts.map +1 -1
  195. package/daemon/dist/domain/workflow-exception-router.js +7 -6
  196. package/daemon/dist/domain/workflow-exception-router.js.map +1 -1
  197. package/daemon/dist/domain/workflow-human-destination.d.ts +18 -0
  198. package/daemon/dist/domain/workflow-human-destination.d.ts.map +1 -0
  199. package/daemon/dist/domain/workflow-human-destination.js +40 -0
  200. package/daemon/dist/domain/workflow-human-destination.js.map +1 -0
  201. package/daemon/dist/domain/workflow-projector.d.ts +4 -3
  202. package/daemon/dist/domain/workflow-projector.d.ts.map +1 -1
  203. package/daemon/dist/domain/workflow-projector.js +26 -17
  204. package/daemon/dist/domain/workflow-projector.js.map +1 -1
  205. package/daemon/dist/domain/workflow-role-context.d.ts +4 -6
  206. package/daemon/dist/domain/workflow-role-context.d.ts.map +1 -1
  207. package/daemon/dist/domain/workflow-role-context.js +7 -14
  208. package/daemon/dist/domain/workflow-role-context.js.map +1 -1
  209. package/daemon/dist/domain/workflow-runtime.d.ts +12 -3
  210. package/daemon/dist/domain/workflow-runtime.d.ts.map +1 -1
  211. package/daemon/dist/domain/workflow-runtime.js +66 -14
  212. package/daemon/dist/domain/workflow-runtime.js.map +1 -1
  213. package/daemon/dist/domain/workflow-validator.d.ts.map +1 -1
  214. package/daemon/dist/domain/workflow-validator.js +39 -24
  215. package/daemon/dist/domain/workflow-validator.js.map +1 -1
  216. package/daemon/dist/index.d.ts.map +1 -1
  217. package/daemon/dist/index.js +37 -96
  218. package/daemon/dist/index.js.map +1 -1
  219. package/daemon/dist/project-lifecycle-surface.d.ts +1 -1
  220. package/daemon/dist/project-lifecycle-surface.d.ts.map +1 -1
  221. package/daemon/dist/routes/gateway.d.ts.map +1 -1
  222. package/daemon/dist/routes/gateway.js +10 -0
  223. package/daemon/dist/routes/gateway.js.map +1 -1
  224. package/daemon/dist/routes/queue.d.ts.map +1 -1
  225. package/daemon/dist/routes/queue.js +4 -3
  226. package/daemon/dist/routes/queue.js.map +1 -1
  227. package/daemon/dist/routes/require-sender-identity.d.ts +3 -1
  228. package/daemon/dist/routes/require-sender-identity.d.ts.map +1 -1
  229. package/daemon/dist/routes/require-sender-identity.js +11 -5
  230. package/daemon/dist/routes/require-sender-identity.js.map +1 -1
  231. package/daemon/dist/routes/sessions.d.ts.map +1 -1
  232. package/daemon/dist/routes/sessions.js +95 -27
  233. package/daemon/dist/routes/sessions.js.map +1 -1
  234. package/daemon/dist/routes/workflow.d.ts.map +1 -1
  235. package/daemon/dist/routes/workflow.js +6 -1
  236. package/daemon/dist/routes/workflow.js.map +1 -1
  237. package/daemon/dist/server.d.ts.map +1 -1
  238. package/daemon/dist/server.js +2 -1
  239. package/daemon/dist/server.js.map +1 -1
  240. package/daemon/dist/startup.d.ts.map +1 -1
  241. package/daemon/dist/startup.js +6 -3
  242. package/daemon/dist/startup.js.map +1 -1
  243. package/daemon/docs/reference/agent-spec.md +6 -0
  244. package/daemon/docs/reference/getting-started.md +134 -28
  245. package/daemon/docs/reference/health-diagnosis.md +26 -0
  246. package/daemon/docs/reference/mission-install.md +5 -0
  247. package/daemon/docs/reference/project-release-profile.yaml +82 -0
  248. package/daemon/docs/reference/release-boundary.md +5 -0
  249. package/daemon/docs/reference/rig-spec.md +43 -4
  250. package/daemon/specs/agents/conveyor/planner/guidance/role.md +5 -3
  251. package/daemon/specs/agents/conveyor/planner/startup/context.md +13 -4
  252. package/daemon/specs/agents/design/product-designer/agent.yaml +4 -3
  253. package/daemon/specs/agents/design/product-designer/guidance/role.md +12 -10
  254. package/daemon/specs/agents/product-management/pm/guidance/role.md +19 -17
  255. package/daemon/specs/agents/shared/skills/core/agent-starters/SKILL.md +21 -19
  256. package/daemon/specs/agents/shared/skills/core/agent-startup-and-context-ingestion/SKILL.md +11 -10
  257. package/daemon/specs/agents/shared/skills/core/cross-host-rig-commands/SKILL.md +84 -148
  258. package/daemon/specs/agents/shared/skills/core/openrig-architect/SKILL.md +40 -47
  259. package/daemon/specs/agents/shared/skills/core/openrig-upgrade/SKILL.md +16 -0
  260. package/daemon/specs/agents/shared/skills/core/session-source-fork/SKILL.md +12 -10
  261. package/daemon/specs/agents/shared/skills/core/topology-mutation-and-seat-management/SKILL.md +15 -13
  262. package/daemon/specs/agents/shared/skills/pm/exec-summary/SKILL.md +1 -1
  263. package/daemon/specs/agents/shared/skills/pm/plan-review/SKILL.md +2 -2
  264. package/daemon/specs/agents/shared/skills/pm/requirements-writer/SKILL.md +1 -1
  265. package/daemon/specs/agents/shared/skills/pm/ui-mockup/SKILL.md +3 -3
  266. package/daemon/specs/agents/shared/skills/pods/orchestration-team/SKILL.md +41 -59
  267. package/daemon/specs/agents/shared/skills/process/agent-browser/LOCAL-INSIGHTS.md +24 -53
  268. package/daemon/specs/agents/shared/skills/process/systematic-debugging/find-polluter.sh +29 -15
  269. package/daemon/specs/agents/shared/skills/process/test-driven-development/SKILL.md +47 -40
  270. package/daemon/specs/agents/shared/skills/process/verification-before-completion/SKILL.md +3 -3
  271. package/daemon/specs/rigs/launch/first-project/CULTURE.md +39 -0
  272. package/daemon/specs/rigs/launch/first-project/rig.yaml +31 -0
  273. package/daemon/specs/rigs/launch/kernel/agents/advisor/lead/startup/context.md +1 -1
  274. package/daemon/specs/rigs/launch/kernel/agents/operator/agent/guidance/role.md +21 -7
  275. package/daemon/specs/rigs/launch/kernel/agents/operator/agent/startup/context.md +2 -2
  276. package/daemon/specs/rigs/launch/kernel/agents/queue/worker/guidance/role.md +19 -11
  277. package/daemon/specs/rigs/launch/kernel/agents/queue/worker/startup/context.md +3 -2
  278. package/daemon/specs/rigs/launch/kernel/culture/CULTURE.md +15 -8
  279. package/daemon/specs/rigs/launch/kernel/rig-claude-only.yaml +7 -0
  280. package/daemon/specs/rigs/launch/kernel/rig-codex-only.yaml +7 -0
  281. package/daemon/specs/rigs/launch/kernel/rig.yaml +9 -4
  282. package/daemon/specs/rigs/preview/product-team/topology/seats/dev1-qa/CRAFT.md +6 -4
  283. package/dist/build-info.js +3 -3
  284. package/dist/client.d.ts +6 -20
  285. package/dist/client.d.ts.map +1 -1
  286. package/dist/client.js +53 -32
  287. package/dist/client.js.map +1 -1
  288. package/dist/commands/config.d.ts.map +1 -1
  289. package/dist/commands/config.js +1 -0
  290. package/dist/commands/config.js.map +1 -1
  291. package/dist/commands/context.d.ts.map +1 -1
  292. package/dist/commands/context.js +15 -13
  293. package/dist/commands/context.js.map +1 -1
  294. package/dist/commands/daemon.d.ts.map +1 -1
  295. package/dist/commands/daemon.js +31 -27
  296. package/dist/commands/daemon.js.map +1 -1
  297. package/dist/commands/destroy.js +1 -1
  298. package/dist/commands/destroy.js.map +1 -1
  299. package/dist/commands/health.d.ts.map +1 -1
  300. package/dist/commands/health.js +59 -7
  301. package/dist/commands/health.js.map +1 -1
  302. package/dist/commands/launch.d.ts.map +1 -1
  303. package/dist/commands/launch.js +2 -2
  304. package/dist/commands/launch.js.map +1 -1
  305. package/dist/commands/queue.d.ts.map +1 -1
  306. package/dist/commands/queue.js +9 -5
  307. package/dist/commands/queue.js.map +1 -1
  308. package/dist/commands/send.d.ts.map +1 -1
  309. package/dist/commands/send.js +4 -8
  310. package/dist/commands/send.js.map +1 -1
  311. package/dist/commands/setup.d.ts.map +1 -1
  312. package/dist/commands/setup.js +10 -9
  313. package/dist/commands/setup.js.map +1 -1
  314. package/dist/commands/tui.d.ts +2 -0
  315. package/dist/commands/tui.d.ts.map +1 -1
  316. package/dist/commands/tui.js +26 -10
  317. package/dist/commands/tui.js.map +1 -1
  318. package/dist/commands/walk.d.ts.map +1 -1
  319. package/dist/commands/walk.js +24 -48
  320. package/dist/commands/walk.js.map +1 -1
  321. package/dist/commands/workflow-render.d.ts +19 -0
  322. package/dist/commands/workflow-render.d.ts.map +1 -1
  323. package/dist/commands/workflow-render.js +12 -1
  324. package/dist/commands/workflow-render.js.map +1 -1
  325. package/dist/commands/workflow.d.ts.map +1 -1
  326. package/dist/commands/workflow.js +4 -2
  327. package/dist/commands/workflow.js.map +1 -1
  328. package/dist/config-store.d.ts +2 -1
  329. package/dist/config-store.d.ts.map +1 -1
  330. package/dist/config-store.js +15 -0
  331. package/dist/config-store.js.map +1 -1
  332. package/dist/cross-host-executor.d.ts +1 -1
  333. package/dist/cross-host-executor.js +2 -2
  334. package/dist/cross-host-executor.js.map +1 -1
  335. package/dist/daemon-lifecycle.d.ts +8 -11
  336. package/dist/daemon-lifecycle.d.ts.map +1 -1
  337. package/dist/daemon-lifecycle.js +281 -146
  338. package/dist/daemon-lifecycle.js.map +1 -1
  339. package/dist/daemon-start-lock.d.ts +9 -0
  340. package/dist/daemon-start-lock.d.ts.map +1 -0
  341. package/dist/daemon-start-lock.js +47 -0
  342. package/dist/daemon-start-lock.js.map +1 -0
  343. package/dist/front-door.d.ts.map +1 -1
  344. package/dist/front-door.js +8 -1
  345. package/dist/front-door.js.map +1 -1
  346. package/dist/lib/file-transfer.js +1 -1
  347. package/dist/lib/file-transfer.js.map +1 -1
  348. package/dist/lib/walk-consumption.d.ts +6 -0
  349. package/dist/lib/walk-consumption.d.ts.map +1 -0
  350. package/dist/lib/walk-consumption.js +78 -0
  351. package/dist/lib/walk-consumption.js.map +1 -0
  352. package/dist/local-origin.d.ts +3 -0
  353. package/dist/local-origin.d.ts.map +1 -0
  354. package/dist/local-origin.js +37 -0
  355. package/dist/local-origin.js.map +1 -0
  356. package/dist/read-view.d.ts +17 -0
  357. package/dist/read-view.d.ts.map +1 -0
  358. package/dist/read-view.js +17 -0
  359. package/dist/read-view.js.map +1 -0
  360. package/dist/shared-tui.d.ts +12 -0
  361. package/dist/shared-tui.d.ts.map +1 -0
  362. package/dist/shared-tui.js +37 -0
  363. package/dist/shared-tui.js.map +1 -0
  364. package/node_modules/@openrig/daemon/dist/adapters/tmux.d.ts +7 -9
  365. package/node_modules/@openrig/daemon/dist/adapters/tmux.d.ts.map +1 -1
  366. package/node_modules/@openrig/daemon/dist/adapters/tmux.js +7 -35
  367. package/node_modules/@openrig/daemon/dist/adapters/tmux.js.map +1 -1
  368. package/node_modules/@openrig/daemon/dist/build-info.js +3 -3
  369. package/node_modules/@openrig/daemon/dist/daemon-shutdown.d.ts +27 -0
  370. package/node_modules/@openrig/daemon/dist/daemon-shutdown.d.ts.map +1 -0
  371. package/node_modules/@openrig/daemon/dist/daemon-shutdown.js +84 -0
  372. package/node_modules/@openrig/daemon/dist/daemon-shutdown.js.map +1 -0
  373. package/node_modules/@openrig/daemon/dist/domain/codex-thread-id.d.ts +1 -0
  374. package/node_modules/@openrig/daemon/dist/domain/codex-thread-id.d.ts.map +1 -1
  375. package/node_modules/@openrig/daemon/dist/domain/codex-thread-id.js +32 -23
  376. package/node_modules/@openrig/daemon/dist/domain/codex-thread-id.js.map +1 -1
  377. package/node_modules/@openrig/daemon/dist/domain/context-usage-store.d.ts +2 -0
  378. package/node_modules/@openrig/daemon/dist/domain/context-usage-store.d.ts.map +1 -1
  379. package/node_modules/@openrig/daemon/dist/domain/context-usage-store.js +7 -28
  380. package/node_modules/@openrig/daemon/dist/domain/context-usage-store.js.map +1 -1
  381. package/node_modules/@openrig/daemon/dist/domain/crash-cart-conductor.js +1 -1
  382. package/node_modules/@openrig/daemon/dist/domain/crash-cart-conductor.js.map +1 -1
  383. package/node_modules/@openrig/daemon/dist/domain/execution-view.d.ts.map +1 -1
  384. package/node_modules/@openrig/daemon/dist/domain/execution-view.js +24 -3
  385. package/node_modules/@openrig/daemon/dist/domain/execution-view.js.map +1 -1
  386. package/node_modules/@openrig/daemon/dist/domain/gateway/channel-operations.d.ts +1 -1
  387. package/node_modules/@openrig/daemon/dist/domain/gateway/channel-operations.d.ts.map +1 -1
  388. package/node_modules/@openrig/daemon/dist/domain/gateway/connections-projection.d.ts +61 -0
  389. package/node_modules/@openrig/daemon/dist/domain/gateway/connections-projection.d.ts.map +1 -0
  390. package/node_modules/@openrig/daemon/dist/domain/gateway/connections-projection.js +149 -0
  391. package/node_modules/@openrig/daemon/dist/domain/gateway/connections-projection.js.map +1 -0
  392. package/node_modules/@openrig/daemon/dist/domain/gateway/human-registry.d.ts +3 -1
  393. package/node_modules/@openrig/daemon/dist/domain/gateway/human-registry.d.ts.map +1 -1
  394. package/node_modules/@openrig/daemon/dist/domain/gateway/human-registry.js +3 -1
  395. package/node_modules/@openrig/daemon/dist/domain/gateway/human-registry.js.map +1 -1
  396. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/slack-subsystem.d.ts.map +1 -1
  397. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/slack-subsystem.js +3 -2
  398. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/slack-subsystem.js.map +1 -1
  399. package/node_modules/@openrig/daemon/dist/domain/health-diagnosis.js +1 -1
  400. package/node_modules/@openrig/daemon/dist/domain/health-diagnosis.js.map +1 -1
  401. package/node_modules/@openrig/daemon/dist/domain/lifecycle-obligations.d.ts +18 -0
  402. package/node_modules/@openrig/daemon/dist/domain/lifecycle-obligations.d.ts.map +1 -0
  403. package/node_modules/@openrig/daemon/dist/domain/lifecycle-obligations.js +35 -0
  404. package/node_modules/@openrig/daemon/dist/domain/lifecycle-obligations.js.map +1 -0
  405. package/node_modules/@openrig/daemon/dist/domain/model-divergence/current-generation-record.d.ts.map +1 -1
  406. package/node_modules/@openrig/daemon/dist/domain/model-divergence/current-generation-record.js +6 -1
  407. package/node_modules/@openrig/daemon/dist/domain/model-divergence/current-generation-record.js.map +1 -1
  408. package/node_modules/@openrig/daemon/dist/domain/policies/workflow-keepalive.d.ts +1 -0
  409. package/node_modules/@openrig/daemon/dist/domain/policies/workflow-keepalive.d.ts.map +1 -1
  410. package/node_modules/@openrig/daemon/dist/domain/policies/workflow-keepalive.js +7 -4
  411. package/node_modules/@openrig/daemon/dist/domain/policies/workflow-keepalive.js.map +1 -1
  412. package/node_modules/@openrig/daemon/dist/domain/project-lifecycle-compiler.d.ts +7 -0
  413. package/node_modules/@openrig/daemon/dist/domain/project-lifecycle-compiler.d.ts.map +1 -1
  414. package/node_modules/@openrig/daemon/dist/domain/project-lifecycle-compiler.js +119 -23
  415. package/node_modules/@openrig/daemon/dist/domain/project-lifecycle-compiler.js.map +1 -1
  416. package/node_modules/@openrig/daemon/dist/domain/queue-stuck-sweep.d.ts.map +1 -1
  417. package/node_modules/@openrig/daemon/dist/domain/queue-stuck-sweep.js +1 -0
  418. package/node_modules/@openrig/daemon/dist/domain/queue-stuck-sweep.js.map +1 -1
  419. package/node_modules/@openrig/daemon/dist/domain/seat-lifecycle-service.d.ts.map +1 -1
  420. package/node_modules/@openrig/daemon/dist/domain/seat-lifecycle-service.js +8 -1
  421. package/node_modules/@openrig/daemon/dist/domain/seat-lifecycle-service.js.map +1 -1
  422. package/node_modules/@openrig/daemon/dist/domain/startup-orchestrator.d.ts.map +1 -1
  423. package/node_modules/@openrig/daemon/dist/domain/startup-orchestrator.js +27 -11
  424. package/node_modules/@openrig/daemon/dist/domain/startup-orchestrator.js.map +1 -1
  425. package/node_modules/@openrig/daemon/dist/domain/startup-proof.d.ts.map +1 -1
  426. package/node_modules/@openrig/daemon/dist/domain/startup-proof.js +10 -9
  427. package/node_modules/@openrig/daemon/dist/domain/startup-proof.js.map +1 -1
  428. package/node_modules/@openrig/daemon/dist/domain/startup-resolver.d.ts +3 -1
  429. package/node_modules/@openrig/daemon/dist/domain/startup-resolver.d.ts.map +1 -1
  430. package/node_modules/@openrig/daemon/dist/domain/startup-resolver.js +18 -0
  431. package/node_modules/@openrig/daemon/dist/domain/startup-resolver.js.map +1 -1
  432. package/node_modules/@openrig/daemon/dist/domain/startup-validation.d.ts.map +1 -1
  433. package/node_modules/@openrig/daemon/dist/domain/startup-validation.js +12 -1
  434. package/node_modules/@openrig/daemon/dist/domain/startup-validation.js.map +1 -1
  435. package/node_modules/@openrig/daemon/dist/domain/types.d.ts +13 -1
  436. package/node_modules/@openrig/daemon/dist/domain/types.d.ts.map +1 -1
  437. package/node_modules/@openrig/daemon/dist/domain/types.js.map +1 -1
  438. package/node_modules/@openrig/daemon/dist/domain/user-settings/settings-store.d.ts +1 -1
  439. package/node_modules/@openrig/daemon/dist/domain/user-settings/settings-store.d.ts.map +1 -1
  440. package/node_modules/@openrig/daemon/dist/domain/user-settings/settings-store.js +14 -0
  441. package/node_modules/@openrig/daemon/dist/domain/user-settings/settings-store.js.map +1 -1
  442. package/node_modules/@openrig/daemon/dist/domain/workflow-boot-sweep.d.ts +1 -0
  443. package/node_modules/@openrig/daemon/dist/domain/workflow-boot-sweep.d.ts.map +1 -1
  444. package/node_modules/@openrig/daemon/dist/domain/workflow-boot-sweep.js +3 -0
  445. package/node_modules/@openrig/daemon/dist/domain/workflow-boot-sweep.js.map +1 -1
  446. package/node_modules/@openrig/daemon/dist/domain/workflow-exception-escalation.d.ts +4 -3
  447. package/node_modules/@openrig/daemon/dist/domain/workflow-exception-escalation.d.ts.map +1 -1
  448. package/node_modules/@openrig/daemon/dist/domain/workflow-exception-escalation.js +22 -21
  449. package/node_modules/@openrig/daemon/dist/domain/workflow-exception-escalation.js.map +1 -1
  450. package/node_modules/@openrig/daemon/dist/domain/workflow-exception-router.d.ts +4 -3
  451. package/node_modules/@openrig/daemon/dist/domain/workflow-exception-router.d.ts.map +1 -1
  452. package/node_modules/@openrig/daemon/dist/domain/workflow-exception-router.js +7 -6
  453. package/node_modules/@openrig/daemon/dist/domain/workflow-exception-router.js.map +1 -1
  454. package/node_modules/@openrig/daemon/dist/domain/workflow-human-destination.d.ts +18 -0
  455. package/node_modules/@openrig/daemon/dist/domain/workflow-human-destination.d.ts.map +1 -0
  456. package/node_modules/@openrig/daemon/dist/domain/workflow-human-destination.js +40 -0
  457. package/node_modules/@openrig/daemon/dist/domain/workflow-human-destination.js.map +1 -0
  458. package/node_modules/@openrig/daemon/dist/domain/workflow-projector.d.ts +4 -3
  459. package/node_modules/@openrig/daemon/dist/domain/workflow-projector.d.ts.map +1 -1
  460. package/node_modules/@openrig/daemon/dist/domain/workflow-projector.js +26 -17
  461. package/node_modules/@openrig/daemon/dist/domain/workflow-projector.js.map +1 -1
  462. package/node_modules/@openrig/daemon/dist/domain/workflow-role-context.d.ts +4 -6
  463. package/node_modules/@openrig/daemon/dist/domain/workflow-role-context.d.ts.map +1 -1
  464. package/node_modules/@openrig/daemon/dist/domain/workflow-role-context.js +7 -14
  465. package/node_modules/@openrig/daemon/dist/domain/workflow-role-context.js.map +1 -1
  466. package/node_modules/@openrig/daemon/dist/domain/workflow-runtime.d.ts +12 -3
  467. package/node_modules/@openrig/daemon/dist/domain/workflow-runtime.d.ts.map +1 -1
  468. package/node_modules/@openrig/daemon/dist/domain/workflow-runtime.js +66 -14
  469. package/node_modules/@openrig/daemon/dist/domain/workflow-runtime.js.map +1 -1
  470. package/node_modules/@openrig/daemon/dist/domain/workflow-validator.d.ts.map +1 -1
  471. package/node_modules/@openrig/daemon/dist/domain/workflow-validator.js +39 -24
  472. package/node_modules/@openrig/daemon/dist/domain/workflow-validator.js.map +1 -1
  473. package/node_modules/@openrig/daemon/dist/index.d.ts.map +1 -1
  474. package/node_modules/@openrig/daemon/dist/index.js +37 -96
  475. package/node_modules/@openrig/daemon/dist/index.js.map +1 -1
  476. package/node_modules/@openrig/daemon/dist/project-lifecycle-surface.d.ts +1 -1
  477. package/node_modules/@openrig/daemon/dist/project-lifecycle-surface.d.ts.map +1 -1
  478. package/node_modules/@openrig/daemon/dist/routes/gateway.d.ts.map +1 -1
  479. package/node_modules/@openrig/daemon/dist/routes/gateway.js +10 -0
  480. package/node_modules/@openrig/daemon/dist/routes/gateway.js.map +1 -1
  481. package/node_modules/@openrig/daemon/dist/routes/queue.d.ts.map +1 -1
  482. package/node_modules/@openrig/daemon/dist/routes/queue.js +4 -3
  483. package/node_modules/@openrig/daemon/dist/routes/queue.js.map +1 -1
  484. package/node_modules/@openrig/daemon/dist/routes/require-sender-identity.d.ts +3 -1
  485. package/node_modules/@openrig/daemon/dist/routes/require-sender-identity.d.ts.map +1 -1
  486. package/node_modules/@openrig/daemon/dist/routes/require-sender-identity.js +11 -5
  487. package/node_modules/@openrig/daemon/dist/routes/require-sender-identity.js.map +1 -1
  488. package/node_modules/@openrig/daemon/dist/routes/sessions.d.ts.map +1 -1
  489. package/node_modules/@openrig/daemon/dist/routes/sessions.js +95 -27
  490. package/node_modules/@openrig/daemon/dist/routes/sessions.js.map +1 -1
  491. package/node_modules/@openrig/daemon/dist/routes/workflow.d.ts.map +1 -1
  492. package/node_modules/@openrig/daemon/dist/routes/workflow.js +6 -1
  493. package/node_modules/@openrig/daemon/dist/routes/workflow.js.map +1 -1
  494. package/node_modules/@openrig/daemon/dist/server.d.ts.map +1 -1
  495. package/node_modules/@openrig/daemon/dist/server.js +2 -1
  496. package/node_modules/@openrig/daemon/dist/server.js.map +1 -1
  497. package/node_modules/@openrig/daemon/dist/startup.d.ts.map +1 -1
  498. package/node_modules/@openrig/daemon/dist/startup.js +6 -3
  499. package/node_modules/@openrig/daemon/dist/startup.js.map +1 -1
  500. package/node_modules/@openrig/daemon/package.json +5 -1
  501. package/package.json +1 -1
  502. package/tui/dist/commands/completion.d.ts +8 -0
  503. package/tui/dist/commands/completion.d.ts.map +1 -0
  504. package/tui/dist/commands/completion.js +37 -0
  505. package/tui/dist/commands/completion.js.map +1 -0
  506. package/tui/dist/commands/registry.d.ts +7 -1
  507. package/tui/dist/commands/registry.d.ts.map +1 -1
  508. package/tui/dist/commands/registry.js +47 -0
  509. package/tui/dist/commands/registry.js.map +1 -1
  510. package/tui/dist/connections/connections-model.d.ts +72 -0
  511. package/tui/dist/connections/connections-model.d.ts.map +1 -0
  512. package/tui/dist/connections/connections-model.js +64 -0
  513. package/tui/dist/connections/connections-model.js.map +1 -0
  514. package/tui/dist/daemon-client.d.ts +1 -0
  515. package/tui/dist/daemon-client.d.ts.map +1 -1
  516. package/tui/dist/daemon-client.js +1 -0
  517. package/tui/dist/daemon-client.js.map +1 -1
  518. package/tui/dist/detail.d.ts +3 -0
  519. package/tui/dist/detail.d.ts.map +1 -1
  520. package/tui/dist/detail.js +23 -0
  521. package/tui/dist/detail.js.map +1 -1
  522. package/tui/dist/execution/execution-model.d.ts +1 -1
  523. package/tui/dist/execution/execution-model.d.ts.map +1 -1
  524. package/tui/dist/execution/execution-model.js +46 -170
  525. package/tui/dist/execution/execution-model.js.map +1 -1
  526. package/tui/dist/execution/workflow-model.d.ts +6 -0
  527. package/tui/dist/execution/workflow-model.d.ts.map +1 -0
  528. package/tui/dist/execution/workflow-model.js +219 -0
  529. package/tui/dist/execution/workflow-model.js.map +1 -0
  530. package/tui/dist/grammar.d.ts.map +1 -1
  531. package/tui/dist/grammar.js +1 -2
  532. package/tui/dist/grammar.js.map +1 -1
  533. package/tui/dist/health/health-model.d.ts +1 -1
  534. package/tui/dist/health/health-model.d.ts.map +1 -1
  535. package/tui/dist/health/health-model.js +5 -4
  536. package/tui/dist/health/health-model.js.map +1 -1
  537. package/tui/dist/hydrate.d.ts.map +1 -1
  538. package/tui/dist/hydrate.js +45 -8
  539. package/tui/dist/hydrate.js.map +1 -1
  540. package/tui/dist/input.d.ts +2 -0
  541. package/tui/dist/input.d.ts.map +1 -1
  542. package/tui/dist/input.js +28 -6
  543. package/tui/dist/input.js.map +1 -1
  544. package/tui/dist/main.js +47 -10
  545. package/tui/dist/main.js.map +1 -1
  546. package/tui/dist/render.d.ts +4 -0
  547. package/tui/dist/render.d.ts.map +1 -1
  548. package/tui/dist/render.js +128 -74
  549. package/tui/dist/render.js.map +1 -1
  550. package/tui/dist/sections.d.ts.map +1 -1
  551. package/tui/dist/sections.js +1 -0
  552. package/tui/dist/sections.js.map +1 -1
  553. package/tui/dist/socket-server.d.ts +4 -0
  554. package/tui/dist/socket-server.d.ts.map +1 -1
  555. package/tui/dist/socket-server.js +4 -0
  556. package/tui/dist/socket-server.js.map +1 -1
  557. package/tui/dist/state.d.ts +3 -1
  558. package/tui/dist/state.d.ts.map +1 -1
  559. package/tui/dist/state.js +47 -9
  560. package/tui/dist/state.js.map +1 -1
  561. package/tui/dist/stylize.js +3 -3
  562. package/tui/dist/stylize.js.map +1 -1
  563. package/tui/dist/time.d.ts +9 -0
  564. package/tui/dist/time.d.ts.map +1 -0
  565. package/tui/dist/time.js +42 -0
  566. package/tui/dist/time.js.map +1 -0
  567. package/tui/dist/types.d.ts +36 -1
  568. package/tui/dist/types.d.ts.map +1 -1
@@ -29,6 +29,9 @@ import { ensureWorkflowKeepaliveArmed } from "./workflow-keepalive-arming.js";
29
29
  export async function runWorkflowBootSweep(deps) {
30
30
  const log = deps.log ?? (() => { });
31
31
  const now = (deps.now ?? (() => new Date()))();
32
+ const exceptionsClosed = deps.reconcileStuckExceptions?.() ?? 0;
33
+ if (exceptionsClosed)
34
+ log(`workflow boot sweep: ${exceptionsClosed} resolved overdue exception item(s) closed`);
32
35
  const instances = [
33
36
  ...deps.instanceStore.listByStatus("active"),
34
37
  ...deps.instanceStore.listByStatus("waiting"),
@@ -1 +1 @@
1
- {"version":3,"file":"workflow-boot-sweep.js","sourceRoot":"","sources":["../../src/domain/workflow-boot-sweep.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workflow-boot-sweep.js","sourceRoot":"","sources":["../../src/domain/workflow-boot-sweep.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,9 @@
1
1
  import type Database from "better-sqlite3";
2
- import type { QueueRepository } from "./queue-repository.js";
2
+ import { type QueueRepository } from "./queue-repository.js";
3
3
  import type { WorkflowDeadlineVerdict } from "./workflow-deadline.js";
4
4
  import { type WorkflowExceptionClass } from "./workflow-exception.js";
5
5
  import type { ExceptionRoute } from "./workflow-exception-router.js";
6
+ import { type WorkflowHumanDestination } from "./workflow-human-destination.js";
6
7
  export interface EnsureStuckExceptionInput {
7
8
  workflowName: string;
8
9
  workflowVersion: string;
@@ -21,12 +22,12 @@ export interface StuckExceptionDeps {
21
22
  queueRepo: QueueRepository;
22
23
  /** The maturity-dial resolution for a cached spec (runtime-owned —
23
24
  * spec lookup + the shipped role resolution live there). null =
24
- * spec not cached; the never-lost fallback applies.
25
+ * spec not cached; registered-human selection applies.
25
26
  * OPR.0.4.6.FAC1 (arch Q3): boundRig = the stuck instance's bound
26
27
  * rig (read from workflow_instances at detection time) so the
27
28
  * orchestrator-role dial position resolves capability-aware. */
28
29
  resolveRoute: (workflowName: string, workflowVersion: string, exceptionClass: WorkflowExceptionClass, boundRig?: string | null) => ExceptionRoute | null;
29
- humanFallbackSeat?: string;
30
+ humanFallbackSeat?: WorkflowHumanDestination;
30
31
  log?: (line: string) => void;
31
32
  }
32
33
  export declare function makeEnsureStuckExceptionItem(deps: StuckExceptionDeps): EnsureStuckExceptionItem;
@@ -1 +1 @@
1
- {"version":3,"file":"workflow-exception-escalation.d.ts","sourceRoot":"","sources":["../../src/domain/workflow-exception-escalation.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACtE,OAAO,EAGL,KAAK,sBAAsB,EAC5B,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAErE,MAAM,WAAW,yBAAyB;IACxC,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB;6EACyE;IACzE,gBAAgB,EAAE,MAAM,CAAC;IACzB,OAAO,EAAE,uBAAuB,CAAC;CAClC;AAED,MAAM,WAAW,0BAA0B;IACzC,OAAO,EAAE,iBAAiB,GAAG,SAAS,GAAG,SAAS,CAAC;IACnD,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,MAAM,wBAAwB,GAAG,CACrC,KAAK,EAAE,yBAAyB,KAC7B,OAAO,CAAC,0BAA0B,CAAC,CAAC;AAEzC,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,QAAQ,CAAC,QAAQ,CAAC;IACtB,SAAS,EAAE,eAAe,CAAC;IAC3B;;;;;qEAKiE;IACjE,YAAY,EAAE,CACZ,YAAY,EAAE,MAAM,EACpB,eAAe,EAAE,MAAM,EACvB,cAAc,EAAE,sBAAsB,EACtC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,KACrB,cAAc,GAAG,IAAI,CAAC;IAC3B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAC9B;AAED,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,kBAAkB,GAAG,wBAAwB,CAwF/F"}
1
+ {"version":3,"file":"workflow-exception-escalation.d.ts","sourceRoot":"","sources":["../../src/domain/workflow-exception-escalation.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAwB,KAAK,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACnF,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACtE,OAAO,EAGL,KAAK,sBAAsB,EAC5B,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,EAA4B,KAAK,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAE1G,MAAM,WAAW,yBAAyB;IACxC,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB;6EACyE;IACzE,gBAAgB,EAAE,MAAM,CAAC;IACzB,OAAO,EAAE,uBAAuB,CAAC;CAClC;AAED,MAAM,WAAW,0BAA0B;IACzC,OAAO,EAAE,iBAAiB,GAAG,SAAS,GAAG,SAAS,CAAC;IACnD,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,MAAM,wBAAwB,GAAG,CACrC,KAAK,EAAE,yBAAyB,KAC7B,OAAO,CAAC,0BAA0B,CAAC,CAAC;AAEzC,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,QAAQ,CAAC,QAAQ,CAAC;IACtB,SAAS,EAAE,eAAe,CAAC;IAC3B;;;;;qEAKiE;IACjE,YAAY,EAAE,CACZ,YAAY,EAAE,MAAM,EACpB,eAAe,EAAE,MAAM,EACvB,cAAc,EAAE,sBAAsB,EACtC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,KACrB,cAAc,GAAG,IAAI,CAAC;IAC3B,iBAAiB,CAAC,EAAE,wBAAwB,CAAC;IAC7C,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAC9B;AAED,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,kBAAkB,GAAG,wBAAwB,CAwF/F"}
@@ -20,10 +20,11 @@
20
20
  // send|skip|terminal) — the keepalive calls this injected helper as a
21
21
  // side effect of its EXISTING evaluation; the sweep likewise. Injection
22
22
  // at startup per the validateRig precedent.
23
+ import { QueueRepositoryError } from "./queue-repository.js";
23
24
  import { classifyDeadlineVerdict, workflowExceptionTags, } from "./workflow-exception.js";
25
+ import { workflowHumanDestination } from "./workflow-human-destination.js";
24
26
  export function makeEnsureStuckExceptionItem(deps) {
25
27
  const log = deps.log ?? (() => { });
26
- const fallbackSeat = deps.humanFallbackSeat ?? "human@host";
27
28
  return async (input) => {
28
29
  const exception = classifyDeadlineVerdict(input.workflowName, input.verdict);
29
30
  if (!exception)
@@ -34,8 +35,13 @@ export function makeEnsureStuckExceptionItem(deps) {
34
35
  const open = deps.db
35
36
  .prepare(`SELECT qitem_id, destination_session FROM queue_items
36
37
  WHERE state IN ('pending','in-progress','blocked')
37
- AND tags LIKE ? AND tags LIKE ?`)
38
- .get(`%"occurrence:${exception.identity.occurrenceKey}"%`, `%"exception:stuck_overdue"%`);
38
+ AND json_valid(tags)
39
+ AND EXISTS (SELECT 1 FROM json_each(tags) WHERE value = ?)
40
+ AND EXISTS (SELECT 1 FROM json_each(tags) WHERE value = ?)
41
+ AND EXISTS (SELECT 1 FROM json_each(tags) WHERE value = ?)
42
+ AND EXISTS (SELECT 1 FROM json_each(tags) WHERE value = 'workflow-exception')
43
+ AND EXISTS (SELECT 1 FROM json_each(tags) WHERE value = 'exception:stuck_overdue')`)
44
+ .get(`occurrence:${exception.identity.occurrenceKey}`, `instance:${exception.identity.instanceId}`, `workflow:${exception.identity.workflowName}`);
39
45
  if (open) {
40
46
  // Re-detection of the same unresolved episode: re-nudge the ONE
41
47
  // item (best-effort — the durable item is the guarantee).
@@ -44,24 +50,19 @@ export function makeEnsureStuckExceptionItem(deps) {
44
50
  }
45
51
  // OPR.0.4.6.FAC1 (arch Q3): each exception item is a FRESH routing
46
52
  // decision at its own detection moment — read the stuck instance's
47
- // bound rig NOW (defensive to a pre-052 fixture db: absent column
48
- // reads as unbound, the shipped behavior).
53
+ // bound rig NOW. A failed read cannot establish an unbound instance:
54
+ // propagate it before any routing or queue write.
49
55
  let detectionBoundRig = null;
50
56
  const stuckInstanceId = exception.deadlineEvidence?.instanceId;
51
57
  if (stuckInstanceId) {
52
- try {
53
- const row = deps.db
54
- .prepare(`SELECT bound_rig FROM workflow_instances WHERE instance_id = ?`)
55
- .get(stuckInstanceId);
56
- detectionBoundRig = row?.bound_rig ?? null;
57
- }
58
- catch {
59
- detectionBoundRig = null;
60
- }
58
+ const row = deps.db
59
+ .prepare(`SELECT bound_rig FROM workflow_instances WHERE instance_id = ?`)
60
+ .get(stuckInstanceId);
61
+ detectionBoundRig = row?.bound_rig ?? null;
61
62
  }
62
63
  const route = deps.resolveRoute(input.workflowName, input.workflowVersion, "stuck_overdue", detectionBoundRig) ?? {
63
64
  position: "fallback",
64
- destinationSession: fallbackSeat,
65
+ destinationSession: workflowHumanDestination(deps.humanFallbackSeat),
65
66
  tier: "human-gate",
66
67
  humanRouted: true,
67
68
  resolvedVia: "engine-default",
@@ -90,12 +91,12 @@ export function makeEnsureStuckExceptionItem(deps) {
90
91
  try {
91
92
  created = await createItem(route.destinationSession, route.tier);
92
93
  }
93
- catch {
94
- // THE NEVER-LOST WRITE-GATE FALLBACK (same contract as class (a)):
95
- // a gate-rejected routed destination re-routes human@host rather
96
- // than losing the exception. A failure of THIS create is a real
97
- // storage error and propagates to the caller's non-fatal handling.
98
- created = await createItem(fallbackSeat, "human-gate");
94
+ catch (error) {
95
+ if (!(error instanceof QueueRepositoryError) || error.code !== "unknown_destination_rig" || route.humanRouted)
96
+ throw error;
97
+ // An unavailable agent rig may use the registered human fallback.
98
+ // Other admission/storage failures retain their original diagnosis.
99
+ created = await createItem(workflowHumanDestination(deps.humanFallbackSeat), "human-gate");
99
100
  }
100
101
  log(`workflow exception: stuck_overdue item ${created.qitemId} created for instance ${e.instanceId} (step ${e.stepId ?? "?"}, ${route.position})`);
101
102
  return { outcome: "created", qitemId: created.qitemId };
@@ -1 +1 @@
1
- {"version":3,"file":"workflow-exception-escalation.js","sourceRoot":"","sources":["../../src/domain/workflow-exception-escalation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workflow-exception-escalation.js","sourceRoot":"","sources":["../../src/domain/workflow-exception-escalation.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import type { WorkflowExceptionClass } from "./workflow-exception.js";
2
2
  import type { WorkflowExceptionDialPosition, WorkflowSpec } from "./workflow-types.js";
3
+ import { type WorkflowHumanDestination } from "./workflow-human-destination.js";
3
4
  /** The ordinary workflow-packet tier (the shipped default the attention
4
5
  * union deliberately does NOT match on). */
5
6
  export declare const WORKFLOW_EXCEPTION_ORCHESTRATOR_TIER = "mode2";
@@ -14,12 +15,12 @@ export interface ExceptionRouteInput {
14
15
  /** The shipped role→preferred_targets resolution, wrapped by the caller
15
16
  * (workflow-runtime owns runtime matching). null = unresolvable. */
16
17
  resolveRoleTarget: (roleName: string) => string | null;
17
- /** The honest never-lost fallback seat (human@<host> form). */
18
- humanFallbackSeat: string;
18
+ /** Lazy: a valid agent route must not require human configuration. */
19
+ humanFallbackSeat?: WorkflowHumanDestination;
19
20
  }
20
21
  export interface ExceptionRoute {
21
22
  /** Where the chain landed. `fallback` = orchestrator position whose
22
- * role target did not resolve (still never lost). */
23
+ * role target did not resolve. */
23
24
  position: "orchestrator" | "human_only" | "fallback";
24
25
  destinationSession: string;
25
26
  /** THE TIER SPLIT — human-gate iff humanRouted. */
@@ -1 +1 @@
1
- {"version":3,"file":"workflow-exception-router.d.ts","sourceRoot":"","sources":["../../src/domain/workflow-exception-router.ts"],"names":[],"mappings":"AAkCA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,KAAK,EAAE,6BAA6B,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEvF;6CAC6C;AAC7C,eAAO,MAAM,oCAAoC,UAAU,CAAC;AAC5D,+DAA+D;AAC/D,eAAO,MAAM,6BAA6B,eAAe,CAAC;AAE1D,MAAM,WAAW,mBAAmB;IAClC,cAAc,EAAE,sBAAsB,CAAC;IACvC,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,mBAAmB,GAAG,OAAO,CAAC,CAAC;IACxD;gDAC4C;IAC5C,eAAe,EAAE,6BAA6B,GAAG,IAAI,CAAC;IACtD;yEACqE;IACrE,iBAAiB,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IACvD,+DAA+D;IAC/D,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,cAAc;IAC7B;0DACsD;IACtD,QAAQ,EAAE,cAAc,GAAG,YAAY,GAAG,UAAU,CAAC;IACrD,kBAAkB,EAAE,MAAM,CAAC;IAC3B,mDAAmD;IACnD,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,OAAO,CAAC;IACrB;qCACiC;IACjC,WAAW,EAAE,iBAAiB,GAAG,gBAAgB,GAAG,mBAAmB,GAAG,cAAc,GAAG,gBAAgB,CAAC;CAC7G;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,mBAAmB,GAAG,cAAc,CAsDhF"}
1
+ {"version":3,"file":"workflow-exception-router.d.ts","sourceRoot":"","sources":["../../src/domain/workflow-exception-router.ts"],"names":[],"mappings":"AAkCA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,KAAK,EAAE,6BAA6B,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACvF,OAAO,EAA4B,KAAK,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAE1G;6CAC6C;AAC7C,eAAO,MAAM,oCAAoC,UAAU,CAAC;AAC5D,+DAA+D;AAC/D,eAAO,MAAM,6BAA6B,eAAe,CAAC;AAE1D,MAAM,WAAW,mBAAmB;IAClC,cAAc,EAAE,sBAAsB,CAAC;IACvC,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,mBAAmB,GAAG,OAAO,CAAC,CAAC;IACxD;gDAC4C;IAC5C,eAAe,EAAE,6BAA6B,GAAG,IAAI,CAAC;IACtD;yEACqE;IACrE,iBAAiB,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IACvD,sEAAsE;IACtE,iBAAiB,CAAC,EAAE,wBAAwB,CAAC;CAC9C;AAED,MAAM,WAAW,cAAc;IAC7B;uCACmC;IACnC,QAAQ,EAAE,cAAc,GAAG,YAAY,GAAG,UAAU,CAAC;IACrD,kBAAkB,EAAE,MAAM,CAAC;IAC3B,mDAAmD;IACnD,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,OAAO,CAAC;IACrB;qCACiC;IACjC,WAAW,EAAE,iBAAiB,GAAG,gBAAgB,GAAG,mBAAmB,GAAG,cAAc,GAAG,gBAAgB,CAAC;CAC7G;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,mBAAmB,GAAG,cAAc,CAsDhF"}
@@ -7,15 +7,15 @@
7
7
  // 2. the spec's declared per-WORKFLOW default (exception_routing.default)
8
8
  // 3. the host-level dial default (settings key
9
9
  // `workflow.exception_routing` — the MH-1 dynamic-key pattern;
10
- // READ BY THE CALLER and passed in: this module stays pure)
10
+ // READ BY THE CALLER and passed in)
11
11
  // 4. absent everywhere → ORCHESTRATOR-FIRST (the v1.3 engine default)
12
12
  //
13
13
  // Position → target:
14
14
  // orchestrator → the spec-declared orchestrator role, resolved through
15
15
  // the SAME shipped role→preferred_targets mechanism step owners use
16
16
  // (caller passes the resolver — no new resolution machinery, no
17
- // binding-layer dependency). Unresolvable → THE NEVER-LOST FALLBACK:
18
- // the human seat (an exception NEVER fails to route).
17
+ // binding-layer dependency). Unresolvable → registered-human selection,
18
+ // or an explicit selection error when no human can be chosen.
19
19
  // human_only → the human seat FIRST, and it GATES there (the
20
20
  // orchestrator never auto-acts). Class (c) is intrinsically
21
21
  // human-only — its WF-2-compiled park IS the item; FR-2 mints no
@@ -31,6 +31,7 @@
31
31
  // Dial semantics: same recorded state + same config = same target, every
32
32
  // time. A dial change applies to FUTURE items only — resolution runs
33
33
  // exactly once, at item creation; nothing re-routes live items.
34
+ import { workflowHumanDestination } from "./workflow-human-destination.js";
34
35
  /** The ordinary workflow-packet tier (the shipped default the attention
35
36
  * union deliberately does NOT match on). */
36
37
  export const WORKFLOW_EXCEPTION_ORCHESTRATOR_TIER = "mode2";
@@ -65,7 +66,7 @@ export function resolveExceptionRoute(input) {
65
66
  if (position === "human_only") {
66
67
  return {
67
68
  position: "human_only",
68
- destinationSession: input.humanFallbackSeat,
69
+ destinationSession: workflowHumanDestination(input.humanFallbackSeat),
69
70
  tier: WORKFLOW_EXCEPTION_HUMAN_TIER,
70
71
  humanRouted: true,
71
72
  resolvedVia,
@@ -73,13 +74,13 @@ export function resolveExceptionRoute(input) {
73
74
  }
74
75
  // orchestrator position: resolve the declared orchestrator role via the
75
76
  // shipped mechanism; unresolvable (no role declared, role unknown, or
76
- // no target) = the never-lost human fallback.
77
+ // no target) = registered-human selection.
77
78
  const roleName = routing?.orchestrator_role;
78
79
  const target = roleName ? input.resolveRoleTarget(roleName) : null;
79
80
  if (!target) {
80
81
  return {
81
82
  position: "fallback",
82
- destinationSession: input.humanFallbackSeat,
83
+ destinationSession: workflowHumanDestination(input.humanFallbackSeat),
83
84
  tier: WORKFLOW_EXCEPTION_HUMAN_TIER,
84
85
  humanRouted: true,
85
86
  resolvedVia,
@@ -1 +1 @@
1
- {"version":3,"file":"workflow-exception-router.js","sourceRoot":"","sources":["../../src/domain/workflow-exception-router.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,uEAAuE;AACvE,sDAAsD;AACtD,EAAE;AACF,yCAAyC;AACzC,4EAA4E;AAC5E,4EAA4E;AAC5E,8DAA8D;AAC9D,oEAAoE;AACpE,iEAAiE;AACjE,wEAAwE;AACxE,EAAE;AACF,qBAAqB;AACrB,yEAAyE;AACzE,wEAAwE;AACxE,oEAAoE;AACpE,yEAAyE;AACzE,0DAA0D;AAC1D,+DAA+D;AAC/D,gEAAgE;AAChE,qEAAqE;AACrE,iEAAiE;AACjE,EAAE;AACF,uEAAuE;AACvE,gEAAgE;AAChE,sEAAsE;AACtE,mEAAmE;AACnE,sEAAsE;AACtE,6DAA6D;AAC7D,EAAE;AACF,yEAAyE;AACzE,qEAAqE;AACrE,gEAAgE;AAKhE;6CAC6C;AAC7C,MAAM,CAAC,MAAM,oCAAoC,GAAG,OAAO,CAAC;AAC5D,+DAA+D;AAC/D,MAAM,CAAC,MAAM,6BAA6B,GAAG,YAAY,CAAC;AA4B1D,MAAM,UAAU,qBAAqB,CAAC,KAA0B;IAC9D,wEAAwE;IACxE,kDAAkD;IAClD,IAAI,QAAuC,CAAC;IAC5C,IAAI,WAA0C,CAAC;IAC/C,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC;IAC7C,IAAI,KAAK,CAAC,cAAc,KAAK,iBAAiB,EAAE,CAAC;QAC/C,QAAQ,GAAG,YAAY,CAAC;QACxB,WAAW,GAAG,iBAAiB,CAAC;IAClC,CAAC;SAAM,IAAI,OAAO,EAAE,OAAO,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE,CAAC;QACpD,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,cAAc,CAAE,CAAC;QAClD,WAAW,GAAG,gBAAgB,CAAC;IACjC,CAAC;SAAM,IAAI,OAAO,EAAE,OAAO,EAAE,CAAC;QAC5B,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC;QAC3B,WAAW,GAAG,mBAAmB,CAAC;IACpC,CAAC;SAAM,IAAI,KAAK,CAAC,eAAe,EAAE,CAAC;QACjC,QAAQ,GAAG,KAAK,CAAC,eAAe,CAAC;QACjC,WAAW,GAAG,cAAc,CAAC;IAC/B,CAAC;SAAM,CAAC;QACN,QAAQ,GAAG,cAAc,CAAC;QAC1B,WAAW,GAAG,gBAAgB,CAAC;IACjC,CAAC;IAED,IAAI,QAAQ,KAAK,YAAY,EAAE,CAAC;QAC9B,OAAO;YACL,QAAQ,EAAE,YAAY;YACtB,kBAAkB,EAAE,KAAK,CAAC,iBAAiB;YAC3C,IAAI,EAAE,6BAA6B;YACnC,WAAW,EAAE,IAAI;YACjB,WAAW;SACZ,CAAC;IACJ,CAAC;IAED,wEAAwE;IACxE,sEAAsE;IACtE,8CAA8C;IAC9C,MAAM,QAAQ,GAAG,OAAO,EAAE,iBAAiB,CAAC;IAC5C,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACnE,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO;YACL,QAAQ,EAAE,UAAU;YACpB,kBAAkB,EAAE,KAAK,CAAC,iBAAiB;YAC3C,IAAI,EAAE,6BAA6B;YACnC,WAAW,EAAE,IAAI;YACjB,WAAW;SACZ,CAAC;IACJ,CAAC;IACD,OAAO;QACL,QAAQ,EAAE,cAAc;QACxB,kBAAkB,EAAE,MAAM;QAC1B,IAAI,EAAE,oCAAoC;QAC1C,WAAW,EAAE,KAAK;QAClB,WAAW;KACZ,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"workflow-exception-router.js","sourceRoot":"","sources":["../../src/domain/workflow-exception-router.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,uEAAuE;AACvE,sDAAsD;AACtD,EAAE;AACF,yCAAyC;AACzC,4EAA4E;AAC5E,4EAA4E;AAC5E,8DAA8D;AAC9D,oEAAoE;AACpE,yCAAyC;AACzC,wEAAwE;AACxE,EAAE;AACF,qBAAqB;AACrB,yEAAyE;AACzE,wEAAwE;AACxE,oEAAoE;AACpE,4EAA4E;AAC5E,kEAAkE;AAClE,+DAA+D;AAC/D,gEAAgE;AAChE,qEAAqE;AACrE,iEAAiE;AACjE,EAAE;AACF,uEAAuE;AACvE,gEAAgE;AAChE,sEAAsE;AACtE,mEAAmE;AACnE,sEAAsE;AACtE,6DAA6D;AAC7D,EAAE;AACF,yEAAyE;AACzE,qEAAqE;AACrE,gEAAgE;AAIhE,OAAO,EAAE,wBAAwB,EAAiC,MAAM,iCAAiC,CAAC;AAE1G;6CAC6C;AAC7C,MAAM,CAAC,MAAM,oCAAoC,GAAG,OAAO,CAAC;AAC5D,+DAA+D;AAC/D,MAAM,CAAC,MAAM,6BAA6B,GAAG,YAAY,CAAC;AA4B1D,MAAM,UAAU,qBAAqB,CAAC,KAA0B;IAC9D,wEAAwE;IACxE,kDAAkD;IAClD,IAAI,QAAuC,CAAC;IAC5C,IAAI,WAA0C,CAAC;IAC/C,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC;IAC7C,IAAI,KAAK,CAAC,cAAc,KAAK,iBAAiB,EAAE,CAAC;QAC/C,QAAQ,GAAG,YAAY,CAAC;QACxB,WAAW,GAAG,iBAAiB,CAAC;IAClC,CAAC;SAAM,IAAI,OAAO,EAAE,OAAO,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE,CAAC;QACpD,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,cAAc,CAAE,CAAC;QAClD,WAAW,GAAG,gBAAgB,CAAC;IACjC,CAAC;SAAM,IAAI,OAAO,EAAE,OAAO,EAAE,CAAC;QAC5B,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC;QAC3B,WAAW,GAAG,mBAAmB,CAAC;IACpC,CAAC;SAAM,IAAI,KAAK,CAAC,eAAe,EAAE,CAAC;QACjC,QAAQ,GAAG,KAAK,CAAC,eAAe,CAAC;QACjC,WAAW,GAAG,cAAc,CAAC;IAC/B,CAAC;SAAM,CAAC;QACN,QAAQ,GAAG,cAAc,CAAC;QAC1B,WAAW,GAAG,gBAAgB,CAAC;IACjC,CAAC;IAED,IAAI,QAAQ,KAAK,YAAY,EAAE,CAAC;QAC9B,OAAO;YACL,QAAQ,EAAE,YAAY;YACtB,kBAAkB,EAAE,wBAAwB,CAAC,KAAK,CAAC,iBAAiB,CAAC;YACrE,IAAI,EAAE,6BAA6B;YACnC,WAAW,EAAE,IAAI;YACjB,WAAW;SACZ,CAAC;IACJ,CAAC;IAED,wEAAwE;IACxE,sEAAsE;IACtE,2CAA2C;IAC3C,MAAM,QAAQ,GAAG,OAAO,EAAE,iBAAiB,CAAC;IAC5C,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACnE,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO;YACL,QAAQ,EAAE,UAAU;YACpB,kBAAkB,EAAE,wBAAwB,CAAC,KAAK,CAAC,iBAAiB,CAAC;YACrE,IAAI,EAAE,6BAA6B;YACnC,WAAW,EAAE,IAAI;YACjB,WAAW;SACZ,CAAC;IACJ,CAAC;IACD,OAAO;QACL,QAAQ,EAAE,cAAc;QACxB,kBAAkB,EAAE,MAAM;QAC1B,IAAI,EAAE,oCAAoC;QAC1C,WAAW,EAAE,KAAK;QAClB,WAAW;KACZ,CAAC;AACJ,CAAC"}
@@ -0,0 +1,18 @@
1
+ import { type LoadResult } from "./gateway/human-registry.js";
2
+ export declare class WorkflowHumanDestinationError extends Error {
3
+ readonly details: {
4
+ state: string;
5
+ [key: string]: unknown;
6
+ };
7
+ readonly code = "workflow_human_destination_unavailable";
8
+ constructor(details: {
9
+ state: string;
10
+ [key: string]: unknown;
11
+ }, message: string);
12
+ }
13
+ /** The existing operator selection, resolved afresh only when a human is needed. */
14
+ export declare function resolveWorkflowHumanDestination(configured?: () => unknown, registry?: () => LoadResult): string;
15
+ /** Explicit injected destinations remain available to embedders and isolated fixtures. */
16
+ export type WorkflowHumanDestination = string | (() => string);
17
+ export declare function workflowHumanDestination(selection?: WorkflowHumanDestination): string;
18
+ //# sourceMappingURL=workflow-human-destination.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-human-destination.d.ts","sourceRoot":"","sources":["../../src/domain/workflow-human-destination.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoD,KAAK,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAGhH,qBAAa,6BAA8B,SAAQ,KAAK;aAE1B,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE;IAD9E,QAAQ,CAAC,IAAI,4CAA4C;gBAC7B,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,EAAE,OAAO,EAAE,MAAM;CAIhG;AAED,oFAAoF;AACpF,wBAAgB,+BAA+B,CAC7C,UAAU,GAAE,MAAM,OAAoF,EACtG,QAAQ,GAAE,MAAM,UAA8B,GAC7C,MAAM,CAuBR;AAED,0FAA0F;AAC1F,MAAM,MAAM,wBAAwB,GAAG,MAAM,GAAG,CAAC,MAAM,MAAM,CAAC,CAAC;AAC/D,wBAAgB,wBAAwB,CAAC,SAAS,GAAE,wBAA0D,GAAG,MAAM,CAEtH"}
@@ -0,0 +1,40 @@
1
+ import { loadHumanRegistry, resolveRegisteredHumanAddress } from "./gateway/human-registry.js";
2
+ import { SettingsStore } from "./user-settings/settings-store.js";
3
+ export class WorkflowHumanDestinationError extends Error {
4
+ details;
5
+ code = "workflow_human_destination_unavailable";
6
+ constructor(details, message) {
7
+ super(message);
8
+ this.details = details;
9
+ this.name = "WorkflowHumanDestinationError";
10
+ }
11
+ }
12
+ /** The existing operator selection, resolved afresh only when a human is needed. */
13
+ export function resolveWorkflowHumanDestination(configured = () => new SettingsStore().resolveOne("workspace.operator_seat_name").value, registry = loadHumanRegistry) {
14
+ let selected;
15
+ let loaded;
16
+ try {
17
+ selected = configured();
18
+ loaded = registry();
19
+ }
20
+ catch (error) {
21
+ throw new WorkflowHumanDestinationError({ state: "unavailable" }, `Workflow human selection is unavailable: ${error instanceof Error ? error.message : String(error)}`);
22
+ }
23
+ if (!loaded.ok) {
24
+ throw new WorkflowHumanDestinationError({ state: "registry-unavailable" }, loaded.error);
25
+ }
26
+ const addresses = loaded.entities.map((human) => human.address);
27
+ if (typeof selected === "string" && selected.trim()) {
28
+ const address = resolveRegisteredHumanAddress(selected.trim(), loaded.entities);
29
+ if (address)
30
+ return address;
31
+ throw new WorkflowHumanDestinationError({ state: "unregistered", selected, addresses }, "workspace.operator_seat_name does not select a registered human. Inspect rig gateway human list --json and select the intended registered address.");
32
+ }
33
+ if (addresses.length === 1)
34
+ return addresses[0];
35
+ throw new WorkflowHumanDestinationError({ state: addresses.length ? "ambiguous" : "missing", addresses }, "Workflow human fallback needs one registered human. Inspect rig gateway human list --json; when several exist, explicitly select workspace.operator_seat_name. No human destination was invented.");
36
+ }
37
+ export function workflowHumanDestination(selection = resolveWorkflowHumanDestination) {
38
+ return typeof selection === "function" ? selection() : selection;
39
+ }
40
+ //# sourceMappingURL=workflow-human-destination.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-human-destination.js","sourceRoot":"","sources":["../../src/domain/workflow-human-destination.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,6BAA6B,EAAmB,MAAM,6BAA6B,CAAC;AAChH,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAElE,MAAM,OAAO,6BAA8B,SAAQ,KAAK;IAE1B;IADnB,IAAI,GAAG,wCAAwC,CAAC;IACzD,YAA4B,OAAkD,EAAE,OAAe;QAC7F,KAAK,CAAC,OAAO,CAAC,CAAC;QADW,YAAO,GAAP,OAAO,CAA2C;QAE5E,IAAI,CAAC,IAAI,GAAG,+BAA+B,CAAC;IAC9C,CAAC;CACF;AAED,oFAAoF;AACpF,MAAM,UAAU,+BAA+B,CAC7C,aAA4B,GAAG,EAAE,CAAC,IAAI,aAAa,EAAE,CAAC,UAAU,CAAC,8BAA8B,CAAC,CAAC,KAAK,EACtG,WAA6B,iBAAiB;IAE9C,IAAI,QAAiB,CAAC;IACtB,IAAI,MAAkB,CAAC;IACvB,IAAI,CAAC;QACH,QAAQ,GAAG,UAAU,EAAE,CAAC;QACxB,MAAM,GAAG,QAAQ,EAAE,CAAC;IACtB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,6BAA6B,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,EAC9D,4CAA4C,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC1G,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;QACf,MAAM,IAAI,6BAA6B,CAAC,EAAE,KAAK,EAAE,sBAAsB,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IAC3F,CAAC;IACD,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAChE,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC;QACpD,MAAM,OAAO,GAAG,6BAA6B,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;QAChF,IAAI,OAAO;YAAE,OAAO,OAAO,CAAC;QAC5B,MAAM,IAAI,6BAA6B,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,SAAS,EAAE,EACpF,oJAAoJ,CAAC,CAAC;IAC1J,CAAC;IACD,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC,CAAC,CAAE,CAAC;IACjD,MAAM,IAAI,6BAA6B,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,EAAE,SAAS,EAAE,EACtG,mMAAmM,CAAC,CAAC;AACzM,CAAC;AAID,MAAM,UAAU,wBAAwB,CAAC,YAAsC,+BAA+B;IAC5G,OAAO,OAAO,SAAS,KAAK,UAAU,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;AACnE,CAAC"}
@@ -6,6 +6,7 @@ import type { WorkflowSpecCache } from "./workflow-spec-cache.js";
6
6
  import type { WorkflowStepTrailLog } from "./workflow-step-trail-log.js";
7
7
  import type { WorkflowExitKind, WorkflowInstance, WorkflowSpec, WorkflowStepSpec } from "./workflow-types.js";
8
8
  import { type RoleResolutionContext } from "./workflow-role-context.js";
9
+ import { type WorkflowHumanDestination } from "./workflow-human-destination.js";
9
10
  import type { WatchdogJobsRepository } from "./watchdog-jobs-repository.js";
10
11
  /** One occurrence-bound action, shared by packet bodies and authored wait wakes. */
11
12
  export declare function renderWorkflowProjectCommand(input: {
@@ -103,7 +104,7 @@ export declare class WorkflowProjector {
103
104
  * (the validateRig precedent — the projector never reads config
104
105
  * itself). hostDefault is read LIVE per exception (dial flips apply
105
106
  * to future items only). Absent = engine defaults (orchestrator-
106
- * first chain with the human@host never-lost fallback). */
107
+ * first chain with registered-human selection). */
107
108
  private readonly exceptionDial?;
108
109
  constructor(db: Database.Database, eventBus: EventBus, queueRepo: QueueRepository, instanceStore: WorkflowInstanceStore, trailLog: WorkflowStepTrailLog, specCache: WorkflowSpecCache, now?: () => Date,
109
110
  /** OPR.0.4.6.WF1 FR-3: optional — arms/disarms packet or legacy-instance keepalives in-txn. */
@@ -112,10 +113,10 @@ export declare class WorkflowProjector {
112
113
  * (the validateRig precedent — the projector never reads config
113
114
  * itself). hostDefault is read LIVE per exception (dial flips apply
114
115
  * to future items only). Absent = engine defaults (orchestrator-
115
- * first chain with the human@host never-lost fallback). */
116
+ * first chain with registered-human selection). */
116
117
  exceptionDial?: {
117
118
  hostDefault: () => "orchestrator" | "human_only" | null;
118
- humanFallbackSeat: string;
119
+ humanFallbackSeat: WorkflowHumanDestination;
119
120
  } | undefined);
120
121
  private nodeRuntimeOf;
121
122
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"workflow-projector.d.ts","sourceRoot":"","sources":["../../src/domain/workflow-projector.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workflow-projector.d.ts","sourceRoot":"","sources":["../../src/domain/workflow-projector.ts"],"names":[],"mappings":"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"}
@@ -24,9 +24,11 @@ import { isHumanSeatSession } from "./human-route-enforcer.js";
24
24
  import { selectRoleSeat } from "./workflow-role-resolver.js";
25
25
  import { roleResolutionContext, tryResolveRoleByCapability, } from "./workflow-role-context.js";
26
26
  import { classifyFailedInstance, classifyGateTrip, workflowExceptionTags } from "./workflow-exception.js";
27
- import { newQitemId } from "./queue-repository.js";
27
+ import { newQitemId, QueueRepositoryError } from "./queue-repository.js";
28
28
  import { resolveExceptionRoute } from "./workflow-exception-router.js";
29
+ import { workflowHumanDestination } from "./workflow-human-destination.js";
29
30
  import { disarmWorkflowKeepalive, ensureWorkflowKeepaliveArmed, } from "./workflow-keepalive-arming.js";
31
+ import { requiredLifecycleSteps } from "./lifecycle-obligations.js";
30
32
  import { shellQuote } from "../adapters/shell-quote.js";
31
33
  const WORKFLOW_CONTEXT_SHORTCUT = "Context: this workflow packet is a shortcut, not the whole story; inspect additional project, mission, and receipt evidence before choosing an authored exit.";
32
34
  /** One occurrence-bound action, shared by packet bodies and authored wait wakes. */
@@ -60,6 +62,7 @@ export function workflowWaitWakeMessage(input) {
60
62
  return [
61
63
  `Workflow wait re-presentation (blocker progress or reminder): ${input.spec.id}@${input.spec.version} instance ${input.instance.instanceId} step ${input.step.id}.`,
62
64
  `You still own the same frontier packet ${input.packetId}. Read it and inspect current evidence before choosing an authored exit.`,
65
+ ...(input.step.objective ? [`Objective: ${input.step.objective}`] : []),
63
66
  ...(input.spec.context_refs ?? []).map((ref) => `Context reference: ${ref}`),
64
67
  `Continuation: ${renderWorkflowProjectCommand({ ...input, instanceId: input.instance.instanceId })}`,
65
68
  WORKFLOW_CONTEXT_SHORTCUT,
@@ -108,7 +111,7 @@ export class WorkflowProjector {
108
111
  * (the validateRig precedent — the projector never reads config
109
112
  * itself). hostDefault is read LIVE per exception (dial flips apply
110
113
  * to future items only). Absent = engine defaults (orchestrator-
111
- * first chain with the human@host never-lost fallback). */
114
+ * first chain with registered-human selection). */
112
115
  exceptionDial) {
113
116
  this.db = db;
114
117
  this.eventBus = eventBus;
@@ -175,6 +178,15 @@ export class WorkflowProjector {
175
178
  allowedExits: currentStep.allowed_exits,
176
179
  });
177
180
  }
181
+ // Project profile receipts are agent-authored references. Presence is mechanical;
182
+ // the daemon neither reads the referenced prose nor decides its substance.
183
+ if (requiredLifecycleSteps(instance.lifecycleBinding).includes(currentStep.id) &&
184
+ (input.exit === "done" || input.exit === "handoff")) {
185
+ const receipt = input.closureEvidence?.evidence_ref;
186
+ if (typeof receipt !== "string" || receipt.trim() === "") {
187
+ throw new WorkflowProjectorError("lifecycle_receipt_required", `Boundary step "${currentStep.id}" needs an agent-judged receipt. Supply --evidence-ref; a terminal queue row is not acceptance.`, { stepId: currentStep.id, instanceId: instance.instanceId });
188
+ }
189
+ }
178
190
  validateAcceptance(currentStep, input, instance);
179
191
  // A declared dependency graph opts into the S06 packet-addressed
180
192
  // executor. Legacy specs keep the mature serial scribe below exactly.
@@ -656,13 +668,13 @@ export class WorkflowProjector {
656
668
  // FAC-1 (arch Q3 — routing uniformity, bounded): declared
657
669
  // preferred_targets stay the override; a bound instance's
658
670
  // orchestrator-role dial position falls through to a
659
- // NON-THROWING capability pick on the bound rig (null →
660
- // the router's human@host never-lost fallback — exception
661
- // routing never fails a close). Fresh decision per episode;
662
- // not a replay concern.
671
+ // capability pick on the bound rig (evidenced no-match →
672
+ // registered-human selection, with an explicit error if no
673
+ // human can be selected). Evidence-read failures propagate
674
+ // and roll back the close. Fresh decision per episode.
663
675
  resolveRoleTarget: (role) => spec.roles?.[role]?.preferred_targets?.[0] ??
664
676
  tryResolveRoleByCapability(roleCtx, role),
665
- humanFallbackSeat: this.exceptionDial?.humanFallbackSeat ?? "human@host",
677
+ humanFallbackSeat: this.exceptionDial?.humanFallbackSeat,
666
678
  });
667
679
  const evidenceRef = `rig workflow trace ${instance.instanceId}`;
668
680
  const itemBody = `WORKFLOW EXCEPTION (${exception.identity.exceptionClass})\n` +
@@ -687,16 +699,13 @@ export class WorkflowProjector {
687
699
  try {
688
700
  createdException = createExceptionItem(route.destinationSession, route.tier);
689
701
  }
690
- catch {
691
- // THE NEVER-LOST WRITE-GATE FALLBACK: a routed destination the
692
- // queue's destination gate rejects (e.g. a spec-declared
693
- // target that is not a live session) must not lose the
694
- // exception OR fail the close — re-route human@host (always
695
- // validates: the destination gate special-cases human seats)
696
- // with the human-routed tier. Any failure of THIS create is a
697
- // real storage error and propagates: the whole close rolls
698
- // back rather than committing an item-less failure.
699
- createdException = createExceptionItem(this.exceptionDial?.humanFallbackSeat ?? "human@host", "human-gate");
702
+ catch (error) {
703
+ if (!(error instanceof QueueRepositoryError) || error.code !== "unknown_destination_rig" || route.humanRouted)
704
+ throw error;
705
+ // Only an unavailable agent rig invokes human selection. Other
706
+ // admission/storage failures propagate unchanged and roll back the
707
+ // close, retaining the failure+attention-item atomic contract.
708
+ createdException = createExceptionItem(workflowHumanDestination(this.exceptionDial?.humanFallbackSeat), "human-gate");
700
709
  }
701
710
  registerEvent(createdException.persistedEvent);
702
711
  exceptionItemPostCommit = {