@openrig/cli 0.4.3 → 0.4.6

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 (634) hide show
  1. package/daemon/assets/guidance/openrig-start.md +6 -0
  2. package/daemon/assets/plugins/openrig-core/skills/mission-slice-sop/SKILL.md +47 -21
  3. package/daemon/assets/plugins/openrig-core/skills/openrig-cmux/SKILL.md +86 -0
  4. package/daemon/assets/plugins/openrig-core/skills/openrig-herdr/SKILL.md +158 -0
  5. package/daemon/assets/plugins/openrig-core/skills/openrig-user/SKILL.md +742 -94
  6. package/daemon/dist/adapters/codex-runtime-adapter.d.ts.map +1 -1
  7. package/daemon/dist/adapters/codex-runtime-adapter.js +12 -8
  8. package/daemon/dist/adapters/codex-runtime-adapter.js.map +1 -1
  9. package/daemon/dist/adapters/pi-resume.d.ts +32 -0
  10. package/daemon/dist/adapters/pi-resume.d.ts.map +1 -0
  11. package/daemon/dist/adapters/pi-resume.js +125 -0
  12. package/daemon/dist/adapters/pi-resume.js.map +1 -0
  13. package/daemon/dist/adapters/pi-runner-protocol.d.ts +88 -0
  14. package/daemon/dist/adapters/pi-runner-protocol.d.ts.map +1 -0
  15. package/daemon/dist/adapters/pi-runner-protocol.js +153 -0
  16. package/daemon/dist/adapters/pi-runner-protocol.js.map +1 -0
  17. package/daemon/dist/adapters/pi-runner.d.ts +99 -0
  18. package/daemon/dist/adapters/pi-runner.d.ts.map +1 -0
  19. package/daemon/dist/adapters/pi-runner.js +519 -0
  20. package/daemon/dist/adapters/pi-runner.js.map +1 -0
  21. package/daemon/dist/adapters/pi-runtime-adapter.d.ts +61 -0
  22. package/daemon/dist/adapters/pi-runtime-adapter.d.ts.map +1 -0
  23. package/daemon/dist/adapters/pi-runtime-adapter.js +356 -0
  24. package/daemon/dist/adapters/pi-runtime-adapter.js.map +1 -0
  25. package/daemon/dist/adapters/tmux.d.ts +22 -1
  26. package/daemon/dist/adapters/tmux.d.ts.map +1 -1
  27. package/daemon/dist/adapters/tmux.js +40 -1
  28. package/daemon/dist/adapters/tmux.js.map +1 -1
  29. package/daemon/dist/build-info.d.ts +12 -0
  30. package/daemon/dist/build-info.d.ts.map +1 -0
  31. package/daemon/dist/build-info.js +11 -0
  32. package/daemon/dist/build-info.js.map +1 -0
  33. package/daemon/dist/builtins/workflow-specs/branched-remediation.yaml +31 -0
  34. package/daemon/dist/builtins/workflow-specs/factory-rsi.yaml +152 -0
  35. package/daemon/dist/builtins/workflow-specs/gated-release.yaml +26 -0
  36. package/daemon/dist/builtins/workflow-specs/linear-build.yaml +21 -0
  37. package/daemon/dist/db/migrations/048_queue_item_evidence_ref.d.ts +18 -0
  38. package/daemon/dist/db/migrations/048_queue_item_evidence_ref.d.ts.map +1 -0
  39. package/daemon/dist/db/migrations/048_queue_item_evidence_ref.js +22 -0
  40. package/daemon/dist/db/migrations/048_queue_item_evidence_ref.js.map +1 -0
  41. package/daemon/dist/db/migrations/049_workflow_instance_version.d.ts +20 -0
  42. package/daemon/dist/db/migrations/049_workflow_instance_version.d.ts.map +1 -0
  43. package/daemon/dist/db/migrations/049_workflow_instance_version.js +24 -0
  44. package/daemon/dist/db/migrations/049_workflow_instance_version.js.map +1 -0
  45. package/daemon/dist/db/migrations/050_workflow_spec_json.d.ts +22 -0
  46. package/daemon/dist/db/migrations/050_workflow_spec_json.d.ts.map +1 -0
  47. package/daemon/dist/db/migrations/050_workflow_spec_json.js +26 -0
  48. package/daemon/dist/db/migrations/050_workflow_spec_json.js.map +1 -0
  49. package/daemon/dist/db/migrations/051_workflow_resume.d.ts +22 -0
  50. package/daemon/dist/db/migrations/051_workflow_resume.d.ts.map +1 -0
  51. package/daemon/dist/db/migrations/051_workflow_resume.js +27 -0
  52. package/daemon/dist/db/migrations/051_workflow_resume.js.map +1 -0
  53. package/daemon/dist/db/migrations/052_workflow_instance_bound_rig.d.ts +26 -0
  54. package/daemon/dist/db/migrations/052_workflow_instance_bound_rig.d.ts.map +1 -0
  55. package/daemon/dist/db/migrations/052_workflow_instance_bound_rig.js +30 -0
  56. package/daemon/dist/db/migrations/052_workflow_instance_bound_rig.js.map +1 -0
  57. package/daemon/dist/db/migrations/053_sessions_node_id_index.d.ts +48 -0
  58. package/daemon/dist/db/migrations/053_sessions_node_id_index.d.ts.map +1 -0
  59. package/daemon/dist/db/migrations/053_sessions_node_id_index.js +53 -0
  60. package/daemon/dist/db/migrations/053_sessions_node_id_index.js.map +1 -0
  61. package/daemon/dist/db/migrations/054_queue_transitions_archive.d.ts +34 -0
  62. package/daemon/dist/db/migrations/054_queue_transitions_archive.d.ts.map +1 -0
  63. package/daemon/dist/db/migrations/054_queue_transitions_archive.js +49 -0
  64. package/daemon/dist/db/migrations/054_queue_transitions_archive.js.map +1 -0
  65. package/daemon/dist/domain/claim-service.d.ts +11 -0
  66. package/daemon/dist/domain/claim-service.d.ts.map +1 -1
  67. package/daemon/dist/domain/claim-service.js +3 -1
  68. package/daemon/dist/domain/claim-service.js.map +1 -1
  69. package/daemon/dist/domain/discovery-types.d.ts +1 -1
  70. package/daemon/dist/domain/discovery-types.d.ts.map +1 -1
  71. package/daemon/dist/domain/feed/attention-aggregator.d.ts +31 -0
  72. package/daemon/dist/domain/feed/attention-aggregator.d.ts.map +1 -0
  73. package/daemon/dist/domain/feed/attention-aggregator.js +119 -0
  74. package/daemon/dist/domain/feed/attention-aggregator.js.map +1 -0
  75. package/daemon/dist/domain/files/file-write-service.d.ts +11 -2
  76. package/daemon/dist/domain/files/file-write-service.d.ts.map +1 -1
  77. package/daemon/dist/domain/files/file-write-service.js +77 -0
  78. package/daemon/dist/domain/files/file-write-service.js.map +1 -1
  79. package/daemon/dist/domain/hosts/fanout-contract.d.ts +33 -0
  80. package/daemon/dist/domain/hosts/fanout-contract.d.ts.map +1 -0
  81. package/daemon/dist/domain/hosts/fanout-contract.js +23 -0
  82. package/daemon/dist/domain/hosts/fanout-contract.js.map +1 -0
  83. package/daemon/dist/domain/hosts/hosts-registry-reader.d.ts +50 -0
  84. package/daemon/dist/domain/hosts/hosts-registry-reader.d.ts.map +1 -0
  85. package/daemon/dist/domain/hosts/hosts-registry-reader.js +184 -0
  86. package/daemon/dist/domain/hosts/hosts-registry-reader.js.map +1 -0
  87. package/daemon/dist/domain/hosts/hosts-registry-writer.d.ts +11 -0
  88. package/daemon/dist/domain/hosts/hosts-registry-writer.d.ts.map +1 -0
  89. package/daemon/dist/domain/hosts/hosts-registry-writer.js +54 -0
  90. package/daemon/dist/domain/hosts/hosts-registry-writer.js.map +1 -0
  91. package/daemon/dist/domain/hosts/read-through.d.ts +28 -0
  92. package/daemon/dist/domain/hosts/read-through.d.ts.map +1 -0
  93. package/daemon/dist/domain/hosts/read-through.js +139 -0
  94. package/daemon/dist/domain/hosts/read-through.js.map +1 -0
  95. package/daemon/dist/domain/hosts/remote-daemon-http.d.ts +56 -0
  96. package/daemon/dist/domain/hosts/remote-daemon-http.d.ts.map +1 -0
  97. package/daemon/dist/domain/hosts/remote-daemon-http.js +154 -0
  98. package/daemon/dist/domain/hosts/remote-daemon-http.js.map +1 -0
  99. package/daemon/dist/domain/human-route-enforcer.d.ts +71 -0
  100. package/daemon/dist/domain/human-route-enforcer.d.ts.map +1 -0
  101. package/daemon/dist/domain/human-route-enforcer.js +80 -0
  102. package/daemon/dist/domain/human-route-enforcer.js.map +1 -0
  103. package/daemon/dist/domain/mission-control/audit-browse.d.ts +8 -0
  104. package/daemon/dist/domain/mission-control/audit-browse.d.ts.map +1 -1
  105. package/daemon/dist/domain/mission-control/audit-browse.js +19 -0
  106. package/daemon/dist/domain/mission-control/audit-browse.js.map +1 -1
  107. package/daemon/dist/domain/mission-control/mission-control-action-log.d.ts +1 -1
  108. package/daemon/dist/domain/mission-control/mission-control-action-log.d.ts.map +1 -1
  109. package/daemon/dist/domain/mission-control/mission-control-action-log.js +4 -0
  110. package/daemon/dist/domain/mission-control/mission-control-action-log.js.map +1 -1
  111. package/daemon/dist/domain/mission-control/mission-control-fleet-cli-capability.js +1 -1
  112. package/daemon/dist/domain/mission-control/mission-control-fleet-cli-capability.js.map +1 -1
  113. package/daemon/dist/domain/mission-control/mission-control-read-layer.js +1 -1
  114. package/daemon/dist/domain/mission-control/mission-control-read-layer.js.map +1 -1
  115. package/daemon/dist/domain/mission-control/mission-control-write-contract.d.ts +28 -0
  116. package/daemon/dist/domain/mission-control/mission-control-write-contract.d.ts.map +1 -1
  117. package/daemon/dist/domain/mission-control/mission-control-write-contract.js +125 -0
  118. package/daemon/dist/domain/mission-control/mission-control-write-contract.js.map +1 -1
  119. package/daemon/dist/domain/node-inventory.d.ts +18 -0
  120. package/daemon/dist/domain/node-inventory.d.ts.map +1 -1
  121. package/daemon/dist/domain/node-inventory.js +206 -95
  122. package/daemon/dist/domain/node-inventory.js.map +1 -1
  123. package/daemon/dist/domain/node-launcher.d.ts +11 -0
  124. package/daemon/dist/domain/node-launcher.d.ts.map +1 -1
  125. package/daemon/dist/domain/node-launcher.js +10 -0
  126. package/daemon/dist/domain/node-launcher.js.map +1 -1
  127. package/daemon/dist/domain/policies/workflow-keepalive.d.ts +7 -0
  128. package/daemon/dist/domain/policies/workflow-keepalive.d.ts.map +1 -1
  129. package/daemon/dist/domain/policies/workflow-keepalive.js +93 -13
  130. package/daemon/dist/domain/policies/workflow-keepalive.js.map +1 -1
  131. package/daemon/dist/domain/ps-projection.d.ts +28 -1
  132. package/daemon/dist/domain/ps-projection.d.ts.map +1 -1
  133. package/daemon/dist/domain/ps-projection.js +76 -26
  134. package/daemon/dist/domain/ps-projection.js.map +1 -1
  135. package/daemon/dist/domain/queue-repository.d.ts +130 -1
  136. package/daemon/dist/domain/queue-repository.d.ts.map +1 -1
  137. package/daemon/dist/domain/queue-repository.js +304 -11
  138. package/daemon/dist/domain/queue-repository.js.map +1 -1
  139. package/daemon/dist/domain/queue-retention.d.ts +130 -0
  140. package/daemon/dist/domain/queue-retention.d.ts.map +1 -0
  141. package/daemon/dist/domain/queue-retention.js +224 -0
  142. package/daemon/dist/domain/queue-retention.js.map +1 -0
  143. package/daemon/dist/domain/restore-orchestrator.d.ts +5 -0
  144. package/daemon/dist/domain/restore-orchestrator.d.ts.map +1 -1
  145. package/daemon/dist/domain/restore-orchestrator.js +29 -2
  146. package/daemon/dist/domain/restore-orchestrator.js.map +1 -1
  147. package/daemon/dist/domain/resume-token-capture.d.ts +13 -0
  148. package/daemon/dist/domain/resume-token-capture.d.ts.map +1 -1
  149. package/daemon/dist/domain/resume-token-capture.js +14 -1
  150. package/daemon/dist/domain/resume-token-capture.js.map +1 -1
  151. package/daemon/dist/domain/resume-token-validation.d.ts +1 -1
  152. package/daemon/dist/domain/resume-token-validation.d.ts.map +1 -1
  153. package/daemon/dist/domain/resume-token-validation.js +58 -10
  154. package/daemon/dist/domain/resume-token-validation.js.map +1 -1
  155. package/daemon/dist/domain/review/brief-spine.d.ts +19 -0
  156. package/daemon/dist/domain/review/brief-spine.d.ts.map +1 -0
  157. package/daemon/dist/domain/review/brief-spine.js +86 -0
  158. package/daemon/dist/domain/review/brief-spine.js.map +1 -0
  159. package/daemon/dist/domain/review/compose.d.ts +277 -0
  160. package/daemon/dist/domain/review/compose.d.ts.map +1 -0
  161. package/daemon/dist/domain/review/compose.js +862 -0
  162. package/daemon/dist/domain/review/compose.js.map +1 -0
  163. package/daemon/dist/domain/review/fleet-compose.d.ts +52 -0
  164. package/daemon/dist/domain/review/fleet-compose.d.ts.map +1 -0
  165. package/daemon/dist/domain/review/fleet-compose.js +294 -0
  166. package/daemon/dist/domain/review/fleet-compose.js.map +1 -0
  167. package/daemon/dist/domain/review/freeze.d.ts +31 -0
  168. package/daemon/dist/domain/review/freeze.d.ts.map +1 -0
  169. package/daemon/dist/domain/review/freeze.js +257 -0
  170. package/daemon/dist/domain/review/freeze.js.map +1 -0
  171. package/daemon/dist/domain/review/gather.d.ts +115 -0
  172. package/daemon/dist/domain/review/gather.d.ts.map +1 -0
  173. package/daemon/dist/domain/review/gather.js +812 -0
  174. package/daemon/dist/domain/review/gather.js.map +1 -0
  175. package/daemon/dist/domain/review/types.d.ts +361 -0
  176. package/daemon/dist/domain/review/types.d.ts.map +1 -0
  177. package/daemon/dist/domain/review/types.js +35 -0
  178. package/daemon/dist/domain/review/types.js.map +1 -0
  179. package/daemon/dist/domain/rig-expansion-service.d.ts.map +1 -1
  180. package/daemon/dist/domain/rig-expansion-service.js +3 -0
  181. package/daemon/dist/domain/rig-expansion-service.js.map +1 -1
  182. package/daemon/dist/domain/rig-repository.d.ts +7 -6
  183. package/daemon/dist/domain/rig-repository.d.ts.map +1 -1
  184. package/daemon/dist/domain/rig-repository.js +33 -11
  185. package/daemon/dist/domain/rig-repository.js.map +1 -1
  186. package/daemon/dist/domain/rigspec-codec.d.ts.map +1 -1
  187. package/daemon/dist/domain/rigspec-codec.js +3 -0
  188. package/daemon/dist/domain/rigspec-codec.js.map +1 -1
  189. package/daemon/dist/domain/rigspec-exporter.d.ts.map +1 -1
  190. package/daemon/dist/domain/rigspec-exporter.js +4 -0
  191. package/daemon/dist/domain/rigspec-exporter.js.map +1 -1
  192. package/daemon/dist/domain/rigspec-instantiator.d.ts.map +1 -1
  193. package/daemon/dist/domain/rigspec-instantiator.js +11 -0
  194. package/daemon/dist/domain/rigspec-instantiator.js.map +1 -1
  195. package/daemon/dist/domain/rigspec-preflight.d.ts +6 -0
  196. package/daemon/dist/domain/rigspec-preflight.d.ts.map +1 -1
  197. package/daemon/dist/domain/rigspec-preflight.js +26 -1
  198. package/daemon/dist/domain/rigspec-preflight.js.map +1 -1
  199. package/daemon/dist/domain/rigspec-schema.d.ts.map +1 -1
  200. package/daemon/dist/domain/rigspec-schema.js +20 -1
  201. package/daemon/dist/domain/rigspec-schema.js.map +1 -1
  202. package/daemon/dist/domain/runtime-verifier.d.ts +7 -1
  203. package/daemon/dist/domain/runtime-verifier.d.ts.map +1 -1
  204. package/daemon/dist/domain/runtime-verifier.js +39 -1
  205. package/daemon/dist/domain/runtime-verifier.js.map +1 -1
  206. package/daemon/dist/domain/scope/scope-approve.d.ts +64 -0
  207. package/daemon/dist/domain/scope/scope-approve.d.ts.map +1 -0
  208. package/daemon/dist/domain/scope/scope-approve.js +153 -0
  209. package/daemon/dist/domain/scope/scope-approve.js.map +1 -0
  210. package/daemon/dist/domain/scope/scope-audit.d.ts +9 -1
  211. package/daemon/dist/domain/scope/scope-audit.d.ts.map +1 -1
  212. package/daemon/dist/domain/scope/scope-audit.js +173 -1
  213. package/daemon/dist/domain/scope/scope-audit.js.map +1 -1
  214. package/daemon/dist/domain/seat-handover-service.d.ts +9 -0
  215. package/daemon/dist/domain/seat-handover-service.d.ts.map +1 -1
  216. package/daemon/dist/domain/seat-handover-service.js +2 -0
  217. package/daemon/dist/domain/seat-handover-service.js.map +1 -1
  218. package/daemon/dist/domain/seat-identity-store.d.ts +7 -0
  219. package/daemon/dist/domain/seat-identity-store.d.ts.map +1 -1
  220. package/daemon/dist/domain/seat-identity-store.js +27 -0
  221. package/daemon/dist/domain/seat-identity-store.js.map +1 -1
  222. package/daemon/dist/domain/seat-status-service.d.ts.map +1 -1
  223. package/daemon/dist/domain/seat-status-service.js +6 -4
  224. package/daemon/dist/domain/seat-status-service.js.map +1 -1
  225. package/daemon/dist/domain/session-name.d.ts +22 -0
  226. package/daemon/dist/domain/session-name.d.ts.map +1 -1
  227. package/daemon/dist/domain/session-name.js +29 -0
  228. package/daemon/dist/domain/session-name.js.map +1 -1
  229. package/daemon/dist/domain/slices/slice-detail-projector.d.ts.map +1 -1
  230. package/daemon/dist/domain/slices/slice-detail-projector.js +4 -5
  231. package/daemon/dist/domain/slices/slice-detail-projector.js.map +1 -1
  232. package/daemon/dist/domain/spec-library-workflow-scanner.d.ts +18 -2
  233. package/daemon/dist/domain/spec-library-workflow-scanner.d.ts.map +1 -1
  234. package/daemon/dist/domain/spec-library-workflow-scanner.js +23 -1
  235. package/daemon/dist/domain/spec-library-workflow-scanner.js.map +1 -1
  236. package/daemon/dist/domain/startup-proof.d.ts +10 -6
  237. package/daemon/dist/domain/startup-proof.d.ts.map +1 -1
  238. package/daemon/dist/domain/startup-proof.js +35 -7
  239. package/daemon/dist/domain/startup-proof.js.map +1 -1
  240. package/daemon/dist/domain/successor-session-launcher.d.ts +16 -0
  241. package/daemon/dist/domain/successor-session-launcher.d.ts.map +1 -1
  242. package/daemon/dist/domain/successor-session-launcher.js +13 -0
  243. package/daemon/dist/domain/successor-session-launcher.js.map +1 -1
  244. package/daemon/dist/domain/terminal/cmux-provider-adapter.d.ts +27 -0
  245. package/daemon/dist/domain/terminal/cmux-provider-adapter.d.ts.map +1 -0
  246. package/daemon/dist/domain/terminal/cmux-provider-adapter.js +67 -0
  247. package/daemon/dist/domain/terminal/cmux-provider-adapter.js.map +1 -0
  248. package/daemon/dist/domain/terminal/herdr-adapter.d.ts +77 -0
  249. package/daemon/dist/domain/terminal/herdr-adapter.d.ts.map +1 -0
  250. package/daemon/dist/domain/terminal/herdr-adapter.js +266 -0
  251. package/daemon/dist/domain/terminal/herdr-adapter.js.map +1 -0
  252. package/daemon/dist/domain/terminal/herdr-transport.d.ts +50 -0
  253. package/daemon/dist/domain/terminal/herdr-transport.d.ts.map +1 -0
  254. package/daemon/dist/domain/terminal/herdr-transport.js +145 -0
  255. package/daemon/dist/domain/terminal/herdr-transport.js.map +1 -0
  256. package/daemon/dist/domain/terminal/terminal-provider.d.ts +88 -0
  257. package/daemon/dist/domain/terminal/terminal-provider.d.ts.map +1 -0
  258. package/daemon/dist/domain/terminal/terminal-provider.js +17 -0
  259. package/daemon/dist/domain/terminal/terminal-provider.js.map +1 -0
  260. package/daemon/dist/domain/terminal/terminal-service.d.ts +60 -0
  261. package/daemon/dist/domain/terminal/terminal-service.d.ts.map +1 -0
  262. package/daemon/dist/domain/terminal/terminal-service.js +174 -0
  263. package/daemon/dist/domain/terminal/terminal-service.js.map +1 -0
  264. package/daemon/dist/domain/terminal/terminal-views-store.d.ts +77 -0
  265. package/daemon/dist/domain/terminal/terminal-views-store.d.ts.map +1 -0
  266. package/daemon/dist/domain/terminal/terminal-views-store.js +146 -0
  267. package/daemon/dist/domain/terminal/terminal-views-store.js.map +1 -0
  268. package/daemon/dist/domain/terminal/view-composer.d.ts +42 -0
  269. package/daemon/dist/domain/terminal/view-composer.d.ts.map +1 -0
  270. package/daemon/dist/domain/terminal/view-composer.js +137 -0
  271. package/daemon/dist/domain/terminal/view-composer.js.map +1 -0
  272. package/daemon/dist/domain/tmux-option-defaults.d.ts +89 -0
  273. package/daemon/dist/domain/tmux-option-defaults.d.ts.map +1 -0
  274. package/daemon/dist/domain/tmux-option-defaults.js +132 -0
  275. package/daemon/dist/domain/tmux-option-defaults.js.map +1 -0
  276. package/daemon/dist/domain/topology/multi-rig-launcher.d.ts +49 -0
  277. package/daemon/dist/domain/topology/multi-rig-launcher.d.ts.map +1 -0
  278. package/daemon/dist/domain/topology/multi-rig-launcher.js +132 -0
  279. package/daemon/dist/domain/topology/multi-rig-launcher.js.map +1 -0
  280. package/daemon/dist/domain/topology/remote-up-leaf.d.ts +29 -0
  281. package/daemon/dist/domain/topology/remote-up-leaf.d.ts.map +1 -0
  282. package/daemon/dist/domain/topology/remote-up-leaf.js +60 -0
  283. package/daemon/dist/domain/topology/remote-up-leaf.js.map +1 -0
  284. package/daemon/dist/domain/topology/topology-manifest.d.ts +34 -0
  285. package/daemon/dist/domain/topology/topology-manifest.d.ts.map +1 -0
  286. package/daemon/dist/domain/topology/topology-manifest.js +195 -0
  287. package/daemon/dist/domain/topology/topology-manifest.js.map +1 -0
  288. package/daemon/dist/domain/types.d.ts +39 -1
  289. package/daemon/dist/domain/types.d.ts.map +1 -1
  290. package/daemon/dist/domain/types.js.map +1 -1
  291. package/daemon/dist/domain/up-command-router.d.ts +1 -1
  292. package/daemon/dist/domain/up-command-router.d.ts.map +1 -1
  293. package/daemon/dist/domain/up-command-router.js +34 -2
  294. package/daemon/dist/domain/up-command-router.js.map +1 -1
  295. package/daemon/dist/domain/user-settings/settings-store.d.ts +18 -1
  296. package/daemon/dist/domain/user-settings/settings-store.d.ts.map +1 -1
  297. package/daemon/dist/domain/user-settings/settings-store.js +201 -0
  298. package/daemon/dist/domain/user-settings/settings-store.js.map +1 -1
  299. package/daemon/dist/domain/workflow/slice-workflow-projection.d.ts.map +1 -1
  300. package/daemon/dist/domain/workflow/slice-workflow-projection.js +6 -2
  301. package/daemon/dist/domain/workflow/slice-workflow-projection.js.map +1 -1
  302. package/daemon/dist/domain/workflow-boot-sweep.d.ts +28 -0
  303. package/daemon/dist/domain/workflow-boot-sweep.d.ts.map +1 -0
  304. package/daemon/dist/domain/workflow-boot-sweep.js +102 -0
  305. package/daemon/dist/domain/workflow-boot-sweep.js.map +1 -0
  306. package/daemon/dist/domain/workflow-deadline.d.ts +74 -0
  307. package/daemon/dist/domain/workflow-deadline.d.ts.map +1 -0
  308. package/daemon/dist/domain/workflow-deadline.js +165 -0
  309. package/daemon/dist/domain/workflow-deadline.js.map +1 -0
  310. package/daemon/dist/domain/workflow-exception-escalation.d.ts +33 -0
  311. package/daemon/dist/domain/workflow-exception-escalation.d.ts.map +1 -0
  312. package/daemon/dist/domain/workflow-exception-escalation.js +104 -0
  313. package/daemon/dist/domain/workflow-exception-escalation.js.map +1 -0
  314. package/daemon/dist/domain/workflow-exception-router.d.ts +33 -0
  315. package/daemon/dist/domain/workflow-exception-router.d.ts.map +1 -0
  316. package/daemon/dist/domain/workflow-exception-router.js +96 -0
  317. package/daemon/dist/domain/workflow-exception-router.js.map +1 -0
  318. package/daemon/dist/domain/workflow-exception.d.ts +90 -0
  319. package/daemon/dist/domain/workflow-exception.d.ts.map +1 -0
  320. package/daemon/dist/domain/workflow-exception.js +122 -0
  321. package/daemon/dist/domain/workflow-exception.js.map +1 -0
  322. package/daemon/dist/domain/workflow-frontier-guard.d.ts +24 -0
  323. package/daemon/dist/domain/workflow-frontier-guard.d.ts.map +1 -0
  324. package/daemon/dist/domain/workflow-frontier-guard.js +30 -0
  325. package/daemon/dist/domain/workflow-frontier-guard.js.map +1 -0
  326. package/daemon/dist/domain/workflow-instance-store.d.ts +28 -0
  327. package/daemon/dist/domain/workflow-instance-store.d.ts.map +1 -1
  328. package/daemon/dist/domain/workflow-instance-store.js +66 -10
  329. package/daemon/dist/domain/workflow-instance-store.js.map +1 -1
  330. package/daemon/dist/domain/workflow-keepalive-arming.d.ts +35 -0
  331. package/daemon/dist/domain/workflow-keepalive-arming.d.ts.map +1 -0
  332. package/daemon/dist/domain/workflow-keepalive-arming.js +87 -0
  333. package/daemon/dist/domain/workflow-keepalive-arming.js.map +1 -0
  334. package/daemon/dist/domain/workflow-projector.d.ts +117 -2
  335. package/daemon/dist/domain/workflow-projector.d.ts.map +1 -1
  336. package/daemon/dist/domain/workflow-projector.js +672 -41
  337. package/daemon/dist/domain/workflow-projector.js.map +1 -1
  338. package/daemon/dist/domain/workflow-role-context.d.ts +57 -0
  339. package/daemon/dist/domain/workflow-role-context.d.ts.map +1 -0
  340. package/daemon/dist/domain/workflow-role-context.js +120 -0
  341. package/daemon/dist/domain/workflow-role-context.js.map +1 -0
  342. package/daemon/dist/domain/workflow-role-resolver.d.ts +65 -0
  343. package/daemon/dist/domain/workflow-role-resolver.d.ts.map +1 -0
  344. package/daemon/dist/domain/workflow-role-resolver.js +108 -0
  345. package/daemon/dist/domain/workflow-role-resolver.js.map +1 -0
  346. package/daemon/dist/domain/workflow-runtime.d.ts +157 -1
  347. package/daemon/dist/domain/workflow-runtime.d.ts.map +1 -1
  348. package/daemon/dist/domain/workflow-runtime.js +718 -11
  349. package/daemon/dist/domain/workflow-runtime.js.map +1 -1
  350. package/daemon/dist/domain/workflow-spec-cache.d.ts +26 -1
  351. package/daemon/dist/domain/workflow-spec-cache.d.ts.map +1 -1
  352. package/daemon/dist/domain/workflow-spec-cache.js +327 -13
  353. package/daemon/dist/domain/workflow-spec-cache.js.map +1 -1
  354. package/daemon/dist/domain/workflow-types.d.ts +143 -8
  355. package/daemon/dist/domain/workflow-types.d.ts.map +1 -1
  356. package/daemon/dist/domain/workflow-types.js +14 -1
  357. package/daemon/dist/domain/workflow-types.js.map +1 -1
  358. package/daemon/dist/domain/workflow-validator.d.ts +11 -1
  359. package/daemon/dist/domain/workflow-validator.d.ts.map +1 -1
  360. package/daemon/dist/domain/workflow-validator.js +246 -1
  361. package/daemon/dist/domain/workflow-validator.js.map +1 -1
  362. package/daemon/dist/domain/workspace/default-workspace-scaffold.d.ts.map +1 -1
  363. package/daemon/dist/domain/workspace/default-workspace-scaffold.js +51 -6
  364. package/daemon/dist/domain/workspace/default-workspace-scaffold.js.map +1 -1
  365. package/daemon/dist/domain/workspace/workspace-doctor.d.ts +11 -0
  366. package/daemon/dist/domain/workspace/workspace-doctor.d.ts.map +1 -1
  367. package/daemon/dist/domain/workspace/workspace-doctor.js +82 -0
  368. package/daemon/dist/domain/workspace/workspace-doctor.js.map +1 -1
  369. package/daemon/dist/index.d.ts +17 -0
  370. package/daemon/dist/index.d.ts.map +1 -1
  371. package/daemon/dist/index.js +44 -0
  372. package/daemon/dist/index.js.map +1 -1
  373. package/daemon/dist/routes/activity.js +22 -0
  374. package/daemon/dist/routes/activity.js.map +1 -1
  375. package/daemon/dist/routes/config.d.ts.map +1 -1
  376. package/daemon/dist/routes/config.js +15 -6
  377. package/daemon/dist/routes/config.js.map +1 -1
  378. package/daemon/dist/routes/files.d.ts.map +1 -1
  379. package/daemon/dist/routes/files.js +45 -1
  380. package/daemon/dist/routes/files.js.map +1 -1
  381. package/daemon/dist/routes/hosts.d.ts +5 -0
  382. package/daemon/dist/routes/hosts.d.ts.map +1 -0
  383. package/daemon/dist/routes/hosts.js +346 -0
  384. package/daemon/dist/routes/hosts.js.map +1 -0
  385. package/daemon/dist/routes/mission-control.d.ts.map +1 -1
  386. package/daemon/dist/routes/mission-control.js +67 -2
  387. package/daemon/dist/routes/mission-control.js.map +1 -1
  388. package/daemon/dist/routes/queue.d.ts +10 -9
  389. package/daemon/dist/routes/queue.d.ts.map +1 -1
  390. package/daemon/dist/routes/queue.js +305 -10
  391. package/daemon/dist/routes/queue.js.map +1 -1
  392. package/daemon/dist/routes/review.d.ts +3 -0
  393. package/daemon/dist/routes/review.d.ts.map +1 -0
  394. package/daemon/dist/routes/review.js +195 -0
  395. package/daemon/dist/routes/review.js.map +1 -0
  396. package/daemon/dist/routes/scope-approve.d.ts +3 -0
  397. package/daemon/dist/routes/scope-approve.d.ts.map +1 -0
  398. package/daemon/dist/routes/scope-approve.js +55 -0
  399. package/daemon/dist/routes/scope-approve.js.map +1 -0
  400. package/daemon/dist/routes/scope-audit.d.ts.map +1 -1
  401. package/daemon/dist/routes/scope-audit.js +28 -1
  402. package/daemon/dist/routes/scope-audit.js.map +1 -1
  403. package/daemon/dist/routes/seat.js +13 -0
  404. package/daemon/dist/routes/seat.js.map +1 -1
  405. package/daemon/dist/routes/slices.d.ts.map +1 -1
  406. package/daemon/dist/routes/slices.js +49 -9
  407. package/daemon/dist/routes/slices.js.map +1 -1
  408. package/daemon/dist/routes/terminal-ws.d.ts.map +1 -1
  409. package/daemon/dist/routes/terminal-ws.js +58 -21
  410. package/daemon/dist/routes/terminal-ws.js.map +1 -1
  411. package/daemon/dist/routes/terminal.d.ts +11 -0
  412. package/daemon/dist/routes/terminal.d.ts.map +1 -0
  413. package/daemon/dist/routes/terminal.js +104 -0
  414. package/daemon/dist/routes/terminal.js.map +1 -0
  415. package/daemon/dist/routes/up.d.ts.map +1 -1
  416. package/daemon/dist/routes/up.js +84 -0
  417. package/daemon/dist/routes/up.js.map +1 -1
  418. package/daemon/dist/routes/workflow.d.ts.map +1 -1
  419. package/daemon/dist/routes/workflow.js +102 -10
  420. package/daemon/dist/routes/workflow.js.map +1 -1
  421. package/daemon/dist/routes/workspace.js +2 -2
  422. package/daemon/dist/server.d.ts +6 -0
  423. package/daemon/dist/server.d.ts.map +1 -1
  424. package/daemon/dist/server.js +36 -1
  425. package/daemon/dist/server.js.map +1 -1
  426. package/daemon/dist/startup.d.ts.map +1 -1
  427. package/daemon/dist/startup.js +238 -14
  428. package/daemon/dist/startup.js.map +1 -1
  429. package/daemon/docs/reference/agent-startup-guide.md +1 -1
  430. package/daemon/docs/reference/product-factory-vps-runbook.md +132 -0
  431. package/daemon/docs/reference/sdlc-conventions.md +187 -0
  432. package/daemon/specs/agents/conveyor/builder/agent.yaml +1 -1
  433. package/daemon/specs/agents/conveyor/builder/guidance/role.md +1 -0
  434. package/daemon/specs/agents/conveyor/lead/agent.yaml +1 -1
  435. package/daemon/specs/agents/conveyor/lead/guidance/role.md +1 -0
  436. package/daemon/specs/agents/conveyor/planner/agent.yaml +1 -1
  437. package/daemon/specs/agents/conveyor/planner/guidance/role.md +1 -0
  438. package/daemon/specs/agents/conveyor/reviewer/agent.yaml +1 -1
  439. package/daemon/specs/agents/conveyor/reviewer/guidance/role.md +1 -0
  440. package/daemon/specs/agents/design/product-designer/agent.yaml +1 -1
  441. package/daemon/specs/agents/design/product-designer/guidance/role.md +1 -0
  442. package/daemon/specs/agents/development/implementer/agent.yaml +1 -1
  443. package/daemon/specs/agents/development/implementer/guidance/role.md +1 -0
  444. package/daemon/specs/agents/development/qa/agent.yaml +1 -1
  445. package/daemon/specs/agents/development/qa/guidance/role.md +1 -0
  446. package/daemon/specs/agents/factory-rsi/dogfood/agent.yaml +29 -0
  447. package/daemon/specs/agents/factory-rsi/dogfood/guidance/role.md +37 -0
  448. package/daemon/specs/agents/factory-rsi/release-manager/agent.yaml +29 -0
  449. package/daemon/specs/agents/factory-rsi/release-manager/guidance/role.md +40 -0
  450. package/daemon/specs/agents/orchestration/orchestrator/agent.yaml +1 -1
  451. package/daemon/specs/agents/orchestration/orchestrator/guidance/role.md +1 -0
  452. package/daemon/specs/agents/product-management/pm/agent.yaml +1 -0
  453. package/daemon/specs/agents/product-management/pm/guidance/role.md +13 -0
  454. package/daemon/specs/agents/review/independent-reviewer/agent.yaml +1 -1
  455. package/daemon/specs/agents/review/independent-reviewer/guidance/role.md +1 -0
  456. package/daemon/specs/agents/shared/agent.yaml +2 -0
  457. package/daemon/specs/agents/shared/skills/core/mission-slice-sop/SKILL.md +113 -0
  458. package/daemon/specs/agents/shared/skills/core/openrig-cmux/SKILL.md +86 -0
  459. package/daemon/specs/agents/shared/skills/core/openrig-herdr/SKILL.md +158 -0
  460. package/daemon/specs/agents/shared/skills/core/openrig-operator/SKILL.md +4 -4
  461. package/daemon/specs/agents/shared/skills/core/openrig-user/SKILL.md +75 -29
  462. package/daemon/specs/agents/shared/skills/pods/orchestration-team/SKILL.md +2 -2
  463. package/daemon/specs/rigs/focused/pm-team/CULTURE.md +4 -0
  464. package/daemon/specs/rigs/launch/factory-rsi/CULTURE.md +47 -0
  465. package/daemon/specs/rigs/launch/factory-rsi/rig.yaml +115 -0
  466. package/daemon/specs/rigs/launch/kernel/agents/operator/agent/guidance/role.md +1 -1
  467. package/daemon/specs/rigs/launch/kernel/agents/operator/agent/startup/context.md +1 -1
  468. package/daemon/specs/rigs/preview/product-team/CULTURE.md +4 -0
  469. package/dist/build-info.d.ts +8 -0
  470. package/dist/build-info.d.ts.map +1 -0
  471. package/dist/build-info.js +11 -0
  472. package/dist/build-info.js.map +1 -0
  473. package/dist/commands/broadcast.d.ts +6 -1
  474. package/dist/commands/broadcast.d.ts.map +1 -1
  475. package/dist/commands/broadcast.js +101 -15
  476. package/dist/commands/broadcast.js.map +1 -1
  477. package/dist/commands/capture.d.ts.map +1 -1
  478. package/dist/commands/capture.js +99 -8
  479. package/dist/commands/capture.js.map +1 -1
  480. package/dist/commands/config-init-workspace.d.ts.map +1 -1
  481. package/dist/commands/config-init-workspace.js +20 -4
  482. package/dist/commands/config-init-workspace.js.map +1 -1
  483. package/dist/commands/config.d.ts.map +1 -1
  484. package/dist/commands/config.js +4 -0
  485. package/dist/commands/config.js.map +1 -1
  486. package/dist/commands/doctor.js +2 -2
  487. package/dist/commands/doctor.js.map +1 -1
  488. package/dist/commands/down.d.ts.map +1 -1
  489. package/dist/commands/down.js +5 -0
  490. package/dist/commands/down.js.map +1 -1
  491. package/dist/commands/expand.js +1 -1
  492. package/dist/commands/expand.js.map +1 -1
  493. package/dist/commands/file.d.ts +7 -0
  494. package/dist/commands/file.d.ts.map +1 -0
  495. package/dist/commands/file.js +77 -0
  496. package/dist/commands/file.js.map +1 -0
  497. package/dist/commands/host.d.ts +48 -0
  498. package/dist/commands/host.d.ts.map +1 -0
  499. package/dist/commands/host.js +772 -0
  500. package/dist/commands/host.js.map +1 -0
  501. package/dist/commands/launch.d.ts.map +1 -1
  502. package/dist/commands/launch.js +5 -0
  503. package/dist/commands/launch.js.map +1 -1
  504. package/dist/commands/proof.d.ts +54 -0
  505. package/dist/commands/proof.d.ts.map +1 -0
  506. package/dist/commands/proof.js +311 -0
  507. package/dist/commands/proof.js.map +1 -0
  508. package/dist/commands/ps.d.ts +41 -7
  509. package/dist/commands/ps.d.ts.map +1 -1
  510. package/dist/commands/ps.js +353 -135
  511. package/dist/commands/ps.js.map +1 -1
  512. package/dist/commands/queue.d.ts +36 -0
  513. package/dist/commands/queue.d.ts.map +1 -1
  514. package/dist/commands/queue.js +149 -7
  515. package/dist/commands/queue.js.map +1 -1
  516. package/dist/commands/restore-packet.d.ts.map +1 -1
  517. package/dist/commands/restore-packet.js +13 -2
  518. package/dist/commands/restore-packet.js.map +1 -1
  519. package/dist/commands/scope.d.ts.map +1 -1
  520. package/dist/commands/scope.js +140 -3
  521. package/dist/commands/scope.js.map +1 -1
  522. package/dist/commands/send.d.ts.map +1 -1
  523. package/dist/commands/send.js +127 -13
  524. package/dist/commands/send.js.map +1 -1
  525. package/dist/commands/terminal.d.ts +6 -0
  526. package/dist/commands/terminal.d.ts.map +1 -0
  527. package/dist/commands/terminal.js +116 -0
  528. package/dist/commands/terminal.js.map +1 -0
  529. package/dist/commands/transcript.d.ts +6 -1
  530. package/dist/commands/transcript.d.ts.map +1 -1
  531. package/dist/commands/transcript.js +113 -30
  532. package/dist/commands/transcript.js.map +1 -1
  533. package/dist/commands/up.d.ts +2 -0
  534. package/dist/commands/up.d.ts.map +1 -1
  535. package/dist/commands/up.js +78 -2
  536. package/dist/commands/up.js.map +1 -1
  537. package/dist/commands/whoami.d.ts.map +1 -1
  538. package/dist/commands/whoami.js +11 -0
  539. package/dist/commands/whoami.js.map +1 -1
  540. package/dist/commands/workflow-errors.d.ts +23 -0
  541. package/dist/commands/workflow-errors.d.ts.map +1 -0
  542. package/dist/commands/workflow-errors.js +100 -0
  543. package/dist/commands/workflow-errors.js.map +1 -0
  544. package/dist/commands/workflow-follow.d.ts +71 -0
  545. package/dist/commands/workflow-follow.d.ts.map +1 -0
  546. package/dist/commands/workflow-follow.js +259 -0
  547. package/dist/commands/workflow-follow.js.map +1 -0
  548. package/dist/commands/workflow-render.d.ts +114 -0
  549. package/dist/commands/workflow-render.d.ts.map +1 -0
  550. package/dist/commands/workflow-render.js +223 -0
  551. package/dist/commands/workflow-render.js.map +1 -0
  552. package/dist/commands/workflow.d.ts +1 -0
  553. package/dist/commands/workflow.d.ts.map +1 -1
  554. package/dist/commands/workflow.js +278 -14
  555. package/dist/commands/workflow.js.map +1 -1
  556. package/dist/commands/workspace.js +6 -6
  557. package/dist/commands/workspace.js.map +1 -1
  558. package/dist/config-store.d.ts +19 -1
  559. package/dist/config-store.d.ts.map +1 -1
  560. package/dist/config-store.js +171 -0
  561. package/dist/config-store.js.map +1 -1
  562. package/dist/cross-host-cli-helpers.d.ts +13 -0
  563. package/dist/cross-host-cli-helpers.d.ts.map +1 -1
  564. package/dist/cross-host-cli-helpers.js +27 -0
  565. package/dist/cross-host-cli-helpers.js.map +1 -1
  566. package/dist/cross-host-executor.d.ts +1 -0
  567. package/dist/cross-host-executor.d.ts.map +1 -1
  568. package/dist/cross-host-executor.js +4 -1
  569. package/dist/cross-host-executor.js.map +1 -1
  570. package/dist/cross-host-target.d.ts +49 -0
  571. package/dist/cross-host-target.d.ts.map +1 -0
  572. package/dist/cross-host-target.js +35 -0
  573. package/dist/cross-host-target.js.map +1 -0
  574. package/dist/daemon-lifecycle.d.ts.map +1 -1
  575. package/dist/daemon-lifecycle.js +4 -1
  576. package/dist/daemon-lifecycle.js.map +1 -1
  577. package/dist/host-registry.d.ts +17 -0
  578. package/dist/host-registry.d.ts.map +1 -1
  579. package/dist/host-registry.js +64 -2
  580. package/dist/host-registry.js.map +1 -1
  581. package/dist/host-selection.d.ts +13 -0
  582. package/dist/host-selection.d.ts.map +1 -0
  583. package/dist/host-selection.js +54 -0
  584. package/dist/host-selection.js.map +1 -0
  585. package/dist/index.d.ts +2 -0
  586. package/dist/index.d.ts.map +1 -1
  587. package/dist/index.js +9 -0
  588. package/dist/index.js.map +1 -1
  589. package/dist/lib/file-transfer.d.ts +89 -0
  590. package/dist/lib/file-transfer.d.ts.map +1 -0
  591. package/dist/lib/file-transfer.js +300 -0
  592. package/dist/lib/file-transfer.js.map +1 -0
  593. package/dist/lib/hosts/fanout-contract.d.ts +33 -0
  594. package/dist/lib/hosts/fanout-contract.d.ts.map +1 -0
  595. package/dist/lib/hosts/fanout-contract.js +23 -0
  596. package/dist/lib/hosts/fanout-contract.js.map +1 -0
  597. package/dist/lib/scope/scope-audit.d.ts +9 -1
  598. package/dist/lib/scope/scope-audit.d.ts.map +1 -1
  599. package/dist/lib/scope/scope-audit.js +173 -1
  600. package/dist/lib/scope/scope-audit.js.map +1 -1
  601. package/dist/lib/scope/templates.d.ts +1 -0
  602. package/dist/lib/scope/templates.d.ts.map +1 -1
  603. package/dist/lib/scope/templates.js +9 -0
  604. package/dist/lib/scope/templates.js.map +1 -1
  605. package/dist/lib/scope-templates/backlog-deprecation.md +16 -0
  606. package/dist/lib/scope-templates/backlog-tech-debt.md +16 -0
  607. package/dist/lib/scope-templates/bug-fix.md +16 -0
  608. package/dist/lib/scope-templates/implementation-prd.md +33 -0
  609. package/dist/lib/scope-templates/mission-placeholder.md +1 -1
  610. package/dist/lib/scope-templates/mission-progress.md +1 -1
  611. package/dist/lib/scope-templates/mission-release.md +1 -1
  612. package/dist/lib/scope-templates/placeholder.md +11 -7
  613. package/dist/lib/scope-templates/proof.md +5 -1
  614. package/dist/lib/scope-templates/release-feature.md +14 -6
  615. package/dist/lib/scope-templates/research.md +16 -0
  616. package/dist/lib/scope-templates/slice-progress.md +1 -1
  617. package/dist/remote-host-ops.d.ts +1 -0
  618. package/dist/remote-host-ops.d.ts.map +1 -1
  619. package/dist/remote-host-ops.js +11 -4
  620. package/dist/remote-host-ops.js.map +1 -1
  621. package/dist/session-name.d.ts +23 -0
  622. package/dist/session-name.d.ts.map +1 -0
  623. package/dist/session-name.js +61 -0
  624. package/dist/session-name.js.map +1 -0
  625. package/dist/version.d.ts +5 -0
  626. package/dist/version.d.ts.map +1 -1
  627. package/dist/version.js +11 -1
  628. package/dist/version.js.map +1 -1
  629. package/package.json +1 -1
  630. package/ui/dist/assets/index-CFqxa0zW.css +32 -0
  631. package/ui/dist/assets/index-zrFqS7gL.js +623 -0
  632. package/ui/dist/index.html +2 -2
  633. package/ui/dist/assets/index-DYZniQcc.js +0 -597
  634. package/ui/dist/assets/index-trcb4Yf_.css +0 -32
