@openrig/cli 0.1.11 → 0.2.0

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 (543) hide show
  1. package/daemon/assets/openrig-activity-hook-relay.cjs +104 -0
  2. package/daemon/dist/adapters/claude-code-adapter.d.ts +14 -6
  3. package/daemon/dist/adapters/claude-code-adapter.d.ts.map +1 -1
  4. package/daemon/dist/adapters/claude-code-adapter.js +192 -60
  5. package/daemon/dist/adapters/claude-code-adapter.js.map +1 -1
  6. package/daemon/dist/adapters/claude-resume.d.ts +5 -0
  7. package/daemon/dist/adapters/claude-resume.d.ts.map +1 -1
  8. package/daemon/dist/adapters/claude-resume.js +15 -2
  9. package/daemon/dist/adapters/claude-resume.js.map +1 -1
  10. package/daemon/dist/adapters/codex-resume.d.ts +8 -1
  11. package/daemon/dist/adapters/codex-resume.d.ts.map +1 -1
  12. package/daemon/dist/adapters/codex-resume.js +74 -5
  13. package/daemon/dist/adapters/codex-resume.js.map +1 -1
  14. package/daemon/dist/adapters/codex-runtime-adapter.d.ts +11 -6
  15. package/daemon/dist/adapters/codex-runtime-adapter.d.ts.map +1 -1
  16. package/daemon/dist/adapters/codex-runtime-adapter.js +322 -34
  17. package/daemon/dist/adapters/codex-runtime-adapter.js.map +1 -1
  18. package/daemon/dist/adapters/terminal-adapter.d.ts +2 -1
  19. package/daemon/dist/adapters/terminal-adapter.d.ts.map +1 -1
  20. package/daemon/dist/adapters/terminal-adapter.js +7 -1
  21. package/daemon/dist/adapters/terminal-adapter.js.map +1 -1
  22. package/daemon/dist/adapters/tmux.d.ts.map +1 -1
  23. package/daemon/dist/adapters/tmux.js +53 -5
  24. package/daemon/dist/adapters/tmux.js.map +1 -1
  25. package/daemon/dist/db/migrations/021_seat_handover_observability.d.ts +3 -0
  26. package/daemon/dist/db/migrations/021_seat_handover_observability.d.ts.map +1 -0
  27. package/daemon/dist/db/migrations/021_seat_handover_observability.js +11 -0
  28. package/daemon/dist/db/migrations/021_seat_handover_observability.js.map +1 -0
  29. package/daemon/dist/db/migrations/022_node_codex_config_profile.d.ts +3 -0
  30. package/daemon/dist/db/migrations/022_node_codex_config_profile.d.ts.map +1 -0
  31. package/daemon/dist/db/migrations/022_node_codex_config_profile.js +7 -0
  32. package/daemon/dist/db/migrations/022_node_codex_config_profile.js.map +1 -0
  33. package/daemon/dist/db/migrations/023_stream_items.d.ts +16 -0
  34. package/daemon/dist/db/migrations/023_stream_items.d.ts.map +1 -0
  35. package/daemon/dist/db/migrations/023_stream_items.js +37 -0
  36. package/daemon/dist/db/migrations/023_stream_items.js.map +1 -0
  37. package/daemon/dist/db/migrations/024_queue_items.d.ts +19 -0
  38. package/daemon/dist/db/migrations/024_queue_items.d.ts.map +1 -0
  39. package/daemon/dist/db/migrations/024_queue_items.js +52 -0
  40. package/daemon/dist/db/migrations/024_queue_items.js.map +1 -0
  41. package/daemon/dist/db/migrations/025_queue_transitions.d.ts +13 -0
  42. package/daemon/dist/db/migrations/025_queue_transitions.d.ts.map +1 -0
  43. package/daemon/dist/db/migrations/025_queue_transitions.js +28 -0
  44. package/daemon/dist/db/migrations/025_queue_transitions.js.map +1 -0
  45. package/daemon/dist/db/migrations/026_inbox_entries.d.ts +14 -0
  46. package/daemon/dist/db/migrations/026_inbox_entries.d.ts.map +1 -0
  47. package/daemon/dist/db/migrations/026_inbox_entries.js +35 -0
  48. package/daemon/dist/db/migrations/026_inbox_entries.js.map +1 -0
  49. package/daemon/dist/db/migrations/027_outbox_entries.d.ts +12 -0
  50. package/daemon/dist/db/migrations/027_outbox_entries.d.ts.map +1 -0
  51. package/daemon/dist/db/migrations/027_outbox_entries.js +30 -0
  52. package/daemon/dist/db/migrations/027_outbox_entries.js.map +1 -0
  53. package/daemon/dist/db/migrations/028_project_classifications.d.ts +26 -0
  54. package/daemon/dist/db/migrations/028_project_classifications.d.ts.map +1 -0
  55. package/daemon/dist/db/migrations/028_project_classifications.js +44 -0
  56. package/daemon/dist/db/migrations/028_project_classifications.js.map +1 -0
  57. package/daemon/dist/db/migrations/029_classifier_leases.d.ts +22 -0
  58. package/daemon/dist/db/migrations/029_classifier_leases.d.ts.map +1 -0
  59. package/daemon/dist/db/migrations/029_classifier_leases.js +41 -0
  60. package/daemon/dist/db/migrations/029_classifier_leases.js.map +1 -0
  61. package/daemon/dist/db/migrations/030_views_custom.d.ts +15 -0
  62. package/daemon/dist/db/migrations/030_views_custom.d.ts.map +1 -0
  63. package/daemon/dist/db/migrations/030_views_custom.js +27 -0
  64. package/daemon/dist/db/migrations/030_views_custom.js.map +1 -0
  65. package/daemon/dist/db/migrations/031_watchdog_jobs.d.ts +34 -0
  66. package/daemon/dist/db/migrations/031_watchdog_jobs.d.ts.map +1 -0
  67. package/daemon/dist/db/migrations/031_watchdog_jobs.js +59 -0
  68. package/daemon/dist/db/migrations/031_watchdog_jobs.js.map +1 -0
  69. package/daemon/dist/db/migrations/032_watchdog_history.d.ts +28 -0
  70. package/daemon/dist/db/migrations/032_watchdog_history.d.ts.map +1 -0
  71. package/daemon/dist/db/migrations/032_watchdog_history.js +46 -0
  72. package/daemon/dist/db/migrations/032_watchdog_history.js.map +1 -0
  73. package/daemon/dist/db/migrations/033_workflow_specs.d.ts +30 -0
  74. package/daemon/dist/db/migrations/033_workflow_specs.d.ts.map +1 -0
  75. package/daemon/dist/db/migrations/033_workflow_specs.js +50 -0
  76. package/daemon/dist/db/migrations/033_workflow_specs.js.map +1 -0
  77. package/daemon/dist/db/migrations/034_workflow_instances.d.ts +42 -0
  78. package/daemon/dist/db/migrations/034_workflow_instances.d.ts.map +1 -0
  79. package/daemon/dist/db/migrations/034_workflow_instances.js +63 -0
  80. package/daemon/dist/db/migrations/034_workflow_instances.js.map +1 -0
  81. package/daemon/dist/db/migrations/035_workflow_step_trails.d.ts +29 -0
  82. package/daemon/dist/db/migrations/035_workflow_step_trails.d.ts.map +1 -0
  83. package/daemon/dist/db/migrations/035_workflow_step_trails.js +48 -0
  84. package/daemon/dist/db/migrations/035_workflow_step_trails.js.map +1 -0
  85. package/daemon/dist/db/migrations/036_watchdog_policy_enum_extension.d.ts +35 -0
  86. package/daemon/dist/db/migrations/036_watchdog_policy_enum_extension.d.ts.map +1 -0
  87. package/daemon/dist/db/migrations/036_watchdog_policy_enum_extension.js +43 -0
  88. package/daemon/dist/db/migrations/036_watchdog_policy_enum_extension.js.map +1 -0
  89. package/daemon/dist/domain/agent-activity-store.d.ts +42 -0
  90. package/daemon/dist/domain/agent-activity-store.d.ts.map +1 -0
  91. package/daemon/dist/domain/agent-activity-store.js +177 -0
  92. package/daemon/dist/domain/agent-activity-store.js.map +1 -0
  93. package/daemon/dist/domain/agent-manifest.d.ts.map +1 -1
  94. package/daemon/dist/domain/agent-manifest.js +3 -0
  95. package/daemon/dist/domain/agent-manifest.js.map +1 -1
  96. package/daemon/dist/domain/agent-starter-resolver.d.ts +100 -0
  97. package/daemon/dist/domain/agent-starter-resolver.d.ts.map +1 -0
  98. package/daemon/dist/domain/agent-starter-resolver.js +200 -0
  99. package/daemon/dist/domain/agent-starter-resolver.js.map +1 -0
  100. package/daemon/dist/domain/classifier-lease-manager.d.ts +130 -0
  101. package/daemon/dist/domain/classifier-lease-manager.d.ts.map +1 -0
  102. package/daemon/dist/domain/classifier-lease-manager.js +285 -0
  103. package/daemon/dist/domain/classifier-lease-manager.js.map +1 -0
  104. package/daemon/dist/domain/codex-thread-id.d.ts.map +1 -1
  105. package/daemon/dist/domain/codex-thread-id.js +44 -15
  106. package/daemon/dist/domain/codex-thread-id.js.map +1 -1
  107. package/daemon/dist/domain/context-monitor.d.ts +12 -7
  108. package/daemon/dist/domain/context-monitor.d.ts.map +1 -1
  109. package/daemon/dist/domain/context-monitor.js +51 -3
  110. package/daemon/dist/domain/context-monitor.js.map +1 -1
  111. package/daemon/dist/domain/context-usage-store.d.ts +1 -1
  112. package/daemon/dist/domain/context-usage-store.js +1 -1
  113. package/daemon/dist/domain/context-usage-store.js.map +1 -1
  114. package/daemon/dist/domain/hot-potato-enforcer.d.ts +45 -0
  115. package/daemon/dist/domain/hot-potato-enforcer.d.ts.map +1 -0
  116. package/daemon/dist/domain/hot-potato-enforcer.js +94 -0
  117. package/daemon/dist/domain/hot-potato-enforcer.js.map +1 -0
  118. package/daemon/dist/domain/inbox-handler.d.ts +68 -0
  119. package/daemon/dist/domain/inbox-handler.d.ts.map +1 -0
  120. package/daemon/dist/domain/inbox-handler.js +177 -0
  121. package/daemon/dist/domain/inbox-handler.js.map +1 -0
  122. package/daemon/dist/domain/native-resume-probe.d.ts +1 -1
  123. package/daemon/dist/domain/native-resume-probe.d.ts.map +1 -1
  124. package/daemon/dist/domain/native-resume-probe.js +89 -4
  125. package/daemon/dist/domain/native-resume-probe.js.map +1 -1
  126. package/daemon/dist/domain/node-inventory.d.ts +29 -1
  127. package/daemon/dist/domain/node-inventory.d.ts.map +1 -1
  128. package/daemon/dist/domain/node-inventory.js +208 -31
  129. package/daemon/dist/domain/node-inventory.js.map +1 -1
  130. package/daemon/dist/domain/node-launcher.d.ts +2 -0
  131. package/daemon/dist/domain/node-launcher.d.ts.map +1 -1
  132. package/daemon/dist/domain/node-launcher.js +14 -2
  133. package/daemon/dist/domain/node-launcher.js.map +1 -1
  134. package/daemon/dist/domain/outbox-handler.d.ts +48 -0
  135. package/daemon/dist/domain/outbox-handler.d.ts.map +1 -0
  136. package/daemon/dist/domain/outbox-handler.js +106 -0
  137. package/daemon/dist/domain/outbox-handler.js.map +1 -0
  138. package/daemon/dist/domain/policies/artifact-pool-helpers.d.ts +64 -0
  139. package/daemon/dist/domain/policies/artifact-pool-helpers.d.ts.map +1 -0
  140. package/daemon/dist/domain/policies/artifact-pool-helpers.js +226 -0
  141. package/daemon/dist/domain/policies/artifact-pool-helpers.js.map +1 -0
  142. package/daemon/dist/domain/policies/artifact-pool-ready.d.ts +3 -0
  143. package/daemon/dist/domain/policies/artifact-pool-ready.d.ts.map +1 -0
  144. package/daemon/dist/domain/policies/artifact-pool-ready.js +41 -0
  145. package/daemon/dist/domain/policies/artifact-pool-ready.js.map +1 -0
  146. package/daemon/dist/domain/policies/edge-artifact-required.d.ts +3 -0
  147. package/daemon/dist/domain/policies/edge-artifact-required.d.ts.map +1 -0
  148. package/daemon/dist/domain/policies/edge-artifact-required.js +90 -0
  149. package/daemon/dist/domain/policies/edge-artifact-required.js.map +1 -0
  150. package/daemon/dist/domain/policies/periodic-reminder.d.ts +3 -0
  151. package/daemon/dist/domain/policies/periodic-reminder.d.ts.map +1 -0
  152. package/daemon/dist/domain/policies/periodic-reminder.js +30 -0
  153. package/daemon/dist/domain/policies/periodic-reminder.js.map +1 -0
  154. package/daemon/dist/domain/policies/types.d.ts +51 -0
  155. package/daemon/dist/domain/policies/types.d.ts.map +1 -0
  156. package/daemon/dist/domain/policies/types.js +9 -0
  157. package/daemon/dist/domain/policies/types.js.map +1 -0
  158. package/daemon/dist/domain/policies/workflow-keepalive.d.ts +7 -0
  159. package/daemon/dist/domain/policies/workflow-keepalive.d.ts.map +1 -0
  160. package/daemon/dist/domain/policies/workflow-keepalive.js +123 -0
  161. package/daemon/dist/domain/policies/workflow-keepalive.js.map +1 -0
  162. package/daemon/dist/domain/project-classifier.d.ts +75 -0
  163. package/daemon/dist/domain/project-classifier.d.ts.map +1 -0
  164. package/daemon/dist/domain/project-classifier.js +132 -0
  165. package/daemon/dist/domain/project-classifier.js.map +1 -0
  166. package/daemon/dist/domain/projection-planner.d.ts +1 -0
  167. package/daemon/dist/domain/projection-planner.d.ts.map +1 -1
  168. package/daemon/dist/domain/projection-planner.js +3 -0
  169. package/daemon/dist/domain/projection-planner.js.map +1 -1
  170. package/daemon/dist/domain/ps-projection.d.ts +31 -0
  171. package/daemon/dist/domain/ps-projection.d.ts.map +1 -1
  172. package/daemon/dist/domain/ps-projection.js +38 -0
  173. package/daemon/dist/domain/ps-projection.js.map +1 -1
  174. package/daemon/dist/domain/queue-repository.d.ts +322 -0
  175. package/daemon/dist/domain/queue-repository.d.ts.map +1 -0
  176. package/daemon/dist/domain/queue-repository.js +686 -0
  177. package/daemon/dist/domain/queue-repository.js.map +1 -0
  178. package/daemon/dist/domain/queue-transition-log.d.ts +38 -0
  179. package/daemon/dist/domain/queue-transition-log.d.ts.map +1 -0
  180. package/daemon/dist/domain/queue-transition-log.js +52 -0
  181. package/daemon/dist/domain/queue-transition-log.js.map +1 -0
  182. package/daemon/dist/domain/restore-check-service.d.ts +203 -0
  183. package/daemon/dist/domain/restore-check-service.d.ts.map +1 -0
  184. package/daemon/dist/domain/restore-check-service.js +1047 -0
  185. package/daemon/dist/domain/restore-check-service.js.map +1 -0
  186. package/daemon/dist/domain/restore-orchestrator.d.ts +50 -2
  187. package/daemon/dist/domain/restore-orchestrator.d.ts.map +1 -1
  188. package/daemon/dist/domain/restore-orchestrator.js +476 -24
  189. package/daemon/dist/domain/restore-orchestrator.js.map +1 -1
  190. package/daemon/dist/domain/resume-metadata-refresher.d.ts.map +1 -1
  191. package/daemon/dist/domain/resume-metadata-refresher.js +27 -7
  192. package/daemon/dist/domain/resume-metadata-refresher.js.map +1 -1
  193. package/daemon/dist/domain/rig-expansion-service.d.ts.map +1 -1
  194. package/daemon/dist/domain/rig-expansion-service.js +13 -0
  195. package/daemon/dist/domain/rig-expansion-service.js.map +1 -1
  196. package/daemon/dist/domain/rig-repository.d.ts +17 -1
  197. package/daemon/dist/domain/rig-repository.d.ts.map +1 -1
  198. package/daemon/dist/domain/rig-repository.js +63 -5
  199. package/daemon/dist/domain/rig-repository.js.map +1 -1
  200. package/daemon/dist/domain/rigspec-codec.d.ts.map +1 -1
  201. package/daemon/dist/domain/rigspec-codec.js +13 -0
  202. package/daemon/dist/domain/rigspec-codec.js.map +1 -1
  203. package/daemon/dist/domain/rigspec-exporter.d.ts.map +1 -1
  204. package/daemon/dist/domain/rigspec-exporter.js +2 -0
  205. package/daemon/dist/domain/rigspec-exporter.js.map +1 -1
  206. package/daemon/dist/domain/rigspec-instantiator.d.ts.map +1 -1
  207. package/daemon/dist/domain/rigspec-instantiator.js +63 -1
  208. package/daemon/dist/domain/rigspec-instantiator.js.map +1 -1
  209. package/daemon/dist/domain/rigspec-schema.d.ts.map +1 -1
  210. package/daemon/dist/domain/rigspec-schema.js +196 -0
  211. package/daemon/dist/domain/rigspec-schema.js.map +1 -1
  212. package/daemon/dist/domain/runtime-adapter.d.ts +30 -1
  213. package/daemon/dist/domain/runtime-adapter.d.ts.map +1 -1
  214. package/daemon/dist/domain/runtime-adapter.js +14 -0
  215. package/daemon/dist/domain/runtime-adapter.js.map +1 -1
  216. package/daemon/dist/domain/seat-handover-planner.d.ts +84 -0
  217. package/daemon/dist/domain/seat-handover-planner.d.ts.map +1 -0
  218. package/daemon/dist/domain/seat-handover-planner.js +188 -0
  219. package/daemon/dist/domain/seat-handover-planner.js.map +1 -0
  220. package/daemon/dist/domain/seat-handover-service.d.ts +104 -0
  221. package/daemon/dist/domain/seat-handover-service.d.ts.map +1 -0
  222. package/daemon/dist/domain/seat-handover-service.js +343 -0
  223. package/daemon/dist/domain/seat-handover-service.js.map +1 -0
  224. package/daemon/dist/domain/seat-status-service.d.ts +50 -0
  225. package/daemon/dist/domain/seat-status-service.d.ts.map +1 -0
  226. package/daemon/dist/domain/seat-status-service.js +66 -0
  227. package/daemon/dist/domain/seat-status-service.js.map +1 -0
  228. package/daemon/dist/domain/session-source-rebuild-resolver.d.ts +53 -0
  229. package/daemon/dist/domain/session-source-rebuild-resolver.d.ts.map +1 -0
  230. package/daemon/dist/domain/session-source-rebuild-resolver.js +59 -0
  231. package/daemon/dist/domain/session-source-rebuild-resolver.js.map +1 -0
  232. package/daemon/dist/domain/session-transport.d.ts +30 -0
  233. package/daemon/dist/domain/session-transport.d.ts.map +1 -1
  234. package/daemon/dist/domain/session-transport.js +322 -12
  235. package/daemon/dist/domain/session-transport.js.map +1 -1
  236. package/daemon/dist/domain/snapshot-repository.d.ts +18 -0
  237. package/daemon/dist/domain/snapshot-repository.d.ts.map +1 -1
  238. package/daemon/dist/domain/snapshot-repository.js +77 -0
  239. package/daemon/dist/domain/snapshot-repository.js.map +1 -1
  240. package/daemon/dist/domain/startup-orchestrator.d.ts +27 -3
  241. package/daemon/dist/domain/startup-orchestrator.d.ts.map +1 -1
  242. package/daemon/dist/domain/startup-orchestrator.js +125 -40
  243. package/daemon/dist/domain/startup-orchestrator.js.map +1 -1
  244. package/daemon/dist/domain/stream-store.d.ts +56 -0
  245. package/daemon/dist/domain/stream-store.d.ts.map +1 -0
  246. package/daemon/dist/domain/stream-store.js +108 -0
  247. package/daemon/dist/domain/stream-store.js.map +1 -0
  248. package/daemon/dist/domain/transcript-redaction.d.ts +13 -0
  249. package/daemon/dist/domain/transcript-redaction.d.ts.map +1 -0
  250. package/daemon/dist/domain/transcript-redaction.js +34 -0
  251. package/daemon/dist/domain/transcript-redaction.js.map +1 -0
  252. package/daemon/dist/domain/transcript-store.d.ts +15 -0
  253. package/daemon/dist/domain/transcript-store.d.ts.map +1 -1
  254. package/daemon/dist/domain/transcript-store.js +76 -1
  255. package/daemon/dist/domain/transcript-store.js.map +1 -1
  256. package/daemon/dist/domain/types.d.ts +323 -3
  257. package/daemon/dist/domain/types.d.ts.map +1 -1
  258. package/daemon/dist/domain/view-event-bridge.d.ts +12 -0
  259. package/daemon/dist/domain/view-event-bridge.d.ts.map +1 -0
  260. package/daemon/dist/domain/view-event-bridge.js +92 -0
  261. package/daemon/dist/domain/view-event-bridge.js.map +1 -0
  262. package/daemon/dist/domain/view-projector.d.ts +83 -0
  263. package/daemon/dist/domain/view-projector.d.ts.map +1 -0
  264. package/daemon/dist/domain/view-projector.js +296 -0
  265. package/daemon/dist/domain/view-projector.js.map +1 -0
  266. package/daemon/dist/domain/watchdog-history-log.d.ts +49 -0
  267. package/daemon/dist/domain/watchdog-history-log.d.ts.map +1 -0
  268. package/daemon/dist/domain/watchdog-history-log.js +67 -0
  269. package/daemon/dist/domain/watchdog-history-log.js.map +1 -0
  270. package/daemon/dist/domain/watchdog-jobs-repository.d.ts +81 -0
  271. package/daemon/dist/domain/watchdog-jobs-repository.d.ts.map +1 -0
  272. package/daemon/dist/domain/watchdog-jobs-repository.js +164 -0
  273. package/daemon/dist/domain/watchdog-jobs-repository.js.map +1 -0
  274. package/daemon/dist/domain/watchdog-policy-engine.d.ts +92 -0
  275. package/daemon/dist/domain/watchdog-policy-engine.d.ts.map +1 -0
  276. package/daemon/dist/domain/watchdog-policy-engine.js +442 -0
  277. package/daemon/dist/domain/watchdog-policy-engine.js.map +1 -0
  278. package/daemon/dist/domain/watchdog-scheduler.d.ts +76 -0
  279. package/daemon/dist/domain/watchdog-scheduler.d.ts.map +1 -0
  280. package/daemon/dist/domain/watchdog-scheduler.js +112 -0
  281. package/daemon/dist/domain/watchdog-scheduler.js.map +1 -0
  282. package/daemon/dist/domain/workflow-instance-store.d.ts +46 -0
  283. package/daemon/dist/domain/workflow-instance-store.d.ts.map +1 -0
  284. package/daemon/dist/domain/workflow-instance-store.js +116 -0
  285. package/daemon/dist/domain/workflow-instance-store.js.map +1 -0
  286. package/daemon/dist/domain/workflow-projector.d.ts +64 -0
  287. package/daemon/dist/domain/workflow-projector.d.ts.map +1 -0
  288. package/daemon/dist/domain/workflow-projector.js +424 -0
  289. package/daemon/dist/domain/workflow-projector.js.map +1 -0
  290. package/daemon/dist/domain/workflow-runtime.d.ts +63 -0
  291. package/daemon/dist/domain/workflow-runtime.d.ts.map +1 -0
  292. package/daemon/dist/domain/workflow-runtime.js +150 -0
  293. package/daemon/dist/domain/workflow-runtime.js.map +1 -0
  294. package/daemon/dist/domain/workflow-spec-cache.d.ts +35 -0
  295. package/daemon/dist/domain/workflow-spec-cache.d.ts.map +1 -0
  296. package/daemon/dist/domain/workflow-spec-cache.js +171 -0
  297. package/daemon/dist/domain/workflow-spec-cache.js.map +1 -0
  298. package/daemon/dist/domain/workflow-step-trail-log.d.ts +27 -0
  299. package/daemon/dist/domain/workflow-step-trail-log.d.ts.map +1 -0
  300. package/daemon/dist/domain/workflow-step-trail-log.js +73 -0
  301. package/daemon/dist/domain/workflow-step-trail-log.js.map +1 -0
  302. package/daemon/dist/domain/workflow-types.d.ts +108 -0
  303. package/daemon/dist/domain/workflow-types.d.ts.map +1 -0
  304. package/daemon/dist/domain/workflow-types.js +11 -0
  305. package/daemon/dist/domain/workflow-types.js.map +1 -0
  306. package/daemon/dist/domain/workflow-validator.d.ts +31 -0
  307. package/daemon/dist/domain/workflow-validator.d.ts.map +1 -0
  308. package/daemon/dist/domain/workflow-validator.js +115 -0
  309. package/daemon/dist/domain/workflow-validator.js.map +1 -0
  310. package/daemon/dist/index.d.ts.map +1 -1
  311. package/daemon/dist/index.js +21 -2
  312. package/daemon/dist/index.js.map +1 -1
  313. package/daemon/dist/routes/activity.d.ts +3 -0
  314. package/daemon/dist/routes/activity.d.ts.map +1 -0
  315. package/daemon/dist/routes/activity.js +47 -0
  316. package/daemon/dist/routes/activity.js.map +1 -0
  317. package/daemon/dist/routes/projects.d.ts +12 -0
  318. package/daemon/dist/routes/projects.d.ts.map +1 -0
  319. package/daemon/dist/routes/projects.js +178 -0
  320. package/daemon/dist/routes/projects.js.map +1 -0
  321. package/daemon/dist/routes/queue.d.ts +10 -0
  322. package/daemon/dist/routes/queue.d.ts.map +1 -0
  323. package/daemon/dist/routes/queue.js +374 -0
  324. package/daemon/dist/routes/queue.js.map +1 -0
  325. package/daemon/dist/routes/restore-check.d.ts +3 -0
  326. package/daemon/dist/routes/restore-check.d.ts.map +1 -0
  327. package/daemon/dist/routes/restore-check.js +200 -0
  328. package/daemon/dist/routes/restore-check.js.map +1 -0
  329. package/daemon/dist/routes/rigs.d.ts.map +1 -1
  330. package/daemon/dist/routes/rigs.js +60 -4
  331. package/daemon/dist/routes/rigs.js.map +1 -1
  332. package/daemon/dist/routes/seat.d.ts +3 -0
  333. package/daemon/dist/routes/seat.d.ts.map +1 -0
  334. package/daemon/dist/routes/seat.js +69 -0
  335. package/daemon/dist/routes/seat.js.map +1 -0
  336. package/daemon/dist/routes/sessions.d.ts.map +1 -1
  337. package/daemon/dist/routes/sessions.js +41 -5
  338. package/daemon/dist/routes/sessions.js.map +1 -1
  339. package/daemon/dist/routes/snapshots.js +66 -17
  340. package/daemon/dist/routes/snapshots.js.map +1 -1
  341. package/daemon/dist/routes/stream.d.ts +9 -0
  342. package/daemon/dist/routes/stream.d.ts.map +1 -0
  343. package/daemon/dist/routes/stream.js +119 -0
  344. package/daemon/dist/routes/stream.js.map +1 -0
  345. package/daemon/dist/routes/transcripts.d.ts.map +1 -1
  346. package/daemon/dist/routes/transcripts.js +38 -0
  347. package/daemon/dist/routes/transcripts.js.map +1 -1
  348. package/daemon/dist/routes/transport.d.ts.map +1 -1
  349. package/daemon/dist/routes/transport.js +21 -0
  350. package/daemon/dist/routes/transport.js.map +1 -1
  351. package/daemon/dist/routes/up.js +24 -3
  352. package/daemon/dist/routes/up.js.map +1 -1
  353. package/daemon/dist/routes/views.d.ts +13 -0
  354. package/daemon/dist/routes/views.d.ts.map +1 -0
  355. package/daemon/dist/routes/views.js +120 -0
  356. package/daemon/dist/routes/views.js.map +1 -0
  357. package/daemon/dist/routes/watchdog.d.ts +18 -0
  358. package/daemon/dist/routes/watchdog.d.ts.map +1 -0
  359. package/daemon/dist/routes/watchdog.js +148 -0
  360. package/daemon/dist/routes/watchdog.js.map +1 -0
  361. package/daemon/dist/routes/workflow.d.ts +20 -0
  362. package/daemon/dist/routes/workflow.d.ts.map +1 -0
  363. package/daemon/dist/routes/workflow.js +184 -0
  364. package/daemon/dist/routes/workflow.js.map +1 -0
  365. package/daemon/dist/server.d.ts +30 -0
  366. package/daemon/dist/server.d.ts.map +1 -1
  367. package/daemon/dist/server.js +33 -0
  368. package/daemon/dist/server.js.map +1 -1
  369. package/daemon/dist/startup.d.ts.map +1 -1
  370. package/daemon/dist/startup.js +202 -8
  371. package/daemon/dist/startup.js.map +1 -1
  372. package/daemon/docs/reference/agent-spec.md +12 -5
  373. package/daemon/docs/reference/agent-startup-guide.md +9 -9
  374. package/daemon/specs/agents/apps/vault-specialist/agent.yaml +1 -1
  375. package/daemon/specs/agents/design/product-designer/agent.yaml +1 -1
  376. package/daemon/specs/agents/development/implementer/agent.yaml +1 -1
  377. package/daemon/specs/agents/development/qa/agent.yaml +1 -1
  378. package/daemon/specs/agents/orchestration/orchestrator/agent.yaml +1 -1
  379. package/daemon/specs/agents/product-management/pm/agent.yaml +4 -0
  380. package/daemon/specs/agents/research/analyst/agent.yaml +1 -1
  381. package/daemon/specs/agents/research/synthesizer/agent.yaml +1 -1
  382. package/daemon/specs/agents/review/independent-reviewer/agent.yaml +1 -1
  383. package/daemon/specs/agents/shared/agent.yaml +17 -0
  384. package/daemon/specs/agents/shared/runtime/claude-mcp.fragment.json +12 -0
  385. package/daemon/specs/agents/shared/runtime/claude-settings.fragment.json +16 -0
  386. package/daemon/specs/agents/shared/runtime/codex-config.fragment.toml +5 -0
  387. package/daemon/specs/agents/shared/skills/claude-compact-in-place/SKILL.md +100 -0
  388. package/daemon/specs/agents/shared/skills/core/openrig-operator/SKILL.md +110 -0
  389. package/daemon/specs/agents/shared/skills/core/openrig-user/SKILL.md +44 -1
  390. package/daemon/specs/agents/shared/skills/mental-model-ha/SKILL.md +3 -0
  391. package/daemon/specs/agents/shared/skills/pods/orchestration-team/SKILL.md +3 -0
  392. package/dist/commands/capture.d.ts +7 -1
  393. package/dist/commands/capture.d.ts.map +1 -1
  394. package/dist/commands/capture.js +59 -1
  395. package/dist/commands/capture.js.map +1 -1
  396. package/dist/commands/compact-plan.d.ts +9 -0
  397. package/dist/commands/compact-plan.d.ts.map +1 -0
  398. package/dist/commands/compact-plan.js +354 -0
  399. package/dist/commands/compact-plan.js.map +1 -0
  400. package/dist/commands/context.d.ts +9 -0
  401. package/dist/commands/context.d.ts.map +1 -0
  402. package/dist/commands/context.js +220 -0
  403. package/dist/commands/context.js.map +1 -0
  404. package/dist/commands/doctor.d.ts.map +1 -1
  405. package/dist/commands/doctor.js +19 -8
  406. package/dist/commands/doctor.js.map +1 -1
  407. package/dist/commands/expand.d.ts.map +1 -1
  408. package/dist/commands/expand.js +15 -4
  409. package/dist/commands/expand.js.map +1 -1
  410. package/dist/commands/heartbeat.d.ts +99 -0
  411. package/dist/commands/heartbeat.d.ts.map +1 -0
  412. package/dist/commands/heartbeat.js +393 -0
  413. package/dist/commands/heartbeat.js.map +1 -0
  414. package/dist/commands/import.d.ts.map +1 -1
  415. package/dist/commands/import.js +2 -1
  416. package/dist/commands/import.js.map +1 -1
  417. package/dist/commands/preflight.js +1 -1
  418. package/dist/commands/preflight.js.map +1 -1
  419. package/dist/commands/project.d.ts +14 -0
  420. package/dist/commands/project.d.ts.map +1 -0
  421. package/dist/commands/project.js +157 -0
  422. package/dist/commands/project.js.map +1 -0
  423. package/dist/commands/ps.d.ts +20 -3
  424. package/dist/commands/ps.d.ts.map +1 -1
  425. package/dist/commands/ps.js +455 -33
  426. package/dist/commands/ps.js.map +1 -1
  427. package/dist/commands/queue.d.ts +16 -0
  428. package/dist/commands/queue.d.ts.map +1 -0
  429. package/dist/commands/queue.js +401 -0
  430. package/dist/commands/queue.js.map +1 -0
  431. package/dist/commands/restore-check.d.ts +9 -0
  432. package/dist/commands/restore-check.d.ts.map +1 -0
  433. package/dist/commands/restore-check.js +234 -0
  434. package/dist/commands/restore-check.js.map +1 -0
  435. package/dist/commands/restore-packet.d.ts +9 -0
  436. package/dist/commands/restore-packet.d.ts.map +1 -0
  437. package/dist/commands/restore-packet.js +383 -0
  438. package/dist/commands/restore-packet.js.map +1 -0
  439. package/dist/commands/restore.d.ts.map +1 -1
  440. package/dist/commands/restore.js +69 -1
  441. package/dist/commands/restore.js.map +1 -1
  442. package/dist/commands/seat.d.ts +5 -0
  443. package/dist/commands/seat.d.ts.map +1 -0
  444. package/dist/commands/seat.js +170 -0
  445. package/dist/commands/seat.js.map +1 -0
  446. package/dist/commands/send.d.ts +12 -1
  447. package/dist/commands/send.d.ts.map +1 -1
  448. package/dist/commands/send.js +93 -5
  449. package/dist/commands/send.js.map +1 -1
  450. package/dist/commands/setup.d.ts.map +1 -1
  451. package/dist/commands/setup.js +20 -8
  452. package/dist/commands/setup.js.map +1 -1
  453. package/dist/commands/specs.d.ts.map +1 -1
  454. package/dist/commands/specs.js +99 -16
  455. package/dist/commands/specs.js.map +1 -1
  456. package/dist/commands/stream.d.ts +12 -0
  457. package/dist/commands/stream.d.ts.map +1 -0
  458. package/dist/commands/stream.js +111 -0
  459. package/dist/commands/stream.js.map +1 -0
  460. package/dist/commands/up.d.ts +1 -0
  461. package/dist/commands/up.d.ts.map +1 -1
  462. package/dist/commands/up.js +65 -4
  463. package/dist/commands/up.js.map +1 -1
  464. package/dist/commands/view.d.ts +12 -0
  465. package/dist/commands/view.d.ts.map +1 -0
  466. package/dist/commands/view.js +82 -0
  467. package/dist/commands/view.js.map +1 -0
  468. package/dist/commands/watchdog.d.ts +15 -0
  469. package/dist/commands/watchdog.d.ts.map +1 -0
  470. package/dist/commands/watchdog.js +120 -0
  471. package/dist/commands/watchdog.js.map +1 -0
  472. package/dist/commands/whoami.d.ts +8 -1
  473. package/dist/commands/whoami.d.ts.map +1 -1
  474. package/dist/commands/whoami.js +60 -1
  475. package/dist/commands/whoami.js.map +1 -1
  476. package/dist/commands/workflow.d.ts +17 -0
  477. package/dist/commands/workflow.d.ts.map +1 -0
  478. package/dist/commands/workflow.js +138 -0
  479. package/dist/commands/workflow.js.map +1 -0
  480. package/dist/cross-host-cli-helpers.d.ts +12 -0
  481. package/dist/cross-host-cli-helpers.d.ts.map +1 -0
  482. package/dist/cross-host-cli-helpers.js +48 -0
  483. package/dist/cross-host-cli-helpers.js.map +1 -0
  484. package/dist/cross-host-executor.d.ts +84 -0
  485. package/dist/cross-host-executor.d.ts.map +1 -0
  486. package/dist/cross-host-executor.js +138 -0
  487. package/dist/cross-host-executor.js.map +1 -0
  488. package/dist/host-registry.d.ts +50 -0
  489. package/dist/host-registry.d.ts.map +1 -0
  490. package/dist/host-registry.js +116 -0
  491. package/dist/host-registry.js.map +1 -0
  492. package/dist/index.d.ts +20 -0
  493. package/dist/index.d.ts.map +1 -1
  494. package/dist/index.js +24 -0
  495. package/dist/index.js.map +1 -1
  496. package/dist/mcp-server.d.ts.map +1 -1
  497. package/dist/mcp-server.js +22 -2
  498. package/dist/mcp-server.js.map +1 -1
  499. package/dist/restore-packet/claude-transcript-parser.d.ts +12 -0
  500. package/dist/restore-packet/claude-transcript-parser.d.ts.map +1 -0
  501. package/dist/restore-packet/claude-transcript-parser.js +221 -0
  502. package/dist/restore-packet/claude-transcript-parser.js.map +1 -0
  503. package/dist/restore-packet/codex-jsonl-parser.d.ts +11 -0
  504. package/dist/restore-packet/codex-jsonl-parser.d.ts.map +1 -0
  505. package/dist/restore-packet/codex-jsonl-parser.js +159 -0
  506. package/dist/restore-packet/codex-jsonl-parser.js.map +1 -0
  507. package/dist/restore-packet/omitted-records.d.ts +60 -0
  508. package/dist/restore-packet/omitted-records.d.ts.map +1 -0
  509. package/dist/restore-packet/omitted-records.js +116 -0
  510. package/dist/restore-packet/omitted-records.js.map +1 -0
  511. package/dist/restore-packet/packet-writer.d.ts +59 -0
  512. package/dist/restore-packet/packet-writer.d.ts.map +1 -0
  513. package/dist/restore-packet/packet-writer.js +224 -0
  514. package/dist/restore-packet/packet-writer.js.map +1 -0
  515. package/dist/restore-packet/redaction.d.ts +30 -0
  516. package/dist/restore-packet/redaction.d.ts.map +1 -0
  517. package/dist/restore-packet/redaction.js +71 -0
  518. package/dist/restore-packet/redaction.js.map +1 -0
  519. package/dist/restore-packet/runtime-detect.d.ts +19 -0
  520. package/dist/restore-packet/runtime-detect.d.ts.map +1 -0
  521. package/dist/restore-packet/runtime-detect.js +81 -0
  522. package/dist/restore-packet/runtime-detect.js.map +1 -0
  523. package/dist/restore-packet/schema-validator.d.ts +13 -0
  524. package/dist/restore-packet/schema-validator.d.ts.map +1 -0
  525. package/dist/restore-packet/schema-validator.js +245 -0
  526. package/dist/restore-packet/schema-validator.js.map +1 -0
  527. package/dist/restore-packet/types.d.ts +76 -0
  528. package/dist/restore-packet/types.d.ts.map +1 -0
  529. package/dist/restore-packet/types.js +15 -0
  530. package/dist/restore-packet/types.js.map +1 -0
  531. package/dist/schemas/restore-summary.schema.json +98 -0
  532. package/dist/system-preflight.d.ts.map +1 -1
  533. package/dist/system-preflight.js +16 -5
  534. package/dist/system-preflight.js.map +1 -1
  535. package/dist/tmux-health.d.ts +16 -0
  536. package/dist/tmux-health.d.ts.map +1 -0
  537. package/dist/tmux-health.js +105 -0
  538. package/dist/tmux-health.js.map +1 -0
  539. package/package.json +10 -3
  540. package/scripts/check-abi.mjs +123 -0
  541. package/ui/dist/assets/{index-DlMH-REm.css → index-Dec25siz.css} +1 -1
  542. package/ui/dist/assets/{index-lEO-zBxz.js → index-GNYaWmBj.js} +9 -9
  543. package/ui/dist/index.html +2 -2
