@openrig/cli 0.5.13 → 0.5.14

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 (334) hide show
  1. package/daemon/assets/plugins/openrig-core/skills/messaging-the-human/SKILL.md +40 -5
  2. package/daemon/context-packs/onboarding-width/manifest.yaml +1 -1
  3. package/daemon/context-packs/onboarding-width/public-what-you-can-do.md +47 -14
  4. package/daemon/context-packs/skills/agent-operated-software/manifest.yaml +1 -1
  5. package/daemon/context-packs/skills/agent-operated-workflows/manifest.yaml +1 -1
  6. package/daemon/context-packs/skills/applying-a-permission-policy/manifest.yaml +1 -1
  7. package/daemon/context-packs/skills/claude-compaction-restore/manifest.yaml +1 -1
  8. package/daemon/context-packs/skills/core/agent-starters/manifest.yaml +1 -1
  9. package/daemon/context-packs/skills/core/agent-startup-and-context-ingestion/manifest.yaml +1 -1
  10. package/daemon/context-packs/skills/core/cross-host-rig-commands/manifest.yaml +1 -1
  11. package/daemon/context-packs/skills/core/human-in-the-loop/manifest.yaml +1 -1
  12. package/daemon/context-packs/skills/core/messaging-the-human/SKILL.md +40 -5
  13. package/daemon/context-packs/skills/core/messaging-the-human/manifest.yaml +1 -1
  14. package/daemon/context-packs/skills/core/openrig-architect/manifest.yaml +1 -1
  15. package/daemon/context-packs/skills/core/openrig-cmux/manifest.yaml +1 -1
  16. package/daemon/context-packs/skills/core/openrig-herdr/manifest.yaml +1 -1
  17. package/daemon/context-packs/skills/core/openrig-skills/manifest.yaml +1 -1
  18. package/daemon/context-packs/skills/core/openrig-upgrade/manifest.yaml +1 -1
  19. package/daemon/context-packs/skills/core/rig-bundles-and-shareable-artifacts/manifest.yaml +1 -1
  20. package/daemon/context-packs/skills/core/rig-lifecycle/manifest.yaml +1 -1
  21. package/daemon/context-packs/skills/core/session-source-fork/manifest.yaml +1 -1
  22. package/daemon/context-packs/skills/core/specification-system/manifest.yaml +1 -1
  23. package/daemon/context-packs/skills/core/topology-mutation-and-seat-management/manifest.yaml +1 -1
  24. package/daemon/context-packs/skills/core/watchdog/manifest.yaml +1 -1
  25. package/daemon/context-packs/skills/delegating-work/manifest.yaml +1 -1
  26. package/daemon/context-packs/skills/forming-an-openrig-mental-model/manifest.yaml +1 -1
  27. package/daemon/context-packs/skills/loading-addressable-markdown/manifest.yaml +1 -1
  28. package/daemon/context-packs/skills/mission-slice-sop/manifest.yaml +1 -1
  29. package/daemon/context-packs/skills/openrig-operating-model/manifest.yaml +1 -1
  30. package/daemon/context-packs/skills/openrig-user/manifest.yaml +1 -1
  31. package/daemon/context-packs/skills/orienting-to-an-inherited-seat/manifest.yaml +1 -1
  32. package/daemon/context-packs/skills/pm/backlog-capture/manifest.yaml +1 -1
  33. package/daemon/context-packs/skills/pm/context-builder/manifest.yaml +1 -1
  34. package/daemon/context-packs/skills/pm/exec-summary/manifest.yaml +1 -1
  35. package/daemon/context-packs/skills/pm/office-hours/manifest.yaml +1 -1
  36. package/daemon/context-packs/skills/pm/plan-review/manifest.yaml +1 -1
  37. package/daemon/context-packs/skills/pm/requirements-writer/manifest.yaml +1 -1
  38. package/daemon/context-packs/skills/pm/ui-mockup/manifest.yaml +1 -1
  39. package/daemon/context-packs/skills/pods/development-team/manifest.yaml +1 -1
  40. package/daemon/context-packs/skills/pods/orchestration-team/manifest.yaml +1 -1
  41. package/daemon/context-packs/skills/pods/oversight-team/manifest.yaml +1 -1
  42. package/daemon/context-packs/skills/pods/review-team/manifest.yaml +1 -1
  43. package/daemon/context-packs/skills/process/agent-browser/manifest.yaml +1 -1
  44. package/daemon/context-packs/skills/process/context-engineering/manifest.yaml +1 -1
  45. package/daemon/context-packs/skills/process/dogfood/manifest.yaml +1 -1
  46. package/daemon/context-packs/skills/process/frontend-design/manifest.yaml +1 -1
  47. package/daemon/context-packs/skills/process/systematic-debugging/manifest.yaml +1 -1
  48. package/daemon/context-packs/skills/process/test-driven-development/manifest.yaml +1 -1
  49. package/daemon/context-packs/skills/process/verification-before-completion/manifest.yaml +1 -1
  50. package/daemon/context-packs/skills/queue-handoff/manifest.yaml +1 -1
  51. package/daemon/context-packs/skills/refocusing/manifest.yaml +1 -1
  52. package/daemon/context-packs/skills/retiring-and-inheriting-a-seat/manifest.yaml +1 -1
  53. package/daemon/context-packs/skills/seat-continuity-and-handover/manifest.yaml +1 -1
  54. package/daemon/context-packs/skills/session-compaction-and-restore/manifest.yaml +1 -1
  55. package/daemon/context-packs/skills/software-for-agents/manifest.yaml +1 -1
  56. package/daemon/context-packs/world-example/manifest.yaml +1 -1
  57. package/daemon/context-packs/world-public/manifest.yaml +1 -1
  58. package/daemon/dist/attention-surface.d.ts +2 -0
  59. package/daemon/dist/attention-surface.d.ts.map +1 -1
  60. package/daemon/dist/attention-surface.js +2 -1
  61. package/daemon/dist/attention-surface.js.map +1 -1
  62. package/daemon/dist/build-info.js +3 -3
  63. package/daemon/dist/db/all-migrations.d.ts +1 -1
  64. package/daemon/dist/db/all-migrations.d.ts.map +1 -1
  65. package/daemon/dist/db/all-migrations.js +10 -2
  66. package/daemon/dist/db/all-migrations.js.map +1 -1
  67. package/daemon/dist/db/migrations/081_human_notification_intent.d.ts +3 -0
  68. package/daemon/dist/db/migrations/081_human_notification_intent.d.ts.map +1 -0
  69. package/daemon/dist/db/migrations/081_human_notification_intent.js +9 -0
  70. package/daemon/dist/db/migrations/081_human_notification_intent.js.map +1 -0
  71. package/daemon/dist/db/migrations/082_archive_identity_provenance.d.ts +5 -0
  72. package/daemon/dist/db/migrations/082_archive_identity_provenance.d.ts.map +1 -0
  73. package/daemon/dist/db/migrations/082_archive_identity_provenance.js +7 -0
  74. package/daemon/dist/db/migrations/082_archive_identity_provenance.js.map +1 -0
  75. package/daemon/dist/db/migrations/083_review_read_indexes.d.ts +4 -0
  76. package/daemon/dist/db/migrations/083_review_read_indexes.d.ts.map +1 -0
  77. package/daemon/dist/db/migrations/083_review_read_indexes.js +12 -0
  78. package/daemon/dist/db/migrations/083_review_read_indexes.js.map +1 -0
  79. package/daemon/dist/db/migrations/084_inventory_event_indexes.d.ts +5 -0
  80. package/daemon/dist/db/migrations/084_inventory_event_indexes.d.ts.map +1 -0
  81. package/daemon/dist/db/migrations/084_inventory_event_indexes.js +14 -0
  82. package/daemon/dist/db/migrations/084_inventory_event_indexes.js.map +1 -0
  83. package/daemon/dist/domain/execution-view.d.ts.map +1 -1
  84. package/daemon/dist/domain/execution-view.js +18 -5
  85. package/daemon/dist/domain/execution-view.js.map +1 -1
  86. package/daemon/dist/domain/gateway/connections-projection.d.ts +3 -3
  87. package/daemon/dist/domain/gateway/slack/message.d.ts +13 -12
  88. package/daemon/dist/domain/gateway/slack/message.d.ts.map +1 -1
  89. package/daemon/dist/domain/gateway/slack/message.js +40 -77
  90. package/daemon/dist/domain/gateway/slack/message.js.map +1 -1
  91. package/daemon/dist/domain/gateway/slack/outbound-driver.d.ts +2 -0
  92. package/daemon/dist/domain/gateway/slack/outbound-driver.d.ts.map +1 -1
  93. package/daemon/dist/domain/gateway/slack/outbound-driver.js +2 -0
  94. package/daemon/dist/domain/gateway/slack/outbound-driver.js.map +1 -1
  95. package/daemon/dist/domain/gateway/slack/queue-access.d.ts +2 -0
  96. package/daemon/dist/domain/gateway/slack/queue-access.d.ts.map +1 -1
  97. package/daemon/dist/domain/gateway/slack/queue-access.js +2 -0
  98. package/daemon/dist/domain/gateway/slack/queue-access.js.map +1 -1
  99. package/daemon/dist/domain/gateway/slack/slack-delivery.d.ts +4 -1
  100. package/daemon/dist/domain/gateway/slack/slack-delivery.d.ts.map +1 -1
  101. package/daemon/dist/domain/gateway/slack/slack-delivery.js +85 -3
  102. package/daemon/dist/domain/gateway/slack/slack-delivery.js.map +1 -1
  103. package/daemon/dist/domain/gateway/slack/slack-subsystem.d.ts.map +1 -1
  104. package/daemon/dist/domain/gateway/slack/slack-subsystem.js +8 -1
  105. package/daemon/dist/domain/gateway/slack/slack-subsystem.js.map +1 -1
  106. package/daemon/dist/domain/policies/delivery-digest-flush.d.ts.map +1 -1
  107. package/daemon/dist/domain/policies/delivery-digest-flush.js +23 -3
  108. package/daemon/dist/domain/policies/delivery-digest-flush.js.map +1 -1
  109. package/daemon/dist/domain/proof/judgments.d.ts +10 -3
  110. package/daemon/dist/domain/proof/judgments.d.ts.map +1 -1
  111. package/daemon/dist/domain/proof/judgments.js +26 -8
  112. package/daemon/dist/domain/proof/judgments.js.map +1 -1
  113. package/daemon/dist/domain/queue-repository.d.ts +19 -6
  114. package/daemon/dist/domain/queue-repository.d.ts.map +1 -1
  115. package/daemon/dist/domain/queue-repository.js +61 -11
  116. package/daemon/dist/domain/queue-repository.js.map +1 -1
  117. package/daemon/dist/domain/queue-retention.d.ts.map +1 -1
  118. package/daemon/dist/domain/queue-retention.js +6 -2
  119. package/daemon/dist/domain/queue-retention.js.map +1 -1
  120. package/daemon/dist/domain/queue-transition-log.d.ts +1 -0
  121. package/daemon/dist/domain/queue-transition-log.d.ts.map +1 -1
  122. package/daemon/dist/domain/queue-transition-log.js +19 -7
  123. package/daemon/dist/domain/queue-transition-log.js.map +1 -1
  124. package/daemon/dist/domain/review/fleet-compose.d.ts +7 -6
  125. package/daemon/dist/domain/review/fleet-compose.d.ts.map +1 -1
  126. package/daemon/dist/domain/review/fleet-compose.js +25 -11
  127. package/daemon/dist/domain/review/fleet-compose.js.map +1 -1
  128. package/daemon/dist/domain/scope/scope-view-projection.d.ts +2 -2
  129. package/daemon/dist/domain/scope/scope-view-projection.d.ts.map +1 -1
  130. package/daemon/dist/domain/scope/scope-view-projection.js +2 -2
  131. package/daemon/dist/domain/scope/scope-view-projection.js.map +1 -1
  132. package/daemon/dist/domain/terminal/terminal-service.d.ts +2 -0
  133. package/daemon/dist/domain/terminal/terminal-service.d.ts.map +1 -1
  134. package/daemon/dist/domain/terminal/terminal-service.js +4 -1
  135. package/daemon/dist/domain/terminal/terminal-service.js.map +1 -1
  136. package/daemon/dist/domain/workspace/project-read.d.ts +1 -1
  137. package/daemon/dist/domain/workspace/project-read.d.ts.map +1 -1
  138. package/daemon/dist/domain/workspace/project-read.js +24 -6
  139. package/daemon/dist/domain/workspace/project-read.js.map +1 -1
  140. package/daemon/dist/routes/attention.js +2 -2
  141. package/daemon/dist/routes/attention.js.map +1 -1
  142. package/daemon/dist/routes/queue.d.ts +4 -18
  143. package/daemon/dist/routes/queue.d.ts.map +1 -1
  144. package/daemon/dist/routes/queue.js +23 -33
  145. package/daemon/dist/routes/queue.js.map +1 -1
  146. package/daemon/dist/routes/review.js +1 -1
  147. package/daemon/dist/routes/rigs.js +5 -1
  148. package/daemon/dist/routes/rigs.js.map +1 -1
  149. package/daemon/dist/routes/scopes.d.ts.map +1 -1
  150. package/daemon/dist/routes/scopes.js +37 -28
  151. package/daemon/dist/routes/scopes.js.map +1 -1
  152. package/daemon/dist/startup.d.ts.map +1 -1
  153. package/daemon/dist/startup.js +11 -1
  154. package/daemon/dist/startup.js.map +1 -1
  155. package/daemon/specs/agents/shared/skills/core/messaging-the-human/SKILL.md +40 -5
  156. package/dist/build-info.js +3 -3
  157. package/dist/commands/queue.d.ts.map +1 -1
  158. package/dist/commands/queue.js +5 -1
  159. package/dist/commands/queue.js.map +1 -1
  160. package/node_modules/@openrig/daemon/dist/attention-surface.d.ts +2 -0
  161. package/node_modules/@openrig/daemon/dist/attention-surface.d.ts.map +1 -1
  162. package/node_modules/@openrig/daemon/dist/attention-surface.js +2 -1
  163. package/node_modules/@openrig/daemon/dist/attention-surface.js.map +1 -1
  164. package/node_modules/@openrig/daemon/dist/build-info.js +3 -3
  165. package/node_modules/@openrig/daemon/dist/db/all-migrations.d.ts +1 -1
  166. package/node_modules/@openrig/daemon/dist/db/all-migrations.d.ts.map +1 -1
  167. package/node_modules/@openrig/daemon/dist/db/all-migrations.js +10 -2
  168. package/node_modules/@openrig/daemon/dist/db/all-migrations.js.map +1 -1
  169. package/node_modules/@openrig/daemon/dist/db/migrations/081_human_notification_intent.d.ts +3 -0
  170. package/node_modules/@openrig/daemon/dist/db/migrations/081_human_notification_intent.d.ts.map +1 -0
  171. package/node_modules/@openrig/daemon/dist/db/migrations/081_human_notification_intent.js +9 -0
  172. package/node_modules/@openrig/daemon/dist/db/migrations/081_human_notification_intent.js.map +1 -0
  173. package/node_modules/@openrig/daemon/dist/db/migrations/082_archive_identity_provenance.d.ts +5 -0
  174. package/node_modules/@openrig/daemon/dist/db/migrations/082_archive_identity_provenance.d.ts.map +1 -0
  175. package/node_modules/@openrig/daemon/dist/db/migrations/082_archive_identity_provenance.js +7 -0
  176. package/node_modules/@openrig/daemon/dist/db/migrations/082_archive_identity_provenance.js.map +1 -0
  177. package/node_modules/@openrig/daemon/dist/db/migrations/083_review_read_indexes.d.ts +4 -0
  178. package/node_modules/@openrig/daemon/dist/db/migrations/083_review_read_indexes.d.ts.map +1 -0
  179. package/node_modules/@openrig/daemon/dist/db/migrations/083_review_read_indexes.js +12 -0
  180. package/node_modules/@openrig/daemon/dist/db/migrations/083_review_read_indexes.js.map +1 -0
  181. package/node_modules/@openrig/daemon/dist/db/migrations/084_inventory_event_indexes.d.ts +5 -0
  182. package/node_modules/@openrig/daemon/dist/db/migrations/084_inventory_event_indexes.d.ts.map +1 -0
  183. package/node_modules/@openrig/daemon/dist/db/migrations/084_inventory_event_indexes.js +14 -0
  184. package/node_modules/@openrig/daemon/dist/db/migrations/084_inventory_event_indexes.js.map +1 -0
  185. package/node_modules/@openrig/daemon/dist/domain/execution-view.d.ts.map +1 -1
  186. package/node_modules/@openrig/daemon/dist/domain/execution-view.js +18 -5
  187. package/node_modules/@openrig/daemon/dist/domain/execution-view.js.map +1 -1
  188. package/node_modules/@openrig/daemon/dist/domain/gateway/connections-projection.d.ts +3 -3
  189. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/message.d.ts +13 -12
  190. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/message.d.ts.map +1 -1
  191. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/message.js +40 -77
  192. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/message.js.map +1 -1
  193. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/outbound-driver.d.ts +2 -0
  194. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/outbound-driver.d.ts.map +1 -1
  195. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/outbound-driver.js +2 -0
  196. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/outbound-driver.js.map +1 -1
  197. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/queue-access.d.ts +2 -0
  198. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/queue-access.d.ts.map +1 -1
  199. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/queue-access.js +2 -0
  200. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/queue-access.js.map +1 -1
  201. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/slack-delivery.d.ts +4 -1
  202. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/slack-delivery.d.ts.map +1 -1
  203. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/slack-delivery.js +85 -3
  204. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/slack-delivery.js.map +1 -1
  205. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/slack-subsystem.d.ts.map +1 -1
  206. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/slack-subsystem.js +8 -1
  207. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/slack-subsystem.js.map +1 -1
  208. package/node_modules/@openrig/daemon/dist/domain/policies/delivery-digest-flush.d.ts.map +1 -1
  209. package/node_modules/@openrig/daemon/dist/domain/policies/delivery-digest-flush.js +23 -3
  210. package/node_modules/@openrig/daemon/dist/domain/policies/delivery-digest-flush.js.map +1 -1
  211. package/node_modules/@openrig/daemon/dist/domain/proof/judgments.d.ts +10 -3
  212. package/node_modules/@openrig/daemon/dist/domain/proof/judgments.d.ts.map +1 -1
  213. package/node_modules/@openrig/daemon/dist/domain/proof/judgments.js +26 -8
  214. package/node_modules/@openrig/daemon/dist/domain/proof/judgments.js.map +1 -1
  215. package/node_modules/@openrig/daemon/dist/domain/queue-repository.d.ts +19 -6
  216. package/node_modules/@openrig/daemon/dist/domain/queue-repository.d.ts.map +1 -1
  217. package/node_modules/@openrig/daemon/dist/domain/queue-repository.js +61 -11
  218. package/node_modules/@openrig/daemon/dist/domain/queue-repository.js.map +1 -1
  219. package/node_modules/@openrig/daemon/dist/domain/queue-retention.d.ts.map +1 -1
  220. package/node_modules/@openrig/daemon/dist/domain/queue-retention.js +6 -2
  221. package/node_modules/@openrig/daemon/dist/domain/queue-retention.js.map +1 -1
  222. package/node_modules/@openrig/daemon/dist/domain/queue-transition-log.d.ts +1 -0
  223. package/node_modules/@openrig/daemon/dist/domain/queue-transition-log.d.ts.map +1 -1
  224. package/node_modules/@openrig/daemon/dist/domain/queue-transition-log.js +19 -7
  225. package/node_modules/@openrig/daemon/dist/domain/queue-transition-log.js.map +1 -1
  226. package/node_modules/@openrig/daemon/dist/domain/review/fleet-compose.d.ts +7 -6
  227. package/node_modules/@openrig/daemon/dist/domain/review/fleet-compose.d.ts.map +1 -1
  228. package/node_modules/@openrig/daemon/dist/domain/review/fleet-compose.js +25 -11
  229. package/node_modules/@openrig/daemon/dist/domain/review/fleet-compose.js.map +1 -1
  230. package/node_modules/@openrig/daemon/dist/domain/scope/scope-view-projection.d.ts +2 -2
  231. package/node_modules/@openrig/daemon/dist/domain/scope/scope-view-projection.d.ts.map +1 -1
  232. package/node_modules/@openrig/daemon/dist/domain/scope/scope-view-projection.js +2 -2
  233. package/node_modules/@openrig/daemon/dist/domain/scope/scope-view-projection.js.map +1 -1
  234. package/node_modules/@openrig/daemon/dist/domain/terminal/terminal-service.d.ts +2 -0
  235. package/node_modules/@openrig/daemon/dist/domain/terminal/terminal-service.d.ts.map +1 -1
  236. package/node_modules/@openrig/daemon/dist/domain/terminal/terminal-service.js +4 -1
  237. package/node_modules/@openrig/daemon/dist/domain/terminal/terminal-service.js.map +1 -1
  238. package/node_modules/@openrig/daemon/dist/domain/workspace/project-read.d.ts +1 -1
  239. package/node_modules/@openrig/daemon/dist/domain/workspace/project-read.d.ts.map +1 -1
  240. package/node_modules/@openrig/daemon/dist/domain/workspace/project-read.js +24 -6
  241. package/node_modules/@openrig/daemon/dist/domain/workspace/project-read.js.map +1 -1
  242. package/node_modules/@openrig/daemon/dist/routes/attention.js +2 -2
  243. package/node_modules/@openrig/daemon/dist/routes/attention.js.map +1 -1
  244. package/node_modules/@openrig/daemon/dist/routes/queue.d.ts +4 -18
  245. package/node_modules/@openrig/daemon/dist/routes/queue.d.ts.map +1 -1
  246. package/node_modules/@openrig/daemon/dist/routes/queue.js +23 -33
  247. package/node_modules/@openrig/daemon/dist/routes/queue.js.map +1 -1
  248. package/node_modules/@openrig/daemon/dist/routes/review.js +1 -1
  249. package/node_modules/@openrig/daemon/dist/routes/rigs.js +5 -1
  250. package/node_modules/@openrig/daemon/dist/routes/rigs.js.map +1 -1
  251. package/node_modules/@openrig/daemon/dist/routes/scopes.d.ts.map +1 -1
  252. package/node_modules/@openrig/daemon/dist/routes/scopes.js +37 -28
  253. package/node_modules/@openrig/daemon/dist/routes/scopes.js.map +1 -1
  254. package/node_modules/@openrig/daemon/dist/startup.d.ts.map +1 -1
  255. package/node_modules/@openrig/daemon/dist/startup.js +11 -1
  256. package/node_modules/@openrig/daemon/dist/startup.js.map +1 -1
  257. package/node_modules/@openrig/daemon/package.json +1 -1
  258. package/package.json +1 -1
  259. package/tui/dist/attention/attention-model.d.ts +19 -0
  260. package/tui/dist/attention/attention-model.d.ts.map +1 -1
  261. package/tui/dist/attention/attention-model.js +46 -5
  262. package/tui/dist/attention/attention-model.js.map +1 -1
  263. package/tui/dist/attention/source-continuity.d.ts +9 -0
  264. package/tui/dist/attention/source-continuity.d.ts.map +1 -0
  265. package/tui/dist/attention/source-continuity.js +38 -0
  266. package/tui/dist/attention/source-continuity.js.map +1 -0
  267. package/tui/dist/commands/help.d.ts.map +1 -1
  268. package/tui/dist/commands/help.js +1 -0
  269. package/tui/dist/commands/help.js.map +1 -1
  270. package/tui/dist/commands/registry.d.ts.map +1 -1
  271. package/tui/dist/commands/registry.js +3 -2
  272. package/tui/dist/commands/registry.js.map +1 -1
  273. package/tui/dist/config/config-model.js +1 -1
  274. package/tui/dist/config/config-model.js.map +1 -1
  275. package/tui/dist/connections/connections-model.js +1 -1
  276. package/tui/dist/connections/connections-model.js.map +1 -1
  277. package/tui/dist/daemon-client.d.ts +15 -2
  278. package/tui/dist/daemon-client.d.ts.map +1 -1
  279. package/tui/dist/daemon-client.js +14 -5
  280. package/tui/dist/daemon-client.js.map +1 -1
  281. package/tui/dist/demo-data.d.ts.map +1 -1
  282. package/tui/dist/demo-data.js +1 -0
  283. package/tui/dist/demo-data.js.map +1 -1
  284. package/tui/dist/execution/execution-model.d.ts +1 -0
  285. package/tui/dist/execution/execution-model.d.ts.map +1 -1
  286. package/tui/dist/execution/execution-model.js +88 -119
  287. package/tui/dist/execution/execution-model.js.map +1 -1
  288. package/tui/dist/hydrate.d.ts.map +1 -1
  289. package/tui/dist/hydrate.js +40 -25
  290. package/tui/dist/hydrate.js.map +1 -1
  291. package/tui/dist/live.d.ts +3 -1
  292. package/tui/dist/live.d.ts.map +1 -1
  293. package/tui/dist/live.js +66 -7
  294. package/tui/dist/live.js.map +1 -1
  295. package/tui/dist/main.js +50 -7
  296. package/tui/dist/main.js.map +1 -1
  297. package/tui/dist/navigator.d.ts.map +1 -1
  298. package/tui/dist/navigator.js +14 -3
  299. package/tui/dist/navigator.js.map +1 -1
  300. package/tui/dist/page-read.d.ts +19 -0
  301. package/tui/dist/page-read.d.ts.map +1 -0
  302. package/tui/dist/page-read.js +84 -0
  303. package/tui/dist/page-read.js.map +1 -0
  304. package/tui/dist/pulse/pulse-model.d.ts.map +1 -1
  305. package/tui/dist/pulse/pulse-model.js +3 -4
  306. package/tui/dist/pulse/pulse-model.js.map +1 -1
  307. package/tui/dist/render.d.ts +5 -0
  308. package/tui/dist/render.d.ts.map +1 -1
  309. package/tui/dist/render.js +60 -14
  310. package/tui/dist/render.js.map +1 -1
  311. package/tui/dist/scopes/scopes-model.d.ts +2 -0
  312. package/tui/dist/scopes/scopes-model.d.ts.map +1 -1
  313. package/tui/dist/scopes/scopes-model.js +8 -2
  314. package/tui/dist/scopes/scopes-model.js.map +1 -1
  315. package/tui/dist/sections.d.ts +2 -0
  316. package/tui/dist/sections.d.ts.map +1 -1
  317. package/tui/dist/sections.js +6 -3
  318. package/tui/dist/sections.js.map +1 -1
  319. package/tui/dist/startup.d.ts +4 -1
  320. package/tui/dist/startup.d.ts.map +1 -1
  321. package/tui/dist/startup.js +41 -15
  322. package/tui/dist/startup.js.map +1 -1
  323. package/tui/dist/state.d.ts.map +1 -1
  324. package/tui/dist/state.js +30 -18
  325. package/tui/dist/state.js.map +1 -1
  326. package/tui/dist/stylize.d.ts.map +1 -1
  327. package/tui/dist/stylize.js +18 -27
  328. package/tui/dist/stylize.js.map +1 -1
  329. package/tui/dist/terminals/terminal-model.d.ts +2 -0
  330. package/tui/dist/terminals/terminal-model.d.ts.map +1 -1
  331. package/tui/dist/terminals/terminal-model.js +28 -10
  332. package/tui/dist/terminals/terminal-model.js.map +1 -1
  333. package/tui/dist/types.d.ts +12 -1
  334. package/tui/dist/types.d.ts.map +1 -1
