@openrig/cli 0.5.11 → 0.5.13

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 (929) hide show
  1. package/LICENSE +190 -0
  2. package/daemon/assets/plugins/openrig-core/skills/agent-operated-software/SKILL.md +7 -4
  3. package/daemon/assets/plugins/openrig-core/skills/openrig-operating-model/SKILL.md +34 -23
  4. package/daemon/context-packs/onboarding-width/manifest.yaml +1 -1
  5. package/daemon/context-packs/onboarding-width/public-what-you-can-do.md +141 -24
  6. package/daemon/context-packs/skills/agent-operated-software/SKILL.md +7 -4
  7. package/daemon/context-packs/skills/agent-operated-software/manifest.yaml +1 -1
  8. package/daemon/context-packs/skills/agent-operated-workflows/manifest.yaml +1 -1
  9. package/daemon/context-packs/skills/applying-a-permission-policy/manifest.yaml +1 -1
  10. package/daemon/context-packs/skills/claude-compaction-restore/manifest.yaml +1 -1
  11. package/daemon/context-packs/skills/core/agent-starters/manifest.yaml +1 -1
  12. package/daemon/context-packs/skills/core/agent-startup-and-context-ingestion/manifest.yaml +1 -1
  13. package/daemon/context-packs/skills/core/cross-host-rig-commands/manifest.yaml +1 -1
  14. package/daemon/context-packs/skills/core/human-in-the-loop/manifest.yaml +1 -1
  15. package/daemon/context-packs/skills/core/messaging-the-human/manifest.yaml +1 -1
  16. package/daemon/context-packs/skills/core/openrig-architect/manifest.yaml +1 -1
  17. package/daemon/context-packs/skills/core/openrig-cmux/manifest.yaml +1 -1
  18. package/daemon/context-packs/skills/core/openrig-herdr/manifest.yaml +1 -1
  19. package/daemon/context-packs/skills/core/openrig-skills/manifest.yaml +1 -1
  20. package/daemon/context-packs/skills/core/openrig-upgrade/manifest.yaml +1 -1
  21. package/daemon/context-packs/skills/core/rig-bundles-and-shareable-artifacts/manifest.yaml +1 -1
  22. package/daemon/context-packs/skills/core/rig-lifecycle/manifest.yaml +1 -1
  23. package/daemon/context-packs/skills/core/session-source-fork/manifest.yaml +1 -1
  24. package/daemon/context-packs/skills/core/specification-system/manifest.yaml +1 -1
  25. package/daemon/context-packs/skills/core/topology-mutation-and-seat-management/manifest.yaml +1 -1
  26. package/daemon/context-packs/skills/core/watchdog/manifest.yaml +1 -1
  27. package/daemon/context-packs/skills/delegating-work/manifest.yaml +1 -1
  28. package/daemon/context-packs/skills/forming-an-openrig-mental-model/manifest.yaml +1 -1
  29. package/daemon/context-packs/skills/loading-addressable-markdown/manifest.yaml +1 -1
  30. package/daemon/context-packs/skills/mission-slice-sop/manifest.yaml +1 -1
  31. package/daemon/context-packs/skills/openrig-operating-model/SKILL.md +34 -23
  32. package/daemon/context-packs/skills/openrig-operating-model/manifest.yaml +1 -1
  33. package/daemon/context-packs/skills/openrig-user/manifest.yaml +1 -1
  34. package/daemon/context-packs/skills/orienting-to-an-inherited-seat/manifest.yaml +1 -1
  35. package/daemon/context-packs/skills/pm/backlog-capture/manifest.yaml +1 -1
  36. package/daemon/context-packs/skills/pm/context-builder/manifest.yaml +1 -1
  37. package/daemon/context-packs/skills/pm/exec-summary/manifest.yaml +1 -1
  38. package/daemon/context-packs/skills/pm/office-hours/manifest.yaml +1 -1
  39. package/daemon/context-packs/skills/pm/plan-review/manifest.yaml +1 -1
  40. package/daemon/context-packs/skills/pm/requirements-writer/manifest.yaml +1 -1
  41. package/daemon/context-packs/skills/pm/ui-mockup/manifest.yaml +1 -1
  42. package/daemon/context-packs/skills/pods/development-team/manifest.yaml +1 -1
  43. package/daemon/context-packs/skills/pods/orchestration-team/manifest.yaml +1 -1
  44. package/daemon/context-packs/skills/pods/oversight-team/manifest.yaml +1 -1
  45. package/daemon/context-packs/skills/pods/review-team/manifest.yaml +1 -1
  46. package/daemon/context-packs/skills/process/agent-browser/manifest.yaml +1 -1
  47. package/daemon/context-packs/skills/process/context-engineering/manifest.yaml +1 -1
  48. package/daemon/context-packs/skills/process/dogfood/manifest.yaml +1 -1
  49. package/daemon/context-packs/skills/process/frontend-design/manifest.yaml +1 -1
  50. package/daemon/context-packs/skills/process/systematic-debugging/manifest.yaml +1 -1
  51. package/daemon/context-packs/skills/process/test-driven-development/manifest.yaml +1 -1
  52. package/daemon/context-packs/skills/process/verification-before-completion/manifest.yaml +1 -1
  53. package/daemon/context-packs/skills/queue-handoff/manifest.yaml +1 -1
  54. package/daemon/context-packs/skills/refocusing/manifest.yaml +1 -1
  55. package/daemon/context-packs/skills/retiring-and-inheriting-a-seat/manifest.yaml +1 -1
  56. package/daemon/context-packs/skills/seat-continuity-and-handover/manifest.yaml +1 -1
  57. package/daemon/context-packs/skills/session-compaction-and-restore/manifest.yaml +1 -1
  58. package/daemon/context-packs/skills/software-for-agents/manifest.yaml +1 -1
  59. package/daemon/context-packs/world-example/manifest.yaml +1 -1
  60. package/daemon/context-packs/world-public/manifest.yaml +1 -1
  61. package/daemon/dist/adapters/codex-resume.d.ts +1 -0
  62. package/daemon/dist/adapters/codex-resume.d.ts.map +1 -1
  63. package/daemon/dist/adapters/codex-resume.js +2 -9
  64. package/daemon/dist/adapters/codex-resume.js.map +1 -1
  65. package/daemon/dist/adapters/codex-runtime-adapter.d.ts +7 -3
  66. package/daemon/dist/adapters/codex-runtime-adapter.d.ts.map +1 -1
  67. package/daemon/dist/adapters/codex-runtime-adapter.js +26 -30
  68. package/daemon/dist/adapters/codex-runtime-adapter.js.map +1 -1
  69. package/daemon/dist/adapters/tmux.d.ts +15 -1
  70. package/daemon/dist/adapters/tmux.d.ts.map +1 -1
  71. package/daemon/dist/adapters/tmux.js +64 -1
  72. package/daemon/dist/adapters/tmux.js.map +1 -1
  73. package/daemon/dist/attention-surface.d.ts +36 -0
  74. package/daemon/dist/attention-surface.d.ts.map +1 -0
  75. package/daemon/dist/attention-surface.js +2 -0
  76. package/daemon/dist/attention-surface.js.map +1 -0
  77. package/daemon/dist/build-info.js +3 -3
  78. package/daemon/dist/db/all-migrations.d.ts +1 -1
  79. package/daemon/dist/db/all-migrations.d.ts.map +1 -1
  80. package/daemon/dist/db/all-migrations.js +3 -1
  81. package/daemon/dist/db/all-migrations.js.map +1 -1
  82. package/daemon/dist/db/migrations/080_scoped_operating_posture.d.ts +4 -0
  83. package/daemon/dist/db/migrations/080_scoped_operating_posture.d.ts.map +1 -0
  84. package/daemon/dist/db/migrations/080_scoped_operating_posture.js +21 -0
  85. package/daemon/dist/db/migrations/080_scoped_operating_posture.js.map +1 -0
  86. package/daemon/dist/domain/active-occupant.d.ts +2 -2
  87. package/daemon/dist/domain/active-occupant.d.ts.map +1 -1
  88. package/daemon/dist/domain/active-occupant.js +5 -5
  89. package/daemon/dist/domain/active-occupant.js.map +1 -1
  90. package/daemon/dist/domain/crash-cart-discovery.d.ts +3 -1
  91. package/daemon/dist/domain/crash-cart-discovery.d.ts.map +1 -1
  92. package/daemon/dist/domain/crash-cart-discovery.js +15 -4
  93. package/daemon/dist/domain/crash-cart-discovery.js.map +1 -1
  94. package/daemon/dist/domain/execution-view.d.ts +1 -0
  95. package/daemon/dist/domain/execution-view.d.ts.map +1 -1
  96. package/daemon/dist/domain/execution-view.js +64 -16
  97. package/daemon/dist/domain/execution-view.js.map +1 -1
  98. package/daemon/dist/domain/files/file-read.d.ts +17 -0
  99. package/daemon/dist/domain/files/file-read.d.ts.map +1 -0
  100. package/daemon/dist/domain/files/file-read.js +24 -0
  101. package/daemon/dist/domain/files/file-read.js.map +1 -0
  102. package/daemon/dist/domain/fresh-occupant-relation.d.ts +8 -0
  103. package/daemon/dist/domain/fresh-occupant-relation.d.ts.map +1 -0
  104. package/daemon/dist/domain/fresh-occupant-relation.js +31 -0
  105. package/daemon/dist/domain/fresh-occupant-relation.js.map +1 -0
  106. package/daemon/dist/domain/gateway/connections-projection.d.ts +31 -2
  107. package/daemon/dist/domain/gateway/connections-projection.d.ts.map +1 -1
  108. package/daemon/dist/domain/gateway/connections-projection.js +36 -14
  109. package/daemon/dist/domain/gateway/connections-projection.js.map +1 -1
  110. package/daemon/dist/domain/health-context.d.ts +3 -0
  111. package/daemon/dist/domain/health-context.d.ts.map +1 -1
  112. package/daemon/dist/domain/health-context.js +78 -6
  113. package/daemon/dist/domain/health-context.js.map +1 -1
  114. package/daemon/dist/domain/health-detectors.d.ts +2 -1
  115. package/daemon/dist/domain/health-detectors.d.ts.map +1 -1
  116. package/daemon/dist/domain/health-detectors.js +8 -2
  117. package/daemon/dist/domain/health-detectors.js.map +1 -1
  118. package/daemon/dist/domain/health-diagnosis.d.ts +51 -1
  119. package/daemon/dist/domain/health-diagnosis.d.ts.map +1 -1
  120. package/daemon/dist/domain/health-diagnosis.js +60 -9
  121. package/daemon/dist/domain/health-diagnosis.js.map +1 -1
  122. package/daemon/dist/domain/health-passive-ceremony.d.ts +7 -1
  123. package/daemon/dist/domain/health-passive-ceremony.d.ts.map +1 -1
  124. package/daemon/dist/domain/health-passive-ceremony.js +59 -26
  125. package/daemon/dist/domain/health-passive-ceremony.js.map +1 -1
  126. package/daemon/dist/domain/health-projection.d.ts +2 -0
  127. package/daemon/dist/domain/health-projection.d.ts.map +1 -1
  128. package/daemon/dist/domain/health-projection.js.map +1 -1
  129. package/daemon/dist/domain/kernel-boot.d.ts +2 -0
  130. package/daemon/dist/domain/kernel-boot.d.ts.map +1 -1
  131. package/daemon/dist/domain/kernel-boot.js +1 -1
  132. package/daemon/dist/domain/kernel-boot.js.map +1 -1
  133. package/daemon/dist/domain/native-resume-probe.d.ts.map +1 -1
  134. package/daemon/dist/domain/native-resume-probe.js +35 -23
  135. package/daemon/dist/domain/native-resume-probe.js.map +1 -1
  136. package/daemon/dist/domain/parked-query.d.ts +1 -0
  137. package/daemon/dist/domain/parked-query.d.ts.map +1 -1
  138. package/daemon/dist/domain/parked-query.js +2 -1
  139. package/daemon/dist/domain/parked-query.js.map +1 -1
  140. package/daemon/dist/domain/policies/parked-owner-consumer.d.ts +2 -0
  141. package/daemon/dist/domain/policies/parked-owner-consumer.d.ts.map +1 -1
  142. package/daemon/dist/domain/policies/parked-owner-consumer.js +2 -2
  143. package/daemon/dist/domain/policies/parked-owner-consumer.js.map +1 -1
  144. package/daemon/dist/domain/policies/workflow-keepalive.d.ts.map +1 -1
  145. package/daemon/dist/domain/policies/workflow-keepalive.js +12 -5
  146. package/daemon/dist/domain/policies/workflow-keepalive.js.map +1 -1
  147. package/daemon/dist/domain/project-lifecycle-compiler.d.ts +2 -0
  148. package/daemon/dist/domain/project-lifecycle-compiler.d.ts.map +1 -1
  149. package/daemon/dist/domain/project-lifecycle-compiler.js +2 -0
  150. package/daemon/dist/domain/project-lifecycle-compiler.js.map +1 -1
  151. package/daemon/dist/domain/proof/judgments.d.ts +138 -0
  152. package/daemon/dist/domain/proof/judgments.d.ts.map +1 -0
  153. package/daemon/dist/domain/proof/judgments.js +361 -0
  154. package/daemon/dist/domain/proof/judgments.js.map +1 -0
  155. package/daemon/dist/domain/proof/source-watch.d.ts +17 -0
  156. package/daemon/dist/domain/proof/source-watch.d.ts.map +1 -0
  157. package/daemon/dist/domain/proof/source-watch.js +60 -0
  158. package/daemon/dist/domain/proof/source-watch.js.map +1 -0
  159. package/daemon/dist/domain/queue-owner.d.ts +12 -0
  160. package/daemon/dist/domain/queue-owner.d.ts.map +1 -0
  161. package/daemon/dist/domain/queue-owner.js +28 -0
  162. package/daemon/dist/domain/queue-owner.js.map +1 -0
  163. package/daemon/dist/domain/queue-pickup.d.ts +3 -0
  164. package/daemon/dist/domain/queue-pickup.d.ts.map +1 -1
  165. package/daemon/dist/domain/queue-pickup.js +14 -15
  166. package/daemon/dist/domain/queue-pickup.js.map +1 -1
  167. package/daemon/dist/domain/queue-recovery.d.ts +10 -0
  168. package/daemon/dist/domain/queue-recovery.d.ts.map +1 -0
  169. package/daemon/dist/domain/queue-recovery.js +27 -0
  170. package/daemon/dist/domain/queue-recovery.js.map +1 -0
  171. package/daemon/dist/domain/queue-repository.d.ts +13 -6
  172. package/daemon/dist/domain/queue-repository.d.ts.map +1 -1
  173. package/daemon/dist/domain/queue-repository.js +177 -63
  174. package/daemon/dist/domain/queue-repository.js.map +1 -1
  175. package/daemon/dist/domain/queue-stuck-sweep.d.ts +2 -11
  176. package/daemon/dist/domain/queue-stuck-sweep.d.ts.map +1 -1
  177. package/daemon/dist/domain/queue-stuck-sweep.js +51 -52
  178. package/daemon/dist/domain/queue-stuck-sweep.js.map +1 -1
  179. package/daemon/dist/domain/queue-wait-backoff.d.ts +29 -2
  180. package/daemon/dist/domain/queue-wait-backoff.d.ts.map +1 -1
  181. package/daemon/dist/domain/queue-wait-backoff.js +73 -14
  182. package/daemon/dist/domain/queue-wait-backoff.js.map +1 -1
  183. package/daemon/dist/domain/queue-waiting.d.ts +61 -0
  184. package/daemon/dist/domain/queue-waiting.d.ts.map +1 -0
  185. package/daemon/dist/domain/queue-waiting.js +108 -0
  186. package/daemon/dist/domain/queue-waiting.js.map +1 -0
  187. package/daemon/dist/domain/queue-wake-ladder.d.ts +9 -0
  188. package/daemon/dist/domain/queue-wake-ladder.d.ts.map +1 -1
  189. package/daemon/dist/domain/queue-wake-ladder.js +122 -62
  190. package/daemon/dist/domain/queue-wake-ladder.js.map +1 -1
  191. package/daemon/dist/domain/queue-wake-repository.d.ts +2 -0
  192. package/daemon/dist/domain/queue-wake-repository.d.ts.map +1 -1
  193. package/daemon/dist/domain/queue-wake-repository.js +1 -0
  194. package/daemon/dist/domain/queue-wake-repository.js.map +1 -1
  195. package/daemon/dist/domain/rehydrate-eligibility.d.ts.map +1 -1
  196. package/daemon/dist/domain/rehydrate-eligibility.js +5 -3
  197. package/daemon/dist/domain/rehydrate-eligibility.js.map +1 -1
  198. package/daemon/dist/domain/restore-orchestrator.d.ts.map +1 -1
  199. package/daemon/dist/domain/restore-orchestrator.js +1 -0
  200. package/daemon/dist/domain/restore-orchestrator.js.map +1 -1
  201. package/daemon/dist/domain/restore-plan-preview.d.ts +7 -4
  202. package/daemon/dist/domain/restore-plan-preview.d.ts.map +1 -1
  203. package/daemon/dist/domain/restore-plan-preview.js +12 -6
  204. package/daemon/dist/domain/restore-plan-preview.js.map +1 -1
  205. package/daemon/dist/domain/review/compose.d.ts +9 -1
  206. package/daemon/dist/domain/review/compose.d.ts.map +1 -1
  207. package/daemon/dist/domain/review/compose.js +26 -7
  208. package/daemon/dist/domain/review/compose.js.map +1 -1
  209. package/daemon/dist/domain/review/gather.d.ts.map +1 -1
  210. package/daemon/dist/domain/review/gather.js +3 -0
  211. package/daemon/dist/domain/review/gather.js.map +1 -1
  212. package/daemon/dist/domain/review/types.d.ts +2 -0
  213. package/daemon/dist/domain/review/types.d.ts.map +1 -1
  214. package/daemon/dist/domain/rig-mode/operating-posture.d.ts +49 -0
  215. package/daemon/dist/domain/rig-mode/operating-posture.d.ts.map +1 -0
  216. package/daemon/dist/domain/rig-mode/operating-posture.js +255 -0
  217. package/daemon/dist/domain/rig-mode/operating-posture.js.map +1 -0
  218. package/daemon/dist/domain/rig-mode/rig-mode-defaults.d.ts.map +1 -1
  219. package/daemon/dist/domain/rig-mode/rig-mode-defaults.js +20 -0
  220. package/daemon/dist/domain/rig-mode/rig-mode-defaults.js.map +1 -1
  221. package/daemon/dist/domain/rig-mode/rig-mode-store.d.ts +2 -2
  222. package/daemon/dist/domain/rig-mode/rig-mode-store.d.ts.map +1 -1
  223. package/daemon/dist/domain/rig-mode/rig-mode-store.js +19 -3
  224. package/daemon/dist/domain/rig-mode/rig-mode-store.js.map +1 -1
  225. package/daemon/dist/domain/rig-mode/rig-mode-types.d.ts +12 -7
  226. package/daemon/dist/domain/rig-mode/rig-mode-types.d.ts.map +1 -1
  227. package/daemon/dist/domain/rig-mode/rig-mode-types.js +14 -3
  228. package/daemon/dist/domain/rig-mode/rig-mode-types.js.map +1 -1
  229. package/daemon/dist/domain/runtime-adapter.d.ts.map +1 -1
  230. package/daemon/dist/domain/runtime-adapter.js +1 -0
  231. package/daemon/dist/domain/runtime-adapter.js.map +1 -1
  232. package/daemon/dist/domain/scope/scope-view-projection.d.ts +8 -0
  233. package/daemon/dist/domain/scope/scope-view-projection.d.ts.map +1 -1
  234. package/daemon/dist/domain/scope/scope-view-projection.js +6 -25
  235. package/daemon/dist/domain/scope/scope-view-projection.js.map +1 -1
  236. package/daemon/dist/domain/seat-lifecycle-service.d.ts +21 -0
  237. package/daemon/dist/domain/seat-lifecycle-service.d.ts.map +1 -1
  238. package/daemon/dist/domain/seat-lifecycle-service.js +47 -1
  239. package/daemon/dist/domain/seat-lifecycle-service.js.map +1 -1
  240. package/daemon/dist/domain/slices/slice-detail-projector.d.ts +3 -0
  241. package/daemon/dist/domain/slices/slice-detail-projector.d.ts.map +1 -1
  242. package/daemon/dist/domain/slices/slice-detail-projector.js +14 -4
  243. package/daemon/dist/domain/slices/slice-detail-projector.js.map +1 -1
  244. package/daemon/dist/domain/slices/slice-indexer.d.ts +6 -0
  245. package/daemon/dist/domain/slices/slice-indexer.d.ts.map +1 -1
  246. package/daemon/dist/domain/slices/slice-indexer.js +36 -1
  247. package/daemon/dist/domain/slices/slice-indexer.js.map +1 -1
  248. package/daemon/dist/domain/snapshot-capture.d.ts.map +1 -1
  249. package/daemon/dist/domain/snapshot-capture.js +4 -2
  250. package/daemon/dist/domain/snapshot-capture.js.map +1 -1
  251. package/daemon/dist/domain/startup-orchestrator.d.ts +11 -0
  252. package/daemon/dist/domain/startup-orchestrator.d.ts.map +1 -1
  253. package/daemon/dist/domain/startup-orchestrator.js +43 -10
  254. package/daemon/dist/domain/startup-orchestrator.js.map +1 -1
  255. package/daemon/dist/domain/terminal/herdr-adapter.d.ts +2 -0
  256. package/daemon/dist/domain/terminal/herdr-adapter.d.ts.map +1 -1
  257. package/daemon/dist/domain/terminal/herdr-adapter.js +1 -1
  258. package/daemon/dist/domain/terminal/herdr-adapter.js.map +1 -1
  259. package/daemon/dist/domain/terminal/terminal-service.d.ts +28 -2
  260. package/daemon/dist/domain/terminal/terminal-service.d.ts.map +1 -1
  261. package/daemon/dist/domain/terminal/terminal-service.js +50 -13
  262. package/daemon/dist/domain/terminal/terminal-service.js.map +1 -1
  263. package/daemon/dist/domain/types.d.ts +13 -0
  264. package/daemon/dist/domain/types.d.ts.map +1 -1
  265. package/daemon/dist/domain/types.js.map +1 -1
  266. package/daemon/dist/domain/user-settings/settings-browser.d.ts +33 -0
  267. package/daemon/dist/domain/user-settings/settings-browser.d.ts.map +1 -0
  268. package/daemon/dist/domain/user-settings/settings-browser.js +261 -0
  269. package/daemon/dist/domain/user-settings/settings-browser.js.map +1 -0
  270. package/daemon/dist/domain/view-event-bridge.d.ts.map +1 -1
  271. package/daemon/dist/domain/view-event-bridge.js +2 -0
  272. package/daemon/dist/domain/view-event-bridge.js.map +1 -1
  273. package/daemon/dist/domain/view-projector.d.ts +2 -0
  274. package/daemon/dist/domain/view-projector.d.ts.map +1 -1
  275. package/daemon/dist/domain/view-projector.js +5 -1
  276. package/daemon/dist/domain/view-projector.js.map +1 -1
  277. package/daemon/dist/domain/watchdog-policy-engine.d.ts +4 -0
  278. package/daemon/dist/domain/watchdog-policy-engine.d.ts.map +1 -1
  279. package/daemon/dist/domain/watchdog-policy-engine.js +8 -1
  280. package/daemon/dist/domain/watchdog-policy-engine.js.map +1 -1
  281. package/daemon/dist/domain/watchdog-scheduler.d.ts +3 -0
  282. package/daemon/dist/domain/watchdog-scheduler.d.ts.map +1 -1
  283. package/daemon/dist/domain/watchdog-scheduler.js +3 -0
  284. package/daemon/dist/domain/watchdog-scheduler.js.map +1 -1
  285. package/daemon/dist/domain/workflow-exception-escalation.d.ts.map +1 -1
  286. package/daemon/dist/domain/workflow-exception-escalation.js +13 -32
  287. package/daemon/dist/domain/workflow-exception-escalation.js.map +1 -1
  288. package/daemon/dist/domain/workflow-exception-readiness.d.ts +39 -0
  289. package/daemon/dist/domain/workflow-exception-readiness.d.ts.map +1 -0
  290. package/daemon/dist/domain/workflow-exception-readiness.js +77 -0
  291. package/daemon/dist/domain/workflow-exception-readiness.js.map +1 -0
  292. package/daemon/dist/domain/workflow-exception-router.d.ts +3 -0
  293. package/daemon/dist/domain/workflow-exception-router.d.ts.map +1 -1
  294. package/daemon/dist/domain/workflow-exception-router.js +6 -1
  295. package/daemon/dist/domain/workflow-exception-router.js.map +1 -1
  296. package/daemon/dist/domain/workflow-exception.d.ts +6 -0
  297. package/daemon/dist/domain/workflow-exception.d.ts.map +1 -1
  298. package/daemon/dist/domain/workflow-exception.js +10 -3
  299. package/daemon/dist/domain/workflow-exception.js.map +1 -1
  300. package/daemon/dist/domain/workflow-guidance.d.ts +53 -0
  301. package/daemon/dist/domain/workflow-guidance.d.ts.map +1 -0
  302. package/daemon/dist/domain/workflow-guidance.js +212 -0
  303. package/daemon/dist/domain/workflow-guidance.js.map +1 -0
  304. package/daemon/dist/domain/workflow-instance-store.d.ts +2 -0
  305. package/daemon/dist/domain/workflow-instance-store.d.ts.map +1 -1
  306. package/daemon/dist/domain/workflow-instance-store.js +7 -0
  307. package/daemon/dist/domain/workflow-instance-store.js.map +1 -1
  308. package/daemon/dist/domain/workflow-planning-context.d.ts +3 -0
  309. package/daemon/dist/domain/workflow-planning-context.d.ts.map +1 -0
  310. package/daemon/dist/domain/workflow-planning-context.js +36 -0
  311. package/daemon/dist/domain/workflow-planning-context.js.map +1 -0
  312. package/daemon/dist/domain/workflow-projector.d.ts +11 -2
  313. package/daemon/dist/domain/workflow-projector.d.ts.map +1 -1
  314. package/daemon/dist/domain/workflow-projector.js +83 -73
  315. package/daemon/dist/domain/workflow-projector.js.map +1 -1
  316. package/daemon/dist/domain/workflow-reconciliation.d.ts +55 -0
  317. package/daemon/dist/domain/workflow-reconciliation.d.ts.map +1 -0
  318. package/daemon/dist/domain/workflow-reconciliation.js +228 -0
  319. package/daemon/dist/domain/workflow-reconciliation.js.map +1 -0
  320. package/daemon/dist/domain/workflow-runtime.d.ts +79 -2
  321. package/daemon/dist/domain/workflow-runtime.d.ts.map +1 -1
  322. package/daemon/dist/domain/workflow-runtime.js +97 -25
  323. package/daemon/dist/domain/workflow-runtime.js.map +1 -1
  324. package/daemon/dist/domain/workspace/project-catalog.d.ts +18 -0
  325. package/daemon/dist/domain/workspace/project-catalog.d.ts.map +1 -0
  326. package/daemon/dist/domain/workspace/project-catalog.js +66 -0
  327. package/daemon/dist/domain/workspace/project-catalog.js.map +1 -0
  328. package/daemon/dist/domain/workspace/project-read.d.ts +29 -0
  329. package/daemon/dist/domain/workspace/project-read.d.ts.map +1 -0
  330. package/daemon/dist/domain/workspace/project-read.js +107 -0
  331. package/daemon/dist/domain/workspace/project-read.js.map +1 -0
  332. package/daemon/dist/health-projection-surface.d.ts +1 -0
  333. package/daemon/dist/health-projection-surface.d.ts.map +1 -1
  334. package/daemon/dist/index.d.ts.map +1 -1
  335. package/daemon/dist/index.js +1 -0
  336. package/daemon/dist/index.js.map +1 -1
  337. package/daemon/dist/local-reading-surface.d.ts +3 -0
  338. package/daemon/dist/local-reading-surface.d.ts.map +1 -0
  339. package/daemon/dist/local-reading-surface.js +3 -0
  340. package/daemon/dist/local-reading-surface.js.map +1 -0
  341. package/daemon/dist/project-catalog-surface.d.ts +2 -0
  342. package/daemon/dist/project-catalog-surface.d.ts.map +1 -0
  343. package/daemon/dist/project-catalog-surface.js +2 -0
  344. package/daemon/dist/project-catalog-surface.js.map +1 -0
  345. package/daemon/dist/routes/activity.js +1 -1
  346. package/daemon/dist/routes/activity.js.map +1 -1
  347. package/daemon/dist/routes/attention.d.ts +3 -0
  348. package/daemon/dist/routes/attention.d.ts.map +1 -0
  349. package/daemon/dist/routes/attention.js +155 -0
  350. package/daemon/dist/routes/attention.js.map +1 -0
  351. package/daemon/dist/routes/config.d.ts +3 -1
  352. package/daemon/dist/routes/config.d.ts.map +1 -1
  353. package/daemon/dist/routes/config.js +11 -1
  354. package/daemon/dist/routes/config.js.map +1 -1
  355. package/daemon/dist/routes/files.d.ts +1 -1
  356. package/daemon/dist/routes/files.d.ts.map +1 -1
  357. package/daemon/dist/routes/files.js +4 -24
  358. package/daemon/dist/routes/files.js.map +1 -1
  359. package/daemon/dist/routes/missions.d.ts.map +1 -1
  360. package/daemon/dist/routes/missions.js +5 -2
  361. package/daemon/dist/routes/missions.js.map +1 -1
  362. package/daemon/dist/routes/proof.d.ts +3 -0
  363. package/daemon/dist/routes/proof.d.ts.map +1 -0
  364. package/daemon/dist/routes/proof.js +65 -0
  365. package/daemon/dist/routes/proof.js.map +1 -0
  366. package/daemon/dist/routes/review.d.ts.map +1 -1
  367. package/daemon/dist/routes/review.js +3 -2
  368. package/daemon/dist/routes/review.js.map +1 -1
  369. package/daemon/dist/routes/rig-mode.d.ts.map +1 -1
  370. package/daemon/dist/routes/rig-mode.js +67 -14
  371. package/daemon/dist/routes/rig-mode.js.map +1 -1
  372. package/daemon/dist/routes/rigs.d.ts.map +1 -1
  373. package/daemon/dist/routes/rigs.js +4 -3
  374. package/daemon/dist/routes/rigs.js.map +1 -1
  375. package/daemon/dist/routes/scopes.d.ts.map +1 -1
  376. package/daemon/dist/routes/scopes.js +62 -6
  377. package/daemon/dist/routes/scopes.js.map +1 -1
  378. package/daemon/dist/routes/seat.d.ts +4 -0
  379. package/daemon/dist/routes/seat.d.ts.map +1 -1
  380. package/daemon/dist/routes/seat.js +1 -1
  381. package/daemon/dist/routes/seat.js.map +1 -1
  382. package/daemon/dist/routes/slices.d.ts +2 -2
  383. package/daemon/dist/routes/slices.d.ts.map +1 -1
  384. package/daemon/dist/routes/slices.js +26 -3
  385. package/daemon/dist/routes/slices.js.map +1 -1
  386. package/daemon/dist/routes/spec-library.d.ts.map +1 -1
  387. package/daemon/dist/routes/spec-library.js +11 -2
  388. package/daemon/dist/routes/spec-library.js.map +1 -1
  389. package/daemon/dist/routes/startup.d.ts +7 -0
  390. package/daemon/dist/routes/startup.d.ts.map +1 -0
  391. package/daemon/dist/routes/startup.js +221 -0
  392. package/daemon/dist/routes/startup.js.map +1 -0
  393. package/daemon/dist/routes/terminal.d.ts.map +1 -1
  394. package/daemon/dist/routes/terminal.js +14 -4
  395. package/daemon/dist/routes/terminal.js.map +1 -1
  396. package/daemon/dist/routes/up.d.ts.map +1 -1
  397. package/daemon/dist/routes/up.js +2 -1
  398. package/daemon/dist/routes/up.js.map +1 -1
  399. package/daemon/dist/routes/views.d.ts.map +1 -1
  400. package/daemon/dist/routes/views.js +11 -1
  401. package/daemon/dist/routes/views.js.map +1 -1
  402. package/daemon/dist/routes/workflow.d.ts.map +1 -1
  403. package/daemon/dist/routes/workflow.js +43 -2
  404. package/daemon/dist/routes/workflow.js.map +1 -1
  405. package/daemon/dist/server.d.ts +2 -0
  406. package/daemon/dist/server.d.ts.map +1 -1
  407. package/daemon/dist/server.js +8 -0
  408. package/daemon/dist/server.js.map +1 -1
  409. package/daemon/dist/startup.d.ts.map +1 -1
  410. package/daemon/dist/startup.js +23 -6
  411. package/daemon/dist/startup.js.map +1 -1
  412. package/daemon/docs/reference/agent-spec.md +1 -1
  413. package/daemon/docs/reference/getting-started.md +40 -17
  414. package/daemon/docs/reference/health-diagnosis.md +83 -6
  415. package/daemon/docs/reference/legacy-topology-migration.md +1 -2
  416. package/daemon/docs/reference/mission-install.md +5 -11
  417. package/daemon/docs/reference/planning-dial.md +12 -14
  418. package/daemon/docs/reference/project-release-profile.yaml +4 -0
  419. package/daemon/docs/reference/project-workspace.md +23 -0
  420. package/daemon/docs/reference/refocus-channel.md +1 -4
  421. package/daemon/docs/reference/release-boundary.md +33 -30
  422. package/daemon/docs/reference/rig-spec.md +6 -6
  423. package/daemon/docs/reference/scoped-operating-posture.md +95 -0
  424. package/daemon/docs/reference/sdlc-conventions.md +16 -5
  425. package/daemon/docs/reference/wave-sdlc.md +5 -16
  426. package/daemon/docs/reference/worktree-builds.md +3 -3
  427. package/daemon/policies/examples/my-cautious-dev.policy.md +1 -1
  428. package/daemon/specs/rigs/launch/kernel/agents/operator/agent/guidance/role.md +3 -3
  429. package/daemon/specs/rigs/launch/kernel/agents/operator/agent/startup/context.md +11 -12
  430. package/dist/bin-wrapper.d.ts +1 -0
  431. package/dist/bin-wrapper.d.ts.map +1 -1
  432. package/dist/bin-wrapper.js +13 -0
  433. package/dist/bin-wrapper.js.map +1 -1
  434. package/dist/build-info.js +3 -3
  435. package/dist/commands/context.d.ts.map +1 -1
  436. package/dist/commands/context.js +66 -124
  437. package/dist/commands/context.js.map +1 -1
  438. package/dist/commands/crash-cart.d.ts.map +1 -1
  439. package/dist/commands/crash-cart.js +20 -6
  440. package/dist/commands/crash-cart.js.map +1 -1
  441. package/dist/commands/health.d.ts.map +1 -1
  442. package/dist/commands/health.js +17 -2
  443. package/dist/commands/health.js.map +1 -1
  444. package/dist/commands/proof.d.ts +2 -2
  445. package/dist/commands/proof.d.ts.map +1 -1
  446. package/dist/commands/proof.js +84 -4
  447. package/dist/commands/proof.js.map +1 -1
  448. package/dist/commands/queue.js +1 -1
  449. package/dist/commands/queue.js.map +1 -1
  450. package/dist/commands/rig-mode.d.ts +2 -2
  451. package/dist/commands/rig-mode.d.ts.map +1 -1
  452. package/dist/commands/rig-mode.js +36 -11
  453. package/dist/commands/rig-mode.js.map +1 -1
  454. package/dist/commands/workflow-render.d.ts +50 -0
  455. package/dist/commands/workflow-render.d.ts.map +1 -1
  456. package/dist/commands/workflow-render.js +41 -0
  457. package/dist/commands/workflow-render.js.map +1 -1
  458. package/dist/commands/workflow.d.ts.map +1 -1
  459. package/dist/commands/workflow.js +106 -5
  460. package/dist/commands/workflow.js.map +1 -1
  461. package/dist/front-door.d.ts.map +1 -1
  462. package/dist/front-door.js +4 -1
  463. package/dist/front-door.js.map +1 -1
  464. package/dist/lib/context-git.d.ts +141 -0
  465. package/dist/lib/context-git.d.ts.map +1 -0
  466. package/dist/lib/context-git.js +256 -0
  467. package/dist/lib/context-git.js.map +1 -0
  468. package/dist/lib/context-install.d.ts +5 -0
  469. package/dist/lib/context-install.d.ts.map +1 -0
  470. package/dist/lib/context-install.js +125 -0
  471. package/dist/lib/context-install.js.map +1 -0
  472. package/dist/lib/work-install.d.ts.map +1 -1
  473. package/dist/lib/work-install.js +11 -36
  474. package/dist/lib/work-install.js.map +1 -1
  475. package/dist/local-reading.d.ts +31 -0
  476. package/dist/local-reading.d.ts.map +1 -0
  477. package/dist/local-reading.js +62 -0
  478. package/dist/local-reading.js.map +1 -0
  479. package/node_modules/@openrig/daemon/dist/adapters/codex-resume.d.ts +1 -0
  480. package/node_modules/@openrig/daemon/dist/adapters/codex-resume.d.ts.map +1 -1
  481. package/node_modules/@openrig/daemon/dist/adapters/codex-resume.js +2 -9
  482. package/node_modules/@openrig/daemon/dist/adapters/codex-resume.js.map +1 -1
  483. package/node_modules/@openrig/daemon/dist/adapters/codex-runtime-adapter.d.ts +7 -3
  484. package/node_modules/@openrig/daemon/dist/adapters/codex-runtime-adapter.d.ts.map +1 -1
  485. package/node_modules/@openrig/daemon/dist/adapters/codex-runtime-adapter.js +26 -30
  486. package/node_modules/@openrig/daemon/dist/adapters/codex-runtime-adapter.js.map +1 -1
  487. package/node_modules/@openrig/daemon/dist/adapters/tmux.d.ts +15 -1
  488. package/node_modules/@openrig/daemon/dist/adapters/tmux.d.ts.map +1 -1
  489. package/node_modules/@openrig/daemon/dist/adapters/tmux.js +64 -1
  490. package/node_modules/@openrig/daemon/dist/adapters/tmux.js.map +1 -1
  491. package/node_modules/@openrig/daemon/dist/attention-surface.d.ts +36 -0
  492. package/node_modules/@openrig/daemon/dist/attention-surface.d.ts.map +1 -0
  493. package/node_modules/@openrig/daemon/dist/attention-surface.js +2 -0
  494. package/node_modules/@openrig/daemon/dist/attention-surface.js.map +1 -0
  495. package/node_modules/@openrig/daemon/dist/build-info.js +3 -3
  496. package/node_modules/@openrig/daemon/dist/db/all-migrations.d.ts +1 -1
  497. package/node_modules/@openrig/daemon/dist/db/all-migrations.d.ts.map +1 -1
  498. package/node_modules/@openrig/daemon/dist/db/all-migrations.js +3 -1
  499. package/node_modules/@openrig/daemon/dist/db/all-migrations.js.map +1 -1
  500. package/node_modules/@openrig/daemon/dist/db/migrations/080_scoped_operating_posture.d.ts +4 -0
  501. package/node_modules/@openrig/daemon/dist/db/migrations/080_scoped_operating_posture.d.ts.map +1 -0
  502. package/node_modules/@openrig/daemon/dist/db/migrations/080_scoped_operating_posture.js +21 -0
  503. package/node_modules/@openrig/daemon/dist/db/migrations/080_scoped_operating_posture.js.map +1 -0
  504. package/node_modules/@openrig/daemon/dist/domain/active-occupant.d.ts +2 -2
  505. package/node_modules/@openrig/daemon/dist/domain/active-occupant.d.ts.map +1 -1
  506. package/node_modules/@openrig/daemon/dist/domain/active-occupant.js +5 -5
  507. package/node_modules/@openrig/daemon/dist/domain/active-occupant.js.map +1 -1
  508. package/node_modules/@openrig/daemon/dist/domain/crash-cart-discovery.d.ts +3 -1
  509. package/node_modules/@openrig/daemon/dist/domain/crash-cart-discovery.d.ts.map +1 -1
  510. package/node_modules/@openrig/daemon/dist/domain/crash-cart-discovery.js +15 -4
  511. package/node_modules/@openrig/daemon/dist/domain/crash-cart-discovery.js.map +1 -1
  512. package/node_modules/@openrig/daemon/dist/domain/execution-view.d.ts +1 -0
  513. package/node_modules/@openrig/daemon/dist/domain/execution-view.d.ts.map +1 -1
  514. package/node_modules/@openrig/daemon/dist/domain/execution-view.js +64 -16
  515. package/node_modules/@openrig/daemon/dist/domain/execution-view.js.map +1 -1
  516. package/node_modules/@openrig/daemon/dist/domain/files/file-read.d.ts +17 -0
  517. package/node_modules/@openrig/daemon/dist/domain/files/file-read.d.ts.map +1 -0
  518. package/node_modules/@openrig/daemon/dist/domain/files/file-read.js +24 -0
  519. package/node_modules/@openrig/daemon/dist/domain/files/file-read.js.map +1 -0
  520. package/node_modules/@openrig/daemon/dist/domain/fresh-occupant-relation.d.ts +8 -0
  521. package/node_modules/@openrig/daemon/dist/domain/fresh-occupant-relation.d.ts.map +1 -0
  522. package/node_modules/@openrig/daemon/dist/domain/fresh-occupant-relation.js +31 -0
  523. package/node_modules/@openrig/daemon/dist/domain/fresh-occupant-relation.js.map +1 -0
  524. package/node_modules/@openrig/daemon/dist/domain/gateway/connections-projection.d.ts +31 -2
  525. package/node_modules/@openrig/daemon/dist/domain/gateway/connections-projection.d.ts.map +1 -1
  526. package/node_modules/@openrig/daemon/dist/domain/gateway/connections-projection.js +36 -14
  527. package/node_modules/@openrig/daemon/dist/domain/gateway/connections-projection.js.map +1 -1
  528. package/node_modules/@openrig/daemon/dist/domain/health-context.d.ts +3 -0
  529. package/node_modules/@openrig/daemon/dist/domain/health-context.d.ts.map +1 -1
  530. package/node_modules/@openrig/daemon/dist/domain/health-context.js +78 -6
  531. package/node_modules/@openrig/daemon/dist/domain/health-context.js.map +1 -1
  532. package/node_modules/@openrig/daemon/dist/domain/health-detectors.d.ts +2 -1
  533. package/node_modules/@openrig/daemon/dist/domain/health-detectors.d.ts.map +1 -1
  534. package/node_modules/@openrig/daemon/dist/domain/health-detectors.js +8 -2
  535. package/node_modules/@openrig/daemon/dist/domain/health-detectors.js.map +1 -1
  536. package/node_modules/@openrig/daemon/dist/domain/health-diagnosis.d.ts +51 -1
  537. package/node_modules/@openrig/daemon/dist/domain/health-diagnosis.d.ts.map +1 -1
  538. package/node_modules/@openrig/daemon/dist/domain/health-diagnosis.js +60 -9
  539. package/node_modules/@openrig/daemon/dist/domain/health-diagnosis.js.map +1 -1
  540. package/node_modules/@openrig/daemon/dist/domain/health-passive-ceremony.d.ts +7 -1
  541. package/node_modules/@openrig/daemon/dist/domain/health-passive-ceremony.d.ts.map +1 -1
  542. package/node_modules/@openrig/daemon/dist/domain/health-passive-ceremony.js +59 -26
  543. package/node_modules/@openrig/daemon/dist/domain/health-passive-ceremony.js.map +1 -1
  544. package/node_modules/@openrig/daemon/dist/domain/health-projection.d.ts +2 -0
  545. package/node_modules/@openrig/daemon/dist/domain/health-projection.d.ts.map +1 -1
  546. package/node_modules/@openrig/daemon/dist/domain/health-projection.js.map +1 -1
  547. package/node_modules/@openrig/daemon/dist/domain/kernel-boot.d.ts +2 -0
  548. package/node_modules/@openrig/daemon/dist/domain/kernel-boot.d.ts.map +1 -1
  549. package/node_modules/@openrig/daemon/dist/domain/kernel-boot.js +1 -1
  550. package/node_modules/@openrig/daemon/dist/domain/kernel-boot.js.map +1 -1
  551. package/node_modules/@openrig/daemon/dist/domain/native-resume-probe.d.ts.map +1 -1
  552. package/node_modules/@openrig/daemon/dist/domain/native-resume-probe.js +35 -23
  553. package/node_modules/@openrig/daemon/dist/domain/native-resume-probe.js.map +1 -1
  554. package/node_modules/@openrig/daemon/dist/domain/parked-query.d.ts +1 -0
  555. package/node_modules/@openrig/daemon/dist/domain/parked-query.d.ts.map +1 -1
  556. package/node_modules/@openrig/daemon/dist/domain/parked-query.js +2 -1
  557. package/node_modules/@openrig/daemon/dist/domain/parked-query.js.map +1 -1
  558. package/node_modules/@openrig/daemon/dist/domain/policies/parked-owner-consumer.d.ts +2 -0
  559. package/node_modules/@openrig/daemon/dist/domain/policies/parked-owner-consumer.d.ts.map +1 -1
  560. package/node_modules/@openrig/daemon/dist/domain/policies/parked-owner-consumer.js +2 -2
  561. package/node_modules/@openrig/daemon/dist/domain/policies/parked-owner-consumer.js.map +1 -1
  562. package/node_modules/@openrig/daemon/dist/domain/policies/workflow-keepalive.d.ts.map +1 -1
  563. package/node_modules/@openrig/daemon/dist/domain/policies/workflow-keepalive.js +12 -5
  564. package/node_modules/@openrig/daemon/dist/domain/policies/workflow-keepalive.js.map +1 -1
  565. package/node_modules/@openrig/daemon/dist/domain/project-lifecycle-compiler.d.ts +2 -0
  566. package/node_modules/@openrig/daemon/dist/domain/project-lifecycle-compiler.d.ts.map +1 -1
  567. package/node_modules/@openrig/daemon/dist/domain/project-lifecycle-compiler.js +2 -0
  568. package/node_modules/@openrig/daemon/dist/domain/project-lifecycle-compiler.js.map +1 -1
  569. package/node_modules/@openrig/daemon/dist/domain/proof/judgments.d.ts +138 -0
  570. package/node_modules/@openrig/daemon/dist/domain/proof/judgments.d.ts.map +1 -0
  571. package/node_modules/@openrig/daemon/dist/domain/proof/judgments.js +361 -0
  572. package/node_modules/@openrig/daemon/dist/domain/proof/judgments.js.map +1 -0
  573. package/node_modules/@openrig/daemon/dist/domain/proof/source-watch.d.ts +17 -0
  574. package/node_modules/@openrig/daemon/dist/domain/proof/source-watch.d.ts.map +1 -0
  575. package/node_modules/@openrig/daemon/dist/domain/proof/source-watch.js +60 -0
  576. package/node_modules/@openrig/daemon/dist/domain/proof/source-watch.js.map +1 -0
  577. package/node_modules/@openrig/daemon/dist/domain/queue-owner.d.ts +12 -0
  578. package/node_modules/@openrig/daemon/dist/domain/queue-owner.d.ts.map +1 -0
  579. package/node_modules/@openrig/daemon/dist/domain/queue-owner.js +28 -0
  580. package/node_modules/@openrig/daemon/dist/domain/queue-owner.js.map +1 -0
  581. package/node_modules/@openrig/daemon/dist/domain/queue-pickup.d.ts +3 -0
  582. package/node_modules/@openrig/daemon/dist/domain/queue-pickup.d.ts.map +1 -1
  583. package/node_modules/@openrig/daemon/dist/domain/queue-pickup.js +14 -15
  584. package/node_modules/@openrig/daemon/dist/domain/queue-pickup.js.map +1 -1
  585. package/node_modules/@openrig/daemon/dist/domain/queue-recovery.d.ts +10 -0
  586. package/node_modules/@openrig/daemon/dist/domain/queue-recovery.d.ts.map +1 -0
  587. package/node_modules/@openrig/daemon/dist/domain/queue-recovery.js +27 -0
  588. package/node_modules/@openrig/daemon/dist/domain/queue-recovery.js.map +1 -0
  589. package/node_modules/@openrig/daemon/dist/domain/queue-repository.d.ts +13 -6
  590. package/node_modules/@openrig/daemon/dist/domain/queue-repository.d.ts.map +1 -1
  591. package/node_modules/@openrig/daemon/dist/domain/queue-repository.js +177 -63
  592. package/node_modules/@openrig/daemon/dist/domain/queue-repository.js.map +1 -1
  593. package/node_modules/@openrig/daemon/dist/domain/queue-stuck-sweep.d.ts +2 -11
  594. package/node_modules/@openrig/daemon/dist/domain/queue-stuck-sweep.d.ts.map +1 -1
  595. package/node_modules/@openrig/daemon/dist/domain/queue-stuck-sweep.js +51 -52
  596. package/node_modules/@openrig/daemon/dist/domain/queue-stuck-sweep.js.map +1 -1
  597. package/node_modules/@openrig/daemon/dist/domain/queue-wait-backoff.d.ts +29 -2
  598. package/node_modules/@openrig/daemon/dist/domain/queue-wait-backoff.d.ts.map +1 -1
  599. package/node_modules/@openrig/daemon/dist/domain/queue-wait-backoff.js +73 -14
  600. package/node_modules/@openrig/daemon/dist/domain/queue-wait-backoff.js.map +1 -1
  601. package/node_modules/@openrig/daemon/dist/domain/queue-waiting.d.ts +61 -0
  602. package/node_modules/@openrig/daemon/dist/domain/queue-waiting.d.ts.map +1 -0
  603. package/node_modules/@openrig/daemon/dist/domain/queue-waiting.js +108 -0
  604. package/node_modules/@openrig/daemon/dist/domain/queue-waiting.js.map +1 -0
  605. package/node_modules/@openrig/daemon/dist/domain/queue-wake-ladder.d.ts +9 -0
  606. package/node_modules/@openrig/daemon/dist/domain/queue-wake-ladder.d.ts.map +1 -1
  607. package/node_modules/@openrig/daemon/dist/domain/queue-wake-ladder.js +122 -62
  608. package/node_modules/@openrig/daemon/dist/domain/queue-wake-ladder.js.map +1 -1
  609. package/node_modules/@openrig/daemon/dist/domain/queue-wake-repository.d.ts +2 -0
  610. package/node_modules/@openrig/daemon/dist/domain/queue-wake-repository.d.ts.map +1 -1
  611. package/node_modules/@openrig/daemon/dist/domain/queue-wake-repository.js +1 -0
  612. package/node_modules/@openrig/daemon/dist/domain/queue-wake-repository.js.map +1 -1
  613. package/node_modules/@openrig/daemon/dist/domain/rehydrate-eligibility.d.ts.map +1 -1
  614. package/node_modules/@openrig/daemon/dist/domain/rehydrate-eligibility.js +5 -3
  615. package/node_modules/@openrig/daemon/dist/domain/rehydrate-eligibility.js.map +1 -1
  616. package/node_modules/@openrig/daemon/dist/domain/restore-orchestrator.d.ts.map +1 -1
  617. package/node_modules/@openrig/daemon/dist/domain/restore-orchestrator.js +1 -0
  618. package/node_modules/@openrig/daemon/dist/domain/restore-orchestrator.js.map +1 -1
  619. package/node_modules/@openrig/daemon/dist/domain/restore-plan-preview.d.ts +7 -4
  620. package/node_modules/@openrig/daemon/dist/domain/restore-plan-preview.d.ts.map +1 -1
  621. package/node_modules/@openrig/daemon/dist/domain/restore-plan-preview.js +12 -6
  622. package/node_modules/@openrig/daemon/dist/domain/restore-plan-preview.js.map +1 -1
  623. package/node_modules/@openrig/daemon/dist/domain/review/compose.d.ts +9 -1
  624. package/node_modules/@openrig/daemon/dist/domain/review/compose.d.ts.map +1 -1
  625. package/node_modules/@openrig/daemon/dist/domain/review/compose.js +26 -7
  626. package/node_modules/@openrig/daemon/dist/domain/review/compose.js.map +1 -1
  627. package/node_modules/@openrig/daemon/dist/domain/review/gather.d.ts.map +1 -1
  628. package/node_modules/@openrig/daemon/dist/domain/review/gather.js +3 -0
  629. package/node_modules/@openrig/daemon/dist/domain/review/gather.js.map +1 -1
  630. package/node_modules/@openrig/daemon/dist/domain/review/types.d.ts +2 -0
  631. package/node_modules/@openrig/daemon/dist/domain/review/types.d.ts.map +1 -1
  632. package/node_modules/@openrig/daemon/dist/domain/rig-mode/operating-posture.d.ts +49 -0
  633. package/node_modules/@openrig/daemon/dist/domain/rig-mode/operating-posture.d.ts.map +1 -0
  634. package/node_modules/@openrig/daemon/dist/domain/rig-mode/operating-posture.js +255 -0
  635. package/node_modules/@openrig/daemon/dist/domain/rig-mode/operating-posture.js.map +1 -0
  636. package/node_modules/@openrig/daemon/dist/domain/rig-mode/rig-mode-defaults.d.ts.map +1 -1
  637. package/node_modules/@openrig/daemon/dist/domain/rig-mode/rig-mode-defaults.js +20 -0
  638. package/node_modules/@openrig/daemon/dist/domain/rig-mode/rig-mode-defaults.js.map +1 -1
  639. package/node_modules/@openrig/daemon/dist/domain/rig-mode/rig-mode-store.d.ts +2 -2
  640. package/node_modules/@openrig/daemon/dist/domain/rig-mode/rig-mode-store.d.ts.map +1 -1
  641. package/node_modules/@openrig/daemon/dist/domain/rig-mode/rig-mode-store.js +19 -3
  642. package/node_modules/@openrig/daemon/dist/domain/rig-mode/rig-mode-store.js.map +1 -1
  643. package/node_modules/@openrig/daemon/dist/domain/rig-mode/rig-mode-types.d.ts +12 -7
  644. package/node_modules/@openrig/daemon/dist/domain/rig-mode/rig-mode-types.d.ts.map +1 -1
  645. package/node_modules/@openrig/daemon/dist/domain/rig-mode/rig-mode-types.js +14 -3
  646. package/node_modules/@openrig/daemon/dist/domain/rig-mode/rig-mode-types.js.map +1 -1
  647. package/node_modules/@openrig/daemon/dist/domain/runtime-adapter.d.ts.map +1 -1
  648. package/node_modules/@openrig/daemon/dist/domain/runtime-adapter.js +1 -0
  649. package/node_modules/@openrig/daemon/dist/domain/runtime-adapter.js.map +1 -1
  650. package/node_modules/@openrig/daemon/dist/domain/scope/scope-view-projection.d.ts +8 -0
  651. package/node_modules/@openrig/daemon/dist/domain/scope/scope-view-projection.d.ts.map +1 -1
  652. package/node_modules/@openrig/daemon/dist/domain/scope/scope-view-projection.js +6 -25
  653. package/node_modules/@openrig/daemon/dist/domain/scope/scope-view-projection.js.map +1 -1
  654. package/node_modules/@openrig/daemon/dist/domain/seat-lifecycle-service.d.ts +21 -0
  655. package/node_modules/@openrig/daemon/dist/domain/seat-lifecycle-service.d.ts.map +1 -1
  656. package/node_modules/@openrig/daemon/dist/domain/seat-lifecycle-service.js +47 -1
  657. package/node_modules/@openrig/daemon/dist/domain/seat-lifecycle-service.js.map +1 -1
  658. package/node_modules/@openrig/daemon/dist/domain/slices/slice-detail-projector.d.ts +3 -0
  659. package/node_modules/@openrig/daemon/dist/domain/slices/slice-detail-projector.d.ts.map +1 -1
  660. package/node_modules/@openrig/daemon/dist/domain/slices/slice-detail-projector.js +14 -4
  661. package/node_modules/@openrig/daemon/dist/domain/slices/slice-detail-projector.js.map +1 -1
  662. package/node_modules/@openrig/daemon/dist/domain/slices/slice-indexer.d.ts +6 -0
  663. package/node_modules/@openrig/daemon/dist/domain/slices/slice-indexer.d.ts.map +1 -1
  664. package/node_modules/@openrig/daemon/dist/domain/slices/slice-indexer.js +36 -1
  665. package/node_modules/@openrig/daemon/dist/domain/slices/slice-indexer.js.map +1 -1
  666. package/node_modules/@openrig/daemon/dist/domain/snapshot-capture.d.ts.map +1 -1
  667. package/node_modules/@openrig/daemon/dist/domain/snapshot-capture.js +4 -2
  668. package/node_modules/@openrig/daemon/dist/domain/snapshot-capture.js.map +1 -1
  669. package/node_modules/@openrig/daemon/dist/domain/startup-orchestrator.d.ts +11 -0
  670. package/node_modules/@openrig/daemon/dist/domain/startup-orchestrator.d.ts.map +1 -1
  671. package/node_modules/@openrig/daemon/dist/domain/startup-orchestrator.js +43 -10
  672. package/node_modules/@openrig/daemon/dist/domain/startup-orchestrator.js.map +1 -1
  673. package/node_modules/@openrig/daemon/dist/domain/terminal/herdr-adapter.d.ts +2 -0
  674. package/node_modules/@openrig/daemon/dist/domain/terminal/herdr-adapter.d.ts.map +1 -1
  675. package/node_modules/@openrig/daemon/dist/domain/terminal/herdr-adapter.js +1 -1
  676. package/node_modules/@openrig/daemon/dist/domain/terminal/herdr-adapter.js.map +1 -1
  677. package/node_modules/@openrig/daemon/dist/domain/terminal/terminal-service.d.ts +28 -2
  678. package/node_modules/@openrig/daemon/dist/domain/terminal/terminal-service.d.ts.map +1 -1
  679. package/node_modules/@openrig/daemon/dist/domain/terminal/terminal-service.js +50 -13
  680. package/node_modules/@openrig/daemon/dist/domain/terminal/terminal-service.js.map +1 -1
  681. package/node_modules/@openrig/daemon/dist/domain/types.d.ts +13 -0
  682. package/node_modules/@openrig/daemon/dist/domain/types.d.ts.map +1 -1
  683. package/node_modules/@openrig/daemon/dist/domain/types.js.map +1 -1
  684. package/node_modules/@openrig/daemon/dist/domain/user-settings/settings-browser.d.ts +33 -0
  685. package/node_modules/@openrig/daemon/dist/domain/user-settings/settings-browser.d.ts.map +1 -0
  686. package/node_modules/@openrig/daemon/dist/domain/user-settings/settings-browser.js +261 -0
  687. package/node_modules/@openrig/daemon/dist/domain/user-settings/settings-browser.js.map +1 -0
  688. package/node_modules/@openrig/daemon/dist/domain/view-event-bridge.d.ts.map +1 -1
  689. package/node_modules/@openrig/daemon/dist/domain/view-event-bridge.js +2 -0
  690. package/node_modules/@openrig/daemon/dist/domain/view-event-bridge.js.map +1 -1
  691. package/node_modules/@openrig/daemon/dist/domain/view-projector.d.ts +2 -0
  692. package/node_modules/@openrig/daemon/dist/domain/view-projector.d.ts.map +1 -1
  693. package/node_modules/@openrig/daemon/dist/domain/view-projector.js +5 -1
  694. package/node_modules/@openrig/daemon/dist/domain/view-projector.js.map +1 -1
  695. package/node_modules/@openrig/daemon/dist/domain/watchdog-policy-engine.d.ts +4 -0
  696. package/node_modules/@openrig/daemon/dist/domain/watchdog-policy-engine.d.ts.map +1 -1
  697. package/node_modules/@openrig/daemon/dist/domain/watchdog-policy-engine.js +8 -1
  698. package/node_modules/@openrig/daemon/dist/domain/watchdog-policy-engine.js.map +1 -1
  699. package/node_modules/@openrig/daemon/dist/domain/watchdog-scheduler.d.ts +3 -0
  700. package/node_modules/@openrig/daemon/dist/domain/watchdog-scheduler.d.ts.map +1 -1
  701. package/node_modules/@openrig/daemon/dist/domain/watchdog-scheduler.js +3 -0
  702. package/node_modules/@openrig/daemon/dist/domain/watchdog-scheduler.js.map +1 -1
  703. package/node_modules/@openrig/daemon/dist/domain/workflow-exception-escalation.d.ts.map +1 -1
  704. package/node_modules/@openrig/daemon/dist/domain/workflow-exception-escalation.js +13 -32
  705. package/node_modules/@openrig/daemon/dist/domain/workflow-exception-escalation.js.map +1 -1
  706. package/node_modules/@openrig/daemon/dist/domain/workflow-exception-readiness.d.ts +39 -0
  707. package/node_modules/@openrig/daemon/dist/domain/workflow-exception-readiness.d.ts.map +1 -0
  708. package/node_modules/@openrig/daemon/dist/domain/workflow-exception-readiness.js +77 -0
  709. package/node_modules/@openrig/daemon/dist/domain/workflow-exception-readiness.js.map +1 -0
  710. package/node_modules/@openrig/daemon/dist/domain/workflow-exception-router.d.ts +3 -0
  711. package/node_modules/@openrig/daemon/dist/domain/workflow-exception-router.d.ts.map +1 -1
  712. package/node_modules/@openrig/daemon/dist/domain/workflow-exception-router.js +6 -1
  713. package/node_modules/@openrig/daemon/dist/domain/workflow-exception-router.js.map +1 -1
  714. package/node_modules/@openrig/daemon/dist/domain/workflow-exception.d.ts +6 -0
  715. package/node_modules/@openrig/daemon/dist/domain/workflow-exception.d.ts.map +1 -1
  716. package/node_modules/@openrig/daemon/dist/domain/workflow-exception.js +10 -3
  717. package/node_modules/@openrig/daemon/dist/domain/workflow-exception.js.map +1 -1
  718. package/node_modules/@openrig/daemon/dist/domain/workflow-guidance.d.ts +53 -0
  719. package/node_modules/@openrig/daemon/dist/domain/workflow-guidance.d.ts.map +1 -0
  720. package/node_modules/@openrig/daemon/dist/domain/workflow-guidance.js +212 -0
  721. package/node_modules/@openrig/daemon/dist/domain/workflow-guidance.js.map +1 -0
  722. package/node_modules/@openrig/daemon/dist/domain/workflow-instance-store.d.ts +2 -0
  723. package/node_modules/@openrig/daemon/dist/domain/workflow-instance-store.d.ts.map +1 -1
  724. package/node_modules/@openrig/daemon/dist/domain/workflow-instance-store.js +7 -0
  725. package/node_modules/@openrig/daemon/dist/domain/workflow-instance-store.js.map +1 -1
  726. package/node_modules/@openrig/daemon/dist/domain/workflow-planning-context.d.ts +3 -0
  727. package/node_modules/@openrig/daemon/dist/domain/workflow-planning-context.d.ts.map +1 -0
  728. package/node_modules/@openrig/daemon/dist/domain/workflow-planning-context.js +36 -0
  729. package/node_modules/@openrig/daemon/dist/domain/workflow-planning-context.js.map +1 -0
  730. package/node_modules/@openrig/daemon/dist/domain/workflow-projector.d.ts +11 -2
  731. package/node_modules/@openrig/daemon/dist/domain/workflow-projector.d.ts.map +1 -1
  732. package/node_modules/@openrig/daemon/dist/domain/workflow-projector.js +83 -73
  733. package/node_modules/@openrig/daemon/dist/domain/workflow-projector.js.map +1 -1
  734. package/node_modules/@openrig/daemon/dist/domain/workflow-reconciliation.d.ts +55 -0
  735. package/node_modules/@openrig/daemon/dist/domain/workflow-reconciliation.d.ts.map +1 -0
  736. package/node_modules/@openrig/daemon/dist/domain/workflow-reconciliation.js +228 -0
  737. package/node_modules/@openrig/daemon/dist/domain/workflow-reconciliation.js.map +1 -0
  738. package/node_modules/@openrig/daemon/dist/domain/workflow-runtime.d.ts +79 -2
  739. package/node_modules/@openrig/daemon/dist/domain/workflow-runtime.d.ts.map +1 -1
  740. package/node_modules/@openrig/daemon/dist/domain/workflow-runtime.js +97 -25
  741. package/node_modules/@openrig/daemon/dist/domain/workflow-runtime.js.map +1 -1
  742. package/node_modules/@openrig/daemon/dist/domain/workspace/project-catalog.d.ts +18 -0
  743. package/node_modules/@openrig/daemon/dist/domain/workspace/project-catalog.d.ts.map +1 -0
  744. package/node_modules/@openrig/daemon/dist/domain/workspace/project-catalog.js +66 -0
  745. package/node_modules/@openrig/daemon/dist/domain/workspace/project-catalog.js.map +1 -0
  746. package/node_modules/@openrig/daemon/dist/domain/workspace/project-read.d.ts +29 -0
  747. package/node_modules/@openrig/daemon/dist/domain/workspace/project-read.d.ts.map +1 -0
  748. package/node_modules/@openrig/daemon/dist/domain/workspace/project-read.js +107 -0
  749. package/node_modules/@openrig/daemon/dist/domain/workspace/project-read.js.map +1 -0
  750. package/node_modules/@openrig/daemon/dist/health-projection-surface.d.ts +1 -0
  751. package/node_modules/@openrig/daemon/dist/health-projection-surface.d.ts.map +1 -1
  752. package/node_modules/@openrig/daemon/dist/index.d.ts.map +1 -1
  753. package/node_modules/@openrig/daemon/dist/index.js +1 -0
  754. package/node_modules/@openrig/daemon/dist/index.js.map +1 -1
  755. package/node_modules/@openrig/daemon/dist/local-reading-surface.d.ts +3 -0
  756. package/node_modules/@openrig/daemon/dist/local-reading-surface.d.ts.map +1 -0
  757. package/node_modules/@openrig/daemon/dist/local-reading-surface.js +3 -0
  758. package/node_modules/@openrig/daemon/dist/local-reading-surface.js.map +1 -0
  759. package/node_modules/@openrig/daemon/dist/project-catalog-surface.d.ts +2 -0
  760. package/node_modules/@openrig/daemon/dist/project-catalog-surface.d.ts.map +1 -0
  761. package/node_modules/@openrig/daemon/dist/project-catalog-surface.js +2 -0
  762. package/node_modules/@openrig/daemon/dist/project-catalog-surface.js.map +1 -0
  763. package/node_modules/@openrig/daemon/dist/routes/activity.js +1 -1
  764. package/node_modules/@openrig/daemon/dist/routes/activity.js.map +1 -1
  765. package/node_modules/@openrig/daemon/dist/routes/attention.d.ts +3 -0
  766. package/node_modules/@openrig/daemon/dist/routes/attention.d.ts.map +1 -0
  767. package/node_modules/@openrig/daemon/dist/routes/attention.js +155 -0
  768. package/node_modules/@openrig/daemon/dist/routes/attention.js.map +1 -0
  769. package/node_modules/@openrig/daemon/dist/routes/config.d.ts +3 -1
  770. package/node_modules/@openrig/daemon/dist/routes/config.d.ts.map +1 -1
  771. package/node_modules/@openrig/daemon/dist/routes/config.js +11 -1
  772. package/node_modules/@openrig/daemon/dist/routes/config.js.map +1 -1
  773. package/node_modules/@openrig/daemon/dist/routes/files.d.ts +1 -1
  774. package/node_modules/@openrig/daemon/dist/routes/files.d.ts.map +1 -1
  775. package/node_modules/@openrig/daemon/dist/routes/files.js +4 -24
  776. package/node_modules/@openrig/daemon/dist/routes/files.js.map +1 -1
  777. package/node_modules/@openrig/daemon/dist/routes/missions.d.ts.map +1 -1
  778. package/node_modules/@openrig/daemon/dist/routes/missions.js +5 -2
  779. package/node_modules/@openrig/daemon/dist/routes/missions.js.map +1 -1
  780. package/node_modules/@openrig/daemon/dist/routes/proof.d.ts +3 -0
  781. package/node_modules/@openrig/daemon/dist/routes/proof.d.ts.map +1 -0
  782. package/node_modules/@openrig/daemon/dist/routes/proof.js +65 -0
  783. package/node_modules/@openrig/daemon/dist/routes/proof.js.map +1 -0
  784. package/node_modules/@openrig/daemon/dist/routes/review.d.ts.map +1 -1
  785. package/node_modules/@openrig/daemon/dist/routes/review.js +3 -2
  786. package/node_modules/@openrig/daemon/dist/routes/review.js.map +1 -1
  787. package/node_modules/@openrig/daemon/dist/routes/rig-mode.d.ts.map +1 -1
  788. package/node_modules/@openrig/daemon/dist/routes/rig-mode.js +67 -14
  789. package/node_modules/@openrig/daemon/dist/routes/rig-mode.js.map +1 -1
  790. package/node_modules/@openrig/daemon/dist/routes/rigs.d.ts.map +1 -1
  791. package/node_modules/@openrig/daemon/dist/routes/rigs.js +4 -3
  792. package/node_modules/@openrig/daemon/dist/routes/rigs.js.map +1 -1
  793. package/node_modules/@openrig/daemon/dist/routes/scopes.d.ts.map +1 -1
  794. package/node_modules/@openrig/daemon/dist/routes/scopes.js +62 -6
  795. package/node_modules/@openrig/daemon/dist/routes/scopes.js.map +1 -1
  796. package/node_modules/@openrig/daemon/dist/routes/seat.d.ts +4 -0
  797. package/node_modules/@openrig/daemon/dist/routes/seat.d.ts.map +1 -1
  798. package/node_modules/@openrig/daemon/dist/routes/seat.js +1 -1
  799. package/node_modules/@openrig/daemon/dist/routes/seat.js.map +1 -1
  800. package/node_modules/@openrig/daemon/dist/routes/slices.d.ts +2 -2
  801. package/node_modules/@openrig/daemon/dist/routes/slices.d.ts.map +1 -1
  802. package/node_modules/@openrig/daemon/dist/routes/slices.js +26 -3
  803. package/node_modules/@openrig/daemon/dist/routes/slices.js.map +1 -1
  804. package/node_modules/@openrig/daemon/dist/routes/spec-library.d.ts.map +1 -1
  805. package/node_modules/@openrig/daemon/dist/routes/spec-library.js +11 -2
  806. package/node_modules/@openrig/daemon/dist/routes/spec-library.js.map +1 -1
  807. package/node_modules/@openrig/daemon/dist/routes/startup.d.ts +7 -0
  808. package/node_modules/@openrig/daemon/dist/routes/startup.d.ts.map +1 -0
  809. package/node_modules/@openrig/daemon/dist/routes/startup.js +221 -0
  810. package/node_modules/@openrig/daemon/dist/routes/startup.js.map +1 -0
  811. package/node_modules/@openrig/daemon/dist/routes/terminal.d.ts.map +1 -1
  812. package/node_modules/@openrig/daemon/dist/routes/terminal.js +14 -4
  813. package/node_modules/@openrig/daemon/dist/routes/terminal.js.map +1 -1
  814. package/node_modules/@openrig/daemon/dist/routes/up.d.ts.map +1 -1
  815. package/node_modules/@openrig/daemon/dist/routes/up.js +2 -1
  816. package/node_modules/@openrig/daemon/dist/routes/up.js.map +1 -1
  817. package/node_modules/@openrig/daemon/dist/routes/views.d.ts.map +1 -1
  818. package/node_modules/@openrig/daemon/dist/routes/views.js +11 -1
  819. package/node_modules/@openrig/daemon/dist/routes/views.js.map +1 -1
  820. package/node_modules/@openrig/daemon/dist/routes/workflow.d.ts.map +1 -1
  821. package/node_modules/@openrig/daemon/dist/routes/workflow.js +43 -2
  822. package/node_modules/@openrig/daemon/dist/routes/workflow.js.map +1 -1
  823. package/node_modules/@openrig/daemon/dist/server.d.ts +2 -0
  824. package/node_modules/@openrig/daemon/dist/server.d.ts.map +1 -1
  825. package/node_modules/@openrig/daemon/dist/server.js +8 -0
  826. package/node_modules/@openrig/daemon/dist/server.js.map +1 -1
  827. package/node_modules/@openrig/daemon/dist/startup.d.ts.map +1 -1
  828. package/node_modules/@openrig/daemon/dist/startup.js +23 -6
  829. package/node_modules/@openrig/daemon/dist/startup.js.map +1 -1
  830. package/node_modules/@openrig/daemon/package.json +13 -1
  831. package/package.json +3 -2
  832. package/tui/dist/attention/attention-model.d.ts +4 -0
  833. package/tui/dist/attention/attention-model.d.ts.map +1 -0
  834. package/tui/dist/attention/attention-model.js +44 -0
  835. package/tui/dist/attention/attention-model.js.map +1 -0
  836. package/tui/dist/commands/help.d.ts +4 -0
  837. package/tui/dist/commands/help.d.ts.map +1 -0
  838. package/tui/dist/commands/help.js +42 -0
  839. package/tui/dist/commands/help.js.map +1 -0
  840. package/tui/dist/commands/registry.d.ts.map +1 -1
  841. package/tui/dist/commands/registry.js +18 -1
  842. package/tui/dist/commands/registry.js.map +1 -1
  843. package/tui/dist/config/config-model.d.ts +69 -0
  844. package/tui/dist/config/config-model.d.ts.map +1 -0
  845. package/tui/dist/config/config-model.js +239 -0
  846. package/tui/dist/config/config-model.js.map +1 -0
  847. package/tui/dist/crash-cart/from-emit.d.ts +5 -5
  848. package/tui/dist/crash-cart/from-emit.d.ts.map +1 -1
  849. package/tui/dist/crash-cart/from-emit.js +15 -9
  850. package/tui/dist/crash-cart/from-emit.js.map +1 -1
  851. package/tui/dist/crash-cart/keys.d.ts +1 -1
  852. package/tui/dist/crash-cart/keys.d.ts.map +1 -1
  853. package/tui/dist/crash-cart/keys.js +2 -0
  854. package/tui/dist/crash-cart/keys.js.map +1 -1
  855. package/tui/dist/crash-cart/start-daemon.d.ts +4 -0
  856. package/tui/dist/crash-cart/start-daemon.d.ts.map +1 -0
  857. package/tui/dist/crash-cart/start-daemon.js +12 -0
  858. package/tui/dist/crash-cart/start-daemon.js.map +1 -0
  859. package/tui/dist/daemon-client.d.ts +35 -6
  860. package/tui/dist/daemon-client.d.ts.map +1 -1
  861. package/tui/dist/daemon-client.js +96 -12
  862. package/tui/dist/daemon-client.js.map +1 -1
  863. package/tui/dist/detail.d.ts.map +1 -1
  864. package/tui/dist/detail.js +20 -7
  865. package/tui/dist/detail.js.map +1 -1
  866. package/tui/dist/execution/execution-model.d.ts +14 -0
  867. package/tui/dist/execution/execution-model.d.ts.map +1 -1
  868. package/tui/dist/execution/execution-model.js +48 -21
  869. package/tui/dist/execution/execution-model.js.map +1 -1
  870. package/tui/dist/execution/workflow-model.d.ts.map +1 -1
  871. package/tui/dist/execution/workflow-model.js +13 -1
  872. package/tui/dist/execution/workflow-model.js.map +1 -1
  873. package/tui/dist/health/health-model.d.ts.map +1 -1
  874. package/tui/dist/health/health-model.js +26 -34
  875. package/tui/dist/health/health-model.js.map +1 -1
  876. package/tui/dist/hydrate.d.ts +1 -1
  877. package/tui/dist/hydrate.d.ts.map +1 -1
  878. package/tui/dist/hydrate.js +105 -14
  879. package/tui/dist/hydrate.js.map +1 -1
  880. package/tui/dist/input.d.ts.map +1 -1
  881. package/tui/dist/input.js +20 -3
  882. package/tui/dist/input.js.map +1 -1
  883. package/tui/dist/live.d.ts +2 -0
  884. package/tui/dist/live.d.ts.map +1 -1
  885. package/tui/dist/live.js +17 -1
  886. package/tui/dist/live.js.map +1 -1
  887. package/tui/dist/local-reading.d.ts +54 -0
  888. package/tui/dist/local-reading.d.ts.map +1 -0
  889. package/tui/dist/local-reading.js +122 -0
  890. package/tui/dist/local-reading.js.map +1 -0
  891. package/tui/dist/main.js +216 -31
  892. package/tui/dist/main.js.map +1 -1
  893. package/tui/dist/motion.d.ts +2 -0
  894. package/tui/dist/motion.d.ts.map +1 -1
  895. package/tui/dist/motion.js +4 -0
  896. package/tui/dist/motion.js.map +1 -1
  897. package/tui/dist/reading.d.ts +36 -0
  898. package/tui/dist/reading.d.ts.map +1 -0
  899. package/tui/dist/reading.js +89 -0
  900. package/tui/dist/reading.js.map +1 -0
  901. package/tui/dist/render.d.ts +5 -0
  902. package/tui/dist/render.d.ts.map +1 -1
  903. package/tui/dist/render.js +184 -171
  904. package/tui/dist/render.js.map +1 -1
  905. package/tui/dist/scopes/scopes-model.d.ts +45 -0
  906. package/tui/dist/scopes/scopes-model.d.ts.map +1 -1
  907. package/tui/dist/scopes/scopes-model.js +68 -6
  908. package/tui/dist/scopes/scopes-model.js.map +1 -1
  909. package/tui/dist/sections.d.ts.map +1 -1
  910. package/tui/dist/sections.js +5 -3
  911. package/tui/dist/sections.js.map +1 -1
  912. package/tui/dist/startup.d.ts +88 -0
  913. package/tui/dist/startup.d.ts.map +1 -0
  914. package/tui/dist/startup.js +319 -0
  915. package/tui/dist/startup.js.map +1 -0
  916. package/tui/dist/state.d.ts.map +1 -1
  917. package/tui/dist/state.js +129 -16
  918. package/tui/dist/state.js.map +1 -1
  919. package/tui/dist/stylize.d.ts.map +1 -1
  920. package/tui/dist/stylize.js +10 -1
  921. package/tui/dist/stylize.js.map +1 -1
  922. package/tui/dist/terminals/terminal-model.d.ts +55 -0
  923. package/tui/dist/terminals/terminal-model.d.ts.map +1 -0
  924. package/tui/dist/terminals/terminal-model.js +95 -0
  925. package/tui/dist/terminals/terminal-model.js.map +1 -0
  926. package/tui/dist/types.d.ts +88 -1
  927. package/tui/dist/types.d.ts.map +1 -1
  928. package/ui/dist/assets/{index-wyX378xb.js → index-BVW54ItO.js} +165 -165
  929. package/ui/dist/index.html +1 -1