@@ -0,0 +1,234 @@
1
+ import { Command } from "commander";
2
+ import { DaemonClient } from "../client.js";
3
+ import { getDaemonStatus, getDaemonUrl } from "../daemon-lifecycle.js";
4
+ import { realDeps } from "./daemon.js";
5
+ const STATUS_SYMBOLS = {
6
+ green: "✓",
7
+ yellow: "⚠",
8
+ red: "✗",
9
+ };
10
+ const STATUS_COLORS = {
11
+ green: "",
12
+ yellow: "",
13
+ red: "",
14
+ };
15
+ export function restoreCheckCommand(depsOverride) {
16
+ const cmd = new Command("restore-check")
17
+ .description("Check restore readiness across running rigs")
18
+ .addHelpText("after", `
19
+ Examples:
20
+ rig restore-check Check all rigs
21
+ rig restore-check --rig openrig-pm Check one rig
22
+ rig restore-check --no-queue Skip queue file checks
23
+ rig restore-check --no-hooks Skip hook checks
24
+ rig restore-check --json JSON output for agents
25
+
26
+ Exit codes:
27
+ 0 Restorable (or restorable with caveats)
28
+ 1 Not restorable (red blockers found)
29
+ 2 Unknown / probe error`);
30
+ const getDepsF = () => depsOverride ?? { lifecycleDeps: realDeps(), clientFactory: (url) => new DaemonClient(url) };
31
+ cmd
32
+ .option("--json", "JSON output for agents")
33
+ .option("--rig <name>", "Check one rig only")
34
+ .option("--no-queue", "Skip queue file checks")
35
+ .option("--no-hooks", "Skip hook checks")
36
+ .action(async (opts) => {
37
+ const deps = getDepsF();
38
+ const status = await getDaemonStatus(deps.lifecycleDeps);
39
+ if (status.state !== "running" || status.healthy === false) {
40
+ // Daemon down — produce a structured not_restorable result
41
+ const result = localRestoreResult({
42
+ verdict: "not_restorable",
43
+ checks: [{
44
+ check: "daemon.reachable",
45
+ status: "red",
46
+ evidence: "Daemon is not running",
47
+ remediation: "Start the daemon with: rig daemon start",
48
+ }],
49
+ repairPacket: [{
50
+ step: 1,
51
+ command: "Start the daemon with: rig daemon start",
52
+ rationale: "Daemon is not running",
53
+ safe: false, // mutating: starts a daemon process
54
+ blocking: true,
55
+ }],
56
+ recovery: {
57
+ status: "blocked",
58
+ summary: "No exact rig recovery action is known until the daemon is running.",
59
+ actions: [],
60
+ blocked: [{
61
+ scope: "host",
62
+ reason: "Daemon is not running; rig state could not be inspected for recovery planning.",
63
+ }],
64
+ unknown: [],
65
+ },
66
+ });
67
+ if (opts.json) {
68
+ console.log(JSON.stringify(result, null, 2));
69
+ }
70
+ else {
71
+ printHuman(result);
72
+ }
73
+ process.exitCode = 1;
74
+ return;
75
+ }
76
+ const client = deps.clientFactory(getDaemonUrl(status));
77
+ try {
78
+ const params = new URLSearchParams();
79
+ if (opts.rig)
80
+ params.set("rig", opts.rig);
81
+ if (opts.queue === false)
82
+ params.set("noQueue", "true");
83
+ if (opts.hooks === false)
84
+ params.set("noHooks", "true");
85
+ const query = params.toString();
86
+ const path = `/api/restore-check${query ? `?${query}` : ""}`;
87
+ const response = await client.get(path);
88
+ if (response.status >= 500) {
89
+ const result = localRestoreResult({
90
+ verdict: "unknown",
91
+ checks: [{
92
+ check: "probe.error",
93
+ status: "red",
94
+ evidence: `Daemon returned HTTP ${response.status}`,
95
+ remediation: "Check daemon logs with: rig daemon logs",
96
+ }],
97
+ repairPacket: [{
98
+ step: 1,
99
+ command: "Check daemon logs with: rig daemon logs",
100
+ rationale: `Daemon returned HTTP ${response.status}`,
101
+ safe: true,
102
+ blocking: true,
103
+ }],
104
+ recovery: {
105
+ status: "unknown",
106
+ summary: `Recovery status could not be inspected because daemon returned HTTP ${response.status}.`,
107
+ actions: [],
108
+ blocked: [],
109
+ unknown: [{
110
+ scope: "host",
111
+ reason: `Daemon returned HTTP ${response.status}`,
112
+ }],
113
+ },
114
+ });
115
+ if (opts.json) {
116
+ console.log(JSON.stringify(result, null, 2));
117
+ }
118
+ else {
119
+ printHuman(result);
120
+ }
121
+ process.exitCode = 2;
122
+ return;
123
+ }
124
+ const result = response.data;
125
+ if (opts.json) {
126
+ console.log(JSON.stringify(result, null, 2));
127
+ }
128
+ else {
129
+ printHuman(result);
130
+ }
131
+ // Exit codes: 0 for restorable/restorable_with_caveats; 1 for not_restorable; 2 for unknown
132
+ if (result.verdict === "not_restorable") {
133
+ process.exitCode = 1;
134
+ }
135
+ else if (result.verdict === "unknown") {
136
+ process.exitCode = 2;
137
+ }
138
+ }
139
+ catch (err) {
140
+ console.error(`Error: ${err instanceof Error ? err.message : String(err)}`);
141
+ console.error("Fix: check daemon status with: rig daemon status");
142
+ process.exitCode = 2;
143
+ }
144
+ });
145
+ return cmd;
146
+ }
147
+ function printHuman(result) {
148
+ const verdictLabel = result.verdict.replace(/_/g, " ").toUpperCase();
149
+ console.log(`RESTORE CHECK — ${verdictLabel}`);
150
+ console.log(`${result.counts.green} green | ${result.counts.yellow} yellow | ${result.counts.red} red`);
151
+ const readinessLabel = result.readiness.status.replace(/_/g, " ");
152
+ console.log(`READINESS: ${readinessLabel} (${result.readiness.reason})`);
153
+ console.log(`CONTINUITY: ${result.continuity.status.replace(/_/g, " ")}`);
154
+ if (result.hostInfra) {
155
+ console.log(`Host bootstrap/autostart: ${result.hostInfra.status} — ${result.hostInfra.evidence}`);
156
+ }
157
+ console.log(`RECOVERY: ${result.recovery.status.replace(/_/g, " ").toUpperCase()}`);
158
+ console.log(result.recovery.summary);
159
+ for (const action of result.recovery.actions) {
160
+ console.log(` Action: ${action.command}`);
161
+ }
162
+ for (const issue of result.recovery.blocked) {
163
+ console.log(` Blocked: ${issue.reason}`);
164
+ }
165
+ for (const issue of result.recovery.unknown) {
166
+ console.log(` Unknown: ${issue.reason}`);
167
+ }
168
+ if (result.rigs && result.rigs.length > 0) {
169
+ console.log();
170
+ console.log("Per-rig summary:");
171
+ console.log(`${"rig".padEnd(24)} ${"status".padEnd(16)} ${"ready".padEnd(9)} ${"blocked".padEnd(8)} caveats`);
172
+ for (const rig of result.rigs) {
173
+ console.log(`${rig.rigName.slice(0, 24).padEnd(24)} ${rig.status.padEnd(16)} ` +
174
+ `${`${rig.runningReadyNodes}/${rig.expectedNodes}`.padEnd(9)} ${String(rig.blockedNodes).padEnd(8)} ${rig.caveatNodes}`);
175
+ }
176
+ }
177
+ console.log();
178
+ for (const check of result.checks) {
179
+ const sym = STATUS_SYMBOLS[check.status] ?? "?";
180
+ console.log(` ${sym} ${check.check}: ${check.evidence}`);
181
+ if (check.remediation) {
182
+ console.log(` Fix: ${check.remediation}`);
183
+ }
184
+ }
185
+ if (result.repairPacket && result.repairPacket.length > 0) {
186
+ const blockers = result.repairPacket.filter((s) => s.blocking).length;
187
+ const caveats = result.repairPacket.filter((s) => !s.blocking).length;
188
+ console.log();
189
+ console.log(`Repair steps: ${result.repairPacket.length} (${blockers} blocking, ${caveats} caveats)`);
190
+ if (blockers > 0) {
191
+ console.log("Resolve blocking steps before restoring.");
192
+ }
193
+ }
194
+ else if (result.counts.red > 0) {
195
+ console.log();
196
+ console.log("Blockers found. Resolve red items before restoring.");
197
+ }
198
+ else if (result.counts.yellow > 0) {
199
+ console.log();
200
+ console.log("Restorable with caveats. Yellow items are non-blocking but worth reviewing.");
201
+ }
202
+ }
203
+ function localRestoreResult(input) {
204
+ const red = input.checks.filter((c) => c.status === "red").length;
205
+ const yellow = input.checks.filter((c) => c.status === "yellow").length;
206
+ const green = input.checks.filter((c) => c.status === "green").length;
207
+ const unknown = input.verdict === "unknown";
208
+ return {
209
+ verdict: input.verdict,
210
+ readiness: {
211
+ status: unknown ? "unknown" : "not_ready",
212
+ reason: unknown ? "unknown_probe_state" : "blockers_present",
213
+ blockingRigCount: 0,
214
+ caveatRigCount: 0,
215
+ unknownRigCount: 0,
216
+ },
217
+ continuity: {
218
+ status: "not_proven",
219
+ evidence: "Strict same-session/provider-context resume is not verified by restore-check v1.",
220
+ provenCapabilities: [],
221
+ unprovenCapabilities: ["provider_session_resume", "context_window_preservation", "interrupted_work_functional_resume"],
222
+ },
223
+ rigs: [],
224
+ hostInfra: {
225
+ status: "unknown",
226
+ evidence: "Host bootstrap/autostart source could not be inspected because restore-check did not receive daemon route evidence",
227
+ },
228
+ counts: { red, yellow, green },
229
+ checks: input.checks,
230
+ repairPacket: input.repairPacket,
231
+ recovery: input.recovery,
232
+ };
233
+ }
234
+ //# sourceMappingURL=restore-check.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"restore-check.js","sourceRoot":"","sources":["../../src/commands/restore-check.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { Command } from "commander";
2
+ import { DaemonClient } from "../client.js";
3
+ import { type LifecycleDeps } from "../daemon-lifecycle.js";
4
+ export interface RestorePacketDeps {
5
+ lifecycleDeps?: LifecycleDeps;
6
+ clientFactory?: (url: string) => DaemonClient;
7
+ }
8
+ export declare function restorePacketCommand(depsOverride?: RestorePacketDeps): Command;
9
+ //# sourceMappingURL=restore-packet.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"restore-packet.d.ts","sourceRoot":"","sources":["../../src/commands/restore-packet.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAiC,KAAK,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAqB3F,MAAM,WAAW,iBAAiB;IAChC,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,YAAY,CAAC;CAC/C;AA+JD,wBAAgB,oBAAoB,CAAC,YAAY,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAyU9E"}
@@ -0,0 +1,383 @@
1
+ // restore-packet.ts — `rig restore-packet {write,read,validate}` CLI command.
2
+ //
3
+ // M2a: command shape + mutual-exclusion + read/validate stubs.
4
+ // M2b: source-adapter wiring (codex-jsonl-parser, claude-transcript-parser,
5
+ // runtime-detect, redaction, omitted-records).
6
+ // M2c-CLI: write action full impl using packet-writer.ts; --source-jsonl
7
+ // + --source-session adapter wiring; CLI flag defaults for the
8
+ // ~11 contract-required fields not derivable from the parser.
9
+ // M2c-Daemon: full-read transcript route + auth + redaction + tests.
10
+ // M3: real read + validate implementations replacing the stubs.
11
+ import { Command } from "commander";
12
+ import { readFileSync, existsSync, statSync } from "node:fs";
13
+ import { resolve as resolvePath, join as joinPath } from "node:path";
14
+ import { DaemonClient } from "../client.js";
15
+ import { getDaemonStatus, getDaemonUrl } from "../daemon-lifecycle.js";
16
+ import { realDeps } from "./daemon.js";
17
+ import { detectRuntime } from "../restore-packet/runtime-detect.js";
18
+ import { parseCodexJsonl } from "../restore-packet/codex-jsonl-parser.js";
19
+ import { parseClaudeTranscript } from "../restore-packet/claude-transcript-parser.js";
20
+ import { writePacket } from "../restore-packet/packet-writer.js";
21
+ import { validateRestoreSummary, } from "../restore-packet/schema-validator.js";
22
+ // Per M1 contract § 1: 4 required packet files. Used by validate's
23
+ // packet-shape check and by read for transcript-presence detection.
24
+ const REQUIRED_PACKET_FILES = [
25
+ "restore-instructions.md",
26
+ "transcript-latest.md",
27
+ "touched-files.md",
28
+ "restore-summary.json",
29
+ ];
30
+ /**
31
+ * R2: derive canonical (source_session_id, source_rig) per honest-fallback
32
+ * policy. Override flags > parsed session_meta (jsonl) > supplied --source-session.
33
+ *
34
+ * Returns either the derived pair (with no exception) OR throws an Error
35
+ * containing the explicit operator-facing guidance message. The action
36
+ * caller catches and routes to reportFailure().
37
+ */
38
+ function deriveProvenance(opts, parsedSessionId, hasJsonl) {
39
+ // Step 1: source_session_id — override > parsed > --source-session arg.
40
+ let sourceSessionId;
41
+ if (typeof opts.sourceSessionIdOverride === "string" && opts.sourceSessionIdOverride.length > 0) {
42
+ sourceSessionId = opts.sourceSessionIdOverride;
43
+ }
44
+ else if (hasJsonl) {
45
+ if (!parsedSessionId) {
46
+ throw new Error("no session_meta record in source JSONL; supply --source-session-id-override <id> AND --source-rig-override <rig> to set provenance explicitly. Silent fallback to file-path-as-session-id is not allowed (M2c-CLI R2 honest-provenance policy).");
47
+ }
48
+ sourceSessionId = parsedSessionId;
49
+ }
50
+ else {
51
+ // hasSession path: operator-named session is authoritative.
52
+ sourceSessionId = opts.sourceSession;
53
+ }
54
+ // Step 2: source_rig — override > <seat>@<rig> split.
55
+ let sourceRig;
56
+ if (typeof opts.sourceRigOverride === "string" && opts.sourceRigOverride.length > 0) {
57
+ sourceRig = opts.sourceRigOverride;
58
+ }
59
+ else {
60
+ const m = /^[^@]+@([^@]+)$/.exec(sourceSessionId);
61
+ const captured = m?.[1];
62
+ if (!captured) {
63
+ throw new Error(`could not derive source_rig from session id '${sourceSessionId}' (does not match <seat>@<rig> shape); supply --source-rig-override <rig> explicitly. Silent fallback to source_rig:"unknown" is not allowed (M2c-CLI R2 honest-provenance policy).`);
64
+ }
65
+ sourceRig = captured;
66
+ }
67
+ return { sourceSessionId, sourceRig };
68
+ }
69
+ function reportFailure(message) {
70
+ console.error(`rig restore-packet write: ${message}`);
71
+ process.exitCode = 2;
72
+ }
73
+ function isValidRuntime(value) {
74
+ return value === "codex" || value === "claude-code";
75
+ }
76
+ async function fetchSourceTranscriptViaDaemon(session, deps) {
77
+ const lifecycleDeps = deps?.lifecycleDeps ?? realDeps();
78
+ const status = await getDaemonStatus(lifecycleDeps);
79
+ if (status.state !== "running" || typeof status.port !== "number") {
80
+ throw new Error("daemon not running; start it with: rig daemon start");
81
+ }
82
+ const url = getDaemonUrl(status);
83
+ const client = (deps?.clientFactory ?? ((u) => new DaemonClient(u)))(url);
84
+ // M2c-Daemon will define this route. M2c-CLI calls it; M2c-CLI tests
85
+ // mock the daemon (compact-plan.test.ts:166-176 pattern). The path is
86
+ // a draft — M2c-Daemon may pick a different naming convention; if so,
87
+ // M2c-Daemon will land that change in restore-packet.ts the same commit
88
+ // that adds the daemon route.
89
+ const path = `/api/transcripts/${encodeURIComponent(session)}/full`;
90
+ const response = await client.get(path);
91
+ if (response.status >= 400 || !response.data) {
92
+ throw new Error(`daemon transcript fetch failed: HTTP ${response.status}: ${typeof response.data === "object" && response.data !== null
93
+ ? JSON.stringify(response.data)
94
+ : "(no body)"}`);
95
+ }
96
+ return {
97
+ content: response.data.content ?? "",
98
+ sourceCwd: response.data.cwd ?? null,
99
+ };
100
+ }
101
+ function buildWritePacketOptions(opts, structured, sourceRuntime, sourceCwdFallback, sourceSessionId, sourceRig) {
102
+ const trustRankingDefault = "rig_whoami,bounded_latest_transcript";
103
+ const trustRankingRaw = opts.sourceTrustRanking ?? trustRankingDefault;
104
+ const trustRanking = trustRankingRaw
105
+ .split(",")
106
+ .map((s) => s.trim())
107
+ .filter((s) => s.length > 0);
108
+ return {
109
+ targetDir: resolvePath(opts.target),
110
+ structured,
111
+ sourceRuntime,
112
+ targetRig: opts.targetRig ?? "openrig-velocity",
113
+ targetRuntime: isValidRuntime(opts.targetRuntime) ? opts.targetRuntime : "claude-code",
114
+ targetWorkspaceRoot: opts.targetWorkspaceRoot ?? structured.sessionMeta?.cwd ?? sourceCwdFallback,
115
+ defaultTargetRepo: opts.defaultTargetRepo ?? null,
116
+ rolePointer: opts.rolePointer ?? `rigs/${opts.targetRig ?? "openrig-velocity"}/state/velocity/role.md`,
117
+ currentWorkSummary: opts.currentWorkSummary ?? "Cross-runtime restore packet generated by rig restore-packet write.",
118
+ nextOwner: opts.nextOwner ?? "self",
119
+ caveats: opts.caveat ?? [],
120
+ authorityBoundaries: opts.authorityBoundaries ?? "Restored seat authority per source session role.",
121
+ sourceTrustRanking: trustRanking,
122
+ sourceSessionId,
123
+ sourceRig,
124
+ sourceCwd: structured.sessionMeta?.cwd ?? sourceCwdFallback,
125
+ generatorVersion: opts.generatorVersion ?? "rig-restore-packet@0.1.0",
126
+ includeFullTranscript: structured.messages.length > 0,
127
+ };
128
+ }
129
+ export function restorePacketCommand(depsOverride) {
130
+ const cmd = new Command("restore-packet")
131
+ .description("Generate, read, and validate cross-runtime restore packets per the v0 standard");
132
+ cmd.command("write")
133
+ .description("Generate a restore packet from a source session or JSONL file")
134
+ .option("--source-session <session>", "Source session name (daemon-backed)")
135
+ .option("--source-jsonl <path>", "Source Codex/Claude JSONL transcript file (direct)")
136
+ .option("--source-runtime <runtime>", "Force source runtime (claude-code | codex); auto-detected if omitted")
137
+ .requiredOption("--target <dir>", "Target packet directory (must not exist; created atomically)")
138
+ .option("--target-rig <rig>", "Target rig name for the restored seat")
139
+ .option("--target-runtime <runtime>", "Target runtime (claude-code | codex)")
140
+ .option("--target-workspace-root <path>", "Target workspace root absolute path")
141
+ .option("--default-target-repo <path>", "Default target repo absolute path or null")
142
+ .option("--role-pointer <path>", "Role guidance pointer path or URI for the restored seat")
143
+ .option("--current-work-summary <text>", "One-paragraph summary of the source seat's current work")
144
+ .option("--next-owner <name>", 'Who the restored seat hands off to next (default: "self")')
145
+ .option("--caveat <text>", "Caveat to include in the packet (repeatable)", (value, prev = []) => prev.concat([value]), [])
146
+ .option("--authority-boundaries <text>", "Explicit statement of restored-seat authority")
147
+ .option("--source-trust-ranking <csv>", "Comma-separated source-trust ranking; default: rig_whoami,bounded_latest_transcript")
148
+ .option("--generator-version <version>", 'Generator version identifier (default: "rig-restore-packet@0.1.0")')
149
+ .option("--source-session-id-override <id>", "Operator override for source_session_id (R2; required when JSONL has no session_meta record)")
150
+ .option("--source-rig-override <rig>", "Operator override for source_rig (R2; required when canonical session id is bare with no <seat>@<rig> shape)")
151
+ .action(async (opts) => {
152
+ const hasSession = typeof opts.sourceSession === "string" && opts.sourceSession.length > 0;
153
+ const hasJsonl = typeof opts.sourceJsonl === "string" && opts.sourceJsonl.length > 0;
154
+ if (hasSession && hasJsonl) {
155
+ reportFailure("--source-session and --source-jsonl are mutually exclusive; supply exactly one.");
156
+ return;
157
+ }
158
+ if (!hasSession && !hasJsonl) {
159
+ reportFailure("exactly one of --source-session or --source-jsonl is required.");
160
+ return;
161
+ }
162
+ try {
163
+ let content;
164
+ let sourceCwdFallback;
165
+ if (hasJsonl) {
166
+ const jsonlPath = resolvePath(opts.sourceJsonl);
167
+ content = readFileSync(jsonlPath, "utf-8");
168
+ sourceCwdFallback = "/";
169
+ }
170
+ else {
171
+ const session = opts.sourceSession;
172
+ const fetched = await fetchSourceTranscriptViaDaemon(session, depsOverride);
173
+ content = fetched.content;
174
+ sourceCwdFallback = fetched.sourceCwd ?? "/";
175
+ }
176
+ let runtime = null;
177
+ if (isValidRuntime(opts.sourceRuntime)) {
178
+ runtime = opts.sourceRuntime;
179
+ }
180
+ else if (typeof opts.sourceRuntime === "string" && opts.sourceRuntime.length > 0) {
181
+ reportFailure(`--source-runtime must be 'codex' or 'claude-code'; got '${opts.sourceRuntime}'.`);
182
+ return;
183
+ }
184
+ else {
185
+ runtime = detectRuntime(content);
186
+ if (runtime === null) {
187
+ reportFailure("could not auto-detect source runtime; pass --source-runtime <claude-code|codex> explicitly.");
188
+ return;
189
+ }
190
+ }
191
+ const structured = runtime === "codex"
192
+ ? parseCodexJsonl(content)
193
+ : parseClaudeTranscript(content);
194
+ // R2: derive (source_session_id, source_rig) honestly. Override
195
+ // flags > parsed session_meta (jsonl) > supplied --source-session
196
+ // arg. Throws an Error with explicit operator guidance when the
197
+ // honest-provenance policy can't be satisfied.
198
+ let provenance;
199
+ try {
200
+ provenance = deriveProvenance(opts, structured.sessionMeta?.sessionId ?? null, hasJsonl);
201
+ }
202
+ catch (err) {
203
+ reportFailure(err.message);
204
+ return;
205
+ }
206
+ const writeOpts = buildWritePacketOptions(opts, structured, runtime, sourceCwdFallback, provenance.sourceSessionId, provenance.sourceRig);
207
+ const result = await writePacket(writeOpts);
208
+ // Per Quality Lesson v9: log only metadata, NOT transcript content.
209
+ console.log(`packet: ${result.targetDir}`);
210
+ console.log(`files: ${result.files.length}`);
211
+ for (const f of result.files) {
212
+ console.log(` - ${f}`);
213
+ }
214
+ console.log(`messages: ${structured.messageCount}`);
215
+ console.log(`omitted-classes: ${Object.entries(structured.omittedCounts).filter(([, v]) => v > 0).map(([k, v]) => `${k}=${v}`).join(",") || "(none)"}`);
216
+ }
217
+ catch (err) {
218
+ reportFailure(err.message);
219
+ }
220
+ });
221
+ cmd.command("read")
222
+ .description("Render a restore packet contents (human or --json)")
223
+ .argument("<packet-dir>", "Packet directory path")
224
+ .option("--json", "Emit machine-readable JSON output")
225
+ .action(async (packetDir, opts) => {
226
+ const dir = resolvePath(packetDir);
227
+ const summaryPath = joinPath(dir, "restore-summary.json");
228
+ if (!existsSync(summaryPath)) {
229
+ console.error(`rig restore-packet read: restore-summary.json not found at ${summaryPath}.`);
230
+ process.exitCode = 2;
231
+ return;
232
+ }
233
+ let summary;
234
+ try {
235
+ summary = JSON.parse(readFileSync(summaryPath, "utf-8"));
236
+ }
237
+ catch (err) {
238
+ console.error(`rig restore-packet read: restore-summary.json is not valid JSON: ${err.message}.`);
239
+ process.exitCode = 2;
240
+ return;
241
+ }
242
+ if (opts.json) {
243
+ // Per IMPL § M3: --json emits raw restore-summary.json content
244
+ // verbatim; round-trippable.
245
+ console.log(JSON.stringify(summary, null, 2));
246
+ return;
247
+ }
248
+ // Human output: restore-instructions body + summary metadata + transcript digest.
249
+ const instructionsPath = joinPath(dir, "restore-instructions.md");
250
+ if (existsSync(instructionsPath)) {
251
+ console.log(readFileSync(instructionsPath, "utf-8"));
252
+ }
253
+ else {
254
+ console.log("(restore-instructions.md absent in packet directory)");
255
+ }
256
+ console.log("--- Summary metadata ---");
257
+ const metadataKeys = [
258
+ "source_session_id",
259
+ "source_rig",
260
+ "source_cwd",
261
+ "source_runtime",
262
+ "target_rig",
263
+ "target_runtime",
264
+ "generator_version",
265
+ ];
266
+ for (const k of metadataKeys) {
267
+ const v = summary[k];
268
+ console.log(`${k}: ${typeof v === "string" ? v : JSON.stringify(v)}`);
269
+ }
270
+ const blt = summary.bounded_latest_transcript;
271
+ if (blt) {
272
+ console.log(`bounded_latest_transcript.bound: ${blt.bound}`);
273
+ console.log(`bounded_latest_transcript.message_count: ${blt.message_count}`);
274
+ }
275
+ const omittedClasses = summary.omitted_classes;
276
+ console.log(`omitted_classes: ${Array.isArray(omittedClasses) ? omittedClasses.join(",") || "(none)" : "(unknown)"}`);
277
+ // Transcript digest line (per IMPL § M3 + contract § 1 parity rule).
278
+ const transcriptPath = joinPath(dir, "transcript.md");
279
+ const hasFullTranscriptKey = Object.prototype.hasOwnProperty.call(summary, "full_transcript");
280
+ if (existsSync(transcriptPath)) {
281
+ const sz = statSync(transcriptPath).size;
282
+ console.log(`transcript.md: ${sz} bytes`);
283
+ if (!hasFullTranscriptKey) {
284
+ console.log("(parity warning: transcript.md present but full_transcript summary key absent)");
285
+ }
286
+ }
287
+ else {
288
+ if (hasFullTranscriptKey) {
289
+ console.log("(parity warning: full_transcript summary key present but transcript.md absent)");
290
+ }
291
+ else {
292
+ console.log("transcript.md absent (full_transcript key absent in summary; valid per parity rule)");
293
+ }
294
+ }
295
+ });
296
+ cmd.command("validate")
297
+ .description("Validate a restore packet against the v0 schema")
298
+ .argument("<packet-dir>", "Packet directory path")
299
+ .option("--json", "Emit machine-readable validation report")
300
+ .action(async (packetDir, opts) => {
301
+ const dir = resolvePath(packetDir);
302
+ const errors = [];
303
+ // Packet-shape check: 4 required files per contract § 1.
304
+ for (const required of REQUIRED_PACKET_FILES) {
305
+ const p = joinPath(dir, required);
306
+ if (!existsSync(p)) {
307
+ errors.push({
308
+ field: required,
309
+ value: "<missing>",
310
+ rule: `packet-shape: required file missing at ${p}`,
311
+ severity: "error",
312
+ });
313
+ }
314
+ }
315
+ // Schema validation if restore-summary.json exists.
316
+ let summary = null;
317
+ const summaryPath = joinPath(dir, "restore-summary.json");
318
+ if (existsSync(summaryPath)) {
319
+ try {
320
+ summary = JSON.parse(readFileSync(summaryPath, "utf-8"));
321
+ }
322
+ catch (err) {
323
+ errors.push({
324
+ field: "restore-summary.json",
325
+ value: "<invalid-json>",
326
+ rule: `restore-summary.json parse failed: ${err.message}`,
327
+ severity: "error",
328
+ });
329
+ }
330
+ if (summary) {
331
+ const schemaResult = validateRestoreSummary(summary);
332
+ for (const e of schemaResult.errors)
333
+ errors.push(e);
334
+ }
335
+ }
336
+ // Parity check (per contract § 1 + § 8): full_transcript summary key
337
+ // ↔ transcript.md presence.
338
+ if (summary) {
339
+ const hasFullTranscriptKey = Object.prototype.hasOwnProperty.call(summary, "full_transcript");
340
+ const transcriptExists = existsSync(joinPath(dir, "transcript.md"));
341
+ if (hasFullTranscriptKey && !transcriptExists) {
342
+ errors.push({
343
+ field: "full_transcript",
344
+ value: "<key-present-file-absent>",
345
+ rule: "parity: full_transcript summary key present but transcript.md absent at packet directory",
346
+ severity: "error",
347
+ });
348
+ }
349
+ if (!hasFullTranscriptKey && transcriptExists) {
350
+ errors.push({
351
+ field: "transcript.md",
352
+ value: "<file-present-key-absent>",
353
+ rule: "parity: transcript.md present but full_transcript summary key absent",
354
+ severity: "error",
355
+ });
356
+ }
357
+ }
358
+ const hasErrorSeverity = errors.some((e) => e.severity === "error");
359
+ const valid = !hasErrorSeverity;
360
+ if (opts.json) {
361
+ console.log(JSON.stringify({ valid, errors }, null, 2));
362
+ }
363
+ else {
364
+ if (errors.length === 0) {
365
+ console.log(`valid: packet at ${dir} passed all checks.`);
366
+ }
367
+ else {
368
+ console.log(`${valid ? "valid (with warnings)" : "invalid"}: ${errors.length} issue(s) at ${dir}`);
369
+ for (const e of errors) {
370
+ const tag = e.severity === "warning" ? "WARNING" : "ERROR";
371
+ console.log(` [${tag}] ${e.field}: ${e.rule} (value: ${e.value})`);
372
+ }
373
+ }
374
+ }
375
+ // Per contract § 8: required-field violations / parity violations →
376
+ // exit nonzero. Optional-field warnings → exit 0.
377
+ if (hasErrorSeverity) {
378
+ process.exitCode = 2;
379
+ }
380
+ });
381
+ return cmd;
382
+ }
383
+ //# sourceMappingURL=restore-packet.js.map