@@ -0,0 +1,84 @@
1
+ import { retainAttentionSources } from "./attention/source-continuity.js";
2
+ /** One page's successful HTTP reads; never shared between TUIs or used for effects.
3
+ * Each source can fail without erasing siblings. */
4
+ export class PageRead {
5
+ now;
6
+ denied;
7
+ values = new Map();
8
+ seen = new Set();
9
+ errors = [];
10
+ retainedAt;
11
+ constructor(now, denied = () => { }) {
12
+ this.now = now;
13
+ this.denied = denied;
14
+ }
15
+ has(url) { return this.values.has(url); }
16
+ begin() { this.seen.clear(); this.errors = []; this.retainedAt = undefined; }
17
+ end() { for (const key of this.values.keys())
18
+ if (!this.seen.has(key))
19
+ this.values.delete(key); }
20
+ fetch(fetchImpl, signal, optional = false) {
21
+ return (async (input, init) => {
22
+ if (init?.method && init.method !== "GET")
23
+ throw new Error("Page reader is read-only");
24
+ const key = String(input);
25
+ const requestSignal = init?.signal ? AbortSignal.any([signal, init.signal]) : signal;
26
+ // Optional enrichment shares cancellation, but neither contributes page
27
+ // failures nor retains a former owner as if it were freshly resolved.
28
+ if (optional)
29
+ return fetchImpl(input, { ...init, signal: requestSignal });
30
+ this.seen.add(key);
31
+ try {
32
+ const response = await fetchImpl(input, { ...init, signal: requestSignal });
33
+ if (response.status >= 500)
34
+ throw new Error(`HTTP ${response.status}`);
35
+ // Absence/access refusal is a new answer; do not resurrect deleted or
36
+ // newly forbidden content from the prior successful response.
37
+ if (!response.ok) {
38
+ signal.throwIfAborted();
39
+ this.values.delete(key);
40
+ this.denied(key);
41
+ this.errors.push(`${new URL(key).pathname}: HTTP ${response.status}`);
42
+ return response;
43
+ }
44
+ let body = await response.text();
45
+ const decoded = JSON.parse(body); // all page reads are JSON; a broken body is a failed read
46
+ signal.throwIfAborted();
47
+ let at = this.now();
48
+ // Attention declares independent source outages inside HTTP 200. Keep
49
+ // those contributions in this same page/URL cache, alongside fresh siblings.
50
+ if (new URL(key).pathname === "/api/attention") {
51
+ const prior = this.values.get(key);
52
+ const merged = retainAttentionSources(decoded, prior && JSON.parse(prior.body));
53
+ body = JSON.stringify(merged.read);
54
+ this.errors.push(...merged.errors);
55
+ if (merged.retained && prior) {
56
+ at = prior.at; // conservative time basis until the whole read succeeds
57
+ this.retainedAt = Math.min(this.retainedAt ?? at, at);
58
+ }
59
+ }
60
+ const value = { body, status: response.status, headers: response.headers, at };
61
+ this.values.set(key, value);
62
+ return new Response(body, value);
63
+ }
64
+ catch (error) {
65
+ signal.throwIfAborted();
66
+ const detail = error instanceof Error ? error.message : String(error);
67
+ const route = new URL(key).pathname;
68
+ this.errors.push(`${route}: ${detail}`);
69
+ const prior = this.values.get(key);
70
+ if (!prior)
71
+ throw error;
72
+ this.retainedAt = Math.min(this.retainedAt ?? prior.at, prior.at);
73
+ return new Response(prior.body, prior);
74
+ }
75
+ });
76
+ }
77
+ }
78
+ /** Data coordinates only; scrolling, selection, filters and Help never evict a read. */
79
+ export function pageReadKey(s) {
80
+ return JSON.stringify([s.section, s.viewTab, s.drill, s.project, s.scopesMission,
81
+ s.scopesSelected, s.executionOpen, s.file && [s.file.root, s.file.path],
82
+ s.externalUrl, s.terminalView, s.attentionOpen]);
83
+ }
84
+ //# sourceMappingURL=page-read.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"page-read.js","sourceRoot":"","sources":["../src/page-read.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"pulse-model.d.ts","sourceRoot":"","sources":["../../src/pulse/pulse-model.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,EAAE,MAAM,EAAE,aAAa,EAAkC,MAAM,aAAa,CAAC;AAGzF,sFAAsF;AACtF,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,KAAK,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,KAAK,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,cAAc,EAAE,CAAC;IACvB;;;oFAGgF;IAChF,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,KAAK,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;oFAIgF;IAChF,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;;gFAK4E;IAC5E,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,YAAY,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,UAAU;IACzB,UAAU,EAAE,qBAAqB,EAAE,CAAC;IACpC,KAAK,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;IACzC,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;CACpF;AAMD,eAAO,MAAM,gBAAgB,EAAE,KAAc,CAAC;AAE9C,qFAAqF;AACrF,wBAAgB,cAAc,IAAI,UAAU,CA8D3C;AAKD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAE5E;AAqND;;;;;;;iFAOiF;AACjF,wBAAgB,eAAe,CAAC,IAAI,EAAE,aAAa,EAAE,KAAK,GAAE,MAAmB,GAAG,UAAU,CAmC3F"}
1
+ {"version":3,"file":"pulse-model.d.ts","sourceRoot":"","sources":["../../src/pulse/pulse-model.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,EAAE,MAAM,EAAE,aAAa,EAAkC,MAAM,aAAa,CAAC;AAGzF,sFAAsF;AACtF,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,KAAK,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,KAAK,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,cAAc,EAAE,CAAC;IACvB;;;oFAGgF;IAChF,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,KAAK,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;oFAIgF;IAChF,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;;gFAK4E;IAC5E,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,YAAY,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,UAAU;IACzB,UAAU,EAAE,qBAAqB,EAAE,CAAC;IACpC,KAAK,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;IACzC,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;CACpF;AAMD,eAAO,MAAM,gBAAgB,EAAE,KAAc,CAAC;AAE9C,qFAAqF;AACrF,wBAAgB,cAAc,IAAI,UAAU,CA8D3C;AAGD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAE5E;AAqND;;;;;;;iFAOiF;AACjF,wBAAgB,eAAe,CAAC,IAAI,EAAE,aAAa,EAAE,KAAK,GAAE,MAAmB,GAAG,UAAU,CAmC3F"}
@@ -1,3 +1,4 @@
1
+ import { isHumanSeatSessionRef } from "@openrig/daemon/attention";
1
2
  import { findAgentBySession } from "../state.js";
2
3
  // The mock section accents (▲ err / ◌ warn / ⧗ info). D4 RESOLVED (lock owner,
3
4
  // 2026-08-06, option (a)): the `info`-class semantic token bearing the mock's
@@ -68,11 +69,9 @@ export function demoPulseModel() {
68
69
  footer: { active: 4, parked: 1, waitingYou: 2, updatedAgo: "2s ago" },
69
70
  };
70
71
  }