@@ -1,4 +1,10 @@
1
+ import { helpScreen } from "./commands/help.js";
2
+ import { commandFocusVisible } from "./motion.js";
3
+ import { attentionLines } from "./attention/attention-model.js";
4
+ import { fileLines, externalLines, fileTargetForPath, referenceLines, referenceAction } from "./reading.js";
1
5
  import { DEFAULT_TIME_ZONE, displayTime } from "./time.js";
6
+ import { startupLines } from "./startup.js";
7
+ import { configLines } from "./config/config-model.js";
2
8
  import { connectionsLines } from "./connections/connections-model.js";
3
9
  // Hand-rolled ANSI renderer (Phase-0 substrate decision). Pure function:
4
10
  // (state, snapshot) → {lines, hitMap, explorerRows}. BOTH panes emit hit
@@ -7,10 +13,8 @@ import { connectionsLines } from "./connections/connections-model.js";
7
13
  // SAME semantic actions commands produce (PIN 1). Isolated seam: a substrate
8
14
  // swap touches only this module (spike verdict revisit trigger).
9
15
  import { computeExplorerRows, findAgent, findSpec, findAgentBySession, agentsRunningSpec, agentsRunningSpecTargets, specDetailArrowsScroll } from "./state.js";
10
- import { filterPalette } from "./commands/palette.js";
11
16
  import { scopesContentLines } from "./scopes/scopes-model.js";
