@openrig/cli 0.5.9 → 0.5.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (862) hide show
  1. package/daemon/assets/plugins/openrig-core/README.md +24 -5
  2. package/daemon/assets/plugins/openrig-core/skills/agent-operated-workflows/SKILL.md +4 -2
  3. package/daemon/assets/plugins/openrig-core/skills/applying-a-permission-policy/SKILL.md +11 -14
  4. package/daemon/assets/plugins/openrig-core/skills/claude-compaction-restore/SKILL.md +51 -59
  5. package/daemon/assets/plugins/openrig-core/skills/forming-an-openrig-mental-model/SKILL.md +11 -10
  6. package/daemon/assets/plugins/openrig-core/skills/messaging-the-human/SKILL.md +48 -61
  7. package/daemon/assets/plugins/openrig-core/skills/mission-slice-sop/SKILL.md +19 -5
  8. package/daemon/assets/plugins/openrig-core/skills/openrig-operating-model/SKILL.md +39 -50
  9. package/daemon/assets/plugins/openrig-core/skills/openrig-operating-model/scripts/trunk-diff.sh +1 -1
  10. package/daemon/assets/plugins/openrig-core/skills/openrig-operating-model/templates/LEARNED.md +7 -5
  11. package/daemon/assets/plugins/openrig-core/skills/openrig-operating-model/templates/PLAYBOOK.md +3 -4
  12. package/daemon/assets/plugins/openrig-core/skills/openrig-operating-model/templates/SPEC.md +7 -7
  13. package/daemon/assets/plugins/openrig-core/skills/openrig-user/SKILL.md +80 -64
  14. package/daemon/assets/plugins/openrig-core/skills/orienting-to-an-inherited-seat/CHANGELOG.md +14 -58
  15. package/daemon/assets/plugins/openrig-core/skills/queue-handoff/SKILL.md +8 -9
  16. package/daemon/assets/plugins/openrig-core/skills/retiring-and-inheriting-a-seat/CHANGELOG.md +20 -46
  17. package/daemon/assets/plugins/openrig-core/skills/retiring-and-inheriting-a-seat/SKILL.md +62 -76
  18. package/daemon/assets/plugins/openrig-core/skills/seat-continuity-and-handover/SKILL.md +28 -22
  19. package/daemon/assets/plugins/openrig-core/skills/session-compaction-and-restore/SKILL.md +13 -15
  20. package/daemon/context-packs/onboarding-width/manifest.yaml +1 -3
  21. package/daemon/context-packs/onboarding-width/public-reference-material.md +19 -24
  22. package/daemon/context-packs/onboarding-width/public-what-you-can-do.md +80 -33
  23. package/daemon/context-packs/skills/agent-operated-software/manifest.yaml +1 -1
  24. package/daemon/context-packs/skills/agent-operated-workflows/SKILL.md +4 -2
  25. package/daemon/context-packs/skills/agent-operated-workflows/manifest.yaml +1 -1
  26. package/daemon/context-packs/skills/applying-a-permission-policy/SKILL.md +11 -14
  27. package/daemon/context-packs/skills/applying-a-permission-policy/manifest.yaml +1 -1
  28. package/daemon/context-packs/skills/claude-compaction-restore/SKILL.md +51 -59
  29. package/daemon/context-packs/skills/claude-compaction-restore/manifest.yaml +1 -1
  30. package/daemon/context-packs/skills/core/agent-starters/SKILL.md +21 -19
  31. package/daemon/context-packs/skills/core/agent-starters/manifest.yaml +1 -1
  32. package/daemon/context-packs/skills/core/agent-startup-and-context-ingestion/SKILL.md +32 -16
  33. package/daemon/context-packs/skills/core/agent-startup-and-context-ingestion/manifest.yaml +1 -1
  34. package/daemon/context-packs/skills/core/cross-host-rig-commands/SKILL.md +84 -148
  35. package/daemon/context-packs/skills/core/cross-host-rig-commands/manifest.yaml +3 -3
  36. package/daemon/context-packs/skills/core/human-in-the-loop/manifest.yaml +1 -1
  37. package/daemon/context-packs/skills/core/messaging-the-human/SKILL.md +48 -61
  38. package/daemon/context-packs/skills/core/messaging-the-human/manifest.yaml +3 -3
  39. package/daemon/context-packs/skills/core/openrig-architect/SKILL.md +40 -47
  40. package/daemon/context-packs/skills/core/openrig-architect/manifest.yaml +1 -1
  41. package/daemon/context-packs/skills/core/openrig-cmux/manifest.yaml +1 -1
  42. package/daemon/context-packs/skills/core/openrig-herdr/manifest.yaml +1 -1
  43. package/daemon/context-packs/skills/core/openrig-skills/manifest.yaml +1 -1
  44. package/daemon/context-packs/skills/core/openrig-upgrade/SKILL.md +16 -0
  45. package/daemon/context-packs/skills/core/openrig-upgrade/manifest.yaml +1 -1
  46. package/daemon/context-packs/skills/core/rig-bundles-and-shareable-artifacts/manifest.yaml +1 -1
  47. package/daemon/context-packs/skills/core/rig-lifecycle/manifest.yaml +1 -1
  48. package/daemon/context-packs/skills/core/session-source-fork/SKILL.md +12 -10
  49. package/daemon/context-packs/skills/core/session-source-fork/manifest.yaml +1 -1
  50. package/daemon/context-packs/skills/core/specification-system/manifest.yaml +1 -1
  51. package/daemon/context-packs/skills/core/topology-mutation-and-seat-management/SKILL.md +15 -13
  52. package/daemon/context-packs/skills/core/topology-mutation-and-seat-management/manifest.yaml +1 -1
  53. package/daemon/context-packs/skills/core/watchdog/manifest.yaml +1 -1
  54. package/daemon/context-packs/skills/delegating-work/manifest.yaml +1 -1
  55. package/daemon/context-packs/skills/forming-an-openrig-mental-model/SKILL.md +11 -10
  56. package/daemon/context-packs/skills/forming-an-openrig-mental-model/manifest.yaml +1 -1
  57. package/daemon/context-packs/skills/loading-addressable-markdown/manifest.yaml +1 -1
  58. package/daemon/context-packs/skills/mission-slice-sop/SKILL.md +19 -5
  59. package/daemon/context-packs/skills/mission-slice-sop/manifest.yaml +1 -1
  60. package/daemon/context-packs/skills/openrig-operating-model/SKILL.md +39 -50
  61. package/daemon/context-packs/skills/openrig-operating-model/manifest.yaml +1 -1
  62. package/daemon/context-packs/skills/openrig-operating-model/scripts/trunk-diff.sh +1 -1
  63. package/daemon/context-packs/skills/openrig-operating-model/templates/LEARNED.md +7 -5
  64. package/daemon/context-packs/skills/openrig-operating-model/templates/PLAYBOOK.md +3 -4
  65. package/daemon/context-packs/skills/openrig-operating-model/templates/SPEC.md +7 -7
  66. package/daemon/context-packs/skills/openrig-user/SKILL.md +80 -64
  67. package/daemon/context-packs/skills/openrig-user/manifest.yaml +1 -1
  68. package/daemon/context-packs/skills/orienting-to-an-inherited-seat/CHANGELOG.md +14 -58
  69. package/daemon/context-packs/skills/orienting-to-an-inherited-seat/manifest.yaml +1 -1
  70. package/daemon/context-packs/skills/pm/backlog-capture/manifest.yaml +1 -1
  71. package/daemon/context-packs/skills/pm/context-builder/manifest.yaml +1 -1
  72. package/daemon/context-packs/skills/pm/exec-summary/SKILL.md +1 -1
  73. package/daemon/context-packs/skills/pm/exec-summary/manifest.yaml +1 -1
  74. package/daemon/context-packs/skills/pm/office-hours/manifest.yaml +1 -1
  75. package/daemon/context-packs/skills/pm/plan-review/SKILL.md +2 -2
  76. package/daemon/context-packs/skills/pm/plan-review/manifest.yaml +1 -1
  77. package/daemon/context-packs/skills/pm/requirements-writer/SKILL.md +1 -1
  78. package/daemon/context-packs/skills/pm/requirements-writer/manifest.yaml +1 -1
  79. package/daemon/context-packs/skills/pm/ui-mockup/SKILL.md +3 -3
  80. package/daemon/context-packs/skills/pm/ui-mockup/manifest.yaml +1 -1
  81. package/daemon/context-packs/skills/pods/development-team/SKILL.md +40 -139
  82. package/daemon/context-packs/skills/pods/development-team/manifest.yaml +3 -3
  83. package/daemon/context-packs/skills/pods/orchestration-team/SKILL.md +80 -118
  84. package/daemon/context-packs/skills/pods/orchestration-team/manifest.yaml +3 -3
  85. package/daemon/context-packs/skills/pods/oversight-team/manifest.yaml +1 -1
  86. package/daemon/context-packs/skills/pods/review-team/SKILL.md +34 -31
  87. package/daemon/context-packs/skills/pods/review-team/manifest.yaml +3 -3
  88. package/daemon/context-packs/skills/process/agent-browser/LOCAL-INSIGHTS.md +24 -53
  89. package/daemon/context-packs/skills/process/agent-browser/manifest.yaml +1 -1
  90. package/daemon/context-packs/skills/process/context-engineering/manifest.yaml +1 -1
  91. package/daemon/context-packs/skills/process/dogfood/manifest.yaml +1 -1
  92. package/daemon/context-packs/skills/process/frontend-design/manifest.yaml +1 -1
  93. package/daemon/context-packs/skills/process/systematic-debugging/find-polluter.sh +29 -15
  94. package/daemon/context-packs/skills/process/systematic-debugging/manifest.yaml +1 -1
  95. package/daemon/context-packs/skills/process/test-driven-development/SKILL.md +53 -48
  96. package/daemon/context-packs/skills/process/test-driven-development/manifest.yaml +1 -1
  97. package/daemon/context-packs/skills/process/verification-before-completion/SKILL.md +3 -3
  98. package/daemon/context-packs/skills/process/verification-before-completion/manifest.yaml +1 -1
  99. package/daemon/context-packs/skills/queue-handoff/SKILL.md +8 -9
  100. package/daemon/context-packs/skills/queue-handoff/manifest.yaml +1 -1
  101. package/daemon/context-packs/skills/refocusing/manifest.yaml +1 -1
  102. package/daemon/context-packs/skills/retiring-and-inheriting-a-seat/CHANGELOG.md +20 -46
  103. package/daemon/context-packs/skills/retiring-and-inheriting-a-seat/SKILL.md +62 -76
  104. package/daemon/context-packs/skills/retiring-and-inheriting-a-seat/manifest.yaml +1 -1
  105. package/daemon/context-packs/skills/seat-continuity-and-handover/SKILL.md +28 -22
  106. package/daemon/context-packs/skills/seat-continuity-and-handover/manifest.yaml +1 -1
  107. package/daemon/context-packs/skills/session-compaction-and-restore/SKILL.md +13 -15
  108. package/daemon/context-packs/skills/session-compaction-and-restore/manifest.yaml +1 -1
  109. package/daemon/context-packs/skills/software-for-agents/manifest.yaml +1 -1
  110. package/daemon/context-packs/world-example/manifest.yaml +1 -1
  111. package/daemon/context-packs/world-public/build-your-world.md +12 -7
  112. package/daemon/context-packs/world-public/manifest.yaml +1 -1
  113. package/daemon/dist/adapters/tmux.d.ts +7 -9
  114. package/daemon/dist/adapters/tmux.d.ts.map +1 -1
  115. package/daemon/dist/adapters/tmux.js +7 -35
  116. package/daemon/dist/adapters/tmux.js.map +1 -1
  117. package/daemon/dist/build-info.js +3 -3
  118. package/daemon/dist/daemon-shutdown.d.ts +27 -0
  119. package/daemon/dist/daemon-shutdown.d.ts.map +1 -0
  120. package/daemon/dist/daemon-shutdown.js +84 -0
  121. package/daemon/dist/daemon-shutdown.js.map +1 -0
  122. package/daemon/dist/domain/codex-thread-id.d.ts +1 -0
  123. package/daemon/dist/domain/codex-thread-id.d.ts.map +1 -1
  124. package/daemon/dist/domain/codex-thread-id.js +32 -23
  125. package/daemon/dist/domain/codex-thread-id.js.map +1 -1
  126. package/daemon/dist/domain/context-usage-store.d.ts +2 -0
  127. package/daemon/dist/domain/context-usage-store.d.ts.map +1 -1
  128. package/daemon/dist/domain/context-usage-store.js +7 -28
  129. package/daemon/dist/domain/context-usage-store.js.map +1 -1
  130. package/daemon/dist/domain/crash-cart-conductor.js +1 -1
  131. package/daemon/dist/domain/crash-cart-conductor.js.map +1 -1
  132. package/daemon/dist/domain/execution-view.d.ts.map +1 -1
  133. package/daemon/dist/domain/execution-view.js +24 -3
  134. package/daemon/dist/domain/execution-view.js.map +1 -1
  135. package/daemon/dist/domain/gateway/channel-operations.d.ts +39 -0
  136. package/daemon/dist/domain/gateway/channel-operations.d.ts.map +1 -0
  137. package/daemon/dist/domain/gateway/channel-operations.js +35 -0
  138. package/daemon/dist/domain/gateway/channel-operations.js.map +1 -0
  139. package/daemon/dist/domain/gateway/connections-projection.d.ts +61 -0
  140. package/daemon/dist/domain/gateway/connections-projection.d.ts.map +1 -0
  141. package/daemon/dist/domain/gateway/connections-projection.js +149 -0
  142. package/daemon/dist/domain/gateway/connections-projection.js.map +1 -0
  143. package/daemon/dist/domain/gateway/gateway-subsystem.d.ts +3 -0
  144. package/daemon/dist/domain/gateway/gateway-subsystem.d.ts.map +1 -1
  145. package/daemon/dist/domain/gateway/gateway-subsystem.js +3 -0
  146. package/daemon/dist/domain/gateway/gateway-subsystem.js.map +1 -1
  147. package/daemon/dist/domain/gateway/human-readiness.d.ts +37 -0
  148. package/daemon/dist/domain/gateway/human-readiness.d.ts.map +1 -0
  149. package/daemon/dist/domain/gateway/human-readiness.js +44 -0
  150. package/daemon/dist/domain/gateway/human-readiness.js.map +1 -0
  151. package/daemon/dist/domain/gateway/human-registry.d.ts +5 -8
  152. package/daemon/dist/domain/gateway/human-registry.d.ts.map +1 -1
  153. package/daemon/dist/domain/gateway/human-registry.js +5 -8
  154. package/daemon/dist/domain/gateway/human-registry.js.map +1 -1
  155. package/daemon/dist/domain/gateway/slack/inbound.d.ts +16 -1
  156. package/daemon/dist/domain/gateway/slack/inbound.d.ts.map +1 -1
  157. package/daemon/dist/domain/gateway/slack/inbound.js +35 -12
  158. package/daemon/dist/domain/gateway/slack/inbound.js.map +1 -1
  159. package/daemon/dist/domain/gateway/slack/queue-access.d.ts +1 -0
  160. package/daemon/dist/domain/gateway/slack/queue-access.d.ts.map +1 -1
  161. package/daemon/dist/domain/gateway/slack/queue-access.js +1 -0
  162. package/daemon/dist/domain/gateway/slack/queue-access.js.map +1 -1
  163. package/daemon/dist/domain/gateway/slack/slack-subsystem.d.ts +18 -0
  164. package/daemon/dist/domain/gateway/slack/slack-subsystem.d.ts.map +1 -1
  165. package/daemon/dist/domain/gateway/slack/slack-subsystem.js +63 -8
  166. package/daemon/dist/domain/gateway/slack/slack-subsystem.js.map +1 -1
  167. package/daemon/dist/domain/gateway/slack/socket-inbound.d.ts +13 -0
  168. package/daemon/dist/domain/gateway/slack/socket-inbound.d.ts.map +1 -1
  169. package/daemon/dist/domain/gateway/slack/socket-inbound.js +59 -1
  170. package/daemon/dist/domain/gateway/slack/socket-inbound.js.map +1 -1
  171. package/daemon/dist/domain/gateway/slack/state-store.d.ts +21 -0
  172. package/daemon/dist/domain/gateway/slack/state-store.d.ts.map +1 -1
  173. package/daemon/dist/domain/gateway/slack/state-store.js +28 -1
  174. package/daemon/dist/domain/gateway/slack/state-store.js.map +1 -1
  175. package/daemon/dist/domain/gateway/slack/thread-routing.d.ts +2 -0
  176. package/daemon/dist/domain/gateway/slack/thread-routing.d.ts.map +1 -1
  177. package/daemon/dist/domain/gateway/slack/thread-routing.js +6 -1
  178. package/daemon/dist/domain/gateway/slack/thread-routing.js.map +1 -1
  179. package/daemon/dist/domain/gateway/slack/thread-seat-map.d.ts +4 -0
  180. package/daemon/dist/domain/gateway/slack/thread-seat-map.d.ts.map +1 -1
  181. package/daemon/dist/domain/gateway/slack/thread-seat-map.js +11 -0
  182. package/daemon/dist/domain/gateway/slack/thread-seat-map.js.map +1 -1
  183. package/daemon/dist/domain/health-checkpoints.d.ts +57 -0
  184. package/daemon/dist/domain/health-checkpoints.d.ts.map +1 -0
  185. package/daemon/dist/domain/health-checkpoints.js +198 -0
  186. package/daemon/dist/domain/health-checkpoints.js.map +1 -0
  187. package/daemon/dist/domain/health-context.d.ts +14 -0
  188. package/daemon/dist/domain/health-context.d.ts.map +1 -0
  189. package/daemon/dist/domain/health-context.js +93 -0
  190. package/daemon/dist/domain/health-context.js.map +1 -0
  191. package/daemon/dist/domain/health-detectors.d.ts +106 -0
  192. package/daemon/dist/domain/health-detectors.d.ts.map +1 -0
  193. package/daemon/dist/domain/health-detectors.js +392 -0
  194. package/daemon/dist/domain/health-detectors.js.map +1 -0
  195. package/daemon/dist/domain/health-diagnosis.d.ts +143 -0
  196. package/daemon/dist/domain/health-diagnosis.d.ts.map +1 -0
  197. package/daemon/dist/domain/health-diagnosis.js +249 -0
  198. package/daemon/dist/domain/health-diagnosis.js.map +1 -0
  199. package/daemon/dist/domain/health-passive-ceremony.d.ts +19 -0
  200. package/daemon/dist/domain/health-passive-ceremony.d.ts.map +1 -0
  201. package/daemon/dist/domain/health-passive-ceremony.js +234 -0
  202. package/daemon/dist/domain/health-passive-ceremony.js.map +1 -0
  203. package/daemon/dist/domain/health-policy.d.ts +45 -0
  204. package/daemon/dist/domain/health-policy.d.ts.map +1 -0
  205. package/daemon/dist/domain/health-policy.js +89 -0
  206. package/daemon/dist/domain/health-policy.js.map +1 -0
  207. package/daemon/dist/domain/health-projection.d.ts +237 -0
  208. package/daemon/dist/domain/health-projection.d.ts.map +1 -0
  209. package/daemon/dist/domain/health-projection.js +312 -0
  210. package/daemon/dist/domain/health-projection.js.map +1 -0
  211. package/daemon/dist/domain/lifecycle-obligations.d.ts +18 -0
  212. package/daemon/dist/domain/lifecycle-obligations.d.ts.map +1 -0
  213. package/daemon/dist/domain/lifecycle-obligations.js +35 -0
  214. package/daemon/dist/domain/lifecycle-obligations.js.map +1 -0
  215. package/daemon/dist/domain/mission-control/mission-control-read-layer.d.ts.map +1 -1
  216. package/daemon/dist/domain/mission-control/mission-control-read-layer.js +14 -11
  217. package/daemon/dist/domain/mission-control/mission-control-read-layer.js.map +1 -1
  218. package/daemon/dist/domain/model-divergence/current-generation-record.d.ts.map +1 -1
  219. package/daemon/dist/domain/model-divergence/current-generation-record.js +6 -1
  220. package/daemon/dist/domain/model-divergence/current-generation-record.js.map +1 -1
  221. package/daemon/dist/domain/node-inventory.d.ts.map +1 -1
  222. package/daemon/dist/domain/node-inventory.js +1 -0
  223. package/daemon/dist/domain/node-inventory.js.map +1 -1
  224. package/daemon/dist/domain/policies/workflow-keepalive.d.ts +1 -0
  225. package/daemon/dist/domain/policies/workflow-keepalive.d.ts.map +1 -1
  226. package/daemon/dist/domain/policies/workflow-keepalive.js +7 -4
  227. package/daemon/dist/domain/policies/workflow-keepalive.js.map +1 -1
  228. package/daemon/dist/domain/project-lifecycle-compiler.d.ts +7 -0
  229. package/daemon/dist/domain/project-lifecycle-compiler.d.ts.map +1 -1
  230. package/daemon/dist/domain/project-lifecycle-compiler.js +133 -8
  231. package/daemon/dist/domain/project-lifecycle-compiler.js.map +1 -1
  232. package/daemon/dist/domain/queue-repository.d.ts +14 -0
  233. package/daemon/dist/domain/queue-repository.d.ts.map +1 -1
  234. package/daemon/dist/domain/queue-repository.js +60 -5
  235. package/daemon/dist/domain/queue-repository.js.map +1 -1
  236. package/daemon/dist/domain/queue-stuck-sweep.d.ts.map +1 -1
  237. package/daemon/dist/domain/queue-stuck-sweep.js +1 -0
  238. package/daemon/dist/domain/queue-stuck-sweep.js.map +1 -1
  239. package/daemon/dist/domain/queue-transition-log.d.ts +5 -0
  240. package/daemon/dist/domain/queue-transition-log.d.ts.map +1 -1
  241. package/daemon/dist/domain/queue-transition-log.js +28 -0
  242. package/daemon/dist/domain/queue-transition-log.js.map +1 -1
  243. package/daemon/dist/domain/queue-wait-backoff.d.ts +21 -0
  244. package/daemon/dist/domain/queue-wait-backoff.d.ts.map +1 -0
  245. package/daemon/dist/domain/queue-wait-backoff.js +96 -0
  246. package/daemon/dist/domain/queue-wait-backoff.js.map +1 -0
  247. package/daemon/dist/domain/queue-wake-repository.d.ts +1 -0
  248. package/daemon/dist/domain/queue-wake-repository.d.ts.map +1 -1
  249. package/daemon/dist/domain/queue-wake-repository.js +8 -3
  250. package/daemon/dist/domain/queue-wake-repository.js.map +1 -1
  251. package/daemon/dist/domain/seat-lifecycle-service.d.ts.map +1 -1
  252. package/daemon/dist/domain/seat-lifecycle-service.js +8 -1
  253. package/daemon/dist/domain/seat-lifecycle-service.js.map +1 -1
  254. package/daemon/dist/domain/startup-orchestrator.d.ts.map +1 -1
  255. package/daemon/dist/domain/startup-orchestrator.js +27 -11
  256. package/daemon/dist/domain/startup-orchestrator.js.map +1 -1
  257. package/daemon/dist/domain/startup-proof.d.ts.map +1 -1
  258. package/daemon/dist/domain/startup-proof.js +10 -9
  259. package/daemon/dist/domain/startup-proof.js.map +1 -1
  260. package/daemon/dist/domain/startup-resolver.d.ts +3 -1
  261. package/daemon/dist/domain/startup-resolver.d.ts.map +1 -1
  262. package/daemon/dist/domain/startup-resolver.js +18 -0
  263. package/daemon/dist/domain/startup-resolver.js.map +1 -1
  264. package/daemon/dist/domain/startup-validation.d.ts.map +1 -1
  265. package/daemon/dist/domain/startup-validation.js +12 -1
  266. package/daemon/dist/domain/startup-validation.js.map +1 -1
  267. package/daemon/dist/domain/types.d.ts +16 -1
  268. package/daemon/dist/domain/types.d.ts.map +1 -1
  269. package/daemon/dist/domain/types.js.map +1 -1
  270. package/daemon/dist/domain/user-settings/settings-store.d.ts +9 -1
  271. package/daemon/dist/domain/user-settings/settings-store.d.ts.map +1 -1
  272. package/daemon/dist/domain/user-settings/settings-store.js +86 -12
  273. package/daemon/dist/domain/user-settings/settings-store.js.map +1 -1
  274. package/daemon/dist/domain/watchdog-jobs-repository.d.ts +2 -0
  275. package/daemon/dist/domain/watchdog-jobs-repository.d.ts.map +1 -1
  276. package/daemon/dist/domain/watchdog-jobs-repository.js +5 -0
  277. package/daemon/dist/domain/watchdog-jobs-repository.js.map +1 -1
  278. package/daemon/dist/domain/workflow-boot-sweep.d.ts +1 -0
  279. package/daemon/dist/domain/workflow-boot-sweep.d.ts.map +1 -1
  280. package/daemon/dist/domain/workflow-boot-sweep.js +3 -0
  281. package/daemon/dist/domain/workflow-boot-sweep.js.map +1 -1
  282. package/daemon/dist/domain/workflow-exception-escalation.d.ts +4 -3
  283. package/daemon/dist/domain/workflow-exception-escalation.d.ts.map +1 -1
  284. package/daemon/dist/domain/workflow-exception-escalation.js +22 -21
  285. package/daemon/dist/domain/workflow-exception-escalation.js.map +1 -1
  286. package/daemon/dist/domain/workflow-exception-router.d.ts +4 -3
  287. package/daemon/dist/domain/workflow-exception-router.d.ts.map +1 -1
  288. package/daemon/dist/domain/workflow-exception-router.js +7 -6
  289. package/daemon/dist/domain/workflow-exception-router.js.map +1 -1
  290. package/daemon/dist/domain/workflow-human-destination.d.ts +18 -0
  291. package/daemon/dist/domain/workflow-human-destination.d.ts.map +1 -0
  292. package/daemon/dist/domain/workflow-human-destination.js +40 -0
  293. package/daemon/dist/domain/workflow-human-destination.js.map +1 -0
  294. package/daemon/dist/domain/workflow-projector.d.ts +28 -3
  295. package/daemon/dist/domain/workflow-projector.d.ts.map +1 -1
  296. package/daemon/dist/domain/workflow-projector.js +134 -33
  297. package/daemon/dist/domain/workflow-projector.js.map +1 -1
  298. package/daemon/dist/domain/workflow-role-context.d.ts +4 -6
  299. package/daemon/dist/domain/workflow-role-context.d.ts.map +1 -1
  300. package/daemon/dist/domain/workflow-role-context.js +7 -14
  301. package/daemon/dist/domain/workflow-role-context.js.map +1 -1
  302. package/daemon/dist/domain/workflow-runtime.d.ts +12 -3
  303. package/daemon/dist/domain/workflow-runtime.d.ts.map +1 -1
  304. package/daemon/dist/domain/workflow-runtime.js +124 -25
  305. package/daemon/dist/domain/workflow-runtime.js.map +1 -1
  306. package/daemon/dist/domain/workflow-spec-cache.d.ts +2 -2
  307. package/daemon/dist/domain/workflow-spec-cache.d.ts.map +1 -1
  308. package/daemon/dist/domain/workflow-spec-cache.js +16 -0
  309. package/daemon/dist/domain/workflow-spec-cache.js.map +1 -1
  310. package/daemon/dist/domain/workflow-types.d.ts +8 -0
  311. package/daemon/dist/domain/workflow-types.d.ts.map +1 -1
  312. package/daemon/dist/domain/workflow-types.js.map +1 -1
  313. package/daemon/dist/domain/workflow-validator.d.ts.map +1 -1
  314. package/daemon/dist/domain/workflow-validator.js +57 -24
  315. package/daemon/dist/domain/workflow-validator.js.map +1 -1
  316. package/daemon/dist/gateway-human-registry-surface.d.ts +1 -0
  317. package/daemon/dist/gateway-human-registry-surface.d.ts.map +1 -1
  318. package/daemon/dist/gateway-human-registry-surface.js +1 -0
  319. package/daemon/dist/gateway-human-registry-surface.js.map +1 -1
  320. package/daemon/dist/gateway-slack-surface.d.ts +1 -0
  321. package/daemon/dist/gateway-slack-surface.d.ts.map +1 -1
  322. package/daemon/dist/gateway-slack-surface.js +1 -0
  323. package/daemon/dist/gateway-slack-surface.js.map +1 -1
  324. package/daemon/dist/health-detectors-surface.d.ts +2 -0
  325. package/daemon/dist/health-detectors-surface.d.ts.map +1 -0
  326. package/daemon/dist/health-detectors-surface.js +2 -0
  327. package/daemon/dist/health-detectors-surface.js.map +1 -0
  328. package/daemon/dist/health-projection-surface.d.ts +2 -0
  329. package/daemon/dist/health-projection-surface.d.ts.map +1 -0
  330. package/daemon/dist/health-projection-surface.js +2 -0
  331. package/daemon/dist/health-projection-surface.js.map +1 -0
  332. package/daemon/dist/index.d.ts.map +1 -1
  333. package/daemon/dist/index.js +38 -95
  334. package/daemon/dist/index.js.map +1 -1
  335. package/daemon/dist/lib/pane-envelope.d.ts.map +1 -1
  336. package/daemon/dist/lib/pane-envelope.js +4 -1
  337. package/daemon/dist/lib/pane-envelope.js.map +1 -1
  338. package/daemon/dist/project-lifecycle-surface.d.ts +1 -1
  339. package/daemon/dist/project-lifecycle-surface.d.ts.map +1 -1
  340. package/daemon/dist/routes/gateway.d.ts +5 -1
  341. package/daemon/dist/routes/gateway.d.ts.map +1 -1
  342. package/daemon/dist/routes/gateway.js +80 -22
  343. package/daemon/dist/routes/gateway.js.map +1 -1
  344. package/daemon/dist/routes/health-diagnosis.d.ts +3 -0
  345. package/daemon/dist/routes/health-diagnosis.d.ts.map +1 -0
  346. package/daemon/dist/routes/health-diagnosis.js +47 -0
  347. package/daemon/dist/routes/health-diagnosis.js.map +1 -0
  348. package/daemon/dist/routes/health.d.ts +3 -0
  349. package/daemon/dist/routes/health.d.ts.map +1 -0
  350. package/daemon/dist/routes/health.js +50 -0
  351. package/daemon/dist/routes/health.js.map +1 -0
  352. package/daemon/dist/routes/hosts.d.ts +2 -0
  353. package/daemon/dist/routes/hosts.d.ts.map +1 -1
  354. package/daemon/dist/routes/hosts.js +12 -5
  355. package/daemon/dist/routes/hosts.js.map +1 -1
  356. package/daemon/dist/routes/queue.d.ts.map +1 -1
  357. package/daemon/dist/routes/queue.js +4 -3
  358. package/daemon/dist/routes/queue.js.map +1 -1
  359. package/daemon/dist/routes/require-sender-identity.d.ts +3 -1
  360. package/daemon/dist/routes/require-sender-identity.d.ts.map +1 -1
  361. package/daemon/dist/routes/require-sender-identity.js +11 -5
  362. package/daemon/dist/routes/require-sender-identity.js.map +1 -1
  363. package/daemon/dist/routes/sessions.d.ts.map +1 -1
  364. package/daemon/dist/routes/sessions.js +95 -27
  365. package/daemon/dist/routes/sessions.js.map +1 -1
  366. package/daemon/dist/routes/workflow.d.ts.map +1 -1
  367. package/daemon/dist/routes/workflow.js +6 -1
  368. package/daemon/dist/routes/workflow.js.map +1 -1
  369. package/daemon/dist/server.d.ts +8 -0
  370. package/daemon/dist/server.d.ts.map +1 -1
  371. package/daemon/dist/server.js +10 -1
  372. package/daemon/dist/server.js.map +1 -1
  373. package/daemon/dist/startup.d.ts.map +1 -1
  374. package/daemon/dist/startup.js +35 -4
  375. package/daemon/dist/startup.js.map +1 -1
  376. package/daemon/docs/reference/agent-spec.md +6 -0
  377. package/daemon/docs/reference/getting-started.md +134 -28
  378. package/daemon/docs/reference/health-diagnosis.md +331 -0
  379. package/daemon/docs/reference/mission-install.md +5 -0
  380. package/daemon/docs/reference/product-journey-sdlc.md +53 -15
  381. package/daemon/docs/reference/project-release-profile.yaml +82 -0
  382. package/daemon/docs/reference/release-boundary.md +5 -0
  383. package/daemon/docs/reference/rig-spec.md +43 -4
  384. package/daemon/docs/reference/sdlc-conventions.md +6 -4
  385. package/daemon/specs/agents/conveyor/planner/guidance/role.md +5 -3
  386. package/daemon/specs/agents/conveyor/planner/startup/context.md +13 -4
  387. package/daemon/specs/agents/design/product-designer/agent.yaml +4 -3
  388. package/daemon/specs/agents/design/product-designer/guidance/role.md +12 -10
  389. package/daemon/specs/agents/development/implementer/agent.yaml +1 -9
  390. package/daemon/specs/agents/development/implementer/guidance/role.md +21 -43
  391. package/daemon/specs/agents/development/qa/agent.yaml +2 -11
  392. package/daemon/specs/agents/development/qa/guidance/role.md +21 -73
  393. package/daemon/specs/agents/orchestration/orchestrator/agent.yaml +1 -9
  394. package/daemon/specs/agents/orchestration/orchestrator/guidance/role.md +25 -72
  395. package/daemon/specs/agents/product-management/pm/guidance/role.md +19 -17
  396. package/daemon/specs/agents/review/independent-reviewer/agent.yaml +1 -9
  397. package/daemon/specs/agents/review/independent-reviewer/guidance/role.md +20 -35
  398. package/daemon/specs/agents/shared/skills/core/agent-starters/SKILL.md +21 -19
  399. package/daemon/specs/agents/shared/skills/core/agent-startup-and-context-ingestion/SKILL.md +32 -16
  400. package/daemon/specs/agents/shared/skills/core/cross-host-rig-commands/SKILL.md +84 -148
  401. package/daemon/specs/agents/shared/skills/core/messaging-the-human/SKILL.md +48 -61
  402. package/daemon/specs/agents/shared/skills/core/openrig-architect/SKILL.md +40 -47
  403. package/daemon/specs/agents/shared/skills/core/openrig-upgrade/SKILL.md +16 -0
  404. package/daemon/specs/agents/shared/skills/core/session-source-fork/SKILL.md +12 -10
  405. package/daemon/specs/agents/shared/skills/core/topology-mutation-and-seat-management/SKILL.md +15 -13
  406. package/daemon/specs/agents/shared/skills/pm/exec-summary/SKILL.md +1 -1
  407. package/daemon/specs/agents/shared/skills/pm/plan-review/SKILL.md +2 -2
  408. package/daemon/specs/agents/shared/skills/pm/requirements-writer/SKILL.md +1 -1
  409. package/daemon/specs/agents/shared/skills/pm/ui-mockup/SKILL.md +3 -3
  410. package/daemon/specs/agents/shared/skills/pods/development-team/SKILL.md +40 -139
  411. package/daemon/specs/agents/shared/skills/pods/orchestration-team/SKILL.md +80 -118
  412. package/daemon/specs/agents/shared/skills/pods/review-team/SKILL.md +34 -31
  413. package/daemon/specs/agents/shared/skills/process/agent-browser/LOCAL-INSIGHTS.md +24 -53
  414. package/daemon/specs/agents/shared/skills/process/systematic-debugging/find-polluter.sh +29 -15
  415. package/daemon/specs/agents/shared/skills/process/test-driven-development/SKILL.md +53 -48
  416. package/daemon/specs/agents/shared/skills/process/verification-before-completion/SKILL.md +3 -3
  417. package/daemon/specs/rigs/launch/demo/CULTURE.md +21 -30
  418. package/daemon/specs/rigs/launch/first-project/CULTURE.md +39 -0
  419. package/daemon/specs/rigs/launch/first-project/rig.yaml +31 -0
  420. package/daemon/specs/rigs/launch/implementation-pair/rig.yaml +3 -3
  421. package/daemon/specs/rigs/launch/kernel/agents/advisor/lead/startup/context.md +1 -1
  422. package/daemon/specs/rigs/launch/kernel/agents/operator/agent/guidance/role.md +21 -7
  423. package/daemon/specs/rigs/launch/kernel/agents/operator/agent/startup/context.md +2 -2
  424. package/daemon/specs/rigs/launch/kernel/agents/queue/worker/guidance/role.md +19 -11
  425. package/daemon/specs/rigs/launch/kernel/agents/queue/worker/startup/context.md +3 -2
  426. package/daemon/specs/rigs/launch/kernel/culture/CULTURE.md +15 -8
  427. package/daemon/specs/rigs/launch/kernel/rig-claude-only.yaml +7 -0
  428. package/daemon/specs/rigs/launch/kernel/rig-codex-only.yaml +7 -0
  429. package/daemon/specs/rigs/launch/kernel/rig.yaml +9 -4
  430. package/daemon/specs/rigs/preview/product-team/CULTURE.md +26 -71
  431. package/daemon/specs/rigs/preview/product-team/topology/seats/dev1-qa/CRAFT.md +6 -4
  432. package/dist/build-info.js +3 -3
  433. package/dist/client.d.ts +6 -20
  434. package/dist/client.d.ts.map +1 -1
  435. package/dist/client.js +53 -32
  436. package/dist/client.js.map +1 -1
  437. package/dist/commands/config.d.ts.map +1 -1
  438. package/dist/commands/config.js +2 -0
  439. package/dist/commands/config.js.map +1 -1
  440. package/dist/commands/context.d.ts.map +1 -1
  441. package/dist/commands/context.js +15 -13
  442. package/dist/commands/context.js.map +1 -1
  443. package/dist/commands/daemon.d.ts.map +1 -1
  444. package/dist/commands/daemon.js +31 -27
  445. package/dist/commands/daemon.js.map +1 -1
  446. package/dist/commands/destroy.js +1 -1
  447. package/dist/commands/destroy.js.map +1 -1
  448. package/dist/commands/gateway.d.ts +17 -0
  449. package/dist/commands/gateway.d.ts.map +1 -1
  450. package/dist/commands/gateway.js +99 -13
  451. package/dist/commands/gateway.js.map +1 -1
  452. package/dist/commands/health.d.ts +12 -0
  453. package/dist/commands/health.d.ts.map +1 -0
  454. package/dist/commands/health.js +403 -0
  455. package/dist/commands/health.js.map +1 -0
  456. package/dist/commands/host.d.ts.map +1 -1
  457. package/dist/commands/host.js +2 -0
  458. package/dist/commands/host.js.map +1 -1
  459. package/dist/commands/launch.d.ts.map +1 -1
  460. package/dist/commands/launch.js +2 -2
  461. package/dist/commands/launch.js.map +1 -1
  462. package/dist/commands/queue.d.ts +18 -0
  463. package/dist/commands/queue.d.ts.map +1 -1
  464. package/dist/commands/queue.js +71 -5
  465. package/dist/commands/queue.js.map +1 -1
  466. package/dist/commands/send.d.ts.map +1 -1
  467. package/dist/commands/send.js +8 -9
  468. package/dist/commands/send.js.map +1 -1
  469. package/dist/commands/setup.d.ts.map +1 -1
  470. package/dist/commands/setup.js +10 -9
  471. package/dist/commands/setup.js.map +1 -1
  472. package/dist/commands/slack.d.ts.map +1 -1
  473. package/dist/commands/slack.js +39 -11
  474. package/dist/commands/slack.js.map +1 -1
  475. package/dist/commands/tui.d.ts +2 -0
  476. package/dist/commands/tui.d.ts.map +1 -1
  477. package/dist/commands/tui.js +26 -10
  478. package/dist/commands/tui.js.map +1 -1
  479. package/dist/commands/walk.d.ts.map +1 -1
  480. package/dist/commands/walk.js +24 -48
  481. package/dist/commands/walk.js.map +1 -1
  482. package/dist/commands/workflow-render.d.ts +19 -0
  483. package/dist/commands/workflow-render.d.ts.map +1 -1
  484. package/dist/commands/workflow-render.js +12 -1
  485. package/dist/commands/workflow-render.js.map +1 -1
  486. package/dist/commands/workflow.d.ts.map +1 -1
  487. package/dist/commands/workflow.js +12 -8
  488. package/dist/commands/workflow.js.map +1 -1
  489. package/dist/config-store.d.ts +10 -1
  490. package/dist/config-store.d.ts.map +1 -1
  491. package/dist/config-store.js +87 -14
  492. package/dist/config-store.js.map +1 -1
  493. package/dist/cross-host-executor.d.ts +1 -1
  494. package/dist/cross-host-executor.js +2 -2
  495. package/dist/cross-host-executor.js.map +1 -1
  496. package/dist/daemon-lifecycle.d.ts +12 -11
  497. package/dist/daemon-lifecycle.d.ts.map +1 -1
  498. package/dist/daemon-lifecycle.js +283 -146
  499. package/dist/daemon-lifecycle.js.map +1 -1
  500. package/dist/daemon-start-lock.d.ts +9 -0
  501. package/dist/daemon-start-lock.d.ts.map +1 -0
  502. package/dist/daemon-start-lock.js +47 -0
  503. package/dist/daemon-start-lock.js.map +1 -0
  504. package/dist/front-door.d.ts.map +1 -1
  505. package/dist/front-door.js +8 -1
  506. package/dist/front-door.js.map +1 -1
  507. package/dist/index.d.ts +4 -0
  508. package/dist/index.d.ts.map +1 -1
  509. package/dist/index.js +3 -1
  510. package/dist/index.js.map +1 -1
  511. package/dist/lib/file-transfer.js +1 -1
  512. package/dist/lib/file-transfer.js.map +1 -1
  513. package/dist/lib/scope/scope-fs.js +2 -2
  514. package/dist/lib/scope/scope-fs.js.map +1 -1
  515. package/dist/lib/walk-consumption.d.ts +6 -0
  516. package/dist/lib/walk-consumption.d.ts.map +1 -0
  517. package/dist/lib/walk-consumption.js +78 -0
  518. package/dist/lib/walk-consumption.js.map +1 -0
  519. package/dist/local-origin.d.ts +3 -0
  520. package/dist/local-origin.d.ts.map +1 -0
  521. package/dist/local-origin.js +37 -0
  522. package/dist/local-origin.js.map +1 -0
  523. package/dist/read-view.d.ts +17 -0
  524. package/dist/read-view.d.ts.map +1 -0
  525. package/dist/read-view.js +17 -0
  526. package/dist/read-view.js.map +1 -0
  527. package/dist/shared-tui.d.ts +12 -0
  528. package/dist/shared-tui.d.ts.map +1 -0
  529. package/dist/shared-tui.js +37 -0
  530. package/dist/shared-tui.js.map +1 -0
  531. package/node_modules/@openrig/daemon/dist/adapters/tmux.d.ts +7 -9
  532. package/node_modules/@openrig/daemon/dist/adapters/tmux.d.ts.map +1 -1
  533. package/node_modules/@openrig/daemon/dist/adapters/tmux.js +7 -35
  534. package/node_modules/@openrig/daemon/dist/adapters/tmux.js.map +1 -1
  535. package/node_modules/@openrig/daemon/dist/build-info.js +3 -3
  536. package/node_modules/@openrig/daemon/dist/daemon-shutdown.d.ts +27 -0
  537. package/node_modules/@openrig/daemon/dist/daemon-shutdown.d.ts.map +1 -0
  538. package/node_modules/@openrig/daemon/dist/daemon-shutdown.js +84 -0
  539. package/node_modules/@openrig/daemon/dist/daemon-shutdown.js.map +1 -0
  540. package/node_modules/@openrig/daemon/dist/domain/codex-thread-id.d.ts +1 -0
  541. package/node_modules/@openrig/daemon/dist/domain/codex-thread-id.d.ts.map +1 -1
  542. package/node_modules/@openrig/daemon/dist/domain/codex-thread-id.js +32 -23
  543. package/node_modules/@openrig/daemon/dist/domain/codex-thread-id.js.map +1 -1
  544. package/node_modules/@openrig/daemon/dist/domain/context-usage-store.d.ts +2 -0
  545. package/node_modules/@openrig/daemon/dist/domain/context-usage-store.d.ts.map +1 -1
  546. package/node_modules/@openrig/daemon/dist/domain/context-usage-store.js +7 -28
  547. package/node_modules/@openrig/daemon/dist/domain/context-usage-store.js.map +1 -1
  548. package/node_modules/@openrig/daemon/dist/domain/crash-cart-conductor.js +1 -1
  549. package/node_modules/@openrig/daemon/dist/domain/crash-cart-conductor.js.map +1 -1
  550. package/node_modules/@openrig/daemon/dist/domain/execution-view.d.ts.map +1 -1
  551. package/node_modules/@openrig/daemon/dist/domain/execution-view.js +24 -3
  552. package/node_modules/@openrig/daemon/dist/domain/execution-view.js.map +1 -1
  553. package/node_modules/@openrig/daemon/dist/domain/gateway/channel-operations.d.ts +39 -0
  554. package/node_modules/@openrig/daemon/dist/domain/gateway/channel-operations.d.ts.map +1 -0
  555. package/node_modules/@openrig/daemon/dist/domain/gateway/channel-operations.js +35 -0
  556. package/node_modules/@openrig/daemon/dist/domain/gateway/channel-operations.js.map +1 -0
  557. package/node_modules/@openrig/daemon/dist/domain/gateway/connections-projection.d.ts +61 -0
  558. package/node_modules/@openrig/daemon/dist/domain/gateway/connections-projection.d.ts.map +1 -0
  559. package/node_modules/@openrig/daemon/dist/domain/gateway/connections-projection.js +149 -0
  560. package/node_modules/@openrig/daemon/dist/domain/gateway/connections-projection.js.map +1 -0
  561. package/node_modules/@openrig/daemon/dist/domain/gateway/gateway-subsystem.d.ts +3 -0
  562. package/node_modules/@openrig/daemon/dist/domain/gateway/gateway-subsystem.d.ts.map +1 -1
  563. package/node_modules/@openrig/daemon/dist/domain/gateway/gateway-subsystem.js +3 -0
  564. package/node_modules/@openrig/daemon/dist/domain/gateway/gateway-subsystem.js.map +1 -1
  565. package/node_modules/@openrig/daemon/dist/domain/gateway/human-readiness.d.ts +37 -0
  566. package/node_modules/@openrig/daemon/dist/domain/gateway/human-readiness.d.ts.map +1 -0
  567. package/node_modules/@openrig/daemon/dist/domain/gateway/human-readiness.js +44 -0
  568. package/node_modules/@openrig/daemon/dist/domain/gateway/human-readiness.js.map +1 -0
  569. package/node_modules/@openrig/daemon/dist/domain/gateway/human-registry.d.ts +5 -8
  570. package/node_modules/@openrig/daemon/dist/domain/gateway/human-registry.d.ts.map +1 -1
  571. package/node_modules/@openrig/daemon/dist/domain/gateway/human-registry.js +5 -8
  572. package/node_modules/@openrig/daemon/dist/domain/gateway/human-registry.js.map +1 -1
  573. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/inbound.d.ts +16 -1
  574. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/inbound.d.ts.map +1 -1
  575. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/inbound.js +35 -12
  576. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/inbound.js.map +1 -1
  577. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/queue-access.d.ts +1 -0
  578. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/queue-access.d.ts.map +1 -1
  579. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/queue-access.js +1 -0
  580. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/queue-access.js.map +1 -1
  581. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/slack-subsystem.d.ts +18 -0
  582. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/slack-subsystem.d.ts.map +1 -1
  583. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/slack-subsystem.js +63 -8
  584. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/slack-subsystem.js.map +1 -1
  585. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/socket-inbound.d.ts +13 -0
  586. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/socket-inbound.d.ts.map +1 -1
  587. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/socket-inbound.js +59 -1
  588. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/socket-inbound.js.map +1 -1
  589. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/state-store.d.ts +21 -0
  590. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/state-store.d.ts.map +1 -1
  591. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/state-store.js +28 -1
  592. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/state-store.js.map +1 -1
  593. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/thread-routing.d.ts +2 -0
  594. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/thread-routing.d.ts.map +1 -1
  595. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/thread-routing.js +6 -1
  596. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/thread-routing.js.map +1 -1
  597. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/thread-seat-map.d.ts +4 -0
  598. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/thread-seat-map.d.ts.map +1 -1
  599. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/thread-seat-map.js +11 -0
  600. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/thread-seat-map.js.map +1 -1
  601. package/node_modules/@openrig/daemon/dist/domain/health-checkpoints.d.ts +57 -0
  602. package/node_modules/@openrig/daemon/dist/domain/health-checkpoints.d.ts.map +1 -0
  603. package/node_modules/@openrig/daemon/dist/domain/health-checkpoints.js +198 -0
  604. package/node_modules/@openrig/daemon/dist/domain/health-checkpoints.js.map +1 -0
  605. package/node_modules/@openrig/daemon/dist/domain/health-context.d.ts +14 -0
  606. package/node_modules/@openrig/daemon/dist/domain/health-context.d.ts.map +1 -0
  607. package/node_modules/@openrig/daemon/dist/domain/health-context.js +93 -0
  608. package/node_modules/@openrig/daemon/dist/domain/health-context.js.map +1 -0
  609. package/node_modules/@openrig/daemon/dist/domain/health-detectors.d.ts +106 -0
  610. package/node_modules/@openrig/daemon/dist/domain/health-detectors.d.ts.map +1 -0
  611. package/node_modules/@openrig/daemon/dist/domain/health-detectors.js +392 -0
  612. package/node_modules/@openrig/daemon/dist/domain/health-detectors.js.map +1 -0
  613. package/node_modules/@openrig/daemon/dist/domain/health-diagnosis.d.ts +143 -0
  614. package/node_modules/@openrig/daemon/dist/domain/health-diagnosis.d.ts.map +1 -0
  615. package/node_modules/@openrig/daemon/dist/domain/health-diagnosis.js +249 -0
  616. package/node_modules/@openrig/daemon/dist/domain/health-diagnosis.js.map +1 -0
  617. package/node_modules/@openrig/daemon/dist/domain/health-passive-ceremony.d.ts +19 -0
  618. package/node_modules/@openrig/daemon/dist/domain/health-passive-ceremony.d.ts.map +1 -0
  619. package/node_modules/@openrig/daemon/dist/domain/health-passive-ceremony.js +234 -0
  620. package/node_modules/@openrig/daemon/dist/domain/health-passive-ceremony.js.map +1 -0
  621. package/node_modules/@openrig/daemon/dist/domain/health-policy.d.ts +45 -0
  622. package/node_modules/@openrig/daemon/dist/domain/health-policy.d.ts.map +1 -0
  623. package/node_modules/@openrig/daemon/dist/domain/health-policy.js +89 -0
  624. package/node_modules/@openrig/daemon/dist/domain/health-policy.js.map +1 -0
  625. package/node_modules/@openrig/daemon/dist/domain/health-projection.d.ts +237 -0
  626. package/node_modules/@openrig/daemon/dist/domain/health-projection.d.ts.map +1 -0
  627. package/node_modules/@openrig/daemon/dist/domain/health-projection.js +312 -0
  628. package/node_modules/@openrig/daemon/dist/domain/health-projection.js.map +1 -0
  629. package/node_modules/@openrig/daemon/dist/domain/lifecycle-obligations.d.ts +18 -0
  630. package/node_modules/@openrig/daemon/dist/domain/lifecycle-obligations.d.ts.map +1 -0
  631. package/node_modules/@openrig/daemon/dist/domain/lifecycle-obligations.js +35 -0
  632. package/node_modules/@openrig/daemon/dist/domain/lifecycle-obligations.js.map +1 -0
  633. package/node_modules/@openrig/daemon/dist/domain/mission-control/mission-control-read-layer.d.ts.map +1 -1
  634. package/node_modules/@openrig/daemon/dist/domain/mission-control/mission-control-read-layer.js +14 -11
  635. package/node_modules/@openrig/daemon/dist/domain/mission-control/mission-control-read-layer.js.map +1 -1
  636. package/node_modules/@openrig/daemon/dist/domain/model-divergence/current-generation-record.d.ts.map +1 -1
  637. package/node_modules/@openrig/daemon/dist/domain/model-divergence/current-generation-record.js +6 -1
  638. package/node_modules/@openrig/daemon/dist/domain/model-divergence/current-generation-record.js.map +1 -1
  639. package/node_modules/@openrig/daemon/dist/domain/node-inventory.d.ts.map +1 -1
  640. package/node_modules/@openrig/daemon/dist/domain/node-inventory.js +1 -0
  641. package/node_modules/@openrig/daemon/dist/domain/node-inventory.js.map +1 -1
  642. package/node_modules/@openrig/daemon/dist/domain/policies/workflow-keepalive.d.ts +1 -0
  643. package/node_modules/@openrig/daemon/dist/domain/policies/workflow-keepalive.d.ts.map +1 -1
  644. package/node_modules/@openrig/daemon/dist/domain/policies/workflow-keepalive.js +7 -4
  645. package/node_modules/@openrig/daemon/dist/domain/policies/workflow-keepalive.js.map +1 -1
  646. package/node_modules/@openrig/daemon/dist/domain/project-lifecycle-compiler.d.ts +7 -0
  647. package/node_modules/@openrig/daemon/dist/domain/project-lifecycle-compiler.d.ts.map +1 -1
  648. package/node_modules/@openrig/daemon/dist/domain/project-lifecycle-compiler.js +133 -8
  649. package/node_modules/@openrig/daemon/dist/domain/project-lifecycle-compiler.js.map +1 -1
  650. package/node_modules/@openrig/daemon/dist/domain/queue-repository.d.ts +14 -0
  651. package/node_modules/@openrig/daemon/dist/domain/queue-repository.d.ts.map +1 -1
  652. package/node_modules/@openrig/daemon/dist/domain/queue-repository.js +60 -5
  653. package/node_modules/@openrig/daemon/dist/domain/queue-repository.js.map +1 -1
  654. package/node_modules/@openrig/daemon/dist/domain/queue-stuck-sweep.d.ts.map +1 -1
  655. package/node_modules/@openrig/daemon/dist/domain/queue-stuck-sweep.js +1 -0
  656. package/node_modules/@openrig/daemon/dist/domain/queue-stuck-sweep.js.map +1 -1
  657. package/node_modules/@openrig/daemon/dist/domain/queue-transition-log.d.ts +5 -0
  658. package/node_modules/@openrig/daemon/dist/domain/queue-transition-log.d.ts.map +1 -1
  659. package/node_modules/@openrig/daemon/dist/domain/queue-transition-log.js +28 -0
  660. package/node_modules/@openrig/daemon/dist/domain/queue-transition-log.js.map +1 -1
  661. package/node_modules/@openrig/daemon/dist/domain/queue-wait-backoff.d.ts +21 -0
  662. package/node_modules/@openrig/daemon/dist/domain/queue-wait-backoff.d.ts.map +1 -0
  663. package/node_modules/@openrig/daemon/dist/domain/queue-wait-backoff.js +96 -0
  664. package/node_modules/@openrig/daemon/dist/domain/queue-wait-backoff.js.map +1 -0
  665. package/node_modules/@openrig/daemon/dist/domain/queue-wake-repository.d.ts +1 -0
  666. package/node_modules/@openrig/daemon/dist/domain/queue-wake-repository.d.ts.map +1 -1
  667. package/node_modules/@openrig/daemon/dist/domain/queue-wake-repository.js +8 -3
  668. package/node_modules/@openrig/daemon/dist/domain/queue-wake-repository.js.map +1 -1
  669. package/node_modules/@openrig/daemon/dist/domain/seat-lifecycle-service.d.ts.map +1 -1
  670. package/node_modules/@openrig/daemon/dist/domain/seat-lifecycle-service.js +8 -1
  671. package/node_modules/@openrig/daemon/dist/domain/seat-lifecycle-service.js.map +1 -1
  672. package/node_modules/@openrig/daemon/dist/domain/startup-orchestrator.d.ts.map +1 -1
  673. package/node_modules/@openrig/daemon/dist/domain/startup-orchestrator.js +27 -11
  674. package/node_modules/@openrig/daemon/dist/domain/startup-orchestrator.js.map +1 -1
  675. package/node_modules/@openrig/daemon/dist/domain/startup-proof.d.ts.map +1 -1
  676. package/node_modules/@openrig/daemon/dist/domain/startup-proof.js +10 -9
  677. package/node_modules/@openrig/daemon/dist/domain/startup-proof.js.map +1 -1
  678. package/node_modules/@openrig/daemon/dist/domain/startup-resolver.d.ts +3 -1
  679. package/node_modules/@openrig/daemon/dist/domain/startup-resolver.d.ts.map +1 -1
  680. package/node_modules/@openrig/daemon/dist/domain/startup-resolver.js +18 -0
  681. package/node_modules/@openrig/daemon/dist/domain/startup-resolver.js.map +1 -1
  682. package/node_modules/@openrig/daemon/dist/domain/startup-validation.d.ts.map +1 -1
  683. package/node_modules/@openrig/daemon/dist/domain/startup-validation.js +12 -1
  684. package/node_modules/@openrig/daemon/dist/domain/startup-validation.js.map +1 -1
  685. package/node_modules/@openrig/daemon/dist/domain/types.d.ts +16 -1
  686. package/node_modules/@openrig/daemon/dist/domain/types.d.ts.map +1 -1
  687. package/node_modules/@openrig/daemon/dist/domain/types.js.map +1 -1
  688. package/node_modules/@openrig/daemon/dist/domain/user-settings/settings-store.d.ts +9 -1
  689. package/node_modules/@openrig/daemon/dist/domain/user-settings/settings-store.d.ts.map +1 -1
  690. package/node_modules/@openrig/daemon/dist/domain/user-settings/settings-store.js +86 -12
  691. package/node_modules/@openrig/daemon/dist/domain/user-settings/settings-store.js.map +1 -1
  692. package/node_modules/@openrig/daemon/dist/domain/watchdog-jobs-repository.d.ts +2 -0
  693. package/node_modules/@openrig/daemon/dist/domain/watchdog-jobs-repository.d.ts.map +1 -1
  694. package/node_modules/@openrig/daemon/dist/domain/watchdog-jobs-repository.js +5 -0
  695. package/node_modules/@openrig/daemon/dist/domain/watchdog-jobs-repository.js.map +1 -1
  696. package/node_modules/@openrig/daemon/dist/domain/workflow-boot-sweep.d.ts +1 -0
  697. package/node_modules/@openrig/daemon/dist/domain/workflow-boot-sweep.d.ts.map +1 -1
  698. package/node_modules/@openrig/daemon/dist/domain/workflow-boot-sweep.js +3 -0
  699. package/node_modules/@openrig/daemon/dist/domain/workflow-boot-sweep.js.map +1 -1
  700. package/node_modules/@openrig/daemon/dist/domain/workflow-exception-escalation.d.ts +4 -3
  701. package/node_modules/@openrig/daemon/dist/domain/workflow-exception-escalation.d.ts.map +1 -1
  702. package/node_modules/@openrig/daemon/dist/domain/workflow-exception-escalation.js +22 -21
  703. package/node_modules/@openrig/daemon/dist/domain/workflow-exception-escalation.js.map +1 -1
  704. package/node_modules/@openrig/daemon/dist/domain/workflow-exception-router.d.ts +4 -3
  705. package/node_modules/@openrig/daemon/dist/domain/workflow-exception-router.d.ts.map +1 -1
  706. package/node_modules/@openrig/daemon/dist/domain/workflow-exception-router.js +7 -6
  707. package/node_modules/@openrig/daemon/dist/domain/workflow-exception-router.js.map +1 -1
  708. package/node_modules/@openrig/daemon/dist/domain/workflow-human-destination.d.ts +18 -0
  709. package/node_modules/@openrig/daemon/dist/domain/workflow-human-destination.d.ts.map +1 -0
  710. package/node_modules/@openrig/daemon/dist/domain/workflow-human-destination.js +40 -0
  711. package/node_modules/@openrig/daemon/dist/domain/workflow-human-destination.js.map +1 -0
  712. package/node_modules/@openrig/daemon/dist/domain/workflow-projector.d.ts +28 -3
  713. package/node_modules/@openrig/daemon/dist/domain/workflow-projector.d.ts.map +1 -1
  714. package/node_modules/@openrig/daemon/dist/domain/workflow-projector.js +134 -33
  715. package/node_modules/@openrig/daemon/dist/domain/workflow-projector.js.map +1 -1
  716. package/node_modules/@openrig/daemon/dist/domain/workflow-role-context.d.ts +4 -6
  717. package/node_modules/@openrig/daemon/dist/domain/workflow-role-context.d.ts.map +1 -1
  718. package/node_modules/@openrig/daemon/dist/domain/workflow-role-context.js +7 -14
  719. package/node_modules/@openrig/daemon/dist/domain/workflow-role-context.js.map +1 -1
  720. package/node_modules/@openrig/daemon/dist/domain/workflow-runtime.d.ts +12 -3
  721. package/node_modules/@openrig/daemon/dist/domain/workflow-runtime.d.ts.map +1 -1
  722. package/node_modules/@openrig/daemon/dist/domain/workflow-runtime.js +124 -25
  723. package/node_modules/@openrig/daemon/dist/domain/workflow-runtime.js.map +1 -1
  724. package/node_modules/@openrig/daemon/dist/domain/workflow-spec-cache.d.ts +2 -2
  725. package/node_modules/@openrig/daemon/dist/domain/workflow-spec-cache.d.ts.map +1 -1
  726. package/node_modules/@openrig/daemon/dist/domain/workflow-spec-cache.js +16 -0
  727. package/node_modules/@openrig/daemon/dist/domain/workflow-spec-cache.js.map +1 -1
  728. package/node_modules/@openrig/daemon/dist/domain/workflow-types.d.ts +8 -0
  729. package/node_modules/@openrig/daemon/dist/domain/workflow-types.d.ts.map +1 -1
  730. package/node_modules/@openrig/daemon/dist/domain/workflow-types.js.map +1 -1
  731. package/node_modules/@openrig/daemon/dist/domain/workflow-validator.d.ts.map +1 -1
  732. package/node_modules/@openrig/daemon/dist/domain/workflow-validator.js +57 -24
  733. package/node_modules/@openrig/daemon/dist/domain/workflow-validator.js.map +1 -1
  734. package/node_modules/@openrig/daemon/dist/gateway-human-registry-surface.d.ts +1 -0
  735. package/node_modules/@openrig/daemon/dist/gateway-human-registry-surface.d.ts.map +1 -1
  736. package/node_modules/@openrig/daemon/dist/gateway-human-registry-surface.js +1 -0
  737. package/node_modules/@openrig/daemon/dist/gateway-human-registry-surface.js.map +1 -1
  738. package/node_modules/@openrig/daemon/dist/gateway-slack-surface.d.ts +1 -0
  739. package/node_modules/@openrig/daemon/dist/gateway-slack-surface.d.ts.map +1 -1
  740. package/node_modules/@openrig/daemon/dist/gateway-slack-surface.js +1 -0
  741. package/node_modules/@openrig/daemon/dist/gateway-slack-surface.js.map +1 -1
  742. package/node_modules/@openrig/daemon/dist/health-detectors-surface.d.ts +2 -0
  743. package/node_modules/@openrig/daemon/dist/health-detectors-surface.d.ts.map +1 -0
  744. package/node_modules/@openrig/daemon/dist/health-detectors-surface.js +2 -0
  745. package/node_modules/@openrig/daemon/dist/health-detectors-surface.js.map +1 -0
  746. package/node_modules/@openrig/daemon/dist/health-projection-surface.d.ts +2 -0
  747. package/node_modules/@openrig/daemon/dist/health-projection-surface.d.ts.map +1 -0
  748. package/node_modules/@openrig/daemon/dist/health-projection-surface.js +2 -0
  749. package/node_modules/@openrig/daemon/dist/health-projection-surface.js.map +1 -0
  750. package/node_modules/@openrig/daemon/dist/index.d.ts.map +1 -1
  751. package/node_modules/@openrig/daemon/dist/index.js +38 -95
  752. package/node_modules/@openrig/daemon/dist/index.js.map +1 -1
  753. package/node_modules/@openrig/daemon/dist/lib/pane-envelope.d.ts.map +1 -1
  754. package/node_modules/@openrig/daemon/dist/lib/pane-envelope.js +4 -1
  755. package/node_modules/@openrig/daemon/dist/lib/pane-envelope.js.map +1 -1
  756. package/node_modules/@openrig/daemon/dist/project-lifecycle-surface.d.ts +1 -1
  757. package/node_modules/@openrig/daemon/dist/project-lifecycle-surface.d.ts.map +1 -1
  758. package/node_modules/@openrig/daemon/dist/routes/gateway.d.ts +5 -1
  759. package/node_modules/@openrig/daemon/dist/routes/gateway.d.ts.map +1 -1
  760. package/node_modules/@openrig/daemon/dist/routes/gateway.js +80 -22
  761. package/node_modules/@openrig/daemon/dist/routes/gateway.js.map +1 -1
  762. package/node_modules/@openrig/daemon/dist/routes/health-diagnosis.d.ts +3 -0
  763. package/node_modules/@openrig/daemon/dist/routes/health-diagnosis.d.ts.map +1 -0
  764. package/node_modules/@openrig/daemon/dist/routes/health-diagnosis.js +47 -0
  765. package/node_modules/@openrig/daemon/dist/routes/health-diagnosis.js.map +1 -0
  766. package/node_modules/@openrig/daemon/dist/routes/health.d.ts +3 -0
  767. package/node_modules/@openrig/daemon/dist/routes/health.d.ts.map +1 -0
  768. package/node_modules/@openrig/daemon/dist/routes/health.js +50 -0
  769. package/node_modules/@openrig/daemon/dist/routes/health.js.map +1 -0
  770. package/node_modules/@openrig/daemon/dist/routes/hosts.d.ts +2 -0
  771. package/node_modules/@openrig/daemon/dist/routes/hosts.d.ts.map +1 -1
  772. package/node_modules/@openrig/daemon/dist/routes/hosts.js +12 -5
  773. package/node_modules/@openrig/daemon/dist/routes/hosts.js.map +1 -1
  774. package/node_modules/@openrig/daemon/dist/routes/queue.d.ts.map +1 -1
  775. package/node_modules/@openrig/daemon/dist/routes/queue.js +4 -3
  776. package/node_modules/@openrig/daemon/dist/routes/queue.js.map +1 -1
  777. package/node_modules/@openrig/daemon/dist/routes/require-sender-identity.d.ts +3 -1
  778. package/node_modules/@openrig/daemon/dist/routes/require-sender-identity.d.ts.map +1 -1
  779. package/node_modules/@openrig/daemon/dist/routes/require-sender-identity.js +11 -5
  780. package/node_modules/@openrig/daemon/dist/routes/require-sender-identity.js.map +1 -1
  781. package/node_modules/@openrig/daemon/dist/routes/sessions.d.ts.map +1 -1
  782. package/node_modules/@openrig/daemon/dist/routes/sessions.js +95 -27
  783. package/node_modules/@openrig/daemon/dist/routes/sessions.js.map +1 -1
  784. package/node_modules/@openrig/daemon/dist/routes/workflow.d.ts.map +1 -1
  785. package/node_modules/@openrig/daemon/dist/routes/workflow.js +6 -1
  786. package/node_modules/@openrig/daemon/dist/routes/workflow.js.map +1 -1
  787. package/node_modules/@openrig/daemon/dist/server.d.ts +8 -0
  788. package/node_modules/@openrig/daemon/dist/server.d.ts.map +1 -1
  789. package/node_modules/@openrig/daemon/dist/server.js +10 -1
  790. package/node_modules/@openrig/daemon/dist/server.js.map +1 -1
  791. package/node_modules/@openrig/daemon/dist/startup.d.ts.map +1 -1
  792. package/node_modules/@openrig/daemon/dist/startup.js +35 -4
  793. package/node_modules/@openrig/daemon/dist/startup.js.map +1 -1
  794. package/node_modules/@openrig/daemon/package.json +13 -1
  795. package/package.json +1 -1
  796. package/tui/dist/commands/completion.d.ts +8 -0
  797. package/tui/dist/commands/completion.d.ts.map +1 -0
  798. package/tui/dist/commands/completion.js +37 -0
  799. package/tui/dist/commands/completion.js.map +1 -0
  800. package/tui/dist/commands/registry.d.ts +7 -1
  801. package/tui/dist/commands/registry.d.ts.map +1 -1
  802. package/tui/dist/commands/registry.js +48 -1
  803. package/tui/dist/commands/registry.js.map +1 -1
  804. package/tui/dist/connections/connections-model.d.ts +72 -0
  805. package/tui/dist/connections/connections-model.d.ts.map +1 -0
  806. package/tui/dist/connections/connections-model.js +64 -0
  807. package/tui/dist/connections/connections-model.js.map +1 -0
  808. package/tui/dist/daemon-client.d.ts +3 -0
  809. package/tui/dist/daemon-client.d.ts.map +1 -1
  810. package/tui/dist/daemon-client.js +5 -0
  811. package/tui/dist/daemon-client.js.map +1 -1
  812. package/tui/dist/detail.d.ts +3 -0
  813. package/tui/dist/detail.d.ts.map +1 -1
  814. package/tui/dist/detail.js +23 -0
  815. package/tui/dist/detail.js.map +1 -1
  816. package/tui/dist/execution/execution-model.d.ts +1 -1
  817. package/tui/dist/execution/execution-model.d.ts.map +1 -1
  818. package/tui/dist/execution/execution-model.js +46 -170
  819. package/tui/dist/execution/execution-model.js.map +1 -1
  820. package/tui/dist/execution/workflow-model.d.ts +6 -0
  821. package/tui/dist/execution/workflow-model.d.ts.map +1 -0
  822. package/tui/dist/execution/workflow-model.js +219 -0
  823. package/tui/dist/execution/workflow-model.js.map +1 -0
  824. package/tui/dist/grammar.d.ts.map +1 -1
  825. package/tui/dist/grammar.js +1 -2
  826. package/tui/dist/grammar.js.map +1 -1
  827. package/tui/dist/health/health-model.d.ts +25 -0
  828. package/tui/dist/health/health-model.d.ts.map +1 -0
  829. package/tui/dist/health/health-model.js +323 -0
  830. package/tui/dist/health/health-model.js.map +1 -0
  831. package/tui/dist/hydrate.d.ts.map +1 -1
  832. package/tui/dist/hydrate.js +57 -9
  833. package/tui/dist/hydrate.js.map +1 -1
  834. package/tui/dist/input.d.ts +2 -0
  835. package/tui/dist/input.d.ts.map +1 -1
  836. package/tui/dist/input.js +30 -6
  837. package/tui/dist/input.js.map +1 -1
  838. package/tui/dist/main.js +47 -10
  839. package/tui/dist/main.js.map +1 -1
  840. package/tui/dist/render.d.ts +4 -0
  841. package/tui/dist/render.d.ts.map +1 -1
  842. package/tui/dist/render.js +150 -75
  843. package/tui/dist/render.js.map +1 -1
  844. package/tui/dist/sections.d.ts.map +1 -1
  845. package/tui/dist/sections.js +1 -0
  846. package/tui/dist/sections.js.map +1 -1
  847. package/tui/dist/socket-server.d.ts +4 -0
  848. package/tui/dist/socket-server.d.ts.map +1 -1
  849. package/tui/dist/socket-server.js +4 -0
  850. package/tui/dist/socket-server.js.map +1 -1
  851. package/tui/dist/state.d.ts +3 -1
  852. package/tui/dist/state.d.ts.map +1 -1
  853. package/tui/dist/state.js +58 -14
  854. package/tui/dist/state.js.map +1 -1
  855. package/tui/dist/stylize.js +3 -3
  856. package/tui/dist/stylize.js.map +1 -1
  857. package/tui/dist/time.d.ts +9 -0
  858. package/tui/dist/time.d.ts.map +1 -0
  859. package/tui/dist/time.js +42 -0
  860. package/tui/dist/time.js.map +1 -0
  861. package/tui/dist/types.d.ts +126 -2
  862. package/tui/dist/types.d.ts.map +1 -1