71
- // mirror of daemon human-route-enforcer.ts isHumanSeatSession — keep byte-identical to that canonical regex.
72
- // EXPORTED so hydrate reuses this ONE copy (no second mirror) to skip resolving human-park blockers.
73
- const HUMAN_SEAT_SESSION_PATTERN = /^human(?:-[A-Za-z0-9._-]+)?@(kernel|host)$/;
72
+ // Shared with queue selection; gateway admission remains a separate decision.
74
73
  export function isHumanSeatSession(value) {
75
- return typeof value === "string" && HUMAN_SEAT_SESSION_PATTERN.test(value);
74
+ return typeof value === "string" && isHumanSeatSessionRef(value);
76
75
  }
77
76
  /** Coarse human age for an exception row's dim meta. Derives from the served
78
77
  * timestamp relative to the caller's clock; an absent/unparseable stamp renders
@@ -1 +1 @@
1
- {"version":3,"file":"pulse-model.js","sourceRoot":"","sources":["../../src/pulse/pulse-model.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pulse-model.js","sourceRoot":"","sources":["../../src/pulse/pulse-model.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,11 @@ import type { DaemonState, DaemonUnverifiedEvidence } from "./crash-cart/contrac
5
5
  import type { ColorMode } from "./theme.js";
6
6
  import type { FleetSnapshot, LoadState, RowFlash, Screen, ViewState } from "./types.js";
7
7
  export interface RenderOptions {
8
+ /** First visit: preserve the prior frame with its original label and no effect targets. */
9
+ previousPage?: {
10
+ state: ViewState;
11
+ snapshot: FleetSnapshot;
12
+ };
8
13
  startup?: StartupState;
