@openrig/cli 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (469) hide show
  1. package/daemon/dist/adapters/claude-code-adapter.d.ts +10 -0
  2. package/daemon/dist/adapters/claude-code-adapter.d.ts.map +1 -1
  3. package/daemon/dist/adapters/claude-code-adapter.js +41 -3
  4. package/daemon/dist/adapters/claude-code-adapter.js.map +1 -1
  5. package/daemon/dist/builtins/workflow-specs/basic-loop.yaml +76 -0
  6. package/daemon/dist/builtins/workflow-specs/conveyor.yaml +80 -0
  7. package/daemon/dist/db/migrations/026_inbox_entries.d.ts +1 -1
  8. package/daemon/dist/db/migrations/026_inbox_entries.js +1 -1
  9. package/daemon/dist/db/migrations/029_classifier_leases.d.ts +1 -1
  10. package/daemon/dist/db/migrations/029_classifier_leases.js +1 -1
  11. package/daemon/dist/db/migrations/037_mission_control_actions.d.ts +51 -0
  12. package/daemon/dist/db/migrations/037_mission_control_actions.d.ts.map +1 -0
  13. package/daemon/dist/db/migrations/037_mission_control_actions.js +74 -0
  14. package/daemon/dist/db/migrations/037_mission_control_actions.js.map +1 -0
  15. package/daemon/dist/db/migrations/038_workspace_primitive.d.ts +16 -0
  16. package/daemon/dist/db/migrations/038_workspace_primitive.d.ts.map +1 -0
  17. package/daemon/dist/db/migrations/038_workspace_primitive.js +20 -0
  18. package/daemon/dist/db/migrations/038_workspace_primitive.js.map +1 -0
  19. package/daemon/dist/db/migrations/039_queue_target_repo.d.ts +16 -0
  20. package/daemon/dist/db/migrations/039_queue_target_repo.d.ts.map +1 -0
  21. package/daemon/dist/db/migrations/039_queue_target_repo.js +21 -0
  22. package/daemon/dist/db/migrations/039_queue_target_repo.js.map +1 -0
  23. package/daemon/dist/domain/active-lens-store.d.ts +23 -0
  24. package/daemon/dist/domain/active-lens-store.d.ts.map +1 -0
  25. package/daemon/dist/domain/active-lens-store.js +87 -0
  26. package/daemon/dist/domain/active-lens-store.js.map +1 -0
  27. package/daemon/dist/domain/agent-images/agent-image-library-service.d.ts +68 -0
  28. package/daemon/dist/domain/agent-images/agent-image-library-service.d.ts.map +1 -0
  29. package/daemon/dist/domain/agent-images/agent-image-library-service.js +339 -0
  30. package/daemon/dist/domain/agent-images/agent-image-library-service.js.map +1 -0
  31. package/daemon/dist/domain/agent-images/agent-image-types.d.ts +113 -0
  32. package/daemon/dist/domain/agent-images/agent-image-types.d.ts.map +1 -0
  33. package/daemon/dist/domain/agent-images/agent-image-types.js +24 -0
  34. package/daemon/dist/domain/agent-images/agent-image-types.js.map +1 -0
  35. package/daemon/dist/domain/agent-images/evidence-guard.d.ts +26 -0
  36. package/daemon/dist/domain/agent-images/evidence-guard.d.ts.map +1 -0
  37. package/daemon/dist/domain/agent-images/evidence-guard.js +185 -0
  38. package/daemon/dist/domain/agent-images/evidence-guard.js.map +1 -0
  39. package/daemon/dist/domain/agent-images/manifest-parser.d.ts +3 -0
  40. package/daemon/dist/domain/agent-images/manifest-parser.d.ts.map +1 -0
  41. package/daemon/dist/domain/agent-images/manifest-parser.js +114 -0
  42. package/daemon/dist/domain/agent-images/manifest-parser.js.map +1 -0
  43. package/daemon/dist/domain/agent-images/resume-token-discovery.d.ts +28 -0
  44. package/daemon/dist/domain/agent-images/resume-token-discovery.d.ts.map +1 -0
  45. package/daemon/dist/domain/agent-images/resume-token-discovery.js +83 -0
  46. package/daemon/dist/domain/agent-images/resume-token-discovery.js.map +1 -0
  47. package/daemon/dist/domain/agent-images/snapshot-capturer.d.ts +36 -0
  48. package/daemon/dist/domain/agent-images/snapshot-capturer.d.ts.map +1 -0
  49. package/daemon/dist/domain/agent-images/snapshot-capturer.js +58 -0
  50. package/daemon/dist/domain/agent-images/snapshot-capturer.js.map +1 -0
  51. package/daemon/dist/domain/agent-starter-resolver.d.ts +10 -16
  52. package/daemon/dist/domain/agent-starter-resolver.d.ts.map +1 -1
  53. package/daemon/dist/domain/agent-starter-resolver.js +11 -13
  54. package/daemon/dist/domain/agent-starter-resolver.js.map +1 -1
  55. package/daemon/dist/domain/classifier-lease-manager.d.ts +1 -1
  56. package/daemon/dist/domain/classifier-lease-manager.js +1 -1
  57. package/daemon/dist/domain/conflict-detector.d.ts.map +1 -1
  58. package/daemon/dist/domain/conflict-detector.js +6 -3
  59. package/daemon/dist/domain/conflict-detector.js.map +1 -1
  60. package/daemon/dist/domain/context-monitor.d.ts +5 -4
  61. package/daemon/dist/domain/context-monitor.d.ts.map +1 -1
  62. package/daemon/dist/domain/context-monitor.js +26 -11
  63. package/daemon/dist/domain/context-monitor.js.map +1 -1
  64. package/daemon/dist/domain/context-packs/bundle-assembler.d.ts +49 -0
  65. package/daemon/dist/domain/context-packs/bundle-assembler.d.ts.map +1 -0
  66. package/daemon/dist/domain/context-packs/bundle-assembler.js +81 -0
  67. package/daemon/dist/domain/context-packs/bundle-assembler.js.map +1 -0
  68. package/daemon/dist/domain/context-packs/context-pack-library-service.d.ts +41 -0
  69. package/daemon/dist/domain/context-packs/context-pack-library-service.d.ts.map +1 -0
  70. package/daemon/dist/domain/context-packs/context-pack-library-service.js +148 -0
  71. package/daemon/dist/domain/context-packs/context-pack-library-service.js.map +1 -0
  72. package/daemon/dist/domain/context-packs/context-pack-types.d.ts +64 -0
  73. package/daemon/dist/domain/context-packs/context-pack-types.d.ts.map +1 -0
  74. package/daemon/dist/domain/context-packs/context-pack-types.js +22 -0
  75. package/daemon/dist/domain/context-packs/context-pack-types.js.map +1 -0
  76. package/daemon/dist/domain/context-packs/manifest-parser.d.ts +3 -0
  77. package/daemon/dist/domain/context-packs/manifest-parser.d.ts.map +1 -0
  78. package/daemon/dist/domain/context-packs/manifest-parser.js +74 -0
  79. package/daemon/dist/domain/context-packs/manifest-parser.js.map +1 -0
  80. package/daemon/dist/domain/context-usage-store.d.ts +14 -1
  81. package/daemon/dist/domain/context-usage-store.d.ts.map +1 -1
  82. package/daemon/dist/domain/context-usage-store.js +156 -1
  83. package/daemon/dist/domain/context-usage-store.js.map +1 -1
  84. package/daemon/dist/domain/files/file-write-service.d.ts +61 -0
  85. package/daemon/dist/domain/files/file-write-service.d.ts.map +1 -0
  86. package/daemon/dist/domain/files/file-write-service.js +180 -0
  87. package/daemon/dist/domain/files/file-write-service.js.map +1 -0
  88. package/daemon/dist/domain/files/path-safety.d.ts +47 -0
  89. package/daemon/dist/domain/files/path-safety.d.ts.map +1 -0
  90. package/daemon/dist/domain/files/path-safety.js +176 -0
  91. package/daemon/dist/domain/files/path-safety.js.map +1 -0
  92. package/daemon/dist/domain/graph-projection.d.ts +14 -1
  93. package/daemon/dist/domain/graph-projection.d.ts.map +1 -1
  94. package/daemon/dist/domain/graph-projection.js +8 -0
  95. package/daemon/dist/domain/graph-projection.js.map +1 -1
  96. package/daemon/dist/domain/install-engine.d.ts.map +1 -1
  97. package/daemon/dist/domain/install-engine.js +22 -6
  98. package/daemon/dist/domain/install-engine.js.map +1 -1
  99. package/daemon/dist/domain/install-verifier.d.ts.map +1 -1
  100. package/daemon/dist/domain/install-verifier.js +10 -5
  101. package/daemon/dist/domain/install-verifier.js.map +1 -1
  102. package/daemon/dist/domain/managed-blocks.d.ts.map +1 -1
  103. package/daemon/dist/domain/managed-blocks.js +22 -3
  104. package/daemon/dist/domain/managed-blocks.js.map +1 -1
  105. package/daemon/dist/domain/mission-control/audit-browse.d.ts +26 -0
  106. package/daemon/dist/domain/mission-control/audit-browse.d.ts.map +1 -0
  107. package/daemon/dist/domain/mission-control/audit-browse.js +101 -0
  108. package/daemon/dist/domain/mission-control/audit-browse.js.map +1 -0
  109. package/daemon/dist/domain/mission-control/mission-control-action-log.d.ts +51 -0
  110. package/daemon/dist/domain/mission-control/mission-control-action-log.d.ts.map +1 -0
  111. package/daemon/dist/domain/mission-control/mission-control-action-log.js +124 -0
  112. package/daemon/dist/domain/mission-control/mission-control-action-log.js.map +1 -0
  113. package/daemon/dist/domain/mission-control/mission-control-fleet-cli-capability.d.ts +131 -0
  114. package/daemon/dist/domain/mission-control/mission-control-fleet-cli-capability.d.ts.map +1 -0
  115. package/daemon/dist/domain/mission-control/mission-control-fleet-cli-capability.js +232 -0
  116. package/daemon/dist/domain/mission-control/mission-control-fleet-cli-capability.js.map +1 -0
  117. package/daemon/dist/domain/mission-control/mission-control-read-layer.d.ts +85 -0
  118. package/daemon/dist/domain/mission-control/mission-control-read-layer.d.ts.map +1 -0
  119. package/daemon/dist/domain/mission-control/mission-control-read-layer.js +265 -0
  120. package/daemon/dist/domain/mission-control/mission-control-read-layer.js.map +1 -0
  121. package/daemon/dist/domain/mission-control/mission-control-write-contract.d.ts +69 -0
  122. package/daemon/dist/domain/mission-control/mission-control-write-contract.d.ts.map +1 -0
  123. package/daemon/dist/domain/mission-control/mission-control-write-contract.js +300 -0
  124. package/daemon/dist/domain/mission-control/mission-control-write-contract.js.map +1 -0
  125. package/daemon/dist/domain/mission-control/notification-adapter-ntfy.d.ts +18 -0
  126. package/daemon/dist/domain/mission-control/notification-adapter-ntfy.d.ts.map +1 -0
  127. package/daemon/dist/domain/mission-control/notification-adapter-ntfy.js +48 -0
  128. package/daemon/dist/domain/mission-control/notification-adapter-ntfy.js.map +1 -0
  129. package/daemon/dist/domain/mission-control/notification-adapter-types.d.ts +25 -0
  130. package/daemon/dist/domain/mission-control/notification-adapter-types.d.ts.map +1 -0
  131. package/daemon/dist/domain/mission-control/notification-adapter-types.js +7 -0
  132. package/daemon/dist/domain/mission-control/notification-adapter-types.js.map +1 -0
  133. package/daemon/dist/domain/mission-control/notification-adapter-webhook.d.ts +27 -0
  134. package/daemon/dist/domain/mission-control/notification-adapter-webhook.d.ts.map +1 -0
  135. package/daemon/dist/domain/mission-control/notification-adapter-webhook.js +47 -0
  136. package/daemon/dist/domain/mission-control/notification-adapter-webhook.js.map +1 -0
  137. package/daemon/dist/domain/mission-control/notification-dispatcher.d.ts +53 -0
  138. package/daemon/dist/domain/mission-control/notification-dispatcher.d.ts.map +1 -0
  139. package/daemon/dist/domain/mission-control/notification-dispatcher.js +181 -0
  140. package/daemon/dist/domain/mission-control/notification-dispatcher.js.map +1 -0
  141. package/daemon/dist/domain/node-inventory.d.ts.map +1 -1
  142. package/daemon/dist/domain/node-inventory.js +24 -0
  143. package/daemon/dist/domain/node-inventory.js.map +1 -1
  144. package/daemon/dist/domain/node-launcher.d.ts.map +1 -1
  145. package/daemon/dist/domain/node-launcher.js +7 -5
  146. package/daemon/dist/domain/node-launcher.js.map +1 -1
  147. package/daemon/dist/domain/preview/preview-rate-limiter.d.ts +20 -0
  148. package/daemon/dist/domain/preview/preview-rate-limiter.d.ts.map +1 -0
  149. package/daemon/dist/domain/preview/preview-rate-limiter.js +46 -0
  150. package/daemon/dist/domain/preview/preview-rate-limiter.js.map +1 -0
  151. package/daemon/dist/domain/profile-resolver.d.ts +5 -0
  152. package/daemon/dist/domain/profile-resolver.d.ts.map +1 -1
  153. package/daemon/dist/domain/profile-resolver.js +62 -8
  154. package/daemon/dist/domain/profile-resolver.js.map +1 -1
  155. package/daemon/dist/domain/progress/progress-indexer.d.ts +73 -0
  156. package/daemon/dist/domain/progress/progress-indexer.d.ts.map +1 -0
  157. package/daemon/dist/domain/progress/progress-indexer.js +210 -0
  158. package/daemon/dist/domain/progress/progress-indexer.js.map +1 -0
  159. package/daemon/dist/domain/project-classifier.d.ts +1 -1
  160. package/daemon/dist/domain/queue-repository.d.ts +22 -4
  161. package/daemon/dist/domain/queue-repository.d.ts.map +1 -1
  162. package/daemon/dist/domain/queue-repository.js +80 -22
  163. package/daemon/dist/domain/queue-repository.js.map +1 -1
  164. package/daemon/dist/domain/rehydrate-eligibility.d.ts +16 -0
  165. package/daemon/dist/domain/rehydrate-eligibility.d.ts.map +1 -0
  166. package/daemon/dist/domain/rehydrate-eligibility.js +43 -0
  167. package/daemon/dist/domain/rehydrate-eligibility.js.map +1 -0
  168. package/daemon/dist/domain/restore-check-service.d.ts.map +1 -1
  169. package/daemon/dist/domain/restore-check-service.js +19 -6
  170. package/daemon/dist/domain/restore-check-service.js.map +1 -1
  171. package/daemon/dist/domain/restore-orchestrator.d.ts.map +1 -1
  172. package/daemon/dist/domain/restore-orchestrator.js +4 -2
  173. package/daemon/dist/domain/restore-orchestrator.js.map +1 -1
  174. package/daemon/dist/domain/rig-repository.d.ts +14 -0
  175. package/daemon/dist/domain/rig-repository.d.ts.map +1 -1
  176. package/daemon/dist/domain/rig-repository.js +41 -0
  177. package/daemon/dist/domain/rig-repository.js.map +1 -1
  178. package/daemon/dist/domain/rig-teardown.d.ts.map +1 -1
  179. package/daemon/dist/domain/rig-teardown.js +5 -0
  180. package/daemon/dist/domain/rig-teardown.js.map +1 -1
  181. package/daemon/dist/domain/rigspec-codec.d.ts.map +1 -1
  182. package/daemon/dist/domain/rigspec-codec.js +15 -0
  183. package/daemon/dist/domain/rigspec-codec.js.map +1 -1
  184. package/daemon/dist/domain/rigspec-instantiator.d.ts +29 -0
  185. package/daemon/dist/domain/rigspec-instantiator.d.ts.map +1 -1
  186. package/daemon/dist/domain/rigspec-instantiator.js +136 -4
  187. package/daemon/dist/domain/rigspec-instantiator.js.map +1 -1
  188. package/daemon/dist/domain/rigspec-schema.d.ts.map +1 -1
  189. package/daemon/dist/domain/rigspec-schema.js +157 -4
  190. package/daemon/dist/domain/rigspec-schema.js.map +1 -1
  191. package/daemon/dist/domain/runtime-adapter.d.ts +11 -0
  192. package/daemon/dist/domain/runtime-adapter.d.ts.map +1 -1
  193. package/daemon/dist/domain/runtime-adapter.js.map +1 -1
  194. package/daemon/dist/domain/skill-discovery.d.ts +51 -0
  195. package/daemon/dist/domain/skill-discovery.d.ts.map +1 -0
  196. package/daemon/dist/domain/skill-discovery.js +144 -0
  197. package/daemon/dist/domain/skill-discovery.js.map +1 -0
  198. package/daemon/dist/domain/slices/slice-detail-projector.d.ts +182 -0
  199. package/daemon/dist/domain/slices/slice-detail-projector.d.ts.map +1 -0
  200. package/daemon/dist/domain/slices/slice-detail-projector.js +508 -0
  201. package/daemon/dist/domain/slices/slice-detail-projector.js.map +1 -0
  202. package/daemon/dist/domain/slices/slice-indexer.d.ts +118 -0
  203. package/daemon/dist/domain/slices/slice-indexer.d.ts.map +1 -0
  204. package/daemon/dist/domain/slices/slice-indexer.js +503 -0
  205. package/daemon/dist/domain/slices/slice-indexer.js.map +1 -0
  206. package/daemon/dist/domain/spec-library-service.d.ts +17 -2
  207. package/daemon/dist/domain/spec-library-service.d.ts.map +1 -1
  208. package/daemon/dist/domain/spec-library-service.js +31 -1
  209. package/daemon/dist/domain/spec-library-service.js.map +1 -1
  210. package/daemon/dist/domain/spec-library-workflow-scanner.d.ts +81 -0
  211. package/daemon/dist/domain/spec-library-workflow-scanner.d.ts.map +1 -0
  212. package/daemon/dist/domain/spec-library-workflow-scanner.js +171 -0
  213. package/daemon/dist/domain/spec-library-workflow-scanner.js.map +1 -0
  214. package/daemon/dist/domain/startup-validation.d.ts.map +1 -1
  215. package/daemon/dist/domain/startup-validation.js +57 -11
  216. package/daemon/dist/domain/startup-validation.js.map +1 -1
  217. package/daemon/dist/domain/steering/health-summary.d.ts +39 -0
  218. package/daemon/dist/domain/steering/health-summary.d.ts.map +1 -0
  219. package/daemon/dist/domain/steering/health-summary.js +100 -0
  220. package/daemon/dist/domain/steering/health-summary.js.map +1 -0
  221. package/daemon/dist/domain/steering/steering-composer.d.ts +102 -0
  222. package/daemon/dist/domain/steering/steering-composer.d.ts.map +1 -0
  223. package/daemon/dist/domain/steering/steering-composer.js +263 -0
  224. package/daemon/dist/domain/steering/steering-composer.js.map +1 -0
  225. package/daemon/dist/domain/transcript-capture.d.ts.map +1 -1
  226. package/daemon/dist/domain/transcript-capture.js +7 -4
  227. package/daemon/dist/domain/transcript-capture.js.map +1 -1
  228. package/daemon/dist/domain/transcript-rotation.d.ts +29 -0
  229. package/daemon/dist/domain/transcript-rotation.d.ts.map +1 -0
  230. package/daemon/dist/domain/transcript-rotation.js +109 -0
  231. package/daemon/dist/domain/transcript-rotation.js.map +1 -0
  232. package/daemon/dist/domain/transcript-store.d.ts.map +1 -1
  233. package/daemon/dist/domain/transcript-store.js +7 -1
  234. package/daemon/dist/domain/transcript-store.js.map +1 -1
  235. package/daemon/dist/domain/types.d.ts +101 -2
  236. package/daemon/dist/domain/types.d.ts.map +1 -1
  237. package/daemon/dist/domain/types.js +8 -1
  238. package/daemon/dist/domain/types.js.map +1 -1
  239. package/daemon/dist/domain/user-settings/settings-store.d.ts +42 -0
  240. package/daemon/dist/domain/user-settings/settings-store.d.ts.map +1 -0
  241. package/daemon/dist/domain/user-settings/settings-store.js +364 -0
  242. package/daemon/dist/domain/user-settings/settings-store.js.map +1 -0
  243. package/daemon/dist/domain/view-event-bridge.d.ts.map +1 -1
  244. package/daemon/dist/domain/view-event-bridge.js +2 -3
  245. package/daemon/dist/domain/view-event-bridge.js.map +1 -1
  246. package/daemon/dist/domain/whoami-service.d.ts +29 -0
  247. package/daemon/dist/domain/whoami-service.d.ts.map +1 -1
  248. package/daemon/dist/domain/whoami-service.js +68 -0
  249. package/daemon/dist/domain/whoami-service.js.map +1 -1
  250. package/daemon/dist/domain/workflow/slice-workflow-binding.d.ts +21 -0
  251. package/daemon/dist/domain/workflow/slice-workflow-binding.d.ts.map +1 -0
  252. package/daemon/dist/domain/workflow/slice-workflow-binding.js +103 -0
  253. package/daemon/dist/domain/workflow/slice-workflow-binding.js.map +1 -0
  254. package/daemon/dist/domain/workflow/slice-workflow-projection.d.ts +81 -0
  255. package/daemon/dist/domain/workflow/slice-workflow-projection.d.ts.map +1 -0
  256. package/daemon/dist/domain/workflow/slice-workflow-projection.js +127 -0
  257. package/daemon/dist/domain/workflow/slice-workflow-projection.js.map +1 -0
  258. package/daemon/dist/domain/workflow/starter-spec-loader.d.ts +51 -0
  259. package/daemon/dist/domain/workflow/starter-spec-loader.d.ts.map +1 -0
  260. package/daemon/dist/domain/workflow/starter-spec-loader.js +140 -0
  261. package/daemon/dist/domain/workflow/starter-spec-loader.js.map +1 -0
  262. package/daemon/dist/domain/workflow-projector.js +11 -3
  263. package/daemon/dist/domain/workflow-projector.js.map +1 -1
  264. package/daemon/dist/domain/workflow-spec-cache.d.ts +7 -0
  265. package/daemon/dist/domain/workflow-spec-cache.d.ts.map +1 -1
  266. package/daemon/dist/domain/workflow-spec-cache.js +62 -15
  267. package/daemon/dist/domain/workflow-spec-cache.js.map +1 -1
  268. package/daemon/dist/domain/workspace/default-workspace-scaffold.d.ts +6 -0
  269. package/daemon/dist/domain/workspace/default-workspace-scaffold.d.ts.map +1 -0
  270. package/daemon/dist/domain/workspace/default-workspace-scaffold.js +207 -0
  271. package/daemon/dist/domain/workspace/default-workspace-scaffold.js.map +1 -0
  272. package/daemon/dist/domain/workspace/frontmatter-validator.d.ts +40 -0
  273. package/daemon/dist/domain/workspace/frontmatter-validator.d.ts.map +1 -0
  274. package/daemon/dist/domain/workspace/frontmatter-validator.js +185 -0
  275. package/daemon/dist/domain/workspace/frontmatter-validator.js.map +1 -0
  276. package/daemon/dist/domain/workspace/workspace-resolver.d.ts +25 -0
  277. package/daemon/dist/domain/workspace/workspace-resolver.d.ts.map +1 -0
  278. package/daemon/dist/domain/workspace/workspace-resolver.js +86 -0
  279. package/daemon/dist/domain/workspace/workspace-resolver.js.map +1 -0
  280. package/daemon/dist/index.d.ts.map +1 -1
  281. package/daemon/dist/index.js +10 -1
  282. package/daemon/dist/index.js.map +1 -1
  283. package/daemon/dist/middleware/auth-bearer-token.d.ts +49 -0
  284. package/daemon/dist/middleware/auth-bearer-token.d.ts.map +1 -0
  285. package/daemon/dist/middleware/auth-bearer-token.js +135 -0
  286. package/daemon/dist/middleware/auth-bearer-token.js.map +1 -0
  287. package/daemon/dist/openrig-compat.d.ts +1 -1
  288. package/daemon/dist/openrig-compat.d.ts.map +1 -1
  289. package/daemon/dist/openrig-compat.js +6 -4
  290. package/daemon/dist/openrig-compat.js.map +1 -1
  291. package/daemon/dist/routes/agent-images.d.ts +8 -0
  292. package/daemon/dist/routes/agent-images.d.ts.map +1 -0
  293. package/daemon/dist/routes/agent-images.js +253 -0
  294. package/daemon/dist/routes/agent-images.js.map +1 -0
  295. package/daemon/dist/routes/config.d.ts +3 -0
  296. package/daemon/dist/routes/config.d.ts.map +1 -0
  297. package/daemon/dist/routes/config.js +109 -0
  298. package/daemon/dist/routes/config.js.map +1 -0
  299. package/daemon/dist/routes/context-packs.d.ts +3 -0
  300. package/daemon/dist/routes/context-packs.d.ts.map +1 -0
  301. package/daemon/dist/routes/context-packs.js +129 -0
  302. package/daemon/dist/routes/context-packs.js.map +1 -0
  303. package/daemon/dist/routes/files.d.ts +17 -0
  304. package/daemon/dist/routes/files.d.ts.map +1 -0
  305. package/daemon/dist/routes/files.js +262 -0
  306. package/daemon/dist/routes/files.js.map +1 -0
  307. package/daemon/dist/routes/health-summary.d.ts +9 -0
  308. package/daemon/dist/routes/health-summary.d.ts.map +1 -0
  309. package/daemon/dist/routes/health-summary.js +33 -0
  310. package/daemon/dist/routes/health-summary.js.map +1 -0
  311. package/daemon/dist/routes/mission-control.d.ts +37 -0
  312. package/daemon/dist/routes/mission-control.d.ts.map +1 -0
  313. package/daemon/dist/routes/mission-control.js +283 -0
  314. package/daemon/dist/routes/mission-control.js.map +1 -0
  315. package/daemon/dist/routes/progress.d.ts +7 -0
  316. package/daemon/dist/routes/progress.d.ts.map +1 -0
  317. package/daemon/dist/routes/progress.js +33 -0
  318. package/daemon/dist/routes/progress.js.map +1 -0
  319. package/daemon/dist/routes/queue.d.ts.map +1 -1
  320. package/daemon/dist/routes/queue.js +52 -1
  321. package/daemon/dist/routes/queue.js.map +1 -1
  322. package/daemon/dist/routes/rigs.d.ts +3 -0
  323. package/daemon/dist/routes/rigs.d.ts.map +1 -1
  324. package/daemon/dist/routes/rigs.js +73 -7
  325. package/daemon/dist/routes/rigs.js.map +1 -1
  326. package/daemon/dist/routes/rigspec.js +6 -3
  327. package/daemon/dist/routes/rigspec.js.map +1 -1
  328. package/daemon/dist/routes/sessions.d.ts.map +1 -1
  329. package/daemon/dist/routes/sessions.js +119 -0
  330. package/daemon/dist/routes/sessions.js.map +1 -1
  331. package/daemon/dist/routes/slices.d.ts +9 -0
  332. package/daemon/dist/routes/slices.d.ts.map +1 -0
  333. package/daemon/dist/routes/slices.js +192 -0
  334. package/daemon/dist/routes/slices.js.map +1 -0
  335. package/daemon/dist/routes/spec-library.d.ts.map +1 -1
  336. package/daemon/dist/routes/spec-library.js +72 -5
  337. package/daemon/dist/routes/spec-library.js.map +1 -1
  338. package/daemon/dist/routes/steering.d.ts +7 -0
  339. package/daemon/dist/routes/steering.d.ts.map +1 -0
  340. package/daemon/dist/routes/steering.js +27 -0
  341. package/daemon/dist/routes/steering.js.map +1 -0
  342. package/daemon/dist/routes/up.d.ts.map +1 -1
  343. package/daemon/dist/routes/up.js +21 -3
  344. package/daemon/dist/routes/up.js.map +1 -1
  345. package/daemon/dist/routes/whoami.d.ts.map +1 -1
  346. package/daemon/dist/routes/whoami.js +6 -1
  347. package/daemon/dist/routes/whoami.js.map +1 -1
  348. package/daemon/dist/routes/workflow.d.ts.map +1 -1
  349. package/daemon/dist/routes/workflow.js +43 -0
  350. package/daemon/dist/routes/workflow.js.map +1 -1
  351. package/daemon/dist/routes/workspace.d.ts +3 -0
  352. package/daemon/dist/routes/workspace.d.ts.map +1 -0
  353. package/daemon/dist/routes/workspace.js +53 -0
  354. package/daemon/dist/routes/workspace.js.map +1 -0
  355. package/daemon/dist/server.d.ts +51 -0
  356. package/daemon/dist/server.d.ts.map +1 -1
  357. package/daemon/dist/server.js +52 -1
  358. package/daemon/dist/server.js.map +1 -1
  359. package/daemon/dist/startup.d.ts +9 -0
  360. package/daemon/dist/startup.d.ts.map +1 -1
  361. package/daemon/dist/startup.js +385 -2
  362. package/daemon/dist/startup.js.map +1 -1
  363. package/daemon/docs/reference/agent-spec.md +7 -7
  364. package/daemon/docs/reference/agent-startup-guide.md +2 -2
  365. package/daemon/docs/reference/project-workspace.md +102 -0
  366. package/daemon/specs/agents/apps/vault-specialist/agent.yaml +1 -1
  367. package/daemon/specs/agents/apps/vault-specialist/guidance/role.md +0 -1
  368. package/daemon/specs/agents/conveyor/builder/agent.yaml +35 -0
  369. package/daemon/specs/agents/conveyor/builder/guidance/role.md +31 -0
  370. package/daemon/specs/agents/conveyor/builder/startup/context.md +9 -0
  371. package/daemon/specs/agents/conveyor/lead/agent.yaml +35 -0
  372. package/daemon/specs/agents/conveyor/lead/guidance/role.md +34 -0
  373. package/daemon/specs/agents/conveyor/lead/startup/context.md +15 -0
  374. package/daemon/specs/agents/conveyor/planner/agent.yaml +35 -0
  375. package/daemon/specs/agents/conveyor/planner/guidance/role.md +29 -0
  376. package/daemon/specs/agents/conveyor/planner/startup/context.md +12 -0
  377. package/daemon/specs/agents/conveyor/reviewer/agent.yaml +35 -0
  378. package/daemon/specs/agents/conveyor/reviewer/guidance/role.md +29 -0
  379. package/daemon/specs/agents/conveyor/reviewer/startup/context.md +10 -0
  380. package/daemon/specs/agents/development/implementer/agent.yaml +1 -1
  381. package/daemon/specs/agents/development/implementer/guidance/role.md +0 -1
  382. package/daemon/specs/agents/orchestration/orchestrator/agent.yaml +1 -1
  383. package/daemon/specs/agents/orchestration/orchestrator/guidance/role.md +2 -3
  384. package/daemon/specs/agents/shared/agent.yaml +0 -2
  385. package/daemon/specs/agents/shared/skills/core/openrig-user/SKILL.md +25 -0
  386. package/daemon/specs/agents/shared/skills/core/openrig-user-settings/SKILL.md +153 -0
  387. package/daemon/specs/agents/shared/skills/rig-architect/SKILL.md +1 -1
  388. package/daemon/specs/rigs/launch/conveyor/CULTURE.md +34 -0
  389. package/daemon/specs/rigs/launch/conveyor/README.md +33 -0
  390. package/daemon/specs/rigs/launch/conveyor/rig.yaml +72 -0
  391. package/daemon/specs/rigs/preview/product-team/CULTURE.md +2 -2
  392. package/daemon/specs/rigs/preview/product-team/rig.yaml +3 -4
  393. package/dist/commands/agent-image.d.ts +4 -0
  394. package/dist/commands/agent-image.d.ts.map +1 -0
  395. package/dist/commands/agent-image.js +352 -0
  396. package/dist/commands/agent-image.js.map +1 -0
  397. package/dist/commands/config-init-workspace.d.ts +35 -0
  398. package/dist/commands/config-init-workspace.d.ts.map +1 -0
  399. package/dist/commands/config-init-workspace.js +300 -0
  400. package/dist/commands/config-init-workspace.js.map +1 -0
  401. package/dist/commands/config.d.ts.map +1 -1
  402. package/dist/commands/config.js +78 -18
  403. package/dist/commands/config.js.map +1 -1
  404. package/dist/commands/context-pack.d.ts +4 -0
  405. package/dist/commands/context-pack.d.ts.map +1 -0
  406. package/dist/commands/context-pack.js +357 -0
  407. package/dist/commands/context-pack.js.map +1 -0
  408. package/dist/commands/daemon.d.ts.map +1 -1
  409. package/dist/commands/daemon.js +8 -0
  410. package/dist/commands/daemon.js.map +1 -1
  411. package/dist/commands/import.d.ts.map +1 -1
  412. package/dist/commands/import.js +7 -2
  413. package/dist/commands/import.js.map +1 -1
  414. package/dist/commands/ps.d.ts.map +1 -1
  415. package/dist/commands/ps.js +173 -14
  416. package/dist/commands/ps.js.map +1 -1
  417. package/dist/commands/queue.d.ts.map +1 -1
  418. package/dist/commands/queue.js +9 -0
  419. package/dist/commands/queue.js.map +1 -1
  420. package/dist/commands/send.d.ts +7 -0
  421. package/dist/commands/send.d.ts.map +1 -1
  422. package/dist/commands/send.js +24 -1
  423. package/dist/commands/send.js.map +1 -1
  424. package/dist/commands/specs.d.ts +4 -2
  425. package/dist/commands/specs.d.ts.map +1 -1
  426. package/dist/commands/specs.js +12 -8
  427. package/dist/commands/specs.js.map +1 -1
  428. package/dist/commands/up.d.ts.map +1 -1
  429. package/dist/commands/up.js +17 -3
  430. package/dist/commands/up.js.map +1 -1
  431. package/dist/commands/whoami.d.ts.map +1 -1
  432. package/dist/commands/whoami.js +9 -4
  433. package/dist/commands/whoami.js.map +1 -1
  434. package/dist/commands/workflow.d.ts.map +1 -1
  435. package/dist/commands/workflow.js +37 -0
  436. package/dist/commands/workflow.js.map +1 -1
  437. package/dist/commands/workspace.d.ts +6 -0
  438. package/dist/commands/workspace.d.ts.map +1 -0
  439. package/dist/commands/workspace.js +83 -0
  440. package/dist/commands/workspace.js.map +1 -0
  441. package/dist/config-store.d.ts +73 -1
  442. package/dist/config-store.d.ts.map +1 -1
  443. package/dist/config-store.js +314 -42
  444. package/dist/config-store.js.map +1 -1
  445. package/dist/daemon-lifecycle.d.ts +22 -0
  446. package/dist/daemon-lifecycle.d.ts.map +1 -1
  447. package/dist/daemon-lifecycle.js +41 -0
  448. package/dist/daemon-lifecycle.js.map +1 -1
  449. package/dist/index.d.ts +4 -0
  450. package/dist/index.d.ts.map +1 -1
  451. package/dist/index.js +6 -0
  452. package/dist/index.js.map +1 -1
  453. package/dist/openrig-compat.d.ts +1 -1
  454. package/dist/openrig-compat.d.ts.map +1 -1
  455. package/dist/openrig-compat.js +6 -4
  456. package/dist/openrig-compat.js.map +1 -1
  457. package/dist/restore-packet/claude-transcript-parser.js +1 -1
  458. package/dist/restore-packet/claude-transcript-parser.js.map +1 -1
  459. package/dist/restore-packet/codex-jsonl-parser.js +1 -1
  460. package/dist/restore-packet/codex-jsonl-parser.js.map +1 -1
  461. package/package.json +2 -2
  462. package/ui/dist/assets/index-BDHU1JUK.js +412 -0
  463. package/ui/dist/assets/index-DXTyJSqu.css +1 -0
  464. package/ui/dist/graphics/operator-climber-monochrome.png +0 -0
  465. package/ui/dist/index.html +3 -2
  466. package/daemon/specs/agents/shared/skills/mental-model-ha/SKILL.md +0 -956
  467. package/ui/dist/assets/index-B09doO8H.js +0 -139
  468. package/ui/dist/assets/index-Dec25siz.css +0 -1
  469. package/ui/dist/assets/index-GNYaWmBj.js +0 -225
