@openrig/cli 0.6.4 → 0.6.6

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 (1443) hide show
  1. package/README.md +405 -0
  2. package/daemon/assets/onboarding/02-self-and-competent-action.md +42 -0
  3. package/daemon/assets/plugins/openrig-core/.claude-plugin/plugin.json +1 -1
  4. package/daemon/assets/plugins/openrig-core/.codex-plugin/plugin.json +1 -1
  5. package/daemon/assets/plugins/openrig-core/hooks/scripts/refocus.cjs +100 -20
  6. package/daemon/assets/plugins/openrig-core/skills/applying-a-permission-policy/SKILL.md +41 -21
  7. package/daemon/assets/plugins/openrig-core/skills/claude-compaction-restore/SKILL.md +207 -132
  8. package/daemon/assets/plugins/openrig-core/skills/claude-compaction-restore/reference/SKILL-v1.md +143 -0
  9. package/daemon/assets/plugins/openrig-core/skills/forming-an-openrig-mental-model/SKILL.md +12 -12
  10. package/daemon/assets/plugins/openrig-core/skills/loading-addressable-markdown/scripts/resolve-markdown.mjs +2 -1
  11. package/daemon/assets/plugins/openrig-core/skills/messaging-the-human/SKILL.md +24 -0
  12. package/daemon/assets/plugins/openrig-core/skills/mission-slice-sop/SKILL.md +2 -2
  13. package/daemon/assets/plugins/openrig-core/skills/openrig-operating-model/SKILL.md +17 -0
  14. package/daemon/assets/plugins/openrig-core/skills/openrig-operating-model/scripts/compose.py +2 -2
  15. package/daemon/assets/plugins/openrig-core/skills/openrig-skills/SKILL.md +9 -4
  16. package/daemon/assets/plugins/openrig-core/skills/openrig-user/SKILL.md +54 -23
  17. package/daemon/assets/plugins/openrig-core/skills/orienting-to-an-inherited-seat/SKILL.md +5 -7
  18. package/daemon/assets/plugins/openrig-core/skills/queue-handoff/SKILL.md +1 -19
  19. package/daemon/assets/plugins/openrig-core/skills/refocusing/SKILL.md +3 -0
  20. package/daemon/assets/plugins/openrig-core/skills/refocusing/scripts/trace-to-root.py +56 -4
  21. package/daemon/assets/plugins/openrig-core/skills/seat-continuity-and-handover/SKILL.md +0 -5
  22. package/daemon/assets/plugins/openrig-core/skills/session-compaction-and-restore/SKILL.md +5 -6
  23. package/daemon/context-packs/help/help.md +40 -10
  24. package/daemon/context-packs/help/manifest.yaml +1 -1
  25. package/daemon/context-packs/onboarding-width/manifest.yaml +1 -1
  26. package/daemon/context-packs/onboarding-width/public-what-you-can-do.md +26 -12
  27. package/daemon/context-packs/reference/getting-started.md +426 -111
  28. package/daemon/context-packs/reference/instance-layout.md +11 -0
  29. package/daemon/context-packs/reference/manifest.yaml +1 -1
  30. package/daemon/context-packs/reference/rig-spec.md +180 -29
  31. package/daemon/context-packs/skills/agent-operated-software/manifest.yaml +1 -1
  32. package/daemon/context-packs/skills/agent-operated-workflows/manifest.yaml +1 -1
  33. package/daemon/context-packs/skills/applying-a-permission-policy/SKILL.md +41 -21
  34. package/daemon/context-packs/skills/applying-a-permission-policy/manifest.yaml +1 -1
  35. package/daemon/context-packs/skills/claude-compaction-restore/SKILL.md +207 -132
  36. package/daemon/context-packs/skills/claude-compaction-restore/manifest.yaml +5 -3
  37. package/daemon/context-packs/skills/claude-compaction-restore/reference/SKILL-v1.md +143 -0
  38. package/daemon/context-packs/skills/core/agent-starters/SKILL.md +0 -6
  39. package/daemon/context-packs/skills/core/agent-starters/manifest.yaml +1 -1
  40. package/daemon/context-packs/skills/core/agent-startup-and-context-ingestion/SKILL.md +1 -8
  41. package/daemon/context-packs/skills/core/agent-startup-and-context-ingestion/manifest.yaml +1 -1
  42. package/daemon/context-packs/skills/core/cross-host-rig-commands/manifest.yaml +1 -1
  43. package/daemon/context-packs/skills/core/human-in-the-loop/manifest.yaml +1 -1
  44. package/daemon/context-packs/skills/core/messaging-the-human/SKILL.md +24 -0
  45. package/daemon/context-packs/skills/core/messaging-the-human/manifest.yaml +1 -1
  46. package/daemon/context-packs/skills/core/openrig-architect/SKILL.md +5 -5
  47. package/daemon/context-packs/skills/core/openrig-architect/manifest.yaml +3 -3
  48. package/daemon/context-packs/skills/core/openrig-cmux/manifest.yaml +1 -1
  49. package/daemon/context-packs/skills/core/openrig-herdr/manifest.yaml +1 -1
  50. package/daemon/context-packs/skills/core/openrig-skills/SKILL.md +9 -4
  51. package/daemon/context-packs/skills/core/openrig-skills/manifest.yaml +1 -1
  52. package/daemon/context-packs/skills/core/openrig-software-factory/SKILL.md +12 -9
  53. package/daemon/context-packs/skills/core/openrig-software-factory/manifest.yaml +1 -1
  54. package/daemon/context-packs/skills/core/openrig-software-factory/references/worked-example.md +29 -29
  55. package/daemon/context-packs/skills/core/openrig-upgrade/manifest.yaml +1 -1
  56. package/daemon/context-packs/skills/core/rig-bundles-and-shareable-artifacts/SKILL.md +0 -1
  57. package/daemon/context-packs/skills/core/rig-bundles-and-shareable-artifacts/manifest.yaml +1 -1
  58. package/daemon/context-packs/skills/core/rig-lifecycle/manifest.yaml +1 -1
  59. package/daemon/context-packs/skills/core/session-source-fork/SKILL.md +0 -5
  60. package/daemon/context-packs/skills/core/session-source-fork/manifest.yaml +1 -1
  61. package/daemon/context-packs/skills/core/specification-system/manifest.yaml +1 -1
  62. package/daemon/context-packs/skills/core/topology-mutation-and-seat-management/SKILL.md +24 -3
  63. package/daemon/context-packs/skills/core/topology-mutation-and-seat-management/manifest.yaml +3 -3
  64. package/daemon/context-packs/skills/core/watchdog/manifest.yaml +1 -1
  65. package/daemon/context-packs/skills/delegating-work/manifest.yaml +1 -1
  66. package/daemon/context-packs/skills/forming-an-openrig-mental-model/SKILL.md +12 -12
  67. package/daemon/context-packs/skills/forming-an-openrig-mental-model/manifest.yaml +1 -1
  68. package/daemon/context-packs/skills/loading-addressable-markdown/manifest.yaml +1 -1
  69. package/daemon/context-packs/skills/loading-addressable-markdown/scripts/resolve-markdown.mjs +2 -1
  70. package/daemon/context-packs/skills/mission-slice-sop/SKILL.md +2 -2
  71. package/daemon/context-packs/skills/mission-slice-sop/manifest.yaml +1 -1
  72. package/daemon/context-packs/skills/openrig-operating-model/SKILL.md +17 -0
  73. package/daemon/context-packs/skills/openrig-operating-model/manifest.yaml +1 -1
  74. package/daemon/context-packs/skills/openrig-operating-model/scripts/compose.py +2 -2
  75. package/daemon/context-packs/skills/openrig-user/SKILL.md +54 -23
  76. package/daemon/context-packs/skills/openrig-user/manifest.yaml +1 -1
  77. package/daemon/context-packs/skills/orienting-to-an-inherited-seat/SKILL.md +5 -7
  78. package/daemon/context-packs/skills/orienting-to-an-inherited-seat/manifest.yaml +1 -1
  79. package/daemon/context-packs/skills/pm/backlog-capture/manifest.yaml +1 -1
  80. package/daemon/context-packs/skills/pm/context-builder/manifest.yaml +1 -1
  81. package/daemon/context-packs/skills/pm/exec-summary/manifest.yaml +1 -1
  82. package/daemon/context-packs/skills/pm/office-hours/manifest.yaml +1 -1
  83. package/daemon/context-packs/skills/pm/plan-review/manifest.yaml +1 -1
  84. package/daemon/context-packs/skills/pm/requirements-writer/manifest.yaml +1 -1
  85. package/daemon/context-packs/skills/pm/ui-mockup/manifest.yaml +1 -1
  86. package/daemon/context-packs/skills/pods/development-team/manifest.yaml +1 -1
  87. package/daemon/context-packs/skills/pods/orchestration-team/manifest.yaml +1 -1
  88. package/daemon/context-packs/skills/pods/oversight-team/manifest.yaml +1 -1
  89. package/daemon/context-packs/skills/pods/review-team/manifest.yaml +1 -1
  90. package/daemon/context-packs/skills/process/agent-browser/OPENRIG.md +1 -1
  91. package/daemon/context-packs/skills/process/agent-browser/manifest.yaml +1 -1
  92. package/daemon/context-packs/skills/process/context-engineering/manifest.yaml +1 -1
  93. package/daemon/context-packs/skills/process/dogfood/manifest.yaml +1 -1
  94. package/daemon/context-packs/skills/process/frontend-design/manifest.yaml +1 -1
  95. package/daemon/context-packs/skills/process/systematic-debugging/SKILL.md +0 -2
  96. package/daemon/context-packs/skills/process/systematic-debugging/manifest.yaml +1 -1
  97. package/daemon/context-packs/skills/process/test-driven-development/manifest.yaml +1 -1
  98. package/daemon/context-packs/skills/process/verification-before-completion/manifest.yaml +1 -1
  99. package/daemon/context-packs/skills/queue-handoff/SKILL.md +1 -19
  100. package/daemon/context-packs/skills/queue-handoff/manifest.yaml +1 -1
  101. package/daemon/context-packs/skills/refocusing/SKILL.md +3 -0
  102. package/daemon/context-packs/skills/refocusing/manifest.yaml +1 -1
  103. package/daemon/context-packs/skills/refocusing/scripts/trace-to-root.py +56 -4
  104. package/daemon/context-packs/skills/retiring-and-inheriting-a-seat/manifest.yaml +1 -1
  105. package/daemon/context-packs/skills/seat-continuity-and-handover/SKILL.md +0 -5
  106. package/daemon/context-packs/skills/seat-continuity-and-handover/manifest.yaml +1 -1
  107. package/daemon/context-packs/skills/session-compaction-and-restore/SKILL.md +5 -6
  108. package/daemon/context-packs/skills/session-compaction-and-restore/manifest.yaml +1 -1
  109. package/daemon/context-packs/skills/software-for-agents/manifest.yaml +1 -1
  110. package/daemon/context-packs/world-example/manifest.yaml +1 -1
  111. package/daemon/context-packs/world-public/manifest.yaml +1 -1
  112. package/daemon/dist/adapters/claude-code-adapter.d.ts +18 -4
  113. package/daemon/dist/adapters/claude-code-adapter.d.ts.map +1 -1
  114. package/daemon/dist/adapters/claude-code-adapter.js +179 -63
  115. package/daemon/dist/adapters/claude-code-adapter.js.map +1 -1
  116. package/daemon/dist/adapters/claude-resume.d.ts +7 -1
  117. package/daemon/dist/adapters/claude-resume.d.ts.map +1 -1
  118. package/daemon/dist/adapters/claude-resume.js +44 -10
  119. package/daemon/dist/adapters/claude-resume.js.map +1 -1
  120. package/daemon/dist/adapters/codex-resume.d.ts +9 -1
  121. package/daemon/dist/adapters/codex-resume.d.ts.map +1 -1
  122. package/daemon/dist/adapters/codex-resume.js +22 -8
  123. package/daemon/dist/adapters/codex-resume.js.map +1 -1
  124. package/daemon/dist/adapters/codex-runtime-adapter.d.ts +11 -0
  125. package/daemon/dist/adapters/codex-runtime-adapter.d.ts.map +1 -1
  126. package/daemon/dist/adapters/codex-runtime-adapter.js +93 -73
  127. package/daemon/dist/adapters/codex-runtime-adapter.js.map +1 -1
  128. package/daemon/dist/adapters/compose-services-adapter.d.ts +2 -1
  129. package/daemon/dist/adapters/compose-services-adapter.d.ts.map +1 -1
  130. package/daemon/dist/adapters/compose-services-adapter.js +6 -3
  131. package/daemon/dist/adapters/compose-services-adapter.js.map +1 -1
  132. package/daemon/dist/adapters/daemon-url.d.ts +7 -0
  133. package/daemon/dist/adapters/daemon-url.d.ts.map +1 -0
  134. package/daemon/dist/adapters/daemon-url.js +12 -0
  135. package/daemon/dist/adapters/daemon-url.js.map +1 -0
  136. package/daemon/dist/adapters/kernel-authority.d.ts +10 -0
  137. package/daemon/dist/adapters/kernel-authority.d.ts.map +1 -0
  138. package/daemon/dist/adapters/kernel-authority.js +53 -0
  139. package/daemon/dist/adapters/kernel-authority.js.map +1 -0
  140. package/daemon/dist/adapters/non-interruptive.d.ts +14 -0
  141. package/daemon/dist/adapters/non-interruptive.d.ts.map +1 -0
  142. package/daemon/dist/adapters/non-interruptive.js +38 -0
  143. package/daemon/dist/adapters/non-interruptive.js.map +1 -0
  144. package/daemon/dist/adapters/omp-resume.d.ts +6 -0
  145. package/daemon/dist/adapters/omp-resume.d.ts.map +1 -0
  146. package/daemon/dist/adapters/omp-resume.js +6 -0
  147. package/daemon/dist/adapters/omp-resume.js.map +1 -0
  148. package/daemon/dist/adapters/omp-runtime-adapter.d.ts +10 -0
  149. package/daemon/dist/adapters/omp-runtime-adapter.d.ts.map +1 -0
  150. package/daemon/dist/adapters/omp-runtime-adapter.js +16 -0
  151. package/daemon/dist/adapters/omp-runtime-adapter.js.map +1 -0
  152. package/daemon/dist/adapters/pi-resume.d.ts +7 -1
  153. package/daemon/dist/adapters/pi-resume.d.ts.map +1 -1
  154. package/daemon/dist/adapters/pi-resume.js +27 -18
  155. package/daemon/dist/adapters/pi-resume.js.map +1 -1
  156. package/daemon/dist/adapters/pi-runner-protocol.d.ts +29 -2
  157. package/daemon/dist/adapters/pi-runner-protocol.d.ts.map +1 -1
  158. package/daemon/dist/adapters/pi-runner-protocol.js +89 -5
  159. package/daemon/dist/adapters/pi-runner-protocol.js.map +1 -1
  160. package/daemon/dist/adapters/pi-runner.d.ts +52 -5
  161. package/daemon/dist/adapters/pi-runner.d.ts.map +1 -1
  162. package/daemon/dist/adapters/pi-runner.js +429 -68
  163. package/daemon/dist/adapters/pi-runner.js.map +1 -1
  164. package/daemon/dist/adapters/pi-runtime-adapter.d.ts +11 -2
  165. package/daemon/dist/adapters/pi-runtime-adapter.d.ts.map +1 -1
  166. package/daemon/dist/adapters/pi-runtime-adapter.js +85 -40
  167. package/daemon/dist/adapters/pi-runtime-adapter.js.map +1 -1
  168. package/daemon/dist/adapters/preflight-exec.d.ts +11 -0
  169. package/daemon/dist/adapters/preflight-exec.d.ts.map +1 -0
  170. package/daemon/dist/adapters/preflight-exec.js +52 -0
  171. package/daemon/dist/adapters/preflight-exec.js.map +1 -0
  172. package/daemon/dist/adapters/stub-runner-protocol.d.ts +1 -1
  173. package/daemon/dist/adapters/stub-runner-protocol.d.ts.map +1 -1
  174. package/daemon/dist/adapters/stub-runner.d.ts +1 -1
  175. package/daemon/dist/adapters/stub-runner.d.ts.map +1 -1
  176. package/daemon/dist/adapters/stub-runner.js +3 -1
  177. package/daemon/dist/adapters/stub-runner.js.map +1 -1
  178. package/daemon/dist/adapters/stub-runtime-adapter.d.ts.map +1 -1
  179. package/daemon/dist/adapters/stub-runtime-adapter.js +11 -8
  180. package/daemon/dist/adapters/stub-runtime-adapter.js.map +1 -1
  181. package/daemon/dist/adapters/tmux.d.ts +52 -6
  182. package/daemon/dist/adapters/tmux.d.ts.map +1 -1
  183. package/daemon/dist/adapters/tmux.js +313 -57
  184. package/daemon/dist/adapters/tmux.js.map +1 -1
  185. package/daemon/dist/adapters/yolo-mode.d.ts +1 -1
  186. package/daemon/dist/adapters/yolo-mode.d.ts.map +1 -1
  187. package/daemon/dist/adapters/yolo-mode.js +3 -0
  188. package/daemon/dist/adapters/yolo-mode.js.map +1 -1
  189. package/daemon/dist/build-info.js +3 -3
  190. package/daemon/dist/bundle-behaviour-surface.d.ts +2 -0
  191. package/daemon/dist/bundle-behaviour-surface.d.ts.map +1 -0
  192. package/daemon/dist/bundle-behaviour-surface.js +2 -0
  193. package/daemon/dist/bundle-behaviour-surface.js.map +1 -0
  194. package/daemon/dist/bundle-identity-surface.d.ts +2 -0
  195. package/daemon/dist/bundle-identity-surface.d.ts.map +1 -0
  196. package/daemon/dist/bundle-identity-surface.js +4 -0
  197. package/daemon/dist/bundle-identity-surface.js.map +1 -0
  198. package/daemon/dist/daemon-shutdown.d.ts +19 -0
  199. package/daemon/dist/daemon-shutdown.d.ts.map +1 -1
  200. package/daemon/dist/daemon-shutdown.js +85 -0
  201. package/daemon/dist/daemon-shutdown.js.map +1 -1
  202. package/daemon/dist/db/all-migrations.d.ts +1 -1
  203. package/daemon/dist/db/all-migrations.d.ts.map +1 -1
  204. package/daemon/dist/db/all-migrations.js +12 -2
  205. package/daemon/dist/db/all-migrations.js.map +1 -1
  206. package/daemon/dist/db/migrations/090_human_reply_to.d.ts +3 -0
  207. package/daemon/dist/db/migrations/090_human_reply_to.d.ts.map +1 -0
  208. package/daemon/dist/db/migrations/090_human_reply_to.js +7 -0
  209. package/daemon/dist/db/migrations/090_human_reply_to.js.map +1 -0
  210. package/daemon/dist/db/migrations/091_human_questions.d.ts +3 -0
  211. package/daemon/dist/db/migrations/091_human_questions.d.ts.map +1 -0
  212. package/daemon/dist/db/migrations/091_human_questions.js +9 -0
  213. package/daemon/dist/db/migrations/091_human_questions.js.map +1 -0
  214. package/daemon/dist/db/migrations/092_node_effort.d.ts +3 -0
  215. package/daemon/dist/db/migrations/092_node_effort.d.ts.map +1 -0
  216. package/daemon/dist/db/migrations/092_node_effort.js +8 -0
  217. package/daemon/dist/db/migrations/092_node_effort.js.map +1 -0
  218. package/daemon/dist/db/migrations/094_usage_samples_latest_indexes.d.ts +3 -0
  219. package/daemon/dist/db/migrations/094_usage_samples_latest_indexes.d.ts.map +1 -0
  220. package/daemon/dist/db/migrations/094_usage_samples_latest_indexes.js +12 -0
  221. package/daemon/dist/db/migrations/094_usage_samples_latest_indexes.js.map +1 -0
  222. package/daemon/dist/db/migrations/095_rig_non_interruptive.d.ts +3 -0
  223. package/daemon/dist/db/migrations/095_rig_non_interruptive.d.ts.map +1 -0
  224. package/daemon/dist/db/migrations/095_rig_non_interruptive.js +5 -0
  225. package/daemon/dist/db/migrations/095_rig_non_interruptive.js.map +1 -0
  226. package/daemon/dist/domain/activity-endpoint.d.ts.map +1 -1
  227. package/daemon/dist/domain/activity-endpoint.js +3 -1
  228. package/daemon/dist/domain/activity-endpoint.js.map +1 -1
  229. package/daemon/dist/domain/agent-activity-store.d.ts +3 -1
  230. package/daemon/dist/domain/agent-activity-store.d.ts.map +1 -1
  231. package/daemon/dist/domain/agent-activity-store.js +13 -3
  232. package/daemon/dist/domain/agent-activity-store.js.map +1 -1
  233. package/daemon/dist/domain/agent-images/agent-image-library-service.d.ts.map +1 -1
  234. package/daemon/dist/domain/agent-images/agent-image-library-service.js +76 -56
  235. package/daemon/dist/domain/agent-images/agent-image-library-service.js.map +1 -1
  236. package/daemon/dist/domain/agent-manifest.d.ts.map +1 -1
  237. package/daemon/dist/domain/agent-manifest.js +28 -5
  238. package/daemon/dist/domain/agent-manifest.js.map +1 -1
  239. package/daemon/dist/domain/bootstrap-orchestrator.d.ts +10 -0
  240. package/daemon/dist/domain/bootstrap-orchestrator.d.ts.map +1 -1
  241. package/daemon/dist/domain/bootstrap-orchestrator.js +136 -33
  242. package/daemon/dist/domain/bootstrap-orchestrator.js.map +1 -1
  243. package/daemon/dist/domain/builtin-policy-reference.d.ts +1 -1
  244. package/daemon/dist/domain/builtin-policy-reference.d.ts.map +1 -1
  245. package/daemon/dist/domain/builtin-policy-reference.js +2 -2
  246. package/daemon/dist/domain/builtin-policy-reference.js.map +1 -1
  247. package/daemon/dist/domain/bundle-archive.d.ts +24 -0
  248. package/daemon/dist/domain/bundle-archive.d.ts.map +1 -1
  249. package/daemon/dist/domain/bundle-archive.js +66 -21
  250. package/daemon/dist/domain/bundle-archive.js.map +1 -1
  251. package/daemon/dist/domain/bundle-audit.d.ts +5 -0
  252. package/daemon/dist/domain/bundle-audit.d.ts.map +1 -1
  253. package/daemon/dist/domain/bundle-audit.js.map +1 -1
  254. package/daemon/dist/domain/bundle-behaviour-inspect.d.ts +4 -0
  255. package/daemon/dist/domain/bundle-behaviour-inspect.d.ts.map +1 -0
  256. package/daemon/dist/domain/bundle-behaviour-inspect.js +56 -0
  257. package/daemon/dist/domain/bundle-behaviour-inspect.js.map +1 -0
  258. package/daemon/dist/domain/bundle-behaviour.d.ts +118 -0
  259. package/daemon/dist/domain/bundle-behaviour.d.ts.map +1 -0
  260. package/daemon/dist/domain/bundle-behaviour.js +364 -0
  261. package/daemon/dist/domain/bundle-behaviour.js.map +1 -0
  262. package/daemon/dist/domain/bundle-carried-context-pack.d.ts +16 -0
  263. package/daemon/dist/domain/bundle-carried-context-pack.d.ts.map +1 -0
  264. package/daemon/dist/domain/bundle-carried-context-pack.js +67 -0
  265. package/daemon/dist/domain/bundle-carried-context-pack.js.map +1 -0
  266. package/daemon/dist/domain/bundle-carried-project.d.ts +13 -0
  267. package/daemon/dist/domain/bundle-carried-project.d.ts.map +1 -0
  268. package/daemon/dist/domain/bundle-carried-project.js +71 -0
  269. package/daemon/dist/domain/bundle-carried-project.js.map +1 -0
  270. package/daemon/dist/domain/bundle-conflict-detector.js +3 -3
  271. package/daemon/dist/domain/bundle-conflict-detector.js.map +1 -1
  272. package/daemon/dist/domain/bundle-content-routing.d.ts +49 -0
  273. package/daemon/dist/domain/bundle-content-routing.d.ts.map +1 -0
  274. package/daemon/dist/domain/bundle-content-routing.js +246 -0
  275. package/daemon/dist/domain/bundle-content-routing.js.map +1 -0
  276. package/daemon/dist/domain/bundle-context-packs-router.d.ts +7 -2
  277. package/daemon/dist/domain/bundle-context-packs-router.d.ts.map +1 -1
  278. package/daemon/dist/domain/bundle-context-packs-router.js +19 -0
  279. package/daemon/dist/domain/bundle-context-packs-router.js.map +1 -1
  280. package/daemon/dist/domain/bundle-identity.d.ts +27 -0
  281. package/daemon/dist/domain/bundle-identity.d.ts.map +1 -0
  282. package/daemon/dist/domain/bundle-identity.js +34 -0
  283. package/daemon/dist/domain/bundle-identity.js.map +1 -0
  284. package/daemon/dist/domain/bundle-install-context.d.ts +22 -0
  285. package/daemon/dist/domain/bundle-install-context.d.ts.map +1 -0
  286. package/daemon/dist/domain/bundle-install-context.js +51 -0
  287. package/daemon/dist/domain/bundle-install-context.js.map +1 -0
  288. package/daemon/dist/domain/bundle-integrity.d.ts +1 -0
  289. package/daemon/dist/domain/bundle-integrity.d.ts.map +1 -1
  290. package/daemon/dist/domain/bundle-integrity.js +1 -1
  291. package/daemon/dist/domain/bundle-integrity.js.map +1 -1
  292. package/daemon/dist/domain/bundle-source-resolver.d.ts +4 -1
  293. package/daemon/dist/domain/bundle-source-resolver.d.ts.map +1 -1
  294. package/daemon/dist/domain/bundle-source-resolver.js +73 -19
  295. package/daemon/dist/domain/bundle-source-resolver.js.map +1 -1
  296. package/daemon/dist/domain/bundle-types.d.ts +37 -0
  297. package/daemon/dist/domain/bundle-types.d.ts.map +1 -1
  298. package/daemon/dist/domain/bundle-types.js +78 -0
  299. package/daemon/dist/domain/bundle-types.js.map +1 -1
  300. package/daemon/dist/domain/chat-repository.d.ts.map +1 -1
  301. package/daemon/dist/domain/chat-repository.js +3 -1
  302. package/daemon/dist/domain/chat-repository.js.map +1 -1
  303. package/daemon/dist/domain/checkpoint-store.d.ts.map +1 -1
  304. package/daemon/dist/domain/checkpoint-store.js +2 -2
  305. package/daemon/dist/domain/checkpoint-store.js.map +1 -1
  306. package/daemon/dist/domain/claim-service.d.ts +7 -0
  307. package/daemon/dist/domain/claim-service.d.ts.map +1 -1
  308. package/daemon/dist/domain/claim-service.js +6 -2
  309. package/daemon/dist/domain/claim-service.js.map +1 -1
  310. package/daemon/dist/domain/claude-compaction-enforcer.d.ts +38 -12
  311. package/daemon/dist/domain/claude-compaction-enforcer.d.ts.map +1 -1
  312. package/daemon/dist/domain/claude-compaction-enforcer.js +291 -128
  313. package/daemon/dist/domain/claude-compaction-enforcer.js.map +1 -1
  314. package/daemon/dist/domain/claude-managed-launch.d.ts +13 -0
  315. package/daemon/dist/domain/claude-managed-launch.d.ts.map +1 -1
  316. package/daemon/dist/domain/claude-managed-launch.js +31 -4
  317. package/daemon/dist/domain/claude-managed-launch.js.map +1 -1
  318. package/daemon/dist/domain/codex-daemon-support.d.ts +1 -1
  319. package/daemon/dist/domain/codex-daemon-support.d.ts.map +1 -1
  320. package/daemon/dist/domain/codex-daemon-support.js +2 -2
  321. package/daemon/dist/domain/codex-daemon-support.js.map +1 -1
  322. package/daemon/dist/domain/codex-network-default.d.ts +42 -0
  323. package/daemon/dist/domain/codex-network-default.d.ts.map +1 -0
  324. package/daemon/dist/domain/codex-network-default.js +230 -0
  325. package/daemon/dist/domain/codex-network-default.js.map +1 -0
  326. package/daemon/dist/domain/codex-profile-preflight.d.ts +1 -1
  327. package/daemon/dist/domain/codex-profile-preflight.d.ts.map +1 -1
  328. package/daemon/dist/domain/codex-profile-preflight.js +3 -3
  329. package/daemon/dist/domain/codex-profile-preflight.js.map +1 -1
  330. package/daemon/dist/domain/codex-team-workspace.d.ts +8 -0
  331. package/daemon/dist/domain/codex-team-workspace.d.ts.map +1 -0
  332. package/daemon/dist/domain/codex-team-workspace.js +54 -0
  333. package/daemon/dist/domain/codex-team-workspace.js.map +1 -0
  334. package/daemon/dist/domain/codex-thread-id.d.ts +4 -2
  335. package/daemon/dist/domain/codex-thread-id.d.ts.map +1 -1
  336. package/daemon/dist/domain/codex-thread-id.js +10 -6
  337. package/daemon/dist/domain/codex-thread-id.js.map +1 -1
  338. package/daemon/dist/domain/context-monitor.d.ts.map +1 -1
  339. package/daemon/dist/domain/context-monitor.js +9 -2
  340. package/daemon/dist/domain/context-monitor.js.map +1 -1
  341. package/daemon/dist/domain/context-packs/context-pack-library-service.d.ts.map +1 -1
  342. package/daemon/dist/domain/context-packs/context-pack-library-service.js +13 -2
  343. package/daemon/dist/domain/context-packs/context-pack-library-service.js.map +1 -1
  344. package/daemon/dist/domain/context-packs/profile-composer.d.ts +5 -0
  345. package/daemon/dist/domain/context-packs/profile-composer.d.ts.map +1 -1
  346. package/daemon/dist/domain/context-packs/profile-composer.js +30 -15
  347. package/daemon/dist/domain/context-packs/profile-composer.js.map +1 -1
  348. package/daemon/dist/domain/context-packs/profile-source-resolver.d.ts +10 -0
  349. package/daemon/dist/domain/context-packs/profile-source-resolver.d.ts.map +1 -1
  350. package/daemon/dist/domain/context-packs/profile-source-resolver.js +43 -8
  351. package/daemon/dist/domain/context-packs/profile-source-resolver.js.map +1 -1
  352. package/daemon/dist/domain/context-packs/seat-recap-store.d.ts.map +1 -1
  353. package/daemon/dist/domain/context-packs/seat-recap-store.js +73 -16
  354. package/daemon/dist/domain/context-packs/seat-recap-store.js.map +1 -1
  355. package/daemon/dist/domain/context-usage-store.d.ts +3 -0
  356. package/daemon/dist/domain/context-usage-store.d.ts.map +1 -1
  357. package/daemon/dist/domain/context-usage-store.js +4 -2
  358. package/daemon/dist/domain/context-usage-store.js.map +1 -1
  359. package/daemon/dist/domain/crash-cart-detect.d.ts.map +1 -1
  360. package/daemon/dist/domain/crash-cart-detect.js +2 -1
  361. package/daemon/dist/domain/crash-cart-detect.js.map +1 -1
  362. package/daemon/dist/domain/crash-cart-discovery.d.ts.map +1 -1
  363. package/daemon/dist/domain/crash-cart-discovery.js +4 -2
  364. package/daemon/dist/domain/crash-cart-discovery.js.map +1 -1
  365. package/daemon/dist/domain/current-work.d.ts +17 -0
  366. package/daemon/dist/domain/current-work.d.ts.map +1 -1
  367. package/daemon/dist/domain/current-work.js +46 -0
  368. package/daemon/dist/domain/current-work.js.map +1 -1
  369. package/daemon/dist/domain/cwd-resolution.js +1 -1
  370. package/daemon/dist/domain/cwd-resolution.js.map +1 -1
  371. package/daemon/dist/domain/daemon-url.d.ts +7 -0
  372. package/daemon/dist/domain/daemon-url.d.ts.map +1 -0
  373. package/daemon/dist/domain/daemon-url.js +12 -0
  374. package/daemon/dist/domain/daemon-url.js.map +1 -0
  375. package/daemon/dist/domain/daemon-version.d.ts +3 -1
  376. package/daemon/dist/domain/daemon-version.d.ts.map +1 -1
  377. package/daemon/dist/domain/daemon-version.js +6 -1
  378. package/daemon/dist/domain/daemon-version.js.map +1 -1
  379. package/daemon/dist/domain/discovery-types.d.ts +1 -1
  380. package/daemon/dist/domain/discovery-types.d.ts.map +1 -1
  381. package/daemon/dist/domain/event-bus.d.ts +1 -0
  382. package/daemon/dist/domain/event-bus.d.ts.map +1 -1
  383. package/daemon/dist/domain/event-bus.js +18 -7
  384. package/daemon/dist/domain/event-bus.js.map +1 -1
  385. package/daemon/dist/domain/event-loop-monitor.d.ts +6 -0
  386. package/daemon/dist/domain/event-loop-monitor.d.ts.map +1 -1
  387. package/daemon/dist/domain/event-loop-monitor.js +13 -0
  388. package/daemon/dist/domain/event-loop-monitor.js.map +1 -1
  389. package/daemon/dist/domain/execution-view.d.ts +3 -3
  390. package/daemon/dist/domain/execution-view.d.ts.map +1 -1
  391. package/daemon/dist/domain/execution-view.js +116 -93
  392. package/daemon/dist/domain/execution-view.js.map +1 -1
  393. package/daemon/dist/domain/finite-telemetry.d.ts +74 -0
  394. package/daemon/dist/domain/finite-telemetry.d.ts.map +1 -0
  395. package/daemon/dist/domain/finite-telemetry.js +236 -0
  396. package/daemon/dist/domain/finite-telemetry.js.map +1 -0
  397. package/daemon/dist/domain/gateway/connections-projection.d.ts +1 -1
  398. package/daemon/dist/domain/gateway/gateway-subsystem.d.ts +2 -0
  399. package/daemon/dist/domain/gateway/gateway-subsystem.d.ts.map +1 -1
  400. package/daemon/dist/domain/gateway/gateway-subsystem.js +4 -0
  401. package/daemon/dist/domain/gateway/gateway-subsystem.js.map +1 -1
  402. package/daemon/dist/domain/gateway/operator-delivery-engine.d.ts +9 -7
  403. package/daemon/dist/domain/gateway/operator-delivery-engine.d.ts.map +1 -1
  404. package/daemon/dist/domain/gateway/operator-delivery-engine.js +38 -16
  405. package/daemon/dist/domain/gateway/operator-delivery-engine.js.map +1 -1
  406. package/daemon/dist/domain/gateway/slack/channel-recovery.d.ts +45 -0
  407. package/daemon/dist/domain/gateway/slack/channel-recovery.d.ts.map +1 -0
  408. package/daemon/dist/domain/gateway/slack/channel-recovery.js +176 -0
  409. package/daemon/dist/domain/gateway/slack/channel-recovery.js.map +1 -0
  410. package/daemon/dist/domain/gateway/slack/inbound.d.ts +74 -4
  411. package/daemon/dist/domain/gateway/slack/inbound.d.ts.map +1 -1
  412. package/daemon/dist/domain/gateway/slack/inbound.js +163 -18
  413. package/daemon/dist/domain/gateway/slack/inbound.js.map +1 -1
  414. package/daemon/dist/domain/gateway/slack/manifest.js +1 -1
  415. package/daemon/dist/domain/gateway/slack/manifest.js.map +1 -1
  416. package/daemon/dist/domain/gateway/slack/message.d.ts +17 -0
  417. package/daemon/dist/domain/gateway/slack/message.d.ts.map +1 -1
  418. package/daemon/dist/domain/gateway/slack/message.js +77 -3
  419. package/daemon/dist/domain/gateway/slack/message.js.map +1 -1
  420. package/daemon/dist/domain/gateway/slack/outbound-driver.d.ts +3 -0
  421. package/daemon/dist/domain/gateway/slack/outbound-driver.d.ts.map +1 -1
  422. package/daemon/dist/domain/gateway/slack/outbound-driver.js +2 -0
  423. package/daemon/dist/domain/gateway/slack/outbound-driver.js.map +1 -1
  424. package/daemon/dist/domain/gateway/slack/queue-access.d.ts +3 -0
  425. package/daemon/dist/domain/gateway/slack/queue-access.d.ts.map +1 -1
  426. package/daemon/dist/domain/gateway/slack/queue-access.js +15 -5
  427. package/daemon/dist/domain/gateway/slack/queue-access.js.map +1 -1
  428. package/daemon/dist/domain/gateway/slack/secrets.d.ts.map +1 -1
  429. package/daemon/dist/domain/gateway/slack/secrets.js +5 -4
  430. package/daemon/dist/domain/gateway/slack/secrets.js.map +1 -1
  431. package/daemon/dist/domain/gateway/slack/slack-api.d.ts +17 -10
  432. package/daemon/dist/domain/gateway/slack/slack-api.d.ts.map +1 -1
  433. package/daemon/dist/domain/gateway/slack/slack-api.js +94 -24
  434. package/daemon/dist/domain/gateway/slack/slack-api.js.map +1 -1
  435. package/daemon/dist/domain/gateway/slack/slack-delivery.d.ts +33 -10
  436. package/daemon/dist/domain/gateway/slack/slack-delivery.d.ts.map +1 -1
  437. package/daemon/dist/domain/gateway/slack/slack-delivery.js +107 -26
  438. package/daemon/dist/domain/gateway/slack/slack-delivery.js.map +1 -1
  439. package/daemon/dist/domain/gateway/slack/slack-subsystem.d.ts +1 -1
  440. package/daemon/dist/domain/gateway/slack/slack-subsystem.d.ts.map +1 -1
  441. package/daemon/dist/domain/gateway/slack/slack-subsystem.js +121 -28
  442. package/daemon/dist/domain/gateway/slack/slack-subsystem.js.map +1 -1
  443. package/daemon/dist/domain/gateway/slack/socket-inbound.d.ts +4 -0
  444. package/daemon/dist/domain/gateway/slack/socket-inbound.d.ts.map +1 -1
  445. package/daemon/dist/domain/gateway/slack/socket-inbound.js +14 -1
  446. package/daemon/dist/domain/gateway/slack/socket-inbound.js.map +1 -1
  447. package/daemon/dist/domain/gateway/slack/state-store.d.ts +27 -0
  448. package/daemon/dist/domain/gateway/slack/state-store.d.ts.map +1 -1
  449. package/daemon/dist/domain/gateway/slack/state-store.js +102 -1
  450. package/daemon/dist/domain/gateway/slack/state-store.js.map +1 -1
  451. package/daemon/dist/domain/gateway/slack/thread-routing.d.ts.map +1 -1
  452. package/daemon/dist/domain/gateway/slack/thread-routing.js +7 -2
  453. package/daemon/dist/domain/gateway/slack/thread-routing.js.map +1 -1
  454. package/daemon/dist/domain/gateway/slack/thread-seat-map.d.ts +3 -0
  455. package/daemon/dist/domain/gateway/slack/thread-seat-map.d.ts.map +1 -1
  456. package/daemon/dist/domain/gateway/slack/thread-seat-map.js +14 -2
  457. package/daemon/dist/domain/gateway/slack/thread-seat-map.js.map +1 -1
  458. package/daemon/dist/domain/generated-file-hygiene.d.ts +3 -0
  459. package/daemon/dist/domain/generated-file-hygiene.d.ts.map +1 -0
  460. package/daemon/dist/domain/generated-file-hygiene.js +142 -0
  461. package/daemon/dist/domain/generated-file-hygiene.js.map +1 -0
  462. package/daemon/dist/domain/graph-projection.d.ts.map +1 -1
  463. package/daemon/dist/domain/graph-projection.js +1 -0
  464. package/daemon/dist/domain/graph-projection.js.map +1 -1
  465. package/daemon/dist/domain/health-checkpoints.d.ts +2 -0
  466. package/daemon/dist/domain/health-checkpoints.d.ts.map +1 -1
  467. package/daemon/dist/domain/health-checkpoints.js +2 -0
  468. package/daemon/dist/domain/health-checkpoints.js.map +1 -1
  469. package/daemon/dist/domain/health-detectors.d.ts +32 -1
  470. package/daemon/dist/domain/health-detectors.d.ts.map +1 -1
  471. package/daemon/dist/domain/health-detectors.js +40 -9
  472. package/daemon/dist/domain/health-detectors.js.map +1 -1
  473. package/daemon/dist/domain/health-diagnosis.d.ts +3 -1
  474. package/daemon/dist/domain/health-diagnosis.d.ts.map +1 -1
  475. package/daemon/dist/domain/health-diagnosis.js +6 -3
  476. package/daemon/dist/domain/health-diagnosis.js.map +1 -1
  477. package/daemon/dist/domain/health-passive-ceremony.d.ts +5 -1
  478. package/daemon/dist/domain/health-passive-ceremony.d.ts.map +1 -1
  479. package/daemon/dist/domain/health-passive-ceremony.js +20 -4
  480. package/daemon/dist/domain/health-passive-ceremony.js.map +1 -1
  481. package/daemon/dist/domain/hosts/remote-daemon-http.d.ts +3 -1
  482. package/daemon/dist/domain/hosts/remote-daemon-http.d.ts.map +1 -1
  483. package/daemon/dist/domain/hosts/remote-daemon-http.js +10 -3
  484. package/daemon/dist/domain/hosts/remote-daemon-http.js.map +1 -1
  485. package/daemon/dist/domain/human-questions.d.ts +41 -0
  486. package/daemon/dist/domain/human-questions.d.ts.map +1 -0
  487. package/daemon/dist/domain/human-questions.js +81 -0
  488. package/daemon/dist/domain/human-questions.js.map +1 -0
  489. package/daemon/dist/domain/install-planner.d.ts.map +1 -1
  490. package/daemon/dist/domain/install-planner.js +17 -0
  491. package/daemon/dist/domain/install-planner.js.map +1 -1
  492. package/daemon/dist/domain/managed-blocks.d.ts +1 -0
  493. package/daemon/dist/domain/managed-blocks.d.ts.map +1 -1
  494. package/daemon/dist/domain/managed-blocks.js +3 -0
  495. package/daemon/dist/domain/managed-blocks.js.map +1 -1
  496. package/daemon/dist/domain/markdown-address.js +1 -1
  497. package/daemon/dist/domain/markdown-address.js.map +1 -1
  498. package/daemon/dist/domain/mission-control/audit-browse.d.ts +5 -0
  499. package/daemon/dist/domain/mission-control/audit-browse.d.ts.map +1 -1
  500. package/daemon/dist/domain/mission-control/audit-browse.js +11 -1
  501. package/daemon/dist/domain/mission-control/audit-browse.js.map +1 -1
  502. package/daemon/dist/domain/mission-control/mission-control-fleet-cli-capability.d.ts +25 -63
  503. package/daemon/dist/domain/mission-control/mission-control-fleet-cli-capability.d.ts.map +1 -1
  504. package/daemon/dist/domain/mission-control/mission-control-fleet-cli-capability.js +34 -100
  505. package/daemon/dist/domain/mission-control/mission-control-fleet-cli-capability.js.map +1 -1
  506. package/daemon/dist/domain/mission-control/mission-control-read-layer.d.ts +1 -0
  507. package/daemon/dist/domain/mission-control/mission-control-read-layer.d.ts.map +1 -1
  508. package/daemon/dist/domain/mission-control/mission-control-read-layer.js +6 -3
  509. package/daemon/dist/domain/mission-control/mission-control-read-layer.js.map +1 -1
  510. package/daemon/dist/domain/mission-control/notification-adapter-ntfy.d.ts +5 -0
  511. package/daemon/dist/domain/mission-control/notification-adapter-ntfy.d.ts.map +1 -1
  512. package/daemon/dist/domain/mission-control/notification-adapter-ntfy.js +33 -2
  513. package/daemon/dist/domain/mission-control/notification-adapter-ntfy.js.map +1 -1
  514. package/daemon/dist/domain/mission-control/notification-adapter-types.d.ts +2 -0
  515. package/daemon/dist/domain/mission-control/notification-adapter-types.d.ts.map +1 -1
  516. package/daemon/dist/domain/mission-control/notification-adapter-webhook.d.ts +4 -0
  517. package/daemon/dist/domain/mission-control/notification-adapter-webhook.d.ts.map +1 -1
  518. package/daemon/dist/domain/mission-control/notification-adapter-webhook.js +33 -2
  519. package/daemon/dist/domain/mission-control/notification-adapter-webhook.js.map +1 -1
  520. package/daemon/dist/domain/mission-control/outbound-url-validator.d.ts +27 -0
  521. package/daemon/dist/domain/mission-control/outbound-url-validator.d.ts.map +1 -0
  522. package/daemon/dist/domain/mission-control/outbound-url-validator.js +60 -0
  523. package/daemon/dist/domain/mission-control/outbound-url-validator.js.map +1 -0
  524. package/daemon/dist/domain/native-permission-store.d.ts +14 -0
  525. package/daemon/dist/domain/native-permission-store.d.ts.map +1 -1
  526. package/daemon/dist/domain/native-permission-store.js +168 -4
  527. package/daemon/dist/domain/native-permission-store.js.map +1 -1
  528. package/daemon/dist/domain/native-process-executable.d.ts +4 -0
  529. package/daemon/dist/domain/native-process-executable.d.ts.map +1 -0
  530. package/daemon/dist/domain/native-process-executable.js +53 -0
  531. package/daemon/dist/domain/native-process-executable.js.map +1 -0
  532. package/daemon/dist/domain/native-process-lineage.d.ts +11 -2
  533. package/daemon/dist/domain/native-process-lineage.d.ts.map +1 -1
  534. package/daemon/dist/domain/native-process-lineage.js +135 -15
  535. package/daemon/dist/domain/native-process-lineage.js.map +1 -1
  536. package/daemon/dist/domain/native-resume-probe.d.ts +8 -2
  537. package/daemon/dist/domain/native-resume-probe.d.ts.map +1 -1
  538. package/daemon/dist/domain/native-resume-probe.js +55 -11
  539. package/daemon/dist/domain/native-resume-probe.js.map +1 -1
  540. package/daemon/dist/domain/node-inventory.d.ts.map +1 -1
  541. package/daemon/dist/domain/node-inventory.js +91 -44
  542. package/daemon/dist/domain/node-inventory.js.map +1 -1
  543. package/daemon/dist/domain/node-launcher.d.ts +4 -0
  544. package/daemon/dist/domain/node-launcher.d.ts.map +1 -1
  545. package/daemon/dist/domain/node-launcher.js +4 -1
  546. package/daemon/dist/domain/node-launcher.js.map +1 -1
  547. package/daemon/dist/domain/periodic-snapshot-scheduler.d.ts +1 -0
  548. package/daemon/dist/domain/periodic-snapshot-scheduler.d.ts.map +1 -1
  549. package/daemon/dist/domain/periodic-snapshot-scheduler.js +25 -0
  550. package/daemon/dist/domain/periodic-snapshot-scheduler.js.map +1 -1
  551. package/daemon/dist/domain/permission-drift.d.ts +1 -0
  552. package/daemon/dist/domain/permission-drift.d.ts.map +1 -1
  553. package/daemon/dist/domain/permission-drift.js +13 -1
  554. package/daemon/dist/domain/permission-drift.js.map +1 -1
  555. package/daemon/dist/domain/permission-policy/policy-ref.d.ts +6 -1
  556. package/daemon/dist/domain/permission-policy/policy-ref.d.ts.map +1 -1
  557. package/daemon/dist/domain/permission-policy/policy-ref.js +16 -4
  558. package/daemon/dist/domain/permission-policy/policy-ref.js.map +1 -1
  559. package/daemon/dist/domain/permission-policy/policy-spec.d.ts +1 -1
  560. package/daemon/dist/domain/permission-policy/policy-spec.d.ts.map +1 -1
  561. package/daemon/dist/domain/permission-policy/policy-spec.js +2 -2
  562. package/daemon/dist/domain/permission-policy/policy-spec.js.map +1 -1
  563. package/daemon/dist/domain/plugin-discovery-service.d.ts +5 -6
  564. package/daemon/dist/domain/plugin-discovery-service.d.ts.map +1 -1
  565. package/daemon/dist/domain/plugin-discovery-service.js +14 -8
  566. package/daemon/dist/domain/plugin-discovery-service.js.map +1 -1
  567. package/daemon/dist/domain/pod-bundle-assembler.d.ts +6 -2
  568. package/daemon/dist/domain/pod-bundle-assembler.d.ts.map +1 -1
  569. package/daemon/dist/domain/pod-bundle-assembler.js +58 -15
  570. package/daemon/dist/domain/pod-bundle-assembler.js.map +1 -1
  571. package/daemon/dist/domain/policies/parked-owner-consumer.d.ts +6 -0
  572. package/daemon/dist/domain/policies/parked-owner-consumer.d.ts.map +1 -1
  573. package/daemon/dist/domain/policies/parked-owner-consumer.js +11 -0
  574. package/daemon/dist/domain/policies/parked-owner-consumer.js.map +1 -1
  575. package/daemon/dist/domain/profile-resolver.d.ts +4 -2
  576. package/daemon/dist/domain/profile-resolver.d.ts.map +1 -1
  577. package/daemon/dist/domain/profile-resolver.js +78 -9
  578. package/daemon/dist/domain/profile-resolver.js.map +1 -1
  579. package/daemon/dist/domain/project-lifecycle-compiler.d.ts.map +1 -1
  580. package/daemon/dist/domain/project-lifecycle-compiler.js +10 -2
  581. package/daemon/dist/domain/project-lifecycle-compiler.js.map +1 -1
  582. package/daemon/dist/domain/projection-planner.d.ts +11 -0
  583. package/daemon/dist/domain/projection-planner.d.ts.map +1 -1
  584. package/daemon/dist/domain/projection-planner.js +14 -5
  585. package/daemon/dist/domain/projection-planner.js.map +1 -1
  586. package/daemon/dist/domain/proof/judgments.d.ts +3 -0
  587. package/daemon/dist/domain/proof/judgments.d.ts.map +1 -1
  588. package/daemon/dist/domain/proof/judgments.js +13 -8
  589. package/daemon/dist/domain/proof/judgments.js.map +1 -1
  590. package/daemon/dist/domain/proof/source-watch.d.ts.map +1 -1
  591. package/daemon/dist/domain/proof/source-watch.js +45 -27
  592. package/daemon/dist/domain/proof/source-watch.js.map +1 -1
  593. package/daemon/dist/domain/provider/host-usage-rollup.js +9 -5
  594. package/daemon/dist/domain/provider/host-usage-rollup.js.map +1 -1
  595. package/daemon/dist/domain/ps-projection.d.ts +22 -3
  596. package/daemon/dist/domain/ps-projection.d.ts.map +1 -1
  597. package/daemon/dist/domain/ps-projection.js +50 -11
  598. package/daemon/dist/domain/ps-projection.js.map +1 -1
  599. package/daemon/dist/domain/queue-recovery.d.ts.map +1 -1
  600. package/daemon/dist/domain/queue-recovery.js +7 -1
  601. package/daemon/dist/domain/queue-recovery.js.map +1 -1
  602. package/daemon/dist/domain/queue-repository.d.ts +98 -6
  603. package/daemon/dist/domain/queue-repository.d.ts.map +1 -1
  604. package/daemon/dist/domain/queue-repository.js +337 -43
  605. package/daemon/dist/domain/queue-repository.js.map +1 -1
  606. package/daemon/dist/domain/queue-stuck-sweep.d.ts +3 -0
  607. package/daemon/dist/domain/queue-stuck-sweep.d.ts.map +1 -1
  608. package/daemon/dist/domain/queue-stuck-sweep.js +111 -26
  609. package/daemon/dist/domain/queue-stuck-sweep.js.map +1 -1
  610. package/daemon/dist/domain/queue-transition-log.d.ts.map +1 -1
  611. package/daemon/dist/domain/queue-transition-log.js +12 -10
  612. package/daemon/dist/domain/queue-transition-log.js.map +1 -1
  613. package/daemon/dist/domain/queue-wake-ladder.d.ts +8 -7
  614. package/daemon/dist/domain/queue-wake-ladder.d.ts.map +1 -1
  615. package/daemon/dist/domain/queue-wake-ladder.js +278 -19
  616. package/daemon/dist/domain/queue-wake-ladder.js.map +1 -1
  617. package/daemon/dist/domain/queue-wake-repository.d.ts +10 -9
  618. package/daemon/dist/domain/queue-wake-repository.d.ts.map +1 -1
  619. package/daemon/dist/domain/queue-wake-repository.js +31 -11
  620. package/daemon/dist/domain/queue-wake-repository.js.map +1 -1
  621. package/daemon/dist/domain/readiness-timeout.d.ts +7 -0
  622. package/daemon/dist/domain/readiness-timeout.d.ts.map +1 -0
  623. package/daemon/dist/domain/readiness-timeout.js +19 -0
  624. package/daemon/dist/domain/readiness-timeout.js.map +1 -0
  625. package/daemon/dist/domain/reply-to-choice.d.ts +26 -0
  626. package/daemon/dist/domain/reply-to-choice.d.ts.map +1 -0
  627. package/daemon/dist/domain/reply-to-choice.js +45 -0
  628. package/daemon/dist/domain/reply-to-choice.js.map +1 -0
  629. package/daemon/dist/domain/request-phase-observer.d.ts +69 -0
  630. package/daemon/dist/domain/request-phase-observer.d.ts.map +1 -0
  631. package/daemon/dist/domain/request-phase-observer.js +206 -0
  632. package/daemon/dist/domain/request-phase-observer.js.map +1 -0
  633. package/daemon/dist/domain/restore-check-service.d.ts +27 -8
  634. package/daemon/dist/domain/restore-check-service.d.ts.map +1 -1
  635. package/daemon/dist/domain/restore-check-service.js +202 -126
  636. package/daemon/dist/domain/restore-check-service.js.map +1 -1
  637. package/daemon/dist/domain/restore-orchestrator.d.ts +5 -2
  638. package/daemon/dist/domain/restore-orchestrator.d.ts.map +1 -1
  639. package/daemon/dist/domain/restore-orchestrator.js +119 -216
  640. package/daemon/dist/domain/restore-orchestrator.js.map +1 -1
  641. package/daemon/dist/domain/restore-plan-preview.d.ts.map +1 -1
  642. package/daemon/dist/domain/restore-plan-preview.js +2 -6
  643. package/daemon/dist/domain/restore-plan-preview.js.map +1 -1
  644. package/daemon/dist/domain/restore-preconditions.d.ts +12 -0
  645. package/daemon/dist/domain/restore-preconditions.d.ts.map +1 -0
  646. package/daemon/dist/domain/restore-preconditions.js +202 -0
  647. package/daemon/dist/domain/restore-preconditions.js.map +1 -0
  648. package/daemon/dist/domain/resume-metadata-refresher.d.ts +20 -4
  649. package/daemon/dist/domain/resume-metadata-refresher.d.ts.map +1 -1
  650. package/daemon/dist/domain/resume-metadata-refresher.js +70 -8
  651. package/daemon/dist/domain/resume-metadata-refresher.js.map +1 -1
  652. package/daemon/dist/domain/resume-token-capture.d.ts +22 -1
  653. package/daemon/dist/domain/resume-token-capture.d.ts.map +1 -1
  654. package/daemon/dist/domain/resume-token-capture.js +32 -4
  655. package/daemon/dist/domain/resume-token-capture.js.map +1 -1
  656. package/daemon/dist/domain/resume-token-validation.d.ts +1 -1
  657. package/daemon/dist/domain/resume-token-validation.d.ts.map +1 -1
  658. package/daemon/dist/domain/resume-token-validation.js +24 -24
  659. package/daemon/dist/domain/resume-token-validation.js.map +1 -1
  660. package/daemon/dist/domain/rig-mode/operating-posture.d.ts +17 -1
  661. package/daemon/dist/domain/rig-mode/operating-posture.d.ts.map +1 -1
  662. package/daemon/dist/domain/rig-mode/operating-posture.js +53 -15
  663. package/daemon/dist/domain/rig-mode/operating-posture.js.map +1 -1
  664. package/daemon/dist/domain/rig-repository.d.ts +15 -5
  665. package/daemon/dist/domain/rig-repository.d.ts.map +1 -1
  666. package/daemon/dist/domain/rig-repository.js +70 -6
  667. package/daemon/dist/domain/rig-repository.js.map +1 -1
  668. package/daemon/dist/domain/rig-teardown.d.ts +3 -0
  669. package/daemon/dist/domain/rig-teardown.d.ts.map +1 -1
  670. package/daemon/dist/domain/rig-teardown.js +105 -19
  671. package/daemon/dist/domain/rig-teardown.js.map +1 -1
  672. package/daemon/dist/domain/rigspec-codec.d.ts.map +1 -1
  673. package/daemon/dist/domain/rigspec-codec.js +8 -0
  674. package/daemon/dist/domain/rigspec-codec.js.map +1 -1
  675. package/daemon/dist/domain/rigspec-exporter.d.ts.map +1 -1
  676. package/daemon/dist/domain/rigspec-exporter.js +5 -0
  677. package/daemon/dist/domain/rigspec-exporter.js.map +1 -1
  678. package/daemon/dist/domain/rigspec-instantiator.d.ts +8 -3
  679. package/daemon/dist/domain/rigspec-instantiator.d.ts.map +1 -1
  680. package/daemon/dist/domain/rigspec-instantiator.js +82 -20
  681. package/daemon/dist/domain/rigspec-instantiator.js.map +1 -1
  682. package/daemon/dist/domain/rigspec-preflight.d.ts +5 -2
  683. package/daemon/dist/domain/rigspec-preflight.d.ts.map +1 -1
  684. package/daemon/dist/domain/rigspec-preflight.js +36 -13
  685. package/daemon/dist/domain/rigspec-preflight.js.map +1 -1
  686. package/daemon/dist/domain/rigspec-schema.d.ts.map +1 -1
  687. package/daemon/dist/domain/rigspec-schema.js +19 -3
  688. package/daemon/dist/domain/rigspec-schema.js.map +1 -1
  689. package/daemon/dist/domain/route-timing-recorder.d.ts.map +1 -1
  690. package/daemon/dist/domain/route-timing-recorder.js +2 -0
  691. package/daemon/dist/domain/route-timing-recorder.js.map +1 -1
  692. package/daemon/dist/domain/runtime-adapter.d.ts +19 -3
  693. package/daemon/dist/domain/runtime-adapter.d.ts.map +1 -1
  694. package/daemon/dist/domain/runtime-adapter.js +1 -0
  695. package/daemon/dist/domain/runtime-adapter.js.map +1 -1
  696. package/daemon/dist/domain/runtime-verifier.d.ts +3 -1
  697. package/daemon/dist/domain/runtime-verifier.d.ts.map +1 -1
  698. package/daemon/dist/domain/runtime-verifier.js +10 -1
  699. package/daemon/dist/domain/runtime-verifier.js.map +1 -1
  700. package/daemon/dist/domain/scope/scaffold-placeholder.d.ts +4 -4
  701. package/daemon/dist/domain/scope/scaffold-placeholder.d.ts.map +1 -1
  702. package/daemon/dist/domain/scope/scaffold-placeholder.js +4 -4
  703. package/daemon/dist/domain/scope/scaffold-placeholder.js.map +1 -1
  704. package/daemon/dist/domain/seat-activity-service.d.ts +9 -4
  705. package/daemon/dist/domain/seat-activity-service.d.ts.map +1 -1
  706. package/daemon/dist/domain/seat-activity-service.js +73 -22
  707. package/daemon/dist/domain/seat-activity-service.js.map +1 -1
  708. package/daemon/dist/domain/seat-attention-reconciler.d.ts +1 -0
  709. package/daemon/dist/domain/seat-attention-reconciler.d.ts.map +1 -1
  710. package/daemon/dist/domain/seat-attention-reconciler.js +38 -9
  711. package/daemon/dist/domain/seat-attention-reconciler.js.map +1 -1
  712. package/daemon/dist/domain/seat-handover-service.d.ts +8 -0
  713. package/daemon/dist/domain/seat-handover-service.d.ts.map +1 -1
  714. package/daemon/dist/domain/seat-handover-service.js +12 -11
  715. package/daemon/dist/domain/seat-handover-service.js.map +1 -1
  716. package/daemon/dist/domain/seat-identity-reconciler.d.ts +1 -1
  717. package/daemon/dist/domain/seat-identity-reconciler.d.ts.map +1 -1
  718. package/daemon/dist/domain/seat-identity-reconciler.js +99 -18
  719. package/daemon/dist/domain/seat-identity-reconciler.js.map +1 -1
  720. package/daemon/dist/domain/seat-launch-environment.d.ts +26 -0
  721. package/daemon/dist/domain/seat-launch-environment.d.ts.map +1 -0
  722. package/daemon/dist/domain/seat-launch-environment.js +182 -0
  723. package/daemon/dist/domain/seat-launch-environment.js.map +1 -0
  724. package/daemon/dist/domain/seat-lifecycle-service.d.ts +11 -0
  725. package/daemon/dist/domain/seat-lifecycle-service.d.ts.map +1 -1
  726. package/daemon/dist/domain/seat-lifecycle-service.js +41 -2
  727. package/daemon/dist/domain/seat-lifecycle-service.js.map +1 -1
  728. package/daemon/dist/domain/seat-status-service.d.ts +2 -1
  729. package/daemon/dist/domain/seat-status-service.d.ts.map +1 -1
  730. package/daemon/dist/domain/seat-status-service.js +10 -6
  731. package/daemon/dist/domain/seat-status-service.js.map +1 -1
  732. package/daemon/dist/domain/seat-structural-activity-service.d.ts +5 -4
  733. package/daemon/dist/domain/seat-structural-activity-service.d.ts.map +1 -1
  734. package/daemon/dist/domain/seat-structural-activity-service.js +23 -9
  735. package/daemon/dist/domain/seat-structural-activity-service.js.map +1 -1
  736. package/daemon/dist/domain/seat-switch-client-service.d.ts.map +1 -1
  737. package/daemon/dist/domain/seat-switch-client-service.js +3 -2
  738. package/daemon/dist/domain/seat-switch-client-service.js.map +1 -1
  739. package/daemon/dist/domain/service-orchestrator.d.ts +1 -0
  740. package/daemon/dist/domain/service-orchestrator.d.ts.map +1 -1
  741. package/daemon/dist/domain/service-orchestrator.js +4 -0
  742. package/daemon/dist/domain/service-orchestrator.js.map +1 -1
  743. package/daemon/dist/domain/services-readiness.d.ts.map +1 -1
  744. package/daemon/dist/domain/services-readiness.js +6 -2
  745. package/daemon/dist/domain/services-readiness.js.map +1 -1
  746. package/daemon/dist/domain/session-fingerprinter.d.ts.map +1 -1
  747. package/daemon/dist/domain/session-fingerprinter.js +16 -1
  748. package/daemon/dist/domain/session-fingerprinter.js.map +1 -1
  749. package/daemon/dist/domain/session-name.d.ts.map +1 -1
  750. package/daemon/dist/domain/session-name.js +6 -0
  751. package/daemon/dist/domain/session-name.js.map +1 -1
  752. package/daemon/dist/domain/session-registry.d.ts +3 -0
  753. package/daemon/dist/domain/session-registry.d.ts.map +1 -1
  754. package/daemon/dist/domain/session-registry.js +7 -0
  755. package/daemon/dist/domain/session-registry.js.map +1 -1
  756. package/daemon/dist/domain/session-transport.d.ts +35 -1
  757. package/daemon/dist/domain/session-transport.d.ts.map +1 -1
  758. package/daemon/dist/domain/session-transport.js +450 -158
  759. package/daemon/dist/domain/session-transport.js.map +1 -1
  760. package/daemon/dist/domain/skill-catalog.d.ts +19 -0
  761. package/daemon/dist/domain/skill-catalog.d.ts.map +1 -1
  762. package/daemon/dist/domain/skill-catalog.js +166 -17
  763. package/daemon/dist/domain/skill-catalog.js.map +1 -1
  764. package/daemon/dist/domain/skill-discovery.d.ts +1 -1
  765. package/daemon/dist/domain/skill-discovery.d.ts.map +1 -1
  766. package/daemon/dist/domain/skill-discovery.js +6 -0
  767. package/daemon/dist/domain/skill-discovery.js.map +1 -1
  768. package/daemon/dist/domain/slow-op-recorder.d.ts +5 -0
  769. package/daemon/dist/domain/slow-op-recorder.d.ts.map +1 -1
  770. package/daemon/dist/domain/slow-op-recorder.js +34 -1
  771. package/daemon/dist/domain/slow-op-recorder.js.map +1 -1
  772. package/daemon/dist/domain/snapshot-repository.d.ts +2 -1
  773. package/daemon/dist/domain/snapshot-repository.d.ts.map +1 -1
  774. package/daemon/dist/domain/snapshot-repository.js +39 -15
  775. package/daemon/dist/domain/snapshot-repository.js.map +1 -1
  776. package/daemon/dist/domain/spec-library-workflow-scanner.d.ts +1 -1
  777. package/daemon/dist/domain/spec-library-workflow-scanner.d.ts.map +1 -1
  778. package/daemon/dist/domain/spec-library-workflow-scanner.js +70 -11
  779. package/daemon/dist/domain/spec-library-workflow-scanner.js.map +1 -1
  780. package/daemon/dist/domain/spec-validation-service.d.ts +6 -0
  781. package/daemon/dist/domain/spec-validation-service.d.ts.map +1 -1
  782. package/daemon/dist/domain/spec-validation-service.js +16 -1
  783. package/daemon/dist/domain/spec-validation-service.js.map +1 -1
  784. package/daemon/dist/domain/startup-orchestrator.d.ts +38 -5
  785. package/daemon/dist/domain/startup-orchestrator.d.ts.map +1 -1
  786. package/daemon/dist/domain/startup-orchestrator.js +275 -64
  787. package/daemon/dist/domain/startup-orchestrator.js.map +1 -1
  788. package/daemon/dist/domain/startup-proof.d.ts +7 -0
  789. package/daemon/dist/domain/startup-proof.d.ts.map +1 -1
  790. package/daemon/dist/domain/startup-proof.js +7 -0
  791. package/daemon/dist/domain/startup-proof.js.map +1 -1
  792. package/daemon/dist/domain/startup-submission-evidence.d.ts +45 -0
  793. package/daemon/dist/domain/startup-submission-evidence.d.ts.map +1 -0
  794. package/daemon/dist/domain/startup-submission-evidence.js +84 -0
  795. package/daemon/dist/domain/startup-submission-evidence.js.map +1 -0
  796. package/daemon/dist/domain/startup-validation.d.ts.map +1 -1
  797. package/daemon/dist/domain/startup-validation.js +4 -0
  798. package/daemon/dist/domain/startup-validation.js.map +1 -1
  799. package/daemon/dist/domain/successor-session-launcher.d.ts +14 -3
  800. package/daemon/dist/domain/successor-session-launcher.d.ts.map +1 -1
  801. package/daemon/dist/domain/successor-session-launcher.js +19 -9
  802. package/daemon/dist/domain/successor-session-launcher.js.map +1 -1
  803. package/daemon/dist/domain/system-world.d.ts +3 -0
  804. package/daemon/dist/domain/system-world.d.ts.map +1 -1
  805. package/daemon/dist/domain/system-world.js +24 -21
  806. package/daemon/dist/domain/system-world.js.map +1 -1
  807. package/daemon/dist/domain/terminal/cmux-provider-adapter.d.ts.map +1 -1
  808. package/daemon/dist/domain/terminal/cmux-provider-adapter.js +2 -3
  809. package/daemon/dist/domain/terminal/cmux-provider-adapter.js.map +1 -1
  810. package/daemon/dist/domain/terminal/herdr-adapter.d.ts +19 -4
  811. package/daemon/dist/domain/terminal/herdr-adapter.d.ts.map +1 -1
  812. package/daemon/dist/domain/terminal/herdr-adapter.js +102 -8
  813. package/daemon/dist/domain/terminal/herdr-adapter.js.map +1 -1
  814. package/daemon/dist/domain/terminal/terminal-provider.d.ts +2 -0
  815. package/daemon/dist/domain/terminal/terminal-provider.d.ts.map +1 -1
  816. package/daemon/dist/domain/terminal/terminal-service.d.ts +10 -0
  817. package/daemon/dist/domain/terminal/terminal-service.d.ts.map +1 -1
  818. package/daemon/dist/domain/terminal/terminal-service.js +75 -6
  819. package/daemon/dist/domain/terminal/terminal-service.js.map +1 -1
  820. package/daemon/dist/domain/terminal/view-composer.d.ts +6 -0
  821. package/daemon/dist/domain/terminal/view-composer.d.ts.map +1 -1
  822. package/daemon/dist/domain/terminal/view-composer.js +6 -3
  823. package/daemon/dist/domain/terminal/view-composer.js.map +1 -1
  824. package/daemon/dist/domain/tmux-discovery-scanner.d.ts.map +1 -1
  825. package/daemon/dist/domain/tmux-discovery-scanner.js +7 -2
  826. package/daemon/dist/domain/tmux-discovery-scanner.js.map +1 -1
  827. package/daemon/dist/domain/tmux-option-defaults.d.ts.map +1 -1
  828. package/daemon/dist/domain/tmux-option-defaults.js +5 -0
  829. package/daemon/dist/domain/tmux-option-defaults.js.map +1 -1
  830. package/daemon/dist/domain/topology/remote-up-leaf.d.ts +1 -0
  831. package/daemon/dist/domain/topology/remote-up-leaf.d.ts.map +1 -1
  832. package/daemon/dist/domain/topology/remote-up-leaf.js.map +1 -1
  833. package/daemon/dist/domain/transcript-capture.d.ts.map +1 -1
  834. package/daemon/dist/domain/transcript-capture.js +1 -1
  835. package/daemon/dist/domain/transcript-capture.js.map +1 -1
  836. package/daemon/dist/domain/transcript-rotation.d.ts +26 -5
  837. package/daemon/dist/domain/transcript-rotation.d.ts.map +1 -1
  838. package/daemon/dist/domain/transcript-rotation.js +176 -25
  839. package/daemon/dist/domain/transcript-rotation.js.map +1 -1
  840. package/daemon/dist/domain/transcript-store.d.ts +1 -1
  841. package/daemon/dist/domain/transcript-store.d.ts.map +1 -1
  842. package/daemon/dist/domain/transcript-store.js +14 -6
  843. package/daemon/dist/domain/transcript-store.js.map +1 -1
  844. package/daemon/dist/domain/types.d.ts +24 -5
  845. package/daemon/dist/domain/types.d.ts.map +1 -1
  846. package/daemon/dist/domain/types.js.map +1 -1
  847. package/daemon/dist/domain/usage-series.d.ts.map +1 -1
  848. package/daemon/dist/domain/usage-series.js +11 -6
  849. package/daemon/dist/domain/usage-series.js.map +1 -1
  850. package/daemon/dist/domain/user-settings/settings-store.d.ts +3 -1
  851. package/daemon/dist/domain/user-settings/settings-store.d.ts.map +1 -1
  852. package/daemon/dist/domain/user-settings/settings-store.js +101 -6
  853. package/daemon/dist/domain/user-settings/settings-store.js.map +1 -1
  854. package/daemon/dist/domain/view-projector.d.ts +11 -6
  855. package/daemon/dist/domain/view-projector.d.ts.map +1 -1
  856. package/daemon/dist/domain/view-projector.js +2 -6
  857. package/daemon/dist/domain/view-projector.js.map +1 -1
  858. package/daemon/dist/domain/workflow-runtime.d.ts +1 -1
  859. package/daemon/dist/domain/workflow-spec-cache.d.ts +29 -7
  860. package/daemon/dist/domain/workflow-spec-cache.d.ts.map +1 -1
  861. package/daemon/dist/domain/workflow-spec-cache.js +103 -14
  862. package/daemon/dist/domain/workflow-spec-cache.js.map +1 -1
  863. package/daemon/dist/domain/workspace/project-catalog.d.ts +20 -0
  864. package/daemon/dist/domain/workspace/project-catalog.d.ts.map +1 -1
  865. package/daemon/dist/domain/workspace/project-catalog.js +92 -0
  866. package/daemon/dist/domain/workspace/project-catalog.js.map +1 -1
  867. package/daemon/dist/domain/workspace/project-registration.d.ts +49 -0
  868. package/daemon/dist/domain/workspace/project-registration.d.ts.map +1 -0
  869. package/daemon/dist/domain/workspace/project-registration.js +251 -0
  870. package/daemon/dist/domain/workspace/project-registration.js.map +1 -0
  871. package/daemon/dist/domain/workspace/workspace-doctor.js +1 -1
  872. package/daemon/dist/domain/workspace/workspace-doctor.js.map +1 -1
  873. package/daemon/dist/domain/workspace/workspace-resolver.js +1 -1
  874. package/daemon/dist/domain/workspace/workspace-resolver.js.map +1 -1
  875. package/daemon/dist/health-detectors-surface.d.ts +1 -1
  876. package/daemon/dist/health-detectors-surface.d.ts.map +1 -1
  877. package/daemon/dist/health-detectors-surface.js.map +1 -1
  878. package/daemon/dist/index.d.ts +4 -4
  879. package/daemon/dist/index.d.ts.map +1 -1
  880. package/daemon/dist/index.js +12 -7
  881. package/daemon/dist/index.js.map +1 -1
  882. package/daemon/dist/middleware/json-body-error.d.ts +17 -0
  883. package/daemon/dist/middleware/json-body-error.d.ts.map +1 -0
  884. package/daemon/dist/middleware/json-body-error.js +42 -0
  885. package/daemon/dist/middleware/json-body-error.js.map +1 -0
  886. package/daemon/dist/project-catalog-surface.d.ts +2 -1
  887. package/daemon/dist/project-catalog-surface.d.ts.map +1 -1
  888. package/daemon/dist/project-catalog-surface.js +1 -1
  889. package/daemon/dist/project-catalog-surface.js.map +1 -1
  890. package/daemon/dist/routes/activity.d.ts.map +1 -1
  891. package/daemon/dist/routes/activity.js +85 -6
  892. package/daemon/dist/routes/activity.js.map +1 -1
  893. package/daemon/dist/routes/attention.d.ts.map +1 -1
  894. package/daemon/dist/routes/attention.js +7 -1
  895. package/daemon/dist/routes/attention.js.map +1 -1
  896. package/daemon/dist/routes/bundles.d.ts.map +1 -1
  897. package/daemon/dist/routes/bundles.js +197 -407
  898. package/daemon/dist/routes/bundles.js.map +1 -1
  899. package/daemon/dist/routes/compaction.d.ts.map +1 -1
  900. package/daemon/dist/routes/compaction.js +44 -4
  901. package/daemon/dist/routes/compaction.js.map +1 -1
  902. package/daemon/dist/routes/context-packs.d.ts.map +1 -1
  903. package/daemon/dist/routes/context-packs.js +10 -2
  904. package/daemon/dist/routes/context-packs.js.map +1 -1
  905. package/daemon/dist/routes/env.d.ts.map +1 -1
  906. package/daemon/dist/routes/env.js +14 -4
  907. package/daemon/dist/routes/env.js.map +1 -1
  908. package/daemon/dist/routes/files.js +2 -2
  909. package/daemon/dist/routes/files.js.map +1 -1
  910. package/daemon/dist/routes/gateway.d.ts.map +1 -1
  911. package/daemon/dist/routes/gateway.js +11 -1
  912. package/daemon/dist/routes/gateway.js.map +1 -1
  913. package/daemon/dist/routes/hosts.d.ts.map +1 -1
  914. package/daemon/dist/routes/hosts.js +51 -12
  915. package/daemon/dist/routes/hosts.js.map +1 -1
  916. package/daemon/dist/routes/mission-control.d.ts.map +1 -1
  917. package/daemon/dist/routes/mission-control.js +6 -2
  918. package/daemon/dist/routes/mission-control.js.map +1 -1
  919. package/daemon/dist/routes/missions.d.ts.map +1 -1
  920. package/daemon/dist/routes/missions.js +17 -5
  921. package/daemon/dist/routes/missions.js.map +1 -1
  922. package/daemon/dist/routes/plugins.d.ts.map +1 -1
  923. package/daemon/dist/routes/plugins.js +5 -1
  924. package/daemon/dist/routes/plugins.js.map +1 -1
  925. package/daemon/dist/routes/projects.d.ts.map +1 -1
  926. package/daemon/dist/routes/projects.js +4 -2
  927. package/daemon/dist/routes/projects.js.map +1 -1
  928. package/daemon/dist/routes/proof.d.ts.map +1 -1
  929. package/daemon/dist/routes/proof.js +9 -2
  930. package/daemon/dist/routes/proof.js.map +1 -1
  931. package/daemon/dist/routes/ps.d.ts.map +1 -1
  932. package/daemon/dist/routes/ps.js +18 -0
  933. package/daemon/dist/routes/ps.js.map +1 -1
  934. package/daemon/dist/routes/queue.d.ts.map +1 -1
  935. package/daemon/dist/routes/queue.js +150 -67
  936. package/daemon/dist/routes/queue.js.map +1 -1
  937. package/daemon/dist/routes/restore-check.d.ts.map +1 -1
  938. package/daemon/dist/routes/restore-check.js +40 -1
  939. package/daemon/dist/routes/restore-check.js.map +1 -1
  940. package/daemon/dist/routes/rigs.d.ts.map +1 -1
  941. package/daemon/dist/routes/rigs.js +4 -3
  942. package/daemon/dist/routes/rigs.js.map +1 -1
  943. package/daemon/dist/routes/rigspec.d.ts.map +1 -1
  944. package/daemon/dist/routes/rigspec.js +11 -12
  945. package/daemon/dist/routes/rigspec.js.map +1 -1
  946. package/daemon/dist/routes/seat.d.ts.map +1 -1
  947. package/daemon/dist/routes/seat.js +22 -4
  948. package/daemon/dist/routes/seat.js.map +1 -1
  949. package/daemon/dist/routes/sessions.d.ts.map +1 -1
  950. package/daemon/dist/routes/sessions.js +3 -2
  951. package/daemon/dist/routes/sessions.js.map +1 -1
  952. package/daemon/dist/routes/telemetry.d.ts +2 -0
  953. package/daemon/dist/routes/telemetry.d.ts.map +1 -1
  954. package/daemon/dist/routes/telemetry.js +22 -1
  955. package/daemon/dist/routes/telemetry.js.map +1 -1
  956. package/daemon/dist/routes/terminal-ws.d.ts +1 -2
  957. package/daemon/dist/routes/terminal-ws.d.ts.map +1 -1
  958. package/daemon/dist/routes/terminal-ws.js +1 -2
  959. package/daemon/dist/routes/terminal-ws.js.map +1 -1
  960. package/daemon/dist/routes/up.js +11 -6
  961. package/daemon/dist/routes/up.js.map +1 -1
  962. package/daemon/dist/routes/views.js +2 -2
  963. package/daemon/dist/routes/views.js.map +1 -1
  964. package/daemon/dist/server.d.ts +3 -0
  965. package/daemon/dist/server.d.ts.map +1 -1
  966. package/daemon/dist/server.js +11 -3
  967. package/daemon/dist/server.js.map +1 -1
  968. package/daemon/dist/spec-validation-surface.d.ts +4 -0
  969. package/daemon/dist/spec-validation-surface.d.ts.map +1 -0
  970. package/daemon/dist/spec-validation-surface.js +4 -0
  971. package/daemon/dist/spec-validation-surface.js.map +1 -0
  972. package/daemon/dist/startup.d.ts +1 -1
  973. package/daemon/dist/startup.d.ts.map +1 -1
  974. package/daemon/dist/startup.js +166 -57
  975. package/daemon/dist/startup.js.map +1 -1
  976. package/daemon/dist/system-world-surface.d.ts +1 -1
  977. package/daemon/dist/system-world-surface.d.ts.map +1 -1
  978. package/daemon/dist/system-world-surface.js +1 -1
  979. package/daemon/dist/system-world-surface.js.map +1 -1
  980. package/daemon/dist/terminal/TerminalSessionBroker.d.ts +1 -0
  981. package/daemon/dist/terminal/TerminalSessionBroker.d.ts.map +1 -1
  982. package/daemon/dist/terminal/TerminalSessionBroker.js +8 -1
  983. package/daemon/dist/terminal/TerminalSessionBroker.js.map +1 -1
  984. package/daemon/docs/reference/agent-spec.md +145 -64
  985. package/daemon/docs/reference/agent-startup-guide.md +187 -35
  986. package/daemon/docs/reference/agent-state-taxonomy.md +44 -13
  987. package/daemon/docs/reference/browser-access.md +8 -4
  988. package/daemon/docs/reference/bundle-formats.md +207 -0
  989. package/daemon/docs/reference/chain-file-convention.md +16 -7
  990. package/daemon/docs/reference/developing.md +24 -9
  991. package/daemon/docs/reference/edge-types.md +18 -10
  992. package/daemon/docs/reference/getting-started.md +426 -111
  993. package/daemon/docs/reference/health-diagnosis.md +23 -8
  994. package/daemon/docs/reference/help.md +40 -10
  995. package/daemon/docs/reference/host-resources.md +61 -0
  996. package/daemon/docs/reference/instance-layout.md +11 -0
  997. package/daemon/docs/reference/inventory-request-diagnostics.md +75 -0
  998. package/daemon/docs/reference/knowledge-maturity.md +3 -1
  999. package/daemon/docs/reference/legacy-topology-migration.md +4 -2
  1000. package/daemon/docs/reference/lore-routing.md +3 -1
  1001. package/daemon/docs/reference/mission-install.md +3 -1
  1002. package/daemon/docs/reference/non-interruptive-mode.md +60 -0
  1003. package/daemon/docs/reference/planning-dial.md +2 -1
  1004. package/daemon/docs/reference/product-journey-sdlc.md +11 -6
  1005. package/daemon/docs/reference/product-management-pass.md +3 -1
  1006. package/daemon/docs/reference/project-workspace.md +80 -3
  1007. package/daemon/docs/reference/publishing-a-rig-bundle.md +144 -0
  1008. package/daemon/docs/reference/refocus-channel.md +14 -5
  1009. package/daemon/docs/reference/release-boundary.md +7 -3
  1010. package/daemon/docs/reference/rig-bundle.md +271 -42
  1011. package/daemon/docs/reference/rig-spec.md +180 -29
  1012. package/daemon/docs/reference/rosters.md +60 -0
  1013. package/daemon/docs/reference/schemas/bundle-behaviour.v1.schema.json +546 -0
  1014. package/daemon/docs/reference/schemas/bundle-common.v1.schema.json +110 -0
  1015. package/daemon/docs/reference/schemas/bundle-configurations.v1.schema.json +67 -0
  1016. package/daemon/docs/reference/schemas/bundle-status.v1.schema.json +323 -0
  1017. package/daemon/docs/reference/schemas/fixtures/identity-vectors.json +80 -0
  1018. package/daemon/docs/reference/schemas/fixtures/invalid/behaviour/not-generated-with-sections.json +60 -0
  1019. package/daemon/docs/reference/schemas/fixtures/invalid/configurations/spaced-member.configurations.yaml +6 -0
  1020. package/daemon/docs/reference/schemas/fixtures/invalid/registry/listed-with-withdrawn-on.yaml +21 -0
  1021. package/daemon/docs/reference/schemas/fixtures/invalid/registry/missing-source.yaml +16 -0
  1022. package/daemon/docs/reference/schemas/fixtures/invalid/registry/parent-folder.yaml +20 -0
  1023. package/daemon/docs/reference/schemas/fixtures/invalid/registry/short-commit.yaml +20 -0
  1024. package/daemon/docs/reference/schemas/fixtures/invalid/registry/withdrawn-without-date.yaml +20 -0
  1025. package/daemon/docs/reference/schemas/fixtures/invalid/run-record/harness-check-with-configuration.json +75 -0
  1026. package/daemon/docs/reference/schemas/fixtures/invalid/run-record/unlabelable-platform.json +97 -0
  1027. package/daemon/docs/reference/schemas/fixtures/invalid/status/hand-edited-notice.json +61 -0
  1028. package/daemon/docs/reference/schemas/fixtures/invalid/status/tested-with-assistance.json +62 -0
  1029. package/daemon/docs/reference/schemas/fixtures/invalid/status/tested-without-records.json +59 -0
  1030. package/daemon/docs/reference/schemas/fixtures/invalid/status/unavailable-harness-with-result.json +61 -0
  1031. package/daemon/docs/reference/schemas/fixtures/invalid/status/unavailable-listing-with-label.json +61 -0
  1032. package/daemon/docs/reference/schemas/fixtures/valid/behaviour/custom-not-generated.json +22 -0
  1033. package/daemon/docs/reference/schemas/fixtures/valid/behaviour/legacy-archive-unknown-identity.json +53 -0
  1034. package/daemon/docs/reference/schemas/fixtures/valid/behaviour/mixed-runtimes-default.json +101 -0
  1035. package/daemon/docs/reference/schemas/fixtures/valid/behaviour/mixed-runtimes-yolo.json +102 -0
  1036. package/daemon/docs/reference/schemas/fixtures/valid/behaviour/openrig-dev.recommended.json +258 -0
  1037. package/daemon/docs/reference/schemas/fixtures/valid/configurations/openrig-dev.configurations.yaml +12 -0
  1038. package/daemon/docs/reference/schemas/fixtures/valid/registry/openrig-dev.yaml +20 -0
  1039. package/daemon/docs/reference/schemas/fixtures/valid/registry/withdrawn.yaml +21 -0
  1040. package/daemon/docs/reference/schemas/fixtures/valid/run-record/pi-harness-check-blocked.json +74 -0
  1041. package/daemon/docs/reference/schemas/fixtures/valid/run-record/team-assisted-pass.json +97 -0
  1042. package/daemon/docs/reference/schemas/fixtures/valid/run-record/team-pass.json +97 -0
  1043. package/daemon/docs/reference/schemas/fixtures/valid/run-record/withdraws-earlier.json +99 -0
  1044. package/daemon/docs/reference/schemas/fixtures/valid/status/status.json +61 -0
  1045. package/daemon/docs/reference/schemas/registry-entry.v1.schema.json +139 -0
  1046. package/daemon/docs/reference/schemas/run-record.v1.schema.json +315 -0
  1047. package/daemon/docs/reference/scoped-operating-posture.md +17 -9
  1048. package/daemon/docs/reference/sdlc-conventions.md +47 -28
  1049. package/daemon/docs/reference/slack-app-setup.md +58 -7
  1050. package/daemon/docs/reference/stream-classifier-worker.md +21 -8
  1051. package/daemon/docs/reference/telemetry.md +114 -0
  1052. package/daemon/docs/reference/worktree-builds.md +12 -6
  1053. package/daemon/policies/builtin/auto.policy.md +24 -0
  1054. package/daemon/specs/agents/development/implementer/agent.yaml +2 -2
  1055. package/daemon/specs/agents/development/qa/agent.yaml +1 -1
  1056. package/daemon/specs/agents/product-management/pm/agent.yaml +10 -0
  1057. package/daemon/specs/agents/shared/agent.yaml +1 -1
  1058. package/daemon/specs/agents/shared/skills/core/agent-starters/SKILL.md +0 -6
  1059. package/daemon/specs/agents/shared/skills/core/agent-startup-and-context-ingestion/SKILL.md +1 -8
  1060. package/daemon/specs/agents/shared/skills/core/messaging-the-human/SKILL.md +24 -0
  1061. package/daemon/specs/agents/shared/skills/core/openrig-architect/SKILL.md +5 -5
  1062. package/daemon/specs/agents/shared/skills/core/openrig-skills/SKILL.md +9 -4
  1063. package/daemon/specs/agents/shared/skills/core/openrig-software-factory/SKILL.md +12 -9
  1064. package/daemon/specs/agents/shared/skills/core/openrig-software-factory/references/worked-example.md +29 -29
  1065. package/daemon/specs/agents/shared/skills/core/rig-bundles-and-shareable-artifacts/SKILL.md +0 -1
  1066. package/daemon/specs/agents/shared/skills/core/session-source-fork/SKILL.md +0 -5
  1067. package/daemon/specs/agents/shared/skills/core/topology-mutation-and-seat-management/SKILL.md +24 -3
  1068. package/daemon/specs/agents/shared/skills/process/agent-browser/OPENRIG.md +1 -1
  1069. package/daemon/specs/agents/shared/skills/process/systematic-debugging/SKILL.md +0 -2
  1070. package/daemon/specs/rigs/focused/{adversarial-review → code-review}/rig.yaml +1 -1
  1071. package/daemon/specs/rigs/focused/pm/CULTURE.md +21 -0
  1072. package/daemon/specs/rigs/focused/{pm-team → pm}/rig.yaml +5 -5
  1073. package/daemon/specs/rigs/focused/{research-team → research}/rig.yaml +1 -1
  1074. package/daemon/specs/rigs/launch/factory/CULTURE.md +96 -0
  1075. package/daemon/specs/rigs/launch/factory/guidance/advisor-role.md +10 -0
  1076. package/daemon/specs/rigs/launch/factory/guidance/lead-first-move.md +23 -0
  1077. package/daemon/specs/rigs/launch/{demo → factory}/rig.yaml +46 -35
  1078. package/daemon/specs/rigs/{preview/product-team → launch/factory}/topology/instance/CRAFT.md +1 -1
  1079. package/daemon/specs/rigs/{preview/product-team → launch/factory}/topology/rig/CRAFT.md +2 -2
  1080. package/daemon/specs/rigs/{preview/product-team → launch/factory}/topology/rig/ORCHESTRATION-CRAFT.md +3 -3
  1081. package/daemon/specs/rigs/{preview/product-team/topology/seats/dev1-qa → launch/factory/topology/seats/dev-qa}/CRAFT.md +1 -1
  1082. package/daemon/specs/rigs/{preview/product-team/topology/seats/orch1-lead → launch/factory/topology/seats/orch-lead}/CRAFT.md +1 -1
  1083. package/daemon/specs/rigs/{preview/product-team/topology/seats/rev1-r1 → launch/factory/topology/seats/review-r1}/CRAFT.md +1 -1
  1084. package/daemon/specs/rigs/{preview/product-team/topology/seats/rev1-r2 → launch/factory/topology/seats/review-r2}/CRAFT.md +1 -1
  1085. package/daemon/specs/rigs/launch/kernel/agents/advisor/lead/agent.yaml +2 -8
  1086. package/daemon/specs/rigs/launch/kernel/agents/advisor/lead/guidance/role.md +37 -0
  1087. package/daemon/specs/rigs/launch/kernel/agents/advisor/lead/startup/context.md +12 -13
  1088. package/daemon/specs/rigs/launch/kernel/agents/operator/agent/agent.yaml +2 -8
  1089. package/daemon/specs/rigs/launch/kernel/agents/operator/agent/guidance/role.md +167 -4
  1090. package/daemon/specs/rigs/launch/kernel/agents/operator/agent/startup/context.md +30 -7
  1091. package/daemon/specs/rigs/launch/kernel/agents/queue/worker/agent.yaml +2 -8
  1092. package/daemon/specs/rigs/launch/kernel/agents/queue/worker/guidance/role.md +37 -0
  1093. package/daemon/specs/rigs/launch/kernel/culture/CULTURE.md +41 -0
  1094. package/daemon/specs/rigs/launch/starter/CULTURE.md +39 -0
  1095. package/daemon/specs/rigs/launch/starter/guidance/lead-first-move.md +23 -0
  1096. package/daemon/specs/rigs/launch/{first-project-mixed → starter}/rig.yaml +11 -8
  1097. package/dist/atomic-text-write.d.ts +3 -0
  1098. package/dist/atomic-text-write.d.ts.map +1 -0
  1099. package/dist/atomic-text-write.js +79 -0
  1100. package/dist/atomic-text-write.js.map +1 -0
  1101. package/dist/build-info.js +3 -3
  1102. package/dist/bundle-behaviour.d.ts +10 -0
  1103. package/dist/bundle-behaviour.d.ts.map +1 -0
  1104. package/dist/bundle-behaviour.js +72 -0
  1105. package/dist/bundle-behaviour.js.map +1 -0
  1106. package/dist/cli-error.d.ts.map +1 -1
  1107. package/dist/cli-error.js +15 -2
  1108. package/dist/cli-error.js.map +1 -1
  1109. package/dist/client.d.ts +14 -1
  1110. package/dist/client.d.ts.map +1 -1
  1111. package/dist/client.js +29 -4
  1112. package/dist/client.js.map +1 -1
  1113. package/dist/commands/agent-image.d.ts.map +1 -1
  1114. package/dist/commands/agent-image.js +2 -0
  1115. package/dist/commands/agent-image.js.map +1 -1
  1116. package/dist/commands/ask.d.ts.map +1 -1
  1117. package/dist/commands/ask.js +10 -1
  1118. package/dist/commands/ask.js.map +1 -1
  1119. package/dist/commands/bootstrap.d.ts.map +1 -1
  1120. package/dist/commands/bootstrap.js +34 -11
  1121. package/dist/commands/bootstrap.js.map +1 -1
  1122. package/dist/commands/broadcast.js +1 -1
  1123. package/dist/commands/broadcast.js.map +1 -1
  1124. package/dist/commands/bundle.d.ts +12 -0
  1125. package/dist/commands/bundle.d.ts.map +1 -1
  1126. package/dist/commands/bundle.js +286 -21
  1127. package/dist/commands/bundle.js.map +1 -1
  1128. package/dist/commands/capture.js +4 -4
  1129. package/dist/commands/capture.js.map +1 -1
  1130. package/dist/commands/chatroom.d.ts.map +1 -1
  1131. package/dist/commands/chatroom.js +22 -1
  1132. package/dist/commands/chatroom.js.map +1 -1
  1133. package/dist/commands/compact-plan.d.ts.map +1 -1
  1134. package/dist/commands/compact-plan.js +36 -7
  1135. package/dist/commands/compact-plan.js.map +1 -1
  1136. package/dist/commands/compact.d.ts.map +1 -1
  1137. package/dist/commands/compact.js +24 -4
  1138. package/dist/commands/compact.js.map +1 -1
  1139. package/dist/commands/config.d.ts.map +1 -1
  1140. package/dist/commands/config.js +5 -4
  1141. package/dist/commands/config.js.map +1 -1
  1142. package/dist/commands/context.d.ts +3 -1
  1143. package/dist/commands/context.d.ts.map +1 -1
  1144. package/dist/commands/context.js +85 -32
  1145. package/dist/commands/context.js.map +1 -1
  1146. package/dist/commands/crash-cart.d.ts.map +1 -1
  1147. package/dist/commands/crash-cart.js +2 -1
  1148. package/dist/commands/crash-cart.js.map +1 -1
  1149. package/dist/commands/daemon.d.ts +13 -1
  1150. package/dist/commands/daemon.d.ts.map +1 -1
  1151. package/dist/commands/daemon.js +36 -18
  1152. package/dist/commands/daemon.js.map +1 -1
  1153. package/dist/commands/destroy.d.ts.map +1 -1
  1154. package/dist/commands/destroy.js +3 -2
  1155. package/dist/commands/destroy.js.map +1 -1
  1156. package/dist/commands/discover.d.ts.map +1 -1
  1157. package/dist/commands/discover.js +2 -4
  1158. package/dist/commands/discover.js.map +1 -1
  1159. package/dist/commands/doctor.d.ts.map +1 -1
  1160. package/dist/commands/doctor.js +10 -4
  1161. package/dist/commands/doctor.js.map +1 -1
  1162. package/dist/commands/down.d.ts.map +1 -1
  1163. package/dist/commands/down.js +7 -1
  1164. package/dist/commands/down.js.map +1 -1
  1165. package/dist/commands/env.d.ts.map +1 -1
  1166. package/dist/commands/env.js +9 -1
  1167. package/dist/commands/env.js.map +1 -1
  1168. package/dist/commands/export.js +2 -2
  1169. package/dist/commands/export.js.map +1 -1
  1170. package/dist/commands/gateway.d.ts.map +1 -1
  1171. package/dist/commands/gateway.js +23 -3
  1172. package/dist/commands/gateway.js.map +1 -1
  1173. package/dist/commands/health.d.ts.map +1 -1
  1174. package/dist/commands/health.js +13 -1
  1175. package/dist/commands/health.js.map +1 -1
  1176. package/dist/commands/host.d.ts +11 -0
  1177. package/dist/commands/host.d.ts.map +1 -1
  1178. package/dist/commands/host.js +38 -4
  1179. package/dist/commands/host.js.map +1 -1
  1180. package/dist/commands/import.d.ts.map +1 -1
  1181. package/dist/commands/import.js +2 -0
  1182. package/dist/commands/import.js.map +1 -1
  1183. package/dist/commands/mcp.d.ts.map +1 -1
  1184. package/dist/commands/mcp.js +25 -12
  1185. package/dist/commands/mcp.js.map +1 -1
  1186. package/dist/commands/plugin.d.ts.map +1 -1
  1187. package/dist/commands/plugin.js +12 -2
  1188. package/dist/commands/plugin.js.map +1 -1
  1189. package/dist/commands/policy.d.ts.map +1 -1
  1190. package/dist/commands/policy.js +3 -2
  1191. package/dist/commands/policy.js.map +1 -1
  1192. package/dist/commands/project-jev.js +1 -1
  1193. package/dist/commands/project-jev.js.map +1 -1
  1194. package/dist/commands/project.d.ts.map +1 -1
  1195. package/dist/commands/project.js +5 -3
  1196. package/dist/commands/project.js.map +1 -1
  1197. package/dist/commands/ps.d.ts +2 -0
  1198. package/dist/commands/ps.d.ts.map +1 -1
  1199. package/dist/commands/ps.js +109 -37
  1200. package/dist/commands/ps.js.map +1 -1
  1201. package/dist/commands/queue.d.ts +2 -0
  1202. package/dist/commands/queue.d.ts.map +1 -1
  1203. package/dist/commands/queue.js +133 -19
  1204. package/dist/commands/queue.js.map +1 -1
  1205. package/dist/commands/requirements.d.ts.map +1 -1
  1206. package/dist/commands/requirements.js +6 -3
  1207. package/dist/commands/requirements.js.map +1 -1
  1208. package/dist/commands/restore.d.ts.map +1 -1
  1209. package/dist/commands/restore.js +5 -0
  1210. package/dist/commands/restore.js.map +1 -1
  1211. package/dist/commands/rig-mode.d.ts.map +1 -1
  1212. package/dist/commands/rig-mode.js +6 -1
  1213. package/dist/commands/rig-mode.js.map +1 -1
  1214. package/dist/commands/rig.d.ts.map +1 -1
  1215. package/dist/commands/rig.js +20 -20
  1216. package/dist/commands/rig.js.map +1 -1
  1217. package/dist/commands/roster.d.ts +63 -0
  1218. package/dist/commands/roster.d.ts.map +1 -0
  1219. package/dist/commands/roster.js +169 -0
  1220. package/dist/commands/roster.js.map +1 -0
  1221. package/dist/commands/scope.d.ts.map +1 -1
  1222. package/dist/commands/scope.js +22 -0
  1223. package/dist/commands/scope.js.map +1 -1
  1224. package/dist/commands/seat.d.ts.map +1 -1
  1225. package/dist/commands/seat.js +96 -17
  1226. package/dist/commands/seat.js.map +1 -1
  1227. package/dist/commands/send.d.ts.map +1 -1
  1228. package/dist/commands/send.js +20 -6
  1229. package/dist/commands/send.js.map +1 -1
  1230. package/dist/commands/setup.d.ts +1 -1
  1231. package/dist/commands/setup.d.ts.map +1 -1
  1232. package/dist/commands/setup.js +78 -30
  1233. package/dist/commands/setup.js.map +1 -1
  1234. package/dist/commands/slack.d.ts +1 -1
  1235. package/dist/commands/slack.d.ts.map +1 -1
  1236. package/dist/commands/slack.js +57 -5
  1237. package/dist/commands/slack.js.map +1 -1
  1238. package/dist/commands/specs.d.ts.map +1 -1
  1239. package/dist/commands/specs.js +21 -2
  1240. package/dist/commands/specs.js.map +1 -1
  1241. package/dist/commands/start.js +7 -6
  1242. package/dist/commands/start.js.map +1 -1
  1243. package/dist/commands/startup-proof.d.ts.map +1 -1
  1244. package/dist/commands/startup-proof.js +2 -1
  1245. package/dist/commands/startup-proof.js.map +1 -1
  1246. package/dist/commands/status.d.ts.map +1 -1
  1247. package/dist/commands/status.js +7 -0
  1248. package/dist/commands/status.js.map +1 -1
  1249. package/dist/commands/telemetry.d.ts +5 -0
  1250. package/dist/commands/telemetry.d.ts.map +1 -0
  1251. package/dist/commands/telemetry.js +58 -0
  1252. package/dist/commands/telemetry.js.map +1 -0
  1253. package/dist/commands/terminal.d.ts.map +1 -1
  1254. package/dist/commands/terminal.js +5 -1
  1255. package/dist/commands/terminal.js.map +1 -1
  1256. package/dist/commands/transcript.js +5 -3
  1257. package/dist/commands/transcript.js.map +1 -1
  1258. package/dist/commands/tui.js +4 -4
  1259. package/dist/commands/tui.js.map +1 -1
  1260. package/dist/commands/up.d.ts +8 -0
  1261. package/dist/commands/up.d.ts.map +1 -1
  1262. package/dist/commands/up.js +193 -72
  1263. package/dist/commands/up.js.map +1 -1
  1264. package/dist/commands/walk.d.ts.map +1 -1
  1265. package/dist/commands/walk.js +3 -0
  1266. package/dist/commands/walk.js.map +1 -1
  1267. package/dist/commands/whoami.d.ts +3 -0
  1268. package/dist/commands/whoami.d.ts.map +1 -1
  1269. package/dist/commands/whoami.js +29 -2
  1270. package/dist/commands/whoami.js.map +1 -1
  1271. package/dist/commands/workflow-follow.d.ts +2 -0
  1272. package/dist/commands/workflow-follow.d.ts.map +1 -1
  1273. package/dist/commands/workflow-follow.js +6 -4
  1274. package/dist/commands/workflow-follow.js.map +1 -1
  1275. package/dist/commands/workflow.d.ts.map +1 -1
  1276. package/dist/commands/workflow.js +2 -4
  1277. package/dist/commands/workflow.js.map +1 -1
  1278. package/dist/commands/workspace.d.ts.map +1 -1
  1279. package/dist/commands/workspace.js +2 -4
  1280. package/dist/commands/workspace.js.map +1 -1
  1281. package/dist/config-store.d.ts +7 -1
  1282. package/dist/config-store.d.ts.map +1 -1
  1283. package/dist/config-store.js +40 -7
  1284. package/dist/config-store.js.map +1 -1
  1285. package/dist/daemon-auto-start.d.ts +8 -0
  1286. package/dist/daemon-auto-start.d.ts.map +1 -0
  1287. package/dist/daemon-auto-start.js +39 -0
  1288. package/dist/daemon-auto-start.js.map +1 -0
  1289. package/dist/daemon-lifecycle.d.ts +9 -0
  1290. package/dist/daemon-lifecycle.d.ts.map +1 -1
  1291. package/dist/daemon-lifecycle.js +61 -19
  1292. package/dist/daemon-lifecycle.js.map +1 -1
  1293. package/dist/daemon-reachability.d.ts +18 -0
  1294. package/dist/daemon-reachability.d.ts.map +1 -0
  1295. package/dist/daemon-reachability.js +48 -0
  1296. package/dist/daemon-reachability.js.map +1 -0
  1297. package/dist/front-door.d.ts.map +1 -1
  1298. package/dist/front-door.js +3 -2
  1299. package/dist/front-door.js.map +1 -1
  1300. package/dist/index.d.ts +1 -0
  1301. package/dist/index.d.ts.map +1 -1
  1302. package/dist/index.js +4 -0
  1303. package/dist/index.js.map +1 -1
  1304. package/dist/lib/bundle-check.d.ts +13 -0
  1305. package/dist/lib/bundle-check.d.ts.map +1 -0
  1306. package/dist/lib/bundle-check.js +191 -0
  1307. package/dist/lib/bundle-check.js.map +1 -0
  1308. package/dist/lib/bundle-configuration.d.ts +60 -0
  1309. package/dist/lib/bundle-configuration.d.ts.map +1 -0
  1310. package/dist/lib/bundle-configuration.js +198 -0
  1311. package/dist/lib/bundle-configuration.js.map +1 -0
  1312. package/dist/lib/bundle-source.d.ts +57 -0
  1313. package/dist/lib/bundle-source.d.ts.map +1 -0
  1314. package/dist/lib/bundle-source.js +355 -0
  1315. package/dist/lib/bundle-source.js.map +1 -0
  1316. package/dist/lib/context-install.d.ts.map +1 -1
  1317. package/dist/lib/context-install.js +2 -3
  1318. package/dist/lib/context-install.js.map +1 -1
  1319. package/dist/lib/file-transfer.d.ts +1 -1
  1320. package/dist/lib/file-transfer.d.ts.map +1 -1
  1321. package/dist/lib/file-transfer.js +17 -5
  1322. package/dist/lib/file-transfer.js.map +1 -1
  1323. package/dist/lib/permission-policy/policy-ref.d.ts +6 -1
  1324. package/dist/lib/permission-policy/policy-ref.d.ts.map +1 -1
  1325. package/dist/lib/permission-policy/policy-ref.js +16 -4
  1326. package/dist/lib/permission-policy/policy-ref.js.map +1 -1
  1327. package/dist/lib/permission-policy/policy-spec.d.ts +1 -1
  1328. package/dist/lib/permission-policy/policy-spec.d.ts.map +1 -1
  1329. package/dist/lib/permission-policy/policy-spec.js +2 -2
  1330. package/dist/lib/permission-policy/policy-spec.js.map +1 -1
  1331. package/dist/lib/scope/mission-composition.d.ts.map +1 -1
  1332. package/dist/lib/scope/mission-composition.js +11 -0
  1333. package/dist/lib/scope/mission-composition.js.map +1 -1
  1334. package/dist/lib/scope/scaffold-placeholder.d.ts +4 -4
  1335. package/dist/lib/scope/scaffold-placeholder.d.ts.map +1 -1
  1336. package/dist/lib/scope/scaffold-placeholder.js +4 -4
  1337. package/dist/lib/scope/scaffold-placeholder.js.map +1 -1
  1338. package/dist/lib/scope/scope-fs.d.ts.map +1 -1
  1339. package/dist/lib/scope/scope-fs.js +10 -16
  1340. package/dist/lib/scope/scope-fs.js.map +1 -1
  1341. package/dist/lib/scope/templates.d.ts.map +1 -1
  1342. package/dist/lib/scope/templates.js +1 -0
  1343. package/dist/lib/scope/templates.js.map +1 -1
  1344. package/dist/lib/scope-templates/notes.md +1 -1
  1345. package/dist/lib/scope-templates/slice-progress.md +11 -7
  1346. package/dist/lib/work-install.d.ts +12 -0
  1347. package/dist/lib/work-install.d.ts.map +1 -1
  1348. package/dist/lib/work-install.js +55 -4
  1349. package/dist/lib/work-install.js.map +1 -1
  1350. package/dist/restore-packet/claude-transcript-parser.d.ts.map +1 -1
  1351. package/dist/restore-packet/claude-transcript-parser.js +2 -0
  1352. package/dist/restore-packet/claude-transcript-parser.js.map +1 -1
  1353. package/dist/restore-packet/codex-jsonl-parser.d.ts.map +1 -1
  1354. package/dist/restore-packet/codex-jsonl-parser.js +2 -0
  1355. package/dist/restore-packet/codex-jsonl-parser.js.map +1 -1
  1356. package/dist/restore-packet/runtime-detect.d.ts.map +1 -1
  1357. package/dist/restore-packet/runtime-detect.js +2 -0
  1358. package/dist/restore-packet/runtime-detect.js.map +1 -1
  1359. package/package.json +4 -3
  1360. package/tui/dist/attention/source-continuity.d.ts.map +1 -1
  1361. package/tui/dist/attention/source-continuity.js +5 -3
  1362. package/tui/dist/attention/source-continuity.js.map +1 -1
  1363. package/tui/dist/commands/registry.d.ts.map +1 -1
  1364. package/tui/dist/commands/registry.js +8 -3
  1365. package/tui/dist/commands/registry.js.map +1 -1
  1366. package/tui/dist/daemon-client.d.ts +3 -1
  1367. package/tui/dist/daemon-client.d.ts.map +1 -1
  1368. package/tui/dist/daemon-client.js +18 -6
  1369. package/tui/dist/daemon-client.js.map +1 -1
  1370. package/tui/dist/execution/execution-model.d.ts.map +1 -1
  1371. package/tui/dist/execution/execution-model.js +19 -7
  1372. package/tui/dist/execution/execution-model.js.map +1 -1
  1373. package/tui/dist/grammar.d.ts.map +1 -1
  1374. package/tui/dist/grammar.js +3 -2
  1375. package/tui/dist/grammar.js.map +1 -1
  1376. package/tui/dist/health/health-model.d.ts.map +1 -1
  1377. package/tui/dist/health/health-model.js +17 -5
  1378. package/tui/dist/health/health-model.js.map +1 -1
  1379. package/tui/dist/hydrate.d.ts.map +1 -1
  1380. package/tui/dist/hydrate.js +1 -0
  1381. package/tui/dist/hydrate.js.map +1 -1
  1382. package/tui/dist/input.d.ts.map +1 -1
  1383. package/tui/dist/input.js +5 -0
  1384. package/tui/dist/input.js.map +1 -1
  1385. package/tui/dist/live-events.d.ts +2 -2
  1386. package/tui/dist/live-events.d.ts.map +1 -1
  1387. package/tui/dist/live-events.js +65 -27
  1388. package/tui/dist/live-events.js.map +1 -1
  1389. package/tui/dist/local-reading.d.ts.map +1 -1
  1390. package/tui/dist/local-reading.js +2 -0
  1391. package/tui/dist/local-reading.js.map +1 -1
  1392. package/tui/dist/main.js +46 -6
  1393. package/tui/dist/main.js.map +1 -1
  1394. package/tui/dist/page-read.d.ts.map +1 -1
  1395. package/tui/dist/page-read.js +4 -1
  1396. package/tui/dist/page-read.js.map +1 -1
  1397. package/tui/dist/render.d.ts +2 -0
  1398. package/tui/dist/render.d.ts.map +1 -1
  1399. package/tui/dist/render.js +81 -23
  1400. package/tui/dist/render.js.map +1 -1
  1401. package/tui/dist/scopes/scopes-model.d.ts.map +1 -1
  1402. package/tui/dist/scopes/scopes-model.js +36 -31
  1403. package/tui/dist/scopes/scopes-model.js.map +1 -1
  1404. package/tui/dist/socket-server.d.ts +6 -2
  1405. package/tui/dist/socket-server.d.ts.map +1 -1
  1406. package/tui/dist/socket-server.js +159 -14
  1407. package/tui/dist/socket-server.js.map +1 -1
  1408. package/tui/dist/specs/graph.d.ts +5 -0
  1409. package/tui/dist/specs/graph.d.ts.map +1 -0
  1410. package/tui/dist/specs/graph.js +16 -0
  1411. package/tui/dist/specs/graph.js.map +1 -0
  1412. package/tui/dist/specs/launch.d.ts +29 -0
  1413. package/tui/dist/specs/launch.d.ts.map +1 -0
  1414. package/tui/dist/specs/launch.js +64 -0
  1415. package/tui/dist/specs/launch.js.map +1 -0
  1416. package/tui/dist/startup.d.ts.map +1 -1
  1417. package/tui/dist/startup.js +15 -6
  1418. package/tui/dist/startup.js.map +1 -1
  1419. package/tui/dist/state.d.ts +2 -2
  1420. package/tui/dist/state.d.ts.map +1 -1
  1421. package/tui/dist/state.js +41 -18
  1422. package/tui/dist/state.js.map +1 -1
  1423. package/tui/dist/terminals/terminal-model.d.ts +1 -0
  1424. package/tui/dist/terminals/terminal-model.d.ts.map +1 -1
  1425. package/tui/dist/terminals/terminal-model.js +19 -2
  1426. package/tui/dist/terminals/terminal-model.js.map +1 -1
  1427. package/tui/dist/types.d.ts +35 -0
  1428. package/tui/dist/types.d.ts.map +1 -1
  1429. package/ui/dist/assets/{index-N-SdPj-I.css → index-DNU3XZr_.css} +1 -1
  1430. package/ui/dist/assets/{index-BVW54ItO.js → index-HHSvwF97.js} +75 -75
  1431. package/ui/dist/index.html +2 -2
  1432. package/daemon/specs/rigs/launch/conveyor/README.md +0 -33
  1433. package/daemon/specs/rigs/launch/conveyor/rig.yaml +0 -72
  1434. package/daemon/specs/rigs/launch/demo/project-example/README.md +0 -25
  1435. package/daemon/specs/rigs/launch/demo/project-example/missions/improve-onboarding/SPEC.md +0 -19
  1436. package/daemon/specs/rigs/launch/demo/project-example/missions/improve-onboarding/slices/01-shorten-first-run/PROGRESS.md +0 -6
  1437. package/daemon/specs/rigs/launch/demo/project-example/missions/improve-onboarding/slices/01-shorten-first-run/PROOF.md +0 -7
  1438. package/daemon/specs/rigs/launch/demo/project-example/missions/improve-onboarding/slices/01-shorten-first-run/SPEC.md +0 -31
  1439. package/daemon/specs/rigs/launch/first-project/rig.yaml +0 -31
  1440. package/daemon/specs/rigs/launch/first-project-claude/rig.yaml +0 -30
  1441. package/daemon/specs/rigs/launch/implementation-pair/rig.yaml +0 -27
  1442. package/daemon/specs/rigs/preview/product-team/rig.yaml +0 -90
  1443. /package/daemon/specs/rigs/launch/factory-rsi/{rig.yaml → world-bundle.yaml} +0 -0