9
14
  /** I5 — the live command context (from the C3 detector); default "standard". */
10
15
  commandContext?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"AAKA,OAAO,EAAgB,KAAK,YAAY,EAAE,MAAM,cAAc,CAAC;AAiB/D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AAE5E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,KAAK,EAAE,WAAW,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAItF,OAAO,KAAK,EAAE,SAAS,EAAS,MAAM,YAAY,CAAC;AAInD,OAAO,KAAK,EAAU,aAAa,EAAE,SAAS,EAAmC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAykCjI,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,gFAAgF;IAChF,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE;QAAE,UAAU,EAAE,MAAM,EAAE,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAC9D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;6EACyE;IACzE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2EAA2E;IAC3E,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB;;2EAEuE;IACvE,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB;;8CAE0C;IAC1C,UAAU,CAAC,EAAE,QAAQ,EAAE,CAAC;IACxB;oFACgF;IAChF,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gEAAgE;IAChE,SAAS,CAAC,EAAE,cAAc,CAAC;IAC3B,uFAAuF;IACvF,cAAc,CAAC,EAAE,wBAAwB,CAAC;IAC1C;sGACkG;IAClG,OAAO,CAAC,EAAE,kBAAkB,CAAC;IAC7B;uGACmG;IACnG,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;0GACsG;IACtG,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAyVD,wBAAgB,YAAY,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,GAAE,aAAkB,EAAE,SAAS,SAAK,GAAG,MAAM,CAavH"}
