@openrig/cli 0.4.8 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (344) hide show
  1. package/daemon/assets/claude-statusline-context.cjs +40 -8
  2. package/daemon/assets/plugins/openrig-core/hooks/scripts/activity-relay.cjs +0 -0
  3. package/daemon/assets/plugins/openrig-core/skills/mission-slice-sop/SKILL.md +7 -4
  4. package/daemon/assets/plugins/openrig-core/skills/openrig-user/SKILL.md +68 -17
  5. package/daemon/assets/plugins/openrig-core/skills/queue-handoff/SKILL.md +2 -0
  6. package/daemon/assets/plugins/openrig-core/skills/seat-continuity-and-handover/SKILL.md +2 -1
  7. package/daemon/assets/plugins/openrig-core/skills/session-compaction-and-restore/SKILL.md +1 -0
  8. package/daemon/dist/adapters/claude-code-adapter.d.ts +36 -0
  9. package/daemon/dist/adapters/claude-code-adapter.d.ts.map +1 -1
  10. package/daemon/dist/adapters/claude-code-adapter.js +203 -3
  11. package/daemon/dist/adapters/claude-code-adapter.js.map +1 -1
  12. package/daemon/dist/adapters/codex-runtime-adapter.d.ts +12 -0
  13. package/daemon/dist/adapters/codex-runtime-adapter.d.ts.map +1 -1
  14. package/daemon/dist/adapters/codex-runtime-adapter.js +24 -2
  15. package/daemon/dist/adapters/codex-runtime-adapter.js.map +1 -1
  16. package/daemon/dist/build-info.js +3 -3
  17. package/daemon/dist/domain/agent-activity-store.d.ts +1 -0
  18. package/daemon/dist/domain/agent-activity-store.d.ts.map +1 -1
  19. package/daemon/dist/domain/agent-activity-store.js +2 -2
  20. package/daemon/dist/domain/agent-activity-store.js.map +1 -1
  21. package/daemon/dist/domain/claude-activity-hooks.d.ts +33 -0
  22. package/daemon/dist/domain/claude-activity-hooks.d.ts.map +1 -0
  23. package/daemon/dist/domain/claude-activity-hooks.js +60 -0
  24. package/daemon/dist/domain/claude-activity-hooks.js.map +1 -0
  25. package/daemon/dist/domain/context-packs/bundle-assembler.d.ts +30 -0
  26. package/daemon/dist/domain/context-packs/bundle-assembler.d.ts.map +1 -1
  27. package/daemon/dist/domain/context-packs/bundle-assembler.js +31 -1
  28. package/daemon/dist/domain/context-packs/bundle-assembler.js.map +1 -1
  29. package/daemon/dist/domain/context-packs/context-pack-library-service.d.ts +69 -14
  30. package/daemon/dist/domain/context-packs/context-pack-library-service.d.ts.map +1 -1
  31. package/daemon/dist/domain/context-packs/context-pack-library-service.js +263 -48
  32. package/daemon/dist/domain/context-packs/context-pack-library-service.js.map +1 -1
  33. package/daemon/dist/domain/context-packs/context-pack-types.d.ts +2 -2
  34. package/daemon/dist/domain/context-packs/context-pack-types.d.ts.map +1 -1
  35. package/daemon/dist/domain/context-packs/context-pack-types.js.map +1 -1
  36. package/daemon/dist/domain/context-packs/manifest-parser.d.ts.map +1 -1
  37. package/daemon/dist/domain/context-packs/manifest-parser.js +11 -0
  38. package/daemon/dist/domain/context-packs/manifest-parser.js.map +1 -1
  39. package/daemon/dist/domain/context-packs/ref-safety.d.ts +11 -0
  40. package/daemon/dist/domain/context-packs/ref-safety.d.ts.map +1 -0
  41. package/daemon/dist/domain/context-packs/ref-safety.js +46 -0
  42. package/daemon/dist/domain/context-packs/ref-safety.js.map +1 -0
  43. package/daemon/dist/domain/context-packs/token-estimate.d.ts +3 -0
  44. package/daemon/dist/domain/context-packs/token-estimate.d.ts.map +1 -0
  45. package/daemon/dist/domain/context-packs/token-estimate.js +5 -0
  46. package/daemon/dist/domain/context-packs/token-estimate.js.map +1 -0
  47. package/daemon/dist/domain/plugin-vendor-service.d.ts +14 -0
  48. package/daemon/dist/domain/plugin-vendor-service.d.ts.map +1 -1
  49. package/daemon/dist/domain/plugin-vendor-service.js +26 -2
  50. package/daemon/dist/domain/plugin-vendor-service.js.map +1 -1
  51. package/daemon/dist/domain/provider/claude-usage-reader.d.ts +44 -0
  52. package/daemon/dist/domain/provider/claude-usage-reader.d.ts.map +1 -0
  53. package/daemon/dist/domain/provider/claude-usage-reader.js +112 -0
  54. package/daemon/dist/domain/provider/claude-usage-reader.js.map +1 -0
  55. package/daemon/dist/domain/provider/codex-auth-reader.d.ts +18 -0
  56. package/daemon/dist/domain/provider/codex-auth-reader.d.ts.map +1 -0
  57. package/daemon/dist/domain/provider/codex-auth-reader.js +64 -0
  58. package/daemon/dist/domain/provider/codex-auth-reader.js.map +1 -0
  59. package/daemon/dist/domain/provider/host-usage-rollup.d.ts +51 -0
  60. package/daemon/dist/domain/provider/host-usage-rollup.d.ts.map +1 -0
  61. package/daemon/dist/domain/provider/host-usage-rollup.js +162 -0
  62. package/daemon/dist/domain/provider/host-usage-rollup.js.map +1 -0
  63. package/daemon/dist/domain/provider/provider-collect.d.ts +22 -0
  64. package/daemon/dist/domain/provider/provider-collect.d.ts.map +1 -0
  65. package/daemon/dist/domain/provider/provider-collect.js +74 -0
  66. package/daemon/dist/domain/provider/provider-collect.js.map +1 -0
  67. package/daemon/dist/domain/provider/provider-policy.d.ts +38 -0
  68. package/daemon/dist/domain/provider/provider-policy.d.ts.map +1 -0
  69. package/daemon/dist/domain/provider/provider-policy.js +76 -0
  70. package/daemon/dist/domain/provider/provider-policy.js.map +1 -0
  71. package/daemon/dist/domain/provider/provider-read-model.d.ts +28 -0
  72. package/daemon/dist/domain/provider/provider-read-model.d.ts.map +1 -0
  73. package/daemon/dist/domain/provider/provider-read-model.js +68 -0
  74. package/daemon/dist/domain/provider/provider-read-model.js.map +1 -0
  75. package/daemon/dist/domain/provider/provider-service-impl.d.ts +26 -0
  76. package/daemon/dist/domain/provider/provider-service-impl.d.ts.map +1 -0
  77. package/daemon/dist/domain/provider/provider-service-impl.js +83 -0
  78. package/daemon/dist/domain/provider/provider-service-impl.js.map +1 -0
  79. package/daemon/dist/domain/provider/provider-service.d.ts +33 -0
  80. package/daemon/dist/domain/provider/provider-service.d.ts.map +1 -0
  81. package/daemon/dist/domain/provider/provider-service.js +6 -0
  82. package/daemon/dist/domain/provider/provider-service.js.map +1 -0
  83. package/daemon/dist/domain/provider/provider-signals.d.ts +76 -0
  84. package/daemon/dist/domain/provider/provider-signals.d.ts.map +1 -0
  85. package/daemon/dist/domain/provider/provider-signals.js +144 -0
  86. package/daemon/dist/domain/provider/provider-signals.js.map +1 -0
  87. package/daemon/dist/domain/provider/provider-types.d.ts +101 -0
  88. package/daemon/dist/domain/provider/provider-types.d.ts.map +1 -0
  89. package/daemon/dist/domain/provider/provider-types.js +7 -0
  90. package/daemon/dist/domain/provider/provider-types.js.map +1 -0
  91. package/daemon/dist/domain/provider/reactive-tap.d.ts +29 -0
  92. package/daemon/dist/domain/provider/reactive-tap.d.ts.map +1 -0
  93. package/daemon/dist/domain/provider/reactive-tap.js +80 -0
  94. package/daemon/dist/domain/provider/reactive-tap.js.map +1 -0
  95. package/daemon/dist/domain/rigspec-instantiator.d.ts +7 -23
  96. package/daemon/dist/domain/rigspec-instantiator.d.ts.map +1 -1
  97. package/daemon/dist/domain/rigspec-instantiator.js +3 -61
  98. package/daemon/dist/domain/rigspec-instantiator.js.map +1 -1
  99. package/daemon/dist/domain/rigspec-preflight.d.ts +11 -0
  100. package/daemon/dist/domain/rigspec-preflight.d.ts.map +1 -1
  101. package/daemon/dist/domain/rigspec-preflight.js +43 -1
  102. package/daemon/dist/domain/rigspec-preflight.js.map +1 -1
  103. package/daemon/dist/domain/runtime-adapter.d.ts +2 -11
  104. package/daemon/dist/domain/runtime-adapter.d.ts.map +1 -1
  105. package/daemon/dist/domain/runtime-adapter.js.map +1 -1
  106. package/daemon/dist/domain/scope/attestation-lineage.generated.d.ts +14 -0
  107. package/daemon/dist/domain/scope/attestation-lineage.generated.d.ts.map +1 -0
  108. package/daemon/dist/domain/scope/attestation-lineage.generated.js +26 -0
  109. package/daemon/dist/domain/scope/attestation-lineage.generated.js.map +1 -0
  110. package/daemon/dist/domain/scope/scope-approve.d.ts +13 -0
  111. package/daemon/dist/domain/scope/scope-approve.d.ts.map +1 -1
  112. package/daemon/dist/domain/scope/scope-approve.js +50 -10
  113. package/daemon/dist/domain/scope/scope-approve.js.map +1 -1
  114. package/daemon/dist/domain/startup-validation.d.ts.map +1 -1
  115. package/daemon/dist/domain/startup-validation.js +18 -54
  116. package/daemon/dist/domain/startup-validation.js.map +1 -1
  117. package/daemon/dist/domain/stream-store.d.ts +4 -0
  118. package/daemon/dist/domain/stream-store.d.ts.map +1 -1
  119. package/daemon/dist/domain/stream-store.js +15 -2
  120. package/daemon/dist/domain/stream-store.js.map +1 -1
  121. package/daemon/dist/domain/types.d.ts +2 -9
  122. package/daemon/dist/domain/types.d.ts.map +1 -1
  123. package/daemon/dist/domain/types.js.map +1 -1
  124. package/daemon/dist/domain/workspace/default-workspace-scaffold.js +1 -1
  125. package/daemon/dist/routes/context-packs.d.ts.map +1 -1
  126. package/daemon/dist/routes/context-packs.js +157 -75
  127. package/daemon/dist/routes/context-packs.js.map +1 -1
  128. package/daemon/dist/routes/provider.d.ts +3 -0
  129. package/daemon/dist/routes/provider.d.ts.map +1 -0
  130. package/daemon/dist/routes/provider.js +124 -0
  131. package/daemon/dist/routes/provider.js.map +1 -0
  132. package/daemon/dist/routes/scope-approve.d.ts.map +1 -1
  133. package/daemon/dist/routes/scope-approve.js +6 -3
  134. package/daemon/dist/routes/scope-approve.js.map +1 -1
  135. package/daemon/dist/routes/scope-audit.d.ts.map +1 -1
  136. package/daemon/dist/routes/scope-audit.js +4 -1
  137. package/daemon/dist/routes/scope-audit.js.map +1 -1
  138. package/daemon/dist/routes/stream.d.ts.map +1 -1
  139. package/daemon/dist/routes/stream.js +71 -1
  140. package/daemon/dist/routes/stream.js.map +1 -1
  141. package/daemon/dist/server.d.ts +3 -0
  142. package/daemon/dist/server.d.ts.map +1 -1
  143. package/daemon/dist/server.js +5 -0
  144. package/daemon/dist/server.js.map +1 -1
  145. package/daemon/dist/startup.d.ts.map +1 -1
  146. package/daemon/dist/startup.js +21 -11
  147. package/daemon/dist/startup.js.map +1 -1
  148. package/daemon/docs/reference/developing.md +39 -0
  149. package/daemon/specs/agents/apps/vault-specialist/agent.yaml +1 -1
  150. package/daemon/specs/agents/conveyor/builder/agent.yaml +1 -1
  151. package/daemon/specs/agents/conveyor/lead/agent.yaml +1 -1
  152. package/daemon/specs/agents/conveyor/planner/agent.yaml +1 -1
  153. package/daemon/specs/agents/conveyor/reviewer/agent.yaml +1 -1
  154. package/daemon/specs/agents/design/product-designer/agent.yaml +1 -1
  155. package/daemon/specs/agents/development/implementer/agent.yaml +1 -1
  156. package/daemon/specs/agents/development/qa/agent.yaml +1 -1
  157. package/daemon/specs/agents/factory-rsi/dogfood/agent.yaml +1 -1
  158. package/daemon/specs/agents/factory-rsi/release-manager/agent.yaml +1 -1
  159. package/daemon/specs/agents/orchestration/orchestrator/agent.yaml +1 -1
  160. package/daemon/specs/agents/product-management/pm/agent.yaml +1 -0
  161. package/daemon/specs/agents/research/analyst/agent.yaml +1 -1
  162. package/daemon/specs/agents/research/synthesizer/agent.yaml +1 -1
  163. package/daemon/specs/agents/review/independent-reviewer/agent.yaml +1 -1
  164. package/daemon/specs/agents/shared/agent.yaml +6 -0
  165. package/daemon/specs/agents/shared/runtime/claude-activity-hooks.json +4 -0
  166. package/daemon/specs/agents/shared/skills/core/watchdog/SKILL.md +1 -0
  167. package/dist/bin-wrapper.d.ts.map +1 -1
  168. package/dist/bin-wrapper.js +7 -0
  169. package/dist/bin-wrapper.js.map +1 -1
  170. package/dist/build-info.js +3 -3
  171. package/dist/commands/agent-image.d.ts.map +1 -1
  172. package/dist/commands/agent-image.js +2 -1
  173. package/dist/commands/agent-image.js.map +1 -1
  174. package/dist/commands/broadcast.d.ts.map +1 -1
  175. package/dist/commands/broadcast.js +37 -2
  176. package/dist/commands/broadcast.js.map +1 -1
  177. package/dist/commands/context.d.ts +2 -7
  178. package/dist/commands/context.d.ts.map +1 -1
  179. package/dist/commands/context.js +391 -213
  180. package/dist/commands/context.js.map +1 -1
  181. package/dist/commands/provider.d.ts +4 -0
  182. package/dist/commands/provider.d.ts.map +1 -0
  183. package/dist/commands/provider.js +218 -0
  184. package/dist/commands/provider.js.map +1 -0
  185. package/dist/commands/ps.d.ts +7 -0
  186. package/dist/commands/ps.d.ts.map +1 -1
  187. package/dist/commands/ps.js +34 -4
  188. package/dist/commands/ps.js.map +1 -1
  189. package/dist/commands/queue.d.ts.map +1 -1
  190. package/dist/commands/queue.js +38 -8
  191. package/dist/commands/queue.js.map +1 -1
  192. package/dist/commands/scope.d.ts.map +1 -1
  193. package/dist/commands/scope.js +48 -4
  194. package/dist/commands/scope.js.map +1 -1
  195. package/dist/commands/send.d.ts.map +1 -1
  196. package/dist/commands/send.js +70 -11
  197. package/dist/commands/send.js.map +1 -1
  198. package/dist/commands/stream.d.ts +1 -0
  199. package/dist/commands/stream.d.ts.map +1 -1
  200. package/dist/commands/stream.js +93 -0
  201. package/dist/commands/stream.js.map +1 -1
  202. package/dist/commands/tui.d.ts +4 -0
  203. package/dist/commands/tui.d.ts.map +1 -0
  204. package/dist/commands/tui.js +29 -0
  205. package/dist/commands/tui.js.map +1 -0
  206. package/dist/commands/walk.d.ts +19 -0
  207. package/dist/commands/walk.d.ts.map +1 -0
  208. package/dist/commands/walk.js +139 -0
  209. package/dist/commands/walk.js.map +1 -0
  210. package/dist/context-resolve.d.ts +14 -0
  211. package/dist/context-resolve.d.ts.map +1 -0
  212. package/dist/context-resolve.js +40 -0
  213. package/dist/context-resolve.js.map +1 -0
  214. package/dist/front-door.d.ts +31 -0
  215. package/dist/front-door.d.ts.map +1 -0
  216. package/dist/front-door.js +114 -0
  217. package/dist/front-door.js.map +1 -0
  218. package/dist/index.d.ts +3 -1
  219. package/dist/index.d.ts.map +1 -1
  220. package/dist/index.js +19 -6
  221. package/dist/index.js.map +1 -1
  222. package/dist/lib/scope/attestation-lineage.d.ts +14 -0
  223. package/dist/lib/scope/attestation-lineage.d.ts.map +1 -0
  224. package/dist/lib/scope/attestation-lineage.js +34 -0
  225. package/dist/lib/scope/attestation-lineage.js.map +1 -0
  226. package/package.json +4 -2
  227. package/tui/dist/daemon-client.d.ts +56 -0
  228. package/tui/dist/daemon-client.d.ts.map +1 -0
  229. package/tui/dist/daemon-client.js +99 -0
  230. package/tui/dist/daemon-client.js.map +1 -0
  231. package/tui/dist/demo-data.d.ts +3 -0
  232. package/tui/dist/demo-data.d.ts.map +1 -0
  233. package/tui/dist/demo-data.js +52 -0
  234. package/tui/dist/demo-data.js.map +1 -0
  235. package/tui/dist/detail.d.ts +34 -0
  236. package/tui/dist/detail.d.ts.map +1 -0
  237. package/tui/dist/detail.js +47 -0
  238. package/tui/dist/detail.js.map +1 -0
  239. package/tui/dist/grammar.d.ts +3 -0
  240. package/tui/dist/grammar.d.ts.map +1 -0
  241. package/tui/dist/grammar.js +66 -0
  242. package/tui/dist/grammar.js.map +1 -0
  243. package/tui/dist/hydrate.d.ts +78 -0
  244. package/tui/dist/hydrate.d.ts.map +1 -0
  245. package/tui/dist/hydrate.js +294 -0
  246. package/tui/dist/hydrate.js.map +1 -0
  247. package/tui/dist/index.d.ts +12 -0
  248. package/tui/dist/index.d.ts.map +1 -0
  249. package/tui/dist/index.js +12 -0
  250. package/tui/dist/index.js.map +1 -0
  251. package/tui/dist/input.d.ts +21 -0
  252. package/tui/dist/input.d.ts.map +1 -0
  253. package/tui/dist/input.js +128 -0
  254. package/tui/dist/input.js.map +1 -0
  255. package/tui/dist/live.d.ts +20 -0
  256. package/tui/dist/live.d.ts.map +1 -0
  257. package/tui/dist/live.js +67 -0
  258. package/tui/dist/live.js.map +1 -0
  259. package/tui/dist/main.d.ts +3 -0
  260. package/tui/dist/main.d.ts.map +1 -0
  261. package/tui/dist/main.js +184 -0
  262. package/tui/dist/main.js.map +1 -0
  263. package/tui/dist/motion.d.ts +13 -0
  264. package/tui/dist/motion.d.ts.map +1 -0
  265. package/tui/dist/motion.js +31 -0
  266. package/tui/dist/motion.js.map +1 -0
  267. package/tui/dist/navigator.d.ts +21 -0
  268. package/tui/dist/navigator.d.ts.map +1 -0
  269. package/tui/dist/navigator.js +168 -0
  270. package/tui/dist/navigator.js.map +1 -0
  271. package/tui/dist/refresh.d.ts +3 -0
  272. package/tui/dist/refresh.d.ts.map +1 -0
  273. package/tui/dist/refresh.js +9 -0
  274. package/tui/dist/refresh.js.map +1 -0
  275. package/tui/dist/render.d.ts +21 -0
  276. package/tui/dist/render.d.ts.map +1 -0
  277. package/tui/dist/render.js +807 -0
  278. package/tui/dist/render.js.map +1 -0
  279. package/tui/dist/sections.d.ts +4 -0
  280. package/tui/dist/sections.d.ts.map +1 -0
  281. package/tui/dist/sections.js +19 -0
  282. package/tui/dist/sections.js.map +1 -0
  283. package/tui/dist/socket-server.d.ts +24 -0
  284. package/tui/dist/socket-server.d.ts.map +1 -0
  285. package/tui/dist/socket-server.js +85 -0
  286. package/tui/dist/socket-server.js.map +1 -0
  287. package/tui/dist/state.d.ts +51 -0
  288. package/tui/dist/state.d.ts.map +1 -0
  289. package/tui/dist/state.js +480 -0
  290. package/tui/dist/state.js.map +1 -0
  291. package/tui/dist/stylize.d.ts +4 -0
  292. package/tui/dist/stylize.d.ts.map +1 -0
  293. package/tui/dist/stylize.js +248 -0
  294. package/tui/dist/stylize.js.map +1 -0
  295. package/tui/dist/theme.d.ts +19 -0
  296. package/tui/dist/theme.d.ts.map +1 -0
  297. package/tui/dist/theme.js +86 -0
  298. package/tui/dist/theme.js.map +1 -0
  299. package/tui/dist/topology/canvas.d.ts +43 -0
  300. package/tui/dist/topology/canvas.d.ts.map +1 -0
  301. package/tui/dist/topology/canvas.js +131 -0
  302. package/tui/dist/topology/canvas.js.map +1 -0
  303. package/tui/dist/topology/fixture.d.ts +4 -0
  304. package/tui/dist/topology/fixture.d.ts.map +1 -0
  305. package/tui/dist/topology/fixture.js +71 -0
  306. package/tui/dist/topology/fixture.js.map +1 -0
  307. package/tui/dist/topology/glyphs.d.ts +21 -0
  308. package/tui/dist/topology/glyphs.d.ts.map +1 -0
  309. package/tui/dist/topology/glyphs.js +49 -0
  310. package/tui/dist/topology/glyphs.js.map +1 -0
  311. package/tui/dist/topology/graph-types.d.ts +39 -0
  312. package/tui/dist/topology/graph-types.d.ts.map +1 -0
  313. package/tui/dist/topology/graph-types.js +2 -0
  314. package/tui/dist/topology/graph-types.js.map +1 -0
  315. package/tui/dist/topology/layout.d.ts +52 -0
  316. package/tui/dist/topology/layout.d.ts.map +1 -0
  317. package/tui/dist/topology/layout.js +118 -0
  318. package/tui/dist/topology/layout.js.map +1 -0
  319. package/tui/dist/topology/render-graph.d.ts +8 -0
  320. package/tui/dist/topology/render-graph.d.ts.map +1 -0
  321. package/tui/dist/topology/render-graph.js +20 -0
  322. package/tui/dist/topology/render-graph.js.map +1 -0
  323. package/tui/dist/topology/runtime-marks.d.ts +53 -0
  324. package/tui/dist/topology/runtime-marks.d.ts.map +1 -0
  325. package/tui/dist/topology/runtime-marks.js +185 -0
  326. package/tui/dist/topology/runtime-marks.js.map +1 -0
  327. package/tui/dist/topology/styles/braille.d.ts +5 -0
  328. package/tui/dist/topology/styles/braille.d.ts.map +1 -0
  329. package/tui/dist/topology/styles/braille.js +84 -0
  330. package/tui/dist/topology/styles/braille.js.map +1 -0
  331. package/tui/dist/topology/styles/hatchet.d.ts +41 -0
  332. package/tui/dist/topology/styles/hatchet.d.ts.map +1 -0
  333. package/tui/dist/topology/styles/hatchet.js +146 -0
  334. package/tui/dist/topology/styles/hatchet.js.map +1 -0
  335. package/tui/dist/types.d.ts +362 -0
  336. package/tui/dist/types.d.ts.map +1 -0
  337. package/tui/dist/types.js +6 -0
  338. package/tui/dist/types.js.map +1 -0
  339. package/ui/dist/assets/{index-DkNi0RT8.js → index-Dv5VaLCN.js} +135 -135
  340. package/ui/dist/index.html +1 -1
  341. package/dist/commands/context-pack.d.ts +0 -4
  342. package/dist/commands/context-pack.d.ts.map +0 -1
  343. package/dist/commands/context-pack.js +0 -357
  344. package/dist/commands/context-pack.js.map +0 -1