@@ -0,0 +1,257 @@
1
+ // Living Notes Packet 2 — approval-triggered frozen export (OPR.0.4.4.20 FR-6).
2
+ //
3
+ // ONE synchronous compose-and-freeze path, invoked AFTER the approval
4
+ // stamp + audit row commit (Packet 1 FR-9's side of the interface cell).
5
+ // The renderer is a MINIMAL string-template renderer (arch pin): the
6
+ // composed doc -> one static, self-contained HTML file — CSS inline,
7
+ // images inlined as data: URIs, video referenced by LINK with its poster
8
+ // inline, zero external fetches, zero heavy dependencies. The contract is
9
+ // the ACs (file:// self-contained), not the twin build's vite plugin —
10
+ // that plugin is build-time prior art, mirrored here at runtime, not reused.
11
+ //
12
+ // Failure semantics: the stamp and audit row are never touched here — a
13
+ // failed render never un-approves. The write is exclusive-create through
14
+ // the daemon's atomic file-write path (allowlist-governed, actor-audited);
15
+ // an existing export makes re-invocation an idempotent no-op.
16
+ import * as fs from "node:fs";
17
+ import * as path from "node:path";
18
+ import { FileWriteError } from "../files/file-write-service.js";
19
+ const IMAGE_EXTS = new Set([".png", ".jpg", ".jpeg", ".gif", ".webp", ".svg"]);
20
+ const VIDEO_EXTS = new Set([".mp4", ".webm", ".mov"]);
21
+ const MIME = {
22
+ ".png": "image/png",
23
+ ".jpg": "image/jpeg",
24
+ ".jpeg": "image/jpeg",
25
+ ".gif": "image/gif",
26
+ ".webp": "image/webp",
27
+ ".svg": "image/svg+xml",
28
+ };
29
+ function esc(s) {
30
+ return (s ?? "")
31
+ .replaceAll("&", "&")
32
+ .replaceAll("<", "&lt;")
33
+ .replaceAll(">", "&gt;")
34
+ .replaceAll('"', "&quot;");
35
+ }
36
+ function dataUri(absPath) {
37
+ const ext = path.extname(absPath).toLowerCase();
38
+ const mime = MIME[ext];
39
+ if (!mime)
40
+ return null;
41
+ try {
42
+ return `data:${mime};base64,${fs.readFileSync(absPath).toString("base64")}`;
43
+ }
44
+ catch {
45
+ return null;
46
+ }
47
+ }
48
+ function verdictChip(cell) {
49
+ // G1: the chip text is the RECORDED token verbatim; tone is a separate class.
50
+ const token = cell.recordedToken ?? "missing";
51
+ return `<span class="chip tone-${cell.tone}">${esc(cell.role)}: ${esc(token)}</span>`;
52
+ }
53
+ /**
54
+ * Slice-dir containment for media inlining (rev1 fixback at d6135921 — the
55
+ * slice-19 path-containment class): the frozen export is the designed future
56
+ * broadcast payload, so a traversal/symlink ref must NEVER data-URI-inline a
57
+ * file from outside the slice dir. Resolve-prefix check first, then a
58
+ * realpath check on existing files so a symlink inside the slice cannot
59
+ * escape either. Returns the safe absolute path, or null (renders the muted
60
+ * unavailable branch — never silent, never inlined).
61
+ */
62
+ function containedMediaPath(sliceDir, ref) {
63
+ if (ref.startsWith("/"))
64
+ return null;
65
+ const rootResolved = path.resolve(sliceDir);
66
+ const resolved = path.resolve(sliceDir, ref);
67
+ if (resolved !== rootResolved && !resolved.startsWith(rootResolved + path.sep))
68
+ return null;
69
+ try {
70
+ const real = fs.realpathSync(resolved);
71
+ const realRoot = fs.realpathSync(rootResolved);
72
+ if (real !== realRoot && !real.startsWith(realRoot + path.sep))
73
+ return null;
74
+ return real;
75
+ }
76
+ catch {
77
+ // Missing file: containment already proven by the resolve-prefix check;
78
+ // the caller's existsSync/dataUri handles absence with the muted branch.
79
+ return resolved;
80
+ }
81
+ }
82
+ /** Renders media found in the slice dir: images inline, video by link + poster. */
83
+ function mediaBlock(sliceDir, mediaRefs) {
84
+ const parts = [];
85
+ const images = mediaRefs.filter((r) => IMAGE_EXTS.has(path.extname(r).toLowerCase()));
86
+ const videos = mediaRefs.filter((r) => VIDEO_EXTS.has(path.extname(r).toLowerCase()));
87
+ for (const ref of images) {
88
+ const safe = containedMediaPath(sliceDir, ref);
89
+ const uri = safe ? dataUri(safe) : null;
90
+ if (uri)
91
+ parts.push(`<figure><img src="${uri}" alt="${esc(ref)}"><figcaption>${esc(ref)}</figcaption></figure>`);
92
+ else
93
+ parts.push(`<p class="muted">${safe ? "image unavailable" : "media outside slice dir"}: ${esc(ref)}</p>`);
94
+ }
95
+ for (const ref of videos) {
96
+ if (containedMediaPath(sliceDir, ref) === null) {
97
+ parts.push(`<p class="muted">media outside slice dir: ${esc(ref)}</p>`);
98
+ continue;
99
+ }
100
+ // Video is NEVER embedded (single-file simplicity); the co-located
101
+ // screenshot poster (same basename) inlines beside the link when present.
102
+ const base = ref.slice(0, ref.length - path.extname(ref).length);
103
+ const poster = [".png", ".jpg", ".jpeg"]
104
+ .map((e) => `${base}${e}`)
105
+ .find((p) => {
106
+ const safePoster = containedMediaPath(sliceDir, p);
107
+ return safePoster !== null && fs.existsSync(safePoster);
108
+ });
109
+ const safePosterPath = poster ? containedMediaPath(sliceDir, poster) : null;
110
+ const posterUri = safePosterPath ? dataUri(safePosterPath) : null;
111
+ parts.push(`<figure>${posterUri ? `<img src="${posterUri}" alt="poster for ${esc(ref)}">` : ""}` +
112
+ `<figcaption>video (by link): <a href="${esc(ref)}">${esc(ref)}</a></figcaption></figure>`);
113
+ }
114
+ return parts.join("\n");
115
+ }
116
+ const STYLE = `
117
+ body{font-family:ui-serif,Georgia,serif;max-width:52rem;margin:2rem auto;padding:0 1rem;color:#1c1917;background:#fafaf9}
118
+ h1,h2{font-family:ui-sans-serif,system-ui,sans-serif}
119
+ .chip{display:inline-block;border:1px solid #a8a29e;border-radius:4px;padding:.1rem .45rem;margin:.1rem;font-family:ui-monospace,monospace;font-size:.8rem}
120
+ .tone-pass{background:#dcfce7}.tone-fail{background:#fee2e2}.tone-unknown{background:#f5f5f4}
121
+ .locked{border:2px solid #1c1917;padding:.6rem 1rem;margin:1rem 0;font-weight:600}
122
+ .unverified{border:3px solid #b91c1c;color:#b91c1c;padding:.6rem 1rem;margin:1rem 0;font-weight:700}
123
+ .muted{color:#78716c}
124
+ .col{border:1px solid #d6d3d1;padding: .75rem;margin:.5rem 0}
125
+ table{border-collapse:collapse;width:100%}td,th{border:1px solid #d6d3d1;padding:.3rem .5rem;text-align:left;font-size:.9rem}
126
+ img{max-width:100%;height:auto;border:1px solid #d6d3d1}
127
+ figure{margin:1rem 0}figcaption{font-size:.8rem;color:#78716c}
128
+ pre{white-space:pre-wrap;font-family:inherit}
129
+ `;
130
+ function stampLine(label, lock) {
131
+ if (!lock)
132
+ return `<p class="muted">○ ${esc(label)} — not stamped</p>`;
133
+ return lock.auditVerified
134
+ ? `<div class="locked">✓ ${esc(label)} — ${esc(lock.by)} at ${esc(lock.at)}</div>`
135
+ : `<div class="unverified">UNVERIFIED ${esc(label)} stamp — frontmatter claims ${esc(lock.by)} at ${esc(lock.at)} but NO matching audit row exists</div>`;
136
+ }
137
+ const VERIFIED_WORDS = {
138
+ verified: "✓ QA-verified against the plan",
139
+ unverified: "◇ unverified — no recorded QA comparison",
140
+ missing: "✗ missing — promised, nothing delivered",
141
+ };
142
+ /** The frozen single-file HTML for a composed slice review — the ONE
143
+ * INTENT → PLAN → DELIVERED stack (CORRECTIVE §3.1), mirrored statically. */
144
+ export function renderFrozenSliceHtml(composed, sliceDir, mediaRefs) {
145
+ const lineage = composed.lineage;
146
+ const deliveredRows = composed.delivered.items
147
+ .map((it) => `<tr><td>${esc(it.promised.text)}</td><td>${esc(VERIFIED_WORDS[it.verified] ?? it.verified)}</td><td>${esc(it.note ?? "—")}</td><td>${it.proof.length === 0 ? "—" : it.proof.map((p) => esc(p.src)).join("<br>")}</td></tr>`)
148
+ .join("\n");
149
+ // Evidence media = the source-scan refs plus the curated proof set
150
+ // (slice-relative srcs) — inlined via the same contained-path discipline.
151
+ const evidenceRefs = [
152
+ ...new Set([
153
+ ...mediaRefs,
154
+ ...composed.delivered.items.flatMap((it) => it.proof.map((p) => p.src)),
155
+ ...composed.delivered.extraProof.map((p) => p.src),
156
+ ]),
157
+ ];
158
+ return `<!doctype html>
159
+ <html lang="en">
160
+ <head>
161
+ <meta charset="utf-8">
162
+ <meta name="viewport" content="width=device-width, initial-scale=1">
163
+ <title>REVIEW — ${esc(composed.title)}</title>
164
+ <style>${STYLE}</style>
165
+ </head>
166
+ <body>
167
+ <h1>${esc(composed.title)}</h1>
168
+ <p class="muted">${esc(composed.slice)}${composed.sliceId ? ` · ${esc(composed.sliceId)}` : ""} · lane ${esc(composed.laneLabel)} · frozen from composition at ${esc(composed.composedAt)}</p>
169
+ ${stampLine("proof-lock (done)", composed.delivered.lock)}
170
+
171
+ <h2>Verify lineage</h2>
172
+ <p>proven-at: <code>${esc(lineage.candidateSha ?? "unknown")}</code> · merged-at: <code>${esc(lineage.mergeSha ?? "UNMERGED")}</code> · main tip: <code>${esc(lineage.mainTip)}</code> · ${esc(lineage.freshness)}${lineage.staleBehind !== null ? ` (${lineage.staleBehind} behind)` : ""}</p>
173
+ <p>${lineage.gateCells.map(verdictChip).join(" ")}</p>
174
+
175
+ <h2>Intent</h2>
176
+ <div class="col"><pre>${esc(composed.intent.text ?? composed.intent.degrade)}</pre></div>
177
+
178
+ <h2>Plan</h2>
179
+ <div class="col"><pre>${esc(composed.plan.concise.text ?? "—")}</pre>
180
+ ${composed.plan.lockedArtifacts.length > 0 ? `<p class="muted">locked set: ${composed.plan.lockedArtifacts.map((a) => `${esc(a.name)} (${esc(a.kind)}: ${esc(a.path)})`).join(" · ")}</p>` : ""}
181
+ ${stampLine("plan-lock (this set gets built)", composed.plan.lock)}</div>
182
+
183
+ <h2>Delivered</h2>
184
+ ${composed.delivered.items.length === 0 ? `<p class="muted">no proof contract declared in the plan</p>` : `<table><tr><th>promised</th><th>verified</th><th>QA note</th><th>curated proof</th></tr>${deliveredRows}</table>`}
185
+ ${composed.delivered.extraProof.length > 0 ? `<p class="muted">extra proof (not tied to one deliverable): ${composed.delivered.extraProof.map((p) => esc(p.src)).join(" · ")}</p>` : ""}
186
+
187
+ <h2>Evidence</h2>
188
+ ${mediaBlock(sliceDir, evidenceRefs)}
189
+
190
+ <h2>Needs-you at freeze time</h2>
191
+ ${composed.needsYou.items.length === 0 ? `<p class="muted">${esc(composed.needsYou.provenance)}</p>` : `<ul>${composed.needsYou.items.map((i) => `<li>${esc(i.summary)} <span class="muted">(${esc(i.leg)})</span></li>`).join("\n")}</ul>`}
192
+
193
+ ${composed.defects.length > 0 ? `<h2>Defect findings</h2><ul>${composed.defects.map((d) => `<li>${esc(d)}</li>`).join("")}</ul>` : ""}
194
+ </body>
195
+ </html>
196
+ `;
197
+ }
198
+ export function frozenFileName(scopeId, fallbackName, approvedAtIso) {
199
+ const id = (scopeId ?? fallbackName).replaceAll("/", "-");
200
+ const date = approvedAtIso ? approvedAtIso.slice(0, 10) : "undated";
201
+ return `REVIEW-${id}-${date}.html`;
202
+ }
203
+ /** Maps an absolute dir into (allowlist root, relative path) or null. */
204
+ export function resolveAllowlisted(allowlist, absDir) {
205
+ let real;
206
+ try {
207
+ real = fs.realpathSync(absDir);
208
+ }
209
+ catch {
210
+ return null;
211
+ }
212
+ for (const r of allowlist) {
213
+ if (real === r.canonicalPath || real.startsWith(r.canonicalPath + path.sep)) {
214
+ return { root: r.name, rel: path.relative(r.canonicalPath, real) };
215
+ }
216
+ }
217
+ return null;
218
+ }
219
+ export function freezeSliceExport(opts) {
220
+ const { composed } = opts;
221
+ if (!composed.delivered.lock) {
222
+ return {
223
+ ok: false,
224
+ error: "stamp_missing",
225
+ message: `slice '${composed.slice}' carries no delivery approval stamp; the freeze fires only after the approve verb commits (stamp + audit row stand regardless of this render)`,
226
+ };
227
+ }
228
+ const mapped = resolveAllowlisted(opts.allowlist, opts.sliceDir);
229
+ if (!mapped) {
230
+ return {
231
+ ok: false,
232
+ error: "allowlist_missing",
233
+ message: `slice folder '${opts.sliceDir}' is not under any OPENRIG_FILES_ALLOWLIST root — the freeze write path is allowlist-governed`,
234
+ hint: `add OPENRIG_FILES_ALLOWLIST=<name>:${path.dirname(opts.sliceDir)} (or a parent root) and restart the daemon`,
235
+ };
236
+ }
237
+ const fileName = frozenFileName(composed.sliceId, composed.slice, composed.delivered.lock.at);
238
+ const relPath = path.join(mapped.rel, fileName);
239
+ const html = renderFrozenSliceHtml(composed, opts.sliceDir, opts.mediaRefs);
240
+ try {
241
+ const result = opts.writeService.createAtomic({ rootName: mapped.root, path: relPath, content: html, actor: opts.actor });
242
+ return { ok: true, path: result.absolutePath, alreadyFrozen: false };
243
+ }
244
+ catch (err) {
245
+ if (err instanceof FileWriteError && err.code === "target_exists") {
246
+ // Idempotent re-invoke for the same approval: the export already exists
247
+ // and frozen exports are never rewritten (invariant 8).
248
+ return { ok: true, path: path.join(opts.sliceDir, fileName), alreadyFrozen: true };
249
+ }
250
+ return {
251
+ ok: false,
252
+ error: "write_failed",
253
+ message: `freeze render/write failed (the approval stamp and audit row still stand; re-invoke after fixing): ${err instanceof Error ? err.message : String(err)}`,
254
+ };
255
+ }
256
+ }
257
+ //# sourceMappingURL=freeze.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"freeze.js","sourceRoot":"","sources":["../../../src/domain/review/freeze.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,115 @@
1
+ import type Database from "better-sqlite3";
2
+ import type { SliceIndexer } from "../slices/slice-indexer.js";
3
+ import { type SliceComposeInputs } from "./compose.js";
4
+ import type { AgentsBand, AgentsScope, ComposedMissionReview, ComposedRigAgents, ComposedSliceReview, WorkflowRowRef } from "./types.js";
5
+ import type { AgentActivityStore } from "../agent-activity-store.js";
6
+ export interface ReviewGathererDeps {
7
+ db: Database.Database;
8
+ indexer: SliceIndexer;
9
+ /** Repo path for git lineage facts (the workspace default repo); null = degrade to unknown. */
10
+ gitRepoPath?: string | null;
11
+ /** OPR.0.4.4.22 — hook-activity reads for the agent state glyph (FR-2).
12
+ * Optional: absent → every glyph degrades to honest `unknown` (never
13
+ * guessed). Synchronous SQLite reads; no polling, no agent contact. */
14
+ activityStore?: AgentActivityStore | null;
15
+ /** Injected clock so composition stays reproducible in tests. */
16
+ now?: () => string;
17
+ }
18
+ /** OPR.0.4.6.WF4 Q6 — the ● (agent-leg) workflow-identity stamp, derived from
19
+ * the item's OWN STRUCTURED TAGS (`workflow:<name>` / `instance:<id>` /
20
+ * `step:<id>` — the WF-5-ratified queryable identity), NEVER from summary /
21
+ * identity / evidenceRef prose. Returns the pointer only when BOTH required
22
+ * keys are present; a non-workflow row (no `instance:`/`workflow:` tag) →
23
+ * `undefined`, so its AttentionInput stays byte-identical (omit-when-absent).
24
+ * Pointer-only: the three identity keys, never status/deadline/class. */
25
+ export declare function workflowRefFromTags(tagsJson: string | null): WorkflowRowRef | undefined;
26
+ export declare class ReviewGatherer {
27
+ private readonly db;
28
+ private readonly indexer;
29
+ private readonly gitRepoPath;
30
+ private readonly activityStore;
31
+ private readonly now;
32
+ constructor(deps: ReviewGathererDeps);
33
+ composeSlice(name: string): ComposedSliceReview | null;
34
+ /** Composition plus the on-disk context the freeze renderer needs (FR-6). */
35
+ composeSliceWithContext(name: string): {
36
+ composed: ComposedSliceReview;
37
+ sliceDir: string;
38
+ mediaRefs: string[];
39
+ } | null;
40
+ composeMission(mission: string): ComposedMissionReview | null;
41
+ /**
42
+ * OPR.0.4.4.22 — the composed rig-agents read root (FR-1..FR-4): NEEDS
43
+ * YOU + AGENTS (health line) + SETTLED at rig scope. Pure projection over
44
+ * queue + hook-activity; nothing contacts an agent. The roster is
45
+ * active-holders UNION recently-holding (transitions-on-scope-TODAY — the
46
+ * plan-review-ruled display window, named in provenance).
47
+ */
48
+ composeRig(): ComposedRigAgents;
49
+ /** The scope-parameterized agents projection — ONE contract, all consumers. */
50
+ composeAgents(scope: AgentsScope): AgentsBand | null;
51
+ gatherSlice(name: string): SliceComposeInputs | null;
52
+ /** §3.1's ONLY genuinely new datum: the pinned plan set, a frontmatter READ
53
+ * (`locked-artifacts:` list on the slice README — the scope-fs pattern,
54
+ * zero new file kinds, zero new write machinery). Malformed entries are
55
+ * skipped, never invented. */
56
+ private parseLockedArtifacts;
57
+ private readFile;
58
+ private missionDirExists;
59
+ private readMissionMeta;
60
+ /** FR-8 freeze-moment brief write target: {absolute path, current content}. */
61
+ missionBriefTarget(mission: string): {
62
+ briefPath: string;
63
+ content: string;
64
+ } | null;
65
+ private parseFrontmatter;
66
+ private readProofArtifacts;
67
+ /** Markdown image/video refs across the composed sources (FR-5 defect scan). */
68
+ private collectMediaRefs;
69
+ private tableExists;
70
+ private columnExists;
71
+ /** Human-routed attention rows carrying the given tag (the §5 predicate is
72
+ * Packet 1's; until it lands, human-tier/human-dest/park-on-human rows are
73
+ * selected with the same shape). */
74
+ /** OPR.0.4.6.WF5 FR-3 — recorded workflow-instance views for the ▲
75
+ * band: failed + in-flight instances, the WF-1 evaluator verdict
76
+ * (consumed, never recomputed — the module import IS the single
77
+ * home), the open exception item by TAG QUERY (never summary
78
+ * parsing), and the non-open-frontier anomaly check. Read-only;
79
+ * absent tables (pre-workflow DBs) return []. */
80
+ private gatherWorkflowExceptions;
81
+ private attentionForTag;
82
+ /** Sessions holding active work on the named slices (null = rig-wide).
83
+ * Region membership derives from work-on-scope, never rig co-residency.
84
+ * Runtime/idle telemetry is honest-unknown at v1 (queue-derived only). */
85
+ private agentsForSlices;
86
+ /** FR-1 roster: agents HOLDING active work on any slice-tagged item, UNION
87
+ * agents RECENTLY holding (their slice-tagged items transitioned today —
88
+ * the ruled display window). Membership derives from work-on-scope,
89
+ * never rig co-residency. */
90
+ private rigRoster;
91
+ /** FR-2 telemetry enrichment: runtime from the sessions/nodes tables, the
92
+ * active/idle light from recorded hook activity (AgentActivityStore).
93
+ * Anything unprovable stays honest-unknown — never guessed. */
94
+ private withTelemetry;
95
+ private sessionRuntimes;
96
+ /** Rig-scope NEEDS YOU: ALL human-routed active items (no tag filter). */
97
+ private attentionAll;
98
+ /** FR-4: today's closed handoffs from the transitions log — the SETTLED
99
+ * band and the health line's handoff count come from the SAME query
100
+ * (two renders, one computation). */
101
+ private settledToday;
102
+ /** FR-3/FR-4: in-progress slice work past closure_required_at, rig-wide.
103
+ * Feeds both the derived NEEDS YOU exception and the health count. */
104
+ private overdueWork;
105
+ private hasActiveQitem;
106
+ /** §4 — the two staged-approval stamps (arch F-A: the SHIPPED verb's
107
+ * frontmatter fields), each cross-checked against the pinned
108
+ * scope-approval audit shape (`approval_scope` inside audit_notes_json).
109
+ * A stamp with no matching row -> auditVerified false (UNVERIFIED stamp,
110
+ * rendered loudly — never a block). */
111
+ private gatherApproval;
112
+ private git;
113
+ private gatherGitFacts;
114
+ }
115
+ //# sourceMappingURL=gather.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gather.d.ts","sourceRoot":"","sources":["../../../src/domain/review/gather.ts"],"names":[],"mappings":"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"}