@@ -1,3 +1,5 @@
1
+ import { DEFAULT_TIME_ZONE, displayTime } from "./time.js";
2
+ import { connectionsLines } from "./connections/connections-model.js";
1
3
  // Hand-rolled ANSI renderer (Phase-0 substrate decision). Pure function:
2
4
  // (state, snapshot) → {lines, hitMap, explorerRows}. BOTH panes emit hit
3
5
  // targets — explorer rows AND content-pane surfaces (table rows, view tabs,
@@ -18,7 +20,8 @@ import { buildLedgerExplorer } from "./crash-cart/ledger-explorer.js";
18
20
  import { runtimeMarkSegs } from "./topology/runtime-marks.js";
19
21
  import { barCells, flashActive, reducedMotion, spinnerFrame } from "./motion.js";
20
22
  import { explorerWidth, MOTION_FRAME_MS } from "./visual-layout.js";
21
- import { detailPage, fieldLine, sectionRule, listItem, alignedRow, LABEL_W } from "./detail.js";
23
+ import { detailPage, fieldLine, sectionRule, listItem, alignedRow, LABEL_W, wrapDetailLines } from "./detail.js";
24
+ import { healthAgentLines, healthDetailLines, healthListLines, healthSummaryLine } from "./health/health-model.js";
22
25
  function pad(text, width) {
23
26
  const t = String(text ?? "");
24
27
  if (t.length <= width)
@@ -215,7 +218,7 @@ function workRows(rows, width) {
215
218
  ];
216
219
  });