12
17
  import { executionContentLines, executionSliceStripLines } from "./execution/execution-model.js";
13
- import { COMMAND_REGISTRY } from "./commands/registry.js";
14
18
  import { navigatorDisplay } from "./navigator.js";
15
19
  import { renderGraphStyle } from "./topology/render-graph.js";
16
20
  import { buildPulseModel } from "./pulse/pulse-model.js";
@@ -20,6 +24,7 @@ import { buildLedgerExplorer } from "./crash-cart/ledger-explorer.js";
20
24
  import { runtimeMarkSegs } from "./topology/runtime-marks.js";
21
25
  import { barCells, flashActive, reducedMotion, spinnerFrame } from "./motion.js";
22
26
  import { explorerWidth, MOTION_FRAME_MS } from "./visual-layout.js";
27
+ import { terminalLines } from "./terminals/terminal-model.js";
23
28
  import { detailPage, fieldLine, sectionRule, listItem, alignedRow, LABEL_W, wrapDetailLines } from "./detail.js";
24
29
  import { healthAgentLines, healthDetailLines, healthListLines, healthSummaryLine } from "./health/health-model.js";
25
30
  function pad(text, width) {
@@ -432,11 +437,11 @@ function timeZoneLines(state, width) {
432
437
  listItem("Back · Esc", { type: "back" }),
433
438
  ], width);