1
+ {"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"AAKA,OAAO,EAAgB,KAAK,YAAY,EAAE,MAAM,cAAc,CAAC;AAiB/D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AAE5E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,KAAK,EAAE,WAAW,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAItF,OAAO,KAAK,EAAE,SAAS,EAAS,MAAM,YAAY,CAAC;AAInD,OAAO,KAAK,EAAU,aAAa,EAAE,SAAS,EAAmC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAwlCjI,MAAM,WAAW,aAAa;IAC5B,2FAA2F;IAC3F,YAAY,CAAC,EAAE;QAAE,KAAK,EAAE,SAAS,CAAC;QAAC,QAAQ,EAAE,aAAa,CAAA;KAAE,CAAC;IAC7D,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,gFAAgF;IAChF,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE;QAAE,UAAU,EAAE,MAAM,EAAE,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAC9D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;6EACyE;IACzE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2EAA2E;IAC3E,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB;;2EAEuE;IACvE,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB;;8CAE0C;IAC1C,UAAU,CAAC,EAAE,QAAQ,EAAE,CAAC;IACxB;oFACgF;IAChF,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gEAAgE;IAChE,SAAS,CAAC,EAAE,cAAc,CAAC;IAC3B,uFAAuF;IACvF,cAAc,CAAC,EAAE,wBAAwB,CAAC;IAC1C;sGACkG;IAClG,OAAO,CAAC,EAAE,kBAAkB,CAAC;IAC7B;uGACmG;IACnG,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;0GACsG;IACtG,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAkWD,wBAAgB,YAAY,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,GAAE,aAAkB,EAAE,SAAS,SAAK,GAAG,MAAM,CAavH"}
@@ -552,13 +552,13 @@ function instanceContentLines(state, snap, host, contentWidth, motion) {
552
552
  fields: [
553
553
  { label: "identity", value: host.name },
554
554
  { label: "transport", value: host.id ?? "local" },
555
- { label: "shape", value: `${host.rigs.length} rigs · ${host.rigs.reduce((n, rig) => n + rig.pods.reduce((m, pod) => m + pod.agents.length, 0), 0)} seats` },
555
+ { label: "shape", value: host.rigs.some(r => r.inventoryUnavailable) ? `${host.rigs.length} rigs · seat inventory incomplete` : `${host.rigs.length} rigs · ${host.rigs.reduce((n, rig) => n + rig.pods.reduce((m, pod) => m + pod.agents.length, 0), 0)} seats` },
556
556
  ],
557
557
  },
558
558
  {
559
559
  title: "rigs",
560
560
  lines: host.rigs.length > 0
561
- ? host.rigs.map((rig) => listItem(alignedRow([[rig.name, 20], [rig.lifecycleState ?? "unknown", 20], [`${rig.pods.length} pods · ${rig.pods.reduce((n, pod) => n + pod.agents.length, 0)} seats`, 24]]), { type: "drill", resource: "rig", name: rig.name, target: { host: host.name } }))
561
+ ? host.rigs.map((rig) => listItem(alignedRow([[rig.name, 20], [rig.lifecycleState ?? "unknown", 20], [rig.inventoryUnavailable ? "inventory unavailable" : `${rig.pods.length} pods · ${rig.pods.reduce((n, pod) => n + pod.agents.length, 0)} seats`, 24]]), { type: "drill", resource: "rig", name: rig.name, target: { host: host.name } }))
562
562
  : [{ text: " (no local rigs served — proven empty)" }],
563
563
  },
564
564
  ]),