@@ -22,6 +22,59 @@ function printResult(json, body, status) {
22
22
  if (status >= 400)
23
23
  process.exitCode = status >= 500 ? 2 : 1;
24
24
  }
25
+ function isWatchedStreamItem(value) {
26
+ if (!value || typeof value !== "object")
27
+ return false;
28
+ const item = value;
29
+ return typeof item.tsEmitted === "string"
30
+ && typeof item.sourceSession === "string"
31
+ && typeof item.body === "string";
32
+ }
33
+ function printWatchData(data, json) {
34
+ try {
35
+ const item = JSON.parse(data);
36
+ if (!isWatchedStreamItem(item))
37
+ return;
38
+ if (json)
39
+ console.log(JSON.stringify(item));
40
+ else
41
+ console.log(`[${item.tsEmitted} ${item.sourceSession}] ${item.body}`);
42
+ }
43
+ catch {
44
+ // The daemon emits one JSON item per data line. Ignore malformed frames.
45
+ }
46
+ }
47
+ async function consumeWatch(body, json) {
48
+ const reader = body.getReader();
49
+ const decoder = new TextDecoder();
50
+ let buffer = "";
51
+ const consumeLines = (flush) => {
52
+ const lines = buffer.split("\n");
53
+ buffer = flush ? "" : (lines.pop() ?? "");
54
+ for (const rawLine of lines) {
55
+ const line = rawLine.endsWith("\r") ? rawLine.slice(0, -1) : rawLine;
56
+ if (line.startsWith("data:"))
57
+ printWatchData(line.slice(5).trim(), json);
58
+ }
59
+ };
60
+ try {
61
+ while (true) {
62
+ const { done, value } = await reader.read();
63
+ if (done)
64
+ break;
65
+ buffer += decoder.decode(value, { stream: true });
66
+ consumeLines(false);
67
+ }
68
+ buffer += decoder.decode();
69
+ if (buffer) {
70
+ buffer += "\n";
71
+ consumeLines(true);
72
+ }
73
+ }
74
+ finally {
75
+ reader.releaseLock();
76
+ }
77
+ }
25
78
  export function streamCommand(depsOverride) {
26
79
  const cmd = new Command("stream").description("Coordination L1 — append-only intake stream");
27
80
  const getDeps = () => depsOverride ?? {
@@ -37,6 +90,7 @@ export function streamCommand(depsOverride) {
37
90
  .option("--hint-type <type>", "Hint type (e.g. review, handoff, idea)")
38
91
  .option("--hint-urgency <urgency>", "Hint urgency (routine, urgent, critical)")
39
92
  .option("--hint-tags <tags>", "Comma-separated hint tags")
93
+ .option("--format <fmt>", "Observation body format")
40
94
  .option("--interrupt", "Mark item as interrupting")
41
95
  .option("--id <streamItemId>", "Idempotent stream_item_id (skip if not provided)")
42
96
  .option("--json", "JSON output for agents")
@@ -48,6 +102,7 @@ export function streamCommand(depsOverride) {
48
102
  streamItemId: opts.id,
49
103
  sourceSession: opts.source,
50
104
  body: opts.body,
105
+ ...(opts.format ? { format: opts.format } : {}),
51
106
  hintDestination: opts.hintDestination ?? null,
52
107
  hintType: opts.hintType ?? null,
53
108
  hintUrgency: opts.hintUrgency ?? null,
@@ -62,6 +117,9 @@ export function streamCommand(depsOverride) {
62
117
  .description("List stream items chronologically")
63
118
  .option("--source <session>", "Filter by source session")
64
119
  .option("--hint-destination <session>", "Filter by hint destination")
120
+ .option("--tag <tag>", "Filter by exact hint tag")
121
+ .option("--since <iso>", "Include items emitted at or after this ISO timestamp")
122
+ .option("--until <iso>", "Include items emitted at or before this ISO timestamp")
65
123
  .option("--limit <n>", "Result limit", "100")
66
124
  .option("--after <sortKey>", "Cursor pagination — return items after this sort key")
67
125
  .option("--include-archived", "Include archived items")
@@ -73,6 +131,12 @@ export function streamCommand(depsOverride) {
73
131
  params.set("sourceSession", opts.source);
74
132
  if (opts.hintDestination)
75
133
  params.set("hintDestination", opts.hintDestination);
134
+ if (opts.tag)
135
+ params.set("hintTag", opts.tag);
136
+ if (opts.since)
137
+ params.set("since", opts.since);
138
+ if (opts.until)
139
+ params.set("until", opts.until);
76
140
  if (opts.limit)
77
141
  params.set("limit", opts.limit);
78
142
  if (opts.after)
@@ -84,6 +148,35 @@ export function streamCommand(depsOverride) {
84
148
  printResult(opts.json ?? false, res.data, res.status);
85
149
  });
86
150
  });
151
+ cmd
152
+ .command("watch")
153
+ .description("Watch the stream (initial replay + live items)")
154
+ .option("--json", "Emit one StreamItem JSON object per line")
155
+ .action(async (opts) => {
156
+ const deps = getDeps();
157
+ await withClient(deps, async (client) => {
158
+ try {
159
+ const res = await (deps.fetchImpl ?? fetch)(`${client.baseUrl}/api/stream/sse`, {
160
+ headers: { Accept: "text/event-stream" },
161
+ });
162
+ if (!res.ok) {
163
+ console.error(`Watch failed (HTTP ${res.status})`);
164
+ process.exitCode = res.status >= 500 ? 2 : 1;
165
+ return;
166
+ }
167
+ if (!res.body) {
168
+ console.error("Watch failed: response body missing");
169
+ process.exitCode = 2;
170
+ return;
171
+ }
172
+ await consumeWatch(res.body, opts.json ?? false);
173
+ }
174
+ catch (err) {
175
+ console.error(`Watch error: ${err instanceof Error ? err.message : String(err)}`);
176
+ process.exitCode = 2;
177
+ }
178
+ });
179
+ });
87
180
  cmd
88
181
  .command("show <streamItemId>")
89
182
  .description("Fetch one stream item by id")
@@ -1 +1 @@
1
- {"version":3,"file":"stream.js","sourceRoot":"","sources":["../../src/commands/stream.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"stream.js","sourceRoot":"","sources":["../../src/commands/stream.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { Command } from "commander";
2
+ import { type FrontDoorIo } from "../front-door.js";
3
+ export declare function tuiCommand(io?: FrontDoorIo): Command;
4
+ //# sourceMappingURL=tui.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tui.d.ts","sourceRoot":"","sources":["../../src/commands/tui.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAmC,KAAK,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAErF,wBAAgB,UAAU,CAAC,EAAE,GAAE,WAAgB,GAAG,OAAO,CAkBxD"}
@@ -0,0 +1,29 @@
1
+ // 0.5.0 — `rig tui`: a NAMED ALIAS for what bare `rig` does (open mission control).
2
+ // ZERO NEW BEHAVIOR: it delegates to the front door's `openMissionControl` (probe →
3
+ // friendly degrade → resolveTuiPath + launch), the exact path bare `rig` uses — no
4
+ // duplicated launch logic. It only adds the same TTY-awareness on stdout: launching
5
+ // the interactive TUI into a non-TTY stdout can't render, so it prints the same
6
+ // friendly first-impression degrade instead of piping garbage.
7
+ import { Command } from "commander";
8
+ import { openMissionControl, USAGE_LINES } from "../front-door.js";
9
+ export function tuiCommand(io = {}) {
10
+ return new Command("tui")
11
+ .description("open mission control (the interactive terminal UI; same as bare `rig`)")
12
+ .action(async () => {
13
+ const stdoutIsTTY = io.stdoutIsTTY ?? process.stdout.isTTY === true;
14
+ if (!stdoutIsTTY) {
15
+ // Same TTY-awareness on stdout as the bare-`rig` front door — degrade, never
16
+ // launch the interactive TUI into a redirected/piped stdout.
17
+ const err = io.err ?? ((l) => process.stderr.write(l + "\n"));
18
+ const exit = io.exit ?? ((c) => process.exit(c));
19
+ for (const line of USAGE_LINES)
20
+ err(line);
21
+ err("");
22
+ err("mission control needs an interactive terminal (stdout is not a TTY)");
23
+ exit(1);
24
+ return;
25
+ }
26
+ await openMissionControl(io);
27
+ });
28
+ }
29
+ //# sourceMappingURL=tui.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tui.js","sourceRoot":"","sources":["../../src/commands/tui.ts"],"names":[],"mappings":"AAAA,oFAAoF;AACpF,oFAAoF;AACpF,mFAAmF;AACnF,oFAAoF;AACpF,gFAAgF;AAChF,+DAA+D;AAC/D,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAoB,MAAM,kBAAkB,CAAC;AAErF,MAAM,UAAU,UAAU,CAAC,KAAkB,EAAE;IAC7C,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC;SACtB,WAAW,CAAC,wEAAwE,CAAC;SACrF,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,MAAM,WAAW,GAAG,EAAE,CAAC,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,KAAK,IAAI,CAAC;QACpE,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,6EAA6E;YAC7E,6DAA6D;YAC7D,MAAM,GAAG,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;YACtE,MAAM,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YACzD,KAAK,MAAM,IAAI,IAAI,WAAW;gBAAE,GAAG,CAAC,IAAI,CAAC,CAAC;YAC1C,GAAG,CAAC,EAAE,CAAC,CAAC;YACR,GAAG,CAAC,qEAAqE,CAAC,CAAC;YAC3E,IAAI,CAAC,CAAC,CAAC,CAAC;YACR,OAAO;QACT,CAAC;QACD,MAAM,kBAAkB,CAAC,EAAE,CAAC,CAAC;IAC/B,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,19 @@
1
+ import { Command } from "commander";
2
+ import type { StatusDeps } from "./status.js";
3
+ export interface WalkDeps extends StatusDeps {
4
+ /** Test seam for the inter-piece pacing delay. */
5
+ sleep?: (ms: number) => Promise<void>;
6
+ /** Test seams for local-file resolution. */
7
+ fileExists?: (path: string) => boolean;
8
+ readFile?: (path: string) => string;
9
+ }
10
+ /** Parse a pace duration: `10s`, `500ms`, or a bare number (seconds). Returns
11
+ * null on a malformed value; the default when undefined. */
12
+ export declare function parsePaceMs(value: string | undefined): number | null;
13
+ export interface WalkPiece {
14
+ /** A human label for the piece (file path or pack member path). */
15
+ label: string;
16
+ content: string;
17
+ }
18
+ export declare function walkCommand(depsOverride?: WalkDeps): Command;
19
+ //# sourceMappingURL=walk.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"walk.d.ts","sourceRoot":"","sources":["../../src/commands/walk.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAU9C,MAAM,WAAW,QAAS,SAAQ,UAAU;IAC1C,kDAAkD;IAClD,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,4CAA4C;IAC5C,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;IACvC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;CACrC;AAID;6DAC6D;AAC7D,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAOpE;AAED,MAAM,WAAW,SAAS;IACxB,mEAAmE;IACnE,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,WAAW,CAAC,YAAY,CAAC,EAAE,QAAQ,GAAG,OAAO,CAiH5D"}
@@ -0,0 +1,139 @@
1
+ // Slice-03 Atom 6 (rig walk) — the pacing primitive. "Walk the seat through it":
2
+ // deliver a sequence of context pieces into a seat's pane, spaced by --pace so
3
+ // the agent can absorb each before the next. Its OWN top-level verb (not an
4
+ // extension of `rig send`); push-direction, the walker leads and does not wait
5
+ // for replies — the spacing does the work (SPEC-rig-context-rig-walk-composition
6
+ // §3). --through takes a context ref (a pack → its ordered member pieces) OR a
7
+ // raw file list; each piece is one send into the pane.
8
+ import { Command } from "commander";
9
+ import { existsSync, readFileSync } from "node:fs";
10
+ import { DaemonClient } from "../client.js";
11
+ import { getDaemonStatus, getDaemonUrl } from "../daemon-lifecycle.js";
12
+ import { realDeps } from "./daemon.js";
13
+ const DEFAULT_PACE_MS = 10_000;
14
+ /** Parse a pace duration: `10s`, `500ms`, or a bare number (seconds). Returns
15
+ * null on a malformed value; the default when undefined. */
16
+ export function parsePaceMs(value) {
17
+ if (value === undefined)
18
+ return DEFAULT_PACE_MS;
19
+ const m = /^(\d+(?:\.\d+)?)(ms|s)?$/.exec(value.trim());
20
+ if (!m)
21
+ return null;
22
+ const n = Number(m[1]);
23
+ if (!Number.isFinite(n) || n < 0)
24
+ return null;
25
+ return m[2] === "ms" ? Math.round(n) : Math.round(n * 1000);
26
+ }
27
+ export function walkCommand(depsOverride) {
28
+ const cmd = new Command("walk").description("Walk a seat through a paced sequence of context pieces");
29
+ const getDeps = () => depsOverride ?? {
30
+ lifecycleDeps: realDeps(),
31
+ clientFactory: (url) => new DaemonClient(url),
32
+ };
33
+ cmd
34
+ .argument("<seat>", "Target session name (e.g. dev-impl@my-rig)")
35
+ .requiredOption("--through <items...>", "A context ref (a pack) OR a list of files to walk the seat through")
36
+ .option("--pace <duration>", "Delay between pieces (e.g. 10s, 500ms, or a bare number of seconds); default 10s")
37
+ .option("--json", "JSON output")
38
+ .addHelpText("after", `
39
+ Examples:
40
+ rig walk dev-impl@my-rig --through packs/tui-onboarding --pace 12s
41
+ rig walk dev-impl@my-rig --through intro.md steps.md wrapup.md --pace 10s
42
+
43
+ Paced push-delivery: each piece is sent into the target pane, then --pace elapses
44
+ before the next. The walker leads; it does not wait for replies — the spacing lets
45
+ the agent process between sends. Small piece → 'rig send'; a real pack → walk.`)
46
+ .action(async (seat, opts) => {
47
+ try {
48
+ const deps = getDeps();
49
+ const paceMs = parsePaceMs(opts.pace);
50
+ if (paceMs === null) {
51
+ console.error(`Invalid --pace '${opts.pace}'. Use e.g. 10s, 500ms, or a bare number of seconds.`);
52
+ process.exitCode = 1;
53
+ return;
54
+ }
55
+ const fileExists = deps.fileExists ?? existsSync;
56
+ const readFile = deps.readFile ?? ((p) => readFileSync(p, "utf-8"));
57
+ const sleep = deps.sleep ?? ((ms) => new Promise((r) => setTimeout(r, ms)));
58
+ // --through is EITHER a raw file list (every item is an existing file) OR a
59
+ // single context ref (a pack → its ordered member pieces). A mix is rejected.
60
+ const items = opts.through;
61
+ let pieces;
62
+ if (items.length > 0 && items.every((it) => fileExists(it))) {
63
+ pieces = items.map((it) => ({ label: it, content: readFile(it) }));
64
+ }
65
+ else if (items.length === 1) {
66
+ pieces = await resolveRefPieces(deps, items[0]);
67
+ }
68
+ else {
69
+ console.error("--through takes either a single context ref OR a list of existing files (not a mix).");
70
+ process.exitCode = 1;
71
+ return;
72
+ }
73
+ if (pieces.length === 0) {
74
+ console.error("Nothing to walk: --through resolved to zero pieces.");
75
+ process.exitCode = 1;
76
+ return;
77
+ }
78
+ const client = await getClient(deps);
79
+ for (let i = 0; i < pieces.length; i++) {
80
+ const piece = pieces[i];
81
+ const res = await client.post("/api/transport/send", {
82
+ session: seat,
83
+ text: piece.content,
84
+ });
85
+ if (res.status >= 400) {
86
+ const err = res.data?.["error"] ?? `HTTP ${res.status}`;
87
+ console.error(`walk aborted at piece ${i + 1}/${pieces.length} (${piece.label}): ${err}`);
88
+ process.exitCode = 1;
89
+ return;
90
+ }
91
+ if (!opts.json)
92
+ console.log(`[${i + 1}/${pieces.length}] sent ${piece.label} → ${seat}`);
93
+ // Pace BETWEEN pieces only — never a trailing pause after the last.
94
+ if (i < pieces.length - 1)
95
+ await sleep(paceMs);
96
+ }
97
+ if (opts.json)
98
+ console.log(JSON.stringify({ seat, pieces: pieces.length, paceMs }));
99
+ else
100
+ console.log(`Walked ${seat} through ${pieces.length} piece(s).`);
101
+ }
102
+ catch (err) {
103
+ console.error(err.message);
104
+ process.exitCode = 1;
105
+ }
106
+ });
107
+ return cmd;
108
+ async function getClient(deps) {
109
+ const status = await getDaemonStatus(deps.lifecycleDeps);
110
+ if (status.state !== "running" || status.healthy === false) {
111
+ throw new Error("Daemon not running. Start it with: rig daemon start");
112
+ }
113
+ return deps.clientFactory(getDaemonUrl(status));
114
+ }
115
+ async function resolveRefPieces(deps, ref) {
116
+ const client = await getClient(deps);
117
+ const res = await client.get(`/api/context-packs/library/by-ref/pieces?ref=${encodeURIComponent(ref)}`);
118
+ if (res.status === 404) {
119
+ throw new Error(`Context pack '${ref}' not found in library. Run 'rig context list' to see the available refs.`);
120
+ }
121
+ if (res.status === 400) {
122
+ throw new Error(res.data?.message ?? `Unsafe context ref '${ref}'.`);
123
+ }
124
+ if (res.status !== 200) {
125
+ throw new Error(`Daemon returned HTTP ${res.status} resolving ref '${ref}'.`);
126
+ }
127
+ // One abort contract for both input forms: a missing/unreadable member is
128
+ // known up-front (reported here before the first send), so — exactly like a
129
+ // missing local --through file — it aborts the walk BEFORE any send. No
130
+ // partial walk; the operator fixes the pack and re-runs.
131
+ const missing = res.data.missingFiles ?? [];
132
+ if (missing.length > 0) {
133
+ throw new Error(`Context pack '${ref}' has ${missing.length} missing/unreadable member(s): ${missing.map((m) => m.path).join(", ")}. ` +
134
+ `A walk delivers every member or none — fix the pack (or its files) and re-run. Nothing was sent.`);
135
+ }
136
+ return (res.data.pieces ?? []).map((p) => ({ label: `${ref}:${p.path}`, content: p.content }));
137
+ }
138
+ }
139
+ //# sourceMappingURL=walk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"walk.js","sourceRoot":"","sources":["../../src/commands/walk.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import type { DaemonClient } from "./client.js";
2
+ export interface ResolvedContext {
3
+ ref: string;
4
+ text: string;
5
+ bytes: number;
6
+ }
7
+ /** Advisory size threshold: a resolved context larger than this is "walk-sized"
8
+ * — better paced with `rig walk` than blasted into a pane as one paste (§4). */
9
+ export declare const WALK_SIZED_THRESHOLD_BYTES = 8192;
10
+ export declare function resolveContextRef(client: DaemonClient, ref: string): Promise<ResolvedContext>;
11
+ /** The §4 size warn: when a resolved --context is walk-sized, advise pacing it
12
+ * with `rig walk` instead of one paste. Advisory — never blocks the send. */
13
+ export declare function walkSizedWarning(resolved: ResolvedContext, seat?: string): string | null;
14
+ //# sourceMappingURL=context-resolve.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-resolve.d.ts","sourceRoot":"","sources":["../src/context-resolve.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAWhD,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED;iFACiF;AACjF,eAAO,MAAM,0BAA0B,OAAQ,CAAC;AAEhD,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAwBnG;AAED;8EAC8E;AAC9E,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,eAAe,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAIxF"}
@@ -0,0 +1,40 @@
1
+ // Slice-03 Atom 6b — the shared context-ref resolver for the delivery flags.
2
+ // `--context` (rig send / rig broadcast) and `--body-context` (rig queue create)
3
+ // all resolve a path-like ref to its WHOLE plain content (the compose output),
4
+ // enforcing the SAME all-or-nothing missing-member contract that `rig walk` uses:
5
+ // a missing/unreadable pack member is known up-front, so it aborts BEFORE any
6
+ // delivery — never a partial/silent context. Reuses the 6a pieces route (which
7
+ // now also returns `text`/`bytes` via the sealed assemblePlainFiles).
8
+ /** Advisory size threshold: a resolved context larger than this is "walk-sized"
9
+ * — better paced with `rig walk` than blasted into a pane as one paste (§4). */
10
+ export const WALK_SIZED_THRESHOLD_BYTES = 8_192;
11
+ export async function resolveContextRef(client, ref) {
12
+ const res = await client.get(`/api/context-packs/library/by-ref/pieces?ref=${encodeURIComponent(ref)}`);
13
+ if (res.status === 404) {
14
+ throw new Error(`Context pack '${ref}' not found in library. Run 'rig context list' to see the available refs.`);
15
+ }
16
+ if (res.status === 400) {
17
+ throw new Error(res.data?.message ?? `Unsafe context ref '${ref}'.`);
18
+ }
19
+ if (res.status !== 200) {
20
+ throw new Error(`Daemon returned HTTP ${res.status} resolving context ref '${ref}'.`);
21
+ }
22
+ // All-or-nothing: a missing/unreadable member aborts before any delivery.
23
+ const missing = res.data.missingFiles ?? [];
24
+ if (missing.length > 0) {
25
+ throw new Error(`Context pack '${ref}' has ${missing.length} missing/unreadable member(s): ${missing.map((m) => m.path).join(", ")}. ` +
26
+ `Fix the pack (or its files) and re-run — a delivery carries the whole context or none.`);
27
+ }
28
+ const text = res.data.text ?? "";
29
+ const bytes = typeof res.data.bytes === "number" ? res.data.bytes : Buffer.byteLength(text, "utf8");
30
+ return { ref, text, bytes };
31
+ }
32
+ /** The §4 size warn: when a resolved --context is walk-sized, advise pacing it
33
+ * with `rig walk` instead of one paste. Advisory — never blocks the send. */
34
+ export function walkSizedWarning(resolved, seat) {
35
+ if (resolved.bytes <= WALK_SIZED_THRESHOLD_BYTES)
36
+ return null;
37
+ const target = seat ?? "<seat>";
38
+ return `context '${resolved.ref}' is ${resolved.bytes} bytes — this is walk-sized. Consider 'rig walk ${target} --through ${resolved.ref}' to pace it instead of one paste.`;
39
+ }
40
+ //# sourceMappingURL=context-resolve.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-resolve.js","sourceRoot":"","sources":["../src/context-resolve.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,iFAAiF;AACjF,+EAA+E;AAC/E,kFAAkF;AAClF,8EAA8E;AAC9E,+EAA+E;AAC/E,sEAAsE;AAmBtE;iFACiF;AACjF,MAAM,CAAC,MAAM,0BAA0B,GAAG,KAAK,CAAC;AAEhD,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,MAAoB,EAAE,GAAW;IACvE,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,GAAG,CAC1B,gDAAgD,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAC1E,CAAC;IACF,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,iBAAiB,GAAG,2EAA2E,CAAC,CAAC;IACnH,CAAC;IACD,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,IAAI,uBAAuB,GAAG,IAAI,CAAC,CAAC;IACvE,CAAC;IACD,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,wBAAwB,GAAG,CAAC,MAAM,2BAA2B,GAAG,IAAI,CAAC,CAAC;IACxF,CAAC;IACD,0EAA0E;IAC1E,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC,YAAY,IAAI,EAAE,CAAC;IAC5C,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CACb,iBAAiB,GAAG,SAAS,OAAO,CAAC,MAAM,kCAAkC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;YACpH,wFAAwF,CAC3F,CAAC;IACJ,CAAC;IACD,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;IACjC,MAAM,KAAK,GAAG,OAAO,GAAG,CAAC,IAAI,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACpG,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AAC9B,CAAC;AAED;8EAC8E;AAC9E,MAAM,UAAU,gBAAgB,CAAC,QAAyB,EAAE,IAAa;IACvE,IAAI,QAAQ,CAAC,KAAK,IAAI,0BAA0B;QAAE,OAAO,IAAI,CAAC;IAC9D,MAAM,MAAM,GAAG,IAAI,IAAI,QAAQ,CAAC;IAChC,OAAO,YAAY,QAAQ,CAAC,GAAG,QAAQ,QAAQ,CAAC,KAAK,mDAAmD,MAAM,cAAc,QAAQ,CAAC,GAAG,oCAAoC,CAAC;AAC/K,CAAC"}
@@ -0,0 +1,31 @@
1
+ /** Monorepo-first, bundled-fallback TUI entry resolution — the exact
2
+ * resolveDaemonPath pattern (see daemon-lifecycle.ts): a dev checkout's
3
+ * `packages/tui/dist` is the source of truth; an npm-install layout ships
4
+ * the bundled copy next to the cli. Null = not found (caller degrades). */
5
+ export declare function resolveTuiPath(baseDir: string, exists?: (p: string) => boolean): string | null;
6
+ export declare const USAGE_LINES: string[];
7
+ export interface FrontDoorIo {
8
+ stdinIsTTY?: boolean;
9
+ stdoutIsTTY?: boolean;
10
+ out?: (line: string) => void;
11
+ err?: (line: string) => void;
12
+ exit?: (code: number) => void;
13
+ /** fast daemon reachability probe (default: GET /healthz, 1.5s cap) */
14
+ probeDaemon?: () => Promise<boolean>;
15
+ /** launch the TUI and resolve with its exit code */
16
+ launchTui?: () => Promise<number>;
17
+ }
18
+ /**
19
+ * The OWNED mission-control path, factored out so `rig tui` is a true ALIAS (not a
20
+ * mirror) of what bare `rig` does: probe the daemon, then either launch the TUI and
21
+ * exit with its code, or print the friendly first-impression degrade. Shared by
22
+ * runFrontDoor (bare `rig`) and the `tui` subcommand — one launch path, no duplication.
23
+ */
24
+ export declare function openMissionControl(io?: FrontDoorIo): Promise<void>;
25
+ /**
26
+ * Returns true when the front door OWNED the invocation (TUI launched or a
27
+ * degrade message printed + exit requested); false to fall through to the
28
+ * normal commander program (args present, or a non-TTY stream).
29
+ */
30
+ export declare function runFrontDoor(argv: readonly string[], io?: FrontDoorIo): Promise<boolean>;
31
+ //# sourceMappingURL=front-door.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"front-door.d.ts","sourceRoot":"","sources":["../src/front-door.ts"],"names":[],"mappings":"AAiBA;;;2EAG2E;AAC3E,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,GAAE,CAAC,CAAC,EAAE,MAAM,KAAK,OAAoB,GAAG,MAAM,GAAG,IAAI,CAO1G;AAED,eAAO,MAAM,WAAW,UAQvB,CAAC;AAEF,MAAM,WAAW,WAAW;IAC1B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7B,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7B,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9B,uEAAuE;IACvE,WAAW,CAAC,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IACrC,oDAAoD;IACpD,SAAS,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;CACnC;AA4BD;;;;;GAKG;AACH,wBAAsB,kBAAkB,CAAC,EAAE,GAAE,WAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAuB5E;AAED;;;;GAIG;AACH,wBAAsB,YAAY,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,EAAE,GAAE,WAAgB,GAAG,OAAO,CAAC,OAAO,CAAC,CAQlG"}
@@ -0,0 +1,114 @@
1
+ // Slice-17 mini-req 7 — BARE-RIG FRONT DOOR (founder, arch-reinforced).
2
+ //
3
+ // bare `rig` (no args) opens the TUI, k9s-style, TTY-AWARE:
4
+ // - the guard checks BOTH stdin AND stdout isTTY — a pipe/redirect on
5
+ // EITHER stream means a script is involved, so the front door does NOT
6
+ // own the invocation and the normal commander usage path runs (prints
7
+ // usage, exits fast, never hangs — `echo x | rig` must not block);
8
+ // - first-impression degrade: daemon-down and TUI-init-failure print
9
+ // HELPFUL usage ("daemon not running — try: rig up"), never a stack
10
+ // trace — daemon-down is the likely first-run state;
11
+ // - `--help`, `--version`, and every subcommand are ARGS, so they are
12
+ // naturally excluded from bare invocation and behave unchanged.
13
+ import path from "node:path";
14
+ import { existsSync } from "node:fs";
15
+ import { spawn } from "node:child_process";
16
+ import { DaemonClient } from "./client.js";
17
+ /** Monorepo-first, bundled-fallback TUI entry resolution — the exact
18
+ * resolveDaemonPath pattern (see daemon-lifecycle.ts): a dev checkout's
19
+ * `packages/tui/dist` is the source of truth; an npm-install layout ships
20
+ * the bundled copy next to the cli. Null = not found (caller degrades). */
21
+ export function resolveTuiPath(baseDir, exists = existsSync) {
22
+ const cliBaseDir = path.basename(baseDir) === "commands" ? path.resolve(baseDir, "..") : baseDir;
23
+ const monorepo = path.join(path.resolve(cliBaseDir, "../../tui"), "dist/main.js");
24
+ if (exists(monorepo))
25
+ return monorepo;
26
+ const bundled = path.join(path.resolve(cliBaseDir, "../tui"), "dist/main.js");
27
+ if (exists(bundled))
28
+ return bundled;
29
+ return null;
30
+ }
31
+ export const USAGE_LINES = [
32
+ "rig — the OpenRig control plane",
33
+ "",
34
+ " rig open mission control (interactive terminal only)",
35
+ " rig tui open mission control (explicit alias of bare `rig`)",
36
+ " rig --help full command list",
37
+ " rig up <rig> bring a rig up",
38
+ " rig ps list live seats",
39
+ ];
40
+ async function defaultProbeDaemon() {
41
+ try {
42
+ const client = new DaemonClient();
43
+ const controller = new AbortController();
44
+ const timer = setTimeout(() => controller.abort(), 1500);
45
+ try {
46
+ const res = await fetch(`${client.baseUrl}/healthz`, { signal: controller.signal });
47
+ return res.ok;
48
+ }
49
+ finally {
50
+ clearTimeout(timer);
51
+ }
52
+ }
53
+ catch {
54
+ return false;
55
+ }
56
+ }
57
+ async function defaultLaunchTui() {
58
+ const entry = resolveTuiPath(import.meta.dirname);
59
+ if (!entry)
60
+ throw new Error("mission-control TUI is not installed (no tui/dist/main.js next to this CLI)");
61
+ return await new Promise((resolve, reject) => {
62
+ const child = spawn(process.execPath, [entry], { stdio: "inherit" });
63
+ child.on("error", reject);
64
+ child.on("exit", (code) => resolve(code ?? 0));
65
+ });
66
+ }
67
+ /**
68
+ * The OWNED mission-control path, factored out so `rig tui` is a true ALIAS (not a
69
+ * mirror) of what bare `rig` does: probe the daemon, then either launch the TUI and
70
+ * exit with its code, or print the friendly first-impression degrade. Shared by
71
+ * runFrontDoor (bare `rig`) and the `tui` subcommand — one launch path, no duplication.
72
+ */
73
+ export async function openMissionControl(io = {}) {
74
+ const err = io.err ?? ((l) => process.stderr.write(l + "\n"));
75
+ const exit = io.exit ?? ((c) => process.exit(c));
76
+ const probe = io.probeDaemon ?? defaultProbeDaemon;
77
+ const launch = io.launchTui ?? defaultLaunchTui;
78
+ if (!(await probe())) {
79
+ for (const line of USAGE_LINES)
80
+ err(line);
81
+ err("");
82
+ err("daemon not running — try: rig up (then bare `rig` opens mission control)");
83
+ exit(1);
84
+ return;
85
+ }
86
+ try {
87
+ const code = await launch();
88
+ exit(code);
89
+ }
90
+ catch (e) {
91
+ // first-impression degrade: the message, never the stack
92
+ for (const line of USAGE_LINES)
93
+ err(line);
94
+ err("");
95
+ err(`mission control could not start: ${e instanceof Error ? e.message : String(e)}`);
96
+ exit(1);
97
+ }
98
+ }
99
+ /**
100
+ * Returns true when the front door OWNED the invocation (TUI launched or a
101
+ * degrade message printed + exit requested); false to fall through to the
102
+ * normal commander program (args present, or a non-TTY stream).
103
+ */
104
+ export async function runFrontDoor(argv, io = {}) {
105
+ if (argv.length > 2)
106
+ return false; // any arg → the normal CLI, unchanged
107
+ const stdinIsTTY = io.stdinIsTTY ?? process.stdin.isTTY === true;
108
+ const stdoutIsTTY = io.stdoutIsTTY ?? process.stdout.isTTY === true;
109
+ if (!stdinIsTTY || !stdoutIsTTY)
110
+ return false; // script involved → usage path, fast exit
111
+ await openMissionControl(io);
112
+ return true;
113
+ }
114
+ //# sourceMappingURL=front-door.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"front-door.js","sourceRoot":"","sources":["../src/front-door.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -62,10 +62,11 @@ export interface ProgramDeps {
62
62
  workflowDeps?: WorkflowDeps;
63
63
  captureDeps?: StatusDeps;
64
64
  broadcastDeps?: StatusDeps;
65
+ walkDeps?: StatusDeps;
65
66
  askDeps?: StatusDeps;
66
67
  chatroomDeps?: StatusDeps;
67
68
  specsDeps?: StatusDeps;
68
- contextPackDeps?: StatusDeps;
69
+ contextDeps?: StatusDeps;
69
70
  pluginDeps?: StatusDeps;
70
71
  skillDeps?: StatusDeps;
71
72
  agentImageDeps?: StatusDeps;
@@ -95,4 +96,5 @@ export interface ProgramDeps {
95
96
  export declare function createProgram(depsOverride?: ProgramDeps): Command;
96
97
  export declare function isDirectRun(argv1?: string | undefined, moduleUrl?: string): boolean;
97
98
  export { runProgram, wantsJsonOutput } from "./cli-error.js";
99
+ export { runFrontDoor } from "./front-door.js";
98
100
  //# sourceMappingURL=index.d.ts.map