434
439
  }
435
- function specTabsLine(state, name) {
440
+ function specTabsLine(state) {
436
441
  const active = state.viewTab === "topology" || state.viewTab === "yaml" ? state.viewTab : "configuration";
437
442
  const labels = ["topology", "configuration", "yaml"];
438
443
  const parts = labels.map((tab) => (tab === active ? `[ ${tab.toUpperCase()} ]` : ` ${tab.toUpperCase()} `));
439
- const text = `rig spec ${name} ${parts.join(" ")}`;
444
+ const text = parts.join(" ");
440
445
  return {
441
446
  text,
442
447
  zones: labels.map((tab, index) => {
@@ -467,6 +472,25 @@ function sourceProvenance(spec) {
467
472
  return "user library";
468
473
  return spec.sourceState === "library_item" ? "library" : "source unknown";
469
474
  }
475
+ function specSourceLines(spec, snap) {
476
+ if (!spec.sourcePath)
477
+ return [{ text: "Source path unavailable; no current-file claim." }];
478
+ const target = fileTargetForPath(spec.resolvedSourcePath ?? spec.sourcePath, snap.fileRoots ?? []) ?? { root: "", path: spec.sourcePath };
479
+ const lines = [fieldLine({ label: "source", value: `${displayPath(spec.sourcePath, 56)} · ${sourceProvenance(spec)}` }), listItem("View current source", { type: "file-open", target })];
480
+ if (!target.root)
481
+ lines.push({ text: "Source is not mapped to a configured readable root." });
482
+ if (target.root) {
483
+ lines.push({ text: `Readable root: ${target.root}` }, ...referenceLines(spec.description ?? "", target));
484
+ const markdownLinks = new Set([...((spec.description ?? "").matchAll(/\[[^\]\n]+\]\(<?([^\s)>]+)/g))].map((match) => match[1]));
485
+ // Prose paths stay relative to the named source, not an inferred checkout.
486
+ for (const match of (spec.description ?? "").matchAll(/(?:[\w.-]+\/)+[\w.-]+\.(?:md|txt|ya?ml)(?:#[\w-]+)?/g)) {
487
+ if (markdownLinks.has(match[0]))
488
+ continue;
489
+ lines.push(listItem(`Reference: ${match[0]} · relative to source`, referenceAction(target, match[0])));
490
+ }
491
+ }
492
+ return lines;
493
+ }
470
494
  function displayPath(path, max = 68) {
471
495
  if (path.length <= max)
472
496
  return path;
@@ -630,6 +654,12 @@ function instanceContentLines(state, snap, host, contentWidth, motion) {
630
654
  return lines;
631
655
  }
632
656
  function contentLines(state, snap, contentWidth, motion) {
657
+ if (state.file) {
658
+ const read = JSON.stringify(snap.fileRead?.target) === JSON.stringify(state.file) ? snap.fileRead?.result : null;
659
+ return [...(state.project ? wrapDetailLines([{ text: `Project ${state.project.id} · ${state.project.root}` }], contentWidth) : []), ...fileLines(read, state.file, contentWidth)];
660
+ }
661
+ if (state.externalUrl)
662
+ return externalLines(state.externalUrl, contentWidth);
633
663
  const contentWidthForGraph = contentWidth;
634
664
  void contentWidthForGraph;
635
665
  const lines = [];
@@ -637,6 +667,10 @@ function contentLines(state, snap, contentWidth, motion) {
637
667
  return timeZoneLines(state, contentWidth);
638
668
  if (state.recentOpen)
639
669
  return recentDetailLines(state, snap, contentWidth);
670
+ if (state.section === "terminals")
671
+ return terminalLines(state, snap, contentWidth);
672
+ if (state.section === "config")
673
+ return configLines(state, snap, contentWidth);
640
674
  if (state.section === "connections")
641
675
  return connectionsLines(snap, contentWidth, state.timeZone);
642
676
  if (state.healthOpen)
@@ -676,6 +710,9 @@ function contentLines(state, snap, contentWidth, motion) {
676
710
  const rigName = state.drill.find((d) => d.kind === "rig")?.name ?? snap.hosts[0]?.rigs[0]?.name;
677
711
  const rig = host?.rigs.find((candidate) => candidate.name === rigName);
678
712
  if (!rig || !host) {
713
+ const notLoaded = snap.readErrors.find((error) => error.startsWith("Live data not loaded"));
714
+ if (notLoaded)
715
+ return [{ text: notLoaded }];
679
716
  // round-6 (guard): the ROOT topology branch consumes the OWNER's load
680
717
  // truth like every other read surface — a real in-flight cold start
681
718
  // renders the spinner; after settlement only a NAMED rigs-summary
@@ -754,7 +791,7 @@ function contentLines(state, snap, contentWidth, motion) {
754
791
  lines.push({ text: ` style: ${state.graphStyle} · style hatchet|braille|braille-fallback rides the command bar` });
755
792
  return lines;
756
793
  }
757
- lines.push(listItem("Configuration and human routes", { type: "jump", section: "connections" }));
794
+ lines.push(listItem("CONFIG · instance settings", { type: "jump", section: "config" }));
758
795
  lines.push(healthSummaryLine(snap, healthScope, contentWidth));
759
796
  lines.push({ text: state.filter ? `/ filter agents: ${state.filter} · / replace · esc clear` : "/ filter agents…" });
760
797
  if (state.viewTab === "overview") {
@@ -844,13 +881,13 @@ function contentLines(state, snap, contentWidth, motion) {
844
881
  if (leaf?.kind === "spec") {
845
882
  const spec = findSpec(snap, leaf.name);
846
883
  if (!spec)
847
- return [{ text: `spec "${leaf.name}" not in the current snapshot` }];
884
+ return [{ text: snap.readErrors.find((error) => error.startsWith("specs-library")) ?? (!snap.specsLoaded ? "Specs catalog read pending" : `spec "${leaf.name}" not in the current catalog`) }];
848
885
  if (spec.kind === "rig")
849
- lines.push(specTabsLine(state, spec.name));
886
+ lines.push(specTabsLine(state));
850
887
  lines.push({ text: `${spec.kind} spec ${spec.name}` });
851
888
  lines.push(fieldLine({ label: "purpose", value: spec.description ?? "not declared in the available source" }));
852
889
  lines.push(fieldLine({ label: "provenance", value: `${sourceProvenance(spec)} · ${spec.sourceState ?? "source state not served"}` }));
853
- lines.push(fieldLine({ label: "source", value: spec.sourcePath ?? "path unavailable" }));
890
+ lines.push(...specSourceLines(spec, snap));
854
891
  lines.push({ text: " Authored declaration. Resource availability is not the effective loadout of a running seat." });
855
892
  lines.push(sectionRule("Observed consumers · open for effective runtime/configuration", contentWidth));
856
893
  for (const consumer of spec.consumers ?? []) {
@@ -867,8 +904,6 @@ function contentLines(state, snap, contentWidth, motion) {
867
904
  if (spec.sourceUnavailable)
868
905
  return wrapDetailLines([...lines, { text: ` Source unavailable: ${spec.sourceUnavailable}` }], contentWidth);
869
906
  if (spec.kind === "rig") {
870
- if (spec.sourcePath)
871
- lines.push(fieldLine({ label: "source", value: `${displayPath(spec.sourcePath, 56)} · ${sourceProvenance(spec)}` }));
872
907
  if (state.viewTab === "topology") {
873
908
  // ROUND-4 item 1: the established table treatment, not unformatted rows
874
909
  const nodes = spec.graph?.nodes ?? [];
@@ -990,111 +1025,64 @@ function contentLines(state, snap, contentWidth, motion) {
990
1025
  }
991
1026
  return wrapDetailLines(lines, contentWidth);
992
1027
  }
993
- lines.push({ text: "SPEC LIBRARY" });
994
- lines.push({ text: state.filter ? `/ filter specs: ${state.filter} · / replace · esc clear` : "/ filter specs…" });
995
- // mirrors the explorer exactly (same grouping, same expansion state, same
996
- // filter-overrides-collapse rule) — glance consistency across panes
997
- const expandedSet = new Set(state.expanded);
998
- for (const kind of ["rig", "agent", "workflow"]) {
999
- const shown = snap.specs.filter((s) => s.kind === kind).filter((s) => !state.filter || s.name.includes(state.filter));
1000
- if (shown.length === 0 && !snap.specs.some((s) => s.kind === kind))
1001
- continue;
1002
- lines.push({ text: ` ${kind.toUpperCase()} (${shown.length})` });
1003
- if (kind !== "agent") {
1004
- for (const s of shown)
1005
- lines.push({ text: ` ▪ ${s.name}`, action: { type: "drill", resource: "spec", name: s.name } });
1006
- continue;
1007
- }
1008
- const groups = new Map();
1009
- for (const s of shown) {
1010
- const namespace = s.namespace ?? "(root)";
1011
- groups.set(namespace, [...(groups.get(namespace) ?? []), s]);
1012
- }
1013
- for (const [namespace, specs] of [...groups.entries()].sort(([a], [b]) => a.localeCompare(b))) {
1014
- const open = namespace === "(root)" || expandedSet.has(`folder:${namespace}`) || !!state.filter;
1015
- if (namespace !== "(root)")
1016
- lines.push({
1017
- text: ` ${open ? "▾" : "▸"} ${namespace}/ (${specs.length})`,
1018
- action: { type: "toggle-expand", key: `folder:${namespace}` },
1019
- });
1020
- if (!open)
1021
- continue;
1022
- for (const s of specs)
1023
- lines.push({
1024
- text: `${namespace === "(root)" ? " " : " "}▪ ${s.name}`,
1025
- action: { type: "drill", resource: "spec", name: s.name },
1026
- });
1027
- }
1028
- }
1029
- if (snap.specs.length === 0) {
1030
- // round-5 (guard): spin only while the owner is loading; settled empty
1031
- // is PROVEN empty and a settled failure is named — neither spins
1032
- if (motion.loading) {
1033
- if (!motion.reduced)
1034
- motion.used = true;
1035
- lines.push({ text: ` ${motion.frame} library read pending — honest-empty` });
1036
- }
1037
- else if (snap.readErrors.some((e) => e.startsWith("specs-library"))) {
1038
- lines.push({ text: " ✕ library read failed — named in the status line" });
1039
- }
1040
- else {
1041
- lines.push({ text: " (library empty — proven, no specs served)" });
1042
- }
1043
- }
1044
- return lines;
1045
- }
1046
- if (state.section === "needs") {
1047
- lines.push({ text: "NEEDS-YOU" });
1048
- for (const item of snap.needs) {
1049
- // open/navigate is the ONLY in-TUI action (B3): the click target joins
1050
- // the item's session back to topology; unresolvable targets never
1051
- // advertise a control that can only fail.
1052
- lines.push(needsLine(item.source === "agent" ? " ☐ " : " ⚑ ", item, snap));
1053
- }
1054
- if (snap.needs.length === 0 && snap.humanQueueProbed)
1055
- lines.push({ text: " (no fleet attention items right now)" });
1056
- if (snap.hostsDown.length > 0) {
1057
- // composed BESIDE the items (a separate shipped read), never into the item shape
1058
- lines.push({ text: "" });
1059
- lines.push({ text: " hosts/rigs down:" });
1060
- // NB: glyphs here must be single-cell — U+26D4 ⛔ is emoji-width (2 cells)
1061
- // and wraps a full-width padded line, shearing every row below it.
1062
- for (const h of snap.hostsDown)
1063
- lines.push({ text: ` ✖ ${alignedRow([[h.hostId, 28], [h.status, 26]])} ${h.error ?? ""}`.trimEnd() });
1028
+ if (state.filter)
1029
+ lines.push({ text: `/ filter specs: ${state.filter} · / replace · esc clear` });
1030
+ const selected = computeExplorerRows(state, snap)[state.selection]?.action;
1031
+ const spec = selected?.type === "drill" && selected.resource === "spec" ? findSpec(snap, selected.name) : null;
1032
+ if (spec) {
1033
+ lines.push({ text: `${spec.name} · ${spec.kind} · ${sourceProvenance(spec)}` });
1034
+ lines.push({ text: "" }, { text: spec.description?.trim() || "Purpose not declared in the available source." });
1035
+ if (spec.kind === "rig")
1036
+ lines.push(fieldLine({ label: "contents", value: `${spec.pods?.length ?? 0} pods · ${spec.pods?.reduce((n, p) => n + p.members.length, 0) ?? spec.legacyNodes?.length ?? 0} members · ${spec.agentRefs?.join(", ") || "no member references served"}` }));
1037
+ else if (spec.kind === "agent")
1038
+ lines.push(fieldLine({ label: "contents", value: `${spec.runtime ?? "runtime not declared"} · ${(spec.skills ?? []).length} skills · ${(spec.startupFiles ?? []).length} startup files` }));
1039
+ else
1040
+ lines.push(fieldLine({ label: "contents", value: `${spec.rolesCount ?? "unknown"} roles · ${spec.stepsCount ?? "unknown"} steps` }));
1041
+ lines.push({ text: "" }, listItem("Read details · Enter", { type: "drill", resource: "spec", name: spec.name }), ...specSourceLines(spec, snap));
1042
+ if (spec.sourceUnavailable)
1043
+ lines.push({ text: `Source unavailable: ${spec.sourceUnavailable}` });
1064
1044
  }
1065
- lines.push({ text: "" });
1066
- if (!snap.humanQueueProbed) {
1067
- if (motion.loading) {
1068
- // region discipline (max ONE persistent animation): while a derived ⚑
1069
- // item pulses on this page, the pending spinner degrades to the honest
1070
- // static dot instead of animating beside it
1071
- const pulseVisible = snap.needs.some((item) => item.source === "derived") && !motion.reduced;
1072
- const spin = pulseVisible ? "·" : motion.frame;
1073
- if (!pulseVisible && !motion.reduced)
1074
- motion.used = true;
1075
- lines.push({ text: ` ${spin} human-queue: not yet known (read pending)` });
1076
- }
1077
- else {
1078
- // round-5 (guard): settled-unprobed is a static truth (hosts down or
1079
- // registry unavailable) — "(read pending)" would be a false claim
1080
- lines.push({ text: " human-queue: not yet known (hosts unreachable or registry unavailable)" });
1045
+ else {
1046
+ lines.push({ text: "SPEC LIBRARY" }, { text: "Choose a spec at left to preview its purpose, contents and source." }, { text: "Enter reads details · / filters · source opens current disk content" }, { text: "" });
1047
+ for (const kind of ["rig", "agent", "workflow"])
1048
+ lines.push({ text: `${kind}: ${snap.specs.filter((spec) => spec.kind === kind).length} available` });
1049
+ if (!snap.specs.length) {
1050
+ if (motion.loading) {
1051
+ if (!motion.reduced)
1052
+ motion.used = true;
1053
+ lines.push({ text: ` ${motion.frame} library read pending` });
1054
+ }
1055
+ else {
1056
+ const failure = snap.readErrors.find((error) => error.startsWith("specs-library"));
1057
+ const notLoaded = snap.readErrors.find((error) => error.startsWith("Live data not loaded"));
1058
+ lines.push({ text: failure ? ` ✕ library read failed: ${failure}` : notLoaded ?? (snap.specsLoaded === false ? "Specs catalog read unavailable" : " (library empty — proven, no specs served)") });
1059
+ }
1081
1060
  }
1082
1061
  }
1083
- else if (!snap.needs.some((item) => item.source === "agent"))
1084
- lines.push({ text: " human-queue: no items (proven empty — surfacing adoption pending)" });
1085
- return lines;
1062
+ return wrapDetailLines(lines, contentWidth);
1086
1063
  }
1064
+ if (state.section === "needs")
1065
+ return attentionLines(state, snap, contentWidth);
1087
1066
  if (state.section === "scopes") {
1088
- if (!state.scopesMission && snap.execution) {
1089
- const selected = snap.execution;
1090
- const instances = selected.lifecycle_instances;
1067
+ const catalog = snap.projects;
1068
+ if (!state.project && catalog !== undefined)
1091
1069
  return wrapDetailLines([
1092
- { text: "SCOPES · choose a mission in the explorer" },
1093
- listItem(`Default mission · ${selected.mission}`, { type: "scopes-mission-open", mission: selected.mission }),
1094
- { text: ` Workflows: ${instances ? instances.map((instance) => String(instance.status ?? "unknown")).join(", ") || "none bound" : "projection unavailable"}` },
1095
- { text: ` Execution snapshot: ${displayTime(selected.derived_at, state.timeZone)}. Other missions load when selected.` },
1070
+ { text: "PROJECTS · select a project" },
1071
+ { text: catalog ? `Catalog: ${catalog.catalogPath}` : "Project catalog unavailable or loading" },
1072
+ ...(snap.readErrors ?? []).map(text => ({ text })),
1073
+ ...(catalog?.projects ?? []).flatMap(p => [listItem(`${p.name} · ${p.id}`, { type: "project-select", id: p.id }), { text: p.root }, ...(p.error ? [{ text: `Unavailable: ${p.error}` }] : [])]),
1074
+ ...(catalog?.projects.length === 0 ? [{ text: "No projects declared in this catalog." }] : []),
1096
1075
  ], contentWidth);
1097
- }
1076
+ const identity = state.project ? wrapDetailLines([{ text: `PROJECT ${state.project.id}` }, { text: state.project.root }], contentWidth) : [];
1077
+ if (state.project && (snap.projectRead?.id !== state.project.id || snap.projectRead?.root !== state.project.root))
1078
+ return [...identity, { text: "Reading selected project…" }];
1079
+ const entry = catalog?.projects.find(p => p.id === state.project.id && p.root === state.project.root);
1080
+ const errors = (snap.readErrors ?? []).map(text => ({ text: `Unavailable: ${text}` }));
1081
+ const projectHeader = state.project ? [...identity, listItem("Read current source", { type: "project-source" }), ...wrapDetailLines(errors, contentWidth)] : [];
1082
+ if (state.project && (!entry || entry.error))
1083
+ return [...projectHeader, { text: "Choose a project again or go Back." }];
1084
+ if (state.project && !state.scopesMission)
1085
+ return [...projectHeader, { text: "Choose a mission" }, ...(snap.scopes ?? []).map(m => listItem(m.mission, { type: "scopes-mission-open", mission: m.mission })), ...(!snap.scopes?.length && !errors.length ? [{ text: "No missions found in this project." }] : [])];
1098
1086
  // SCOPES owns both levels. Both mission-graph and Explorer slice routes land
1099
1087
  // on the same execution-backed canonical detail; store-direct content is
1100
1088
  // composed into that page instead of surviving as a competing destination.
@@ -1105,27 +1093,27 @@ function contentLines(state, snap, contentWidth, motion) {
1105
1093
  ? (snap.scopes ?? []).find((m) => m.mission === sel.mission)?.slices.find((sl) => sl.dirName === sel.slice) ?? null
1106
1094
  : null;
1107
1095
  if (state.executionOpen && execution) {
1108
- return executionContentLines(execution, snap.scopes, snap.readErrors, state.executionOpen, contentWidth, false, snap.sliceDetail, {
1109
- collapseReqs: state.scopesCollapseReqs,
1110
- narrative: state.scopesNarrative,
1111
- }, state.timeZone);
1096
+ return [...projectHeader, ...executionContentLines(execution, snap.scopes, snap.readErrors, state.executionOpen, contentWidth, false, snap.sliceDetail, {
1097
+ collapseReqs: state.scopesCollapseReqs,
1098
+ narrative: state.scopesNarrative,
1099
+ }, state.timeZone)];
1112
1100
  }
1113
1101
  if (detail && execution) {
1114
- return executionContentLines(execution, snap.scopes, snap.readErrors, `slice:${detail.id ?? detail.dirName}`, contentWidth, false, snap.sliceDetail, {
1115
- collapseReqs: state.scopesCollapseReqs,
1116
- narrative: state.scopesNarrative,
1117
- }, state.timeZone);
1102
+ return [...projectHeader, ...executionContentLines(execution, snap.scopes, snap.readErrors, `slice:${detail.id ?? detail.dirName}`, contentWidth, false, snap.sliceDetail, {
1103
+ collapseReqs: state.scopesCollapseReqs,
1104
+ narrative: state.scopesNarrative,
1105
+ }, state.timeZone)];
1118
1106
  }
1119
1107
  if (!detail && missionName) {
1120
1108
  const lines = executionContentLines(execution, snap.scopes, snap.readErrors, state.executionOpen, contentWidth, !snap.hydratedAt || snap.executionMission !== missionName, undefined, undefined, state.timeZone);
1121
- return execution ? lines : [{ text: ` ${missionName} EXECUTION` }, ...lines];
1109
+ return [...projectHeader, ...(execution ? lines : [{ text: ` ${missionName} EXECUTION` }, ...lines])];
1122
1110
  }
1123
- return scopesContentLines(detail, missionName, {
1124
- collapseReqs: state.scopesCollapseReqs,
1125
- narrative: state.scopesNarrative,
1126
- width: contentWidth,
1127
- executionStrip: detail ? executionSliceStripLines(null, detail.id ?? detail.dirName, detail.dirName, contentWidth, detail.status) : undefined,
1128
- });
1111
+ return [...projectHeader, ...scopesContentLines(detail, missionName, {
1112
+ collapseReqs: state.scopesCollapseReqs,
1113
+ narrative: state.scopesNarrative,
1114
+ width: contentWidth,
1115
+ executionStrip: detail ? executionSliceStripLines(null, detail.id ?? detail.dirName, detail.dirName, contentWidth, detail.status) : undefined,
1116
+ })];
1129
1117
  }
1130
1118
  return [{ text: `(${state.section})` }];
1131
1119
  }
@@ -1168,11 +1156,15 @@ function keybindHints(state) {
1168
1156
  // hint hid exactly where it was needed). When ↑↓ themselves scroll (a
1169
1157
  // scrollable spec detail), the nav label says so; otherwise ↑↓ move and the
1170
1158
  // page keys carry the scroll.
1159
+ if (state.section === "config")
1160
+ return state.configKey
1161
+ ? `${specDetailArrowsScroll(state) ? "↑↓ scroll" : "↑↓ move"} · esc back · v select/copy · refresh · q quit`
1162
+ : "↑↓ move · ←→ pane · ⏎ open · / search · esc back · refresh · q quit";
1171
1163
  const arrowsScroll = specDetailArrowsScroll(state);
1172
1164
  const nav = arrowsScroll ? "↑↓ scroll" : "↑↓ move";
1173
1165
  const pageScroll = state.contentMaxOffset > 0 && !arrowsScroll ? "⇞⇟ scroll · " : "";
1174
1166
  const filter = state.filter ? "/ replace · esc clear" : "/ filter";
1175
- return `${nav} · ←→ pane · ⏎ open · ${pageScroll}: command · ${filter} · v select/copy · f footer · q quit`;
1167
+ return `${nav} · ←→ pane · ⏎ open · ${pageScroll}: command · ${filter} · S startup · v select/copy · f footer · q quit`;
1176
1168
  }
1177
1169
  /** The PULSE view renders FULL-WIDTH with NO explorer sidebar (increment 2). A
1178
1170
  * minimal self-contained screen: cmd bar + a full-width titled rule + the pulse
@@ -1241,7 +1233,7 @@ function renderPulseScreen(state, snap, options, inputLine) {
1241
1233
  const contentTargets = [];
1242
1234
  const flashRows = [];
1243
1235
  let flashAck = false;
1244
- lines.push(pad(`cmd ▸ ${inputLine}▊${inputLine ? "" : " Tab complete · ? help · timezone"}`, cols));
1236
+ lines.push(pad(`cmd ▸ ${inputLine}▊${load.stale ? " · readiness unconfirmed — refreshing or authority unavailable" : load.connection && load.connection !== "connected" ? " · live updates unavailable — last HTTP basis; quiet refresh active" : inputLine ? "" : " Tab complete · ? help · timezone"}`, cols));
1245
1237
  if (options.completion) {
1246
1238
  lines.push(pad(options.completion.message, cols));
1247
1239
  for (const candidate of options.completion.candidates.slice(0, 4))
@@ -1249,21 +1241,6 @@ function renderPulseScreen(state, snap, options, inputLine) {
1249
1241
  if (options.completion.candidates.length > 4)
1250
1242
  lines.push(pad(" … keep typing to narrow matches", cols));
1251
1243
  }
1252
- // REGISTRY I3 — the palette overlay: fuzzy rows over the ONE registry; unavailable
1253
- // entries render DIMMED-WITH-REASON, never hidden (PM pin); bounded height.
1254
- if (state.palette) {
1255
- const rows = filterPalette(state.palette.query, COMMAND_REGISTRY, options.commandContext ?? "standard");
1256
- const sel = Math.min(state.palette.selection, Math.max(0, rows.length - 1));
1257
- lines.push(pad(`? ${state.palette.query}▊ (${rows.length} commands · ↑↓ · ⏎ run · esc close)`, cols));
1258
- for (let i = 0; i < Math.min(rows.length, 8); i += 1) {
1259
- const r = rows[i];
1260
- const mark = i === sel ? "▸" : " ";
1261
- const label = `${r.entry.name}${r.entry.args ? " " + r.entry.args : ""}`;
1262
- const alias = r.entry.aliases.length ? ` (${r.entry.aliases.join(",")})` : "";
1263
- const tail = r.available ? r.entry.description : `${r.entry.description} — unavailable: ${r.reason}`;
1264
- lines.push(pad(`${mark} ${label}${alias} ${tail}`, cols));
1265
- }
1266
- }
1267
1244
  const explorerTitle = state.focusedPane === "explorer" ? "{ EXPLORER }" : "EXPLORER";
1268
1245
  const contentTitle = state.focusedPane === "content" ? "{ PULSE }" : "PULSE";
1269
1246
  lines.push(paneRule(cols, explW, "top", explorerTitle, contentTitle));
@@ -1403,7 +1380,7 @@ function wrapContentLines(content, width) {
1403
1380
  }
1404
1381
  const chunk = rest.slice(0, cut).trimEnd();
1405
1382
  rest = rest.slice(cut).replace(/^\s+/, "");
1406
- out.push(first ? { text: chunk, segs: item.segs } : { text: indent + chunk });
1383
+ out.push(first ? { text: chunk, segs: item.segs, action: item.action } : { text: indent + chunk });
1407
1384
  first = false;
1408
1385
  }
1409
1386
  }
@@ -1413,6 +1390,7 @@ function crashCartShell(content, led, contentTitle, cols, rows, inputLine, opts)
1413
1390
  const explW = explorerWidth(cols);
1414
1391
  const lines = [];
1415
1392
  const segRows = {};
1393
+ const hitMap = [];
1416
1394
  lines.push(pad(`cmd ▸ ${inputLine}▊`, cols));
1417
1395
  lines.push(paneRule(cols, explW, "top", "{ EXPLORER }", contentTitle));
1418
1396
  // The explorer's source note, then any discovered rigs (name + seat count).
@@ -1431,6 +1409,8 @@ function crashCartShell(content, led, contentTitle, cols, rows, inputLine, opts)
1431
1409
  const left = pad(leftRows[i] ?? "", explW);
1432
1410
  const citem = content[scroll + i];
1433
1411
  const contentText = (citem?.text ?? "").slice(0, contentWidth);
1412
+ if (citem?.action)
1413
+ hitMap.push({ y, x1: explW + 2, x2: cols, action: citem.action });
1434
1414
  lines.push(pad(`${left}┃ ${contentText}`, cols));
1435
1415
  if (citem?.segs)
1436
1416
  segRows[y] = truncateSegs(citem.segs, contentWidth);
@@ -1444,7 +1424,7 @@ function crashCartShell(content, led, contentTitle, cols, rows, inputLine, opts)
1444
1424
  return {
1445
1425
  lines: lines.slice(0, rows),
1446
1426
  explorerWidth: explW,
1447
- hitMap: [],
1427
+ hitMap,
1448
1428
  contentTargets: [],
1449
1429
  contentMaxOffset,
1450
1430
  explorerRows: [],
@@ -1452,8 +1432,36 @@ function crashCartShell(content, led, contentTitle, cols, rows, inputLine, opts)
1452
1432
  };
1453
1433
  }
1454
1434
  export function renderScreen(state, snap, options = {}, inputLine = "") {
1435
+ if (state.palette)
1436
+ return helpScreen(state.palette, options.commandContext ?? "standard", options.cols ?? 120, options.rows ?? 32);
1437
+ const screen = renderBody(state, snap, options, inputLine);
1438
+ const commandReady = !options.startup?.open && !options.restore && !options.unavailable && (!options.daemonState || options.daemonState === "up");
1439
+ if (commandReady) {
1440
+ const reduced = reducedMotion();
1441
+ if (!commandFocusVisible(options.nowMs ?? 0, inputLine.length > 0, reduced)) {
1442
+ const line = screen.lines[0];
1443
+ screen.lines[0] = line.slice(0, 6) + " " + line.slice(7);
1444
+ }
1445
+ screen.commandMotionActive = !reduced && inputLine.length === 0;
1446
+ }
1447
+ return screen;
1448
+ }
1449
+ function renderBody(state, snap, options = {}, inputLine = "") {
1455
1450
  const { cols = 120, rows = 32, nowMs = 0 } = options;
1456
- const explW = explorerWidth(cols);
1451
+ const fullReading = !options.startup?.open && (!!state.file || !!state.externalUrl || (cols <= 90 && state.section === "specs" && state.drill.length > 0));
1452
+ const explW = fullReading ? 0 : explorerWidth(cols);
1453
+ if (options.startup?.open) {
1454
+ const startup = options.startup;
1455
+ const content = wrapContentLines(startupLines(startup).map((line) => ({ ...line,
1456
+ text: line.text.replace(/\x1b\[[0-9;?]*[A-Za-z]/g, "").replace(/[\x00-\x1f\x7f]/g, " ")
1457
+ .replace(/(https?:\/\/)[^\s/@]+:[^\s/@]+@/gi, "$1[redacted]@").replace(/Bearer\s+[^\s]+/gi, "Bearer [redacted]"),
1458
+ })), Math.max(1, cols - explW - 2));
1459
+ const selected = content.findIndex((line) => line.action?.type === "startup" && line.action.key === `select:${startup.local?.selected ?? startup.selected}`);
1460
+ const scroll = startup.local && !startup.local.result.entries ? startup.local.scroll : startup.expanded ? startup.scroll : Math.max(0, selected - Math.max(1, rows - 12));
1461
+ const screen = crashCartShell(content, { note: "startup", rows: [] }, "START AND RETURN", cols, rows, "", { scroll });
1462
+ screen.lines[rows - 1] = pad("? Help · w Skip · L Local · ↑↓ scroll · Enter read · Esc Back · q Quit", cols);
1463
+ return screen;
1464
+ }
1457
1465
  // 5.2 crash-cart (shell-placement rework, ruling 3c6c2be0): daemon-DOWN renders as a CONTENT-PANE
1458
1466
  // view inside the standard shell — the explorer sidebar is ALWAYS present, ledger-fed + honestly
1459
1467
  // marked (from the SAME one-JSON discovery, never a second read). Content moves into the right pane
@@ -1470,13 +1478,33 @@ export function renderScreen(state, snap, options = {}, inputLine = "") {
1470
1478
  scroll: options.restoreScroll ?? 0,
1471
1479
  });
1472
1480
  }
1481
+ if (options.unavailable) {
1482
+ const detail = options.unavailable
1483
+ .replace(/\x1b\[[0-9;?]*[A-Za-z]/g, "")
1484
+ .replace(/[\x00-\x1f\x7f]/g, " ")
1485
+ .replace(/(https?:\/\/)[^\s/@]+:[^\s/@]+@/gi, "$1[redacted]@")
1486
+ .replace(/Bearer\s+[^\s]+/gi, "Bearer [redacted]");
1487
+ const summary = /NODE_MODULE_VERSION|ERR_DLOPEN_FAILED|better-sqlite3/i.test(detail)
1488
+ ? "The installed native module cannot load in this runtime. Repair the installation prerequisite, then retry."
1489
+ : "Startup state could not be read. Retry after resolving the reported prerequisite.";
1490
+ return crashCartShell([
1491
+ { text: "Startup prerequisite unavailable" },
1492
+ { text: summary },
1493
+ { text: "Saved identity and conversation history have not been classified as missing." },
1494
+ { text: "" },
1495
+ { text: "r retry · d details · q quit" },
1496
+ ...(options.unavailableExpanded ? [{ text: "" }, { text: detail }] : []),
1497
+ ], { note: "state unavailable", rows: [] }, "STARTUP", cols, rows, inputLine, { wrap: true, scroll: options.restoreScroll ?? 0 });
1498
+ }
1473
1499
  if (options.daemonState === "down" && options.crashCart) {
1474
1500
  const led = buildLedgerExplorer(options.crashCart.foundOnHost);
1475
1501
  // B1 ROUND 10 — when a confirm is armed, render it at the TOP of the cockpit (where the operator
1476
1502
  // looks) so the first ⏎ is visibly acknowledged; wrap so the sentence is not clipped at the pane edge.
1477
- const content = options.confirm
1478
- ? [...renderConfirmBanner(options.confirm), ...renderCrashCartView(options.crashCart)]
1479
- : renderCrashCartView(options.crashCart);
1503
+ const content = options.starting
1504
+ ? [{ text: `Starting daemon at ${options.starting}…` }, { text: "Seats remain stopped until selected." }]
1505
+ : options.confirm
1506
+ ? [...renderConfirmBanner(options.confirm), ...renderCrashCartView(options.crashCart)]
1507
+ : renderCrashCartView(options.crashCart);
1480
1508
  return crashCartShell(content, led, "CRASH-CART", cols, rows, inputLine, options.confirm ? { wrap: true } : undefined);
1481
1509
  }
1482
1510
  if (options.daemonState === "unverified" && options.daemonEvidence) {
@@ -1505,7 +1533,7 @@ export function renderScreen(state, snap, options = {}, inputLine = "") {
1505
1533
  // current insertion point for EMPTY and non-empty buffers alike — the
1506
1534
  // shell accepts typing from the empty state, so the honest readiness
1507
1535
  // affordance must show BEFORE the first key (no new focus state; stylize
1508
- // gives the cell SGR blink; zero effect on hit geometry).
1536
+ // paints the cell; the shared motion clock controls its visibility).
1509
1537
  lines.push(pad(`cmd ▸ ${inputLine}▊${inputLine ? "" : " Tab complete · ? help · timezone"}`, cols));
1510
1538
  if (options.completion) {
1511
1539
  lines.push(pad(options.completion.message, cols));
@@ -1514,31 +1542,16 @@ export function renderScreen(state, snap, options = {}, inputLine = "") {
1514
1542
  if (options.completion.candidates.length > 4)
1515
1543
  lines.push(pad(" … keep typing to narrow matches", cols));
1516
1544
  }
1517
- // REGISTRY I3 — the palette overlay: fuzzy rows over the ONE registry; unavailable
1518
- // entries render DIMMED-WITH-REASON, never hidden (PM pin); bounded height.
1519
- if (state.palette) {
1520
- const rows = filterPalette(state.palette.query, COMMAND_REGISTRY, options.commandContext ?? "standard");
1521
- const sel = Math.min(state.palette.selection, Math.max(0, rows.length - 1));
1522
- lines.push(pad(`? ${state.palette.query}▊ (${rows.length} commands · ↑↓ · ⏎ run · esc close)`, cols));
1523
- for (let i = 0; i < Math.min(rows.length, 8); i += 1) {
1524
- const r = rows[i];
1525
- const mark = i === sel ? "▸" : " ";
1526
- const label = `${r.entry.name}${r.entry.args ? " " + r.entry.args : ""}`;
1527
- const alias = r.entry.aliases.length ? ` (${r.entry.aliases.join(",")})` : "";
1528
- const tail = r.available ? r.entry.description : `${r.entry.description} — unavailable: ${r.reason}`;
1529
- lines.push(pad(`${mark} ${label}${alias} ${tail}`, cols));
1530
- }
1531
- }
1532
- const sectionTitle = { topology: "TOPOLOGY", specs: "SPECS", needs: "NEEDS-YOU" }[state.section] ?? state.section.toUpperCase();
1545
+ const sectionTitle = { topology: "TOPOLOGY", specs: "SPECS", scopes: "PROJECTS", needs: "ATTENTION" }[state.section] ?? state.section.toUpperCase();
1533
1546
  // active-pane emphasis (k9s-class chrome): the focused pane's title is bracketed
1534
1547
  const explorerTitle = state.focusedPane === "explorer" ? "{ EXPLORER }" : "EXPLORER";
1535
1548
  const contentTitle = state.focusedPane === "content" ? `{ ${sectionTitle} }` : sectionTitle;
1536
- lines.push(paneRule(cols, explW, "top", explorerTitle, contentTitle));
1537
- const explorer = computeExplorerRows(state, snap);
1549
+ lines.push(fullReading ? pad(`━ ${state.file ? "READ" : state.externalUrl ? "EXTERNAL URL" : "SPECS"} · Esc / ← Back `, cols) : paneRule(cols, explW, "top", explorerTitle, contentTitle));
1550
+ const explorer = fullReading ? [] : computeExplorerRows(state, snap);
1538
1551
  // Slice-17: the file-tree re-skin is a DISPLAY transform only — rows, keys,
1539
1552
  // actions, and the hit-map all keep resolving against the row model above.
1540
1553
  const { labels: explorerDisplay, metas: explorerMetas } = navigatorDisplay(explorer, snap, explW - 1);
1541
- const content = contentLines(state, snap, Math.max(cols - explW - 2, 0), motion);
1554
+ const content = contentLines(state, snap, Math.max(cols - explW - (fullReading ? 1 : 2), 0), motion);
1542
1555
  const footer = state.footerOn ? snap.stream.at(-1) : undefined;
1543
1556
  // round-5 (guard): the tmux-style ONE-SHOT activity flash targets the
1544
1557
  // flashed agent's EXPLORER row — per-seat pane-output events from the
@@ -1610,7 +1623,7 @@ export function renderScreen(state, snap, options = {}, inputLine = "") {
1610
1623
  else
1611
1624
  contentMarker = "›";
1612
1625
  }
1613
- lines.push(pad(`${left}┃${contentMarker}${contentText}`, cols));
1626
+ lines.push(pad(fullReading ? `${contentMarker}${contentText}` : `${left}┃${contentMarker}${contentText}`, cols));
1614
1627
  if (row) {
1615
1628
  pushExplorerTargets(hitMap, row, explorerDisplay[explorerIndex] ?? row.label, y, explW);
1616
1629
  explorerRows.push({ ...row, y });
@@ -1622,12 +1635,12 @@ export function renderScreen(state, snap, options = {}, inputLine = "") {
1622
1635
  }
1623
1636
  // zones first: hit lookup takes the first match, so a zone wins over the row-wide action
1624
1637
  for (const z of zones) {
1625
- const target = { y, x1: explW + 3 + z.start, x2: explW + 2 + z.end, action: z.action };
1638
+ const target = { y, x1: (fullReading ? 2 : explW + 3) + z.start, x2: (fullReading ? 1 : explW + 2) + z.end, action: z.action };
1626
1639
  hitMap.push(target);
1627
1640
  contentTargets.push(target);
1628
1641
  }
1629
1642
  if (item?.action) {
1630
- const target = { y, x1: explW + 3, x2: cols, action: item.action };
1643
+ const target = { y, x1: fullReading ? 2 : explW + 3, x2: cols, action: item.action };
1631
1644
  hitMap.push(target);
1632
1645
  contentTargets.push(target);
1633
1646
  }
@@ -1638,8 +1651,8 @@ export function renderScreen(state, snap, options = {}, inputLine = "") {
1638
1651
  lines.push(pad(`≋ ${displayTime(footer.tsEmitted, state.timeZone)} ${footer.sourceSession}: ${footer.body}`, cols));
1639
1652
  const drillPath = state.drill.map((d) => d.name).join(" → ");
1640
1653
  const readWarn = snap.readErrors.length > 0 ? ` ⚠ ${snap.readErrors.length} read(s) failed: ${snap.readErrors[0]}` : "";
1641
- lines.push(paneRule(cols, explW, "bottom"));
1642
- lines.push(pad(keybindHints(state), cols));
1654
+ lines.push(fullReading ? "━".repeat(cols) : paneRule(cols, explW, "bottom"));
1655
+ lines.push(pad(fullReading ? "↑↓ scroll / links · → links · Enter open · Esc Back · refresh · v copy" : keybindHints(state), cols));
1643
1656
  lines.push(pad(`[${state.instanceId}] ${state.section}${drillPath ? " · " + drillPath : ""}${state.lastError ? " ✗ " + state.lastError : ""}${state.notice ? " ▸ " + state.notice : ""}${readWarn}${state.timeZoneWarning ? " · ⚠ timezone; run timezone" : ""}`, cols));
1644
1657
  while (lines.length < rows)
1645
1658
  lines.push("");