@openrig/cli 0.3.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 (282) 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 +1 -3
  24. package/daemon/dist/adapters/claude-code-adapter.d.ts.map +1 -1
  25. package/daemon/dist/adapters/claude-code-adapter.js +17 -57
  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/db/migrations/040_workflow_specs_diagnostic.d.ts +32 -0
  39. package/daemon/dist/db/migrations/040_workflow_specs_diagnostic.d.ts.map +1 -0
  40. package/daemon/dist/db/migrations/040_workflow_specs_diagnostic.js +37 -0
  41. package/daemon/dist/db/migrations/040_workflow_specs_diagnostic.js.map +1 -0
  42. package/daemon/dist/domain/agent-manifest.d.ts.map +1 -1
  43. package/daemon/dist/domain/agent-manifest.js +116 -37
  44. package/daemon/dist/domain/agent-manifest.js.map +1 -1
  45. package/daemon/dist/domain/agent-resolver.js +1 -1
  46. package/daemon/dist/domain/agent-resolver.js.map +1 -1
  47. package/daemon/dist/domain/claude-compaction-enforcer.d.ts +81 -0
  48. package/daemon/dist/domain/claude-compaction-enforcer.d.ts.map +1 -0
  49. package/daemon/dist/domain/claude-compaction-enforcer.js +242 -0
  50. package/daemon/dist/domain/claude-compaction-enforcer.js.map +1 -0
  51. package/daemon/dist/domain/cmux-layout-service.d.ts +41 -0
  52. package/daemon/dist/domain/cmux-layout-service.d.ts.map +1 -0
  53. package/daemon/dist/domain/cmux-layout-service.js +184 -0
  54. package/daemon/dist/domain/cmux-layout-service.js.map +1 -0
  55. package/daemon/dist/domain/context-monitor.d.ts +15 -1
  56. package/daemon/dist/domain/context-monitor.d.ts.map +1 -1
  57. package/daemon/dist/domain/context-monitor.js +38 -3
  58. package/daemon/dist/domain/context-monitor.js.map +1 -1
  59. package/daemon/dist/domain/kernel-boot-tracker.d.ts +74 -0
  60. package/daemon/dist/domain/kernel-boot-tracker.d.ts.map +1 -0
  61. package/daemon/dist/domain/kernel-boot-tracker.js +213 -0
  62. package/daemon/dist/domain/kernel-boot-tracker.js.map +1 -0
  63. package/daemon/dist/domain/kernel-boot.d.ts +50 -0
  64. package/daemon/dist/domain/kernel-boot.d.ts.map +1 -0
  65. package/daemon/dist/domain/kernel-boot.js +147 -0
  66. package/daemon/dist/domain/kernel-boot.js.map +1 -0
  67. package/daemon/dist/domain/mission-control/mission-control-read-layer.d.ts +5 -0
  68. package/daemon/dist/domain/mission-control/mission-control-read-layer.d.ts.map +1 -1
  69. package/daemon/dist/domain/mission-control/mission-control-read-layer.js +16 -2
  70. package/daemon/dist/domain/mission-control/mission-control-read-layer.js.map +1 -1
  71. package/daemon/dist/domain/mission-control/mission-control-write-contract.d.ts.map +1 -1
  72. package/daemon/dist/domain/mission-control/mission-control-write-contract.js +3 -1
  73. package/daemon/dist/domain/mission-control/mission-control-write-contract.js.map +1 -1
  74. package/daemon/dist/domain/plugin-discovery-service.d.ts +150 -0
  75. package/daemon/dist/domain/plugin-discovery-service.d.ts.map +1 -0
  76. package/daemon/dist/domain/plugin-discovery-service.js +468 -0
  77. package/daemon/dist/domain/plugin-discovery-service.js.map +1 -0
  78. package/daemon/dist/domain/plugin-vendor-service.d.ts +54 -0
  79. package/daemon/dist/domain/plugin-vendor-service.d.ts.map +1 -0
  80. package/daemon/dist/domain/plugin-vendor-service.js +111 -0
  81. package/daemon/dist/domain/plugin-vendor-service.js.map +1 -0
  82. package/daemon/dist/domain/profile-resolver.d.ts +3 -3
  83. package/daemon/dist/domain/profile-resolver.d.ts.map +1 -1
  84. package/daemon/dist/domain/profile-resolver.js +7 -7
  85. package/daemon/dist/domain/profile-resolver.js.map +1 -1
  86. package/daemon/dist/domain/projection-planner.d.ts +7 -1
  87. package/daemon/dist/domain/projection-planner.d.ts.map +1 -1
  88. package/daemon/dist/domain/projection-planner.js +44 -4
  89. package/daemon/dist/domain/projection-planner.js.map +1 -1
  90. package/daemon/dist/domain/queue-repository.d.ts +8 -1
  91. package/daemon/dist/domain/queue-repository.d.ts.map +1 -1
  92. package/daemon/dist/domain/queue-repository.js +14 -5
  93. package/daemon/dist/domain/queue-repository.js.map +1 -1
  94. package/daemon/dist/domain/session-transport.d.ts.map +1 -1
  95. package/daemon/dist/domain/session-transport.js +33 -0
  96. package/daemon/dist/domain/session-transport.js.map +1 -1
  97. package/daemon/dist/domain/skill-library-discovery.d.ts +68 -0
  98. package/daemon/dist/domain/skill-library-discovery.d.ts.map +1 -0
  99. package/daemon/dist/domain/skill-library-discovery.js +144 -0
  100. package/daemon/dist/domain/skill-library-discovery.js.map +1 -0
  101. package/daemon/dist/domain/slices/slice-indexer.d.ts +19 -0
  102. package/daemon/dist/domain/slices/slice-indexer.d.ts.map +1 -1
  103. package/daemon/dist/domain/slices/slice-indexer.js +88 -6
  104. package/daemon/dist/domain/slices/slice-indexer.js.map +1 -1
  105. package/daemon/dist/domain/spec-library-service.d.ts +6 -0
  106. package/daemon/dist/domain/spec-library-service.d.ts.map +1 -1
  107. package/daemon/dist/domain/spec-library-service.js.map +1 -1
  108. package/daemon/dist/domain/spec-library-workflow-scanner.d.ts +43 -0
  109. package/daemon/dist/domain/spec-library-workflow-scanner.d.ts.map +1 -1
  110. package/daemon/dist/domain/spec-library-workflow-scanner.js +157 -3
  111. package/daemon/dist/domain/spec-library-workflow-scanner.js.map +1 -1
  112. package/daemon/dist/domain/spec-review-service.d.ts +1 -1
  113. package/daemon/dist/domain/spec-review-service.d.ts.map +1 -1
  114. package/daemon/dist/domain/spec-review-service.js +14 -1
  115. package/daemon/dist/domain/spec-review-service.js.map +1 -1
  116. package/daemon/dist/domain/types.d.ts +27 -7
  117. package/daemon/dist/domain/types.d.ts.map +1 -1
  118. package/daemon/dist/domain/types.js.map +1 -1
  119. package/daemon/dist/domain/user-settings/settings-store.d.ts +25 -1
  120. package/daemon/dist/domain/user-settings/settings-store.d.ts.map +1 -1
  121. package/daemon/dist/domain/user-settings/settings-store.js +186 -4
  122. package/daemon/dist/domain/user-settings/settings-store.js.map +1 -1
  123. package/daemon/dist/domain/workflow-spec-cache.d.ts +27 -0
  124. package/daemon/dist/domain/workflow-spec-cache.d.ts.map +1 -1
  125. package/daemon/dist/domain/workflow-spec-cache.js +59 -0
  126. package/daemon/dist/domain/workflow-spec-cache.js.map +1 -1
  127. package/daemon/dist/domain/workspace/default-workspace-scaffold.d.ts.map +1 -1
  128. package/daemon/dist/domain/workspace/default-workspace-scaffold.js +45 -0
  129. package/daemon/dist/domain/workspace/default-workspace-scaffold.js.map +1 -1
  130. package/daemon/dist/domain/workspace/getting-started-narrative.d.ts +15 -0
  131. package/daemon/dist/domain/workspace/getting-started-narrative.d.ts.map +1 -0
  132. package/daemon/dist/domain/workspace/getting-started-narrative.js +237 -0
  133. package/daemon/dist/domain/workspace/getting-started-narrative.js.map +1 -0
  134. package/daemon/dist/index.d.ts +2 -1
  135. package/daemon/dist/index.d.ts.map +1 -1
  136. package/daemon/dist/index.js +52 -17
  137. package/daemon/dist/index.js.map +1 -1
  138. package/daemon/dist/lib/pane-envelope.d.ts +7 -0
  139. package/daemon/dist/lib/pane-envelope.d.ts.map +1 -0
  140. package/daemon/dist/lib/pane-envelope.js +38 -0
  141. package/daemon/dist/lib/pane-envelope.js.map +1 -0
  142. package/daemon/dist/middleware/auth-bearer-token.d.ts +47 -5
  143. package/daemon/dist/middleware/auth-bearer-token.d.ts.map +1 -1
  144. package/daemon/dist/middleware/auth-bearer-token.js +109 -8
  145. package/daemon/dist/middleware/auth-bearer-token.js.map +1 -1
  146. package/daemon/dist/routes/kernel-status.d.ts +3 -0
  147. package/daemon/dist/routes/kernel-status.d.ts.map +1 -0
  148. package/daemon/dist/routes/kernel-status.js +40 -0
  149. package/daemon/dist/routes/kernel-status.js.map +1 -0
  150. package/daemon/dist/routes/mission-control.d.ts.map +1 -1
  151. package/daemon/dist/routes/mission-control.js +25 -2
  152. package/daemon/dist/routes/mission-control.js.map +1 -1
  153. package/daemon/dist/routes/missions.d.ts +3 -0
  154. package/daemon/dist/routes/missions.d.ts.map +1 -0
  155. package/daemon/dist/routes/missions.js +195 -0
  156. package/daemon/dist/routes/missions.js.map +1 -0
  157. package/daemon/dist/routes/plugins.d.ts +3 -0
  158. package/daemon/dist/routes/plugins.d.ts.map +1 -0
  159. package/daemon/dist/routes/plugins.js +223 -0
  160. package/daemon/dist/routes/plugins.js.map +1 -0
  161. package/daemon/dist/routes/rig-cmux.d.ts +3 -0
  162. package/daemon/dist/routes/rig-cmux.d.ts.map +1 -0
  163. package/daemon/dist/routes/rig-cmux.js +121 -0
  164. package/daemon/dist/routes/rig-cmux.js.map +1 -0
  165. package/daemon/dist/routes/skills.d.ts +3 -0
  166. package/daemon/dist/routes/skills.d.ts.map +1 -0
  167. package/daemon/dist/routes/skills.js +147 -0
  168. package/daemon/dist/routes/skills.js.map +1 -0
  169. package/daemon/dist/routes/slices.d.ts.map +1 -1
  170. package/daemon/dist/routes/slices.js +15 -0
  171. package/daemon/dist/routes/slices.js.map +1 -1
  172. package/daemon/dist/routes/spec-library.d.ts.map +1 -1
  173. package/daemon/dist/routes/spec-library.js +16 -1
  174. package/daemon/dist/routes/spec-library.js.map +1 -1
  175. package/daemon/dist/server.d.ts +31 -0
  176. package/daemon/dist/server.d.ts.map +1 -1
  177. package/daemon/dist/server.js +30 -0
  178. package/daemon/dist/server.js.map +1 -1
  179. package/daemon/dist/startup.d.ts.map +1 -1
  180. package/daemon/dist/startup.js +194 -5
  181. package/daemon/dist/startup.js.map +1 -1
  182. package/daemon/specs/agents/apps/vault-specialist/agent.yaml +0 -1
  183. package/daemon/specs/agents/conveyor/builder/agent.yaml +0 -1
  184. package/daemon/specs/agents/conveyor/lead/agent.yaml +0 -1
  185. package/daemon/specs/agents/conveyor/planner/agent.yaml +0 -1
  186. package/daemon/specs/agents/conveyor/reviewer/agent.yaml +0 -1
  187. package/daemon/specs/agents/design/product-designer/agent.yaml +0 -1
  188. package/daemon/specs/agents/development/implementer/agent.yaml +0 -1
  189. package/daemon/specs/agents/development/qa/agent.yaml +0 -1
  190. package/daemon/specs/agents/development/qa/guidance/role.md +0 -2
  191. package/daemon/specs/agents/orchestration/orchestrator/agent.yaml +0 -1
  192. package/daemon/specs/agents/research/analyst/agent.yaml +0 -1
  193. package/daemon/specs/agents/research/synthesizer/agent.yaml +0 -1
  194. package/daemon/specs/agents/review/independent-reviewer/agent.yaml +0 -1
  195. package/daemon/specs/agents/shared/agent.yaml +6 -6
  196. package/daemon/specs/agents/shared/skills/core/openrig-architect/SKILL.md +361 -0
  197. package/daemon/specs/agents/shared/skills/core/openrig-installer/SKILL.md +142 -0
  198. package/daemon/specs/agents/shared/skills/core/openrig-user/SKILL.md +6 -1
  199. package/daemon/specs/agents/shared/skills/core/openrig-user-settings/SKILL.md +4 -4
  200. package/daemon/specs/agents/shared/skills/core/rig-lifecycle/SKILL.md +116 -0
  201. package/daemon/specs/agents/shared/skills/pods/development-team/SKILL.md +0 -1
  202. package/daemon/specs/agents/shared/skills/pods/orchestration-team/SKILL.md +2 -2
  203. package/daemon/specs/agents/shared/skills/process/agent-browser/LOCAL-INSIGHTS.md +6 -6
  204. package/daemon/specs/agents/shared/skills/process/agent-browser/OPENRIG.md +40 -0
  205. package/daemon/specs/agents/shared/skills/process/agent-browser/SKILL.md +10 -0
  206. package/daemon/specs/agents/shared/skills/process/brainstorming/OPENRIG.md +48 -0
  207. package/daemon/specs/agents/shared/skills/process/brainstorming/SKILL.md +11 -0
  208. package/daemon/specs/agents/shared/skills/process/dogfood/SKILL.md +5 -0
  209. package/daemon/specs/agents/shared/skills/process/executing-plans/OPENRIG.md +56 -0
  210. package/daemon/specs/agents/shared/skills/process/executing-plans/SKILL.md +10 -0
  211. package/daemon/specs/agents/shared/skills/process/frontend-design/SKILL.md +5 -0
  212. package/daemon/specs/agents/shared/skills/process/systematic-debugging/SKILL.md +5 -0
  213. package/daemon/specs/agents/shared/skills/process/test-driven-development/SKILL.md +5 -0
  214. package/daemon/specs/agents/shared/skills/process/using-superpowers/OPENRIG.md +48 -0
  215. package/daemon/specs/agents/shared/skills/process/using-superpowers/SKILL.md +11 -0
  216. package/daemon/specs/agents/shared/skills/process/verification-before-completion/SKILL.md +5 -0
  217. package/daemon/specs/agents/shared/skills/process/writing-plans/OPENRIG.md +52 -0
  218. package/daemon/specs/agents/shared/skills/process/writing-plans/SKILL.md +12 -2
  219. package/daemon/specs/rigs/launch/kernel/agents/advisor/lead/agent.yaml +35 -0
  220. package/daemon/specs/rigs/launch/kernel/agents/advisor/lead/guidance/role.md +50 -0
  221. package/daemon/specs/rigs/launch/kernel/agents/advisor/lead/startup/context.md +37 -0
  222. package/daemon/specs/rigs/launch/kernel/agents/operator/agent/agent.yaml +35 -0
  223. package/daemon/specs/rigs/launch/kernel/agents/operator/agent/guidance/role.md +49 -0
  224. package/daemon/specs/rigs/launch/kernel/agents/operator/agent/startup/context.md +63 -0
  225. package/daemon/specs/rigs/launch/kernel/agents/queue/worker/agent.yaml +35 -0
  226. package/daemon/specs/rigs/launch/kernel/agents/queue/worker/guidance/role.md +33 -0
  227. package/daemon/specs/rigs/launch/kernel/agents/queue/worker/startup/context.md +30 -0
  228. package/daemon/specs/rigs/launch/kernel/culture/CULTURE.md +69 -0
  229. package/daemon/specs/rigs/launch/kernel/rig-claude-only.yaml +59 -0
  230. package/daemon/specs/rigs/launch/kernel/rig-codex-only.yaml +59 -0
  231. package/daemon/specs/rigs/launch/kernel/rig.yaml +69 -0
  232. package/dist/commands/config-init-workspace.d.ts.map +1 -1
  233. package/dist/commands/config-init-workspace.js +253 -0
  234. package/dist/commands/config-init-workspace.js.map +1 -1
  235. package/dist/commands/config.d.ts.map +1 -1
  236. package/dist/commands/config.js +11 -3
  237. package/dist/commands/config.js.map +1 -1
  238. package/dist/commands/daemon.d.ts.map +1 -1
  239. package/dist/commands/daemon.js +53 -1
  240. package/dist/commands/daemon.js.map +1 -1
  241. package/dist/commands/heartbeat.d.ts.map +1 -1
  242. package/dist/commands/heartbeat.js +0 -5
  243. package/dist/commands/heartbeat.js.map +1 -1
  244. package/dist/commands/plugin.d.ts +4 -0
  245. package/dist/commands/plugin.d.ts.map +1 -0
  246. package/dist/commands/plugin.js +395 -0
  247. package/dist/commands/plugin.js.map +1 -0
  248. package/dist/commands/send.d.ts +8 -0
  249. package/dist/commands/send.d.ts.map +1 -1
  250. package/dist/commands/send.js +8 -0
  251. package/dist/commands/send.js.map +1 -1
  252. package/dist/commands/up.d.ts.map +1 -1
  253. package/dist/commands/up.js +13 -1
  254. package/dist/commands/up.js.map +1 -1
  255. package/dist/config-store.d.ts +18 -1
  256. package/dist/config-store.d.ts.map +1 -1
  257. package/dist/config-store.js +167 -4
  258. package/dist/config-store.js.map +1 -1
  259. package/dist/daemon-lifecycle.d.ts +20 -1
  260. package/dist/daemon-lifecycle.d.ts.map +1 -1
  261. package/dist/daemon-lifecycle.js +57 -7
  262. package/dist/daemon-lifecycle.js.map +1 -1
  263. package/dist/host-registry.d.ts +1 -1
  264. package/dist/host-registry.js +1 -1
  265. package/dist/index.d.ts +1 -0
  266. package/dist/index.d.ts.map +1 -1
  267. package/dist/index.js +2 -0
  268. package/dist/index.js.map +1 -1
  269. package/package.json +1 -1
  270. package/ui/dist/assets/index-C_Q5FczU.css +1 -0
  271. package/ui/dist/assets/index-Rl3ZBrUg.js +547 -0
  272. package/ui/dist/index.html +2 -2
  273. package/daemon/specs/agents/shared/skills/claude-compact-in-place/SKILL.md +0 -100
  274. package/daemon/specs/agents/shared/skills/process/containerized-e2e/SKILL.md +0 -256
  275. package/daemon/specs/agents/shared/skills/process/containerized-e2e/scripts/Dockerfile +0 -39
  276. package/daemon/specs/agents/shared/skills/process/containerized-e2e/scripts/build-e2e-image.sh +0 -37
  277. package/daemon/specs/agents/shared/skills/process/containerized-e2e/templates/control-plane-test.yaml +0 -40
  278. package/daemon/specs/agents/shared/skills/process/containerized-e2e/templates/e2e-report-template.md +0 -94
  279. package/daemon/specs/agents/shared/skills/process/containerized-e2e/templates/expansion-collision-fragment.yaml +0 -13
  280. package/daemon/specs/agents/shared/skills/process/containerized-e2e/templates/expansion-pod-fragment.yaml +0 -14
  281. package/ui/dist/assets/index-BDHU1JUK.js +0 -412
  282. package/ui/dist/assets/index-DXTyJSqu.css +0 -1