@@ -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"}
@@ -0,0 +1,232 @@
1
+ // PL-005 Phase A: per-rig CLI capability cache + fleet roll-up.
2
+ //
3
+ // Implements the 4 sub-clauses of PRD § Runtime/Source Drift Acceptance:
4
+ // 1. Per-field availability check on `rig ps --fields <field>`.
5
+ // 2. Per-rig CLI capability honesty (each rig surfaces its own capabilities).
6
+ // 3. Once-per-session-per-rig logging — degradation logs ONCE per (rig, field),
7
+ // not per render.
8
+ // 4. "Rigs running stale CLI" indicator surfaced in fleet view meta.
9
+ //
10
+ // At v0 the daemon owns its own DB-bound topology + queue surfaces and
11
+ // can synthesize a fleet roll-up from PL-004 Phase A queue_items + the
12
+ // rig registry. The implementation supports an optional `psShellOut`
13
+ // hook for future direct CLI shelling; default keeps the fleet roll-up
14
+ // in-process so tests are deterministic.
15
+ /**
16
+ * Fields the operator-friendly fleet view tries to present. When a rig
17
+ * does not surface one of these fields, the per-row drift indicator is
18
+ * set + the per-(rig,field) "logged once" event is emitted.
19
+ *
20
+ * `recoveryGuidance` is intentionally listed even though it is not in
21
+ * the 0.2.0 CLI allow-list (audit row 5 yellow). This is the canonical
22
+ * cross-CLI-version drift case: the spec assumes some future CLI
23
+ * surfaces this; the read-layer surfaces "field unavailable on this
24
+ * rig's daemon version" honestly today.
25
+ */
26
+ export const MISSION_CONTROL_DESIRED_FIELDS = [
27
+ "agentActivity",
28
+ "recoveryGuidance",
29
+ ];
30
+ /**
31
+ * Daemon-side mirror of the CLI's `rig ps --nodes --fields ...`
32
+ * node-level allow-list. Sourced from
33
+ * `packages/cli/src/commands/ps.ts:79-96` (ALLOWED_NODE_FIELDS).
34
+ * The CLI does not export this set, so the daemon mirrors it here at
35
+ * the workspace version (Phase A v0 ships at OpenRig 0.2.0). Future
36
+ * graduation can replace this mirror with a live CLI introspection
37
+ * shell-out per rig; v1 single-host topology makes that overhead
38
+ * unnecessary.
39
+ *
40
+ * To compute drift: any field in MISSION_CONTROL_DESIRED_FIELDS that
41
+ * is NOT in this set is "missing on this rig's CLI version" — the
42
+ * production probe surfaces it as drift.
43
+ */
44
+ export const LOCAL_CLI_NODE_FIELDS_AT_0_2_0 = new Set([
45
+ "rigId",
46
+ "rigName",
47
+ "logicalId",
48
+ "podId",
49
+ "podNamespace",
50
+ "canonicalSessionName",
51
+ "nodeKind",
52
+ "runtime",
53
+ "sessionStatus",
54
+ "startupStatus",
55
+ "restoreOutcome",
56
+ "lifecycleState",
57
+ "tmuxAttachCommand",
58
+ "resumeCommand",
59
+ "latestError",
60
+ "agentActivity",
61
+ ]);
62
+ /**
63
+ * Local CLI version label embedded at workspace build time. Mission
64
+ * Control reports this label in the drift indicator alongside per-rig
65
+ * field availability. Hardcoded at v0.2.0 (the workspace shipping
66
+ * version); a future graduation can read it from package.json or a
67
+ * build-time constant.
68
+ */
69
+ export const LOCAL_CLI_VERSION_LABEL = "0.2.0";
70
+ /**
71
+ * Production probe factory (R1 fix per guard PL-005 Phase A review).
72
+ * Returns a probeRig function that compares MISSION_CONTROL_DESIRED_FIELDS
73
+ * against the daemon-mirrored LOCAL_CLI_NODE_FIELDS_AT_0_2_0 set and
74
+ * reports any missing fields as drift. Per-rig honesty (sub-clause 2):
75
+ * each rig is probed individually; in v1 single-host topology all rigs
76
+ * share the same local CLI, so they all report the same drift result,
77
+ * which is the honest outcome for the audit-row-5 case.
78
+ *
79
+ * For test scaffolding (or a future per-rig shell-out probe), callers
80
+ * can override probeRig in the constructor; this factory is the v1
81
+ * production default and is wired into createDaemon's startup so the
82
+ * `/api/mission-control/cli-capabilities` route reports drift honestly
83
+ * out of the box.
84
+ */
85
+ export function makeLocalCliCapabilityProbe(opts) {
86
+ const versionLabel = opts?.versionLabel ?? LOCAL_CLI_VERSION_LABEL;
87
+ const knownFields = opts?.knownNodeFields ?? LOCAL_CLI_NODE_FIELDS_AT_0_2_0;
88
+ return async (_rigName) => {
89
+ const unsupportedFields = [];
90
+ for (const desired of MISSION_CONTROL_DESIRED_FIELDS) {
91
+ if (!knownFields.has(desired)) {
92
+ unsupportedFields.push(desired);
93
+ }
94
+ }
95
+ return { cliVersionLabel: versionLabel, unsupportedFields };
96
+ };
97
+ }
98
+ export class MissionControlFleetCliCapability {
99
+ db;
100
+ eventBus;
101
+ rigRepo;
102
+ probeRig;
103
+ now;
104
+ /** Per-(rig, field) once-per-session log set. Cleared on daemon restart. */
105
+ loggedDriftKeys = new Set();
106
+ constructor(deps) {
107
+ this.db = deps.db;
108
+ this.eventBus = deps.eventBus;
109
+ this.rigRepo = deps.rigRepo;
110
+ this.probeRig =
111
+ deps.probeRig ??
112
+ (async () => ({ cliVersionLabel: "unknown", unsupportedFields: [] }));
113
+ this.now = deps.now ?? (() => new Date());
114
+ }
115
+ async rollupFleet() {
116
+ const rigs = this.rigRepo.listRigs();
117
+ const rows = [];
118
+ const allDegradedFields = new Set();
119
+ let staleCliCount = 0;
120
+ for (const rig of rigs) {
121
+ let probe;
122
+ try {
123
+ probe = await this.probeRig(rig.name);
124
+ }
125
+ catch {
126
+ probe = { cliVersionLabel: "unknown", unsupportedFields: [...MISSION_CONTROL_DESIRED_FIELDS] };
127
+ }
128
+ const driftDetected = probe.unsupportedFields.length > 0;
129
+ if (driftDetected)
130
+ staleCliCount++;
131
+ for (const f of probe.unsupportedFields) {
132
+ allDegradedFields.add(f);
133
+ this.maybeLogDriftOnce(rig.name, f);
134
+ }
135
+ const queueState = this.summarizeRigQueue(rig.name);
136
+ rows.push({
137
+ rigName: rig.name,
138
+ activityState: queueState.activityState,
139
+ lifecycleState: queueState.lifecycleState,
140
+ attentionReason: queueState.attentionReason,
141
+ lastUpdate: queueState.lastUpdate,
142
+ cliVersionLabel: probe.cliVersionLabel,
143
+ cliDriftDetected: driftDetected,
144
+ });
145
+ }
146
+ return {
147
+ rows,
148
+ staleCliCount,
149
+ degradedFields: Array.from(allDegradedFields),
150
+ // v0 reads from the daemon-internal rig registry + queue_items;
151
+ // future versions can shell out to `rig ps --nodes --json` and
152
+ // set sourceFallback to "daemon-internal" when the CLI is
153
+ // unavailable.
154
+ sourceFallback: "daemon-internal-projection",
155
+ };
156
+ }
157
+ /**
158
+ * Per-(rig, field) once-per-session-per-rig log per PRD sub-clause 3.
159
+ * Daemon restart clears the set so logging fires again on first
160
+ * post-restart observation.
161
+ */
162
+ maybeLogDriftOnce(rigName, missingField) {
163
+ const key = `${rigName}::${missingField}`;
164
+ if (this.loggedDriftKeys.has(key))
165
+ return;
166
+ this.loggedDriftKeys.add(key);
167
+ const observedAt = this.now().toISOString();
168
+ this.eventBus.emit({
169
+ type: "mission_control.cli_drift_detected",
170
+ rigName,
171
+ missingField,
172
+ observedAt,
173
+ });
174
+ }
175
+ /**
176
+ * Summarize a rig's queue state for the fleet view. Synthesized
177
+ * from PL-004 Phase A queue_items via a single SQL aggregation:
178
+ * - active: any in-progress qitem
179
+ * - blocked: any blocked qitem (no in-progress)
180
+ * - attention: only pending qitems older than 1h
181
+ * - idle: no active queue activity
182
+ * - degraded: any failed/denied/canceled qitem in last 24h
183
+ */
184
+ summarizeRigQueue(rigName) {
185
+ const ownedSessions = this.db
186
+ .prepare(`SELECT destination_session, state, ts_updated, blocked_on
187
+ FROM queue_items
188
+ WHERE destination_session LIKE ?
189
+ OR source_session LIKE ?
190
+ ORDER BY ts_updated DESC LIMIT 100`)
191
+ .all(`%@${rigName}`, `%@${rigName}`);
192
+ if (ownedSessions.length === 0) {
193
+ return {
194
+ activityState: "idle",
195
+ lifecycleState: null,
196
+ attentionReason: null,
197
+ lastUpdate: this.now().toISOString(),
198
+ };
199
+ }
200
+ const lastUpdate = ownedSessions[0].ts_updated;
201
+ const hasInProgress = ownedSessions.some((q) => q.state === "in-progress");
202
+ const hasBlocked = ownedSessions.some((q) => q.state === "blocked");
203
+ const hasFailed = ownedSessions.some((q) => q.state === "failed" || q.state === "denied" || q.state === "canceled");
204
+ let activityState = "idle";
205
+ let attentionReason = null;
206
+ if (hasInProgress) {
207
+ activityState = "active";
208
+ }
209
+ else if (hasBlocked) {
210
+ activityState = "blocked";
211
+ const blockedRow = ownedSessions.find((q) => q.state === "blocked");
212
+ attentionReason = blockedRow?.blocked_on
213
+ ? `blocked-on: ${blockedRow.blocked_on}`
214
+ : "blocked";
215
+ }
216
+ else if (hasFailed) {
217
+ activityState = "degraded";
218
+ attentionReason = "recent failure / denial / cancel in queue";
219
+ }
220
+ return {
221
+ activityState,
222
+ lifecycleState: ownedSessions[0].state,
223
+ attentionReason,
224
+ lastUpdate,
225
+ };
226
+ }
227
+ /** Test/observability helper: clear the once-per-session log set. */
228
+ resetDriftLogForTest() {
229
+ this.loggedDriftKeys.clear();
230
+ }
231
+ }
232
+ //# sourceMappingURL=mission-control-fleet-cli-capability.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mission-control-fleet-cli-capability.js","sourceRoot":"","sources":["../../../src/domain/mission-control/mission-control-fleet-cli-capability.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,85 @@
1
+ import type Database from "better-sqlite3";
2
+ import type { QueueRepository } from "../queue-repository.js";
3
+ import type { ViewProjector } from "../view-projector.js";
4
+ import type { StreamStore } from "../stream-store.js";
5
+ import type { MissionControlFleetCliCapability } from "./mission-control-fleet-cli-capability.js";
6
+ export declare const MISSION_CONTROL_VIEWS: readonly ["my-queue", "human-gate", "fleet", "active-work", "recent-ships", "recently-active", "recent-observations"];
7
+ export type MissionControlViewName = (typeof MISSION_CONTROL_VIEWS)[number];
8
+ /**
9
+ * The 9-field phone-friendly content model. Per PRD § Acceptance
10
+ * Criteria item 1, non-negotiable across all 7 views wherever
11
+ * row-shaped status is shown. UI may render compact; JSON preserves
12
+ * all 9 fields.
13
+ *
14
+ * 9 fields verbatim from PRD:
15
+ * 1. rig/mission name
16
+ * 2. current phase
17
+ * 3. active/idle/attention/blocked/degraded
18
+ * 4. next-action
19
+ * 5. pending-human-decision
20
+ * 6. read-cost (full / skim/approve / summary-only)
21
+ * 7. last-update timestamp
22
+ * 8. confidence/freshness
23
+ * 9. evidence link
24
+ */
25
+ export interface CompactStatusRow {
26
+ rigOrMissionName: string;
27
+ currentPhase: string | null;
28
+ state: "active" | "idle" | "attention" | "blocked" | "degraded";
29
+ nextAction: string | null;
30
+ pendingHumanDecision: string | null;
31
+ readCost: "full" | "skim/approve" | "summary-only" | null;
32
+ lastUpdate: string;
33
+ confidenceFreshness: string | null;
34
+ evidenceLink: string | null;
35
+ /** Carrier metadata (id used for verb actions). */
36
+ qitemId?: string | null;
37
+ rawSourceRef?: string | null;
38
+ /** Human-readable qitem context for phone decisions. */
39
+ qitemSummary?: string | null;
40
+ qitemBody?: string | null;
41
+ }
42
+ export interface MissionControlReadResult {
43
+ viewName: MissionControlViewName;
44
+ rows: CompactStatusRow[];
45
+ /**
46
+ * Per-view metadata. Includes "rigs running stale CLI" indicator on
47
+ * the fleet view (sub-clause 4 of graceful-degradation acceptance).
48
+ */
49
+ meta: {
50
+ rowCount: number;
51
+ rigsRunningStaleCli?: number;
52
+ degradedFields?: string[];
53
+ sourceFallback?: string;
54
+ };
55
+ }
56
+ interface ReadLayerDeps {
57
+ db: Database.Database;
58
+ queueRepo: QueueRepository;
59
+ viewProjector: ViewProjector;
60
+ streamStore?: StreamStore;
61
+ fleetCliCapability: MissionControlFleetCliCapability;
62
+ /** Operator's default human-seat session for `my-queue`. */
63
+ defaultOperatorSession?: string;
64
+ now?: () => Date;
65
+ }
66
+ export declare class MissionControlReadLayer {
67
+ private readonly queueRepo;
68
+ private readonly viewProjector;
69
+ private readonly streamStore;
70
+ private readonly fleetCliCapability;
71
+ private readonly defaultOperatorSession;
72
+ constructor(deps: ReadLayerDeps);
73
+ readView(viewName: MissionControlViewName, opts?: {
74
+ operatorSession?: string;
75
+ }): Promise<MissionControlReadResult>;
76
+ private readMyQueue;
77
+ private readHumanGate;
78
+ private readFleet;
79
+ private readActiveWork;
80
+ private readRecentShips;
81
+ private readRecentlyActive;
82
+ private readRecentObservations;
83
+ }
84
+ export {};
85
+ //# sourceMappingURL=mission-control-read-layer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mission-control-read-layer.d.ts","sourceRoot":"","sources":["../../../src/domain/mission-control/mission-control-read-layer.ts"],"names":[],"mappings":"AAwBA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,eAAe,EAAyB,MAAM,wBAAwB,CAAC;AACrF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,WAAW,EAAc,MAAM,oBAAoB,CAAC;AAClE,OAAO,KAAK,EAAE,gCAAgC,EAAkB,MAAM,2CAA2C,CAAC;AAElH,eAAO,MAAM,qBAAqB,uHAQxB,CAAC;AAEX,MAAM,MAAM,sBAAsB,GAAG,CAAC,OAAO,qBAAqB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE5E;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,WAAW,gBAAgB;IAC/B,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,KAAK,EAAE,QAAQ,GAAG,MAAM,GAAG,WAAW,GAAG,SAAS,GAAG,UAAU,CAAC;IAChE,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,QAAQ,EAAE,MAAM,GAAG,cAAc,GAAG,cAAc,GAAG,IAAI,CAAC;IAC1D,UAAU,EAAE,MAAM,CAAC;IACnB,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,mDAAmD;IACnD,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,wDAAwD;IACxD,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,EAAE,sBAAsB,CAAC;IACjC,IAAI,EAAE,gBAAgB,EAAE,CAAC;IACzB;;;OAGG;IACH,IAAI,EAAE;QACJ,QAAQ,EAAE,MAAM,CAAC;QACjB,mBAAmB,CAAC,EAAE,MAAM,CAAC;QAC7B,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;QAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;KACzB,CAAC;CACH;AAED,UAAU,aAAa;IACrB,EAAE,EAAE,QAAQ,CAAC,QAAQ,CAAC;IACtB,SAAS,EAAE,eAAe,CAAC;IAC3B,aAAa,EAAE,aAAa,CAAC;IAC7B,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,kBAAkB,EAAE,gCAAgC,CAAC;IACrD,4DAA4D;IAC5D,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;CAClB;AAcD,qBAAa,uBAAuB;IAClC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAkB;IAC5C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgB;IAC9C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA0B;IACtD,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAmC;IACtE,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAS;gBAEpC,IAAI,EAAE,aAAa;IAQzB,QAAQ,CACZ,QAAQ,EAAE,sBAAsB,EAChC,IAAI,CAAC,EAAE;QAAE,eAAe,CAAC,EAAE,MAAM,CAAA;KAAE,GAClC,OAAO,CAAC,wBAAwB,CAAC;IAmBpC,OAAO,CAAC,WAAW;IAcnB,OAAO,CAAC,aAAa;YAaP,SAAS;IAevB,OAAO,CAAC,cAAc;IAkBtB,OAAO,CAAC,eAAe;IAcvB,OAAO,CAAC,kBAAkB;IAa1B,OAAO,CAAC,sBAAsB;CAgB/B"}