@@ -613,7 +613,7 @@ function instanceContentLines(state, snap, host, contentWidth, motion) {
613
613
  const rigAction = { type: "drill", resource: "rig", name: rig.name, target: { host: host.name } };
614
614
  if (agents.length === 0) {
615
615
  lines.push({
616
- text: tableRow(columns, { rig: rig.name, pod: "—", seat: "(no seats)", status: rig.lifecycleState ?? "unknown" }),
616
+ text: tableRow(columns, { rig: rig.name, pod: "—", seat: rig.inventoryUnavailable ? "(read failed)" : "(no seats)", status: rig.lifecycleState ?? "unknown" }),
617
617
  action: rigAction,
618
618
  });
619
619
  continue;
@@ -649,7 +649,7 @@ function instanceContentLines(state, snap, host, contentWidth, motion) {
649
649
  });
650
650
  }
651
651
  }
652
- lines.push({ text: "" }, { text: `${host.rigs.length} rigs · ${seatCount} seats · ${workingCount} working · ${attentionCount} need attention · ${openCount} open rows` });
652
+ lines.push({ text: "" }, { text: host.rigs.some(r => r.inventoryUnavailable) ? `${host.rigs.length} rigs · inventory incomplete · ${seatCount} seats read` : `${host.rigs.length} rigs · ${seatCount} seats · ${workingCount} working · ${attentionCount} need attention · ${openCount} open rows` });
653
653
  lines.push(...recentLines(snap, scope, contentWidth, false, state.timeZone));
654
654
  return lines;