@@ -9,12 +9,14 @@ import { lastMeaningfulTransition, readWaitingView } from "./queue-waiting.js";
9
9
  import { wrapPaneEnvelope } from "../lib/pane-envelope.js";
10
10
  import { getSelfHostId } from "./hosts/fanout-contract.js";
11
11
  import { parseSessionName, isHumanSeatSessionRef } from "./session-name.js";
12
+ import { parseReplyToChoice, formatReplyToChoice, describeReplyToFallback, REPLY_TO_CHOICE_ACTOR } from "./reply-to-choice.js";
12
13
  import { classifyDestination } from "./gateway/destination-resolver.js";
13
14
  import { computeClosureRequiredAt, validateClosure, } from "./hot-potato-enforcer.js";
14
15
  import { isHumanSeatSession, validateHumanPark, validateHumanRoute } from "./human-route-enforcer.js";
15
16
  import { QueueWakeRepository, USAGE_LIMIT_BLOCKER_TAG, } from "./queue-wake-repository.js";
16
17
  import { WatchdogJobsRepository } from "./watchdog-jobs-repository.js";
17
18
  import { armQueueWait, backOffQueueWait, refreshQueueWaits, evaluateQueueWait, retargetQueueWait, isQueueWait } from "./queue-wait-backoff.js";
