@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
@@ -1 +1 @@
1
- {"version":3,"file":"workflow-spec-cache.d.ts","sourceRoot":"","sources":["../../src/domain/workflow-spec-cache.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAG3C,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAgBzE,qBAAa,iBAAkB,SAAQ,KAAK;aAExB,IAAI,EAAE,MAAM;aAEZ,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;gBAFjC,IAAI,EAAE,MAAM,EAC5B,OAAO,EAAE,MAAM,EACC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,YAAA;CAKpD;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,YAAY,CAuEnF;AAED,qBAAa,iBAAiB;IAE1B,OAAO,CAAC,QAAQ,CAAC,EAAE;IACnB,OAAO,CAAC,QAAQ,CAAC,GAAG;gBADH,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,GAAG,GAAE,MAAM,IAAuB;IAGrD;;;;OAIG;IACH,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,eAAe;IAkGhD,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI;IAOvE;;;;;OAKG;IACH,OAAO,IAAI,eAAe,EAAE;IAO5B,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,eAAe;CAahD"}
1
+ {"version":3,"file":"workflow-spec-cache.d.ts","sourceRoot":"","sources":["../../src/domain/workflow-spec-cache.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAG3C,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAgBzE,qBAAa,iBAAkB,SAAQ,KAAK;aAExB,IAAI,EAAE,MAAM;aAEZ,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;gBAFjC,IAAI,EAAE,MAAM,EAC5B,OAAO,EAAE,MAAM,EACC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,YAAA;CAKpD;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,YAAY,CAuEnF;AAED,qBAAa,iBAAiB;IAE1B,OAAO,CAAC,QAAQ,CAAC,EAAE;IACnB,OAAO,CAAC,QAAQ,CAAC,GAAG;gBADH,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,GAAG,GAAE,MAAM,IAAuB;IAGrD;;;;OAIG;IACH,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,eAAe;IAkGhD,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI;IAOvE;;;;;OAKG;IACH,OAAO,IAAI,eAAe,EAAE;IAO5B;;;;;;;;;;;;;;;OAeG;IACH,eAAe,CAAC,IAAI,EAAE;QACpB,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,MAAM,CAAC;QACnB,YAAY,EAAE,MAAM,CAAC;KACtB,GAAG,IAAI;IAqCR;;;;OAIG;IACH,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM;IAO9C,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,eAAe;CAahD"}
@@ -175,6 +175,65 @@ export class WorkflowSpecCache {
175
175
  .all();
176
176
  return rows.map((row) => rowToWorkflowSpec(row));
177
177
  }
178
+ /**
179
+ * Slice 11 (workflow-spec-folder-discovery) — diagnostic row writer.
180
+ * Used by scanWorkflowSpecFolder when YAML parse / validation fails
181
+ * so the Library UI can render an error row at the same path the
182
+ * user dropped a malformed workflow YAML into. The row's name field
183
+ * falls back to the source file basename so the Library has a
184
+ * stable label even when the YAML couldn't be parsed.
185
+ *
186
+ * Single-row-per-source_path semantics: writeDiagnostic on a path
187
+ * that already has a row (valid or diagnostic) UPDATES the row's
188
+ * status to 'error', error_message, source_hash, cached_at, and
189
+ * resets the parsed payload fields to empty (the prior YAML is no
190
+ * longer trusted). Round-trip between 'valid' and 'error' is
191
+ * supported via the same path: a passing readThrough flips the
192
+ * row back to 'valid' with parsed payload restored.
193
+ */
194
+ writeDiagnostic(opts) {
195
+ const cachedAt = this.now().toISOString();
196
+ const fallbackName = opts.sourcePath.split("/").pop() ?? opts.sourcePath;
197
+ const existing = this.db
198
+ .prepare(`SELECT spec_id FROM workflow_specs WHERE source_path = ?`)
199
+ .get(opts.sourcePath);
200
+ if (existing) {
201
+ this.db
202
+ .prepare(`UPDATE workflow_specs SET
203
+ status = 'error',
204
+ error_message = ?,
205
+ name = ?,
206
+ version = '',
207
+ purpose = NULL,
208
+ target_rig = NULL,
209
+ roles_json = '{}',
210
+ steps_json = '[]',
211
+ coordination_terminal_turn_rule = 'hot_potato',
212
+ source_hash = ?,
213
+ cached_at = ?
214
+ WHERE spec_id = ?`)
215
+ .run(opts.errorMessage, fallbackName, opts.sourceHash, cachedAt, existing.spec_id);
216
+ return;
217
+ }
218
+ this.db
219
+ .prepare(`INSERT INTO workflow_specs (
220
+ spec_id, name, version, purpose, target_rig,
221
+ roles_json, steps_json, coordination_terminal_turn_rule,
222
+ source_path, source_hash, cached_at, status, error_message
223
+ ) VALUES (?, ?, '', NULL, NULL, '{}', '[]', 'hot_potato', ?, ?, ?, 'error', ?)`)
224
+ .run(ulid(), fallbackName, opts.sourcePath, opts.sourceHash, cachedAt, opts.errorMessage);
225
+ }
226
+ /**
227
+ * Slice 11 — remove cache row by source_path (used when scanner
228
+ * detects a workflow YAML was deleted from disk). Returns the
229
+ * number of rows removed (0 when no row exists for that path).
230
+ */
231
+ removeBySourcePath(sourcePath) {
232
+ const result = this.db
233
+ .prepare(`DELETE FROM workflow_specs WHERE source_path = ?`)
234
+ .run(sourcePath);
235
+ return result.changes;
236
+ }
178
237
  getByIdOrThrow(specId) {
179
238
  const row = this.db
180
239
  .prepare(`SELECT * FROM workflow_specs WHERE spec_id = ?`)
@@ -1 +1 @@
1
- {"version":3,"file":"workflow-spec-cache.js","sourceRoot":"","sources":["../../src/domain/workflow-spec-cache.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workflow-spec-cache.js","sourceRoot":"","sources":["../../src/domain/workflow-spec-cache.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"default-workspace-scaffold.d.ts","sourceRoot":"","sources":["../../../src/domain/workspace/default-workspace-scaffold.ts"],"names":[],"mappings":"AAsCA,wBAAgB,qBAAqB,IAAI,MAAM,EAAE,CAehD;AA8JD,wBAAgB,sBAAsB,IAAI,KAAK,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CA0BpF"}
1
+ {"version":3,"file":"default-workspace-scaffold.d.ts","sourceRoot":"","sources":["../../../src/domain/workspace/default-workspace-scaffold.ts"],"names":[],"mappings":"AA2CA,wBAAgB,qBAAqB,IAAI,MAAM,EAAE,CAehD;AA4LD,wBAAgB,sBAAsB,IAAI,KAAK,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAoCpF"}
@@ -1,3 +1,7 @@
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";
1
5
  const DEFAULT_MISSIONS = [
2
6
  {
3
7
  id: "getting-started",
@@ -124,6 +128,21 @@ mission: ${mission.id}
124
128
  `;
125
129
  }
126
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
+ }
127
146
  return `---
128
147
  title: ${slice.title}
129
148
  status: ${slice.status}
@@ -146,7 +165,23 @@ Queue items for this slice should mention or tag:
146
165
  This lets Project attach queue activity to the slice story, queue, tests, and topology tabs.
147
166
  `;
148
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
+ }
149
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;
150
185
  return `---
151
186
  title: ${slice.title} Progress
152
187
  status: ${slice.status}
@@ -200,6 +235,16 @@ export function workspaceScaffoldFiles() {
200
235
  files.push({ relPath: `missions/${mission.id}/README.md`, content: missionReadme(mission) }, { relPath: `missions/${mission.id}/PROGRESS.md`, content: missionProgress(mission) });
201
236
  for (const slice of mission.slices) {
202
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
+ }
203
248
  }
204
249
  }
205
250
  return files;
@@ -1 +1 @@
1
- {"version":3,"file":"default-workspace-scaffold.js","sourceRoot":"","sources":["../../../src/domain/workspace/default-workspace-scaffold.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"default-workspace-scaffold.js","sourceRoot":"","sources":["../../../src/domain/workspace/default-workspace-scaffold.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"}
@@ -0,0 +1,237 @@
1
+ // V0.3.1 slice 21 onboarding-conveyor.
2
+ //
3
+ // Narrative tab content for the getting-started mission's two slices.
4
+ // The scaffold writes these as README.md / timeline.md / PROGRESS.md
5
+ // inside each slice folder so a new operator's fresh install ships
6
+ // with a click-through-to-learn experience: opening each tab teaches
7
+ // both (a) what a conveyor run is and (b) what each Project tab does.
8
+ //
9
+ // PARITY CONTRACT with CLI:
10
+ // `packages/cli/src/commands/config-init-workspace.ts` duplicates the
11
+ // same narrative inline because cli + daemon don't cross-import today.
12
+ // `packages/daemon/test/getting-started-narrative-parity.test.ts`
13
+ // asserts byte-identical content with the CLI counterpart so drift
14
+ // fails CI. If you update this content, update the CLI mirror in
15
+ // lockstep.
16
+ //
17
+ // Content authored from the slice 21 onboarding-conveyor IMPLEMENTATION-PRD (Appendix A) in the substrate openrig-work tree.
18
+ export const FIRST_CONVEYOR_RUN_README = `# First Conveyor Run
19
+
20
+ Welcome 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.
21
+
22
+ ## What a conveyor run is
23
+
24
+ A **conveyor** is OpenRig's central work-movement primitive. One conveyor run = one complete flow of work through your topology:
25
+
26
+ 1. **Slice declared** — operator (you) or an agent declares a slice with intent + acceptance criteria
27
+ 2. **Work routed** — orchestrator picks the slice up + routes it to the right agent
28
+ 3. **Agents collaborate** — work moves agent-to-agent via durable handoffs (queue items)
29
+ 4. **Evidence accumulates** — each step leaves a trail: commits, files, proof packets, screenshots
30
+ 5. **Slice closes** — acceptance criteria met; orchestrator routes the result back
31
+
32
+ You'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.
33
+
34
+ ## Walking the tabs
35
+
36
+ - **Overview** (you're here) — read what a slice intends + how to use the rest of the tabs
37
+ - **Story** — narrative timeline of what happened, beat by beat
38
+ - **Progress** — acceptance checklist; what's done, what's pending
39
+ - **Artifacts** — files produced, commits, proof packets — the durable evidence trail
40
+ - **Tests** — pass/fail summaries + screenshots + verification proof
41
+ - **Queue** — operational qitems showing how work moved between agents
42
+ - **Topology** — the rig graph; which agents touched this slice + which edges fired
43
+
44
+ ## Click through
45
+
46
+ Try them in order. Each tab teaches itself.
47
+ `;
48
+ export const FIRST_CONVEYOR_RUN_TIMELINE = `# Story — First Conveyor Run
49
+
50
+ ## 2026-04-15 09:00 — Slice declared
51
+
52
+ Operator 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.
53
+
54
+ ## 09:02 — Orchestrator routes
55
+
56
+ \`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.
57
+
58
+ ## 09:05 — Driver picks up
59
+
60
+ Driver claims qitem. Reads slice scope. Surveys existing tdl repo (this is a worked example — imagine the repo is real). Plans: parse YAML; validate entries; exit code per finding.
61
+
62
+ ## 09:30 — First commit
63
+
64
+ \`feat(lint): parse + validate todo entries\` — driver commits 4 files. Stream event emitted; visible in Artifacts tab.
65
+
66
+ ## 10:15 — Driver hands to reviewer
67
+
68
+ Acceptance met locally. Driver hands off to \`reviewer@getting-started\`. Reviewer opens diff; reads tests.
69
+
70
+ ## 10:25 — Reviewer flags concern
71
+
72
+ "Edge case: what about UTF-8 entries with combining characters?" Hands back to driver as \`concerning\`.
73
+
74
+ ## 10:40 — Driver addresses
75
+
76
+ Driver fixes UTF-8 handling. Re-runs tests; all pass. Hands back.
77
+
78
+ ## 11:00 — Reviewer accepts
79
+
80
+ \`accept\` decision; closes qitem with \`closure-reason: handed_off_to orch-lead\`. Conveyor proceeds.
81
+
82
+ ## 11:05 — Slice ships
83
+
84
+ Orchestrator merges. Proof packet generated. Slice marked SHIPPED.
85
+
86
+ ---
87
+
88
+ **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.
89
+
90
+ The 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.
91
+ `;
92
+ export const FIRST_CONVEYOR_RUN_PROGRESS = `---
93
+ title: First Conveyor Run Progress
94
+ status: active
95
+ mission: getting-started
96
+ rail-item: getting-started
97
+ slice: first-conveyor-run
98
+ ---
99
+
100
+ # Progress — First Conveyor Run
101
+
102
+ ## Acceptance criteria
103
+
104
+ - [x] Parse YAML todo entries
105
+ - [x] Validate per-entry shape (id, title, status, due-date)
106
+ - [x] Exit non-zero on malformed entries
107
+ - [x] Handle UTF-8 entries with combining characters
108
+ - [x] Tests pass (12/12)
109
+ - [x] Reviewer accepts
110
+ - [x] Slice merged
111
+
112
+ ## Status: SHIPPED
113
+
114
+ This was a mocked conveyor run — 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.
115
+
116
+ ## How the Progress tab works
117
+
118
+ The 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.
119
+
120
+ Try writing one for a real slice you start. It's just markdown; live updates appear here.
121
+ `;
122
+ export const INSPECT_PROJECT_EVIDENCE_README = `# Inspect Project Evidence
123
+
124
+ The 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.
125
+
126
+ ## Why inspect evidence?
127
+
128
+ In OpenRig, agents work autonomously. The operator (you) doesn't watch every keystroke. Instead, the operator:
129
+
130
+ 1. Declares slices with clear acceptance
131
+ 2. Routes them to agents
132
+ 3. Inspects evidence when slices close
133
+
134
+ The Artifacts + Tests + Queue + Topology tabs are your inspection surface. They show you what happened, with enough detail to:
135
+
136
+ - Verify the acceptance was actually met
137
+ - Spot subtle issues a passing test might miss
138
+ - Build trust in the agents over time
139
+
140
+ ## Walking the tabs
141
+
142
+ - **Overview** — you're here; learn what to look for
143
+ - **Story** — read the narrative of what happened (high-level)
144
+ - **Progress** — acceptance status at a glance
145
+ - **Artifacts** — the durable evidence: files, commits, proof packets. **THIS IS THE TAB YOU LEARN MOST FROM.**
146
+ - **Tests** — pass/fail + screenshots + verification proof
147
+ - **Queue** — who handed what to whom (audit trail of decisions)
148
+ - **Topology** — which agents touched this; which edges fired
149
+
150
+ ## Key inspection skills
151
+
152
+ When walking a finished slice:
153
+
154
+ 1. **Read the Story** for context — what was the operator trying to do?
155
+ 2. **Check Progress** — did acceptance actually pass? Any TODO boxes?
156
+ 3. **Open Artifacts → Files** — sample-read 2-3 files; does the code match what the Story claimed?
157
+ 4. **Open Tests → Proof packets** — do screenshots actually show what was claimed?
158
+ 5. **Read Queue** — were there concerning decisions? Hand-offs to escalation?
159
+ 6. **Skim Topology** — were unexpected agents involved?
160
+
161
+ Trust comes from repeated successful inspections, not from a single proof packet.
162
+ `;
163
+ export const INSPECT_PROJECT_EVIDENCE_TIMELINE = `# Story — Inspect Project Evidence
164
+
165
+ This 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.
166
+
167
+ ## 11:10 — Operator opens project
168
+
169
+ Operator (you, in the real world) opens \`/project/slice/first-conveyor-run\` after the slice ships. First read: the Progress tab. All boxes checked.
170
+
171
+ ## 11:12 — Read Story
172
+
173
+ Operator 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.
174
+
175
+ ## 11:15 — Open Artifacts
176
+
177
+ Operator clicks Artifacts. Sees 4 commits, 5 files, 1 proof packet, 2 screenshots. Opens commit \`feat(lint): parse + validate todo entries\`. Reads the diff.
178
+
179
+ ## 11:18 — Read tests
180
+
181
+ Operator opens Tests tab. 12/12 passing. Opens the proof packet — screenshot shows CLI output \`Error: malformed entry at line 3\`. Visually verifies the acceptance was met.
182
+
183
+ ## 11:22 — Skim Queue
184
+
185
+ Operator scrolls Queue. 4 qitems in chronological order. Sees the \`concerning\` decision + subsequent \`accept\`. Confidence reinforced.
186
+
187
+ ## 11:25 — Mark complete
188
+
189
+ Operator marks slice acceptance complete. Closes the inspection.
190
+
191
+ ---
192
+
193
+ **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 → route → inspect.
194
+ `;
195
+ export const INSPECT_PROJECT_EVIDENCE_PROGRESS = `---
196
+ title: Inspect Project Evidence Progress
197
+ status: active
198
+ mission: getting-started
199
+ rail-item: getting-started
200
+ slice: inspect-project-evidence
201
+ ---
202
+
203
+ # Progress — Inspect Project Evidence
204
+
205
+ ## Inspection checklist
206
+
207
+ - [x] Read Story (context: what was being done)
208
+ - [x] Check Progress (acceptance status)
209
+ - [x] Sample-read Artifacts files
210
+ - [x] Verify Tests proof packets visually
211
+ - [x] Skim Queue for concerning decisions
212
+ - [x] Skim Topology for unexpected agents
213
+
214
+ ## Status: COMPLETE
215
+
216
+ This was a mocked inspection — a worked example of the inspection workflow.
217
+
218
+ ## How to apply this
219
+
220
+ For 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.
221
+ `;
222
+ /** Slice id → narrative content map. Scaffold callers use this to
223
+ * override the boilerplate sliceReadme / sliceProgress for the two
224
+ * getting-started slices. Other slices keep the boilerplate. */
225
+ export const GETTING_STARTED_NARRATIVE = {
226
+ "first-conveyor-run": {
227
+ readme: FIRST_CONVEYOR_RUN_README,
228
+ timeline: FIRST_CONVEYOR_RUN_TIMELINE,
229
+ progress: FIRST_CONVEYOR_RUN_PROGRESS,
230
+ },
231
+ "inspect-project-evidence": {
232
+ readme: INSPECT_PROJECT_EVIDENCE_README,
233
+ timeline: INSPECT_PROJECT_EVIDENCE_TIMELINE,
234
+ progress: INSPECT_PROJECT_EVIDENCE_PROGRESS,
235
+ },
236
+ };
237
+ //# sourceMappingURL=getting-started-narrative.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getting-started-narrative.js","sourceRoot":"","sources":["../../../src/domain/workspace/getting-started-narrative.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,EAAE;AACF,sEAAsE;AACtE,qEAAqE;AACrE,mEAAmE;AACnE,qEAAqE;AACrE,sEAAsE;AACtE,EAAE;AACF,4BAA4B;AAC5B,sEAAsE;AACtE,uEAAuE;AACvE,kEAAkE;AAClE,mEAAmE;AACnE,iEAAiE;AACjE,YAAY;AACZ,EAAE;AACF,6HAA6H;AAE7H,MAAM,CAAC,MAAM,yBAAyB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6BxC,CAAC;AAEF,MAAM,CAAC,MAAM,2BAA2B,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2C1C,CAAC;AAEF,MAAM,CAAC,MAAM,2BAA2B,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6B1C,CAAC;AAEF,MAAM,CAAC,MAAM,+BAA+B,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwC9C,CAAC;AAEF,MAAM,CAAC,MAAM,iCAAiC,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+BhD,CAAC;AAEF,MAAM,CAAC,MAAM,iCAAiC,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;CA0BhD,CAAC;AAEF;;iEAEiE;AACjE,MAAM,CAAC,MAAM,yBAAyB,GAGlC;IACF,oBAAoB,EAAE;QACpB,MAAM,EAAE,yBAAyB;QACjC,QAAQ,EAAE,2BAA2B;QACrC,QAAQ,EAAE,2BAA2B;KACtC;IACD,0BAA0B,EAAE;QAC1B,MAAM,EAAE,+BAA+B;QACvC,QAAQ,EAAE,iCAAiC;QAC3C,QAAQ,EAAE,iCAAiC;KAC5C;CACF,CAAC"}
@@ -1,2 +1,3 @@
1
- export declare function startServer(port?: number): Promise<import("@hono/node-server").ServerType>;
1
+ import { type ServerType } from "@hono/node-server";
2
+ export declare function startServer(port?: number): Promise<ServerType>;
2
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,wBAAsB,WAAW,CAAC,IAAI,CAAC,EAAE,MAAM,mDA0C9C"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,KAAK,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAQ3D,wBAAsB,WAAW,CAAC,IAAI,CAAC,EAAE,MAAM,uBAgF9C"}
@@ -1,31 +1,56 @@
1
1
  import { serve } from "@hono/node-server";
2
2
  import { readOpenRigEnv } from "./openrig-compat.js";
3
3
  import { createDaemon } from "./startup.js";
4
- import { assertBindAuthInvariant } from "./middleware/auth-bearer-token.js";
4
+ import { assertBindAuthInvariant, detectTailscaleInterface, } from "./middleware/auth-bearer-token.js";
5
5
  export async function startServer(port) {
6
6
  const p = port ?? parseInt(readOpenRigEnv("OPENRIG_PORT", "RIGGED_PORT") ?? "7433", 10);
7
7
  const dbPath = readOpenRigEnv("OPENRIG_DB", "RIGGED_DB") ?? "openrig.sqlite";
8
- const h = readOpenRigEnv("OPENRIG_HOST", "RIGGED_HOST") ?? "127.0.0.1";
8
+ // bug-fix slice auth-bearer-tailscale-trust: distinguish "explicit
9
+ // operator opt-in" from "default" by treating an undefined env as
10
+ // default. When explicit, the operator takes responsibility (and the
11
+ // bearer invariant applies to their chosen host). When default, the
12
+ // daemon always binds loopback and ALSO binds the active tailscale
13
+ // interface (if present) — both accepted paths in the invariant.
14
+ const explicitHost = readOpenRigEnv("OPENRIG_HOST", "RIGGED_HOST");
9
15
  // PL-005 Phase B: bearer token for Mission Control write verbs.
10
16
  // No legacy alias (this env var is new in Phase B).
11
17
  const bearerToken = process.env.OPENRIG_AUTH_BEARER_TOKEN ?? null;
12
- // PL-005 Phase B HARD-GATE (audit row 8): refuse non-loopback bind
13
- // when no bearer token is configured. Prevents shipping a tailnet-
14
- // bound daemon with no auth on Mission Control write verbs.
15
- // Throws AuthBearerTokenStartupError before any DB or HTTP work.
16
- assertBindAuthInvariant({ host: h, bearerToken });
18
+ let bindHosts;
19
+ if (explicitHost) {
20
+ // Operator opt-in path invariant enforces bearer requirement for
21
+ // genuinely public/LAN binds; loopback/tailscale binds short-circuit.
22
+ await assertBindAuthInvariant({ host: explicitHost, bearerToken });
23
+ bindHosts = [explicitHost];
24
+ }
25
+ else {
26
+ // Default path — loopback always, plus tailscale auto-add when active.
27
+ const tailscaleIp = detectTailscaleInterface();
28
+ bindHosts = tailscaleIp ? ["127.0.0.1", tailscaleIp] : ["127.0.0.1"];
29
+ }
17
30
  const { app, contextMonitor, deps } = await createDaemon({ dbPath, bearerToken });
18
- const server = serve({ fetch: app.fetch, port: p, hostname: h }, (info) => {
19
- console.log(`OpenRig daemon listening on http://localhost:${info.port}`);
20
- // Start context monitor polling only after successful server bind
21
- contextMonitor.start();
22
- // PL-004 Phase C: start watchdog scheduler. Joins the supervision
23
- // tree post-bind so the HTTP surface is ready before the first
24
- // tick (matches contextMonitor pattern).
25
- deps.watchdogScheduler?.start();
26
- });
31
+ // Multi-bind via N serve() instances sharing the same Hono app.
32
+ // Hono's serve() targets a single host:port; for multi-bind we spawn
33
+ // one per host. The contextMonitor + watchdog scheduler only start
34
+ // once after the first successful bind callback fires.
35
+ let monitorsStarted = false;
36
+ const servers = [];
37
+ for (const host of bindHosts) {
38
+ const srv = serve({ fetch: app.fetch, port: p, hostname: host }, (info) => {
39
+ console.log(`OpenRig daemon listening on http://${host}:${info.port}`);
40
+ if (!monitorsStarted) {
41
+ monitorsStarted = true;
42
+ contextMonitor.start();
43
+ // PL-004 Phase C: start watchdog scheduler. Joins the supervision
44
+ // tree post-bind so the HTTP surface is ready before the first
45
+ // tick (matches contextMonitor pattern).
46
+ deps.watchdogScheduler?.start();
47
+ }
48
+ });
49
+ servers.push(srv);
50
+ }
27
51
  // PL-004 Phase C: graceful shutdown — stop scheduler before process
28
52
  // exit so any in-flight policy evaluation completes (or is awaited).
53
+ // Multi-bind: close every serve() instance in parallel.
29
54
  const shutdown = async (sig) => {
30
55
  console.log(`OpenRig daemon received ${sig}; shutting down`);
31
56
  try {
@@ -34,11 +59,21 @@ export async function startServer(port) {
34
59
  catch (err) {
35
60
  console.error("[watchdog] shutdown error", err);
36
61
  }
62
+ await Promise.all(servers.map((srv) => new Promise((resolve) => {
63
+ try {
64
+ srv.close(() => resolve());
65
+ }
66
+ catch {
67
+ resolve();
68
+ }
69
+ })));
37
70
  process.exit(0);
38
71
  };
39
72
  process.once("SIGINT", () => void shutdown("SIGINT"));
40
73
  process.once("SIGTERM", () => void shutdown("SIGTERM"));
41
- return server;
74
+ // Backward-compatible single-server return (callers that just need a
75
+ // handle reference; multi-bind shutdown is wired via signal handlers).
76
+ return servers[0];
42
77
  }
43
78
  // Only start the server when this file is executed directly (not imported).
44
79
  const isDirectRun = process.argv[1] &&
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,uBAAuB,EAAE,MAAM,mCAAmC,CAAC;AAE5E,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,IAAa;IAC7C,MAAM,CAAC,GAAG,IAAI,IAAI,QAAQ,CAAC,cAAc,CAAC,cAAc,EAAE,aAAa,CAAC,IAAI,MAAM,EAAE,EAAE,CAAC,CAAC;IACxF,MAAM,MAAM,GAAG,cAAc,CAAC,YAAY,EAAE,WAAW,CAAC,IAAI,gBAAgB,CAAC;IAE7E,MAAM,CAAC,GAAG,cAAc,CAAC,cAAc,EAAE,aAAa,CAAC,IAAI,WAAW,CAAC;IACvE,gEAAgE;IAChE,oDAAoD;IACpD,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,yBAAyB,IAAI,IAAI,CAAC;IAElE,mEAAmE;IACnE,mEAAmE;IACnE,4DAA4D;IAC5D,iEAAiE;IACjE,uBAAuB,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC;IAElD,MAAM,EAAE,GAAG,EAAE,cAAc,EAAE,IAAI,EAAE,GAAG,MAAM,YAAY,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;IAElF,MAAM,MAAM,GAAG,KAAK,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE;QACxE,OAAO,CAAC,GAAG,CAAC,gDAAgD,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QACzE,kEAAkE;QAClE,cAAc,CAAC,KAAK,EAAE,CAAC;QACvB,kEAAkE;QAClE,+DAA+D;QAC/D,yCAAyC;QACzC,IAAI,CAAC,iBAAiB,EAAE,KAAK,EAAE,CAAC;IAClC,CAAC,CAAC,CAAC;IAEH,oEAAoE;IACpE,qEAAqE;IACrE,MAAM,QAAQ,GAAG,KAAK,EAAE,GAAW,EAAE,EAAE;QACrC,OAAO,CAAC,GAAG,CAAC,2BAA2B,GAAG,iBAAiB,CAAC,CAAC;QAC7D,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,iBAAiB,EAAE,IAAI,EAAE,CAAC;QACvC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,GAAG,CAAC,CAAC;QAClD,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC;IACF,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,KAAK,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;IACtD,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,KAAK,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;IAExD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,4EAA4E;AAC5E,MAAM,WAAW,GACf,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IACf,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,UAAU,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;AAElD,IAAI,WAAW,EAAE,CAAC;IAChB,WAAW,EAAE,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /** Wrap a tmux-pane body with the canonical From/To envelope. The
2
+ * recipient pane sees both the sender's identity and a reply hint.
3
+ * Cross-host nudges should NOT double-wrap: the remote rig wraps
4
+ * when it processes the same command (matches `wrapSendBody`'s
5
+ * cross-host carve-out). */
6
+ export declare function wrapPaneEnvelope(sender: string | undefined, recipient: string, body: string): string;
7
+ //# sourceMappingURL=pane-envelope.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pane-envelope.d.ts","sourceRoot":"","sources":["../../src/lib/pane-envelope.ts"],"names":[],"mappings":"AAuBA;;;;6BAI6B;AAC7B,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,GACX,MAAM,CAUR"}