@openrig/cli 0.5.1 → 0.5.2

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 (473) hide show
  1. package/daemon/assets/guidance/openrig-start.md +21 -64
  2. package/daemon/dist/adapters/codex-runtime-adapter.d.ts +11 -2
  3. package/daemon/dist/adapters/codex-runtime-adapter.d.ts.map +1 -1
  4. package/daemon/dist/adapters/codex-runtime-adapter.js +18 -10
  5. package/daemon/dist/adapters/codex-runtime-adapter.js.map +1 -1
  6. package/daemon/dist/build-info.js +3 -3
  7. package/daemon/dist/domain/codex-thread-id.d.ts +5 -2
  8. package/daemon/dist/domain/codex-thread-id.d.ts.map +1 -1
  9. package/daemon/dist/domain/codex-thread-id.js +9 -4
  10. package/daemon/dist/domain/codex-thread-id.js.map +1 -1
  11. package/daemon/dist/domain/crash-cart-conductor.d.ts +173 -0
  12. package/daemon/dist/domain/crash-cart-conductor.d.ts.map +1 -0
  13. package/daemon/dist/domain/crash-cart-conductor.js +233 -0
  14. package/daemon/dist/domain/crash-cart-conductor.js.map +1 -0
  15. package/daemon/dist/domain/crash-cart-probes.d.ts +7 -6
  16. package/daemon/dist/domain/crash-cart-probes.d.ts.map +1 -1
  17. package/daemon/dist/domain/crash-cart-probes.js +57 -7
  18. package/daemon/dist/domain/crash-cart-probes.js.map +1 -1
  19. package/daemon/dist/domain/hosts/fanout-contract.d.ts +4 -0
  20. package/daemon/dist/domain/hosts/fanout-contract.d.ts.map +1 -1
  21. package/daemon/dist/domain/hosts/fanout-contract.js +15 -0
  22. package/daemon/dist/domain/hosts/fanout-contract.js.map +1 -1
  23. package/daemon/dist/domain/hosts/hosts-registry-reader.d.ts +11 -0
  24. package/daemon/dist/domain/hosts/hosts-registry-reader.d.ts.map +1 -1
  25. package/daemon/dist/domain/hosts/hosts-registry-reader.js +34 -1
  26. package/daemon/dist/domain/hosts/hosts-registry-reader.js.map +1 -1
  27. package/daemon/dist/domain/model-divergence/current-generation-record.d.ts +67 -0
  28. package/daemon/dist/domain/model-divergence/current-generation-record.d.ts.map +1 -0
  29. package/daemon/dist/domain/model-divergence/current-generation-record.js +204 -0
  30. package/daemon/dist/domain/model-divergence/current-generation-record.js.map +1 -0
  31. package/daemon/dist/domain/model-divergence/effective-model-readers.d.ts +13 -0
  32. package/daemon/dist/domain/model-divergence/effective-model-readers.d.ts.map +1 -0
  33. package/daemon/dist/domain/model-divergence/effective-model-readers.js +163 -0
  34. package/daemon/dist/domain/model-divergence/effective-model-readers.js.map +1 -0
  35. package/daemon/dist/domain/model-divergence/model-divergence-monitor.d.ts +113 -0
  36. package/daemon/dist/domain/model-divergence/model-divergence-monitor.d.ts.map +1 -0
  37. package/daemon/dist/domain/model-divergence/model-divergence-monitor.js +190 -0
  38. package/daemon/dist/domain/model-divergence/model-divergence-monitor.js.map +1 -0
  39. package/daemon/dist/domain/predecessor-recap-resolver.d.ts +10 -3
  40. package/daemon/dist/domain/predecessor-recap-resolver.d.ts.map +1 -1
  41. package/daemon/dist/domain/predecessor-recap-resolver.js +61 -14
  42. package/daemon/dist/domain/predecessor-recap-resolver.js.map +1 -1
  43. package/daemon/dist/domain/resume-metadata-refresher.d.ts +11 -2
  44. package/daemon/dist/domain/resume-metadata-refresher.d.ts.map +1 -1
  45. package/daemon/dist/domain/resume-metadata-refresher.js +17 -9
  46. package/daemon/dist/domain/resume-metadata-refresher.js.map +1 -1
  47. package/daemon/dist/domain/review/gather.d.ts.map +1 -1
  48. package/daemon/dist/domain/review/gather.js +3 -2
  49. package/daemon/dist/domain/review/gather.js.map +1 -1
  50. package/daemon/dist/domain/{rig-policy/rig-policy-defaults.d.ts → rig-mode/rig-mode-defaults.d.ts} +2 -2
  51. package/daemon/dist/domain/rig-mode/rig-mode-defaults.d.ts.map +1 -0
  52. package/daemon/dist/domain/{rig-policy/rig-policy-defaults.js → rig-mode/rig-mode-defaults.js} +1 -1
  53. package/daemon/dist/domain/rig-mode/rig-mode-defaults.js.map +1 -0
  54. package/{node_modules/@openrig/daemon/dist/domain/rig-policy/rig-policy-store.d.ts → daemon/dist/domain/rig-mode/rig-mode-store.d.ts} +6 -6
  55. package/daemon/dist/domain/rig-mode/rig-mode-store.d.ts.map +1 -0
  56. package/daemon/dist/domain/{rig-policy/rig-policy-store.js → rig-mode/rig-mode-store.js} +5 -5
  57. package/daemon/dist/domain/rig-mode/rig-mode-store.js.map +1 -0
  58. package/daemon/dist/domain/{rig-policy/rig-policy-types.d.ts → rig-mode/rig-mode-types.d.ts} +1 -1
  59. package/daemon/dist/domain/rig-mode/rig-mode-types.d.ts.map +1 -0
  60. package/{node_modules/@openrig/daemon/dist/domain/rig-policy/rig-policy-types.js → daemon/dist/domain/rig-mode/rig-mode-types.js} +1 -1
  61. package/daemon/dist/domain/rig-mode/rig-mode-types.js.map +1 -0
  62. package/{node_modules/@openrig/daemon/dist/domain/rig-policy/rig-policy-validator.d.ts → daemon/dist/domain/rig-mode/rig-mode-validator.d.ts} +2 -2
  63. package/daemon/dist/domain/rig-mode/rig-mode-validator.d.ts.map +1 -0
  64. package/daemon/dist/domain/{rig-policy/rig-policy-validator.js → rig-mode/rig-mode-validator.js} +3 -3
  65. package/daemon/dist/domain/rig-mode/rig-mode-validator.js.map +1 -0
  66. package/daemon/dist/domain/rigspec-schema.d.ts +7 -0
  67. package/daemon/dist/domain/rigspec-schema.d.ts.map +1 -1
  68. package/daemon/dist/domain/rigspec-schema.js +7 -0
  69. package/daemon/dist/domain/rigspec-schema.js.map +1 -1
  70. package/daemon/dist/domain/scope/node-file.d.ts +37 -0
  71. package/daemon/dist/domain/scope/node-file.d.ts.map +1 -0
  72. package/daemon/dist/domain/scope/node-file.js +55 -0
  73. package/daemon/dist/domain/scope/node-file.js.map +1 -0
  74. package/daemon/dist/domain/scope/plan-lock-artifacts.d.ts +11 -0
  75. package/daemon/dist/domain/scope/plan-lock-artifacts.d.ts.map +1 -1
  76. package/daemon/dist/domain/scope/plan-lock-artifacts.js +40 -0
  77. package/daemon/dist/domain/scope/plan-lock-artifacts.js.map +1 -1
  78. package/daemon/dist/domain/scope/scope-approve.d.ts +4 -0
  79. package/daemon/dist/domain/scope/scope-approve.d.ts.map +1 -1
  80. package/daemon/dist/domain/scope/scope-approve.js +56 -7
  81. package/daemon/dist/domain/scope/scope-approve.js.map +1 -1
  82. package/daemon/dist/domain/scope/scope-audit.d.ts +1 -1
  83. package/daemon/dist/domain/scope/scope-audit.d.ts.map +1 -1
  84. package/daemon/dist/domain/scope/scope-audit.js.map +1 -1
  85. package/daemon/dist/domain/scope/scope-view-projection.d.ts.map +1 -1
  86. package/daemon/dist/domain/scope/scope-view-projection.js +5 -2
  87. package/daemon/dist/domain/scope/scope-view-projection.js.map +1 -1
  88. package/daemon/dist/domain/seat-handover-service.d.ts +32 -15
  89. package/daemon/dist/domain/seat-handover-service.d.ts.map +1 -1
  90. package/daemon/dist/domain/seat-handover-service.js +42 -17
  91. package/daemon/dist/domain/seat-handover-service.js.map +1 -1
  92. package/daemon/dist/domain/seat-identity-reconciler.d.ts +17 -0
  93. package/daemon/dist/domain/seat-identity-reconciler.d.ts.map +1 -1
  94. package/daemon/dist/domain/seat-identity-reconciler.js +22 -0
  95. package/daemon/dist/domain/seat-identity-reconciler.js.map +1 -1
  96. package/daemon/dist/domain/session-jsonl.js +1 -1
  97. package/daemon/dist/domain/session-jsonl.js.map +1 -1
  98. package/daemon/dist/domain/slices/slice-detail-projector.d.ts.map +1 -1
  99. package/daemon/dist/domain/slices/slice-detail-projector.js +14 -2
  100. package/daemon/dist/domain/slices/slice-detail-projector.js.map +1 -1
  101. package/daemon/dist/domain/slices/slice-indexer.d.ts.map +1 -1
  102. package/daemon/dist/domain/slices/slice-indexer.js +16 -3
  103. package/daemon/dist/domain/slices/slice-indexer.js.map +1 -1
  104. package/daemon/dist/domain/spec-live-conformance.d.ts +22 -0
  105. package/daemon/dist/domain/spec-live-conformance.d.ts.map +1 -1
  106. package/daemon/dist/domain/spec-live-conformance.js +35 -0
  107. package/daemon/dist/domain/spec-live-conformance.js.map +1 -1
  108. package/daemon/dist/domain/sync-site-wrap.d.ts +9 -0
  109. package/daemon/dist/domain/sync-site-wrap.d.ts.map +1 -1
  110. package/daemon/dist/domain/sync-site-wrap.js +11 -0
  111. package/daemon/dist/domain/sync-site-wrap.js.map +1 -1
  112. package/daemon/dist/domain/types.d.ts +15 -0
  113. package/daemon/dist/domain/types.d.ts.map +1 -1
  114. package/daemon/dist/domain/types.js.map +1 -1
  115. package/daemon/dist/domain/user-settings/settings-store.d.ts +1 -1
  116. package/daemon/dist/domain/user-settings/settings-store.d.ts.map +1 -1
  117. package/daemon/dist/domain/user-settings/settings-store.js +20 -0
  118. package/daemon/dist/domain/user-settings/settings-store.js.map +1 -1
  119. package/daemon/dist/domain/watchdog-auto-registration.d.ts +7 -0
  120. package/daemon/dist/domain/watchdog-auto-registration.d.ts.map +1 -1
  121. package/daemon/dist/domain/watchdog-auto-registration.js +27 -0
  122. package/daemon/dist/domain/watchdog-auto-registration.js.map +1 -1
  123. package/daemon/dist/domain/workspace/workspace-doctor.d.ts.map +1 -1
  124. package/daemon/dist/domain/workspace/workspace-doctor.js +4 -3
  125. package/daemon/dist/domain/workspace/workspace-doctor.js.map +1 -1
  126. package/daemon/dist/routes/activity.js +11 -2
  127. package/daemon/dist/routes/activity.js.map +1 -1
  128. package/daemon/dist/routes/bundles.d.ts +27 -0
  129. package/daemon/dist/routes/bundles.d.ts.map +1 -1
  130. package/daemon/dist/routes/bundles.js +107 -26
  131. package/daemon/dist/routes/bundles.js.map +1 -1
  132. package/daemon/dist/routes/crash-cart.d.ts +4 -0
  133. package/daemon/dist/routes/crash-cart.d.ts.map +1 -0
  134. package/daemon/dist/routes/crash-cart.js +144 -0
  135. package/daemon/dist/routes/crash-cart.js.map +1 -0
  136. package/daemon/dist/routes/missions.d.ts.map +1 -1
  137. package/daemon/dist/routes/missions.js +10 -6
  138. package/daemon/dist/routes/missions.js.map +1 -1
  139. package/daemon/dist/routes/{rig-policy.d.ts → rig-mode.d.ts} +3 -3
  140. package/daemon/dist/routes/rig-mode.d.ts.map +1 -0
  141. package/{node_modules/@openrig/daemon/dist/routes/rig-policy.js → daemon/dist/routes/rig-mode.js} +13 -13
  142. package/daemon/dist/routes/rig-mode.js.map +1 -0
  143. package/daemon/dist/routes/scope-approve.d.ts.map +1 -1
  144. package/daemon/dist/routes/scope-approve.js +4 -0
  145. package/daemon/dist/routes/scope-approve.js.map +1 -1
  146. package/daemon/dist/routes/scope-audit.d.ts.map +1 -1
  147. package/daemon/dist/routes/scope-audit.js +29 -2
  148. package/daemon/dist/routes/scope-audit.js.map +1 -1
  149. package/daemon/dist/routes/seat.js +7 -2
  150. package/daemon/dist/routes/seat.js.map +1 -1
  151. package/daemon/dist/routes/sessions.d.ts.map +1 -1
  152. package/daemon/dist/routes/sessions.js +11 -1
  153. package/daemon/dist/routes/sessions.js.map +1 -1
  154. package/daemon/dist/server.d.ts +3 -1
  155. package/daemon/dist/server.d.ts.map +1 -1
  156. package/daemon/dist/server.js +15 -5
  157. package/daemon/dist/server.js.map +1 -1
  158. package/daemon/dist/startup.d.ts.map +1 -1
  159. package/daemon/dist/startup.js +134 -5
  160. package/daemon/dist/startup.js.map +1 -1
  161. package/dist/build-info.js +3 -3
  162. package/dist/commands/bundle.d.ts.map +1 -1
  163. package/dist/commands/bundle.js +6 -0
  164. package/dist/commands/bundle.js.map +1 -1
  165. package/dist/commands/capture.d.ts.map +1 -1
  166. package/dist/commands/capture.js +2 -0
  167. package/dist/commands/capture.js.map +1 -1
  168. package/dist/commands/crash-cart.d.ts.map +1 -1
  169. package/dist/commands/crash-cart.js.map +1 -1
  170. package/dist/commands/host.d.ts +5 -0
  171. package/dist/commands/host.d.ts.map +1 -1
  172. package/dist/commands/host.js +59 -3
  173. package/dist/commands/host.js.map +1 -1
  174. package/dist/commands/policy.d.ts +5 -0
  175. package/dist/commands/policy.d.ts.map +1 -0
  176. package/dist/commands/policy.js +307 -0
  177. package/dist/commands/policy.js.map +1 -0
  178. package/dist/commands/ps.d.ts +4 -0
  179. package/dist/commands/ps.d.ts.map +1 -1
  180. package/dist/commands/ps.js +4 -0
  181. package/dist/commands/ps.js.map +1 -1
  182. package/dist/commands/{rig-policy.d.ts → rig-mode.d.ts} +3 -3
  183. package/dist/commands/rig-mode.d.ts.map +1 -0
  184. package/dist/commands/{rig-policy.js → rig-mode.js} +17 -17
  185. package/dist/commands/rig-mode.js.map +1 -0
  186. package/dist/commands/scope.d.ts.map +1 -1
  187. package/dist/commands/scope.js +58 -16
  188. package/dist/commands/scope.js.map +1 -1
  189. package/dist/commands/send.d.ts.map +1 -1
  190. package/dist/commands/send.js +2 -0
  191. package/dist/commands/send.js.map +1 -1
  192. package/dist/commands/setup.d.ts +13 -0
  193. package/dist/commands/setup.d.ts.map +1 -1
  194. package/dist/commands/setup.js +3 -3
  195. package/dist/commands/setup.js.map +1 -1
  196. package/dist/commands/transcript.d.ts.map +1 -1
  197. package/dist/commands/transcript.js +2 -0
  198. package/dist/commands/transcript.js.map +1 -1
  199. package/dist/commands/whoami.d.ts.map +1 -1
  200. package/dist/commands/whoami.js +11 -1
  201. package/dist/commands/whoami.js.map +1 -1
  202. package/dist/config-store.d.ts +3 -1
  203. package/dist/config-store.d.ts.map +1 -1
  204. package/dist/config-store.js +18 -0
  205. package/dist/config-store.js.map +1 -1
  206. package/dist/cross-host-target.d.ts +8 -1
  207. package/dist/cross-host-target.d.ts.map +1 -1
  208. package/dist/cross-host-target.js +23 -4
  209. package/dist/cross-host-target.js.map +1 -1
  210. package/dist/daemon-lifecycle.d.ts +10 -1
  211. package/dist/daemon-lifecycle.d.ts.map +1 -1
  212. package/dist/daemon-lifecycle.js +26 -1
  213. package/dist/daemon-lifecycle.js.map +1 -1
  214. package/dist/front-door.d.ts.map +1 -1
  215. package/dist/front-door.js +11 -1
  216. package/dist/front-door.js.map +1 -1
  217. package/dist/host-bindings.d.ts +62 -0
  218. package/dist/host-bindings.d.ts.map +1 -0
  219. package/dist/host-bindings.js +147 -0
  220. package/dist/host-bindings.js.map +1 -0
  221. package/dist/host-registry.d.ts +14 -1
  222. package/dist/host-registry.d.ts.map +1 -1
  223. package/dist/host-registry.js +30 -2
  224. package/dist/host-registry.js.map +1 -1
  225. package/dist/index.d.ts +2 -2
  226. package/dist/index.d.ts.map +1 -1
  227. package/dist/index.js +5 -2
  228. package/dist/index.js.map +1 -1
  229. package/dist/lib/hosts/fanout-contract.d.ts +4 -0
  230. package/dist/lib/hosts/fanout-contract.d.ts.map +1 -1
  231. package/dist/lib/hosts/fanout-contract.js +15 -0
  232. package/dist/lib/hosts/fanout-contract.js.map +1 -1
  233. package/dist/lib/path-safety.d.ts +8 -0
  234. package/dist/lib/path-safety.d.ts.map +1 -0
  235. package/dist/lib/path-safety.js +24 -0
  236. package/dist/lib/path-safety.js.map +1 -0
  237. package/dist/lib/permission-policy/policy-ref.d.ts +89 -0
  238. package/dist/lib/permission-policy/policy-ref.d.ts.map +1 -0
  239. package/dist/lib/permission-policy/policy-ref.js +171 -0
  240. package/dist/lib/permission-policy/policy-ref.js.map +1 -0
  241. package/dist/lib/permission-policy/policy-spec.d.ts +34 -0
  242. package/dist/lib/permission-policy/policy-spec.d.ts.map +1 -0
  243. package/dist/lib/permission-policy/policy-spec.js +106 -0
  244. package/dist/lib/permission-policy/policy-spec.js.map +1 -0
  245. package/dist/lib/scope/scope-audit.d.ts +1 -1
  246. package/dist/lib/scope/scope-audit.d.ts.map +1 -1
  247. package/dist/lib/scope/scope-audit.js.map +1 -1
  248. package/dist/lib/scope/scope-fs.d.ts +19 -3
  249. package/dist/lib/scope/scope-fs.d.ts.map +1 -1
  250. package/dist/lib/scope/scope-fs.js +37 -17
  251. package/dist/lib/scope/scope-fs.js.map +1 -1
  252. package/dist/release-surface/extract-surface.js +1 -1
  253. package/dist/release-surface/extract-surface.js.map +1 -1
  254. package/node_modules/@openrig/daemon/dist/adapters/codex-runtime-adapter.d.ts +11 -2
  255. package/node_modules/@openrig/daemon/dist/adapters/codex-runtime-adapter.d.ts.map +1 -1
  256. package/node_modules/@openrig/daemon/dist/adapters/codex-runtime-adapter.js +18 -10
  257. package/node_modules/@openrig/daemon/dist/adapters/codex-runtime-adapter.js.map +1 -1
  258. package/node_modules/@openrig/daemon/dist/build-info.js +3 -3
  259. package/node_modules/@openrig/daemon/dist/domain/codex-thread-id.d.ts +5 -2
  260. package/node_modules/@openrig/daemon/dist/domain/codex-thread-id.d.ts.map +1 -1
  261. package/node_modules/@openrig/daemon/dist/domain/codex-thread-id.js +9 -4
  262. package/node_modules/@openrig/daemon/dist/domain/codex-thread-id.js.map +1 -1
  263. package/node_modules/@openrig/daemon/dist/domain/crash-cart-conductor.d.ts +173 -0
  264. package/node_modules/@openrig/daemon/dist/domain/crash-cart-conductor.d.ts.map +1 -0
  265. package/node_modules/@openrig/daemon/dist/domain/crash-cart-conductor.js +233 -0
  266. package/node_modules/@openrig/daemon/dist/domain/crash-cart-conductor.js.map +1 -0
  267. package/node_modules/@openrig/daemon/dist/domain/crash-cart-probes.d.ts +7 -6
  268. package/node_modules/@openrig/daemon/dist/domain/crash-cart-probes.d.ts.map +1 -1
  269. package/node_modules/@openrig/daemon/dist/domain/crash-cart-probes.js +57 -7
  270. package/node_modules/@openrig/daemon/dist/domain/crash-cart-probes.js.map +1 -1
  271. package/node_modules/@openrig/daemon/dist/domain/hosts/fanout-contract.d.ts +4 -0
  272. package/node_modules/@openrig/daemon/dist/domain/hosts/fanout-contract.d.ts.map +1 -1
  273. package/node_modules/@openrig/daemon/dist/domain/hosts/fanout-contract.js +15 -0
  274. package/node_modules/@openrig/daemon/dist/domain/hosts/fanout-contract.js.map +1 -1
  275. package/node_modules/@openrig/daemon/dist/domain/hosts/hosts-registry-reader.d.ts +11 -0
  276. package/node_modules/@openrig/daemon/dist/domain/hosts/hosts-registry-reader.d.ts.map +1 -1
  277. package/node_modules/@openrig/daemon/dist/domain/hosts/hosts-registry-reader.js +34 -1
  278. package/node_modules/@openrig/daemon/dist/domain/hosts/hosts-registry-reader.js.map +1 -1
  279. package/node_modules/@openrig/daemon/dist/domain/model-divergence/current-generation-record.d.ts +67 -0
  280. package/node_modules/@openrig/daemon/dist/domain/model-divergence/current-generation-record.d.ts.map +1 -0
  281. package/node_modules/@openrig/daemon/dist/domain/model-divergence/current-generation-record.js +204 -0
  282. package/node_modules/@openrig/daemon/dist/domain/model-divergence/current-generation-record.js.map +1 -0
  283. package/node_modules/@openrig/daemon/dist/domain/model-divergence/effective-model-readers.d.ts +13 -0
  284. package/node_modules/@openrig/daemon/dist/domain/model-divergence/effective-model-readers.d.ts.map +1 -0
  285. package/node_modules/@openrig/daemon/dist/domain/model-divergence/effective-model-readers.js +163 -0
  286. package/node_modules/@openrig/daemon/dist/domain/model-divergence/effective-model-readers.js.map +1 -0
  287. package/node_modules/@openrig/daemon/dist/domain/model-divergence/model-divergence-monitor.d.ts +113 -0
  288. package/node_modules/@openrig/daemon/dist/domain/model-divergence/model-divergence-monitor.d.ts.map +1 -0
  289. package/node_modules/@openrig/daemon/dist/domain/model-divergence/model-divergence-monitor.js +190 -0
  290. package/node_modules/@openrig/daemon/dist/domain/model-divergence/model-divergence-monitor.js.map +1 -0
  291. package/node_modules/@openrig/daemon/dist/domain/predecessor-recap-resolver.d.ts +10 -3
  292. package/node_modules/@openrig/daemon/dist/domain/predecessor-recap-resolver.d.ts.map +1 -1
  293. package/node_modules/@openrig/daemon/dist/domain/predecessor-recap-resolver.js +61 -14
  294. package/node_modules/@openrig/daemon/dist/domain/predecessor-recap-resolver.js.map +1 -1
  295. package/node_modules/@openrig/daemon/dist/domain/resume-metadata-refresher.d.ts +11 -2
  296. package/node_modules/@openrig/daemon/dist/domain/resume-metadata-refresher.d.ts.map +1 -1
  297. package/node_modules/@openrig/daemon/dist/domain/resume-metadata-refresher.js +17 -9
  298. package/node_modules/@openrig/daemon/dist/domain/resume-metadata-refresher.js.map +1 -1
  299. package/node_modules/@openrig/daemon/dist/domain/review/gather.d.ts.map +1 -1
  300. package/node_modules/@openrig/daemon/dist/domain/review/gather.js +3 -2
  301. package/node_modules/@openrig/daemon/dist/domain/review/gather.js.map +1 -1
  302. package/node_modules/@openrig/daemon/dist/domain/{rig-policy/rig-policy-defaults.d.ts → rig-mode/rig-mode-defaults.d.ts} +2 -2
  303. package/node_modules/@openrig/daemon/dist/domain/rig-mode/rig-mode-defaults.d.ts.map +1 -0
  304. package/node_modules/@openrig/daemon/dist/domain/{rig-policy/rig-policy-defaults.js → rig-mode/rig-mode-defaults.js} +1 -1
  305. package/node_modules/@openrig/daemon/dist/domain/rig-mode/rig-mode-defaults.js.map +1 -0
  306. package/{daemon/dist/domain/rig-policy/rig-policy-store.d.ts → node_modules/@openrig/daemon/dist/domain/rig-mode/rig-mode-store.d.ts} +6 -6
  307. package/node_modules/@openrig/daemon/dist/domain/rig-mode/rig-mode-store.d.ts.map +1 -0
  308. package/node_modules/@openrig/daemon/dist/domain/{rig-policy/rig-policy-store.js → rig-mode/rig-mode-store.js} +5 -5
  309. package/node_modules/@openrig/daemon/dist/domain/rig-mode/rig-mode-store.js.map +1 -0
  310. package/node_modules/@openrig/daemon/dist/domain/{rig-policy/rig-policy-types.d.ts → rig-mode/rig-mode-types.d.ts} +1 -1
  311. package/node_modules/@openrig/daemon/dist/domain/rig-mode/rig-mode-types.d.ts.map +1 -0
  312. package/{daemon/dist/domain/rig-policy/rig-policy-types.js → node_modules/@openrig/daemon/dist/domain/rig-mode/rig-mode-types.js} +1 -1
  313. package/node_modules/@openrig/daemon/dist/domain/rig-mode/rig-mode-types.js.map +1 -0
  314. package/{daemon/dist/domain/rig-policy/rig-policy-validator.d.ts → node_modules/@openrig/daemon/dist/domain/rig-mode/rig-mode-validator.d.ts} +2 -2
  315. package/node_modules/@openrig/daemon/dist/domain/rig-mode/rig-mode-validator.d.ts.map +1 -0
  316. package/node_modules/@openrig/daemon/dist/domain/{rig-policy/rig-policy-validator.js → rig-mode/rig-mode-validator.js} +3 -3
  317. package/node_modules/@openrig/daemon/dist/domain/rig-mode/rig-mode-validator.js.map +1 -0
  318. package/node_modules/@openrig/daemon/dist/domain/rigspec-schema.d.ts +7 -0
  319. package/node_modules/@openrig/daemon/dist/domain/rigspec-schema.d.ts.map +1 -1
  320. package/node_modules/@openrig/daemon/dist/domain/rigspec-schema.js +7 -0
  321. package/node_modules/@openrig/daemon/dist/domain/rigspec-schema.js.map +1 -1
  322. package/node_modules/@openrig/daemon/dist/domain/scope/node-file.d.ts +37 -0
  323. package/node_modules/@openrig/daemon/dist/domain/scope/node-file.d.ts.map +1 -0
  324. package/node_modules/@openrig/daemon/dist/domain/scope/node-file.js +55 -0
  325. package/node_modules/@openrig/daemon/dist/domain/scope/node-file.js.map +1 -0
  326. package/node_modules/@openrig/daemon/dist/domain/scope/plan-lock-artifacts.d.ts +11 -0
  327. package/node_modules/@openrig/daemon/dist/domain/scope/plan-lock-artifacts.d.ts.map +1 -1
  328. package/node_modules/@openrig/daemon/dist/domain/scope/plan-lock-artifacts.js +40 -0
  329. package/node_modules/@openrig/daemon/dist/domain/scope/plan-lock-artifacts.js.map +1 -1
  330. package/node_modules/@openrig/daemon/dist/domain/scope/scope-approve.d.ts +4 -0
  331. package/node_modules/@openrig/daemon/dist/domain/scope/scope-approve.d.ts.map +1 -1
  332. package/node_modules/@openrig/daemon/dist/domain/scope/scope-approve.js +56 -7
  333. package/node_modules/@openrig/daemon/dist/domain/scope/scope-approve.js.map +1 -1
  334. package/node_modules/@openrig/daemon/dist/domain/scope/scope-audit.d.ts +1 -1
  335. package/node_modules/@openrig/daemon/dist/domain/scope/scope-audit.d.ts.map +1 -1
  336. package/node_modules/@openrig/daemon/dist/domain/scope/scope-audit.js.map +1 -1
  337. package/node_modules/@openrig/daemon/dist/domain/scope/scope-view-projection.d.ts.map +1 -1
  338. package/node_modules/@openrig/daemon/dist/domain/scope/scope-view-projection.js +5 -2
  339. package/node_modules/@openrig/daemon/dist/domain/scope/scope-view-projection.js.map +1 -1
  340. package/node_modules/@openrig/daemon/dist/domain/seat-handover-service.d.ts +32 -15
  341. package/node_modules/@openrig/daemon/dist/domain/seat-handover-service.d.ts.map +1 -1
  342. package/node_modules/@openrig/daemon/dist/domain/seat-handover-service.js +42 -17
  343. package/node_modules/@openrig/daemon/dist/domain/seat-handover-service.js.map +1 -1
  344. package/node_modules/@openrig/daemon/dist/domain/seat-identity-reconciler.d.ts +17 -0
  345. package/node_modules/@openrig/daemon/dist/domain/seat-identity-reconciler.d.ts.map +1 -1
  346. package/node_modules/@openrig/daemon/dist/domain/seat-identity-reconciler.js +22 -0
  347. package/node_modules/@openrig/daemon/dist/domain/seat-identity-reconciler.js.map +1 -1
  348. package/node_modules/@openrig/daemon/dist/domain/session-jsonl.js +1 -1
  349. package/node_modules/@openrig/daemon/dist/domain/session-jsonl.js.map +1 -1
  350. package/node_modules/@openrig/daemon/dist/domain/slices/slice-detail-projector.d.ts.map +1 -1
  351. package/node_modules/@openrig/daemon/dist/domain/slices/slice-detail-projector.js +14 -2
  352. package/node_modules/@openrig/daemon/dist/domain/slices/slice-detail-projector.js.map +1 -1
  353. package/node_modules/@openrig/daemon/dist/domain/slices/slice-indexer.d.ts.map +1 -1
  354. package/node_modules/@openrig/daemon/dist/domain/slices/slice-indexer.js +16 -3
  355. package/node_modules/@openrig/daemon/dist/domain/slices/slice-indexer.js.map +1 -1
  356. package/node_modules/@openrig/daemon/dist/domain/spec-live-conformance.d.ts +22 -0
  357. package/node_modules/@openrig/daemon/dist/domain/spec-live-conformance.d.ts.map +1 -1
  358. package/node_modules/@openrig/daemon/dist/domain/spec-live-conformance.js +35 -0
  359. package/node_modules/@openrig/daemon/dist/domain/spec-live-conformance.js.map +1 -1
  360. package/node_modules/@openrig/daemon/dist/domain/sync-site-wrap.d.ts +9 -0
  361. package/node_modules/@openrig/daemon/dist/domain/sync-site-wrap.d.ts.map +1 -1
  362. package/node_modules/@openrig/daemon/dist/domain/sync-site-wrap.js +11 -0
  363. package/node_modules/@openrig/daemon/dist/domain/sync-site-wrap.js.map +1 -1
  364. package/node_modules/@openrig/daemon/dist/domain/types.d.ts +15 -0
  365. package/node_modules/@openrig/daemon/dist/domain/types.d.ts.map +1 -1
  366. package/node_modules/@openrig/daemon/dist/domain/types.js.map +1 -1
  367. package/node_modules/@openrig/daemon/dist/domain/user-settings/settings-store.d.ts +1 -1
  368. package/node_modules/@openrig/daemon/dist/domain/user-settings/settings-store.d.ts.map +1 -1
  369. package/node_modules/@openrig/daemon/dist/domain/user-settings/settings-store.js +20 -0
  370. package/node_modules/@openrig/daemon/dist/domain/user-settings/settings-store.js.map +1 -1
  371. package/node_modules/@openrig/daemon/dist/domain/watchdog-auto-registration.d.ts +7 -0
  372. package/node_modules/@openrig/daemon/dist/domain/watchdog-auto-registration.d.ts.map +1 -1
  373. package/node_modules/@openrig/daemon/dist/domain/watchdog-auto-registration.js +27 -0
  374. package/node_modules/@openrig/daemon/dist/domain/watchdog-auto-registration.js.map +1 -1
  375. package/node_modules/@openrig/daemon/dist/domain/workspace/workspace-doctor.d.ts.map +1 -1
  376. package/node_modules/@openrig/daemon/dist/domain/workspace/workspace-doctor.js +4 -3
  377. package/node_modules/@openrig/daemon/dist/domain/workspace/workspace-doctor.js.map +1 -1
  378. package/node_modules/@openrig/daemon/dist/routes/activity.js +11 -2
  379. package/node_modules/@openrig/daemon/dist/routes/activity.js.map +1 -1
  380. package/node_modules/@openrig/daemon/dist/routes/bundles.d.ts +27 -0
  381. package/node_modules/@openrig/daemon/dist/routes/bundles.d.ts.map +1 -1
  382. package/node_modules/@openrig/daemon/dist/routes/bundles.js +107 -26
  383. package/node_modules/@openrig/daemon/dist/routes/bundles.js.map +1 -1
  384. package/node_modules/@openrig/daemon/dist/routes/crash-cart.d.ts +4 -0
  385. package/node_modules/@openrig/daemon/dist/routes/crash-cart.d.ts.map +1 -0
  386. package/node_modules/@openrig/daemon/dist/routes/crash-cart.js +144 -0
  387. package/node_modules/@openrig/daemon/dist/routes/crash-cart.js.map +1 -0
  388. package/node_modules/@openrig/daemon/dist/routes/missions.d.ts.map +1 -1
  389. package/node_modules/@openrig/daemon/dist/routes/missions.js +10 -6
  390. package/node_modules/@openrig/daemon/dist/routes/missions.js.map +1 -1
  391. package/node_modules/@openrig/daemon/dist/routes/{rig-policy.d.ts → rig-mode.d.ts} +3 -3
  392. package/node_modules/@openrig/daemon/dist/routes/rig-mode.d.ts.map +1 -0
  393. package/{daemon/dist/routes/rig-policy.js → node_modules/@openrig/daemon/dist/routes/rig-mode.js} +13 -13
  394. package/node_modules/@openrig/daemon/dist/routes/rig-mode.js.map +1 -0
  395. package/node_modules/@openrig/daemon/dist/routes/scope-approve.d.ts.map +1 -1
  396. package/node_modules/@openrig/daemon/dist/routes/scope-approve.js +4 -0
  397. package/node_modules/@openrig/daemon/dist/routes/scope-approve.js.map +1 -1
  398. package/node_modules/@openrig/daemon/dist/routes/scope-audit.d.ts.map +1 -1
  399. package/node_modules/@openrig/daemon/dist/routes/scope-audit.js +29 -2
  400. package/node_modules/@openrig/daemon/dist/routes/scope-audit.js.map +1 -1
  401. package/node_modules/@openrig/daemon/dist/routes/seat.js +7 -2
  402. package/node_modules/@openrig/daemon/dist/routes/seat.js.map +1 -1
  403. package/node_modules/@openrig/daemon/dist/routes/sessions.d.ts.map +1 -1
  404. package/node_modules/@openrig/daemon/dist/routes/sessions.js +11 -1
  405. package/node_modules/@openrig/daemon/dist/routes/sessions.js.map +1 -1
  406. package/node_modules/@openrig/daemon/dist/server.d.ts +3 -1
  407. package/node_modules/@openrig/daemon/dist/server.d.ts.map +1 -1
  408. package/node_modules/@openrig/daemon/dist/server.js +15 -5
  409. package/node_modules/@openrig/daemon/dist/server.js.map +1 -1
  410. package/node_modules/@openrig/daemon/dist/startup.d.ts.map +1 -1
  411. package/node_modules/@openrig/daemon/dist/startup.js +134 -5
  412. package/node_modules/@openrig/daemon/dist/startup.js.map +1 -1
  413. package/node_modules/@openrig/daemon/package.json +1 -1
  414. package/package.json +1 -1
  415. package/tui/dist/crash-cart/from-emit.d.ts +9 -0
  416. package/tui/dist/crash-cart/from-emit.d.ts.map +1 -1
  417. package/tui/dist/crash-cart/from-emit.js.map +1 -1
  418. package/tui/dist/crash-cart/keys.d.ts +1 -1
  419. package/tui/dist/crash-cart/keys.d.ts.map +1 -1
  420. package/tui/dist/crash-cart/keys.js +13 -2
  421. package/tui/dist/crash-cart/keys.js.map +1 -1
  422. package/tui/dist/crash-cart/one-click-gate.d.ts +5 -0
  423. package/tui/dist/crash-cart/one-click-gate.d.ts.map +1 -1
  424. package/tui/dist/crash-cart/one-click-gate.js +8 -0
  425. package/tui/dist/crash-cart/one-click-gate.js.map +1 -1
  426. package/tui/dist/crash-cart/render-crash-cart.d.ts +11 -0
  427. package/tui/dist/crash-cart/render-crash-cart.d.ts.map +1 -1
  428. package/tui/dist/crash-cart/render-crash-cart.js +113 -0
  429. package/tui/dist/crash-cart/render-crash-cart.js.map +1 -1
  430. package/tui/dist/crash-cart/restore-input.d.ts +32 -0
  431. package/tui/dist/crash-cart/restore-input.d.ts.map +1 -0
  432. package/tui/dist/crash-cart/restore-input.js +37 -0
  433. package/tui/dist/crash-cart/restore-input.js.map +1 -0
  434. package/tui/dist/crash-cart/restore-lifecycle.d.ts +66 -0
  435. package/tui/dist/crash-cart/restore-lifecycle.d.ts.map +1 -0
  436. package/tui/dist/crash-cart/restore-lifecycle.js +96 -0
  437. package/tui/dist/crash-cart/restore-lifecycle.js.map +1 -0
  438. package/tui/dist/crash-cart/restore-scroll.d.ts +14 -0
  439. package/tui/dist/crash-cart/restore-scroll.d.ts.map +1 -0
  440. package/tui/dist/crash-cart/restore-scroll.js +27 -0
  441. package/tui/dist/crash-cart/restore-scroll.js.map +1 -0
  442. package/tui/dist/daemon-client.d.ts +38 -0
  443. package/tui/dist/daemon-client.d.ts.map +1 -1
  444. package/tui/dist/daemon-client.js +15 -0
  445. package/tui/dist/daemon-client.js.map +1 -1
  446. package/tui/dist/main.js +146 -2
  447. package/tui/dist/main.js.map +1 -1
  448. package/tui/dist/render.d.ts +10 -0
  449. package/tui/dist/render.d.ts.map +1 -1
  450. package/tui/dist/render.js +63 -10
  451. package/tui/dist/render.js.map +1 -1
  452. package/daemon/dist/domain/rig-policy/rig-policy-defaults.d.ts.map +0 -1
  453. package/daemon/dist/domain/rig-policy/rig-policy-defaults.js.map +0 -1
  454. package/daemon/dist/domain/rig-policy/rig-policy-store.d.ts.map +0 -1
  455. package/daemon/dist/domain/rig-policy/rig-policy-store.js.map +0 -1
  456. package/daemon/dist/domain/rig-policy/rig-policy-types.d.ts.map +0 -1
  457. package/daemon/dist/domain/rig-policy/rig-policy-types.js.map +0 -1
  458. package/daemon/dist/domain/rig-policy/rig-policy-validator.d.ts.map +0 -1
  459. package/daemon/dist/domain/rig-policy/rig-policy-validator.js.map +0 -1
  460. package/daemon/dist/routes/rig-policy.d.ts.map +0 -1
  461. package/daemon/dist/routes/rig-policy.js.map +0 -1
  462. package/dist/commands/rig-policy.d.ts.map +0 -1
  463. package/dist/commands/rig-policy.js.map +0 -1
  464. package/node_modules/@openrig/daemon/dist/domain/rig-policy/rig-policy-defaults.d.ts.map +0 -1
  465. package/node_modules/@openrig/daemon/dist/domain/rig-policy/rig-policy-defaults.js.map +0 -1
  466. package/node_modules/@openrig/daemon/dist/domain/rig-policy/rig-policy-store.d.ts.map +0 -1
  467. package/node_modules/@openrig/daemon/dist/domain/rig-policy/rig-policy-store.js.map +0 -1
  468. package/node_modules/@openrig/daemon/dist/domain/rig-policy/rig-policy-types.d.ts.map +0 -1
  469. package/node_modules/@openrig/daemon/dist/domain/rig-policy/rig-policy-types.js.map +0 -1
  470. package/node_modules/@openrig/daemon/dist/domain/rig-policy/rig-policy-validator.d.ts.map +0 -1
  471. package/node_modules/@openrig/daemon/dist/domain/rig-policy/rig-policy-validator.js.map +0 -1
  472. package/node_modules/@openrig/daemon/dist/routes/rig-policy.d.ts.map +0 -1
  473. package/node_modules/@openrig/daemon/dist/routes/rig-policy.js.map +0 -1
