@openrig/cli 0.2.0 → 0.3.1

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 (635) hide show
  1. package/daemon/assets/plugins/openrig-core/.claude-plugin/plugin.json +15 -0
  2. package/daemon/assets/plugins/openrig-core/.codex-plugin/plugin.json +24 -0
  3. package/daemon/assets/plugins/openrig-core/LICENSE +200 -0
  4. package/daemon/assets/plugins/openrig-core/README.md +42 -0
  5. package/daemon/assets/plugins/openrig-core/hooks/claude.json +78 -0
  6. package/daemon/assets/plugins/openrig-core/hooks/codex.json +37 -0
  7. package/daemon/assets/{openrig-activity-hook-relay.cjs → plugins/openrig-core/hooks/scripts/activity-relay.cjs} +12 -0
  8. package/daemon/assets/plugins/openrig-core/hooks/scripts/compaction-restore-bridge.cjs +172 -0
  9. package/daemon/assets/plugins/openrig-core/skills/agent-startup-and-context-ingestion/SKILL.md +104 -0
  10. package/daemon/assets/plugins/openrig-core/skills/claude-compaction-restore/SKILL.md +131 -0
  11. package/daemon/assets/plugins/openrig-core/skills/claude-compaction-restore/scripts/precompact-hook.mjs +174 -0
  12. package/daemon/assets/plugins/openrig-core/skills/claude-compaction-restore/scripts/restore-from-jsonl.mjs +433 -0
  13. package/daemon/assets/plugins/openrig-core/skills/claude-compaction-restore/templates/compact-instruction.md +1 -0
  14. package/daemon/assets/plugins/openrig-core/skills/claude-compaction-restore/templates/post-compact-restore-instruction.md +1 -0
  15. package/daemon/assets/plugins/openrig-core/skills/forming-an-openrig-mental-model/SKILL.md +305 -0
  16. package/daemon/{specs/agents/shared/skills/rig-architect → assets/plugins/openrig-core/skills/openrig-architect}/SKILL.md +38 -19
  17. package/daemon/assets/plugins/openrig-core/skills/openrig-operator/SKILL.md +222 -0
  18. package/daemon/assets/plugins/openrig-core/skills/openrig-user/SKILL.md +597 -0
  19. package/daemon/assets/plugins/openrig-core/skills/queue-handoff/SKILL.md +122 -0
  20. package/daemon/assets/plugins/openrig-core/skills/seat-continuity-and-handover/SKILL.md +137 -0
  21. package/daemon/assets/vm-preview-fixtures/README.md +48 -0
  22. package/daemon/assets/vm-preview-fixtures/workflows/sample-basic-loop.yaml +79 -0
  23. package/daemon/dist/adapters/claude-code-adapter.d.ts +11 -3
  24. package/daemon/dist/adapters/claude-code-adapter.d.ts.map +1 -1
  25. package/daemon/dist/adapters/claude-code-adapter.js +58 -60
  26. package/daemon/dist/adapters/claude-code-adapter.js.map +1 -1
  27. package/daemon/dist/adapters/cmux-transport.d.ts.map +1 -1
  28. package/daemon/dist/adapters/cmux-transport.js +81 -2
  29. package/daemon/dist/adapters/cmux-transport.js.map +1 -1
  30. package/daemon/dist/adapters/cmux.d.ts +4 -0
  31. package/daemon/dist/adapters/cmux.d.ts.map +1 -1
  32. package/daemon/dist/adapters/cmux.js +87 -0
  33. package/daemon/dist/adapters/cmux.js.map +1 -1
  34. package/daemon/dist/adapters/codex-runtime-adapter.d.ts +14 -3
  35. package/daemon/dist/adapters/codex-runtime-adapter.d.ts.map +1 -1
  36. package/daemon/dist/adapters/codex-runtime-adapter.js +43 -57
  37. package/daemon/dist/adapters/codex-runtime-adapter.js.map +1 -1
  38. package/daemon/dist/builtins/workflow-specs/basic-loop.yaml +76 -0
  39. package/daemon/dist/builtins/workflow-specs/conveyor.yaml +80 -0
  40. package/daemon/dist/db/migrations/026_inbox_entries.d.ts +1 -1
  41. package/daemon/dist/db/migrations/026_inbox_entries.js +1 -1
  42. package/daemon/dist/db/migrations/029_classifier_leases.d.ts +1 -1
  43. package/daemon/dist/db/migrations/029_classifier_leases.js +1 -1
  44. package/daemon/dist/db/migrations/037_mission_control_actions.d.ts +51 -0
  45. package/daemon/dist/db/migrations/037_mission_control_actions.d.ts.map +1 -0
  46. package/daemon/dist/db/migrations/037_mission_control_actions.js +74 -0
  47. package/daemon/dist/db/migrations/037_mission_control_actions.js.map +1 -0
  48. package/daemon/dist/db/migrations/038_workspace_primitive.d.ts +16 -0
  49. package/daemon/dist/db/migrations/038_workspace_primitive.d.ts.map +1 -0
  50. package/daemon/dist/db/migrations/038_workspace_primitive.js +20 -0
  51. package/daemon/dist/db/migrations/038_workspace_primitive.js.map +1 -0
  52. package/daemon/dist/db/migrations/039_queue_target_repo.d.ts +16 -0
  53. package/daemon/dist/db/migrations/039_queue_target_repo.d.ts.map +1 -0
  54. package/daemon/dist/db/migrations/039_queue_target_repo.js +21 -0
  55. package/daemon/dist/db/migrations/039_queue_target_repo.js.map +1 -0
  56. package/daemon/dist/db/migrations/040_workflow_specs_diagnostic.d.ts +32 -0
  57. package/daemon/dist/db/migrations/040_workflow_specs_diagnostic.d.ts.map +1 -0
  58. package/daemon/dist/db/migrations/040_workflow_specs_diagnostic.js +37 -0
  59. package/daemon/dist/db/migrations/040_workflow_specs_diagnostic.js.map +1 -0
  60. package/daemon/dist/domain/active-lens-store.d.ts +23 -0
  61. package/daemon/dist/domain/active-lens-store.d.ts.map +1 -0
  62. package/daemon/dist/domain/active-lens-store.js +87 -0
  63. package/daemon/dist/domain/active-lens-store.js.map +1 -0
  64. package/daemon/dist/domain/agent-images/agent-image-library-service.d.ts +68 -0
  65. package/daemon/dist/domain/agent-images/agent-image-library-service.d.ts.map +1 -0
  66. package/daemon/dist/domain/agent-images/agent-image-library-service.js +339 -0
  67. package/daemon/dist/domain/agent-images/agent-image-library-service.js.map +1 -0
  68. package/daemon/dist/domain/agent-images/agent-image-types.d.ts +113 -0
  69. package/daemon/dist/domain/agent-images/agent-image-types.d.ts.map +1 -0
  70. package/daemon/dist/domain/agent-images/agent-image-types.js +24 -0
  71. package/daemon/dist/domain/agent-images/agent-image-types.js.map +1 -0
  72. package/daemon/dist/domain/agent-images/evidence-guard.d.ts +26 -0
  73. package/daemon/dist/domain/agent-images/evidence-guard.d.ts.map +1 -0
  74. package/daemon/dist/domain/agent-images/evidence-guard.js +185 -0
  75. package/daemon/dist/domain/agent-images/evidence-guard.js.map +1 -0
  76. package/daemon/dist/domain/agent-images/manifest-parser.d.ts +3 -0
  77. package/daemon/dist/domain/agent-images/manifest-parser.d.ts.map +1 -0
  78. package/daemon/dist/domain/agent-images/manifest-parser.js +114 -0
  79. package/daemon/dist/domain/agent-images/manifest-parser.js.map +1 -0
  80. package/daemon/dist/domain/agent-images/resume-token-discovery.d.ts +28 -0
  81. package/daemon/dist/domain/agent-images/resume-token-discovery.d.ts.map +1 -0
  82. package/daemon/dist/domain/agent-images/resume-token-discovery.js +83 -0
  83. package/daemon/dist/domain/agent-images/resume-token-discovery.js.map +1 -0
  84. package/daemon/dist/domain/agent-images/snapshot-capturer.d.ts +36 -0
  85. package/daemon/dist/domain/agent-images/snapshot-capturer.d.ts.map +1 -0
  86. package/daemon/dist/domain/agent-images/snapshot-capturer.js +58 -0
  87. package/daemon/dist/domain/agent-images/snapshot-capturer.js.map +1 -0
  88. package/daemon/dist/domain/agent-manifest.d.ts.map +1 -1
  89. package/daemon/dist/domain/agent-manifest.js +116 -37
  90. package/daemon/dist/domain/agent-manifest.js.map +1 -1
  91. package/daemon/dist/domain/agent-resolver.js +1 -1
  92. package/daemon/dist/domain/agent-resolver.js.map +1 -1
  93. package/daemon/dist/domain/agent-starter-resolver.d.ts +10 -16
  94. package/daemon/dist/domain/agent-starter-resolver.d.ts.map +1 -1
  95. package/daemon/dist/domain/agent-starter-resolver.js +11 -13
  96. package/daemon/dist/domain/agent-starter-resolver.js.map +1 -1
  97. package/daemon/dist/domain/classifier-lease-manager.d.ts +1 -1
  98. package/daemon/dist/domain/classifier-lease-manager.js +1 -1
  99. package/daemon/dist/domain/claude-compaction-enforcer.d.ts +81 -0
  100. package/daemon/dist/domain/claude-compaction-enforcer.d.ts.map +1 -0
  101. package/daemon/dist/domain/claude-compaction-enforcer.js +242 -0
  102. package/daemon/dist/domain/claude-compaction-enforcer.js.map +1 -0
  103. package/daemon/dist/domain/cmux-layout-service.d.ts +41 -0
  104. package/daemon/dist/domain/cmux-layout-service.d.ts.map +1 -0
  105. package/daemon/dist/domain/cmux-layout-service.js +184 -0
  106. package/daemon/dist/domain/cmux-layout-service.js.map +1 -0
  107. package/daemon/dist/domain/conflict-detector.d.ts.map +1 -1
  108. package/daemon/dist/domain/conflict-detector.js +6 -3
  109. package/daemon/dist/domain/conflict-detector.js.map +1 -1
  110. package/daemon/dist/domain/context-monitor.d.ts +20 -5
  111. package/daemon/dist/domain/context-monitor.d.ts.map +1 -1
  112. package/daemon/dist/domain/context-monitor.js +63 -13
  113. package/daemon/dist/domain/context-monitor.js.map +1 -1
  114. package/daemon/dist/domain/context-packs/bundle-assembler.d.ts +49 -0
  115. package/daemon/dist/domain/context-packs/bundle-assembler.d.ts.map +1 -0
  116. package/daemon/dist/domain/context-packs/bundle-assembler.js +81 -0
  117. package/daemon/dist/domain/context-packs/bundle-assembler.js.map +1 -0
  118. package/daemon/dist/domain/context-packs/context-pack-library-service.d.ts +41 -0
  119. package/daemon/dist/domain/context-packs/context-pack-library-service.d.ts.map +1 -0
  120. package/daemon/dist/domain/context-packs/context-pack-library-service.js +148 -0
  121. package/daemon/dist/domain/context-packs/context-pack-library-service.js.map +1 -0
  122. package/daemon/dist/domain/context-packs/context-pack-types.d.ts +64 -0
  123. package/daemon/dist/domain/context-packs/context-pack-types.d.ts.map +1 -0
  124. package/daemon/dist/domain/context-packs/context-pack-types.js +22 -0
  125. package/daemon/dist/domain/context-packs/context-pack-types.js.map +1 -0
  126. package/daemon/dist/domain/context-packs/manifest-parser.d.ts +3 -0
  127. package/daemon/dist/domain/context-packs/manifest-parser.d.ts.map +1 -0
  128. package/daemon/dist/domain/context-packs/manifest-parser.js +74 -0
  129. package/daemon/dist/domain/context-packs/manifest-parser.js.map +1 -0
  130. package/daemon/dist/domain/context-usage-store.d.ts +14 -1
  131. package/daemon/dist/domain/context-usage-store.d.ts.map +1 -1
  132. package/daemon/dist/domain/context-usage-store.js +156 -1
  133. package/daemon/dist/domain/context-usage-store.js.map +1 -1
  134. package/daemon/dist/domain/files/file-write-service.d.ts +61 -0
  135. package/daemon/dist/domain/files/file-write-service.d.ts.map +1 -0
  136. package/daemon/dist/domain/files/file-write-service.js +180 -0
  137. package/daemon/dist/domain/files/file-write-service.js.map +1 -0
  138. package/daemon/dist/domain/files/path-safety.d.ts +47 -0
  139. package/daemon/dist/domain/files/path-safety.d.ts.map +1 -0
  140. package/daemon/dist/domain/files/path-safety.js +176 -0
  141. package/daemon/dist/domain/files/path-safety.js.map +1 -0
  142. package/daemon/dist/domain/graph-projection.d.ts +14 -1
  143. package/daemon/dist/domain/graph-projection.d.ts.map +1 -1
  144. package/daemon/dist/domain/graph-projection.js +8 -0
  145. package/daemon/dist/domain/graph-projection.js.map +1 -1
  146. package/daemon/dist/domain/install-engine.d.ts.map +1 -1
  147. package/daemon/dist/domain/install-engine.js +22 -6
  148. package/daemon/dist/domain/install-engine.js.map +1 -1
  149. package/daemon/dist/domain/install-verifier.d.ts.map +1 -1
  150. package/daemon/dist/domain/install-verifier.js +10 -5
  151. package/daemon/dist/domain/install-verifier.js.map +1 -1
  152. package/daemon/dist/domain/kernel-boot-tracker.d.ts +74 -0
  153. package/daemon/dist/domain/kernel-boot-tracker.d.ts.map +1 -0
  154. package/daemon/dist/domain/kernel-boot-tracker.js +213 -0
  155. package/daemon/dist/domain/kernel-boot-tracker.js.map +1 -0
  156. package/daemon/dist/domain/kernel-boot.d.ts +50 -0
  157. package/daemon/dist/domain/kernel-boot.d.ts.map +1 -0
  158. package/daemon/dist/domain/kernel-boot.js +147 -0
  159. package/daemon/dist/domain/kernel-boot.js.map +1 -0
  160. package/daemon/dist/domain/managed-blocks.d.ts.map +1 -1
  161. package/daemon/dist/domain/managed-blocks.js +22 -3
  162. package/daemon/dist/domain/managed-blocks.js.map +1 -1
  163. package/daemon/dist/domain/mission-control/audit-browse.d.ts +26 -0
  164. package/daemon/dist/domain/mission-control/audit-browse.d.ts.map +1 -0
  165. package/daemon/dist/domain/mission-control/audit-browse.js +101 -0
  166. package/daemon/dist/domain/mission-control/audit-browse.js.map +1 -0
  167. package/daemon/dist/domain/mission-control/mission-control-action-log.d.ts +51 -0
  168. package/daemon/dist/domain/mission-control/mission-control-action-log.d.ts.map +1 -0
  169. package/daemon/dist/domain/mission-control/mission-control-action-log.js +124 -0
  170. package/daemon/dist/domain/mission-control/mission-control-action-log.js.map +1 -0
  171. package/daemon/dist/domain/mission-control/mission-control-fleet-cli-capability.d.ts +131 -0
  172. package/daemon/dist/domain/mission-control/mission-control-fleet-cli-capability.d.ts.map +1 -0
  173. package/daemon/dist/domain/mission-control/mission-control-fleet-cli-capability.js +232 -0
  174. package/daemon/dist/domain/mission-control/mission-control-fleet-cli-capability.js.map +1 -0
  175. package/daemon/dist/domain/mission-control/mission-control-read-layer.d.ts +90 -0
  176. package/daemon/dist/domain/mission-control/mission-control-read-layer.d.ts.map +1 -0
  177. package/daemon/dist/domain/mission-control/mission-control-read-layer.js +279 -0
  178. package/daemon/dist/domain/mission-control/mission-control-read-layer.js.map +1 -0
  179. package/daemon/dist/domain/mission-control/mission-control-write-contract.d.ts +69 -0
  180. package/daemon/dist/domain/mission-control/mission-control-write-contract.d.ts.map +1 -0
  181. package/daemon/dist/domain/mission-control/mission-control-write-contract.js +302 -0
  182. package/daemon/dist/domain/mission-control/mission-control-write-contract.js.map +1 -0
  183. package/daemon/dist/domain/mission-control/notification-adapter-ntfy.d.ts +18 -0
  184. package/daemon/dist/domain/mission-control/notification-adapter-ntfy.d.ts.map +1 -0
  185. package/daemon/dist/domain/mission-control/notification-adapter-ntfy.js +48 -0
  186. package/daemon/dist/domain/mission-control/notification-adapter-ntfy.js.map +1 -0
  187. package/daemon/dist/domain/mission-control/notification-adapter-types.d.ts +25 -0
  188. package/daemon/dist/domain/mission-control/notification-adapter-types.d.ts.map +1 -0
  189. package/daemon/dist/domain/mission-control/notification-adapter-types.js +7 -0
  190. package/daemon/dist/domain/mission-control/notification-adapter-types.js.map +1 -0
  191. package/daemon/dist/domain/mission-control/notification-adapter-webhook.d.ts +27 -0
  192. package/daemon/dist/domain/mission-control/notification-adapter-webhook.d.ts.map +1 -0
  193. package/daemon/dist/domain/mission-control/notification-adapter-webhook.js +47 -0
  194. package/daemon/dist/domain/mission-control/notification-adapter-webhook.js.map +1 -0
  195. package/daemon/dist/domain/mission-control/notification-dispatcher.d.ts +53 -0
  196. package/daemon/dist/domain/mission-control/notification-dispatcher.d.ts.map +1 -0
  197. package/daemon/dist/domain/mission-control/notification-dispatcher.js +181 -0
  198. package/daemon/dist/domain/mission-control/notification-dispatcher.js.map +1 -0
  199. package/daemon/dist/domain/node-inventory.d.ts.map +1 -1
  200. package/daemon/dist/domain/node-inventory.js +24 -0
  201. package/daemon/dist/domain/node-inventory.js.map +1 -1
  202. package/daemon/dist/domain/node-launcher.d.ts.map +1 -1
  203. package/daemon/dist/domain/node-launcher.js +7 -5
  204. package/daemon/dist/domain/node-launcher.js.map +1 -1
  205. package/daemon/dist/domain/plugin-discovery-service.d.ts +150 -0
  206. package/daemon/dist/domain/plugin-discovery-service.d.ts.map +1 -0
  207. package/daemon/dist/domain/plugin-discovery-service.js +468 -0
  208. package/daemon/dist/domain/plugin-discovery-service.js.map +1 -0
  209. package/daemon/dist/domain/plugin-vendor-service.d.ts +54 -0
  210. package/daemon/dist/domain/plugin-vendor-service.d.ts.map +1 -0
  211. package/daemon/dist/domain/plugin-vendor-service.js +111 -0
  212. package/daemon/dist/domain/plugin-vendor-service.js.map +1 -0
  213. package/daemon/dist/domain/preview/preview-rate-limiter.d.ts +20 -0
  214. package/daemon/dist/domain/preview/preview-rate-limiter.d.ts.map +1 -0
  215. package/daemon/dist/domain/preview/preview-rate-limiter.js +46 -0
  216. package/daemon/dist/domain/preview/preview-rate-limiter.js.map +1 -0
  217. package/daemon/dist/domain/profile-resolver.d.ts +8 -3
  218. package/daemon/dist/domain/profile-resolver.d.ts.map +1 -1
  219. package/daemon/dist/domain/profile-resolver.js +69 -15
  220. package/daemon/dist/domain/profile-resolver.js.map +1 -1
  221. package/daemon/dist/domain/progress/progress-indexer.d.ts +73 -0
  222. package/daemon/dist/domain/progress/progress-indexer.d.ts.map +1 -0
  223. package/daemon/dist/domain/progress/progress-indexer.js +210 -0
  224. package/daemon/dist/domain/progress/progress-indexer.js.map +1 -0
  225. package/daemon/dist/domain/project-classifier.d.ts +1 -1
  226. package/daemon/dist/domain/projection-planner.d.ts +7 -1
  227. package/daemon/dist/domain/projection-planner.d.ts.map +1 -1
  228. package/daemon/dist/domain/projection-planner.js +44 -4
  229. package/daemon/dist/domain/projection-planner.js.map +1 -1
  230. package/daemon/dist/domain/queue-repository.d.ts +30 -5
  231. package/daemon/dist/domain/queue-repository.d.ts.map +1 -1
  232. package/daemon/dist/domain/queue-repository.js +94 -27
  233. package/daemon/dist/domain/queue-repository.js.map +1 -1
  234. package/daemon/dist/domain/rehydrate-eligibility.d.ts +16 -0
  235. package/daemon/dist/domain/rehydrate-eligibility.d.ts.map +1 -0
  236. package/daemon/dist/domain/rehydrate-eligibility.js +43 -0
  237. package/daemon/dist/domain/rehydrate-eligibility.js.map +1 -0
  238. package/daemon/dist/domain/restore-check-service.d.ts.map +1 -1
  239. package/daemon/dist/domain/restore-check-service.js +19 -6
  240. package/daemon/dist/domain/restore-check-service.js.map +1 -1
  241. package/daemon/dist/domain/restore-orchestrator.d.ts.map +1 -1
  242. package/daemon/dist/domain/restore-orchestrator.js +4 -2
  243. package/daemon/dist/domain/restore-orchestrator.js.map +1 -1
  244. package/daemon/dist/domain/rig-repository.d.ts +14 -0
  245. package/daemon/dist/domain/rig-repository.d.ts.map +1 -1
  246. package/daemon/dist/domain/rig-repository.js +41 -0
  247. package/daemon/dist/domain/rig-repository.js.map +1 -1
  248. package/daemon/dist/domain/rig-teardown.d.ts.map +1 -1
  249. package/daemon/dist/domain/rig-teardown.js +5 -0
  250. package/daemon/dist/domain/rig-teardown.js.map +1 -1
  251. package/daemon/dist/domain/rigspec-codec.d.ts.map +1 -1
  252. package/daemon/dist/domain/rigspec-codec.js +15 -0
  253. package/daemon/dist/domain/rigspec-codec.js.map +1 -1
  254. package/daemon/dist/domain/rigspec-instantiator.d.ts +29 -0
  255. package/daemon/dist/domain/rigspec-instantiator.d.ts.map +1 -1
  256. package/daemon/dist/domain/rigspec-instantiator.js +136 -4
  257. package/daemon/dist/domain/rigspec-instantiator.js.map +1 -1
  258. package/daemon/dist/domain/rigspec-schema.d.ts.map +1 -1
  259. package/daemon/dist/domain/rigspec-schema.js +157 -4
  260. package/daemon/dist/domain/rigspec-schema.js.map +1 -1
  261. package/daemon/dist/domain/runtime-adapter.d.ts +11 -0
  262. package/daemon/dist/domain/runtime-adapter.d.ts.map +1 -1
  263. package/daemon/dist/domain/runtime-adapter.js.map +1 -1
  264. package/daemon/dist/domain/session-transport.d.ts.map +1 -1
  265. package/daemon/dist/domain/session-transport.js +33 -0
  266. package/daemon/dist/domain/session-transport.js.map +1 -1
  267. package/daemon/dist/domain/skill-discovery.d.ts +51 -0
  268. package/daemon/dist/domain/skill-discovery.d.ts.map +1 -0
  269. package/daemon/dist/domain/skill-discovery.js +144 -0
  270. package/daemon/dist/domain/skill-discovery.js.map +1 -0
  271. package/daemon/dist/domain/skill-library-discovery.d.ts +68 -0
  272. package/daemon/dist/domain/skill-library-discovery.d.ts.map +1 -0
  273. package/daemon/dist/domain/skill-library-discovery.js +144 -0
  274. package/daemon/dist/domain/skill-library-discovery.js.map +1 -0
  275. package/daemon/dist/domain/slices/slice-detail-projector.d.ts +182 -0
  276. package/daemon/dist/domain/slices/slice-detail-projector.d.ts.map +1 -0
  277. package/daemon/dist/domain/slices/slice-detail-projector.js +508 -0
  278. package/daemon/dist/domain/slices/slice-detail-projector.js.map +1 -0
  279. package/daemon/dist/domain/slices/slice-indexer.d.ts +137 -0
  280. package/daemon/dist/domain/slices/slice-indexer.d.ts.map +1 -0
  281. package/daemon/dist/domain/slices/slice-indexer.js +585 -0
  282. package/daemon/dist/domain/slices/slice-indexer.js.map +1 -0
  283. package/daemon/dist/domain/spec-library-service.d.ts +23 -2
  284. package/daemon/dist/domain/spec-library-service.d.ts.map +1 -1
  285. package/daemon/dist/domain/spec-library-service.js +31 -1
  286. package/daemon/dist/domain/spec-library-service.js.map +1 -1
  287. package/daemon/dist/domain/spec-library-workflow-scanner.d.ts +124 -0
  288. package/daemon/dist/domain/spec-library-workflow-scanner.d.ts.map +1 -0
  289. package/daemon/dist/domain/spec-library-workflow-scanner.js +325 -0
  290. package/daemon/dist/domain/spec-library-workflow-scanner.js.map +1 -0
  291. package/daemon/dist/domain/spec-review-service.d.ts +1 -1
  292. package/daemon/dist/domain/spec-review-service.d.ts.map +1 -1
  293. package/daemon/dist/domain/spec-review-service.js +14 -1
  294. package/daemon/dist/domain/spec-review-service.js.map +1 -1
  295. package/daemon/dist/domain/startup-validation.d.ts.map +1 -1
  296. package/daemon/dist/domain/startup-validation.js +57 -11
  297. package/daemon/dist/domain/startup-validation.js.map +1 -1
  298. package/daemon/dist/domain/steering/health-summary.d.ts +39 -0
  299. package/daemon/dist/domain/steering/health-summary.d.ts.map +1 -0
  300. package/daemon/dist/domain/steering/health-summary.js +100 -0
  301. package/daemon/dist/domain/steering/health-summary.js.map +1 -0
  302. package/daemon/dist/domain/steering/steering-composer.d.ts +102 -0
  303. package/daemon/dist/domain/steering/steering-composer.d.ts.map +1 -0
  304. package/daemon/dist/domain/steering/steering-composer.js +263 -0
  305. package/daemon/dist/domain/steering/steering-composer.js.map +1 -0
  306. package/daemon/dist/domain/transcript-capture.d.ts.map +1 -1
  307. package/daemon/dist/domain/transcript-capture.js +7 -4
  308. package/daemon/dist/domain/transcript-capture.js.map +1 -1
  309. package/daemon/dist/domain/transcript-rotation.d.ts +29 -0
  310. package/daemon/dist/domain/transcript-rotation.d.ts.map +1 -0
  311. package/daemon/dist/domain/transcript-rotation.js +109 -0
  312. package/daemon/dist/domain/transcript-rotation.js.map +1 -0
  313. package/daemon/dist/domain/transcript-store.d.ts.map +1 -1
  314. package/daemon/dist/domain/transcript-store.js +7 -1
  315. package/daemon/dist/domain/transcript-store.js.map +1 -1
  316. package/daemon/dist/domain/types.d.ts +128 -9
  317. package/daemon/dist/domain/types.d.ts.map +1 -1
  318. package/daemon/dist/domain/types.js +8 -1
  319. package/daemon/dist/domain/types.js.map +1 -1
  320. package/daemon/dist/domain/user-settings/settings-store.d.ts +66 -0
  321. package/daemon/dist/domain/user-settings/settings-store.d.ts.map +1 -0
  322. package/daemon/dist/domain/user-settings/settings-store.js +546 -0
  323. package/daemon/dist/domain/user-settings/settings-store.js.map +1 -0
  324. package/daemon/dist/domain/view-event-bridge.d.ts.map +1 -1
  325. package/daemon/dist/domain/view-event-bridge.js +2 -3
  326. package/daemon/dist/domain/view-event-bridge.js.map +1 -1
  327. package/daemon/dist/domain/whoami-service.d.ts +29 -0
  328. package/daemon/dist/domain/whoami-service.d.ts.map +1 -1
  329. package/daemon/dist/domain/whoami-service.js +68 -0
  330. package/daemon/dist/domain/whoami-service.js.map +1 -1
  331. package/daemon/dist/domain/workflow/slice-workflow-binding.d.ts +21 -0
  332. package/daemon/dist/domain/workflow/slice-workflow-binding.d.ts.map +1 -0
  333. package/daemon/dist/domain/workflow/slice-workflow-binding.js +103 -0
  334. package/daemon/dist/domain/workflow/slice-workflow-binding.js.map +1 -0
  335. package/daemon/dist/domain/workflow/slice-workflow-projection.d.ts +81 -0
  336. package/daemon/dist/domain/workflow/slice-workflow-projection.d.ts.map +1 -0
  337. package/daemon/dist/domain/workflow/slice-workflow-projection.js +127 -0
  338. package/daemon/dist/domain/workflow/slice-workflow-projection.js.map +1 -0
  339. package/daemon/dist/domain/workflow/starter-spec-loader.d.ts +51 -0
  340. package/daemon/dist/domain/workflow/starter-spec-loader.d.ts.map +1 -0
  341. package/daemon/dist/domain/workflow/starter-spec-loader.js +140 -0
  342. package/daemon/dist/domain/workflow/starter-spec-loader.js.map +1 -0
  343. package/daemon/dist/domain/workflow-projector.js +11 -3
  344. package/daemon/dist/domain/workflow-projector.js.map +1 -1
  345. package/daemon/dist/domain/workflow-spec-cache.d.ts +34 -0
  346. package/daemon/dist/domain/workflow-spec-cache.d.ts.map +1 -1
  347. package/daemon/dist/domain/workflow-spec-cache.js +121 -15
  348. package/daemon/dist/domain/workflow-spec-cache.js.map +1 -1
  349. package/daemon/dist/domain/workspace/default-workspace-scaffold.d.ts +6 -0
  350. package/daemon/dist/domain/workspace/default-workspace-scaffold.d.ts.map +1 -0
  351. package/daemon/dist/domain/workspace/default-workspace-scaffold.js +252 -0
  352. package/daemon/dist/domain/workspace/default-workspace-scaffold.js.map +1 -0
  353. package/daemon/dist/domain/workspace/frontmatter-validator.d.ts +40 -0
  354. package/daemon/dist/domain/workspace/frontmatter-validator.d.ts.map +1 -0
  355. package/daemon/dist/domain/workspace/frontmatter-validator.js +185 -0
  356. package/daemon/dist/domain/workspace/frontmatter-validator.js.map +1 -0
  357. package/daemon/dist/domain/workspace/getting-started-narrative.d.ts +15 -0
  358. package/daemon/dist/domain/workspace/getting-started-narrative.d.ts.map +1 -0
  359. package/daemon/dist/domain/workspace/getting-started-narrative.js +237 -0
  360. package/daemon/dist/domain/workspace/getting-started-narrative.js.map +1 -0
  361. package/daemon/dist/domain/workspace/workspace-resolver.d.ts +25 -0
  362. package/daemon/dist/domain/workspace/workspace-resolver.d.ts.map +1 -0
  363. package/daemon/dist/domain/workspace/workspace-resolver.js +86 -0
  364. package/daemon/dist/domain/workspace/workspace-resolver.js.map +1 -0
  365. package/daemon/dist/index.d.ts +2 -1
  366. package/daemon/dist/index.d.ts.map +1 -1
  367. package/daemon/dist/index.js +56 -12
  368. package/daemon/dist/index.js.map +1 -1
  369. package/daemon/dist/lib/pane-envelope.d.ts +7 -0
  370. package/daemon/dist/lib/pane-envelope.d.ts.map +1 -0
  371. package/daemon/dist/lib/pane-envelope.js +38 -0
  372. package/daemon/dist/lib/pane-envelope.js.map +1 -0
  373. package/daemon/dist/middleware/auth-bearer-token.d.ts +91 -0
  374. package/daemon/dist/middleware/auth-bearer-token.d.ts.map +1 -0
  375. package/daemon/dist/middleware/auth-bearer-token.js +236 -0
  376. package/daemon/dist/middleware/auth-bearer-token.js.map +1 -0
  377. package/daemon/dist/openrig-compat.d.ts +1 -1
  378. package/daemon/dist/openrig-compat.d.ts.map +1 -1
  379. package/daemon/dist/openrig-compat.js +6 -4
  380. package/daemon/dist/openrig-compat.js.map +1 -1
  381. package/daemon/dist/routes/agent-images.d.ts +8 -0
  382. package/daemon/dist/routes/agent-images.d.ts.map +1 -0
  383. package/daemon/dist/routes/agent-images.js +253 -0
  384. package/daemon/dist/routes/agent-images.js.map +1 -0
  385. package/daemon/dist/routes/config.d.ts +3 -0
  386. package/daemon/dist/routes/config.d.ts.map +1 -0
  387. package/daemon/dist/routes/config.js +109 -0
  388. package/daemon/dist/routes/config.js.map +1 -0
  389. package/daemon/dist/routes/context-packs.d.ts +3 -0
  390. package/daemon/dist/routes/context-packs.d.ts.map +1 -0
  391. package/daemon/dist/routes/context-packs.js +129 -0
  392. package/daemon/dist/routes/context-packs.js.map +1 -0
  393. package/daemon/dist/routes/files.d.ts +17 -0
  394. package/daemon/dist/routes/files.d.ts.map +1 -0
  395. package/daemon/dist/routes/files.js +262 -0
  396. package/daemon/dist/routes/files.js.map +1 -0
  397. package/daemon/dist/routes/health-summary.d.ts +9 -0
  398. package/daemon/dist/routes/health-summary.d.ts.map +1 -0
  399. package/daemon/dist/routes/health-summary.js +33 -0
  400. package/daemon/dist/routes/health-summary.js.map +1 -0
  401. package/daemon/dist/routes/kernel-status.d.ts +3 -0
  402. package/daemon/dist/routes/kernel-status.d.ts.map +1 -0
  403. package/daemon/dist/routes/kernel-status.js +40 -0
  404. package/daemon/dist/routes/kernel-status.js.map +1 -0
  405. package/daemon/dist/routes/mission-control.d.ts +37 -0
  406. package/daemon/dist/routes/mission-control.d.ts.map +1 -0
  407. package/daemon/dist/routes/mission-control.js +306 -0
  408. package/daemon/dist/routes/mission-control.js.map +1 -0
  409. package/daemon/dist/routes/missions.d.ts +3 -0
  410. package/daemon/dist/routes/missions.d.ts.map +1 -0
  411. package/daemon/dist/routes/missions.js +195 -0
  412. package/daemon/dist/routes/missions.js.map +1 -0
  413. package/daemon/dist/routes/plugins.d.ts +3 -0
  414. package/daemon/dist/routes/plugins.d.ts.map +1 -0
  415. package/daemon/dist/routes/plugins.js +223 -0
  416. package/daemon/dist/routes/plugins.js.map +1 -0
  417. package/daemon/dist/routes/progress.d.ts +7 -0
  418. package/daemon/dist/routes/progress.d.ts.map +1 -0
  419. package/daemon/dist/routes/progress.js +33 -0
  420. package/daemon/dist/routes/progress.js.map +1 -0
  421. package/daemon/dist/routes/queue.d.ts.map +1 -1
  422. package/daemon/dist/routes/queue.js +52 -1
  423. package/daemon/dist/routes/queue.js.map +1 -1
  424. package/daemon/dist/routes/rig-cmux.d.ts +3 -0
  425. package/daemon/dist/routes/rig-cmux.d.ts.map +1 -0
  426. package/daemon/dist/routes/rig-cmux.js +121 -0
  427. package/daemon/dist/routes/rig-cmux.js.map +1 -0
  428. package/daemon/dist/routes/rigs.d.ts +3 -0
  429. package/daemon/dist/routes/rigs.d.ts.map +1 -1
  430. package/daemon/dist/routes/rigs.js +73 -7
  431. package/daemon/dist/routes/rigs.js.map +1 -1
  432. package/daemon/dist/routes/rigspec.js +6 -3
  433. package/daemon/dist/routes/rigspec.js.map +1 -1
  434. package/daemon/dist/routes/sessions.d.ts.map +1 -1
  435. package/daemon/dist/routes/sessions.js +119 -0
  436. package/daemon/dist/routes/sessions.js.map +1 -1
  437. package/daemon/dist/routes/skills.d.ts +3 -0
  438. package/daemon/dist/routes/skills.d.ts.map +1 -0
  439. package/daemon/dist/routes/skills.js +147 -0
  440. package/daemon/dist/routes/skills.js.map +1 -0
  441. package/daemon/dist/routes/slices.d.ts +9 -0
  442. package/daemon/dist/routes/slices.d.ts.map +1 -0
  443. package/daemon/dist/routes/slices.js +207 -0
  444. package/daemon/dist/routes/slices.js.map +1 -0
  445. package/daemon/dist/routes/spec-library.d.ts.map +1 -1
  446. package/daemon/dist/routes/spec-library.js +87 -5
  447. package/daemon/dist/routes/spec-library.js.map +1 -1
  448. package/daemon/dist/routes/steering.d.ts +7 -0
  449. package/daemon/dist/routes/steering.d.ts.map +1 -0
  450. package/daemon/dist/routes/steering.js +27 -0
  451. package/daemon/dist/routes/steering.js.map +1 -0
  452. package/daemon/dist/routes/up.d.ts.map +1 -1
  453. package/daemon/dist/routes/up.js +21 -3
  454. package/daemon/dist/routes/up.js.map +1 -1
  455. package/daemon/dist/routes/whoami.d.ts.map +1 -1
  456. package/daemon/dist/routes/whoami.js +6 -1
  457. package/daemon/dist/routes/whoami.js.map +1 -1
  458. package/daemon/dist/routes/workflow.d.ts.map +1 -1
  459. package/daemon/dist/routes/workflow.js +43 -0
  460. package/daemon/dist/routes/workflow.js.map +1 -1
  461. package/daemon/dist/routes/workspace.d.ts +3 -0
  462. package/daemon/dist/routes/workspace.d.ts.map +1 -0
  463. package/daemon/dist/routes/workspace.js +53 -0
  464. package/daemon/dist/routes/workspace.js.map +1 -0
  465. package/daemon/dist/server.d.ts +82 -0
  466. package/daemon/dist/server.d.ts.map +1 -1
  467. package/daemon/dist/server.js +82 -1
  468. package/daemon/dist/server.js.map +1 -1
  469. package/daemon/dist/startup.d.ts +9 -0
  470. package/daemon/dist/startup.d.ts.map +1 -1
  471. package/daemon/dist/startup.js +577 -5
  472. package/daemon/dist/startup.js.map +1 -1
  473. package/daemon/docs/reference/agent-spec.md +7 -7
  474. package/daemon/docs/reference/agent-startup-guide.md +2 -2
  475. package/daemon/docs/reference/project-workspace.md +102 -0
  476. package/daemon/specs/agents/apps/vault-specialist/agent.yaml +1 -2
  477. package/daemon/specs/agents/apps/vault-specialist/guidance/role.md +0 -1
  478. package/daemon/specs/agents/conveyor/builder/agent.yaml +34 -0
  479. package/daemon/specs/agents/conveyor/builder/guidance/role.md +31 -0
  480. package/daemon/specs/agents/conveyor/builder/startup/context.md +9 -0
  481. package/daemon/specs/agents/conveyor/lead/agent.yaml +34 -0
  482. package/daemon/specs/agents/conveyor/lead/guidance/role.md +34 -0
  483. package/daemon/specs/agents/conveyor/lead/startup/context.md +15 -0
  484. package/daemon/specs/agents/conveyor/planner/agent.yaml +34 -0
  485. package/daemon/specs/agents/conveyor/planner/guidance/role.md +29 -0
  486. package/daemon/specs/agents/conveyor/planner/startup/context.md +12 -0
  487. package/daemon/specs/agents/conveyor/reviewer/agent.yaml +34 -0
  488. package/daemon/specs/agents/conveyor/reviewer/guidance/role.md +29 -0
  489. package/daemon/specs/agents/conveyor/reviewer/startup/context.md +10 -0
  490. package/daemon/specs/agents/design/product-designer/agent.yaml +0 -1
  491. package/daemon/specs/agents/development/implementer/agent.yaml +1 -2
  492. package/daemon/specs/agents/development/implementer/guidance/role.md +0 -1
  493. package/daemon/specs/agents/development/qa/agent.yaml +0 -1
  494. package/daemon/specs/agents/development/qa/guidance/role.md +0 -2
  495. package/daemon/specs/agents/orchestration/orchestrator/agent.yaml +1 -2
  496. package/daemon/specs/agents/orchestration/orchestrator/guidance/role.md +2 -3
  497. package/daemon/specs/agents/research/analyst/agent.yaml +0 -1
  498. package/daemon/specs/agents/research/synthesizer/agent.yaml +0 -1
  499. package/daemon/specs/agents/review/independent-reviewer/agent.yaml +0 -1
  500. package/daemon/specs/agents/shared/agent.yaml +6 -8
  501. package/daemon/specs/agents/shared/skills/core/openrig-architect/SKILL.md +361 -0
  502. package/daemon/specs/agents/shared/skills/core/openrig-installer/SKILL.md +142 -0
  503. package/daemon/specs/agents/shared/skills/core/openrig-user/SKILL.md +30 -0
  504. package/daemon/specs/agents/shared/skills/core/openrig-user-settings/SKILL.md +153 -0
  505. package/daemon/specs/agents/shared/skills/core/rig-lifecycle/SKILL.md +116 -0
  506. package/daemon/specs/agents/shared/skills/pods/development-team/SKILL.md +0 -1
  507. package/daemon/specs/agents/shared/skills/pods/orchestration-team/SKILL.md +2 -2
  508. package/daemon/specs/agents/shared/skills/process/agent-browser/LOCAL-INSIGHTS.md +6 -6
  509. package/daemon/specs/agents/shared/skills/process/agent-browser/OPENRIG.md +40 -0
  510. package/daemon/specs/agents/shared/skills/process/agent-browser/SKILL.md +10 -0
  511. package/daemon/specs/agents/shared/skills/process/brainstorming/OPENRIG.md +48 -0
  512. package/daemon/specs/agents/shared/skills/process/brainstorming/SKILL.md +11 -0
  513. package/daemon/specs/agents/shared/skills/process/dogfood/SKILL.md +5 -0
  514. package/daemon/specs/agents/shared/skills/process/executing-plans/OPENRIG.md +56 -0
  515. package/daemon/specs/agents/shared/skills/process/executing-plans/SKILL.md +10 -0
  516. package/daemon/specs/agents/shared/skills/process/frontend-design/SKILL.md +5 -0
  517. package/daemon/specs/agents/shared/skills/process/systematic-debugging/SKILL.md +5 -0
  518. package/daemon/specs/agents/shared/skills/process/test-driven-development/SKILL.md +5 -0
  519. package/daemon/specs/agents/shared/skills/process/using-superpowers/OPENRIG.md +48 -0
  520. package/daemon/specs/agents/shared/skills/process/using-superpowers/SKILL.md +11 -0
  521. package/daemon/specs/agents/shared/skills/process/verification-before-completion/SKILL.md +5 -0
  522. package/daemon/specs/agents/shared/skills/process/writing-plans/OPENRIG.md +52 -0
  523. package/daemon/specs/agents/shared/skills/process/writing-plans/SKILL.md +12 -2
  524. package/daemon/specs/rigs/launch/conveyor/CULTURE.md +34 -0
  525. package/daemon/specs/rigs/launch/conveyor/README.md +33 -0
  526. package/daemon/specs/rigs/launch/conveyor/rig.yaml +72 -0
  527. package/daemon/specs/rigs/launch/kernel/agents/advisor/lead/agent.yaml +35 -0
  528. package/daemon/specs/rigs/launch/kernel/agents/advisor/lead/guidance/role.md +50 -0
  529. package/daemon/specs/rigs/launch/kernel/agents/advisor/lead/startup/context.md +37 -0
  530. package/daemon/specs/rigs/launch/kernel/agents/operator/agent/agent.yaml +35 -0
  531. package/daemon/specs/rigs/launch/kernel/agents/operator/agent/guidance/role.md +49 -0
  532. package/daemon/specs/rigs/launch/kernel/agents/operator/agent/startup/context.md +63 -0
  533. package/daemon/specs/rigs/launch/kernel/agents/queue/worker/agent.yaml +35 -0
  534. package/daemon/specs/rigs/launch/kernel/agents/queue/worker/guidance/role.md +33 -0
  535. package/daemon/specs/rigs/launch/kernel/agents/queue/worker/startup/context.md +30 -0
  536. package/daemon/specs/rigs/launch/kernel/culture/CULTURE.md +69 -0
  537. package/daemon/specs/rigs/launch/kernel/rig-claude-only.yaml +59 -0
  538. package/daemon/specs/rigs/launch/kernel/rig-codex-only.yaml +59 -0
  539. package/daemon/specs/rigs/launch/kernel/rig.yaml +69 -0
  540. package/daemon/specs/rigs/preview/product-team/CULTURE.md +2 -2
  541. package/daemon/specs/rigs/preview/product-team/rig.yaml +3 -4
  542. package/dist/commands/agent-image.d.ts +4 -0
  543. package/dist/commands/agent-image.d.ts.map +1 -0
  544. package/dist/commands/agent-image.js +352 -0
  545. package/dist/commands/agent-image.js.map +1 -0
  546. package/dist/commands/config-init-workspace.d.ts +35 -0
  547. package/dist/commands/config-init-workspace.d.ts.map +1 -0
  548. package/dist/commands/config-init-workspace.js +553 -0
  549. package/dist/commands/config-init-workspace.js.map +1 -0
  550. package/dist/commands/config.d.ts.map +1 -1
  551. package/dist/commands/config.js +86 -18
  552. package/dist/commands/config.js.map +1 -1
  553. package/dist/commands/context-pack.d.ts +4 -0
  554. package/dist/commands/context-pack.d.ts.map +1 -0
  555. package/dist/commands/context-pack.js +357 -0
  556. package/dist/commands/context-pack.js.map +1 -0
  557. package/dist/commands/daemon.d.ts.map +1 -1
  558. package/dist/commands/daemon.js +61 -1
  559. package/dist/commands/daemon.js.map +1 -1
  560. package/dist/commands/heartbeat.d.ts.map +1 -1
  561. package/dist/commands/heartbeat.js +0 -5
  562. package/dist/commands/heartbeat.js.map +1 -1
  563. package/dist/commands/import.d.ts.map +1 -1
  564. package/dist/commands/import.js +7 -2
  565. package/dist/commands/import.js.map +1 -1
  566. package/dist/commands/plugin.d.ts +4 -0
  567. package/dist/commands/plugin.d.ts.map +1 -0
  568. package/dist/commands/plugin.js +395 -0
  569. package/dist/commands/plugin.js.map +1 -0
  570. package/dist/commands/ps.d.ts.map +1 -1
  571. package/dist/commands/ps.js +173 -14
  572. package/dist/commands/ps.js.map +1 -1
  573. package/dist/commands/queue.d.ts.map +1 -1
  574. package/dist/commands/queue.js +9 -0
  575. package/dist/commands/queue.js.map +1 -1
  576. package/dist/commands/send.d.ts +15 -0
  577. package/dist/commands/send.d.ts.map +1 -1
  578. package/dist/commands/send.js +32 -1
  579. package/dist/commands/send.js.map +1 -1
  580. package/dist/commands/specs.d.ts +4 -2
  581. package/dist/commands/specs.d.ts.map +1 -1
  582. package/dist/commands/specs.js +12 -8
  583. package/dist/commands/specs.js.map +1 -1
  584. package/dist/commands/up.d.ts.map +1 -1
  585. package/dist/commands/up.js +30 -4
  586. package/dist/commands/up.js.map +1 -1
  587. package/dist/commands/whoami.d.ts.map +1 -1
  588. package/dist/commands/whoami.js +9 -4
  589. package/dist/commands/whoami.js.map +1 -1
  590. package/dist/commands/workflow.d.ts.map +1 -1
  591. package/dist/commands/workflow.js +37 -0
  592. package/dist/commands/workflow.js.map +1 -1
  593. package/dist/commands/workspace.d.ts +6 -0
  594. package/dist/commands/workspace.d.ts.map +1 -0
  595. package/dist/commands/workspace.js +83 -0
  596. package/dist/commands/workspace.js.map +1 -0
  597. package/dist/config-store.d.ts +90 -1
  598. package/dist/config-store.d.ts.map +1 -1
  599. package/dist/config-store.js +477 -42
  600. package/dist/config-store.js.map +1 -1
  601. package/dist/daemon-lifecycle.d.ts +42 -1
  602. package/dist/daemon-lifecycle.d.ts.map +1 -1
  603. package/dist/daemon-lifecycle.js +98 -7
  604. package/dist/daemon-lifecycle.js.map +1 -1
  605. package/dist/host-registry.d.ts +1 -1
  606. package/dist/host-registry.js +1 -1
  607. package/dist/index.d.ts +5 -0
  608. package/dist/index.d.ts.map +1 -1
  609. package/dist/index.js +8 -0
  610. package/dist/index.js.map +1 -1
  611. package/dist/openrig-compat.d.ts +1 -1
  612. package/dist/openrig-compat.d.ts.map +1 -1
  613. package/dist/openrig-compat.js +6 -4
  614. package/dist/openrig-compat.js.map +1 -1
  615. package/dist/restore-packet/claude-transcript-parser.js +1 -1
  616. package/dist/restore-packet/claude-transcript-parser.js.map +1 -1
  617. package/dist/restore-packet/codex-jsonl-parser.js +1 -1
  618. package/dist/restore-packet/codex-jsonl-parser.js.map +1 -1
  619. package/package.json +2 -2
  620. package/ui/dist/assets/index-C_Q5FczU.css +1 -0
  621. package/ui/dist/assets/index-Rl3ZBrUg.js +547 -0
  622. package/ui/dist/graphics/operator-climber-monochrome.png +0 -0
  623. package/ui/dist/index.html +3 -2
  624. package/daemon/specs/agents/shared/skills/claude-compact-in-place/SKILL.md +0 -100
  625. package/daemon/specs/agents/shared/skills/mental-model-ha/SKILL.md +0 -956
  626. package/daemon/specs/agents/shared/skills/process/containerized-e2e/SKILL.md +0 -256
  627. package/daemon/specs/agents/shared/skills/process/containerized-e2e/scripts/Dockerfile +0 -39
  628. package/daemon/specs/agents/shared/skills/process/containerized-e2e/scripts/build-e2e-image.sh +0 -37
  629. package/daemon/specs/agents/shared/skills/process/containerized-e2e/templates/control-plane-test.yaml +0 -40
  630. package/daemon/specs/agents/shared/skills/process/containerized-e2e/templates/e2e-report-template.md +0 -94
  631. package/daemon/specs/agents/shared/skills/process/containerized-e2e/templates/expansion-collision-fragment.yaml +0 -13
  632. package/daemon/specs/agents/shared/skills/process/containerized-e2e/templates/expansion-pod-fragment.yaml +0 -14
  633. package/ui/dist/assets/index-B09doO8H.js +0 -139
  634. package/ui/dist/assets/index-Dec25siz.css +0 -1
  635. package/ui/dist/assets/index-GNYaWmBj.js +0 -225
