@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
@@ -0,0 +1,252 @@
1
+ // V0.3.1 slice 21 onboarding-conveyor: rich narrative content for the
2
+ // getting-started mission's two slices (the click-through-to-learn
3
+ // teaching surface).
4
+ import { GETTING_STARTED_NARRATIVE } from "./getting-started-narrative.js";
5
+ const DEFAULT_MISSIONS = [
6
+ {
7
+ id: "getting-started",
8
+ title: "Getting Started",
9
+ status: "active",
10
+ objective: "Launch the conveyor starter and learn how OpenRig moves work through queue-backed slices.",
11
+ slices: [
12
+ {
13
+ id: "first-conveyor-run",
14
+ title: "First Conveyor Run",
15
+ status: "active",
16
+ objective: "Move one small packet through intake, planning, build, review, and close on the conveyor starter.",
17
+ },
18
+ {
19
+ id: "inspect-project-evidence",
20
+ title: "Inspect Project Evidence",
21
+ status: "draft",
22
+ objective: "Open Project, Queue, Story, and Tests to inspect the evidence created by the first conveyor run.",
23
+ },
24
+ ],
25
+ },
26
+ ];
27
+ export function workspaceScaffoldDirs() {
28
+ return [
29
+ "missions",
30
+ "artifacts",
31
+ "evidence",
32
+ "progress",
33
+ "field-notes",
34
+ "specs",
35
+ "dogfood-evidence",
36
+ ...DEFAULT_MISSIONS.flatMap((mission) => [
37
+ `missions/${mission.id}`,
38
+ `missions/${mission.id}/slices`,
39
+ ...mission.slices.map((slice) => `missions/${mission.id}/slices/${slice.id}`),
40
+ ]),
41
+ ];
42
+ }
43
+ function subdirReadmeContent(subdir) {
44
+ switch (subdir) {
45
+ case "missions":
46
+ return "# missions\n\nProject missions live here. Each mission folder maps to one Project mission in the UI and owns a `slices/` child folder.\n\nExpected shape:\n\n```text\nmissions/<mission-id>/README.md\nmissions/<mission-id>/PROGRESS.md\nmissions/<mission-id>/slices/<slice-id>/README.md\n```\n";
47
+ case "artifacts":
48
+ return "# artifacts\n\nWork products live here: plans, drafts, generated outputs, and other files that a slice may reference before closure.\n";
49
+ case "evidence":
50
+ return "# evidence\n\nHuman-readable verification notes live here. Use this for compact proof summaries that are not tied to a screenshot or video packet.\n";
51
+ case "progress":
52
+ return "# progress\n\nPROGRESS.md tree. OpenRig's Progress browse view scans this directory recursively for PROGRESS.md files and renders them as a hierarchical tree.\n";
53
+ case "field-notes":
54
+ return "# field-notes\n\nOperator field notes. Free-form markdown notes from your daily work. OpenRig surfaces these alongside missions and slices for context.\n";
55
+ case "specs":
56
+ return "# specs\n\nWorkspace specs (rig specs / agent specs / workflow specs / context packs / skills). OpenRig's Library browses this directory alongside bundled specs.\n";
57
+ case "dogfood-evidence":
58
+ return "# dogfood-evidence\n\nProof packets live here. Each proof packet folder is matched to a Project slice by folder-name tokens and may contain markdown, screenshots, videos, traces, and other verification artifacts.\n";
59
+ default:
60
+ return `# ${subdir}\n`;
61
+ }
62
+ }
63
+ const WORKSPACE_README = `# OpenRig Workspace
64
+
65
+ This workspace is file-backed. The Project UI mirrors this structure:
66
+
67
+ - \`missions/<mission-id>\` becomes a Project mission.
68
+ - \`missions/<mission-id>/slices/<slice-id>\` becomes a Project slice.
69
+ - Queue items should mention or tag the mission id and slice id so Project can attach live work to the right slice.
70
+ - \`artifacts/\` is for work products that a slice needs to keep.
71
+ - \`evidence/\` is for proof notes and verification summaries.
72
+ - \`dogfood-evidence/<proof-packet-id>\` becomes Tests proof when the packet id contains the slice id tokens.
73
+
74
+ Use stable kebab-case ids for mission and slice folders. Keep slice ids unique inside the workspace.
75
+ `;
76
+ const STEERING_PLACEHOLDER = `---
77
+ title: Priority Stack
78
+ status: placeholder
79
+ ---
80
+
81
+ # OpenRig Priority Stack
82
+
83
+ This file is a placeholder created by \`rig config init-workspace\`. Edit it
84
+ to record your top priorities. OpenRig's Steering surface reads this file
85
+ alongside your Project workspace.
86
+
87
+ ## Top 3
88
+
89
+ 1. Run the \`conveyor\` starter rig.
90
+ 2. Move one packet through \`basic-loop\` or \`conveyor\`.
91
+ 3. Inspect the Project, Queue, Story, and Tests surfaces.
92
+
93
+ ## In Motion
94
+
95
+ (Active slices land here as you push them through the priority rail.)
96
+
97
+ ## Loop State
98
+
99
+ (Health gates + loop diagnostics land here.)
100
+ `;
101
+ function missionReadme(mission) {
102
+ return `---
103
+ title: ${mission.title}
104
+ status: ${mission.status}
105
+ mission: ${mission.id}
106
+ ---
107
+
108
+ # ${mission.title}
109
+
110
+ ${mission.objective}
111
+
112
+ ## Slices
113
+
114
+ ${mission.slices.map((slice) => `- [${slice.title}](slices/${slice.id}/README.md)`).join("\n")}
115
+ `;
116
+ }
117
+ function missionProgress(mission) {
118
+ return `---
119
+ title: ${mission.title} Progress
120
+ status: ${mission.status}
121
+ mission: ${mission.id}
122
+ ---
123
+
124
+ # ${mission.title} Progress
125
+
126
+ - [ ] Keep mission README current.
127
+ - [ ] Keep active slices queue-backed with mission and slice ids.
128
+ `;
129
+ }
130
+ function sliceReadme(mission, slice) {
131
+ // V0.3.1 slice 21: getting-started slices ship rich narrative
132
+ // content that teaches both "what a conveyor is" and "what each
133
+ // tab does". Other slices keep the boilerplate.
134
+ const narrative = GETTING_STARTED_NARRATIVE[slice.id];
135
+ if (narrative) {
136
+ return `---
137
+ title: ${slice.title}
138
+ status: ${slice.status}
139
+ mission: ${mission.id}
140
+ rail-item: ${mission.id}
141
+ slice: ${slice.id}
142
+ ---
143
+
144
+ ${narrative.readme}`;
145
+ }
146
+ return `---
147
+ title: ${slice.title}
148
+ status: ${slice.status}
149
+ mission: ${mission.id}
150
+ rail-item: ${mission.id}
151
+ slice: ${slice.id}
152
+ ---
153
+
154
+ # ${slice.title}
155
+
156
+ ${slice.objective}
157
+
158
+ ## Queue Mapping
159
+
160
+ Queue items for this slice should mention or tag:
161
+
162
+ - mission: \`${mission.id}\`
163
+ - slice: \`${slice.id}\`
164
+
165
+ This lets Project attach queue activity to the slice story, queue, tests, and topology tabs.
166
+ `;
167
+ }
168
+ /** V0.3.1 slice 21: getting-started slices emit a timeline.md that
169
+ * the slice Story tab renders via the slice-06 useSliceTimelineMarkdown
170
+ * hook. Returns null when no narrative is defined for the slice id
171
+ * (default mission slices don't ship a timeline). */
172
+ function sliceTimeline(mission, slice) {
173
+ const narrative = GETTING_STARTED_NARRATIVE[slice.id];
174
+ if (!narrative)
175
+ return null;
176
+ return narrative.timeline;
177
+ }
178
+ function sliceProgress(mission, slice) {
179
+ // V0.3.1 slice 21: getting-started slices ship the worked-example
180
+ // PROGRESS narrative (acceptance criteria for a mocked conveyor run
181
+ // / inspection); other slices keep the boilerplate.
182
+ const narrative = GETTING_STARTED_NARRATIVE[slice.id];
183
+ if (narrative)
184
+ return narrative.progress;
185
+ return `---
186
+ title: ${slice.title} Progress
187
+ status: ${slice.status}
188
+ mission: ${mission.id}
189
+ rail-item: ${mission.id}
190
+ slice: ${slice.id}
191
+ ---
192
+
193
+ # ${slice.title} Progress
194
+
195
+ - [ ] Define the next concrete packet.
196
+ - [ ] Attach queue work to this slice id.
197
+ - [ ] Capture proof or notes before closing.
198
+ `;
199
+ }
200
+ function slicePrd(mission, slice) {
201
+ return `---
202
+ title: ${slice.title} Implementation Notes
203
+ status: ${slice.status}
204
+ mission: ${mission.id}
205
+ rail-item: ${mission.id}
206
+ slice: ${slice.id}
207
+ ---
208
+
209
+ # ${slice.title} Implementation Notes
210
+
211
+ ## Goal
212
+
213
+ ${slice.objective}
214
+
215
+ ## Acceptance
216
+
217
+ - [ ] The work is visible in the Project slice.
218
+ - [ ] Queue items include enough body or tag context to link back to \`${slice.id}\`.
219
+ - [ ] Any proof artifacts are referenced from the slice before closure.
220
+ `;
221
+ }
222
+ export function workspaceScaffoldFiles() {
223
+ const files = [
224
+ { relPath: "README.md", content: WORKSPACE_README },
225
+ { relPath: "STEERING.md", content: STEERING_PLACEHOLDER },
226
+ { relPath: "missions/README.md", content: subdirReadmeContent("missions") },
227
+ { relPath: "artifacts/README.md", content: subdirReadmeContent("artifacts") },
228
+ { relPath: "evidence/README.md", content: subdirReadmeContent("evidence") },
229
+ { relPath: "progress/README.md", content: subdirReadmeContent("progress") },
230
+ { relPath: "field-notes/README.md", content: subdirReadmeContent("field-notes") },
231
+ { relPath: "specs/README.md", content: subdirReadmeContent("specs") },
232
+ { relPath: "dogfood-evidence/README.md", content: subdirReadmeContent("dogfood-evidence") },
233
+ ];
234
+ for (const mission of DEFAULT_MISSIONS) {
235
+ files.push({ relPath: `missions/${mission.id}/README.md`, content: missionReadme(mission) }, { relPath: `missions/${mission.id}/PROGRESS.md`, content: missionProgress(mission) });
236
+ for (const slice of mission.slices) {
237
+ files.push({ relPath: `missions/${mission.id}/slices/${slice.id}/README.md`, content: sliceReadme(mission, slice) }, { relPath: `missions/${mission.id}/slices/${slice.id}/PROGRESS.md`, content: sliceProgress(mission, slice) }, { relPath: `missions/${mission.id}/slices/${slice.id}/IMPLEMENTATION-PRD.md`, content: slicePrd(mission, slice) });
238
+ // V0.3.1 slice 21: getting-started slices ship a timeline.md
239
+ // so the Story tab renders the worked-example narrative via
240
+ // slice-06's useSliceTimelineMarkdown hook.
241
+ const timeline = sliceTimeline(mission, slice);
242
+ if (timeline) {
243
+ files.push({
244
+ relPath: `missions/${mission.id}/slices/${slice.id}/timeline.md`,
245
+ content: timeline,
246
+ });
247
+ }
248
+ }
249
+ }
250
+ return files;
251
+ }
252
+ //# sourceMappingURL=default-workspace-scaffold.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"default-workspace-scaffold.js","sourceRoot":"","sources":["../../../src/domain/workspace/default-workspace-scaffold.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,mEAAmE;AACnE,qBAAqB;AACrB,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAiB3E,MAAM,gBAAgB,GAAqB;IACzC;QACE,EAAE,EAAE,iBAAiB;QACrB,KAAK,EAAE,iBAAiB;QACxB,MAAM,EAAE,QAAQ;QAChB,SAAS,EAAE,2FAA2F;QACtG,MAAM,EAAE;YACN;gBACE,EAAE,EAAE,oBAAoB;gBACxB,KAAK,EAAE,oBAAoB;gBAC3B,MAAM,EAAE,QAAQ;gBAChB,SAAS,EAAE,mGAAmG;aAC/G;YACD;gBACE,EAAE,EAAE,0BAA0B;gBAC9B,KAAK,EAAE,0BAA0B;gBACjC,MAAM,EAAE,OAAO;gBACf,SAAS,EAAE,kGAAkG;aAC9G;SACF;KACF;CACF,CAAC;AAEF,MAAM,UAAU,qBAAqB;IACnC,OAAO;QACL,UAAU;QACV,WAAW;QACX,UAAU;QACV,UAAU;QACV,aAAa;QACb,OAAO;QACP,kBAAkB;QAClB,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;YACvC,YAAY,OAAO,CAAC,EAAE,EAAE;YACxB,YAAY,OAAO,CAAC,EAAE,SAAS;YAC/B,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,YAAY,OAAO,CAAC,EAAE,WAAW,KAAK,CAAC,EAAE,EAAE,CAAC;SAC9E,CAAC;KACH,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAAC,MAAc;IACzC,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,UAAU;YACb,OAAO,oSAAoS,CAAC;QAC9S,KAAK,WAAW;YACd,OAAO,wIAAwI,CAAC;QAClJ,KAAK,UAAU;YACb,OAAO,sJAAsJ,CAAC;QAChK,KAAK,UAAU;YACb,OAAO,kKAAkK,CAAC;QAC5K,KAAK,aAAa;YAChB,OAAO,2JAA2J,CAAC;QACrK,KAAK,OAAO;YACV,OAAO,qKAAqK,CAAC;QAC/K,KAAK,kBAAkB;YACrB,OAAO,wNAAwN,CAAC;QAClO;YACE,OAAO,KAAK,MAAM,IAAI,CAAC;IAC3B,CAAC;AACH,CAAC;AAED,MAAM,gBAAgB,GAAG;;;;;;;;;;;;CAYxB,CAAC;AAEF,MAAM,oBAAoB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;CAwB5B,CAAC;AAEF,SAAS,aAAa,CAAC,OAAuB;IAC5C,OAAO;SACA,OAAO,CAAC,KAAK;UACZ,OAAO,CAAC,MAAM;WACb,OAAO,CAAC,EAAE;;;IAGjB,OAAO,CAAC,KAAK;;EAEf,OAAO,CAAC,SAAS;;;;EAIjB,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,EAAE,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;CAC7F,CAAC;AACF,CAAC;AAED,SAAS,eAAe,CAAC,OAAuB;IAC9C,OAAO;SACA,OAAO,CAAC,KAAK;UACZ,OAAO,CAAC,MAAM;WACb,OAAO,CAAC,EAAE;;;IAGjB,OAAO,CAAC,KAAK;;;;CAIhB,CAAC;AACF,CAAC;AAED,SAAS,WAAW,CAAC,OAAuB,EAAE,KAAmB;IAC/D,8DAA8D;IAC9D,gEAAgE;IAChE,gDAAgD;IAChD,MAAM,SAAS,GAAG,yBAAyB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACtD,IAAI,SAAS,EAAE,CAAC;QACd,OAAO;SACF,KAAK,CAAC,KAAK;UACV,KAAK,CAAC,MAAM;WACX,OAAO,CAAC,EAAE;aACR,OAAO,CAAC,EAAE;SACd,KAAK,CAAC,EAAE;;;EAGf,SAAS,CAAC,MAAM,EAAE,CAAC;IACnB,CAAC;IACD,OAAO;SACA,KAAK,CAAC,KAAK;UACV,KAAK,CAAC,MAAM;WACX,OAAO,CAAC,EAAE;aACR,OAAO,CAAC,EAAE;SACd,KAAK,CAAC,EAAE;;;IAGb,KAAK,CAAC,KAAK;;EAEb,KAAK,CAAC,SAAS;;;;;;eAMF,OAAO,CAAC,EAAE;aACZ,KAAK,CAAC,EAAE;;;CAGpB,CAAC;AACF,CAAC;AAED;;;sDAGsD;AACtD,SAAS,aAAa,CAAC,OAAuB,EAAE,KAAmB;IACjE,MAAM,SAAS,GAAG,yBAAyB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACtD,IAAI,CAAC,SAAS;QAAE,OAAO,IAAI,CAAC;IAC5B,OAAO,SAAS,CAAC,QAAQ,CAAC;AAC5B,CAAC;AAED,SAAS,aAAa,CAAC,OAAuB,EAAE,KAAmB;IACjE,kEAAkE;IAClE,oEAAoE;IACpE,oDAAoD;IACpD,MAAM,SAAS,GAAG,yBAAyB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACtD,IAAI,SAAS;QAAE,OAAO,SAAS,CAAC,QAAQ,CAAC;IACzC,OAAO;SACA,KAAK,CAAC,KAAK;UACV,KAAK,CAAC,MAAM;WACX,OAAO,CAAC,EAAE;aACR,OAAO,CAAC,EAAE;SACd,KAAK,CAAC,EAAE;;;IAGb,KAAK,CAAC,KAAK;;;;;CAKd,CAAC;AACF,CAAC;AAED,SAAS,QAAQ,CAAC,OAAuB,EAAE,KAAmB;IAC5D,OAAO;SACA,KAAK,CAAC,KAAK;UACV,KAAK,CAAC,MAAM;WACX,OAAO,CAAC,EAAE;aACR,OAAO,CAAC,EAAE;SACd,KAAK,CAAC,EAAE;;;IAGb,KAAK,CAAC,KAAK;;;;EAIb,KAAK,CAAC,SAAS;;;;;yEAKwD,KAAK,CAAC,EAAE;;CAEhF,CAAC;AACF,CAAC;AAED,MAAM,UAAU,sBAAsB;IACpC,MAAM,KAAK,GAAgD;QACzD,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,gBAAgB,EAAE;QACnD,EAAE,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,oBAAoB,EAAE;QACzD,EAAE,OAAO,EAAE,oBAAoB,EAAE,OAAO,EAAE,mBAAmB,CAAC,UAAU,CAAC,EAAE;QAC3E,EAAE,OAAO,EAAE,qBAAqB,EAAE,OAAO,EAAE,mBAAmB,CAAC,WAAW,CAAC,EAAE;QAC7E,EAAE,OAAO,EAAE,oBAAoB,EAAE,OAAO,EAAE,mBAAmB,CAAC,UAAU,CAAC,EAAE;QAC3E,EAAE,OAAO,EAAE,oBAAoB,EAAE,OAAO,EAAE,mBAAmB,CAAC,UAAU,CAAC,EAAE;QAC3E,EAAE,OAAO,EAAE,uBAAuB,EAAE,OAAO,EAAE,mBAAmB,CAAC,aAAa,CAAC,EAAE;QACjF,EAAE,OAAO,EAAE,iBAAiB,EAAE,OAAO,EAAE,mBAAmB,CAAC,OAAO,CAAC,EAAE;QACrE,EAAE,OAAO,EAAE,4BAA4B,EAAE,OAAO,EAAE,mBAAmB,CAAC,kBAAkB,CAAC,EAAE;KAC5F,CAAC;IACF,KAAK,MAAM,OAAO,IAAI,gBAAgB,EAAE,CAAC;QACvC,KAAK,CAAC,IAAI,CACR,EAAE,OAAO,EAAE,YAAY,OAAO,CAAC,EAAE,YAAY,EAAE,OAAO,EAAE,aAAa,CAAC,OAAO,CAAC,EAAE,EAChF,EAAE,OAAO,EAAE,YAAY,OAAO,CAAC,EAAE,cAAc,EAAE,OAAO,EAAE,eAAe,CAAC,OAAO,CAAC,EAAE,CACrF,CAAC;QACF,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnC,KAAK,CAAC,IAAI,CACR,EAAE,OAAO,EAAE,YAAY,OAAO,CAAC,EAAE,WAAW,KAAK,CAAC,EAAE,YAAY,EAAE,OAAO,EAAE,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,EACxG,EAAE,OAAO,EAAE,YAAY,OAAO,CAAC,EAAE,WAAW,KAAK,CAAC,EAAE,cAAc,EAAE,OAAO,EAAE,aAAa,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,EAC5G,EAAE,OAAO,EAAE,YAAY,OAAO,CAAC,EAAE,WAAW,KAAK,CAAC,EAAE,wBAAwB,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,CAClH,CAAC;YACF,6DAA6D;YAC7D,4DAA4D;YAC5D,4CAA4C;YAC5C,MAAM,QAAQ,GAAG,aAAa,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YAC/C,IAAI,QAAQ,EAAE,CAAC;gBACb,KAAK,CAAC,IAAI,CAAC;oBACT,OAAO,EAAE,YAAY,OAAO,CAAC,EAAE,WAAW,KAAK,CAAC,EAAE,cAAc;oBAChE,OAAO,EAAE,QAAQ;iBAClB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -0,0 +1,40 @@
1
+ import type { WorkspaceKind } from "../types.js";
2
+ export type FrontmatterGapKind = "missing-required-field" | "unrecognized-status-value" | "parse-error" | "missing-frontmatter";
3
+ export interface FrontmatterGap {
4
+ filePath: string;
5
+ /** Path relative to the validation root, for stable cross-machine output. */
6
+ relativePath: string;
7
+ kind: FrontmatterGapKind;
8
+ /** Field name when kind === "missing-required-field" or
9
+ * "unrecognized-status-value"; null otherwise. */
10
+ field: string | null;
11
+ message: string;
12
+ /** Workspace kind the file was validated against (e.g. "knowledge"). */
13
+ workspaceKind: WorkspaceKind | null;
14
+ }
15
+ export interface FrontmatterValidationReport {
16
+ root: string;
17
+ /** Workspace kind applied to all files under this root. v0: caller picks
18
+ * one root + one kind per invocation. */
19
+ workspaceKind: WorkspaceKind | null;
20
+ totalFiles: number;
21
+ filesWithFrontmatter: number;
22
+ gapCount: number;
23
+ gaps: FrontmatterGap[];
24
+ }
25
+ export interface ValidateOpts {
26
+ root: string;
27
+ workspaceKind?: WorkspaceKind;
28
+ /** When true, recurse into subdirectories. Defaults to true. */
29
+ recursive?: boolean;
30
+ /** When true, validate every .md file even if frontmatter is absent
31
+ * (records a `missing-frontmatter` gap). Defaults to false — files
32
+ * without `---` are skipped silently (treated as informal notes). */
33
+ requireFrontmatter?: boolean;
34
+ /** Hard cap on files walked. Defaults to 10000. Prevents accidental
35
+ * multi-GB walks from runaway invocations. */
36
+ maxFiles?: number;
37
+ }
38
+ /** Run the frontmatter validator. */
39
+ export declare function validateWorkspaceFrontmatter(opts: ValidateOpts): FrontmatterValidationReport;
40
+ //# sourceMappingURL=frontmatter-validator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"frontmatter-validator.d.ts","sourceRoot":"","sources":["../../../src/domain/workspace/frontmatter-validator.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAGjD,MAAM,MAAM,kBAAkB,GAC1B,wBAAwB,GACxB,2BAA2B,GAC3B,aAAa,GACb,qBAAqB,CAAC;AAE1B,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,6EAA6E;IAC7E,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,kBAAkB,CAAC;IACzB;uDACmD;IACnD,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,wEAAwE;IACxE,aAAa,EAAE,aAAa,GAAG,IAAI,CAAC;CACrC;AAED,MAAM,WAAW,2BAA2B;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb;8CAC0C;IAC1C,aAAa,EAAE,aAAa,GAAG,IAAI,CAAC;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,cAAc,EAAE,CAAC;CACxB;AAaD,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,gEAAgE;IAChE,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;0EAEsE;IACtE,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B;mDAC+C;IAC/C,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,qCAAqC;AACrC,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,YAAY,GAAG,2BAA2B,CAqD5F"}
@@ -0,0 +1,185 @@
1
+ // PL-007 Workspace Primitive v0 — frontmatter validator (advisory).
2
+ //
3
+ // Walks a workspace root, parses each .md file's YAML frontmatter
4
+ // (delimited by `---` lines at the start of file), and validates per-kind
5
+ // required fields. Outputs a structured gap report:
6
+ //
7
+ // - missing-required-field
8
+ // - unrecognized-status-value
9
+ // - parse-error (frontmatter present but malformed)
10
+ // - missing-frontmatter (no frontmatter delimiter found)
11
+ //
12
+ // Advisory only — never modifies files. curate-steward consumes the
13
+ // gap report as hygiene input. The validator is deliberately minimal at
14
+ // v0 (per PL-007 PRD); broken-cross-reference / non-conforming-structure
15
+ // rules are deferred to v1+.
16
+ import * as fs from "node:fs";
17
+ import * as path from "node:path";
18
+ import { parse as parseYaml } from "yaml";
19
+ import { WORKSPACE_KINDS } from "../types.js";
20
+ const VALID_STATUS_VALUES = new Set(["active", "draft", "archived", "superseded"]);
21
+ /** Per-kind required frontmatter fields. v0 minimum baseline (advisory). */
22
+ const REQUIRED_FIELDS_BY_KIND = {
23
+ user: ["doc"],
24
+ project: ["doc"],
25
+ knowledge: ["doc", "status", "created", "owner"],
26
+ lab: ["doc", "status", "created", "owner"],
27
+ delivery: ["doc", "status", "created", "owner"],
28
+ };
29
+ /** Run the frontmatter validator. */
30
+ export function validateWorkspaceFrontmatter(opts) {
31
+ const root = path.resolve(opts.root);
32
+ const recursive = opts.recursive ?? true;
33
+ const requireFrontmatter = opts.requireFrontmatter ?? false;
34
+ const maxFiles = opts.maxFiles ?? 10000;
35
+ const kind = isValidKind(opts.workspaceKind) ? opts.workspaceKind : null;
36
+ const gaps = [];
37
+ let totalFiles = 0;
38
+ let filesWithFrontmatter = 0;
39
+ const walk = (dir) => {
40
+ if (totalFiles >= maxFiles)
41
+ return;
42
+ let entries;
43
+ try {
44
+ entries = fs.readdirSync(dir, { withFileTypes: true });
45
+ }
46
+ catch {
47
+ return;
48
+ }
49
+ for (const entry of entries) {
50
+ if (totalFiles >= maxFiles)
51
+ return;
52
+ const full = path.join(dir, entry.name);
53
+ if (entry.isDirectory()) {
54
+ if (!recursive)
55
+ continue;
56
+ // Skip noise dirs that aren't canon: node_modules, .git, .worktrees,
57
+ // dist/build artifacts. Authors writing canon don't put these here.
58
+ if (entry.name === "node_modules" ||
59
+ entry.name === ".git" ||
60
+ entry.name === ".worktrees" ||
61
+ entry.name === "dist" ||
62
+ entry.name === "build")
63
+ continue;
64
+ walk(full);
65
+ continue;
66
+ }
67
+ if (!entry.isFile() || !entry.name.endsWith(".md"))
68
+ continue;
69
+ totalFiles++;
70
+ const result = validateFile(full, root, kind, requireFrontmatter);
71
+ if (result.hasFrontmatter)
72
+ filesWithFrontmatter++;
73
+ gaps.push(...result.gaps);
74
+ }
75
+ };
76
+ walk(root);
77
+ return {
78
+ root,
79
+ workspaceKind: kind,
80
+ totalFiles,
81
+ filesWithFrontmatter,
82
+ gapCount: gaps.length,
83
+ gaps,
84
+ };
85
+ }
86
+ function isValidKind(k) {
87
+ return typeof k === "string" && WORKSPACE_KINDS.includes(k);
88
+ }
89
+ function validateFile(filePath, root, kind, requireFrontmatter) {
90
+ const relativePath = path.relative(root, filePath);
91
+ const out = { hasFrontmatter: false, gaps: [] };
92
+ let raw;
93
+ try {
94
+ raw = fs.readFileSync(filePath, "utf-8");
95
+ }
96
+ catch {
97
+ return out;
98
+ }
99
+ const fm = extractFrontmatter(raw);
100
+ if (!fm.found) {
101
+ if (requireFrontmatter) {
102
+ out.gaps.push({
103
+ filePath,
104
+ relativePath,
105
+ kind: "missing-frontmatter",
106
+ field: null,
107
+ message: "no frontmatter delimiter (---) found at start of file",
108
+ workspaceKind: kind,
109
+ });
110
+ }
111
+ return out;
112
+ }
113
+ out.hasFrontmatter = true;
114
+ let parsed;
115
+ try {
116
+ parsed = parseYaml(fm.body);
117
+ }
118
+ catch (err) {
119
+ out.gaps.push({
120
+ filePath,
121
+ relativePath,
122
+ kind: "parse-error",
123
+ field: null,
124
+ message: err instanceof Error ? err.message : "YAML parse error",
125
+ workspaceKind: kind,
126
+ });
127
+ return out;
128
+ }
129
+ if (!parsed || typeof parsed !== "object") {
130
+ out.gaps.push({
131
+ filePath,
132
+ relativePath,
133
+ kind: "parse-error",
134
+ field: null,
135
+ message: "frontmatter is not a YAML object",
136
+ workspaceKind: kind,
137
+ });
138
+ return out;
139
+ }
140
+ if (kind) {
141
+ const required = REQUIRED_FIELDS_BY_KIND[kind];
142
+ for (const field of required) {
143
+ if (!(field in parsed) || parsed[field] === null || parsed[field] === undefined || parsed[field] === "") {
144
+ out.gaps.push({
145
+ filePath,
146
+ relativePath,
147
+ kind: "missing-required-field",
148
+ field,
149
+ message: `${kind} canon requires "${field}" frontmatter field`,
150
+ workspaceKind: kind,
151
+ });
152
+ }
153
+ }
154
+ // status enum check (only when status is present + a string)
155
+ if (typeof parsed["status"] === "string" && !VALID_STATUS_VALUES.has(parsed["status"])) {
156
+ out.gaps.push({
157
+ filePath,
158
+ relativePath,
159
+ kind: "unrecognized-status-value",
160
+ field: "status",
161
+ message: `status "${parsed["status"]}" is not one of: ${[...VALID_STATUS_VALUES].join(", ")}`,
162
+ workspaceKind: kind,
163
+ });
164
+ }
165
+ }
166
+ return out;
167
+ }
168
+ /** Extract YAML frontmatter delimited by `---` lines. The opening `---`
169
+ * must be on the first line. Returns the frontmatter body (between the
170
+ * delimiters) when found. */
171
+ function extractFrontmatter(raw) {
172
+ if (!raw.startsWith("---"))
173
+ return { found: false, body: "" };
174
+ // Find the closing delimiter, allowing both LF and CRLF line endings.
175
+ const lines = raw.split(/\r?\n/);
176
+ if (lines[0].trim() !== "---")
177
+ return { found: false, body: "" };
178
+ for (let i = 1; i < lines.length; i++) {
179
+ if (lines[i].trim() === "---") {
180
+ return { found: true, body: lines.slice(1, i).join("\n") };
181
+ }
182
+ }
183
+ return { found: false, body: "" };
184
+ }
185
+ //# sourceMappingURL=frontmatter-validator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"frontmatter-validator.js","sourceRoot":"","sources":["../../../src/domain/workspace/frontmatter-validator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ export declare const FIRST_CONVEYOR_RUN_README = "# First Conveyor Run\n\nWelcome to OpenRig. This is the first slice in your getting-started mission. It exists to teach you what a **conveyor run** is + how OpenRig moves work through a multi-agent topology.\n\n## What a conveyor run is\n\nA **conveyor** is OpenRig's central work-movement primitive. One conveyor run = one complete flow of work through your topology:\n\n1. **Slice declared** \u2014 operator (you) or an agent declares a slice with intent + acceptance criteria\n2. **Work routed** \u2014 orchestrator picks the slice up + routes it to the right agent\n3. **Agents collaborate** \u2014 work moves agent-to-agent via durable handoffs (queue items)\n4. **Evidence accumulates** \u2014 each step leaves a trail: commits, files, proof packets, screenshots\n5. **Slice closes** \u2014 acceptance criteria met; orchestrator routes the result back\n\nYou're looking at a mocked conveyor run RIGHT NOW. The other tabs (Story / Progress / Artifacts / Tests / Queue / Topology) each show a different slice of this same run.\n\n## Walking the tabs\n\n- **Overview** (you're here) \u2014 read what a slice intends + how to use the rest of the tabs\n- **Story** \u2014 narrative timeline of what happened, beat by beat\n- **Progress** \u2014 acceptance checklist; what's done, what's pending\n- **Artifacts** \u2014 files produced, commits, proof packets \u2014 the durable evidence trail\n- **Tests** \u2014 pass/fail summaries + screenshots + verification proof\n- **Queue** \u2014 operational qitems showing how work moved between agents\n- **Topology** \u2014 the rig graph; which agents touched this slice + which edges fired\n\n## Click through\n\nTry them in order. Each tab teaches itself.\n";
2
+ export declare const FIRST_CONVEYOR_RUN_TIMELINE = "# Story \u2014 First Conveyor Run\n\n## 2026-04-15 09:00 \u2014 Slice declared\n\nOperator request: \"Build a CLI tool that lints todo lists.\" Slice declared in `getting-started/slices/first-conveyor-run/`. Acceptance: `tdl lint <file>` exits non-zero on malformed entries.\n\n## 09:02 \u2014 Orchestrator routes\n\n`orch-lead@getting-started` picks up the slice. Routes to `driver@getting-started` via `rig queue handoff`. Driver receives nudge; opens IMPL-PRD; reads acceptance.\n\n## 09:05 \u2014 Driver picks up\n\nDriver claims qitem. Reads slice scope. Surveys existing tdl repo (this is a worked example \u2014 imagine the repo is real). Plans: parse YAML; validate entries; exit code per finding.\n\n## 09:30 \u2014 First commit\n\n`feat(lint): parse + validate todo entries` \u2014 driver commits 4 files. Stream event emitted; visible in Artifacts tab.\n\n## 10:15 \u2014 Driver hands to reviewer\n\nAcceptance met locally. Driver hands off to `reviewer@getting-started`. Reviewer opens diff; reads tests.\n\n## 10:25 \u2014 Reviewer flags concern\n\n\"Edge case: what about UTF-8 entries with combining characters?\" Hands back to driver as `concerning`.\n\n## 10:40 \u2014 Driver addresses\n\nDriver fixes UTF-8 handling. Re-runs tests; all pass. Hands back.\n\n## 11:00 \u2014 Reviewer accepts\n\n`accept` decision; closes qitem with `closure-reason: handed_off_to orch-lead`. Conveyor proceeds.\n\n## 11:05 \u2014 Slice ships\n\nOrchestrator merges. Proof packet generated. Slice marked SHIPPED.\n\n---\n\n**What you just read**: one conveyor run from declaration to ship. ~2 hours wall-clock; 3 agents involved; 1 handoff with concern + remediation; 5 stream events; 1 proof packet.\n\nThe Story tab shows this kind of narrative for any real slice. Driver-authored `timeline.md` files live in each slice folder; this is yours to read + your operator's to update as work moves.\n";
3
+ export declare const FIRST_CONVEYOR_RUN_PROGRESS = "---\ntitle: First Conveyor Run Progress\nstatus: active\nmission: getting-started\nrail-item: getting-started\nslice: first-conveyor-run\n---\n\n# Progress \u2014 First Conveyor Run\n\n## Acceptance criteria\n\n- [x] Parse YAML todo entries\n- [x] Validate per-entry shape (id, title, status, due-date)\n- [x] Exit non-zero on malformed entries\n- [x] Handle UTF-8 entries with combining characters\n- [x] Tests pass (12/12)\n- [x] Reviewer accepts\n- [x] Slice merged\n\n## Status: SHIPPED\n\nThis was a mocked conveyor run \u2014 no real code was produced. But the Progress tab works the same way for real work: as acceptance criteria are met, boxes get checked; the operator can scan at a glance whether the slice is on track.\n\n## How the Progress tab works\n\nThe tab renders the slice's `PROGRESS.md` markdown file. Driver updates it as work progresses. Operator scans it during walks. Founder reviews at slice closure.\n\nTry writing one for a real slice you start. It's just markdown; live updates appear here.\n";
4
+ export declare const INSPECT_PROJECT_EVIDENCE_README = "# Inspect Project Evidence\n\nThe previous slice (First Conveyor Run) showed you what a conveyor run looks like as it happens. This slice teaches you how to inspect the evidence after a run completes.\n\n## Why inspect evidence?\n\nIn OpenRig, agents work autonomously. The operator (you) doesn't watch every keystroke. Instead, the operator:\n\n1. Declares slices with clear acceptance\n2. Routes them to agents\n3. Inspects evidence when slices close\n\nThe Artifacts + Tests + Queue + Topology tabs are your inspection surface. They show you what happened, with enough detail to:\n\n- Verify the acceptance was actually met\n- Spot subtle issues a passing test might miss\n- Build trust in the agents over time\n\n## Walking the tabs\n\n- **Overview** \u2014 you're here; learn what to look for\n- **Story** \u2014 read the narrative of what happened (high-level)\n- **Progress** \u2014 acceptance status at a glance\n- **Artifacts** \u2014 the durable evidence: files, commits, proof packets. **THIS IS THE TAB YOU LEARN MOST FROM.**\n- **Tests** \u2014 pass/fail + screenshots + verification proof\n- **Queue** \u2014 who handed what to whom (audit trail of decisions)\n- **Topology** \u2014 which agents touched this; which edges fired\n\n## Key inspection skills\n\nWhen walking a finished slice:\n\n1. **Read the Story** for context \u2014 what was the operator trying to do?\n2. **Check Progress** \u2014 did acceptance actually pass? Any TODO boxes?\n3. **Open Artifacts \u2192 Files** \u2014 sample-read 2-3 files; does the code match what the Story claimed?\n4. **Open Tests \u2192 Proof packets** \u2014 do screenshots actually show what was claimed?\n5. **Read Queue** \u2014 were there concerning decisions? Hand-offs to escalation?\n6. **Skim Topology** \u2014 were unexpected agents involved?\n\nTrust comes from repeated successful inspections, not from a single proof packet.\n";
5
+ export declare const INSPECT_PROJECT_EVIDENCE_TIMELINE = "# Story \u2014 Inspect Project Evidence\n\nThis slice mirrors the previous one (First Conveyor Run). The same agents shipped the same work. But this view is from the inspector's angle, not the runner's.\n\n## 11:10 \u2014 Operator opens project\n\nOperator (you, in the real world) opens `/project/slice/first-conveyor-run` after the slice ships. First read: the Progress tab. All boxes checked.\n\n## 11:12 \u2014 Read Story\n\nOperator reads the Story narrative. Notices the reviewer's UTF-8 concern + driver's remediation. Confidence-building: there was friction, friction was caught, friction was addressed.\n\n## 11:15 \u2014 Open Artifacts\n\nOperator clicks Artifacts. Sees 4 commits, 5 files, 1 proof packet, 2 screenshots. Opens commit `feat(lint): parse + validate todo entries`. Reads the diff.\n\n## 11:18 \u2014 Read tests\n\nOperator opens Tests tab. 12/12 passing. Opens the proof packet \u2014 screenshot shows CLI output `Error: malformed entry at line 3`. Visually verifies the acceptance was met.\n\n## 11:22 \u2014 Skim Queue\n\nOperator scrolls Queue. 4 qitems in chronological order. Sees the `concerning` decision + subsequent `accept`. Confidence reinforced.\n\n## 11:25 \u2014 Mark complete\n\nOperator marks slice acceptance complete. Closes the inspection.\n\n---\n\n**What you just read**: a clean inspection in ~15 minutes. Operator builds trust through the evidence trail. This is the OpenRig usage pattern at scale: declare \u2192 route \u2192 inspect.\n";
6
+ export declare const INSPECT_PROJECT_EVIDENCE_PROGRESS = "---\ntitle: Inspect Project Evidence Progress\nstatus: active\nmission: getting-started\nrail-item: getting-started\nslice: inspect-project-evidence\n---\n\n# Progress \u2014 Inspect Project Evidence\n\n## Inspection checklist\n\n- [x] Read Story (context: what was being done)\n- [x] Check Progress (acceptance status)\n- [x] Sample-read Artifacts files\n- [x] Verify Tests proof packets visually\n- [x] Skim Queue for concerning decisions\n- [x] Skim Topology for unexpected agents\n\n## Status: COMPLETE\n\nThis was a mocked inspection \u2014 a worked example of the inspection workflow.\n\n## How to apply this\n\nFor any real slice that ships in YOUR project: open the slice page, walk the tabs in this order, check each box mentally. Over time you'll develop instincts for what passes the smell test vs what needs deeper investigation.\n";
7
+ /** Slice id → narrative content map. Scaffold callers use this to
8
+ * override the boilerplate sliceReadme / sliceProgress for the two
9
+ * getting-started slices. Other slices keep the boilerplate. */
10
+ export declare const GETTING_STARTED_NARRATIVE: Record<string, {
11
+ readme: string;
12
+ timeline: string;
13
+ progress: string;
14
+ }>;
15
+ //# sourceMappingURL=getting-started-narrative.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getting-started-narrative.d.ts","sourceRoot":"","sources":["../../../src/domain/workspace/getting-started-narrative.ts"],"names":[],"mappings":"AAkBA,eAAO,MAAM,yBAAyB,4qDA6BrC,CAAC;AAEF,eAAO,MAAM,2BAA2B,22DA2CvC,CAAC;AAEF,eAAO,MAAM,2BAA2B,kgCA6BvC,CAAC;AAEF,eAAO,MAAM,+BAA+B,62DAwC3C,CAAC;AAEF,eAAO,MAAM,iCAAiC,k9CA+B7C,CAAC;AAEF,eAAO,MAAM,iCAAiC,g1BA0B7C,CAAC;AAEF;;iEAEiE;AACjE,eAAO,MAAM,yBAAyB,EAAE,MAAM,CAC5C,MAAM,EACN;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAYvD,CAAC"}