217
220
  }
218
- function agentDetailLines(snap, found, contentWidth) {
221
+ function agentDetailLines(snap, found, contentWidth, timeZone = DEFAULT_TIME_ZONE) {
219
222
  const { agent, rig, pod } = found;
220
223
  const session = agent.session;
221
224
  const specInLibrary = !!agent.spec && !!findSpec(snap, agent.spec);
@@ -270,9 +273,19 @@ function agentDetailLines(snap, found, contentWidth) {
270
273
  ...(activityReason ? [{ label: "reason", value: activityReason }] : []),
271
274
  ...(agent.activity?.decidedBy ? [{ label: "decided by", value: agent.activity.decidedBy }] : []),
272
275
  ...(agent.activity?.signalSource || agent.activity?.signalReason ? [{ label: "signal", value: `${agent.activity.signalSource ?? "unknown"} · ${agent.activity.signalReason ?? "no reason"}` }] : []),
273
- ...(agent.activity?.eventAt ? [{ label: "changed", value: agent.activity.eventAt }] : []),
276
+ ...(agent.activity?.eventAt ? [{ label: "changed", value: displayTime(agent.activity.eventAt, timeZone) }] : []),
274
277
  ],
275
278
  },
279
+ {
280
+ title: "HEALTH",
281
+ lines: healthAgentLines(snap, {
282
+ kind: "seat",
283
+ rigId: rig.id ?? rig.name,
284
+ seatId: agent.nodeId ?? null,
285
+ seatName: agent.name,
286
+ local: found.host === snap.hosts[0],
287
+ }, contentWidth),
288
+ },
276
289
  { title: `CURRENT WORK · ${currentRows.length}`, lines: workRows(currentRows, contentWidth) },
277
290
  {
278
291
  title: "QUEUE",
@@ -296,16 +309,22 @@ function agentDetailLines(snap, found, contentWidth) {
296
309
  ],
297
310
  },
298
311
  {
299
- title: "SPEC",
312
+ title: "SPEC · effective seat binding",
300
313
  fields: [specInLibrary
301
314
  ? { label: "spec", value: agent.spec, link: { type: "cross", kind: "spec-of", name: agent.name, target: { host: found.host.name, rig: rig.name, pod: pod.name } } }
302
315
  : { label: "spec", value: agent.spec ? `${agent.spec} (not in library)` : "—" }],
316
+ lines: [
317
+ ...wrapDetailValue("profile", agent.profile ?? "not served", contentWidth),
318
+ ...wrapDetailValue("version", agent.specVersion ?? "not served", contentWidth),
319
+ ...wrapDetailValue("source hash", agent.specHash ?? "not served", contentWidth),
320
+ ...wrapDetailValue("basis", "Served seat binding; the authored library may have changed since launch.", contentWidth),
321
+ ],
303
322
  },
304
323
  ]),