655
655
  }
@@ -675,6 +675,8 @@ function contentLines(state, snap, contentWidth, motion) {
675
675
  return connectionsLines(snap, contentWidth, state.timeZone);
676
676
  if (state.healthOpen)
677
677
  return healthDetailLines(snap, state.healthOpen, contentWidth, state.timeZone);
678
+ if (state.section === "system")
679
+ return [{ text: "System · Instance health" }, { text: "" }, ...healthListLines(snap, { kind: "instance", local: true }, contentWidth)];
678
680
  // PULSE is a FULL-WIDTH view handled by an early return in renderScreen
679
681
  // (renderPulseScreen) — it never reaches the sidebar+content layout below.
680
682
  if (state.section === "topology") {
@@ -707,7 +709,13 @@ function contentLines(state, snap, contentWidth, motion) {
707
709
  const host = (hostName ? snap.hosts.find((candidate) => candidate.name === hostName) : snap.hosts[0]);
708
710
  if (leaf?.kind === "host" && host)
709
711
  return instanceContentLines(state, snap, host, contentWidth, motion);
710
- const rigName = state.drill.find((d) => d.kind === "rig")?.name ?? snap.hosts[0]?.rigs[0]?.name;
712
+ if (!leaf && host?.rigs.length)
713
+ return wrapDetailLines([
714
+ { text: `TOPOLOGY · ${host.name}` }, { text: "Choose a rig to read its seats and work." },
715
+ { text: `${host.rigs.length} rig${host.rigs.length === 1 ? "" : "s"} · select one in Explorer` },
716
+ { text: "Bright ▦ live agents · gray ▦ none · ? unknown" },
717
+ ], contentWidth);
718
+ const rigName = state.drill.find((d) => d.kind === "rig")?.name;
711
719
  const rig = host?.rigs.find((candidate) => candidate.name === rigName);
712
720
  if (!rig || !host) {
713
721
  const notLoaded = snap.readErrors.find((error) => error.startsWith("Live data not loaded"));
@@ -727,6 +735,10 @@ function contentLines(state, snap, contentWidth, motion) {
727
735
  }
728
736
  return [{ text: "(no rigs served — proven empty, not fabricated)" }];
729
737
  }
738
+ if (rig.inventoryNotLoaded)
739
+ return [{ text: `Reading ${rig.name}…` }];
740
+ if (rig.inventoryUnavailable)
741
+ return [{ text: `Inventory unavailable for ${rig.name} · refresh to Retry` }];
730
742
  const podFilter = leaf?.kind === "pod" ? leaf.name : null;
731
743
  const all = rig.pods.flatMap((p) => p.agents.map((a) => ({ pod: p.name, ...a })));
732
744
  const rows = all
@@ -1044,8 +1056,9 @@ function contentLines(state, snap, contentWidth, motion) {
1044
1056
  }
1045
1057
  else {
1046
1058
  lines.push({ text: "SPEC LIBRARY" }, { text: "Choose a spec at left to preview its purpose, contents and source." }, { text: "Enter reads details · / filters · source opens current disk content" }, { text: "" });
1047
- for (const kind of ["rig", "agent", "workflow"])
1048
- lines.push({ text: `${kind}: ${snap.specs.filter((spec) => spec.kind === kind).length} available` });
1059
+ if (snap.specsLoaded !== false && !snap.readErrors.some(e => e.startsWith("specs-library")))
1060
+ for (const kind of ["rig", "agent", "workflow"])
1061
+ lines.push({ text: `${kind}: ${snap.specs.filter((spec) => spec.kind === kind).length} available` });
1049
1062
  if (!snap.specs.length) {
1050
1063
  if (motion.loading) {
1051
1064
  if (!motion.reduced)
@@ -1078,20 +1091,30 @@ function contentLines(state, snap, contentWidth, motion) {
1078
1091
  return [...identity, { text: "Reading selected project…" }];
1079
1092
  const entry = catalog?.projects.find(p => p.id === state.project.id && p.root === state.project.root);
1080
1093
  const errors = (snap.readErrors ?? []).map(text => ({ text: `Unavailable: ${text}` }));
1081
- const projectHeader = state.project ? [...identity, listItem("Read current source", { type: "project-source" }), ...wrapDetailLines(errors, contentWidth)] : [];
1094
+ const missionOverview = !!state.scopesMission && !state.scopesSelected && !state.executionOpen;
1095
+ const projectHeader = state.project ? missionOverview
1096
+ ? [{ text: `PROJECT ${state.project.id}`, action: { type: "project-source" } }, ...wrapDetailLines(errors, contentWidth)]
1097
+ : [...identity, listItem("Read current source", { type: "project-source" }), ...wrapDetailLines(errors, contentWidth)] : [];
1082
1098
  if (state.project && (!entry || entry.error))
1083
1099
  return [...projectHeader, { text: "Choose a project again or go Back." }];
1084
1100
  if (state.project && !state.scopesMission)
1085
- return [...projectHeader, { text: "Choose a mission" }, ...(snap.scopes ?? []).map(m => listItem(m.mission, { type: "scopes-mission-open", mission: m.mission })), ...(!snap.scopes?.length && !errors.length ? [{ text: "No missions found in this project." }] : [])];
1101
+ return [...projectHeader, { text: "Choose a mission" }, ...(snap.scopes ?? []).map(m => listItem(m.mission + (m.error ? " · source unavailable" : ""), { type: "scopes-mission-open", mission: m.mission })), ...(!snap.scopes?.length && !errors.length ? [{ text: "No missions found in this project." }] : [])];
1086
1102
  // SCOPES owns both levels. Both mission-graph and Explorer slice routes land
1087
1103
  // on the same execution-backed canonical detail; store-direct content is
1088
1104
  // composed into that page instead of surviving as a competing destination.
1089
1105
  const sel = state.scopesSelected;
1090
1106
  const missionName = state.scopesMission;
1107
+ const mission = snap.scopes?.find(m => m.mission === missionName);
1108
+ if (mission?.error)
1109
+ return [...projectHeader, ...wrapDetailLines([{ text: `${missionName} · Source unavailable` }, { text: mission.error }, { text: "Correct the source and refresh; Back returns to other missions." }], contentWidth)];
1091
1110
  const execution = snap.execution?.mission === missionName ? snap.execution : null;
1092
1111
  const detail = sel
1093
1112
  ? (snap.scopes ?? []).find((m) => m.mission === sel.mission)?.slices.find((sl) => sl.dirName === sel.slice) ?? null
1094
1113
  : null;
1114
+ if (detail?.error)
1115
+ return [...projectHeader, ...wrapDetailLines([{ text: `${missionName}/${detail.dirName} · Source unavailable` }, { text: detail.error }, { text: "Correct the source and refresh; Back returns to other slices." }], contentWidth)];
1116
+ if (!sel && !state.executionOpen)
1117
+ projectHeader.push(...(mission?.slices.filter(s => s.error) ?? []).map(s => listItem(`${s.dirName} · source unavailable`, { type: "scopes-open", mission: missionName, slice: s.dirName })));
1095
1118
  if (state.executionOpen && execution) {
1096
1119
  return [...projectHeader, ...executionContentLines(execution, snap.scopes, snap.readErrors, state.executionOpen, contentWidth, false, snap.sliceDetail, {
1097
1120
  collapseReqs: state.scopesCollapseReqs,
@@ -1200,6 +1223,15 @@ function pushExplorerTargets(hitMap, row, display, y, explorerWidth) {
1200
1223
  }
1201
1224
  hitMap.push({ y, x1: 1, x2: explorerWidth, action: row.action });
1202
1225
  }
1226
+ function readStatus(load, zone) {
1227
+ const at = load.retainedAt ?? load.lastSuccessAt;
1228
+ const basis = at === undefined ? "" : ` · last ${displayTime(new Date(at).toISOString(), zone)}`;
1229
+ if (load.inFlight)
1230
+ return `${load.settled ? "Refreshing" : "Loading"}…${basis} · ? Help`;
1231
+ if (load.stale)
1232
+ return `${at === undefined ? "Read failed" : "Could not refresh"}${basis} · refresh to Retry`;
1233
+ return `Tab complete · ? help${basis}`;
1234
+ }
1203
1235
  function renderPulseScreen(state, snap, options, inputLine) {
1204
1236
  const { cols = 120, rows = 32, nowMs = 0 } = options;
1205
1237
  const explW = explorerWidth(cols);
@@ -1233,7 +1265,9 @@ function renderPulseScreen(state, snap, options, inputLine) {
1233
1265
  const contentTargets = [];
1234
1266
  const flashRows = [];
1235
1267
  let flashAck = false;
1236
- lines.push(pad(`cmd ▸ ${inputLine}▊${load.stale ? " · readiness unconfirmed — refreshing or authority unavailable" : load.connection && load.connection !== "connected" ? " · live updates unavailable — last HTTP basis; quiet refresh active" : inputLine ? "" : " Tab complete · ? help · timezone"}`, cols));
1268
+ lines.push(pad(`cmd ▸ ${inputLine}▊${inputLine ? "" : " " + readStatus(load, state.timeZone)}`, cols));
1269
+ if (load.stale && !inputLine)
1270
+ hitMap.push({ y: 1, x1: 9, x2: cols, action: { type: "noop" } });
1237
1271
  if (options.completion) {
1238
1272
  lines.push(pad(options.completion.message, cols));
1239
1273
  for (const candidate of options.completion.candidates.slice(0, 4))
@@ -1514,7 +1548,7 @@ function renderBody(state, snap, options = {}, inputLine = "") {
1514
1548
  // PULSE (founder Option-B): a content-pane view inside the NORMAL explorer│
1515
1549
  // content chrome — renderPulseScreen builds its own split (sidebar + lanes)
1516
1550
  // and rides the same segRows paint path, so it returns before the table layout.
1517
- if (state.viewTab === "pulse")
1551
+ if (state.viewTab === "pulse" && options.load?.settled !== false)
1518
1552
  return renderPulseScreen(state, snap, options, inputLine);
1519
1553
  // S19 round-5 (guard): one spinner frame per render pass from caller time;
1520
1554
  // `loading` comes from the refresh OWNER (omitted = settled — demo/fixture
@@ -1534,7 +1568,9 @@ function renderBody(state, snap, options = {}, inputLine = "") {
1534
1568
  // shell accepts typing from the empty state, so the honest readiness
1535
1569
  // affordance must show BEFORE the first key (no new focus state; stylize
1536
1570
  // paints the cell; the shared motion clock controls its visibility).
1537
- lines.push(pad(`cmd ▸ ${inputLine}▊${inputLine ? "" : " Tab complete · ? help · timezone"}`, cols));
1571
+ lines.push(pad(`cmd ▸ ${inputLine}▊${inputLine ? "" : " " + readStatus(load, state.timeZone)}`, cols));
1572
+ if (load.stale && !inputLine)
1573
+ hitMap.push({ y: 1, x1: 9, x2: cols, action: { type: "noop" } });
1538
1574
  if (options.completion) {
1539
1575
  lines.push(pad(options.completion.message, cols));
1540
1576
  for (const candidate of options.completion.candidates.slice(0, 4))
@@ -1542,7 +1578,7 @@ function renderBody(state, snap, options = {}, inputLine = "") {
1542
1578
  if (options.completion.candidates.length > 4)
1543
1579
  lines.push(pad(" … keep typing to narrow matches", cols));
1544
1580
  }
1545
- const sectionTitle = { topology: "TOPOLOGY", specs: "SPECS", scopes: "PROJECTS", needs: "ATTENTION" }[state.section] ?? state.section.toUpperCase();
1581
+ const sectionTitle = { topology: "TOPOLOGY", specs: "SPECS", scopes: "PROJECTS", needs: "FEED", system: "SYSTEM · HEALTH", config: "SYSTEM · CONFIGURATION", connections: "SYSTEM · CONNECTIONS" }[state.section] ?? state.section.toUpperCase();
1546
1582
  // active-pane emphasis (k9s-class chrome): the focused pane's title is bracketed
1547
1583
  const explorerTitle = state.focusedPane === "explorer" ? "{ EXPLORER }" : "EXPLORER";
1548
1584
  const contentTitle = state.focusedPane === "content" ? `{ ${sectionTitle} }` : sectionTitle;
@@ -1551,7 +1587,17 @@ function renderBody(state, snap, options = {}, inputLine = "") {
1551
1587
  // Slice-17: the file-tree re-skin is a DISPLAY transform only — rows, keys,
1552
1588
  // actions, and the hit-map all keep resolving against the row model above.
1553
1589
  const { labels: explorerDisplay, metas: explorerMetas } = navigatorDisplay(explorer, snap, explW - 1);
1554
- const content = contentLines(state, snap, Math.max(cols - explW - (fullReading ? 1 : 2), 0), motion);
1590
+ const contentWidth = Math.max(cols - explW - (fullReading ? 1 : 2), 0);
1591
+ const previous = !load.settled && !state.externalUrl ? options.previousPage : undefined;
1592
+ const content = previous
1593
+ ? [...wrapDetailLines([{ text: `Previous: ${previous.state.section} · ${previous.state.file ? `${previous.state.file.root}/${previous.state.file.path}` : previous.state.drill.map(d => d.name).join(" / ") || [previous.state.project?.id, previous.state.scopesMission, previous.state.terminalView].filter(Boolean).join(" / ") || "overview"}` }], contentWidth),
1594
+ { text: `Opening ${sectionTitle.toLowerCase()}… · Explorer remains available` },
1595
+ ...contentLines(previous.state, previous.snapshot, contentWidth, { ...motion, loading: false }).map(line => ({ text: line.text }))]
1596
+ : !load.settled && !state.externalUrl
1597
+ ? [{ text: `${sectionTitle} · choose a location in Explorer` }, { text: `${motion.frame} ${sectionTitle.toLowerCase()} read pending…` }]
1598
+ : contentLines(state, snap, contentWidth, motion);
1599
+ if (!load.settled && !reduced)
1600
+ motion.used = true;
1555
1601
  const footer = state.footerOn ? snap.stream.at(-1) : undefined;
1556
1602
  // round-5 (guard): the tmux-style ONE-SHOT activity flash targets the
1557
1603
  // flashed agent's EXPLORER row — per-seat pane-output events from the