@@ -6,8 +6,8 @@
6
6
  <title>OpenRig</title>
7
7
  <link rel="icon" href="data:," />
8
8
  <link href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:wght,FILL@100..700,0..1&display=swap" rel="stylesheet" />
9
- <script type="module" crossorigin src="/assets/index-BDHU1JUK.js"></script>
10
- <link rel="stylesheet" crossorigin href="/assets/index-DXTyJSqu.css">
9
+ <script type="module" crossorigin src="/assets/index-Rl3ZBrUg.js"></script>
10
+ <link rel="stylesheet" crossorigin href="/assets/index-C_Q5FczU.css">
11
11
  </head>
12
12
  <body>
13
13
  <div id="root"></div>
@@ -1,100 +0,0 @@
1
- ---
2
- name: claude-compact-in-place
3
- description: Use when a Claude Code seat in an OpenRig topology needs compact-in-place recovery or marshal verification after compaction.
4
- ---
5
-
6
- # Claude Compact In Place
7
-
8
- ## Purpose
9
-
10
- Use this skill when a Claude Code seat keeps the same OpenRig seat/session after `/compact` and must rebuild enough working context to continue safely. This is not succession, not seat handover, and not a generic memory note.
11
-
12
- Keep two layers separate:
13
-
14
- - **Restore mechanism:** seed from PreCompact output when present, Claude JSONL, touched-files inventory, active queue/session transcript or logs, root docs, and relevant source docs.
15
- - **Acceptance mechanism:** a marshal or peer audits the rebuilt mental model and gives explicit marshal acceptance before the seat resumes real work.
16
-
17
- Do not collapse these layers. A compacted Claude can sound coherent while important files were only injected, grepped, partially read, or not read.
18
-
19
- ## Runtime Boundary
20
-
21
- This protocol is for Claude Code compact-in-place. It is not for Codex by default. Codex context management is different; do not intervene on Codex context percentage unless there are behavioral failure signals.
22
-
23
- ## Policy Boundary
24
-
25
- The 400k token threshold is a policy target for considering preemptive Claude compaction on a 1M-context session. It is not an automatic action. Unattended compaction requires installed and dogfooded hooks, an audit path, and explicit policy or human authorization.
26
-
27
- Compact one Claude seat at a time unless a human or policy explicitly confirms spare marshal capacity. Do not compact multiple Claude seats at once as a convenience move.
28
-
29
- ## Preflight
30
-
31
- Before restoring or auditing, recover canonical identity:
32
-
33
- ```bash
34
- rig whoami --json
35
- rig whoami --session <target-seat> --json
36
- ```
37
-
38
- The marshal verifies the target identity, seat name, runtime, active queue state, and transcript path before accepting any restore proof.
39
-
40
- ## Required Evidence
41
-
42
- The target Claude should rebuild from concrete evidence, not just the compaction summary:
43
-
44
- - Claude JSONL transcript for the session.
45
- - Generated restore packet or PreCompact output, if present.
46
- - Touched-files inventory and recent git state.
47
- - Active queue file, queue packet body, session transcript, or session logs.
48
- - Rig bootstrap files such as `AGENTS.md`, `CLAUDE.md`, `CULTURE.md`, role guidance, and startup skills.
49
- - Relevant source docs, as-built docs, codemaps, and workstream trackers.
50
-
51
- If a required surface is absent, record it as `NOT-PRESENT`. If it exists but was skipped, record it as `NOT-READ`.
52
-
53
- ## Required Proof
54
-
55
- The target must return an asked-vs-read-depth table before claiming readiness:
56
-
57
- | Surface | Source Of Ask | Read Depth | Evidence |
58
- |---|---|---|---|
59
- | `rig whoami --json` | marshal | FULL | canonical seat verified |
60
- | `<path>` | hook/marshal/touched-files | FULL / TARGETED / GREP / INJECTED / NOT-READ / NOT-PRESENT | lines, chunks, command, or reason |
61
-
62
- Allowed depth labels:
63
-
64
- - `FULL`: the whole surface was read after compaction.
65
- - `TARGETED`: selected ranges, head/tail, or named sections were read.
66
- - `GREP`: search excerpts were read.
67
- - `INJECTED`: content was present from hook, system, summary, or prior context, but not freshly read from disk.
68
- - `NOT-READ`: the surface exists but was not read.
69
- - `NOT-PRESENT`: the requested surface does not exist.
70
-
71
- The proof must also include canonical identity, JSONL or restore packet path, active queue items, selected touched files, skipped files with rationale, blockers, and exact next action.
72
-
73
- ## Acceptance Rule
74
-
75
- The target may say `awaiting marshal acceptance` or `blocked`. It must not claim `RESTORED`, resume implementation, review, release, architecture, or orchestration work until marshal acceptance is explicit.
76
-
77
- Reject any proof that hides read depth, treats injection as a fresh read, omits queue reconciliation, or says "all docs read" without evidence.
78
-
79
- Accept only when:
80
-
81
- - The seat identity matches the target.
82
- - JSONL or restore artifacts were used, or their absence is explicitly explained.
83
- - Important recent-work files are either `FULL` or explicitly waived.
84
- - `INJECTED`, `TARGETED`, `GREP`, `NOT-READ`, and `NOT-PRESENT` surfaces are named honestly.
85
- - Active queue/session state is reconciled from durable evidence.
86
- - The target did not resume real work before marshal acceptance.
87
-
88
- ## Marshal Follow-Up
89
-
90
- Ask these before accepting a clean-sounding proof:
91
-
92
- 1. Which files were explicitly assigned, and which did you read in full after compaction?
93
- 2. Which files were only injected by hook, summary, system context, or prior context?
94
- 3. Which files were partial reads? Give line ranges or chunks.
95
- 4. Which touched-files entries were important, and which were skipped?
96
- 5. Did any read fail due to size? If yes, did you retry by chunk until complete?
97
- 6. Which queue items changed between checkpoint and now?
98
- 7. What would be unsafe for you to do before additional reads?
99
-
100
- If a mandatory surface is partial or injected only, ask for a corrected audit before acceptance.
@@ -1,256 +0,0 @@
1
- ---
2
- name: containerized-e2e
3
- description: Run end-to-end dogfood tests inside Docker containers to simulate real user experiences. Use when you need to verify install paths, control plane functionality, UI rendering, or packaging correctness in a clean environment. Triggers include "containerized test", "Docker dogfood", "clean install test", "e2e in container", or testing that requires a fresh environment without dev-mode shortcuts.
4
- allowed-tools: Bash(docker:*), Bash(agent-browser:*), Bash(npx agent-browser:*)
5
- ---
6
-
7
- # Containerized E2E Testing
8
-
9
- Run OpenRig (or any npm-installable CLI + web UI project) through end-to-end testing inside Docker containers, simulating real user install and usage scenarios.
10
-
11
- ## When to Use
12
-
13
- - Verifying the npm install path works from a packed tarball
14
- - Testing control plane functionality without live agent runtimes
15
- - Checking UI rendering via agent-browser in a clean environment
16
- - Regression testing after packaging changes
17
- - Phase boundary acceptance gates
18
-
19
- ## When NOT to Use
20
-
21
- - Testing live agent behavior (send/capture/broadcast, whoami from inside an agent, transcript capture) — these need real claude-code/codex runtimes on the host
22
- - Quick feedback during active TDD cycles — too slow for the edit/test loop
23
-
24
- ## Prerequisites
25
-
26
- - Docker installed and running
27
- - The repo builds successfully (`npm run build` for all workspaces)
28
- - `agent-browser` skill loaded (for UI verification commands)
29
-
30
- ## Testing Personas
31
-
32
- ### Fresh User
33
-
34
- A brand new user who has never installed OpenRig. Exercises the first-run experience.
35
-
36
- - Empty `~/.openrig/` directory
37
- - No existing rigs, snapshots, or specs
38
- - Tests: install, daemon start, preflight, doctor, first rig up, UI renders
39
-
40
- ### Mature User
41
-
42
- A user with existing OpenRig state — rigs, snapshots, library additions, transcripts.
43
-
44
- - Pre-populated `~/.openrig/` via Docker volume persistence
45
- - Build this state organically: run the fresh-user tests first, and the volume accumulates real state
46
- - Tests: restore from existing snapshots, expand existing rigs, library with user-added specs, upgrade-path behaviors
47
-
48
- To set up a mature user volume:
49
-
50
- ```bash
51
- # Create a named volume
52
- docker volume create openrig-mature-user
53
-
54
- # Run fresh-user tests with the volume mounted
55
- docker run -it --rm --shm-size=1g \
56
- -v openrig-mature-user:/root/.openrig \
57
- -v /tmp/openrig-e2e-artifacts:/artifacts \
58
- openrig-e2e
59
-
60
- # The volume now has real state from actual rig commands
61
- # Subsequent runs with the same volume simulate a mature user
62
- ```
63
-
64
- ## Workflow
65
-
66
- ### 1. Build the E2E Image
67
-
68
- Use the provided build script or do it manually:
69
-
70
- ```bash
71
- # Using the build script (recommended)
72
- bash {SKILL_DIR}/scripts/build-e2e-image.sh /path/to/repo
73
-
74
- # Or manually:
75
- cd /path/to/repo
76
- npm run build --workspace @openrig/daemon
77
- npm run build --workspace @openrig/ui
78
- npm run build --workspace @openrig/cli
79
- bash scripts/build-package.sh
80
- cd packages/cli && npm pack --pack-destination /tmp/e2e-build
81
- cp {SKILL_DIR}/scripts/Dockerfile /tmp/e2e-build/
82
- mv /tmp/e2e-build/openrig-cli-*.tgz /tmp/e2e-build/openrig-cli.tgz
83
- cd /tmp/e2e-build && docker build -t openrig-e2e:latest .
84
- ```
85
-
86
- ### 2. Start the Container
87
-
88
- ```bash
89
- # Fresh user (ephemeral state)
90
- docker run -d --rm --name openrig-e2e \
91
- --shm-size=1g \
92
- -v /tmp/openrig-e2e-artifacts:/artifacts \
93
- openrig-e2e sleep infinity
94
-
95
- # Mature user (persistent volume)
96
- docker run -d --rm --name openrig-e2e \
97
- --shm-size=1g \
98
- -v openrig-mature-user:/root/.openrig \
99
- -v /tmp/openrig-e2e-artifacts:/artifacts \
100
- openrig-e2e sleep infinity
101
- ```
102
-
103
- **Important:** Always use `--shm-size=1g` for Chromium stability during browser tests.
104
-
105
- ### 3. Run Tests Inside the Container
106
-
107
- Execute commands via `docker exec`:
108
-
109
- ```bash
110
- # Start the daemon
111
- docker exec openrig-e2e rig daemon start
112
-
113
- # Run preflight and doctor
114
- docker exec openrig-e2e rig preflight --json
115
- docker exec openrig-e2e rig doctor --json
116
-
117
- # Copy test specs into the container
118
- docker cp {SKILL_DIR}/templates/control-plane-test.yaml openrig-e2e:/workspace/
119
- docker cp {SKILL_DIR}/templates/expansion-pod-fragment.yaml openrig-e2e:/workspace/
120
- docker cp {SKILL_DIR}/templates/expansion-collision-fragment.yaml openrig-e2e:/workspace/
121
-
122
- # Launch a rig
123
- docker exec openrig-e2e rig up /workspace/control-plane-test.yaml --json
124
-
125
- # Check topology
126
- docker exec openrig-e2e rig ps --json
127
- docker exec openrig-e2e rig ps --nodes --json
128
- ```
129
-
130
- ### 4. Browser Testing Inside the Container
131
-
132
- agent-browser runs inside the container via `docker exec`:
133
-
134
- ```bash
135
- # Open the daemon UI
136
- docker exec openrig-e2e agent-browser open http://127.0.0.1:7433
137
- docker exec openrig-e2e agent-browser wait --load networkidle
138
-
139
- # Inspect interactive elements
140
- docker exec openrig-e2e agent-browser snapshot -i
141
-
142
- # Capture screenshots
143
- docker exec openrig-e2e agent-browser screenshot /artifacts/screenshots/dashboard.png
144
- docker exec openrig-e2e agent-browser screenshot --annotate /artifacts/screenshots/dashboard-annotated.png
145
-
146
- # Navigate and verify specific surfaces
147
- docker exec openrig-e2e agent-browser click @e4 # Open specs drawer (ref from snapshot)
148
- docker exec openrig-e2e agent-browser wait 1000
149
- docker exec openrig-e2e agent-browser screenshot /artifacts/screenshots/specs-drawer.png
150
- ```
151
-
152
- **ARM64 note:** The Dockerfile uses Debian's system chromium instead of Chrome for Testing, which is unavailable on Linux ARM64. The environment variables `AGENT_BROWSER_EXECUTABLE_PATH` and `AGENT_BROWSER_ARGS` are set in the image.
153
-
154
- ### 5. Test Scenarios
155
-
156
- #### Control Plane Lifecycle
157
-
158
- ```bash
159
- # Launch the multi-pod test spec
160
- docker exec openrig-e2e rig up /workspace/control-plane-test.yaml --json
161
- RIG_ID=$(docker exec openrig-e2e rig ps --json | jq -r '.[0].rigId')
162
-
163
- # Verify topology
164
- docker exec openrig-e2e rig ps --nodes --json
165
-
166
- # Expand with a new pod
167
- docker exec openrig-e2e rig expand "$RIG_ID" /workspace/expansion-pod-fragment.yaml --json
168
-
169
- # Verify expansion
170
- docker exec openrig-e2e rig ps --nodes --json
171
-
172
- # Test validation rejection (colliding namespace)
173
- docker exec openrig-e2e rig expand "$RIG_ID" /workspace/expansion-collision-fragment.yaml --json
174
- # Should fail with namespace collision error, rig unchanged
175
-
176
- # Snapshot
177
- docker exec openrig-e2e rig down "$RIG_ID" --snapshot --json
178
-
179
- # Restore and verify
180
- SNAPSHOT_ID=$(docker exec openrig-e2e rig snapshot list "$RIG_ID" | awk 'NR==2 {print $1}')
181
- docker exec openrig-e2e rig restore "$SNAPSHOT_ID" --rig "$RIG_ID"
182
-
183
- # Export
184
- docker exec openrig-e2e rig export "$RIG_ID" -o /artifacts/captures/exported-rig.yaml
185
- ```
186
-
187
- #### UI Verification
188
-
189
- ```bash
190
- # After launching a rig, verify the graph renders
191
- docker exec openrig-e2e agent-browser open http://127.0.0.1:7433
192
- docker exec openrig-e2e agent-browser wait --load networkidle
193
- docker exec openrig-e2e agent-browser snapshot -i
194
- docker exec openrig-e2e agent-browser screenshot --annotate /artifacts/screenshots/graph-with-rig.png
195
-
196
- # Open drawers and verify content
197
- docker exec openrig-e2e agent-browser snapshot -i # Get fresh refs
198
- # Click through specs drawer, discovery drawer, rig detail, etc.
199
- # Take screenshots at each step
200
- ```
201
-
202
- ### 6. Cleanup
203
-
204
- ```bash
205
- docker exec openrig-e2e rig daemon stop
206
- docker exec openrig-e2e agent-browser close
207
- docker stop openrig-e2e
208
- ```
209
-
210
- ### 7. Write Report
211
-
212
- Copy the report template and fill it in:
213
-
214
- ```bash
215
- cp {SKILL_DIR}/templates/e2e-report-template.md /tmp/openrig-e2e-artifacts/report.md
216
- ```
217
-
218
- Fill in results as tests complete — do not batch findings for the end.
219
-
220
- ## Test Spec Templates
221
-
222
- | Template | Purpose |
223
- |----------|---------|
224
- | `templates/control-plane-test.yaml` | Multi-pod terminal-only rig spec (backend + frontend, 3 nodes, cross-pod edges) |
225
- | `templates/expansion-pod-fragment.yaml` | Pod fragment for expansion happy path (ops pod with cross-pod edge) |
226
- | `templates/expansion-collision-fragment.yaml` | Pod fragment that intentionally collides — for validation rejection testing |
227
- | `templates/e2e-report-template.md` | Structured test report template |
228
-
229
- ## Scripts
230
-
231
- | Script | Purpose |
232
- |--------|---------|
233
- | `scripts/build-e2e-image.sh` | Build the Docker image from the repo (builds packages, packs tarball, builds image) |
234
- | `scripts/Dockerfile` | The proven Dockerfile — Node 22, tmux, system Chromium, agent-browser, OpenRig CLI |
235
-
236
- ## Limitations
237
-
238
- - **No live agent runtimes.** The container does not include claude-code or codex. Use `runtime: terminal` specs for control plane testing. Test live agent behavior on the host.
239
- - **ARM64 browser workaround.** Chrome for Testing is unavailable on Linux ARM64. The Dockerfile uses Debian chromium. This is transparent to agent-browser commands.
240
- - **No GPU/display.** All browser testing is headless. Screenshots and videos capture what a user would see, but there is no visible browser window.
241
-
242
- ## Combining with Host-Based Dogfood
243
-
244
- For complete coverage, use both approaches:
245
-
246
- | What to test | Where | Tool |
247
- |-------------|-------|------|
248
- | Install path, packaging | Container | This skill |
249
- | CLI commands, lifecycle | Container | This skill |
250
- | UI rendering, drawers | Container | This skill + agent-browser |
251
- | Validation/error paths | Container | This skill |
252
- | Live agent startup | Host | QA with /dogfood skill |
253
- | Communication (send/capture) | Host | QA with live agents |
254
- | Whoami from inside agent | Host | QA with live agents |
255
- | Transcript capture | Host | QA with live agents |
256
- | Chatroom with real participants | Host | QA with live agents |
@@ -1,39 +0,0 @@
1
- # OpenRig Containerized E2E Testing Image
2
- #
3
- # Provides: Node 22, tmux, agent-browser (with system Chromium), OpenRig CLI
4
- # Usage:
5
- # 1. Build the CLI tarball: cd <repo>/packages/cli && npm pack
6
- # 2. Copy tarball to build context as openrig-cli.tgz
7
- # 3. docker build -t openrig-e2e .
8
- # 4. docker run -it --rm --shm-size=1g -v /tmp/e2e-artifacts:/artifacts openrig-e2e
9
- #
10
- # ARM64 note: Chrome for Testing is unavailable on Linux ARM64.
11
- # This image uses Debian's system chromium instead, pointed via
12
- # AGENT_BROWSER_EXECUTABLE_PATH.
13
-
14
- FROM node:22-bookworm
15
-
16
- ENV DEBIAN_FRONTEND=noninteractive
17
- ENV AGENT_BROWSER_ARGS=--no-sandbox
18
- ENV AGENT_BROWSER_EXECUTABLE_PATH=/usr/bin/chromium
19
- ENV OPENRIG_HOME=/root/.openrig
20
-
21
- RUN apt-get update \
22
- && apt-get install -y --no-install-recommends \
23
- ca-certificates \
24
- chromium \
25
- curl \
26
- git \
27
- procps \
28
- tmux \
29
- && rm -rf /var/lib/apt/lists/*
30
-
31
- RUN npm install -g agent-browser
32
-
33
- COPY openrig-cli.tgz /tmp/openrig-cli.tgz
34
- RUN npm install -g /tmp/openrig-cli.tgz \
35
- && rm /tmp/openrig-cli.tgz
36
-
37
- WORKDIR /workspace
38
-
39
- CMD ["/bin/bash"]
@@ -1,37 +0,0 @@
1
- #!/bin/bash
2
- # Build the OpenRig containerized E2E testing image.
3
- #
4
- # Usage: ./build-e2e-image.sh [repo-root]
5
- # repo-root defaults to the current directory.
6
- #
7
- # Produces: Docker image tagged openrig-e2e:latest
8
-
9
- set -euo pipefail
10
-
11
- REPO_ROOT="${1:-.}"
12
- SKILL_DIR="$(cd "$(dirname "$0")/.." && pwd)"
13
- BUILD_CTX="/tmp/openrig-e2e-build"
14
-
15
- echo "=== Building OpenRig packages ==="
16
- cd "$REPO_ROOT"
17
- npm run build --workspace @openrig/daemon
18
- npm run build --workspace @openrig/ui
19
- npm run build --workspace @openrig/cli
20
- bash scripts/build-package.sh
21
-
22
- echo "=== Packing CLI tarball ==="
23
- mkdir -p "$BUILD_CTX"
24
- cd "$REPO_ROOT/packages/cli"
25
- npm pack --pack-destination "$BUILD_CTX"
26
-
27
- echo "=== Preparing Docker build context ==="
28
- cp "$SKILL_DIR/scripts/Dockerfile" "$BUILD_CTX/Dockerfile"
29
- # Rename tarball to a stable name
30
- mv "$BUILD_CTX"/openrig-cli-*.tgz "$BUILD_CTX/openrig-cli.tgz"
31
-
32
- echo "=== Building Docker image ==="
33
- cd "$BUILD_CTX"
34
- docker build -t openrig-e2e:latest .
35
-
36
- echo "=== Done ==="
37
- echo "Run: docker run -it --rm --shm-size=1g -v /tmp/openrig-e2e-artifacts:/artifacts openrig-e2e"
@@ -1,40 +0,0 @@
1
- version: "0.2"
2
- name: control-plane-test
3
- summary: >
4
- Multi-pod terminal-only topology for containerized control-plane testing.
5
- Exercises pods, cross-pod edges, expansion targets, and snapshot/restore
6
- without requiring live coding runtimes.
7
-
8
- pods:
9
- - id: backend
10
- label: Backend Team
11
- members:
12
- - id: api
13
- runtime: terminal
14
- agent_ref: "builtin:terminal"
15
- profile: none
16
- cwd: /tmp
17
- - id: db
18
- runtime: terminal
19
- agent_ref: "builtin:terminal"
20
- profile: none
21
- cwd: /tmp
22
- edges:
23
- - kind: delegates_to
24
- from: api
25
- to: db
26
-
27
- - id: frontend
28
- label: Frontend Team
29
- members:
30
- - id: ui
31
- runtime: terminal
32
- agent_ref: "builtin:terminal"
33
- profile: none
34
- cwd: /tmp
35
- edges: []
36
-
37
- edges:
38
- - kind: delegates_to
39
- from: frontend.ui
40
- to: backend.api
@@ -1,94 +0,0 @@
1
- # Containerized E2E Test Report
2
-
3
- Date: {{DATE}}
4
- Persona: {{PERSONA}}
5
- Image: openrig-e2e:latest
6
-
7
- ## Summary
8
-
9
- - Tests run: {{TOTAL}}
10
- - Passed: {{PASSED}}
11
- - Failed: {{FAILED}}
12
- - Skipped: {{SKIPPED}}
13
-
14
- ## Environment
15
-
16
- - Node: {{NODE_VERSION}}
17
- - tmux: {{TMUX_VERSION}}
18
- - Chromium: {{CHROMIUM_VERSION}}
19
- - OpenRig CLI: {{RIG_VERSION}}
20
- - Platform: {{PLATFORM}}
21
-
22
- ## Test Results
23
-
24
- ### Install & Boot
25
-
26
- | Test | Result | Notes |
27
- |------|--------|-------|
28
- | npm install -g | | |
29
- | rig daemon start | | |
30
- | rig preflight | | |
31
- | rig doctor | | |
32
- | UI loads in browser | | |
33
-
34
- ### Rig Lifecycle
35
-
36
- | Test | Result | Notes |
37
- |------|--------|-------|
38
- | rig up (terminal-only spec) | | |
39
- | rig ps / rig ps --nodes | | |
40
- | Graph renders in browser | | |
41
- | rig down --snapshot | | |
42
- | rig restore | | |
43
- | Restored nodes match | | |
44
-
45
- ### Expansion
46
-
47
- | Test | Result | Notes |
48
- |------|--------|-------|
49
- | rig expand (happy path) | | |
50
- | Graph updates after expand | | |
51
- | ps --nodes shows new nodes | | |
52
- | Expand with collision (rejected) | | |
53
- | Rig unchanged after rejection | | |
54
-
55
- ### Snapshot/Restore with Expansion
56
-
57
- | Test | Result | Notes |
58
- |------|--------|-------|
59
- | Snapshot captures expanded pods | | |
60
- | Restore brings back expanded pods | | |
61
- | Cross-pod edges survive restore | | |
62
- | Export includes expanded topology | | |
63
-
64
- ### CLI Surface
65
-
66
- | Test | Result | Notes |
67
- |------|--------|-------|
68
- | rig specs ls | | |
69
- | rig specs show | | |
70
- | rig config | | |
71
- | rig whoami (daemon down) | | |
72
- | rig export | | |
73
-
74
- ### UI Surface (agent-browser)
75
-
76
- | Test | Result | Notes |
77
- |------|--------|-------|
78
- | Dashboard renders | | |
79
- | Explorer sidebar | | |
80
- | Specs drawer opens | | |
81
- | Discovery drawer opens | | |
82
- | System drawer opens | | |
83
- | Rig detail drawer | | |
84
- | Node detail in graph | | |
85
-
86
- ## Bugs Found
87
-
88
- (Append each bug as discovered — do not batch)
89
-
90
- ## Artifacts
91
-
92
- - Screenshots: /artifacts/screenshots/
93
- - Videos: /artifacts/videos/
94
- - CLI transcript: /artifacts/cli-transcript.txt
@@ -1,13 +0,0 @@
1
- # This fragment intentionally collides with the existing 'backend' pod.
2
- # Use it to verify that expansion validation rejects namespace collisions
3
- # and leaves the rig unchanged.
4
- pod:
5
- id: backend
6
- label: Colliding Pod
7
- members:
8
- - id: worker
9
- runtime: terminal
10
- agent_ref: "builtin:terminal"
11
- profile: none
12
- cwd: /tmp
13
- edges: []
@@ -1,14 +0,0 @@
1
- pod:
2
- id: ops
3
- label: Operations
4
- members:
5
- - id: monitor
6
- runtime: terminal
7
- agent_ref: "builtin:terminal"
8
- profile: none
9
- cwd: /tmp
10
- edges: []
11
- crossPodEdges:
12
- - kind: delegates_to
13
- from: ops.monitor
14
- to: backend.api