package/tui/dist/main.js CHANGED
@@ -21,6 +21,9 @@ import { createLiveRefresh } from "./live.js";
21
21
  import { execFile } from "node:child_process";
22
22
  import { probeCrashCart } from "./crash-cart/from-emit.js";
23
23
  import { resolveCrashCartKey } from "./crash-cart/keys.js";
24
+ import { driveRestoreLifecycle, buildRestoreLifecycleVM } from "./crash-cart/restore-lifecycle.js";
25
+ import { restoreKeyAction } from "./crash-cart/restore-input.js";
26
+ import { evaluateOneClickGate, restoreConfirmMessage } from "./crash-cart/one-click-gate.js";
24
27
  const REFRESH_MS = 5000;
25
28
  function argOf(args, flag) {
26
29
  const i = args.indexOf(flag);
@@ -41,6 +44,15 @@ async function run() {
41
44
  // 5.2 crash-cart: the daemon-down verdict (probed from the `rig crash-cart --json` verb). Empty ⇒
42
45
  // normal fleet views; DOWN ⇒ the recovery cockpit; UNVERIFIED ⇒ the cannot-verify screen.
43
46
  let crashCartOpts = {};
47
+ // H2 — a non-zero-generation ⏎ arms a confirm: the NEXT ⏎ proceeds, Esc cancels. Never a silent
48
+ // resume→fresh downgrade — the confirm NAMES the seats that will need a decision.
49
+ let pendingRestoreConfirm = false;
50
+ // B1 ROUND 2 — the operator's mid-run cancel request for the active fleet restore (the lifecycle
51
+ // driver polls this and reaches the cancel endpoint stop-before-next-rig).
52
+ let restoreCancelRequested = false;
53
+ // B1 ROUND 3 (HIGH-2) — vertical scroll offset into the restore triage list, so a fleet with more
54
+ // needs than the viewport stays keyboard-walkable (arrow/j-k on the done view).
55
+ let restoreScrollOffset = 0;
44
56
  const inputDecoder = createInputDecoder();
45
57
  const style = createStyle(args.includes("--no-color") ? "none" : detectColorMode());
46
58
  // S19 round-5 (guard): the refresh OWNER (live.ts) carries the honest load
@@ -58,7 +70,7 @@ async function run() {
58
70
  const nowMs = Date.now();
59
71
  if (live)
60
72
  snapshot = live.snapshot();
61
- const opts = { cols, rows, nowMs, colorMode: style.mode, commandContext: currentCommandContext(crashCartOpts.daemonState ?? null), ...crashCartOpts, ...(live ? { load: live.load(), rowFlashes: live.flashes() } : {}) };
73
+ const opts = { cols, rows, nowMs, colorMode: style.mode, commandContext: currentCommandContext(crashCartOpts.daemonState ?? null), ...crashCartOpts, restoreScroll: restoreScrollOffset, ...(live ? { load: live.load(), rowFlashes: live.flashes() } : {}) };
62
74
  lastScreen = renderScreen(view.get(), snapshot, opts, inputLine);
63
75
  if (view.get().contentMaxOffset !== lastScreen.contentMaxOffset || view.get().contentTargetCount !== lastScreen.contentTargets.length) {
64
76
  view.dispatch({ type: "layout", contentMaxOffset: lastScreen.contentMaxOffset, contentTargetCount: lastScreen.contentTargets.length });
@@ -88,11 +100,86 @@ async function run() {
88
100
  // Perform a cockpit action key. start-daemon/restore exec `rig daemon start` (the ⏎ flow's `s` step;
89
101
  // the C1 batch conductor that RESTORE ultimately drives is EXCLUDED this wave) then re-probe; retry
90
102
  // re-probes (UNVERIFIED). inspect/onboarding are entry-point seams this wave.
103
+ // ⏎ RESTORE EVERYTHING: start the daemon (the `s` step), then the TUI OWNS the restore lifecycle
104
+ // against it — kick/poll/cancel via the daemon client, retaining the attempt id (r2: no more blind
105
+ // delegation to a buffered child). Each poll updates the restore render (progress from the rollup
106
+ // stream); on done the rollup + keyboard-walkable triage list render; 'c' cancels mid-run.
107
+ // Poll one restore attempt to done/detached, rendering a frame per poll. Shared by the initial ⏎
108
+ // restore and by reattach (attemptId set) from the detached view. The driver TOLERATES transient poll
109
+ // errors internally (it detaches after a sustained streak, never throws on a blip), so this .catch
110
+ // fires ONLY on a genuine kick/start-side failure — never on a single blipped poll (r1 refinement 2).
111
+ function pollRestore(daemonClient, attemptId) {
112
+ void driveRestoreLifecycle({
113
+ client: daemonClient,
114
+ attemptId,
115
+ onFrame: (frame) => {
116
+ // render progress from the poll stream — a mid-run frame every poll, not only at completion
117
+ crashCartOpts = { ...crashCartOpts, restore: buildRestoreLifecycleVM(frame) };
118
+ draw();
119
+ },
120
+ isCancelRequested: () => restoreCancelRequested,
121
+ }).catch((e) => {
122
+ crashCartOpts = { ...crashCartOpts, restore: undefined };
123
+ view.dispatch({ type: "notice", message: `fleet restore failed: ${e instanceof Error ? e.message : String(e)}` });
124
+ void refreshCrashCart();
125
+ });
126
+ }
127
+ function runFleetRestore() {
128
+ if (!client) {
129
+ view.dispatch({ type: "notice", message: "demo mode: restore disabled" });
130
+ draw();
131
+ return;
132
+ }
133
+ const daemonClient = client;
134
+ restoreCancelRequested = false;
135
+ restoreScrollOffset = 0;
136
+ new Promise((resolve, reject) => execFile("rig", ["daemon", "start"], { timeout: 30_000 }, (err) => (err ? reject(err) : resolve())))
137
+ .then(() => pollRestore(daemonClient))
138
+ .catch((e) => {
139
+ crashCartOpts = { ...crashCartOpts, restore: undefined };
140
+ view.dispatch({ type: "notice", message: `fleet restore failed: ${e instanceof Error ? e.message : String(e)}` });
141
+ void refreshCrashCart();
142
+ });
143
+ }
144
+ // Detached view `r`/`c`: resume the live view against the STILL-RUNNING attempt. `c` sets the cancel
145
+ // flag first so the resumed driver POSTs cancel and the operator SEES it take effect (observable
146
+ // confirmation, not a silent successful POST — r1 question 1). Reattach never resets the cancel flag.
147
+ function reattachRestore(attemptId) {
148
+ if (!client)
149
+ return;
150
+ pollRestore(client, attemptId);
151
+ }
91
152
  function performCrashCart(action) {
92
- if (action === "start-daemon" || action === "restore") {
153
+ if (action === "start-daemon") {
93
154
  execFile("rig", ["daemon", "start"], { timeout: 30_000 }, () => void refreshCrashCart());
94
155
  return;
95
156
  }
157
+ if (action === "restore") {
158
+ // zero-generation one-click (the gate cleared it) — restore directly.
159
+ runFleetRestore();
160
+ return;
161
+ }
162
+ if (action === "restore-confirm") {
163
+ // H2 — some rig has non-resumable seats: NAME the deltas and arm a confirm (the next ⏎
164
+ // proceeds and fresh-primes them; Esc cancels). Never a silent resume→fresh downgrade.
165
+ const gate = evaluateOneClickGate({
166
+ foundOnHost: (crashCartOpts.crashCart?.foundOnHost ?? []).map((r) => ({
167
+ rigName: r.name,
168
+ seatCount: r.seatCount,
169
+ resumableCount: r.resumableCount,
170
+ })),
171
+ });
172
+ pendingRestoreConfirm = true;
173
+ // Truthful (r2 HIGH-2): describe the awaiting-decision the restore actually produces — never a
174
+ // fresh-prime the parameterless restore does not request. ROUND 10: render it IN the cockpit
175
+ // (crashCartOpts.confirm) — ViewState.notice is not shown in the daemon-down cockpit, so the
176
+ // first ⏎ used to appear to do nothing. The notice is kept as a belt for non-cockpit contexts.
177
+ const confirmMsg = restoreConfirmMessage(gate.deltas);
178
+ crashCartOpts = { ...crashCartOpts, confirm: confirmMsg };
179
+ view.dispatch({ type: "notice", message: confirmMsg });
180
+ draw();
181
+ return;
182
+ }
96
183
  if (action === "retry")
97
184
  void refreshCrashCart();
98
185
  // inspect / onboarding: entry-point seams (no cockpit notice channel this wave).
@@ -185,6 +272,50 @@ async function run() {
185
272
  }
186
273
  continue;
187
274
  }
275
+ // An ACTIVE fleet restore owns its keys (takes precedence over cockpit/command-bar). The key→action
276
+ // decision is the PURE restoreKeyAction reducer (r1: every affordance the screen advertises must
277
+ // act in that state); main.ts here is only the executor. Scroll works in EVERY phase, so the
278
+ // "↑↓ scroll" the footer advertises when overflowing is real — and the lifecycle action row below
279
+ // the fold on a large fleet is reachable.
280
+ if (crashCartOpts.restore) {
281
+ const rvm = crashCartOpts.restore;
282
+ const action = restoreKeyAction(ev, {
283
+ phase: rvm.phase,
284
+ cancelled: rvm.cancelled,
285
+ offset: restoreScrollOffset,
286
+ maxOffset: lastScreen?.contentMaxOffset ?? 0,
287
+ });
288
+ switch (action.kind) {
289
+ case "quit":
290
+ void shutdown();
291
+ return;
292
+ case "scroll":
293
+ restoreScrollOffset = action.offset;
294
+ draw();
295
+ continue;
296
+ case "cancel":
297
+ restoreCancelRequested = true;
298
+ view.dispatch({ type: "notice", message: "cancelling after the current rig…" });
299
+ draw();
300
+ continue;
301
+ case "reattach":
302
+ reattachRestore(rvm.attemptId);
303
+ continue;
304
+ case "cancel-reattach":
305
+ restoreCancelRequested = true;
306
+ // r1 LOW: "requested", not "sent" — no POST has happened yet (the reattached driver POSTs,
307
+ // and in the unreachable-daemon case that caused the detach it may not land).
308
+ view.dispatch({ type: "notice", message: "cancel requested — reattaching to confirm…" });
309
+ reattachRestore(rvm.attemptId);
310
+ continue;
311
+ case "dismiss":
312
+ crashCartOpts = { ...crashCartOpts, restore: undefined };
313
+ void refreshCrashCart();
314
+ continue;
315
+ case "none":
316
+ continue; // swallowed while the fleet restores
317
+ }
318
+ }
188
319
  if (ev.type === "char") {
189
320
  // SCOPES accelerators: m/n ride the REGISTERED commands (one path).
190
321
  if (inputLine === "" && view.get().section === "scopes" && view.get().scopesSelected) {
@@ -225,6 +356,13 @@ async function run() {
225
356
  inputLine = inputLine.slice(0, -1);
226
357
  }
227
358
  else if (ev.type === "key" && ev.key === "escape") {
359
+ if (pendingRestoreConfirm) {
360
+ // H2 — cancel the armed restore confirm (no fresh-prime happens). Clear the cockpit banner.
361
+ pendingRestoreConfirm = false;
362
+ crashCartOpts = { ...crashCartOpts, confirm: undefined };
363
+ view.dispatch({ type: "notice", message: "restore cancelled" });
364
+ draw();
365
+ }
228
366
  inputLine = "";
229
367
  }
230
368
  else if (ev.type === "key" && ev.key === "enter") {
@@ -232,6 +370,12 @@ async function run() {
232
370
  perform(parseCommand(inputLine, view.get().sections));
233
371
  inputLine = "";
234
372
  }
373
+ else if (pendingRestoreConfirm) {
374
+ // H2 — the operator confirmed the non-zero-generation restore: proceed. Clear the cockpit banner.
375
+ pendingRestoreConfirm = false;
376
+ crashCartOpts = { ...crashCartOpts, confirm: undefined };
377
+ runFleetRestore();
378
+ }
235
379
  else if (crashCartOpts.daemonState) {
236
380
  // 5.2 crash-cart: ⏎ is the cockpit primary action (RESTORE EVERYTHING) when daemon-down.
237
381
  const cca = resolveCrashCartKey("enter", crashCartOpts);
@@ -1 +1 @@
1
- {"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":";AACA,yEAAyE;AACzE,8EAA8E;AAC9E,8EAA8E;AAC9E,uCAAuC;AACvC,EAAE;AACF,8EAA8E;AAC9E,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AACjF,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC1E,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AACjF,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC9H,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC5E,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAA4B,MAAM,2BAA2B,CAAC;AACrF,OAAO,EAAE,mBAAmB,EAA2B,MAAM,sBAAsB,CAAC;AAIpF,MAAM,UAAU,GAAG,IAAI,CAAC;AAExB,SAAS,KAAK,CAAC,IAAc,EAAE,IAAY;IACzC,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC1C,CAAC;AAED,KAAK,UAAU,GAAG;IAChB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACnC,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE,YAAY,CAAC,IAAI,OAAO,CAAC;IACxD,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAErC,2EAA2E;IAC3E,4EAA4E;IAC5E,qEAAqE;IACrE,IAAI,QAAQ,GAAkB,IAAI,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;IACtE,MAAM,IAAI,GAAG,eAAe,CAAC,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC1E,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,YAAY,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;IAEjF,IAAI,SAAS,GAAG,EAAE,CAAC;IACnB,IAAI,UAAU,GAAkB,IAAI,CAAC;IACrC,kGAAkG;IAClG,0FAA0F;IAC1F,IAAI,aAAa,GAAwB,EAAE,CAAC;IAC5C,MAAM,YAAY,GAAG,kBAAkB,EAAE,CAAC;IAC1C,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC;IAEpF,2EAA2E;IAC3E,0EAA0E;IAC1E,sEAAsE;IACtE,yEAAyE;IACzE,MAAM,WAAW,GAAoB,IAAI,GAAG,EAAE,CAAC;IAC/C,MAAM,IAAI,GAAG,MAAM;QACjB,CAAC,CAAC,iBAAiB,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,eAAe,CAAC,MAAM,EAAE,WAAW,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;QAC1H,CAAC,CAAC,IAAI,CAAC;IACT,IAAI,WAAW,GAA0B,IAAI,CAAC;IAE9C,SAAS,IAAI;QACX,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,IAAI,GAAG,CAAC;QAC3C,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QACvC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACzB,IAAI,IAAI;YAAE,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QACrC,MAAM,IAAI,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,CAAC,IAAI,EAAE,cAAc,EAAE,qBAAqB,CAAC,aAAa,CAAC,WAAW,IAAI,IAAI,CAAC,EAAE,GAAG,aAAa,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QAC1N,UAAU,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;QACjE,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,gBAAgB,KAAK,UAAU,CAAC,gBAAgB,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,kBAAkB,KAAK,UAAU,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC;YACtI,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,gBAAgB,EAAE,UAAU,CAAC,gBAAgB,EAAE,kBAAkB,EAAE,UAAU,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,CAAC;YACvI,UAAU,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;QACnE,CAAC;QACD,sEAAsE;QACtE,oDAAoD;QACpD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,GAAG,YAAY,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QACxG,IAAI,WAAW;YAAE,YAAY,CAAC,WAAW,CAAC,CAAC;QAC3C,WAAW,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACvE,CAAC;IAED,kGAAkG;IAClG,0GAA0G;IAC1G,MAAM,gBAAgB,GAAG,GAAoB,EAAE,CAC7C,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC9B,QAAQ,CAAC,KAAK,EAAE,CAAC,YAAY,EAAE,QAAQ,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,EAAE,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;YACxG,IAAI,MAAM,IAAI,MAAM,CAAC,IAAI,EAAE;gBAAE,OAAO,CAAC,MAAM,CAAC,CAAC;;gBACxC,MAAM,CAAC,GAAG,IAAI,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC,CAAC;QACzD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IACL,KAAK,UAAU,gBAAgB;QAC7B,aAAa,GAAG,MAAM,cAAc,CAAC,gBAAgB,CAAC,CAAC;QACvD,IAAI,EAAE,CAAC;IACT,CAAC;IACD,qGAAqG;IACrG,oGAAoG;IACpG,8EAA8E;IAC9E,SAAS,gBAAgB,CAAC,MAA0B;QAClD,IAAI,MAAM,KAAK,cAAc,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACtD,QAAQ,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,CAAC,KAAK,gBAAgB,EAAE,CAAC,CAAC;YACzF,OAAO;QACT,CAAC;QACD,IAAI,MAAM,KAAK,OAAO;YAAE,KAAK,gBAAgB,EAAE,CAAC;QAChD,iFAAiF;IACnF,CAAC;IAED,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,iBAAiB,CAAC,UAAU,CAAC,CAAC;IAC5E,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,cAAc,EAAE,GAAG,EAAE,CAAC,qBAAqB,CAAC,aAAa,CAAC,WAAW,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC;IAEjK,IAAI,YAAY,GAA0B,IAAI,CAAC;IAE/C,6EAA6E;IAC7E,uEAAuE;IACvE,KAAK,UAAU,UAAU,CAAC,MAAwC;QAChE,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,6BAA6B,EAAE,CAAC,CAAC;YAC1E,IAAI,EAAE,CAAC;YACP,OAAO;QACT,CAAC;QACD,IAAI,CAAC;YACH,IAAI,MAAM,CAAC,GAAG,KAAK,eAAe,EAAE,CAAC;gBACnC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBACtD,IAAI,CAAC,QAAQ,CAAC;oBACZ,IAAI,EAAE,QAAQ;oBACd,OAAO,EAAE,oBAAoB,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,MAAM,CAAC,MAAM,YAAY,MAAM,CAAC,MAAM,CAAC,MAAM,YAAY,MAAM,CAAC,QAAQ,CAAC,MAAM,YAAY;iBAChJ,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;gBACnE,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,gBAAgB,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;YACrF,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC/F,CAAC;QACD,IAAI,EAAE,CAAC;IACT,CAAC;IAED,SAAS,OAAO,CAAC,MAAc;QAC7B,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;YAC1B,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC;YAC7D,KAAK,UAAU,CAAC,MAAM,CAAC,CAAC;YACxB,OAAO;QACT,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACxB,CAAC;IAED,KAAK,UAAU,QAAQ;QACrB,IAAI,YAAY;YAAE,aAAa,CAAC,YAAY,CAAC,CAAC;QAC9C,IAAI,WAAW;YAAE,YAAY,CAAC,WAAW,CAAC,CAAC;QAC3C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,GAAG,cAAc,CAAC,CAAC;QACrD,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;QACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,KAAK,QAAQ,EAAE,CAAC,CAAC;IAC5C,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,KAAK,QAAQ,EAAE,CAAC,CAAC;IAE7C,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK;QAAE,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACxD,SAAS,WAAW,CAAC,MAA6C;QAChE,KAAK,MAAM,EAAE,IAAI,MAAM,EAAE,CAAC;YACxB,mFAAmF;YACnF,mFAAmF;YACnF,mFAAmF;YACnF,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC;YAC/B,IAAI,GAAG,EAAE,CAAC;gBACR,IAAI,EAAE,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;oBACvB,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;oBACnE,SAAS;gBACX,CAAC;gBACD,IAAI,EAAE,CAAC,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC,GAAG,KAAK,WAAW,EAAE,CAAC;oBAChD,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;oBACxE,SAAS;gBACX,CAAC;gBACD,IAAI,EAAE,CAAC,IAAI,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,GAAG,KAAK,IAAI,IAAI,EAAE,CAAC,GAAG,KAAK,MAAM,CAAC,EAAE,CAAC;oBAChE,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;oBAC3E,SAAS;gBACX,CAAC;gBACD,IAAI,EAAE,CAAC,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;oBAC7C,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC,CAAC;oBACzC,SAAS;gBACX,CAAC;gBACD,IAAI,EAAE,CAAC,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC,GAAG,KAAK,OAAO,EAAE,CAAC;oBAC5C,MAAM,IAAI,GAAG,aAAa,CAAC,GAAG,CAAC,KAAK,EAAE,gBAAgB,EAAE,qBAAqB,CAAC,aAAa,CAAC,WAAW,IAAI,IAAI,CAAC,CAAC,CAAC;oBAClH,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;oBACxE,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC,CAAC;oBACzC,IAAI,GAAG,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;wBACzB,MAAM,IAAI,GAAG,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;wBAC3C,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS;4BAAE,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;;4BAC9E,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC;oBAC7B,CAAC;oBACD,SAAS;gBACX,CAAC;gBACD,SAAS;YACX,CAAC;YACD,IAAI,EAAE,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBACvB,oEAAoE;gBACpE,IAAI,SAAS,KAAK,EAAE,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,KAAK,QAAQ,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,cAAc,EAAE,CAAC;oBACrF,IAAI,EAAE,CAAC,EAAE,KAAK,GAAG,EAAE,CAAC;wBAAC,OAAO,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;wBAAC,SAAS;oBAAC,CAAC;oBACpF,IAAI,EAAE,CAAC,EAAE,KAAK,GAAG,EAAE,CAAC;wBAAC,OAAO,CAAC,YAAY,CAAC,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;wBAAC,SAAS;oBAAC,CAAC;gBAC3F,CAAC;gBACD,IAAI,EAAE,CAAC,EAAE,KAAK,GAAG,IAAI,SAAS,KAAK,EAAE,EAAE,CAAC;oBACtC,yEAAyE;oBACzE,OAAO,CAAC,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;oBAChD,SAAS;gBACX,CAAC;gBACD,IAAI,EAAE,CAAC,EAAE,KAAK,GAAG,IAAI,SAAS,KAAK,EAAE,EAAE,CAAC;oBACtC,KAAK,QAAQ,EAAE,CAAC;oBAChB,OAAO;gBACT,CAAC;gBACD,IAAI,EAAE,CAAC,EAAE,KAAK,GAAG,IAAI,SAAS,KAAK,EAAE,EAAE,CAAC;oBACtC,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;oBAClC,SAAS;gBACX,CAAC;gBACD,wFAAwF;gBACxF,oCAAoC;gBACpC,IAAI,aAAa,CAAC,WAAW,IAAI,SAAS,KAAK,EAAE,EAAE,CAAC;oBAClD,MAAM,GAAG,GAAG,mBAAmB,CAAC,EAAE,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC;oBACtD,IAAI,GAAG,EAAE,CAAC;wBACR,gBAAgB,CAAC,GAAG,CAAC,CAAC;wBACtB,SAAS;oBACX,CAAC;gBACH,CAAC;gBACD,SAAS,IAAI,EAAE,CAAC,EAAE,CAAC;YACrB,CAAC;iBAAM,IAAI,EAAE,CAAC,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC,GAAG,KAAK,WAAW,EAAE,CAAC;gBACvD,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACrC,CAAC;iBAAM,IAAI,EAAE,CAAC,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;gBACpD,SAAS,GAAG,EAAE,CAAC;YACjB,CAAC;iBAAM,IAAI,EAAE,CAAC,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC,GAAG,KAAK,OAAO,EAAE,CAAC;gBACnD,IAAI,SAAS,KAAK,EAAE,EAAE,CAAC;oBACrB,OAAO,CAAC,YAAY,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;oBACtD,SAAS,GAAG,EAAE,CAAC;gBACjB,CAAC;qBAAM,IAAI,aAAa,CAAC,WAAW,EAAE,CAAC;oBACrC,yFAAyF;oBACzF,MAAM,GAAG,GAAG,mBAAmB,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;oBACxD,IAAI,GAAG;wBAAE,gBAAgB,CAAC,GAAG,CAAC,CAAC;gBACjC,CAAC;qBAAM,CAAC;oBACN,IAAI,UAAU,EAAE,CAAC;wBACf,MAAM,MAAM,GAAG,gBAAgB,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,UAAU,EAAE,mBAAmB,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC;wBAC9G,IAAI,MAAM;4BAAE,OAAO,CAAC,MAAM,CAAC,CAAC;oBAC9B,CAAC;gBACH,CAAC;YACH,CAAC;iBAAM,IAAI,EAAE,CAAC,IAAI,KAAK,KAAK,IAAI,QAAQ,IAAI,EAAE,EAAE,CAAC;gBAC/C,IAAI,UAAU,EAAE,CAAC;oBACf,MAAM,MAAM,GAAG,gBAAgB,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,UAAU,EAAE,mBAAmB,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC;oBAC9G,IAAI,MAAM;wBAAE,OAAO,CAAC,MAAM,CAAC,CAAC;gBAC9B,CAAC;YACH,CAAC;iBAAM,IAAI,EAAE,CAAC,IAAI,KAAK,OAAO,IAAI,UAAU,EAAE,CAAC;gBAC7C,MAAM,GAAG,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;gBACxF,IAAI,GAAG;oBAAE,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC;QACD,IAAI,EAAE,CAAC;IACT,CAAC;IAED,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;QACzC,WAAW,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IACH,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;QAC3B,WAAW,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,GAAG,YAAY,CAAC,CAAC;IACnD,uEAAuE;IACvE,0EAA0E;IAC1E,mEAAmE;IACnE,IAAI,EAAE,CAAC;IACP,qGAAqG;IACrG,0FAA0F;IAC1F,KAAK,gBAAgB,EAAE,CAAC;IACxB,IAAI,IAAI,EAAE,CAAC;QACT,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC;QACpB,YAAY,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,KAAK,IAAI,CAAC,OAAO,EAAE,EAAE,UAAU,CAAC,CAAC;IACpE,CAAC;AACH,CAAC;AAED,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;IAC3B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,GAAG,cAAc,CAAC,CAAC;IACrD,OAAO,CAAC,KAAK,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACxD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import type { RestoreLifecycleVM } from "./crash-cart/restore-lifecycle.js";
1
2
  import type { CrashCartModel } from "./crash-cart/crash-cart-model.js";
2
3
  import type { DaemonState, DaemonUnverifiedEvidence } from "./crash-cart/contract.js";
3
4
  import type { ColorMode } from "./theme.js";
@@ -27,6 +28,15 @@ export interface RenderOptions {
27
28
  crashCart?: CrashCartModel;
28
29
  /** evidence for the UNVERIFIED screen — rendered when daemonState === "unverified". */
29
30
  daemonEvidence?: DaemonUnverifiedEvidence;
31
+ /** B1 ROUND 2 — the live fleet-restore lifecycle; when present it renders (progress → rollup+triage)
32
+ * and takes precedence over the cockpit, so restore progress and the triage list are visible. */
33
+ restore?: RestoreLifecycleVM;
34
+ /** B1 ROUND 3 (HIGH-2) — vertical scroll offset into the restore content, so a triage list longer
35
+ * than the viewport stays keyboard-walkable (the shell reports contentMaxOffset for clamping). */
36
+ restoreScroll?: number;
37
+ /** B1 ROUND 10 — the ⏎ confirm banner text (non-zero-generation restore). Rendered IN the cockpit so
38
+ * the confirm is visible where the operator looks (ViewState.notice is not shown in the cockpit). */
39
+ confirm?: string;
30
40
  }
31
41
  export declare function renderScreen(state: ViewState, snap: FleetSnapshot, options?: RenderOptions, inputLine?: string): Screen;
32
42
  //# sourceMappingURL=render.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,KAAK,EAAE,WAAW,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAGtF,OAAO,KAAK,EAAE,SAAS,EAAS,MAAM,YAAY,CAAC;AAEnD,OAAO,KAAK,EAAU,aAAa,EAAE,SAAS,EAAa,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AA8oB3G,MAAM,WAAW,aAAa;IAC5B,gFAAgF;IAChF,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,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,gEAAgE;IAChE,SAAS,CAAC,EAAE,cAAc,CAAC;IAC3B,uFAAuF;IACvF,cAAc,CAAC,EAAE,wBAAwB,CAAC;CAC3C;AA6RD,wBAAgB,YAAY,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,GAAE,aAAkB,EAAE,SAAS,SAAK,GAAG,MAAM,CAoLvH"}
1
+ {"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"AAeA,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;AAGtF,OAAO,KAAK,EAAE,SAAS,EAAS,MAAM,YAAY,CAAC;AAEnD,OAAO,KAAK,EAAU,aAAa,EAAE,SAAS,EAAa,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AA8oB3G,MAAM,WAAW,aAAa;IAC5B,gFAAgF;IAChF,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,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,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;AAsUD,wBAAgB,YAAY,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,GAAE,aAAkB,EAAE,SAAS,SAAK,GAAG,MAAM,CAqMvH"}
@@ -12,7 +12,7 @@ import { navigatorDisplay } from "./navigator.js";
12
12
  import { renderGraphStyle } from "./topology/render-graph.js";
13
13
  import { buildPulseModel } from "./pulse/pulse-model.js";
14
14
  import { renderPulseView, pulseLaneTargets } from "./pulse/render-pulse.js";
15
- import { renderCrashCartView, renderUnverifiedView } from "./crash-cart/render-crash-cart.js";
15
+ import { renderCrashCartView, renderUnverifiedView, renderRestoreLifecycleView, renderConfirmBanner } from "./crash-cart/render-crash-cart.js";
16
16
  import { buildLedgerExplorer } from "./crash-cart/ledger-explorer.js";
17
17
  import { runtimeMarkSegs } from "./topology/runtime-marks.js";
18
18
  import { barCells, flashActive, reducedMotion, spinnerFrame } from "./motion.js";
@@ -861,11 +861,39 @@ function renderPulseScreen(state, snap, options, inputLine) {
861
861
  motionActive: (!reduced && loading) || anyFlash || flashRows.length > 0 || flashAck,
862
862
  };
863
863
  }
864
- // Crash-cart shell (ruling 3c6c2be0): the daemon-down cockpit as a content-pane view inside the
865
- // standard explorer│content shell the LEDGER-FED explorer on the left (honestly marked), the
866
- // approved content on the right. Mirrors renderPulseScreen's split; content segs paint via the normal
867
- // split-pane path (stylize │ branch), so no full-width bypass. All rails live in the content builders.
868
- function crashCartShell(content, led, contentTitle, cols, rows, inputLine) {
864
+ /** Word-wrap long content lines to the pane width with a hanging indent, so nothing is silently
865
+ * clipped off the right edge. Used ONLY where the content is short enough to afford the extra rows
866
+ * (the restore lifecycle view) — the fixed-height cockpit still clips to preserve its row layout. */
867
+ function wrapContentLines(content, width) {
868
+ if (width <= 0)
869
+ return content;
870
+ const out = [];
871
+ const indent = " ";
872
+ for (const item of content) {
873
+ const text = item.text ?? "";
874
+ if (text.length <= width) {
875
+ out.push(item);
876
+ continue;
877
+ }
878
+ let rest = text;
879
+ let first = true;
880
+ while (rest.length > 0) {
881
+ const w = first ? width : Math.max(1, width - indent.length);
882
+ let cut = rest.length <= w ? rest.length : w;
883
+ if (cut < rest.length) {
884
+ const sp = rest.lastIndexOf(" ", cut);
885
+ if (sp > 0 && sp >= Math.floor(w * 0.5))
886
+ cut = sp; // break on a word boundary when reasonable
887
+ }
888
+ const chunk = rest.slice(0, cut).trimEnd();
889
+ rest = rest.slice(cut).replace(/^\s+/, "");
890
+ out.push(first ? { text: chunk, segs: item.segs } : { text: indent + chunk });
891
+ first = false;
892
+ }
893
+ }
894
+ return out;
895
+ }
896
+ function crashCartShell(content, led, contentTitle, cols, rows, inputLine, opts) {
869
897
  const lines = [];
870
898
  const segRows = {};
871
899
  lines.push(pad(`cmd ▸ ${inputLine}▊`, cols));
@@ -873,11 +901,18 @@ function crashCartShell(content, led, contentTitle, cols, rows, inputLine) {
873
901
  // The ledger-fed explorer column: the honest marker, then one row per rig (name + seat count).
874
902
  const leftRows = [led.note, "", ...led.rows.map((r) => `${r.label} (${r.seatCount})`)];
875
903
  const contentWidth = Math.max(cols - EXPL_W - 2, 0);
904
+ if (opts?.wrap)
905
+ content = wrapContentLines(content, contentWidth);
876
906
  const bodyRows = Math.max(rows - 2 - 3, 1); // minus cmd bar + top rule + (bottom rule, hints, status)
907
+ // HIGH-2 — when content exceeds the viewport, it is VERTICALLY SCROLLABLE: contentMaxOffset is the
908
+ // furthest row the operator can scroll to, and the rendered window starts at the clamped scroll offset.
909
+ // A list that fits (offset 0, maxOffset 0) is unchanged. Only the content pane scrolls; the explorer stays.
910
+ const contentMaxOffset = Math.max(0, content.length - bodyRows);
911
+ const scroll = Math.max(0, Math.min(contentMaxOffset, opts?.scroll ?? 0));
877
912
  for (let i = 0; i < bodyRows; i++) {
878
913
  const y = lines.length + 1;
879
914
  const left = pad(leftRows[i] ?? "", EXPL_W);
880
- const citem = content[i];
915
+ const citem = content[scroll + i];
881
916
  const contentText = (citem?.text ?? "").slice(0, contentWidth);
882
917
  lines.push(pad(`${left}│ ${contentText}`, cols));
883
918
  if (citem?.segs)
@@ -885,14 +920,15 @@ function crashCartShell(content, led, contentTitle, cols, rows, inputLine) {
885
920
  }
886
921
  lines.push(paneRule(cols, "┴"));
887
922
  lines.push(pad("", cols));
888
- lines.push(pad(`[crash-cart] daemon down · explorer ${led.note}`, cols));
923
+ const scrollHint = contentMaxOffset > 0 ? ` · ↑↓ scroll (${scroll}/${contentMaxOffset})` : "";
924
+ lines.push(pad(`[crash-cart] daemon down · explorer ${led.note}${scrollHint}`, cols));
889
925
  while (lines.length < rows)
890
926
  lines.push("");
891
927
  return {
892
928
  lines: lines.slice(0, rows),
893
929
  hitMap: [],
894
930
  contentTargets: [],
895
- contentMaxOffset: 0,
931
+ contentMaxOffset,
896
932
  explorerRows: [],
897
933
  segRows,
898
934
  };
@@ -903,9 +939,26 @@ export function renderScreen(state, snap, options = {}, inputLine = "") {
903
939
  // view inside the standard shell — the explorer sidebar is ALWAYS present, ledger-fed + honestly
904
940
  // marked (from the SAME one-JSON discovery, never a second read). Content moves into the right pane
905
941
  // verbatim; all rails stand. DOWN → cockpit; UNVERIFIED → cannot-verify (no restore).
942
+ // B1 ROUND 2 — an ACTIVE fleet restore takes precedence over the cockpit: the operator sees live
943
+ // progress (from the poll stream) and, on done, the rollup + keyboard-walkable triage list.
944
+ if (options.restore) {
945
+ const led = buildLedgerExplorer(options.crashCart?.foundOnHost ?? []);
946
+ // wrap: the triage needs are full sentences — wrap them to the pane so the EXACT need is never
947
+ // clipped off the edge. scroll: a triage list longer than the viewport is vertically scrollable so
948
+ // the final row's exact need is reachable (HIGH-2 — keyboard-walkable, not viewport-truncated).
949
+ return crashCartShell(renderRestoreLifecycleView(options.restore), led, "RESTORE", cols, rows, inputLine, {
950
+ wrap: true,
951
+ scroll: options.restoreScroll ?? 0,
952
+ });
953
+ }
906
954
  if (options.daemonState === "down" && options.crashCart) {
907
955
  const led = buildLedgerExplorer(options.crashCart.foundOnHost);
908
- return crashCartShell(renderCrashCartView(options.crashCart), led, "CRASH-CART", cols, rows, inputLine);
956
+ // B1 ROUND 10 when a confirm is armed, render it at the TOP of the cockpit (where the operator
957
+ // looks) so the first ⏎ is visibly acknowledged; wrap so the sentence is not clipped at the pane edge.
958
+ const content = options.confirm
959
+ ? [...renderConfirmBanner(options.confirm), ...renderCrashCartView(options.crashCart)]
960
+ : renderCrashCartView(options.crashCart);
961
+ return crashCartShell(content, led, "CRASH-CART", cols, rows, inputLine, options.confirm ? { wrap: true } : undefined);
909
962
  }
910
963
  if (options.daemonState === "unverified" && options.daemonEvidence) {
911
964
  const led = buildLedgerExplorer([]); // no rigs listed when we cannot verify — honest empty ledger