305
324
  ];
306
325
  }
307
326
  function tabsLine(state, suffix) {
308
- // S12: four tabs, each its own click zone (the first zone starts at
327
+ // Each topology tab is its own click zone (the first zone starts at
309
328
  // content col 0, preserving the focus-marker floor); `tab graph` = the
310
329
  // topology graph view (frame-01 hatchet mainline)
311
330
  const labels = [
@@ -313,6 +332,7 @@ function tabsLine(state, suffix) {
313
332
  ["recent", state.viewTab === "recent" ? "[ RECENT ]" : " RECENT "],
314
333
  ["overview", state.viewTab === "overview" ? "[ OVERVIEW ]" : " OVERVIEW "],
315
334
  ["graph", state.viewTab === "graph" ? "[ GRAPH ]" : " GRAPH "],
335
+ ["health", state.viewTab === "health" ? "[ HEALTH ]" : " HEALTH "],
316
336
  ];
317
337
  const text = `${labels.map(([, label]) => label).join("")} ${suffix}`;
318
338
  const zones = [];
@@ -323,12 +343,6 @@ function tabsLine(state, suffix) {
323
343
  }
324
344
  return [{ text, zones }];
325
345
  }
326
- function localClock(iso) {
327
- const date = new Date(iso);
328
- if (Number.isNaN(date.getTime()))
329
- return "??:??";
330
- return `${String(date.getHours()).padStart(2, "0")}:${String(date.getMinutes()).padStart(2, "0")}`;
331
- }
332
346
  function queueRows(snap) {
333
347
  return [...snap.attention, ...snap.blocked, ...snap.inProgress, ...snap.pending, ...snap.recentlyFinished];
334
348
  }
@@ -369,53 +383,54 @@ function recentScopeMatches(snap, scope) {
369
383
  return false;
370
384
  return scope.kind === "instance" || (served.kind === "rig" && served.rig === scope.rig);
371
385
  }
372
- function recentLines(snap, scope, width, expanded) {
386
+ function recentLines(snap, scope, width, expanded, timeZone) {
373
387
  if (!recentScopeMatches(snap, scope) || snap.recentTransitions == null)
374
388
  return [];
375
- const timeW = 5;
376
389
  const rows = expanded ? snap.recentTransitions : snap.recentTransitions.slice(-5);
377
390
  const lines = [
378
391
  ...(expanded ? [] : [{ text: "" }]),
379
- sectionRule(`RECENT · ${scope.kind === "instance" ? "instance" : `rig ${scope.rig}`} · material queue transitions · newest last`, width),
392
+ sectionRule(`RECENT · ${scope.kind === "instance" ? "instance" : `rig ${scope.rig}`}`, width),
393
+ { text: " Recorded queue changes · oldest to newest · Enter inspects" },
380
394
  ];
381
395
  if (rows.length === 0)
382
396
  return [...lines, { text: " No recorded transitions in the current window." }];
383
- if (width < 78) {
384
- const rigW = scope.kind === "instance" ? 9 : 0;
385
- const changeW = Math.max(16, width - timeW - rigW - 2);
386
- lines.push({ text: alignedRow([["TIME", timeW], ...(rigW ? [["RIG", rigW]] : []), ["CHANGE", changeW]]) });
387
- for (const row of rows) {
388
- const action = recentTargetAction(snap, row);
389
- lines.push({
390
- text: alignedRow([[localClock(row.ts), timeW], ...(rigW ? [[pad(row.rig ?? "?", rigW), rigW]] : []), [pad(row.change, changeW), changeW]]).slice(0, width),
391
- ...(action ? { action } : {}),
392
- });
393
- lines.push({ text: ` ${pad(row.actorSession, Math.max(8, width - 8))}`.slice(0, width), ...(action ? { action } : {}) });
394
- lines.push({ text: ` → ${row.target}`.slice(0, width), ...(action ? { action } : {}) });
395
- lines.push(...wrapDetailValue("work", recentWorkText(snap, row), width)
396
- .map((line) => ({ ...line, ...(action ? { action } : {}) })));
397
- }
398
- return lines;
399
- }
400
- const rigW = scope.kind === "instance" ? Math.min(16, Math.max(9, Math.floor(width * 0.13))) : 0;
401
- const actorW = Math.min(26, Math.max(16, Math.floor(width * 0.21)));
402
- const changeW = Math.min(36, Math.max(20, Math.floor(width * 0.28)));
403
- const targetW = Math.max(10, width - timeW - rigW - actorW - changeW - (scope.kind === "instance" ? 4 : 3));
404
- lines.push({ text: alignedRow([["TIME", timeW], ...(scope.kind === "instance" ? [["RIG", rigW]] : []), ["ACTOR", actorW], ["CHANGE", changeW], ["TARGET", targetW]]) });
405
397
  for (const row of rows) {
406
- const action = recentTargetAction(snap, row);
407
- const text = alignedRow([
408
- [localClock(row.ts), timeW],
409
- ...(scope.kind === "instance" ? [[pad(row.rig ?? "?", rigW), rigW]] : []),
410
- [pad(row.actorSession, actorW), actorW],
411
- [pad(row.change, changeW), changeW],
412
- [pad(row.target, targetW), targetW],
413
- ]).slice(0, width);
414
- lines.push({ text, ...(action ? { action } : {}) });
415
- lines.push(...wrapDetailValue("work", recentWorkText(snap, row), width)
416
- .map((line) => ({ ...line, ...(action ? { action } : {}) })));
398
+ lines.push(listItem(`${displayTime(row.ts, timeZone)} · #${row.transitionId}`, { type: "recent-open", transitionId: row.transitionId }), { text: ` ${row.actorSession || "actor unknown"} · ${row.change || "change unknown"}` }, { text: ` ${recentWorkText(snap, row)}` }, { text: ` ${row.targetKind}: ${row.target}${scope.kind === "instance" ? ` · rig ${row.rig ?? "unknown"}` : ""}` }, { text: "" });
417
399
  }
418
- return lines;
400
+ return wrapDetailLines(lines, width);
401
+ }
402
+ function recentDetailLines(state, snap, width) {
403
+ const row = state.recentOpen;
404
+ const target = recentTargetAction(snap, row);
405
+ return wrapDetailLines([
406
+ { text: `Recent event #${row.transitionId} · Esc returns` },
407
+ fieldLine({ label: "when", value: displayTime(row.ts, state.timeZone) }),
408
+ fieldLine({ label: "actor", value: row.actorSession || "unknown" }),
409
+ fieldLine({ label: "change", value: row.change || "unknown" }),
410
+ fieldLine({ label: "work", value: recentWorkText(snap, row) }),
411
+ fieldLine({ label: "target", value: `${row.targetKind}: ${row.target}` }),
412
+ fieldLine({ label: "rig", value: row.rig ?? "not served" }),
413
+ fieldLine({ label: "queue item", value: row.qitemId }),
414
+ fieldLine({ label: "raw time", value: row.ts }),
415
+ { text: " This is the recorded change, not an independent check of its outcome." },
416
+ ...(target ? [listItem("Related work / owner", target)] : [{ text: " Related work is outside the current snapshot." }]),
417
+ listItem("Back · Esc", { type: "back" }),
418
+ ], width);
419
+ }
420
+ function timeZoneLines(state, width) {
421
+ return wrapDetailLines([
422
+ { text: "Local time · presentation setting" },
423
+ fieldLine({ label: "timezone", value: state.timeZone }),
424
+ ...(state.timeZoneWarning ? [{ text: ` ${state.timeZoneWarning}` }] : []),
425
+ { text: " Absolute times include date and zone. Daylight saving follows the named zone. Elapsed ages stay relative; source timestamps are unchanged." },
426
+ { text: "" },
427
+ { text: " Change the persistent setting from the shell, then reopen this TUI:" },
428
+ { text: " rig config set ui.timezone Europe/London" },
429
+ { text: " rig config reset ui.timezone" },
430
+ { text: " rig config get ui.timezone --show-source" },
431
+ { text: " Default: America/Los_Angeles. OPENRIG_UI_TIMEZONE overrides the file setting on this TUI's instance." },
432
+ listItem("Back · Esc", { type: "back" }),
433
+ ], width);
419
434
  }
420
435
  function specTabsLine(state, name) {
421
436
  const active = state.viewTab === "topology" || state.viewTab === "yaml" ? state.viewTab : "configuration";
@@ -495,9 +510,11 @@ function fieldWrapped(label, values) {
495
510
  }
496
511
  function instanceContentLines(state, snap, host, contentWidth, motion) {
497
512
  const lines = tabsLine(state, `instance ${host.name}`);
498
- const scope = { kind: "instance" };
513
+ const scope = { kind: "instance", local: host === snap.hosts[0] };
514
+ if (state.viewTab === "health")
515
+ return [...lines, { text: "" }, ...healthListLines(snap, scope, contentWidth)];
499
516
  if (state.viewTab === "recent") {
500
- const recent = recentLines(snap, scope, contentWidth, true);
517
+ const recent = recentLines(snap, scope, contentWidth, true, state.timeZone);
501
518
  return recent.length > 0
502
519
  ? [...lines, ...recent]
503
520
  : [...lines, { text: "" }, { text: motion.loading ? `${motion.frame} instance RECENT read pending` : "(instance RECENT window not served)" }];
@@ -555,6 +572,7 @@ function instanceContentLines(state, snap, host, contentWidth, motion) {
555
572
  lines.push({ text: "" }, { text: ` style: ${state.graphStyle} · style hatchet|braille|braille-fallback rides the command bar` });
556
573
  return lines;
557
574
  }
575
+ lines.push(healthSummaryLine(snap, scope, contentWidth));
558
576
  lines.push({ text: state.filter ? `/ filter instance rows: ${state.filter} · / replace · esc clear` : "/ filter instance rows…" });
559
577
  const columns = instanceAgentColumns(contentWidth);
560
578
  lines.push({ text: tableRow(columns, { rig: "RIG", pod: "POD", seat: "SEAT", runtime: "RT", context: "CTX", status: "STATE", queue: "Q", work: "WORK", now: "NOW" }) });
@@ -608,13 +626,21 @@ function instanceContentLines(state, snap, host, contentWidth, motion) {
608
626
  }
609
627
  }
610
628
  lines.push({ text: "" }, { text: `${host.rigs.length} rigs · ${seatCount} seats · ${workingCount} working · ${attentionCount} need attention · ${openCount} open rows` });
611
- lines.push(...recentLines(snap, scope, contentWidth, false));
629
+ lines.push(...recentLines(snap, scope, contentWidth, false, state.timeZone));
612
630
  return lines;
613
631
  }
614
632
  function contentLines(state, snap, contentWidth, motion) {
615
633
  const contentWidthForGraph = contentWidth;
616
634
  void contentWidthForGraph;
617
635
  const lines = [];
636
+ if (state.timeZoneHelp)
637
+ return timeZoneLines(state, contentWidth);
638
+ if (state.recentOpen)
639
+ return recentDetailLines(state, snap, contentWidth);
640
+ if (state.section === "connections")
641
+ return connectionsLines(snap, contentWidth, state.timeZone);
642
+ if (state.healthOpen)
643
+ return healthDetailLines(snap, state.healthOpen, contentWidth, state.timeZone);
618
644
  // PULSE is a FULL-WIDTH view handled by an early return in renderScreen
619
645
  // (renderPulseScreen) — it never reaches the sidebar+content layout below.
620
646
  if (state.section === "topology") {
@@ -641,7 +667,7 @@ function contentLines(state, snap, contentWidth, motion) {
641
667
  const found = hostName ? findAgent(snap, leaf.name, { host: hostName, rig: rigName, pod: podName }) : findAgent(snap, leaf.name);
642
668
  if (!found)
643
669
  return [{ text: `agent "${leaf.name}" not in the current snapshot` }];
644
- return agentDetailLines(snap, found, contentWidth);
670
+ return agentDetailLines(snap, found, contentWidth, state.timeZone);
645
671
  }
646
672
  const hostName = state.drill.find((d) => d.kind === "host")?.name;
647
673
  const host = (hostName ? snap.hosts.find((candidate) => candidate.name === hostName) : snap.hosts[0]);
@@ -671,8 +697,11 @@ function contentLines(state, snap, contentWidth, motion) {
671
697
  .filter((a) => !state.filter || a.name.includes(state.filter) || a.pod.includes(state.filter));
672
698
  const suffix = `rig ${rig.name}${podFilter ? ` · pod ${podFilter}` : ""}${state.filter ? ` · filter "${state.filter}"` : ""}`;
673
699
  lines.push(...tabsLine(state, suffix));
700
+ const healthScope = { kind: "rig", rigId: rig.id ?? rig.name, rigName: rig.name, local: host === snap.hosts[0] };
701
+ if (state.viewTab === "health")
702
+ return [...lines, { text: "" }, ...healthListLines(snap, healthScope, contentWidth)];
674
703
  if (state.viewTab === "recent") {
675
- const recent = recentLines(snap, { kind: "rig", rig: rig.name }, contentWidth, true);
704
+ const recent = recentLines(snap, { kind: "rig", rig: rig.name }, contentWidth, true, state.timeZone);
676
705
  return recent.length > 0
677
706
  ? [...lines, ...recent]
678
707
  : [...lines, { text: "" }, { text: motion.loading ? `${motion.frame} rig RECENT read pending` : "(rig RECENT window not served)" }];
@@ -725,6 +754,8 @@ function contentLines(state, snap, contentWidth, motion) {
725
754
  lines.push({ text: ` style: ${state.graphStyle} · style hatchet|braille|braille-fallback rides the command bar` });
726
755
  return lines;
727
756
  }
757
+ lines.push(listItem("Configuration and human routes", { type: "jump", section: "connections" }));
758
+ lines.push(healthSummaryLine(snap, healthScope, contentWidth));
728
759
  lines.push({ text: state.filter ? `/ filter agents: ${state.filter} · / replace · esc clear` : "/ filter agents…" });
729
760
  if (state.viewTab === "overview") {
730
761
  lines.push(...detailPage({ text: `rig ${rig.name}` }, [
@@ -805,7 +836,7 @@ function contentLines(state, snap, contentWidth, motion) {
805
836
  const attention = rows.filter((agent) => /attention|needs|blocked|unknown|failed/.test(agent.status)).length;
806
837
  lines.push({ text: `${rows.length} seats · ${working} working · ${attention} need attention · ${rows.reduce((n, agent) => n + queueFacts(snap, agent.session).count, 0)} open rows` });
807
838
  if (!podFilter)
808
- lines.push(...recentLines(snap, { kind: "rig", rig: rig.name }, contentWidth, false));
839
+ lines.push(...recentLines(snap, { kind: "rig", rig: rig.name }, contentWidth, false, state.timeZone));
809
840
  return lines;
810
841
  }
811
842
  if (state.section === "specs") {
@@ -814,8 +845,28 @@ function contentLines(state, snap, contentWidth, motion) {
814
845
  const spec = findSpec(snap, leaf.name);
815
846
  if (!spec)
816
847
  return [{ text: `spec "${leaf.name}" not in the current snapshot` }];
817
- if (spec.kind === "rig") {
848
+ if (spec.kind === "rig")
818
849
  lines.push(specTabsLine(state, spec.name));
850
+ lines.push({ text: `${spec.kind} spec ${spec.name}` });
851
+ lines.push(fieldLine({ label: "purpose", value: spec.description ?? "not declared in the available source" }));
852
+ 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" }));
854
+ lines.push({ text: " Authored declaration. Resource availability is not the effective loadout of a running seat." });
855
+ lines.push(sectionRule("Observed consumers · open for effective runtime/configuration", contentWidth));
856
+ for (const consumer of spec.consumers ?? []) {
857
+ const resource = consumer.agent ? "agent" : "rig";
858
+ lines.push(listItem(`${consumer.agent ?? consumer.rig} · ${consumer.status ?? "unknown"}${consumer.runtime ? ` · ${consumer.runtime}` : ""}${consumer.model ? ` · ${consumer.model}` : ""}`, { type: "drill", resource, name: consumer.agent ?? consumer.rig, target: { host: consumer.host, rig: consumer.rig } }));
859
+ }
860
+ if (spec.consumers && !spec.consumers.length)
861
+ lines.push({ text: " No consumers observed in the available local inventory (remote seats are not enumerated)." });
862
+ if (spec.consumers === undefined)
863
+ lines.push({ text: " Consumer projection unavailable." });
864
+ for (const error of snap.readErrors.filter((error) => error.startsWith("nodes(") || error.startsWith("rig-spec(") || error.startsWith("rigs-summary:")))
865
+ lines.push({ text: ` Inventory incomplete: ${error}` });
866
+ lines.push(listItem("Back · Esc", { type: "back" }));
867
+ if (spec.sourceUnavailable)
868
+ return wrapDetailLines([...lines, { text: ` Source unavailable: ${spec.sourceUnavailable}` }], contentWidth);
869
+ if (spec.kind === "rig") {
819
870
  if (spec.sourcePath)
820
871
  lines.push(fieldLine({ label: "source", value: `${displayPath(spec.sourcePath, 56)} · ${sourceProvenance(spec)}` }));
821
872
  if (state.viewTab === "topology") {
@@ -827,7 +878,7 @@ function contentLines(state, snap, contentWidth, motion) {
827
878
  lines.push({ text: "" });
828
879
  if (nodes.length === 0) {
829
880
  lines.push({ text: " (topology projection is empty)" });
830
- return lines;
881
+ return wrapDetailLines(lines, contentWidth);
831
882
  }
832
883
  lines.push({ text: ` ${alignedRow(NODE_COLS)}` });
833
884
  lines.push({ text: ` ${"─".repeat(NODE_COLS.reduce((n, [, w]) => n + w + 1, -1))}` });
@@ -839,12 +890,12 @@ function contentLines(state, snap, contentWidth, motion) {
839
890
  for (const edge of graphEdges)
840
891
  lines.push({ text: ` ${alignedRow([[edge.source, 16], ["→", 2], [edge.target, 20]])} (${edge.kind})` });
841
892
  }
842
- return lines;
893
+ return wrapDetailLines(lines, contentWidth);
843
894
  }
844
895
  if (state.viewTab === "yaml") {
845
896
  for (const rawLine of (spec.raw ?? "# raw YAML unavailable").split("\n"))
846
897
  lines.push({ text: ` ${rawLine}` });
847
- return lines;
898
+ return wrapDetailLines(lines, contentWidth);
848
899
  }
849
900
  const members = spec.pods?.reduce((count, pod) => count + pod.members.length, 0) ?? spec.legacyNodes?.length ?? 0;
850
901
  const edges = (spec.edges?.length ?? 0) + (spec.pods?.reduce((count, pod) => count + pod.edges.length, 0) ?? 0);
@@ -919,12 +970,12 @@ function contentLines(state, snap, contentWidth, motion) {
919
970
  fields: [{ label: "source", value: spec.sourcePath ? `${displayPath(spec.sourcePath, 56)} · ${sourceProvenance(spec)}` : "—" }],
920
971
  },
921
972
  {
922
- title: "where it runs",
973
+ title: "Declared rig references",
923
974
  fields: [
924
975
  ...((spec.usedByRigs?.length ?? 0) === 0
925
- ? [{ label: "used by", value: "—" }]
976
+ ? [{ label: "declared by", value: "—" }]
926
977
  : (spec.usedByRigs ?? []).map((rig) => ({
927
- label: "used by",
978
+ label: "declared by",
928
979
  value: `rig ${rig}`,
929
980
  link: { type: "drill", resource: "spec", name: rig },
930
981
  }))),
@@ -937,7 +988,7 @@ function contentLines(state, snap, contentWidth, motion) {
937
988
  },
938
989
  ]));
939
990
  }
940
- return lines;
991
+ return wrapDetailLines(lines, contentWidth);
941
992
  }
942
993
  lines.push({ text: "SPEC LIBRARY" });
943
994
  lines.push({ text: state.filter ? `/ filter specs: ${state.filter} · / replace · esc clear` : "/ filter specs…" });
@@ -1034,6 +1085,16 @@ function contentLines(state, snap, contentWidth, motion) {
1034
1085
  return lines;
1035
1086
  }
1036
1087
  if (state.section === "scopes") {
1088
+ if (!state.scopesMission && snap.execution) {
1089
+ const selected = snap.execution;
1090
+ const instances = selected.lifecycle_instances;
1091
+ 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.` },
1096
+ ], contentWidth);
1097
+ }
1037
1098
  // SCOPES owns both levels. Both mission-graph and Explorer slice routes land
1038
1099
  // on the same execution-backed canonical detail; store-direct content is
1039
1100
  // composed into that page instead of surviving as a competing destination.
@@ -1047,16 +1108,16 @@ function contentLines(state, snap, contentWidth, motion) {
1047
1108
  return executionContentLines(execution, snap.scopes, snap.readErrors, state.executionOpen, contentWidth, false, snap.sliceDetail, {
1048
1109
  collapseReqs: state.scopesCollapseReqs,
1049
1110
  narrative: state.scopesNarrative,
1050
- });
1111
+ }, state.timeZone);
1051
1112
  }
1052
1113
  if (detail && execution) {
1053
1114
  return executionContentLines(execution, snap.scopes, snap.readErrors, `slice:${detail.id ?? detail.dirName}`, contentWidth, false, snap.sliceDetail, {
1054
1115
  collapseReqs: state.scopesCollapseReqs,
1055
1116
  narrative: state.scopesNarrative,
1056
- });
1117
+ }, state.timeZone);
1057
1118
  }
1058
1119
  if (!detail && missionName) {
1059
- const lines = executionContentLines(execution, snap.scopes, snap.readErrors, state.executionOpen, contentWidth, !snap.hydratedAt || snap.executionMission !== missionName);
1120
+ const lines = executionContentLines(execution, snap.scopes, snap.readErrors, state.executionOpen, contentWidth, !snap.hydratedAt || snap.executionMission !== missionName, undefined, undefined, state.timeZone);
1060
1121
  return execution ? lines : [{ text: ` ${missionName} EXECUTION` }, ...lines];
1061
1122
  }
1062
1123
  return scopesContentLines(detail, missionName, {
@@ -1180,7 +1241,14 @@ function renderPulseScreen(state, snap, options, inputLine) {
1180
1241
  const contentTargets = [];
1181
1242
  const flashRows = [];
1182
1243
  let flashAck = false;
1183
- lines.push(pad(`cmd ▸ ${inputLine}▊`, cols));
1244
+ lines.push(pad(`cmd ▸ ${inputLine}▊${inputLine ? "" : " Tab complete · ? help · timezone"}`, cols));
1245
+ if (options.completion) {
1246
+ lines.push(pad(options.completion.message, cols));
1247
+ for (const candidate of options.completion.candidates.slice(0, 4))
1248
+ lines.push(pad(` ${candidate}`, cols));
1249
+ if (options.completion.candidates.length > 4)
1250
+ lines.push(pad(" … keep typing to narrow matches", cols));
1251
+ }
1184
1252
  // REGISTRY I3 — the palette overlay: fuzzy rows over the ONE registry; unavailable
1185
1253
  // entries render DIMMED-WITH-REASON, never hidden (PM pin); bounded height.
1186
1254
  if (state.palette) {
@@ -1202,7 +1270,7 @@ function renderPulseScreen(state, snap, options, inputLine) {
1202
1270
  const contentWidth = Math.max(cols - explW - 2, 0);
1203
1271
  const model = buildPulseModel(snap, nowMs);
1204
1272
  const chromeRows = 3; // bottom rule + hint bar + status line
1205
- const bodyRows = Math.max(rows - 2 - chromeRows, 1);
1273
+ const bodyRows = Math.max(rows - lines.length - chromeRows, 1);
1206
1274
  const maxContentOffset = Math.max(renderPulseView(model).length - bodyRows, 0);
1207
1275
  const contentStart = Math.min(state.contentOffset, maxContentOffset);
1208
1276
  // Lane cells (column-major), CLIPPED to the content width: a cell whose column
@@ -1288,7 +1356,7 @@ function renderPulseScreen(state, snap, options, inputLine) {
1288
1356
  // the footer's live "updated Ns ago" IS the ongoing refresh signal (reader
1289
1357
  // clock), so a settled empty view stays calm. Reduced motion → static "·".
1290
1358
  const loadTag = loading ? ` ${frame} loading` : "";
1291
- lines.push(pad(`[${state.instanceId}] ${state.section}${drillPath ? " · " + drillPath : ""}${state.lastError ? " ✗ " + state.lastError : ""}${state.notice ? " ▸ " + state.notice : ""}${readWarn}${loadTag}`, cols));
1359
+ lines.push(pad(`[${state.instanceId}] ${state.section}${drillPath ? " · " + drillPath : ""}${state.lastError ? " ✗ " + state.lastError : ""}${state.notice ? " ▸ " + state.notice : ""}${readWarn}${loadTag}${state.timeZoneWarning ? " · ⚠ timezone; run timezone" : ""}`, cols));
1292
1360
  while (lines.length < rows)
1293
1361
  lines.push("");
1294
1362
  const anyFlash = model.lanes.some((l) => l.rows.some((r) => r.flashed));
@@ -1347,7 +1415,7 @@ function crashCartShell(content, led, contentTitle, cols, rows, inputLine, opts)
1347
1415
  const segRows = {};
1348
1416
  lines.push(pad(`cmd ▸ ${inputLine}▊`, cols));
1349
1417
  lines.push(paneRule(cols, explW, "top", "{ EXPLORER }", contentTitle));
1350
- // The ledger-fed explorer column: the honest marker, then one row per rig (name + seat count).
1418
+ // The explorer's source note, then any discovered rigs (name + seat count).
1351
1419
  const leftRows = [led.note, "", ...led.rows.map((r) => `${r.label} (${r.seatCount})`)];
1352
1420
  const contentWidth = Math.max(cols - explW - 2, 0);
1353
1421
  if (opts?.wrap)
@@ -1370,7 +1438,7 @@ function crashCartShell(content, led, contentTitle, cols, rows, inputLine, opts)
1370
1438
  lines.push(paneRule(cols, explW, "bottom"));
1371
1439
  lines.push(pad("", cols));
1372
1440
  const scrollHint = contentMaxOffset > 0 ? ` · ↑↓ scroll (${scroll}/${contentMaxOffset})` : "";
1373
- lines.push(pad(`[crash-cart] daemon down · explorer ${led.note}${scrollHint}`, cols));
1441
+ lines.push(pad(`[crash-cart] ${led.note}${scrollHint}`, cols));
1374
1442
  while (lines.length < rows)
1375
1443
  lines.push("");
1376
1444
  return {
@@ -1412,7 +1480,7 @@ export function renderScreen(state, snap, options = {}, inputLine = "") {
1412
1480
  return crashCartShell(content, led, "CRASH-CART", cols, rows, inputLine, options.confirm ? { wrap: true } : undefined);
1413
1481
  }
1414
1482
  if (options.daemonState === "unverified" && options.daemonEvidence) {
1415
- const led = buildLedgerExplorer([]); // no rigs listed when we cannot verify — honest empty ledger
1483
+ const led = { note: "daemon unverified", rows: [] }; // No ledger discovery occurred on this path.
1416
1484
  return crashCartShell(renderUnverifiedView(options.daemonEvidence), led, "DAEMON?", cols, rows, inputLine);
1417
1485
  }
1418
1486
  // PULSE (founder Option-B): a content-pane view inside the NORMAL explorer│
@@ -1438,7 +1506,14 @@ export function renderScreen(state, snap, options = {}, inputLine = "") {
1438
1506
  // shell accepts typing from the empty state, so the honest readiness
1439
1507
  // affordance must show BEFORE the first key (no new focus state; stylize
1440
1508
  // gives the cell SGR blink; zero effect on hit geometry).
1441
- lines.push(pad(`cmd ▸ ${inputLine}▊`, cols));
1509
+ lines.push(pad(`cmd ▸ ${inputLine}▊${inputLine ? "" : " Tab complete · ? help · timezone"}`, cols));
1510
+ if (options.completion) {
1511
+ lines.push(pad(options.completion.message, cols));
1512
+ for (const candidate of options.completion.candidates.slice(0, 4))
1513
+ lines.push(pad(` ${candidate}`, cols));
1514
+ if (options.completion.candidates.length > 4)
1515
+ lines.push(pad(" … keep typing to narrow matches", cols));
1516
+ }
1442
1517
  // REGISTRY I3 — the palette overlay: fuzzy rows over the ONE registry; unavailable
1443
1518
  // entries render DIMMED-WITH-REASON, never hidden (PM pin); bounded height.
1444
1519
  if (state.palette) {
@@ -1476,7 +1551,7 @@ export function renderScreen(state, snap, options = {}, inputLine = "") {
1476
1551
  const liveFlashes = (options.rowFlashes ?? []).filter((f) => flashActive(f.at, nowMs, 600, reduced));
1477
1552
  const ackFlashes = (options.rowFlashes ?? []).filter((f) => flashActive(f.at, nowMs, 600, false));
1478
1553
  const chromeRows = footer ? 4 : 3; // bottom rule + hint bar + status line (+ footer)
1479
- const bodyRows = Math.max(rows - 2 - chromeRows, 1);
1554
+ const bodyRows = Math.max(rows - lines.length - chromeRows, 1);
1480
1555
  const explorerStart = Math.min(Math.max(state.selection - bodyRows + 1, 0), Math.max(explorer.length - bodyRows, 0));
1481
1556
  const contentRows = content.length > bodyRows ? Math.max(bodyRows - 1, 0) : bodyRows;
1482
1557
  const maxContentOffset = Math.max(content.length - contentRows, 0);
@@ -1560,12 +1635,12 @@ export function renderScreen(state, snap, options = {}, inputLine = "") {
1560
1635
  segRows[y] = rowSegs;
1561
1636
  }
1562
1637
  if (footer)
1563
- lines.push(pad(`≋ ${footer.tsEmitted.slice(11, 16)} ${footer.sourceSession}: ${footer.body}`, cols));
1638
+ lines.push(pad(`≋ ${displayTime(footer.tsEmitted, state.timeZone)} ${footer.sourceSession}: ${footer.body}`, cols));
1564
1639
  const drillPath = state.drill.map((d) => d.name).join(" → ");
1565
1640
  const readWarn = snap.readErrors.length > 0 ? ` ⚠ ${snap.readErrors.length} read(s) failed: ${snap.readErrors[0]}` : "";
1566
1641
  lines.push(paneRule(cols, explW, "bottom"));
1567
1642
  lines.push(pad(keybindHints(state), cols));
1568
- lines.push(pad(`[${state.instanceId}] ${state.section}${drillPath ? " · " + drillPath : ""}${state.lastError ? " ✗ " + state.lastError : ""}${state.notice ? " ▸ " + state.notice : ""}${readWarn}`, cols));
1643
+ lines.push(pad(`[${state.instanceId}] ${state.section}${drillPath ? " · " + drillPath : ""}${state.lastError ? " ✗ " + state.lastError : ""}${state.notice ? " ▸ " + state.notice : ""}${readWarn}${state.timeZoneWarning ? " · ⚠ timezone; run timezone" : ""}`, cols));
1569
1644
  while (lines.length < rows)
1570
1645
  lines.push("");
1571
1646
  return {