19
+ import { parseHumanQuestions, unansweredQuestions } from "./human-questions.js";
18
20
  export const QUEUE_STATES = [
19
21
  "pending",
20
22
  "in-progress",
@@ -44,6 +46,19 @@ export const ACTIVE_QUEUE_STATES = ["pending", "in-progress", "blocked"];
44
46
  export function isBlockerLive(state) {
45
47
  return ACTIVE_QUEUE_STATES.includes(state);
46
48
  }
49
+ /** #96 — a Slack reply routes to the item that owns the thread root, so a later update may
50
+ * share that thread only while no reply there could answer a human decision. Deliberately
51
+ * BROADER than what makeHumanReplyResolver resolves today (it errs toward posting top-level): any
52
+ * active human-destined decision, or a row blocked on any human-class seat right now. A
53
+ * resolved park returns to in-progress; blocked_on alone (which the resolve verb documents
54
+ * keeping as provenance) is never a live gate. */
55
+ export function hasLiveHumanGate(item) {
56
+ if (item.humanIntent === "update")
57
+ return false;
58
+ if (item.state === "blocked" && item.blockedOn && isHumanSeatSessionRef(item.blockedOn))
59
+ return true;
60
+ return isBlockerLive(item.state) && isHumanSeatSessionRef(item.destinationSession);
61
+ }
47
62
  const AUTO_UNPARK_WAKE_TAG = "queue:auto-unpark:blocker";
48
63
  const AUTO_UNPARK_BLOCKER_TAG_PREFIX = "queue:auto-unpark:blocker-ref:";
49
64
  /** 0.5.1-53 Atom 1a — typed non-qitem gate blocker prefixes. A park may be gated on a fold / auth /
@@ -284,6 +299,7 @@ export class QueueRepository {
284
299
  db;
285
300
  transitionLog;
286
301
  eventBus;
302
+ destinationAdvisory;
287
303
  validateRig;
288
304
  transport;
289
305
  /** W1 (transactional closure): the durable wake-intent store. A terminal act
@@ -313,10 +329,13 @@ export class QueueRepository {
313
329
  hasTargetRepoColumn;
314
330
  hasSummaryColumn;
315
331
  hasHumanIntentColumn;
332
+ hasReplyToColumn;
333
+ hasHumanQuestionsColumn;
316
334
  hasEvidenceRefColumn;
317
335
  hasMintingGenColumn;
318
336
  hasClaimedGenColumn;
319
337
  hasQueueTransitionsTable;
338
+ hasTransitionProvenanceColumn;
320
339
  hasOwnerNotificationColumns;
321
340
  loadHumanRegistryFn;
322
341
  /** OPR.0.4.6.WF3 FR-6 — injected by startup (never imported): the
@@ -328,6 +347,7 @@ export class QueueRepository {
328
347
  this.transitionLog = new QueueTransitionLog(db);
329
348
  this.wakeRepo = new QueueWakeRepository(db);
330
349
  this.validateRig = opts?.validateRig ?? (() => true);
350
+ this.destinationAdvisory = opts?.destinationAdvisory ?? (() => null);
331
351
  this.transport = opts?.transport;
332
352
  this.workflowFrontierPredicate = opts?.workflowFrontierPredicate;
333
353
  this.resolveOccupantGeneration = opts?.resolveOccupantGeneration;
@@ -335,11 +355,14 @@ export class QueueRepository {
335
355
  this.hasTargetRepoColumn = detectQueueColumn(db, "target_repo");
336
356
  this.hasSummaryColumn = detectQueueColumn(db, "summary");
337
357
  this.hasHumanIntentColumn = detectQueueColumn(db, "human_intent");
358
+ this.hasReplyToColumn = detectQueueColumn(db, "reply_to");
359
+ this.hasHumanQuestionsColumn = detectQueueColumn(db, "human_questions");
338
360
  this.hasEvidenceRefColumn = detectQueueColumn(db, "evidence_ref");
339
361
  this.hasQueueTransitionsTable = detectTable(db, "queue_transitions");
340
362
  const transitionColumns = this.hasQueueTransitionsTable
341
363
  ? new Set(db.prepare("PRAGMA table_info(queue_transitions)").all().map((column) => column.name))
342
364
  : new Set();
365
+ this.hasTransitionProvenanceColumn = transitionColumns.has("identity_provenance");
343
366
  this.hasOwnerNotificationColumns = transitionColumns.has("owner_notification_kind")
344
367
  && transitionColumns.has("owner_notification_level");
345
368
  // GHOST-STAGE (e/Class-B): generation stamps (migration 063). Defensive detect so a pre-063
@@ -501,7 +524,7 @@ export class QueueRepository {
501
524
  deliverWakeIntentAfterCommit(outboxId) {
502
525
  queueMicrotask(() => {
503
526
  void this.deliverWakeIntent(outboxId).catch((err) => {
504
- console.error(`Auto-unpark wake delivery failed for ${outboxId}:`, err);
527
+ console.error(`Queue wake delivery failed for ${outboxId}:`, err);
505
528
  });
506
529
  });
507
530
  }
@@ -925,7 +948,22 @@ export class QueueRepository {
925
948
  if (!this.validateRig(input.destinationSession)) {
926
949
  throw destinationValidationError("destination_session", input.destinationSession, this.loadHumanRegistryFn);
927
950
  }
928
- const txn = this.db.transaction(() => this.createInTransactionalContext(input));
951
+ let wakeStaged = false;
952
+ const txn = this.db.transaction(() => {
953
+ const created = this.createInTransactionalContext(input);
954
+ if (this.outbox && input.nudge !== false) {
955
+ try {
956
+ // A savepoint removes any partial intent when staging fails, while
957
+ // preserving ordinary create's existing acceptance of the task.
958
+ this.db.transaction(() => this.stageWakeIntent(created.qitemId, input.sourceSession, input.destinationSession, input.identityProvenance ?? null, input.nudge))();
959
+ wakeStaged = true;
960
+ }
961
+ catch (err) {
962
+ this.recordNudgeAttempt(created.qitemId, `failed:wake not retained: ${err instanceof Error ? err.message : String(err)}`);
963
+ }
964
+ }
965
+ return created;
966
+ });
929
967
  let id;
930
968
  let persistedEvent;
931
969
  try {
@@ -945,6 +983,18 @@ export class QueueRepository {
945
983
  if (existing) {
946
984
  if (existing.destinationSession === input.destinationSession &&
947
985
  existing.sourceSession === input.sourceSession) {
986
+ // Keep retry compatibility, but never imply that an absorbed,
987
+ // different body was saved. Decide at the actual PK conflict,
988
+ // rather than comparing a fresh create's post-nudge readback.
989
+ if (existing.body !== input.body) {
990
+ return {
991
+ ...existing,
992
+ createWarning: {
993
+ code: "qitem_body_not_saved",
994
+ message: `qitem ${input.qitemId} already exists with a different body. The supplied body was not saved; the existing row is returned unchanged. No new work or delivery was created.`,
995
+ },
996
+ };
997
+ }
948
998
  return existing;
949
999
  }
950
1000
  throw new QueueRepositoryError("qitem_id_reuse", `qitem ${input.qitemId} already exists with a different destination/source — id reuse is a caller bug, not an idempotent retry`, {
@@ -957,7 +1007,17 @@ export class QueueRepository {
957
1007
  throw err;
958
1008
  }
959
1009
  this.eventBus.notifySubscribers(persistedEvent);
960
- await this.maybeNudge(id, input.destinationSession, input.nudge, input.sourceSession);
1010
+ // The receipt acknowledges persistence, not terminal delivery. The intent
1011
+ // survives a crash before the scheduled wake if staging succeeded. A staging
1012
+ // failure is recorded on the row; callers without an outbox retain their
1013
+ // existing best-effort path without claiming durability.
1014
+ if (this.outbox) {
1015
+ if (wakeStaged)
1016
+ this.deliverWakeIntentAfterCommit(`${WAKE_INTENT_PREFIX}${id}`);
1017
+ }
1018
+ else {
1019
+ await this.maybeNudge(id, input.destinationSession, input.nudge, input.sourceSession);
1020
+ }
961
1021
  return this.getByIdOrThrow(id);
962
1022
  }
963
1023
  /**
@@ -1029,6 +1089,24 @@ export class QueueRepository {
1029
1089
  if (!this.hasHumanIntentColumn)
1030
1090
  throw new QueueRepositoryError("invalid_human_notification", "Human notification fields require the current queue schema; they were not saved.");
1031
1091
  }
1092
+ if (input.replyTo != null)
1093
+ this.validateReplyTo(input.replyTo, input.humanIntent);
1094
+ let humanQuestions = null;
1095
+ if (input.humanQuestions != null) {
1096
+ if (!isHumanSeatSessionRef(input.destinationSession)) {
1097
+ throw new QueueRepositoryError("invalid_human_questions", "humanQuestions require a human destination: only a human can click the options.");
1098
+ }
1099
+ // Omitted intent is a decision (legacy behavior), so it may carry questions too.
1100
+ if (input.humanIntent === "update") {
1101
+ throw new QueueRepositoryError("invalid_human_questions", "humanQuestions are refused on an update: they ask the human to decide. Use humanIntent decision.");
1102
+ }
1103
+ const parsed = parseHumanQuestions(input.humanQuestions);
1104
+ if (!parsed.ok)
1105
+ throw new QueueRepositoryError("invalid_human_questions", parsed.error);
1106
+ if (!this.hasHumanQuestionsColumn)
1107
+ throw new QueueRepositoryError("invalid_human_questions", "humanQuestions require the current queue schema; they were not saved.");
1108
+ humanQuestions = parsed.questions;
1109
+ }
1032
1110
  const id = input.qitemId ?? newQitemId();
1033
1111
  const ts = new Date().toISOString();
1034
1112
  const priority = input.priority ?? "routine";
@@ -1061,6 +1139,12 @@ export class QueueRepository {
1061
1139
  this.db.prepare("UPDATE queue_items SET human_intent = ?, human_detail = ? WHERE qitem_id = ?")
1062
1140
  .run(input.humanIntent ?? null, input.humanDetail ?? null, id);
1063
1141
  }
1142
+ if (input.replyTo != null) {
1143
+ this.db.prepare("UPDATE queue_items SET reply_to = ? WHERE qitem_id = ?").run(input.replyTo, id);
1144
+ }
1145
+ if (humanQuestions) {
1146
+ this.db.prepare("UPDATE queue_items SET human_questions = ? WHERE qitem_id = ?").run(JSON.stringify(humanQuestions), id);
1147
+ }
1064
1148
  this.persistMintingGeneration(id, input.sourceSession);
1065
1149
  const notification = this.classifyOwnerNotification({
1066
1150
  action: "create",
@@ -1088,6 +1172,17 @@ export class QueueRepository {
1088
1172
  });
1089
1173
  return { qitemId: id, persistedEvent };
1090
1174
  }
1175
+ validateReplyTo(replyTo, humanIntent) {
1176
+ if (humanIntent !== "update") {
1177
+ throw new QueueRepositoryError("reply_to_requires_update", "replyTo is accepted only with humanIntent update; a decision keeps its own thread so its reply stays unambiguous.");
1178
+ }
1179
+ if (!this.hasReplyToColumn)
1180
+ throw new QueueRepositoryError("invalid_human_notification", "replyTo requires the current queue schema; it was not saved.");
1181
+ if (!this.getById(replyTo))
1182
+ throw new QueueRepositoryError("reply_to_not_found", `replyTo names no qitem on this host: ${replyTo}.`);
1183
+ // An item with a live human gate or no usable root is not refused here: delivery posts
1184
+ // the update top-level and records why (deriveReplyToChoice in slack-subsystem).
1185
+ }
1091
1186
  /**
1092
1187
  * Transactional handoff: close the source qitem (state=done,
1093
1188
  * closure_reason=handed_off_to) and create a new qitem owned by `toSession`,
@@ -1226,9 +1321,10 @@ export class QueueRepository {
1226
1321
  for (const e of events) {
1227
1322
  this.eventBus.notifySubscribers(e.payload);
1228
1323
  }
1229
- // W1-b: deliver the just-committed wake intent (marking it), or the pre-W1
1230
- // best-effort nudge when no intent store is attached. Post-commit only.
1231
- await this.deliverWakeForSuccessor(newId, input.toSession, input.nudge, input.fromSession);
1324
+ // Closure and successor are persisted. Delivery is separate and recoverable
1325
+ // from the committed intent; a slow terminal must not hold the receipt.
1326
+ if (input.nudge !== false)
1327
+ this.deliverWakeIntentAfterCommit(`${WAKE_INTENT_PREFIX}${newId}`);
1232
1328
  return {
1233
1329
  closed: this.getByIdOrThrow(source.qitemId),
1234
1330
  created: this.getByIdOrThrow(newId),
@@ -1369,9 +1465,9 @@ export class QueueRepository {
1369
1465
  for (const e of events) {
1370
1466
  this.eventBus.notifySubscribers(e.payload);
1371
1467
  }
1372
- // W1-b: deliver the just-committed wake intent (marking it), or the pre-W1
1373
- // best-effort nudge when no intent store is attached. Post-commit only.
1374
- await this.deliverWakeForSuccessor(newId, input.toSession, input.nudge, input.fromSession);
1468
+ // Return the persisted closure and successor without awaiting terminal delivery.
1469
+ if (input.nudge !== false)
1470
+ this.deliverWakeIntentAfterCommit(`${WAKE_INTENT_PREFIX}${newId}`);
1375
1471
  return {
1376
1472
  closed: this.getByIdOrThrow(source.qitemId),
1377
1473
  created: this.getByIdOrThrow(newId),
@@ -1852,7 +1948,7 @@ export class QueueRepository {
1852
1948
  if (effectiveBlockedOn.startsWith("qitem-")) {
1853
1949
  const blocker = this.getById(effectiveBlockedOn);
1854
1950
  if (!blocker) {
1855
- throw new QueueRepositoryError("blocker_not_found", `blocked_on names a qitem that does not exist: ${effectiveBlockedOn}. A park must name a real, live blocker — a nonexistent blocker can never complete, so the row could never unpark.`,
1951
+ throw new QueueRepositoryError("blocker_not_found", `blocked_on names a qitem that does not exist on this daemon: ${effectiveBlockedOn}. A qitem absent from this daemon cannot be a live blocker here. If it is stored on another host, use a typed gate such as external:<host>/<id> with --wake-watchdog or --wake-after.`,
1856
1952
  // F1 (error-honesty): the rejected value is named rejectedBlocker — an error payload
1857
1953
  // never carries the success-shaped blockedOn field (the field-filtered-misread class).
1858
1954
  { rejectedBlocker: effectiveBlockedOn });
@@ -1902,7 +1998,9 @@ export class QueueRepository {
1902
1998
  }
1903
1999
  const oldWake = this.wakeRepo.getStatus(input.qitemId);
1904
2000
  const job = armQueueWait(this.db, jobsRepo, {
1905
- previousJobId: oldWake?.kind === "timer" ? oldWake.ref : undefined,
2001
+ // Reusing a shared job would rewrite the attachment's schedule and packet.
2002
+ previousJobId: oldWake?.kind === "timer" && this.wakeRepo.findLiveQitemsByAttachedWatchdog(oldWake.ref).length === 0
2003
+ ? oldWake.ref : undefined,
1906
2004
  qitemId: input.qitemId, blocker: effectiveBlockedOn,
1907
2005
  evidence: input.wakeProgressEvidence,
1908
2006
  initialSeconds: input.wakeAfterSeconds, maxSeconds: input.wakeMaxSeconds,
@@ -2092,6 +2190,10 @@ export class QueueRepository {
2092
2190
  const armed = this.wakeRepo.getStatus(qitemId);
2093
2191
  if (armed?.kind !== "timer" || !armed.live)
2094
2192
  return;
2193
+ // An explicit --wake-watchdog attachment gives another continuation custody
2194
+ // of this same job. The timer row's exit cannot cancel that attachment.
2195
+ if (this.wakeRepo.findLiveQitemsByAttachedWatchdog(armed.ref).length > 0)
2196
+ return;
2095
2197
  (this.watchdogJobsRepo ?? new WatchdogJobsRepository(this.db)).markTerminal(armed.ref, reason);
2096
2198
  }
2097
2199
  propagateBlockerCompletion(input) {
@@ -2172,23 +2274,13 @@ export class QueueRepository {
2172
2274
  currentParkTimerIds() {
2173
2275
  return this.wakeRepo.currentParkTimerIds();
2174
2276
  }
2175
- /** Refuse a legacy park-generated timer only when every row bound to it is
2176
- * terminal. Current exits retire these timers transactionally; this is the
2177
- * delivery-seam backstop for residue persisted by an older daemon. A timer
2178
- * still bound to any actionable row, and every operator-attached watchdog,
2179
- * remains deliverable. */
2277
+ /** Generated jobs end when neither their original park nor an unfired
2278
+ * attachment still owns them. Standalone operator jobs keep their lifecycle. */
2180
2279
  resolveWatchdogPreDeliveryTerminalReason(jobId) {
2181
2280
  const targets = this.wakeRepo.findQitemsByGeneratedTimer(jobId);
2182
- if (targets.length === 0 || targets.some(({ state }) => !isTerminalState(state)))
2281
+ if (targets.length === 0 || this.wakeRepo.findCurrentQitemsByGeneratedTimer(jobId).length > 0)
2183
2282
  return null;
2184
- // Ownership, not just staleness. This backstop may retire a job only when
2185
- // the job is SOLELY a park-generated timer. `--wake-watchdog` can attach an
2186
- // operator row to the very job another row's `--wake-after` produced, and
2187
- // that is a supported path — so a shared job carries a second, watchdog-kind
2188
- // binding this reason has no authority over. The timer's rows being terminal
2189
- // says nothing about the attachment; claiming the job anyway terminals it
2190
- // before transport and the attachment can never wake.
2191
- if (this.wakeRepo.findQitemsByAttachedWatchdog(jobId).length > 0)
2283
+ if (this.wakeRepo.findLiveQitemsByAttachedWatchdog(jobId).length > 0)
2192
2284
  return null;
2193
2285
  return "park_timer_target_terminal";
2194
2286
  }
@@ -2208,9 +2300,11 @@ export class QueueRepository {
2208
2300
  * audited. The queue transition records that attempt independently of
2209
2301
  * whether the HELD row's owner consumed it. */
2210
2302
  recordWatchdogWakeAttempt(jobId, deliveryStatus) {
2211
- const targets = this.wakeRepo.findBlockedQitemsByWatchdog(jobId);
2212
- if (targets.length === 0)
2303
+ const bindings = this.wakeRepo.findBlockedQitemsByWatchdog(jobId);
2304
+ if (bindings.length === 0)
2213
2305
  return;
2306
+ // Both receipt ownership and timer lifecycle follow the current park.
2307
+ const targets = this.wakeRepo.findBlockedQitemsByWatchdog(jobId, true);
2214
2308
  const recordFired = ({ qitemId, kind }) => {
2215
2309
  const transition = this.transitionLog.append({
2216
2310
  qitemId,
@@ -2248,7 +2342,7 @@ export class QueueRepository {
2248
2342
  // behaviour is UNCHANGED by this repair and pinned as unchanged. This widens
2249
2343
  // the same act to ordinary park timers, without their blocker resolution —
2250
2344
  // resolving the blocker is a provider-limit outcome, not a timer one.
2251
- const parkGeneratedTimer = targets.some(({ kind }) => kind === "timer");
2345
+ const parkGeneratedTimer = this.wakeRepo.findCurrentQitemsByGeneratedTimer(jobId).length > 0;
2252
2346
  const events = this.db.transaction(() => {
2253
2347
  const firedEvents = targets.map(recordFired);
2254
2348
  if (deliveryStatus === "retained")
@@ -2272,6 +2366,38 @@ export class QueueRepository {
2272
2366
  for (const event of events)
2273
2367
  this.eventBus.notifySubscribers(event);
2274
2368
  }
2369
+ /**
2370
+ * #193 — record one clicked answer on a pending decision that carries structured questions.
2371
+ * Only the decision's own human may answer, and only while it is pending. A click may change
2372
+ * an earlier answer until the set is complete; from then on the answers are FINAL, and any
2373
+ * further click returns them unchanged so the caller can retry the continuation (reply row +
2374
+ * resolve) with exactly what the seat will read. Anything else is not-applicable (a forged
2375
+ * id, a stranger, a decision already resolved), never an error the socket must retry.
2376
+ */
2377
+ recordHumanAnswer(input) {
2378
+ if (!this.hasHumanQuestionsColumn)
2379
+ return { status: "not-applicable", reason: "schema" };
2380
+ return this.db.transaction(() => {
2381
+ const item = this.getById(input.qitemId);
2382
+ if (!item?.humanQuestions?.length)
2383
+ return { status: "not-applicable", reason: "no-questions" };
2384
+ if (item.state !== "pending")
2385
+ return { status: "not-applicable", reason: `state-${item.state}` };
2386
+ if (item.destinationSession !== input.actorSession)
2387
+ return { status: "not-applicable", reason: "not-the-asked-human" };
2388
+ const question = item.humanQuestions.find((q) => q.id === input.questionId);
2389
+ if (!question?.options.some((o) => o.id === input.optionId))
2390
+ return { status: "not-applicable", reason: "unknown-option" };
2391
+ const recorded = item.humanAnswers ?? {};
2392
+ if (unansweredQuestions(item.humanQuestions, recorded).length === 0) {
2393
+ return { status: "recorded", answers: recorded, complete: true, questions: item.humanQuestions };
2394
+ }
2395
+ const answers = { ...(item.humanAnswers ?? {}), [input.questionId]: input.optionId };
2396
+ this.db.prepare("UPDATE queue_items SET human_answers = ? WHERE qitem_id = ?").run(JSON.stringify(answers), input.qitemId);
2397
+ const complete = unansweredQuestions(item.humanQuestions, answers).length === 0;
2398
+ return { status: "recorded", answers, complete, questions: item.humanQuestions };
2399
+ })();
2400
+ }
2275
2401
  getById(qitemId) {
2276
2402
  const row = this.db
2277
2403
  .prepare("SELECT * FROM queue_items WHERE qitem_id = ?")
@@ -2286,8 +2412,36 @@ export class QueueRepository {
2286
2412
  ...item,
2287
2413
  deliveryOutcome: ledger?.outcome ?? null,
2288
2414
  ...(ledger && ledger.outcome !== "posted" ? { deliveryFailureDetail: ledger.detail } : {}),
2415
+ ...(item.replyTo ? { replyToFallback: this.replyToFallbackFor(item.qitemId) } : {}),
2289
2416
  };
2290
2417
  }
2418
+ /** #96 — the thread choice the daemon recorded before this replyTo update's first post;
2419
+ * null = not yet chosen. Only an in-process daemon write counts: any HTTP write carries an
2420
+ * identity provenance (and its actor is caller-asserted), so a note from there could forge
2421
+ * a thread and is ignored. */
2422
+ replyToChoiceFor(qitemId) {
2423
+ for (const t of this.transitionLog.listForQitem(qitemId).reverse()) {
2424
+ if (t.actorSession !== REPLY_TO_CHOICE_ACTOR || t.identityProvenance !== null)
2425
+ continue;
2426
+ const choice = parseReplyToChoice(t.transitionNote ?? "");
2427
+ if (choice)
2428
+ return choice;
2429
+ }
2430
+ return null;
2431
+ }
2432
+ /** #96 — whether some update recorded this Slack root as the thread it posts into. Such a
2433
+ * root is shared: its owner's next decision must not reuse it (see slack-subsystem). */
2434
+ isReplyToThread(threadTs) {
2435
+ if (!this.hasQueueTransitionsTable)
2436
+ return false;
2437
+ // Same trust rule as replyToChoiceFor: a pre-provenance schema reads every row as null.
2438
+ const provenance = this.hasTransitionProvenanceColumn ? " AND identity_provenance IS NULL" : "";
2439
+ return this.db.prepare(`SELECT 1 FROM queue_transitions WHERE transition_note = ? AND actor_session = ?${provenance} LIMIT 1`).get(formatReplyToChoice({ kind: "thread", threadTs }), REPLY_TO_CHOICE_ACTOR) !== undefined;
2440
+ }
2441
+ replyToFallbackFor(qitemId) {
2442
+ const choice = this.replyToChoiceFor(qitemId);
2443
+ return choice?.kind === "fallback" ? describeReplyToFallback(choice) : null;
2444
+ }
2291
2445
  list(opts) {
2292
2446
  const limit = opts?.limit ?? 100;
2293
2447
  const conditions = [];
@@ -2479,6 +2633,57 @@ export class QueueRepository {
2479
2633
  const rows = this.db.prepare(sql).all(...params);
2480
2634
  return rows.map((r) => this.rowToItem(r, !opts?.compact));
2481
2635
  }
2636
+ /**
2637
+ * Record that an in-progress queue item has exceeded its closure_required_at
2638
+ * deadline, appending a transition note and emitting `qitem.closure_overdue`.
2639
+ *
2640
+ * Deduplicated: if this obligation has already recorded `closure-overdue`
2641
+ * since it was claimed (or created), no duplicate event or transition is emitted.
2642
+ */
2643
+ recordClosureOverdue(qitemId, opts) {
2644
+ const qitem = this.getById(qitemId);
2645
+ if (!qitem || qitem.state !== "in-progress" || !qitem.closureRequiredAt)
2646
+ return null;
2647
+ const cutoff = opts?.now ?? new Date().toISOString();
2648
+ if (qitem.closureRequiredAt > cutoff)
2649
+ return null;
2650
+ const claimSince = qitem.claimedAt ?? qitem.tsCreated;
2651
+ if (this.hasQueueTransitionsTable) {
2652
+ const alreadyRecorded = this.db.prepare(`SELECT 1 FROM queue_transitions WHERE qitem_id = ? AND transition_note = 'closure-overdue' AND ts >= ? LIMIT 1`).get(qitemId, claimSince);
2653
+ if (alreadyRecorded)
2654
+ return null;
2655
+ if (detectTable(this.db, "queue_transitions_archive")) {
2656
+ const alreadyRecordedArchive = this.db.prepare(`SELECT 1 FROM queue_transitions_archive WHERE qitem_id = ? AND transition_note = 'closure-overdue' AND ts >= ? LIMIT 1`).get(qitemId, claimSince);
2657
+ if (alreadyRecordedArchive)
2658
+ return null;
2659
+ }
2660
+ }
2661
+ else {
2662
+ const alreadyRecorded = this.db.prepare(`SELECT 1 FROM events WHERE type = 'qitem.closure_overdue' AND json_extract(payload, '$.qitemId') = ? AND julianday(created_at) >= julianday(?) LIMIT 1`).get(qitemId, claimSince);
2663
+ if (alreadyRecorded)
2664
+ return null;
2665
+ }
2666
+ const txn = this.db.transaction(() => {
2667
+ if (this.hasQueueTransitionsTable) {
2668
+ this.transitionLog.append({
2669
+ qitemId,
2670
+ state: qitem.state,
2671
+ actorSession: "daemon@system",
2672
+ transitionNote: "closure-overdue",
2673
+ });
2674
+ }
2675
+ return this.eventBus.persistWithinTransaction({
2676
+ type: "qitem.closure_overdue",
2677
+ qitemId,
2678
+ destinationSession: qitem.destinationSession,
2679
+ closureRequiredAt: qitem.closureRequiredAt,
2680
+ overdueSince: qitem.closureRequiredAt,
2681
+ });
2682
+ });
2683
+ const persisted = txn();
2684
+ this.eventBus.notifySubscribers(persisted);
2685
+ return persisted;
2686
+ }
2482
2687
  /**
2483
2688
  * Surface two evidence-backed undelivered classes: the original pending
2484
2689
  * create-path nudge failures, and active human-notification episodes whose
@@ -2588,18 +2793,37 @@ export class QueueRepository {
2588
2793
  }
2589
2794
  /** Null means legacy/no OWNER history; inactive means OWNER history exists
2590
2795
  * but the row no longer projects a current human-notification episode. */
2591
- currentDeliveryEpisode(item) {
2592
- const transition = this.transitionLog.latestOwnerNotificationForQitem(item.qitemId);
2796
+ currentDeliveryEpisode(item, knownOwner) {
2797
+ let transition = knownOwner ?? this.transitionLog.latestOwnerNotificationForQitem(item.qitemId);
2593
2798
  if (!transition)
2594
2799
  return null;
2800
+ // A human-decision-resolved notice written BY the transition that closed the row (a human's direct reply closing
2801
+ // it) is never posted: the Slack outbound lists active rows only (listHumanAlerts), and that human just answered.
2802
+ // It opens no new delivery episode; the delivery that happened is the latest OUTBOUND notice's, to that human.
2803
+ // Judged by the notice's own transition, not the row's current state: a resolved notice written while the row
2804
+ // stayed active is a real delivery and keeps its outcome after an agent later closes the row.
2805
+ let resolvedBy = null;
2806
+ if (transition.ownerNotificationKind === "human-decision-resolved" && !["pending", "in-progress", "blocked"].includes(transition.state)) {
2807
+ const outbound = this.transitionLog.listForQitem(item.qitemId)
2808
+ .filter((t) => t.ownerNotificationLevel != null && t.ownerNotificationKind != null && t.ownerNotificationKind !== "human-decision-resolved")
2809
+ .sort((a, b) => b.transitionId - a.transitionId)[0];
2810
+ if (!outbound)
2811
+ return "inactive";
2812
+ resolvedBy = transition.actorSession;
2813
+ transition = outbound;
2814
+ }
2595
2815
  const registry = this.loadHumanRegistryFn();
2596
2816
  if (!registry.ok)
2597
2817
  return "inactive";
2598
- const humanAddress = transition.ownerNotificationKind === "human-decision-resolved"
2599
- ? resolveRegisteredHumanAddress(transition.actorSession, registry.entities)
2600
- : item.state === "blocked"
2601
- ? resolveRegisteredHumanAddress(item.blockedOn, registry.entities)
2602
- : resolveRegisteredHumanAddress(item.destinationSession, registry.entities);
2818
+ // After that fallback the recipient is the human who answered: the row may be an agent's that was parked on them
2819
+ // (its destination is the agent, and closing cleared blocked_on).
2820
+ const humanAddress = resolvedBy !== null
2821
+ ? resolveRegisteredHumanAddress(resolvedBy, registry.entities)
2822
+ : transition.ownerNotificationKind === "human-decision-resolved"
2823
+ ? resolveRegisteredHumanAddress(transition.actorSession, registry.entities)
2824
+ : item.state === "blocked"
2825
+ ? resolveRegisteredHumanAddress(item.blockedOn, registry.entities)
2826
+ : resolveRegisteredHumanAddress(item.destinationSession, registry.entities);
2603
2827
  return humanAddress
2604
2828
  ? { notificationKey: `${item.qitemId}:${transition.transitionId}`, startedAt: transition.ts }
2605
2829
  : "inactive";
@@ -2609,6 +2833,32 @@ export class QueueRepository {
2609
2833
  * posted receipt cannot mask a later human park. Legacy pre-OWNER or literal
2610
2834
  * external rows retain their row-scoped fallback. */
2611
2835
  deliveryOutcomeFor(qitemId) {
2836
+ const ledger = this.deliveryLedger(qitemId);
2837
+ return ledger ? { outcome: ledger.outcome, detail: ledger.detail } : null;
2838
+ }
2839
+ /** #514 — true only when this row's CURRENT human-notification episode (OWNER history addressed
2840
+ * to a registered human, aliases included) has a POSTED receipt. Legacy rows with no OWNER
2841
+ * history, inactive episodes, never-posted and transport-failed all read false. Same derivation
2842
+ * as deliveryOutcomeFor; it reads row fields, never the waiting view. */
2843
+ humanNotificationPostedThisEpisode(qitemId) {
2844
+ if (!this.hasQueueTransitionsTable)
2845
+ return false;
2846
+ // Only the ask's own notification binds a recipient: create writes it in state pending, to the destination of
2847
+ // that moment. A park notice (its recipient is not retained), a resolution notice, or a later destination change
2848
+ // (routeToFallback opens no new episode) cannot establish that the current destination received this ask.
2849
+ const owner = this.transitionLog.latestOwnerNotificationForQitem(qitemId);
2850
+ if (!owner || owner.state !== "pending")
2851
+ return false;
2852
+ if (owner.ownerNotificationKind !== "human-required" && owner.ownerNotificationKind !== "human-update")
2853
+ return false;
2854
+ const rerouted = this.db.prepare("SELECT 1 FROM queue_transitions WHERE qitem_id = ? AND transition_id > ? AND transition_note LIKE 'fallback-routed:%' LIMIT 1").get(qitemId, owner.transitionId);
2855
+ if (rerouted)
2856
+ return false;
2857
+ // The ledger's episode exists only when the destination resolves to a registered human (aliases included).
2858
+ const ledger = this.deliveryLedger(qitemId, owner);
2859
+ return ledger !== null && ledger.outcome === "posted" && ledger.episode?.notificationKey === `${qitemId}:${owner.transitionId}`;
2860
+ }
2861
+ deliveryLedger(qitemId, knownOwner) {
2612
2862
  // Some repository-only fixtures intentionally model the pre-transition
2613
2863
  // schema. Delivery projection is additive there: absence means no verdict,
2614
2864
  // never a list failure.
@@ -2621,7 +2871,7 @@ export class QueueRepository {
2621
2871
  // The delivery episode uses row fields, not the waiting/backstop view.
2622
2872
  // Keep this read fresh without repeating the caller's recovery-tag scan.
2623
2873
  const item = this.rowToItem(row, false);
2624
- const episodeState = this.currentDeliveryEpisode(item);
2874
+ const episodeState = this.currentDeliveryEpisode(item, knownOwner);
2625
2875
  if (episodeState === "inactive")
2626
2876
  return null;
2627
2877
  const episode = episodeState;
@@ -2634,17 +2884,17 @@ export class QueueRepository {
2634
2884
  : notes;
2635
2885
  const posted = currentNotes.find((note) => note.transition_note.startsWith("slack-owner-notification-posted "));
2636
2886
  if (posted)
2637
- return { outcome: "posted", detail: posted.transition_note };
2887
+ return { outcome: "posted", detail: posted.transition_note, episode };
2638
2888
  const failed = currentNotes.find((note) => note.transition_note.startsWith("slack-owner-notification-transport-failed "));
2639
2889
  if (failed)
2640
- return { outcome: "transport-failed", detail: failed.transition_note };
2890
+ return { outcome: "transport-failed", detail: failed.transition_note, episode };
2641
2891
  const startedAt = episode?.startedAt ?? item.tsCreated;
2642
2892
  const gatewayRouted = episode !== null || item.lastNudgeResult?.startsWith("gateway-owned") === true;
2643
2893
  if (gatewayRouted) {
2644
2894
  const ageMs = Date.now() - new Date(startedAt.includes("T") ? startedAt : startedAt + "Z").getTime();
2645
2895
  if (ageMs > QueueRepository.NEVER_POSTED_WINDOW_MS) {
2646
2896
  const key = episode ? ` for notification_key=${episode.notificationKey}` : "";
2647
- return { outcome: "never-posted", detail: `gateway-routed row with no delivery receipt${key} past the post window` };
2897
+ return { outcome: "never-posted", detail: `gateway-routed row with no delivery receipt${key} past the post window`, episode };
2648
2898
  }
2649
2899
  }
2650
2900
  return null;
@@ -2782,10 +3032,9 @@ export class QueueRepository {
2782
3032
  workflowGuidance;
2783
3033
  attachWorkflowGuidance(reader) { this.workflowGuidance = reader; }
2784
3034
  evaluateWaitReminder(input) {
2785
- if (this.wakeRepo.findQitemsByAttachedWatchdog(input.jobId).length > 0
2786
- && this.wakeRepo.findQitemsByGeneratedTimer(input.jobId).every(row => row.state !== "blocked"))
3035
+ const binding = this.wakeRepo.findCurrentQitemsByGeneratedTimer(input.jobId)[0];
3036
+ if (!binding && this.wakeRepo.findLiveQitemsByAttachedWatchdog(input.jobId).length > 0)
2787
3037
  return null;
2788
- const binding = this.wakeRepo.findBlockedQitemsByWatchdog(input.jobId).find(row => row.kind === "timer");
2789
3038
  const result = evaluateQueueWait(this.watchdogJobsRepo ?? new WatchdogJobsRepository(this.db), input.jobId, binding ? this.waitingView(binding.qitemId) : null);
2790
3039
  // Only an already-admitted send reads prose: healthy silence, receipts and
2791
3040
  // failed-delivery retries remain owned by the existing wait evaluator.
@@ -2810,14 +3059,54 @@ export class QueueRepository {
2810
3059
  waitingView(qitemId) {
2811
3060
  const view = readWaitingView(this.db, qitemId, this.activityReader);
2812
3061
  if (view && ["pending", "in-progress"].includes(view.state)) {
3062
+ // #514 — the unclaimed sweep skips a pending ask already posted to its human in the current
3063
+ // episode (same predicate as runStuckSweep), so the view must not promise that sweep.
3064
+ const awaitingHuman = view.state === "pending" && this.humanNotificationPostedThisEpisode(qitemId);
3065
+ if (awaitingHuman) {
3066
+ view.nextBackstop = { owner: view.owner, mechanism: "none (posted to the human; awaiting their decision)", dueAt: null, intervalSeconds: null };
3067
+ }
2813
3068
  const recovery = readWakeLadderBackstop(this.db, qitemId);
2814
3069
  if (recovery) {
2815
- view.laterBackstop = { ...view.nextBackstop, note: "Conditional safety net; current delivery/recovery ownership is evaluated first." };
3070
+ if (!awaitingHuman)
3071
+ view.laterBackstop = { ...view.nextBackstop, note: "Conditional safety net; current delivery/recovery ownership is evaluated first." };
2816
3072
  view.nextBackstop = recovery;
2817
3073
  }
2818
3074
  }
2819
3075
  return view;
2820
3076
  }
3077
+ handoffAdvisory(row) {
3078
+ // handoff() creates its local successor in the same transaction. Do not
3079
+ // scan successor history again on every projection of those source rows.
3080
+ if (row.state === "handed-off" || !isTerminalState(row.state)
3081
+ || row.closure_reason !== "handed_off_to" || !row.closure_target)
3082
+ return undefined;
3083
+ const target = row.closure_target;
3084
+ try {
3085
+ const successor = this.db.prepare(`SELECT 1 FROM queue_items s
3086
+ WHERE (s.qitem_id = ? OR s.destination_session = ?) AND s.qitem_id != ?
3087
+ AND (s.handed_off_from = ? OR EXISTS (
3088
+ SELECT 1 FROM json_each(s.chain_of_record) WHERE value = ?
3089
+ )) LIMIT 1`).get(target, target, row.qitem_id, row.qitem_id, row.qitem_id);
3090
+ // A linked row may have handed on to another owner. Its current state
3091
+ // does not establish whether later hops still hold the work.
3092
+ if (successor)
3093
+ return undefined;
3094
+ }
3095
+ catch {
3096
+ // Optional reporting must not fail a close that has already committed,
3097
+ // or describe an unavailable lookup as proof of a missing local row.
3098
+ return undefined;
3099
+ }
3100
+ const foreignTarget = /^qitem-[^@]+@[^@]+$/.test(target);
3101
+ return {
3102
+ status: "unverified",
3103
+ target,
3104
+ reason: "no-live-local-successor",
3105
+ message: foreignTarget
3106
+ ? `Successor custody for '${target}' is unverified on this daemon: the successor is named on that host, and this daemon cannot read its custody. This closure records a handoff claim, not proof of transfer or pickup.`
3107
+ : `Successor custody for '${target}' is unverified on this daemon: no local row with this source's lineage was found. A successor may exist on another host. This closure records a handoff claim, not proof of transfer or pickup; reconcile the successor by ID.`,
3108
+ };
3109
+ }
2821
3110
  rowToItem(row, includeWaiting = true) {
2822
3111
  // S04 — derive the pickup receipt at the ONE shared projection point (list/show/overdue
2823
3112
  // all flow through here), so the park-vs-strand question is answered by the row face.
@@ -2833,7 +3122,9 @@ export class QueueRepository {
2833
3122
  lastHeartbeat: row.last_heartbeat,
2834
3123
  postClaimMotionCount: 0, // this reader supplies the current meaningful timestamp
2835
3124
  });
3125
+ const handoffAdvisory = this.handoffAdvisory(row);
2836
3126
  return {
3127
+ ...(handoffAdvisory ? { handoffAdvisory } : {}),
2837
3128
  pickup,
2838
3129
  ...(waiting ? { waiting } : {}),
2839
3130
  qitemId: row.qitem_id,
@@ -2859,6 +3150,9 @@ export class QueueRepository {
2859
3150
  evidenceRef: row.evidence_ref ?? null,
2860
3151
  humanIntent: row.human_intent ?? null,
2861
3152
  humanDetail: row.human_detail ?? null,
3153
+ replyTo: row.reply_to ?? null,
3154
+ humanQuestions: row.human_questions ? JSON.parse(row.human_questions) : null,
3155
+ humanAnswers: row.human_answers ? JSON.parse(row.human_answers) : null,
2862
3156
  closureReason: row.closure_reason,
2863
3157
  closureTarget: row.closure_target,
2864
3158
  closureRequiredAt: row.closure_required_at,