@@ -1,6 +1,12 @@
1
1
  import nodePath from "node:path";
2
- export const MANAGED_BLOCK_START = (id) => `<!-- BEGIN RIGGED MANAGED BLOCK: ${id} -->`;
3
- export const MANAGED_BLOCK_END = (id) => `<!-- END RIGGED MANAGED BLOCK: ${id} -->`;
2
+ // Pre-release: projection markers that land in user-managed files
3
+ // (CLAUDE.md / AGENTS.md) carry the canonical product name. New writes
4
+ // emit the OpenRig form; legacy "RIGGED" markers from prior installs
5
+ // are still recognized by stripManagedBlocks below for clean uninstall.
6
+ export const MANAGED_BLOCK_START = (id) => `<!-- BEGIN OpenRig MANAGED BLOCK: ${id} -->`;
7
+ export const MANAGED_BLOCK_END = (id) => `<!-- END OpenRig MANAGED BLOCK: ${id} -->`;
8
+ const LEGACY_BLOCK_START = (id) => `<!-- BEGIN RIGGED MANAGED BLOCK: ${id} -->`;
9
+ const LEGACY_BLOCK_END = (id) => `<!-- END RIGGED MANAGED BLOCK: ${id} -->`;
4
10
  export function mergeManagedBlock(fs, targetPath, blockId, content, options) {
5
11
  const begin = MANAGED_BLOCK_START(blockId);
6
12
  const end = MANAGED_BLOCK_END(blockId);
@@ -15,7 +21,10 @@ export function mergeManagedBlock(fs, targetPath, blockId, content, options) {
15
21
  const replaceableIds = allReplaceIds.filter((id) => {
16
22
  const candidateBegin = MANAGED_BLOCK_START(id);
17
23
  const candidateEnd = MANAGED_BLOCK_END(id);
18
- return existing.includes(candidateBegin) && existing.includes(candidateEnd);
24
+ const legacyBegin = LEGACY_BLOCK_START(id);
25
+ const legacyEnd = LEGACY_BLOCK_END(id);
26
+ return ((existing.includes(candidateBegin) && existing.includes(candidateEnd)) ||
27
+ (existing.includes(legacyBegin) && existing.includes(legacyEnd)));
19
28
  });
20
29
  if (replaceableIds.length > 0) {
21
30
  let updated = existing;
@@ -24,6 +33,12 @@ export function mergeManagedBlock(fs, targetPath, blockId, content, options) {
24
33
  const candidateEnd = MANAGED_BLOCK_END(id);
25
34
  const regex = new RegExp(`${escapeRegex(candidateBegin)}[\\s\\S]*?${escapeRegex(candidateEnd)}`, "g");
26
35
  updated = updated.replace(regex, id === blockId ? block : "");
36
+ // Legacy marker variant from prior installs — replace with the
37
+ // OpenRig form (or strip when not the active block id).
38
+ const legacyBegin = LEGACY_BLOCK_START(id);
39
+ const legacyEnd = LEGACY_BLOCK_END(id);
40
+ const legacyRegex = new RegExp(`${escapeRegex(legacyBegin)}[\\s\\S]*?${escapeRegex(legacyEnd)}`, "g");
41
+ updated = updated.replace(legacyRegex, id === blockId ? block : "");
27
42
  }
28
43
  if (!updated.includes(begin) || !updated.includes(end)) {
29
44
  updated = `${updated.trim()}\n\n${block}`.trim();
@@ -50,7 +65,11 @@ export function removeManagedBlocksFromFile(fs, targetPath) {
50
65
  return false;
51
66
  }
52
67
  export function stripManagedBlocks(content) {
68
+ // Recognize both the OpenRig form (current writes) and the legacy
69
+ // RIGGED form (existing user files written by prior installs) so
70
+ // uninstall + cleanup paths handle both transitional states.
53
71
  return content
72
+ .replace(/(?:\n|^)\s*<!-- BEGIN OpenRig MANAGED BLOCK: [\s\S]*?<!-- END OpenRig MANAGED BLOCK: [^>]+ -->\s*(?=\n|$)/g, "\n")
54
73
  .replace(/(?:\n|^)\s*<!-- BEGIN RIGGED MANAGED BLOCK: [\s\S]*?<!-- END RIGGED MANAGED BLOCK: [^>]+ -->\s*(?=\n|$)/g, "\n")
55
74
  .replace(/\n{3,}/g, "\n\n")
56
75
  .trim();
@@ -1 +1 @@
1
- {"version":3,"file":"managed-blocks.js","sourceRoot":"","sources":["../../src/domain/managed-blocks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"managed-blocks.js","sourceRoot":"","sources":["../../src/domain/managed-blocks.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import type Database from "better-sqlite3";
2
+ import { type MissionControlActionEntry } from "./mission-control-action-log.js";
3
+ export interface AuditQueryInput {
4
+ qitemId?: string;
5
+ actionVerb?: string;
6
+ actorSession?: string;
7
+ /** ISO timestamp; rows with acted_at >= since are included. */
8
+ since?: string;
9
+ /** ISO timestamp; rows with acted_at <= until are included. */
10
+ until?: string;
11
+ /** Default 50; capped at 200. */
12
+ limit?: number;
13
+ /** Pagination cursor: returns rows whose action_id < beforeId. */
14
+ beforeId?: string;
15
+ }
16
+ export interface AuditQueryResult {
17
+ rows: MissionControlActionEntry[];
18
+ hasMore: boolean;
19
+ nextBeforeId: string | null;
20
+ }
21
+ export declare class MissionControlAuditBrowse {
22
+ private readonly db;
23
+ constructor(db: Database.Database);
24
+ query(input: AuditQueryInput): AuditQueryResult;
25
+ }
26
+ //# sourceMappingURL=audit-browse.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit-browse.d.ts","sourceRoot":"","sources":["../../../src/domain/mission-control/audit-browse.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EACL,KAAK,yBAAyB,EAG/B,MAAM,iCAAiC,CAAC;AAEzC,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,+DAA+D;IAC/D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+DAA+D;IAC/D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iCAAiC;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kEAAkE;IAClE,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,yBAAyB,EAAE,CAAC;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAoBD,qBAAa,yBAAyB;IACxB,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAAF,EAAE,EAAE,QAAQ,CAAC,QAAQ;IAElD,KAAK,CAAC,KAAK,EAAE,eAAe,GAAG,gBAAgB;CAsDhD"}
@@ -0,0 +1,101 @@
1
+ // PL-005 Phase B: read-only audit-history browse over mission_control_actions.
2
+ //
3
+ // Filters: qitem_id (exact), action_verb (exact), actor_session (exact),
4
+ // since/until (acted_at range). Pagination via before_id + limit.
5
+ // Returns {rows, has_more, next_before_id} shape so the UI can paginate.
6
+ //
7
+ // Read-only: no writers, no UPDATE/DELETE methods. Phase A's
8
+ // MissionControlActionLog is the only writer; this layer only queries.
9
+ import { MISSION_CONTROL_VERBS, } from "./mission-control-action-log.js";
10
+ const DEFAULT_LIMIT = 50;
11
+ const MAX_LIMIT = 200;
12
+ export class MissionControlAuditBrowse {
13
+ db;
14
+ constructor(db) {
15
+ this.db = db;
16
+ }
17
+ query(input) {
18
+ if (input.actionVerb && !MISSION_CONTROL_VERBS.includes(input.actionVerb)) {
19
+ throw new Error(`unknown action_verb '${input.actionVerb}'; supported: ${MISSION_CONTROL_VERBS.join(", ")}`);
20
+ }
21
+ const limit = clampLimit(input.limit);
22
+ const where = [];
23
+ const params = [];
24
+ if (input.qitemId) {
25
+ where.push("qitem_id = ?");
26
+ params.push(input.qitemId);
27
+ }
28
+ if (input.actionVerb) {
29
+ where.push("action_verb = ?");
30
+ params.push(input.actionVerb);
31
+ }
32
+ if (input.actorSession) {
33
+ where.push("actor_session = ?");
34
+ params.push(input.actorSession);
35
+ }
36
+ if (input.since) {
37
+ where.push("acted_at >= ?");
38
+ params.push(input.since);
39
+ }
40
+ if (input.until) {
41
+ where.push("acted_at <= ?");
42
+ params.push(input.until);
43
+ }
44
+ if (input.beforeId) {
45
+ // Look up the cursor row's rowid so pagination uses SQLite's
46
+ // monotonic insertion order (deterministic) rather than ULID
47
+ // action_id (whose same-ms tail is random; non-deterministic
48
+ // for tiebreaks). Filed lesson:
49
+ // feedback_ulid_tiebreaker_nondeterministic.md.
50
+ where.push("rowid < (SELECT rowid FROM mission_control_actions WHERE action_id = ?)");
51
+ params.push(input.beforeId);
52
+ }
53
+ const whereClause = where.length > 0 ? `WHERE ${where.join(" AND ")}` : "";
54
+ // Fetch limit+1 to detect hasMore without a separate count query.
55
+ // ORDER BY acted_at DESC primary; rowid DESC tiebreak (deterministic
56
+ // insertion order; safer than ULID action_id for same-ms ties).
57
+ const sql = `SELECT * FROM mission_control_actions ${whereClause}
58
+ ORDER BY acted_at DESC, rowid DESC LIMIT ?`;
59
+ const rows = this.db.prepare(sql).all(...params, limit + 1);
60
+ const hasMore = rows.length > limit;
61
+ const trimmed = hasMore ? rows.slice(0, limit) : rows;
62
+ const nextBeforeId = hasMore && trimmed.length > 0 ? trimmed[trimmed.length - 1].action_id : null;
63
+ return {
64
+ rows: trimmed.map(rowToEntry),
65
+ hasMore,
66
+ nextBeforeId,
67
+ };
68
+ }
69
+ }
70
+ function clampLimit(input) {
71
+ if (input === undefined || !Number.isFinite(input))
72
+ return DEFAULT_LIMIT;
73
+ if (input < 1)
74
+ return 1;
75
+ if (input > MAX_LIMIT)
76
+ return MAX_LIMIT;
77
+ return Math.floor(input);
78
+ }
79
+ function rowToEntry(row) {
80
+ return {
81
+ actionId: row.action_id,
82
+ actionVerb: row.action_verb,
83
+ qitemId: row.qitem_id,
84
+ actorSession: row.actor_session,
85
+ actedAt: row.acted_at,
86
+ beforeState: row.before_state_json
87
+ ? JSON.parse(row.before_state_json)
88
+ : null,
89
+ afterState: row.after_state_json
90
+ ? JSON.parse(row.after_state_json)
91
+ : null,
92
+ reason: row.reason,
93
+ annotation: row.annotation,
94
+ notifyAttempted: row.notify_attempted !== 0,
95
+ notifyResult: row.notify_result,
96
+ auditNotes: row.audit_notes_json
97
+ ? JSON.parse(row.audit_notes_json)
98
+ : null,
99
+ };
100
+ }
101
+ //# sourceMappingURL=audit-browse.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit-browse.js","sourceRoot":"","sources":["../../../src/domain/mission-control/audit-browse.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,51 @@
1
+ import type Database from "better-sqlite3";
2
+ export declare const MISSION_CONTROL_VERBS: readonly ["approve", "deny", "route", "annotate", "hold", "drop", "handoff"];
3
+ export type MissionControlVerb = (typeof MISSION_CONTROL_VERBS)[number];
4
+ export interface MissionControlActionRecordInput {
5
+ actionVerb: MissionControlVerb;
6
+ qitemId: string | null;
7
+ actorSession: string;
8
+ actedAt: string;
9
+ beforeState?: Record<string, unknown> | null;
10
+ afterState?: Record<string, unknown> | null;
11
+ reason?: string | null;
12
+ annotation?: string | null;
13
+ notifyAttempted?: boolean;
14
+ notifyResult?: string | null;
15
+ auditNotes?: Record<string, unknown> | null;
16
+ }
17
+ export interface MissionControlActionEntry {
18
+ actionId: string;
19
+ actionVerb: MissionControlVerb;
20
+ qitemId: string | null;
21
+ actorSession: string;
22
+ actedAt: string;
23
+ beforeState: Record<string, unknown> | null;
24
+ afterState: Record<string, unknown> | null;
25
+ reason: string | null;
26
+ annotation: string | null;
27
+ notifyAttempted: boolean;
28
+ notifyResult: string | null;
29
+ auditNotes: Record<string, unknown> | null;
30
+ }
31
+ export declare class MissionControlActionLogError extends Error {
32
+ readonly code: string;
33
+ readonly details?: Record<string, unknown> | undefined;
34
+ constructor(code: string, message: string, details?: Record<string, unknown> | undefined);
35
+ }
36
+ export declare class MissionControlActionLog {
37
+ private readonly db;
38
+ constructor(db: Database.Database);
39
+ /**
40
+ * Append an action record. Validates verb-specific required fields
41
+ * (annotate → annotation; hold/drop → reason). Designed to compose
42
+ * inside an outer caller-managed transaction (used by the
43
+ * write-contract for the atomic 4-step handoff).
44
+ */
45
+ record(input: MissionControlActionRecordInput): MissionControlActionEntry;
46
+ listRecent(limit?: number): MissionControlActionEntry[];
47
+ listForQitem(qitemId: string, limit?: number): MissionControlActionEntry[];
48
+ listForActor(actorSession: string, limit?: number): MissionControlActionEntry[];
49
+ countAll(): number;
50
+ }
51
+ //# sourceMappingURL=mission-control-action-log.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mission-control-action-log.d.ts","sourceRoot":"","sources":["../../../src/domain/mission-control/mission-control-action-log.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAG3C,eAAO,MAAM,qBAAqB,8EAQxB,CAAC;AAEX,MAAM,MAAM,kBAAkB,GAAG,CAAC,OAAO,qBAAqB,CAAC,CAAC,MAAM,CAAC,CAAC;AAExE,MAAM,WAAW,+BAA+B;IAC9C,UAAU,EAAE,kBAAkB,CAAC;IAC/B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC7C,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC5C,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CAC7C;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,kBAAkB,CAAC;IAC/B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC5C,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC3C,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,eAAe,EAAE,OAAO,CAAC;IACzB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CAC5C;AAiBD,qBAAa,4BAA6B,SAAQ,KAAK;aAEnC,IAAI,EAAE,MAAM;aAEZ,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;gBAFjC,IAAI,EAAE,MAAM,EAC5B,OAAO,EAAE,MAAM,EACC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,YAAA;CAKpD;AAED,qBAAa,uBAAuB;IACtB,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAAF,EAAE,EAAE,QAAQ,CAAC,QAAQ;IAElD;;;;;OAKG;IACH,MAAM,CAAC,KAAK,EAAE,+BAA+B,GAAG,yBAAyB;IA6DzE,UAAU,CAAC,KAAK,SAAK,GAAG,yBAAyB,EAAE;IAUnD,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,SAAK,GAAG,yBAAyB,EAAE;IAUtE,YAAY,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,SAAK,GAAG,yBAAyB,EAAE;IAU3E,QAAQ,IAAI,MAAM;CAMnB"}
@@ -0,0 +1,124 @@
1
+ // PL-005 Phase A: Mission Control action log (append-only).
2
+ //
3
+ // Owns inserts into mission_control_actions. Append-only at the API
4
+ // surface: only `record()` is exposed. UPDATE/DELETE/remove are not
5
+ // methods — direct SQL could mutate but is a contract violation
6
+ // enforced at this domain boundary (per PRD § Q5 + slice IMPL).
7
+ //
8
+ // Pattern mirrors PL-004 Phase C's WatchdogHistoryLog and Phase A's
9
+ // QueueTransitionLog and Phase D's WorkflowStepTrailLog.
10
+ import { ulid } from "ulid";
11
+ export const MISSION_CONTROL_VERBS = [
12
+ "approve",
13
+ "deny",
14
+ "route",
15
+ "annotate",
16
+ "hold",
17
+ "drop",
18
+ "handoff",
19
+ ];
20
+ export class MissionControlActionLogError extends Error {
21
+ code;
22
+ details;
23
+ constructor(code, message, details) {
24
+ super(message);
25
+ this.code = code;
26
+ this.details = details;
27
+ this.name = "MissionControlActionLogError";
28
+ }
29
+ }
30
+ export class MissionControlActionLog {
31
+ db;
32
+ constructor(db) {
33
+ this.db = db;
34
+ }
35
+ /**
36
+ * Append an action record. Validates verb-specific required fields
37
+ * (annotate → annotation; hold/drop → reason). Designed to compose
38
+ * inside an outer caller-managed transaction (used by the
39
+ * write-contract for the atomic 4-step handoff).
40
+ */
41
+ record(input) {
42
+ if (!MISSION_CONTROL_VERBS.includes(input.actionVerb)) {
43
+ throw new MissionControlActionLogError("verb_unknown", `unknown action_verb '${input.actionVerb}'; Phase A v1 supports: ${MISSION_CONTROL_VERBS.join(", ")}`, { actionVerb: input.actionVerb, supported: [...MISSION_CONTROL_VERBS] });
44
+ }
45
+ if (input.actionVerb === "annotate" && !input.annotation) {
46
+ throw new MissionControlActionLogError("annotation_required", `action_verb=annotate requires annotation`, { actionVerb: input.actionVerb });
47
+ }
48
+ if ((input.actionVerb === "hold" || input.actionVerb === "drop") && !input.reason) {
49
+ throw new MissionControlActionLogError("reason_required", `action_verb=${input.actionVerb} requires reason`, { actionVerb: input.actionVerb });
50
+ }
51
+ const actionId = ulid();
52
+ this.db
53
+ .prepare(`INSERT INTO mission_control_actions (
54
+ action_id, action_verb, qitem_id, actor_session, acted_at,
55
+ before_state_json, after_state_json, reason, annotation,
56
+ notify_attempted, notify_result, audit_notes_json
57
+ ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`)
58
+ .run(actionId, input.actionVerb, input.qitemId ?? null, input.actorSession, input.actedAt, input.beforeState ? JSON.stringify(input.beforeState) : null, input.afterState ? JSON.stringify(input.afterState) : null, input.reason ?? null, input.annotation ?? null, input.notifyAttempted ? 1 : 0, input.notifyResult ?? null, input.auditNotes ? JSON.stringify(input.auditNotes) : null);
59
+ return {
60
+ actionId,
61
+ actionVerb: input.actionVerb,
62
+ qitemId: input.qitemId ?? null,
63
+ actorSession: input.actorSession,
64
+ actedAt: input.actedAt,
65
+ beforeState: input.beforeState ?? null,
66
+ afterState: input.afterState ?? null,
67
+ reason: input.reason ?? null,
68
+ annotation: input.annotation ?? null,
69
+ notifyAttempted: Boolean(input.notifyAttempted),
70
+ notifyResult: input.notifyResult ?? null,
71
+ auditNotes: input.auditNotes ?? null,
72
+ };
73
+ }
74
+ listRecent(limit = 50) {
75
+ const rows = this.db
76
+ .prepare(`SELECT * FROM mission_control_actions
77
+ ORDER BY acted_at DESC, rowid DESC LIMIT ?`)
78
+ .all(limit);
79
+ return rows.map(rowToEntry);
80
+ }
81
+ listForQitem(qitemId, limit = 50) {
82
+ const rows = this.db
83
+ .prepare(`SELECT * FROM mission_control_actions WHERE qitem_id = ?
84
+ ORDER BY acted_at DESC, rowid DESC LIMIT ?`)
85
+ .all(qitemId, limit);
86
+ return rows.map(rowToEntry);
87
+ }
88
+ listForActor(actorSession, limit = 50) {
89
+ const rows = this.db
90
+ .prepare(`SELECT * FROM mission_control_actions WHERE actor_session = ?
91
+ ORDER BY acted_at DESC, rowid DESC LIMIT ?`)
92
+ .all(actorSession, limit);
93
+ return rows.map(rowToEntry);
94
+ }
95
+ countAll() {
96
+ const row = this.db
97
+ .prepare(`SELECT COUNT(*) AS n FROM mission_control_actions`)
98
+ .get();
99
+ return row.n;
100
+ }
101
+ }
102
+ function rowToEntry(row) {
103
+ return {
104
+ actionId: row.action_id,
105
+ actionVerb: row.action_verb,
106
+ qitemId: row.qitem_id,
107
+ actorSession: row.actor_session,
108
+ actedAt: row.acted_at,
109
+ beforeState: row.before_state_json
110
+ ? JSON.parse(row.before_state_json)
111
+ : null,
112
+ afterState: row.after_state_json
113
+ ? JSON.parse(row.after_state_json)
114
+ : null,
115
+ reason: row.reason,
116
+ annotation: row.annotation,
117
+ notifyAttempted: row.notify_attempted !== 0,
118
+ notifyResult: row.notify_result,
119
+ auditNotes: row.audit_notes_json
120
+ ? JSON.parse(row.audit_notes_json)
121
+ : null,
122
+ };
123
+ }
124
+ //# sourceMappingURL=mission-control-action-log.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mission-control-action-log.js","sourceRoot":"","sources":["../../../src/domain/mission-control/mission-control-action-log.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,EAAE;AACF,oEAAoE;AACpE,oEAAoE;AACpE,gEAAgE;AAChE,gEAAgE;AAChE,EAAE;AACF,oEAAoE;AACpE,yDAAyD;AAGzD,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,SAAS;IACT,MAAM;IACN,OAAO;IACP,UAAU;IACV,MAAM;IACN,MAAM;IACN,SAAS;CACD,CAAC;AAgDX,MAAM,OAAO,4BAA6B,SAAQ,KAAK;IAEnC;IAEA;IAHlB,YACkB,IAAY,EAC5B,OAAe,EACC,OAAiC;QAEjD,KAAK,CAAC,OAAO,CAAC,CAAC;QAJC,SAAI,GAAJ,IAAI,CAAQ;QAEZ,YAAO,GAAP,OAAO,CAA0B;QAGjD,IAAI,CAAC,IAAI,GAAG,8BAA8B,CAAC;IAC7C,CAAC;CACF;AAED,MAAM,OAAO,uBAAuB;IACL;IAA7B,YAA6B,EAAqB;QAArB,OAAE,GAAF,EAAE,CAAmB;IAAG,CAAC;IAEtD;;;;;OAKG;IACH,MAAM,CAAC,KAAsC;QAC3C,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;YACtD,MAAM,IAAI,4BAA4B,CACpC,cAAc,EACd,wBAAwB,KAAK,CAAC,UAAU,2BAA2B,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EACrG,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,SAAS,EAAE,CAAC,GAAG,qBAAqB,CAAC,EAAE,CACxE,CAAC;QACJ,CAAC;QACD,IAAI,KAAK,CAAC,UAAU,KAAK,UAAU,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;YACzD,MAAM,IAAI,4BAA4B,CACpC,qBAAqB,EACrB,0CAA0C,EAC1C,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,CACjC,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,UAAU,KAAK,MAAM,IAAI,KAAK,CAAC,UAAU,KAAK,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YAClF,MAAM,IAAI,4BAA4B,CACpC,iBAAiB,EACjB,eAAe,KAAK,CAAC,UAAU,kBAAkB,EACjD,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,CACjC,CAAC;QACJ,CAAC;QACD,MAAM,QAAQ,GAAG,IAAI,EAAE,CAAC;QACxB,IAAI,CAAC,EAAE;aACJ,OAAO,CACN;;;;uDAI+C,CAChD;aACA,GAAG,CACF,QAAQ,EACR,KAAK,CAAC,UAAU,EAChB,KAAK,CAAC,OAAO,IAAI,IAAI,EACrB,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,OAAO,EACb,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,EAC5D,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,EAC1D,KAAK,CAAC,MAAM,IAAI,IAAI,EACpB,KAAK,CAAC,UAAU,IAAI,IAAI,EACxB,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAC7B,KAAK,CAAC,YAAY,IAAI,IAAI,EAC1B,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAC3D,CAAC;QACJ,OAAO;YACL,QAAQ;YACR,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,IAAI;YAC9B,YAAY,EAAE,KAAK,CAAC,YAAY;YAChC,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,IAAI;YACtC,UAAU,EAAE,KAAK,CAAC,UAAU,IAAI,IAAI;YACpC,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,IAAI;YAC5B,UAAU,EAAE,KAAK,CAAC,UAAU,IAAI,IAAI;YACpC,eAAe,EAAE,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC;YAC/C,YAAY,EAAE,KAAK,CAAC,YAAY,IAAI,IAAI;YACxC,UAAU,EAAE,KAAK,CAAC,UAAU,IAAI,IAAI;SACrC,CAAC;IACJ,CAAC;IAED,UAAU,CAAC,KAAK,GAAG,EAAE;QACnB,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE;aACjB,OAAO,CACN;oDAC4C,CAC7C;aACA,GAAG,CAAC,KAAK,CAAgB,CAAC;QAC7B,OAAO,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC9B,CAAC;IAED,YAAY,CAAC,OAAe,EAAE,KAAK,GAAG,EAAE;QACtC,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE;aACjB,OAAO,CACN;oDAC4C,CAC7C;aACA,GAAG,CAAC,OAAO,EAAE,KAAK,CAAgB,CAAC;QACtC,OAAO,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC9B,CAAC;IAED,YAAY,CAAC,YAAoB,EAAE,KAAK,GAAG,EAAE;QAC3C,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE;aACjB,OAAO,CACN;oDAC4C,CAC7C;aACA,GAAG,CAAC,YAAY,EAAE,KAAK,CAAgB,CAAC;QAC3C,OAAO,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC9B,CAAC;IAED,QAAQ;QACN,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE;aAChB,OAAO,CAAC,mDAAmD,CAAC;aAC5D,GAAG,EAAmB,CAAC;QAC1B,OAAO,GAAG,CAAC,CAAC,CAAC;IACf,CAAC;CACF;AAED,SAAS,UAAU,CAAC,GAAc;IAChC,OAAO;QACL,QAAQ,EAAE,GAAG,CAAC,SAAS;QACvB,UAAU,EAAE,GAAG,CAAC,WAAiC;QACjD,OAAO,EAAE,GAAG,CAAC,QAAQ;QACrB,YAAY,EAAE,GAAG,CAAC,aAAa;QAC/B,OAAO,EAAE,GAAG,CAAC,QAAQ;QACrB,WAAW,EAAE,GAAG,CAAC,iBAAiB;YAChC,CAAC,CAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAA6B;YAChE,CAAC,CAAC,IAAI;QACR,UAAU,EAAE,GAAG,CAAC,gBAAgB;YAC9B,CAAC,CAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAA6B;YAC/D,CAAC,CAAC,IAAI;QACR,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,UAAU,EAAE,GAAG,CAAC,UAAU;QAC1B,eAAe,EAAE,GAAG,CAAC,gBAAgB,KAAK,CAAC;QAC3C,YAAY,EAAE,GAAG,CAAC,aAAa;QAC/B,UAAU,EAAE,GAAG,CAAC,gBAAgB;YAC9B,CAAC,CAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAA6B;YAC/D,CAAC,CAAC,IAAI;KACT,CAAC;AACJ,CAAC"}
@@ -0,0 +1,131 @@
1
+ import type Database from "better-sqlite3";
2
+ import type { EventBus } from "../event-bus.js";
3
+ import type { RigRepository } from "../rig-repository.js";
4
+ export interface FleetRollupRow {
5
+ rigName: string;
6
+ /** Compact 5-state activity for a fleet view. */
7
+ activityState: "active" | "idle" | "attention" | "blocked" | "degraded";
8
+ lifecycleState: string | null;
9
+ attentionReason: string | null;
10
+ lastUpdate: string;
11
+ /** v0.1.12-style label or "head" / "unknown". */
12
+ cliVersionLabel: string;
13
+ /** True if this rig was observed missing one or more allow-listed fields. */
14
+ cliDriftDetected: boolean;
15
+ }
16
+ export interface FleetRollup {
17
+ rows: FleetRollupRow[];
18
+ staleCliCount: number;
19
+ /** Fields known to be missing across the observed rigs (de-duplicated). */
20
+ degradedFields: string[];
21
+ /**
22
+ * If the fleet roll-up couldn't reach the canonical CLI source and
23
+ * fell back to a daemon-internal projection, this is the fallback
24
+ * mode label. Null when the canonical source was used.
25
+ */
26
+ sourceFallback: string | null;
27
+ }
28
+ interface CliCapabilityDeps {
29
+ db: Database.Database;
30
+ eventBus: EventBus;
31
+ rigRepo: RigRepository;
32
+ /**
33
+ * Optional: probe a rig for which `rig ps --fields <field>` keys it
34
+ * supports. v0 default is a no-op (returns empty unsupported list);
35
+ * future versions may shell out to `rig ps --version` per rig.
36
+ */
37
+ probeRig?: (rigName: string) => Promise<{
38
+ cliVersionLabel: string;
39
+ unsupportedFields: string[];
40
+ }>;
41
+ /** Override clock for tests. */
42
+ now?: () => Date;
43
+ }
44
+ /**
45
+ * Fields the operator-friendly fleet view tries to present. When a rig
46
+ * does not surface one of these fields, the per-row drift indicator is
47
+ * set + the per-(rig,field) "logged once" event is emitted.
48
+ *
49
+ * `recoveryGuidance` is intentionally listed even though it is not in
50
+ * the 0.2.0 CLI allow-list (audit row 5 yellow). This is the canonical
51
+ * cross-CLI-version drift case: the spec assumes some future CLI
52
+ * surfaces this; the read-layer surfaces "field unavailable on this
53
+ * rig's daemon version" honestly today.
54
+ */
55
+ export declare const MISSION_CONTROL_DESIRED_FIELDS: readonly ["agentActivity", "recoveryGuidance"];
56
+ /**
57
+ * Daemon-side mirror of the CLI's `rig ps --nodes --fields ...`
58
+ * node-level allow-list. Sourced from
59
+ * `packages/cli/src/commands/ps.ts:79-96` (ALLOWED_NODE_FIELDS).
60
+ * The CLI does not export this set, so the daemon mirrors it here at
61
+ * the workspace version (Phase A v0 ships at OpenRig 0.2.0). Future
62
+ * graduation can replace this mirror with a live CLI introspection
63
+ * shell-out per rig; v1 single-host topology makes that overhead
64
+ * unnecessary.
65
+ *
66
+ * To compute drift: any field in MISSION_CONTROL_DESIRED_FIELDS that
67
+ * is NOT in this set is "missing on this rig's CLI version" — the
68
+ * production probe surfaces it as drift.
69
+ */
70
+ export declare const LOCAL_CLI_NODE_FIELDS_AT_0_2_0: ReadonlySet<string>;
71
+ /**
72
+ * Local CLI version label embedded at workspace build time. Mission
73
+ * Control reports this label in the drift indicator alongside per-rig
74
+ * field availability. Hardcoded at v0.2.0 (the workspace shipping
75
+ * version); a future graduation can read it from package.json or a
76
+ * build-time constant.
77
+ */
78
+ export declare const LOCAL_CLI_VERSION_LABEL = "0.2.0";
79
+ /**
80
+ * Production probe factory (R1 fix per guard PL-005 Phase A review).
81
+ * Returns a probeRig function that compares MISSION_CONTROL_DESIRED_FIELDS
82
+ * against the daemon-mirrored LOCAL_CLI_NODE_FIELDS_AT_0_2_0 set and
83
+ * reports any missing fields as drift. Per-rig honesty (sub-clause 2):
84
+ * each rig is probed individually; in v1 single-host topology all rigs
85
+ * share the same local CLI, so they all report the same drift result,
86
+ * which is the honest outcome for the audit-row-5 case.
87
+ *
88
+ * For test scaffolding (or a future per-rig shell-out probe), callers
89
+ * can override probeRig in the constructor; this factory is the v1
90
+ * production default and is wired into createDaemon's startup so the
91
+ * `/api/mission-control/cli-capabilities` route reports drift honestly
92
+ * out of the box.
93
+ */
94
+ export declare function makeLocalCliCapabilityProbe(opts?: {
95
+ versionLabel?: string;
96
+ knownNodeFields?: ReadonlySet<string>;
97
+ }): (rigName: string) => Promise<{
98
+ cliVersionLabel: string;
99
+ unsupportedFields: string[];
100
+ }>;
101
+ export declare class MissionControlFleetCliCapability {
102
+ private readonly db;
103
+ private readonly eventBus;
104
+ private readonly rigRepo;
105
+ private readonly probeRig;
106
+ private readonly now;
107
+ /** Per-(rig, field) once-per-session log set. Cleared on daemon restart. */
108
+ private readonly loggedDriftKeys;
109
+ constructor(deps: CliCapabilityDeps);
110
+ rollupFleet(): Promise<FleetRollup>;
111
+ /**
112
+ * Per-(rig, field) once-per-session-per-rig log per PRD sub-clause 3.
113
+ * Daemon restart clears the set so logging fires again on first
114
+ * post-restart observation.
115
+ */
116
+ private maybeLogDriftOnce;
117
+ /**
118
+ * Summarize a rig's queue state for the fleet view. Synthesized
119
+ * from PL-004 Phase A queue_items via a single SQL aggregation:
120
+ * - active: any in-progress qitem
121
+ * - blocked: any blocked qitem (no in-progress)
122
+ * - attention: only pending qitems older than 1h
123
+ * - idle: no active queue activity
124
+ * - degraded: any failed/denied/canceled qitem in last 24h
125
+ */
126
+ private summarizeRigQueue;
127
+ /** Test/observability helper: clear the once-per-session log set. */
128
+ resetDriftLogForTest(): void;
129
+ }
130
+ export {};
131
+ //# sourceMappingURL=mission-control-fleet-cli-capability.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mission-control-fleet-cli-capability.d.ts","sourceRoot":"","sources":["../../../src/domain/mission-control/mission-control-fleet-cli-capability.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1D,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,iDAAiD;IACjD,aAAa,EAAE,QAAQ,GAAG,MAAM,GAAG,WAAW,GAAG,SAAS,GAAG,UAAU,CAAC;IACxE,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,iDAAiD;IACjD,eAAe,EAAE,MAAM,CAAC;IACxB,6EAA6E;IAC7E,gBAAgB,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,cAAc,EAAE,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,2EAA2E;IAC3E,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB;;;;OAIG;IACH,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAED,UAAU,iBAAiB;IACzB,EAAE,EAAE,QAAQ,CAAC,QAAQ,CAAC;IACtB,QAAQ,EAAE,QAAQ,CAAC;IACnB,OAAO,EAAE,aAAa,CAAC;IACvB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC;QACtC,eAAe,EAAE,MAAM,CAAC;QACxB,iBAAiB,EAAE,MAAM,EAAE,CAAC;KAC7B,CAAC,CAAC;IACH,gCAAgC;IAChC,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;CAClB;AASD;;;;;;;;;;GAUG;AACH,eAAO,MAAM,8BAA8B,gDAGjC,CAAC;AAEX;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,8BAA8B,EAAE,WAAW,CAAC,MAAM,CAiB7D,CAAC;AAEH;;;;;;GAMG;AACH,eAAO,MAAM,uBAAuB,UAAU,CAAC;AAE/C;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,2BAA2B,CAAC,IAAI,CAAC,EAAE;IACjD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CACvC,GAAG,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC;IAC/B,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,MAAM,EAAE,CAAC;CAC7B,CAAC,CAYD;AAID,qBAAa,gCAAgC;IAC3C,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAoB;IACvC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAW;IACpC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAgB;IACxC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA6C;IACtE,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAa;IAEjC,4EAA4E;IAC5E,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA0B;gBAE9C,IAAI,EAAE,iBAAiB;IAU7B,WAAW,IAAI,OAAO,CAAC,WAAW,CAAC;IA2CzC;;;;OAIG;IACH,OAAO,CAAC,iBAAiB;IAazB;;;;;;;;OAQG;IACH,OAAO,CAAC,iBAAiB;IAoDzB,qEAAqE;IACrE,oBAAoB,IAAI,IAAI;CAG7B"}