@openrig/cli 0.5.17 → 0.6.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 (399) hide show
  1. package/daemon/context-packs/onboarding-width/manifest.yaml +1 -1
  2. package/daemon/context-packs/skills/agent-operated-software/manifest.yaml +1 -1
  3. package/daemon/context-packs/skills/agent-operated-workflows/manifest.yaml +1 -1
  4. package/daemon/context-packs/skills/applying-a-permission-policy/manifest.yaml +1 -1
  5. package/daemon/context-packs/skills/claude-compaction-restore/manifest.yaml +1 -1
  6. package/daemon/context-packs/skills/core/agent-starters/manifest.yaml +1 -1
  7. package/daemon/context-packs/skills/core/agent-startup-and-context-ingestion/manifest.yaml +1 -1
  8. package/daemon/context-packs/skills/core/cross-host-rig-commands/manifest.yaml +1 -1
  9. package/daemon/context-packs/skills/core/human-in-the-loop/manifest.yaml +1 -1
  10. package/daemon/context-packs/skills/core/messaging-the-human/manifest.yaml +1 -1
  11. package/daemon/context-packs/skills/core/openrig-architect/manifest.yaml +1 -1
  12. package/daemon/context-packs/skills/core/openrig-cmux/manifest.yaml +1 -1
  13. package/daemon/context-packs/skills/core/openrig-herdr/manifest.yaml +1 -1
  14. package/daemon/context-packs/skills/core/openrig-skills/manifest.yaml +1 -1
  15. package/daemon/context-packs/skills/core/openrig-software-factory/manifest.yaml +1 -1
  16. package/daemon/context-packs/skills/core/openrig-upgrade/manifest.yaml +1 -1
  17. package/daemon/context-packs/skills/core/rig-bundles-and-shareable-artifacts/manifest.yaml +1 -1
  18. package/daemon/context-packs/skills/core/rig-lifecycle/manifest.yaml +1 -1
  19. package/daemon/context-packs/skills/core/session-source-fork/manifest.yaml +1 -1
  20. package/daemon/context-packs/skills/core/specification-system/manifest.yaml +1 -1
  21. package/daemon/context-packs/skills/core/topology-mutation-and-seat-management/manifest.yaml +1 -1
  22. package/daemon/context-packs/skills/core/watchdog/manifest.yaml +1 -1
  23. package/daemon/context-packs/skills/delegating-work/manifest.yaml +1 -1
  24. package/daemon/context-packs/skills/forming-an-openrig-mental-model/manifest.yaml +1 -1
  25. package/daemon/context-packs/skills/loading-addressable-markdown/manifest.yaml +1 -1
  26. package/daemon/context-packs/skills/mission-slice-sop/manifest.yaml +1 -1
  27. package/daemon/context-packs/skills/openrig-operating-model/manifest.yaml +1 -1
  28. package/daemon/context-packs/skills/openrig-user/manifest.yaml +1 -1
  29. package/daemon/context-packs/skills/orienting-to-an-inherited-seat/manifest.yaml +1 -1
  30. package/daemon/context-packs/skills/pm/backlog-capture/manifest.yaml +1 -1
  31. package/daemon/context-packs/skills/pm/context-builder/manifest.yaml +1 -1
  32. package/daemon/context-packs/skills/pm/exec-summary/manifest.yaml +1 -1
  33. package/daemon/context-packs/skills/pm/office-hours/manifest.yaml +1 -1
  34. package/daemon/context-packs/skills/pm/plan-review/manifest.yaml +1 -1
  35. package/daemon/context-packs/skills/pm/requirements-writer/manifest.yaml +1 -1
  36. package/daemon/context-packs/skills/pm/ui-mockup/manifest.yaml +1 -1
  37. package/daemon/context-packs/skills/pods/development-team/manifest.yaml +1 -1
  38. package/daemon/context-packs/skills/pods/orchestration-team/manifest.yaml +1 -1
  39. package/daemon/context-packs/skills/pods/oversight-team/manifest.yaml +1 -1
  40. package/daemon/context-packs/skills/pods/review-team/manifest.yaml +1 -1
  41. package/daemon/context-packs/skills/process/agent-browser/manifest.yaml +1 -1
  42. package/daemon/context-packs/skills/process/context-engineering/manifest.yaml +1 -1
  43. package/daemon/context-packs/skills/process/dogfood/manifest.yaml +1 -1
  44. package/daemon/context-packs/skills/process/frontend-design/manifest.yaml +1 -1
  45. package/daemon/context-packs/skills/process/systematic-debugging/manifest.yaml +1 -1
  46. package/daemon/context-packs/skills/process/test-driven-development/manifest.yaml +1 -1
  47. package/daemon/context-packs/skills/process/verification-before-completion/manifest.yaml +1 -1
  48. package/daemon/context-packs/skills/queue-handoff/manifest.yaml +1 -1
  49. package/daemon/context-packs/skills/refocusing/manifest.yaml +1 -1
  50. package/daemon/context-packs/skills/retiring-and-inheriting-a-seat/manifest.yaml +1 -1
  51. package/daemon/context-packs/skills/seat-continuity-and-handover/manifest.yaml +1 -1
  52. package/daemon/context-packs/skills/session-compaction-and-restore/manifest.yaml +1 -1
  53. package/daemon/context-packs/skills/software-for-agents/manifest.yaml +1 -1
  54. package/daemon/context-packs/world-example/manifest.yaml +1 -1
  55. package/daemon/context-packs/world-public/manifest.yaml +1 -1
  56. package/daemon/dist/adapters/claude-code-adapter.d.ts +3 -0
  57. package/daemon/dist/adapters/claude-code-adapter.d.ts.map +1 -1
  58. package/daemon/dist/adapters/claude-code-adapter.js +36 -14
  59. package/daemon/dist/adapters/claude-code-adapter.js.map +1 -1
  60. package/daemon/dist/adapters/claude-resume.d.ts +3 -1
  61. package/daemon/dist/adapters/claude-resume.d.ts.map +1 -1
  62. package/daemon/dist/adapters/claude-resume.js +20 -6
  63. package/daemon/dist/adapters/claude-resume.js.map +1 -1
  64. package/daemon/dist/adapters/codex-resume.d.ts +4 -1
  65. package/daemon/dist/adapters/codex-resume.d.ts.map +1 -1
  66. package/daemon/dist/adapters/codex-resume.js +8 -2
  67. package/daemon/dist/adapters/codex-resume.js.map +1 -1
  68. package/daemon/dist/adapters/codex-runtime-adapter.d.ts +3 -0
  69. package/daemon/dist/adapters/codex-runtime-adapter.d.ts.map +1 -1
  70. package/daemon/dist/adapters/codex-runtime-adapter.js +16 -3
  71. package/daemon/dist/adapters/codex-runtime-adapter.js.map +1 -1
  72. package/daemon/dist/adapters/pi-runner.d.ts +1 -0
  73. package/daemon/dist/adapters/pi-runner.d.ts.map +1 -1
  74. package/daemon/dist/adapters/pi-runner.js +7 -1
  75. package/daemon/dist/adapters/pi-runner.js.map +1 -1
  76. package/daemon/dist/adapters/tmux.d.ts +21 -1
  77. package/daemon/dist/adapters/tmux.d.ts.map +1 -1
  78. package/daemon/dist/adapters/tmux.js +141 -3
  79. package/daemon/dist/adapters/tmux.js.map +1 -1
  80. package/daemon/dist/adapters/yolo-mode.d.ts +3 -2
  81. package/daemon/dist/adapters/yolo-mode.d.ts.map +1 -1
  82. package/daemon/dist/adapters/yolo-mode.js +10 -2
  83. package/daemon/dist/adapters/yolo-mode.js.map +1 -1
  84. package/daemon/dist/build-info.js +3 -3
  85. package/daemon/dist/db/all-migrations.d.ts +1 -1
  86. package/daemon/dist/db/all-migrations.d.ts.map +1 -1
  87. package/daemon/dist/db/all-migrations.js +10 -2
  88. package/daemon/dist/db/all-migrations.js.map +1 -1
  89. package/daemon/dist/db/migrations/086_classification_fields_and_attempts.d.ts +26 -0
  90. package/daemon/dist/db/migrations/086_classification_fields_and_attempts.d.ts.map +1 -0
  91. package/daemon/dist/db/migrations/086_classification_fields_and_attempts.js +66 -0
  92. package/daemon/dist/db/migrations/086_classification_fields_and_attempts.js.map +1 -0
  93. package/daemon/dist/db/migrations/087_seat_delivery_guard.d.ts +3 -0
  94. package/daemon/dist/db/migrations/087_seat_delivery_guard.d.ts.map +1 -0
  95. package/daemon/dist/db/migrations/087_seat_delivery_guard.js +31 -0
  96. package/daemon/dist/db/migrations/087_seat_delivery_guard.js.map +1 -0
  97. package/daemon/dist/db/migrations/088_node_permission_selections.d.ts +3 -0
  98. package/daemon/dist/db/migrations/088_node_permission_selections.d.ts.map +1 -0
  99. package/daemon/dist/db/migrations/088_node_permission_selections.js +16 -0
  100. package/daemon/dist/db/migrations/088_node_permission_selections.js.map +1 -0
  101. package/daemon/dist/db/migrations/089_classification_identity_provenance.d.ts +3 -0
  102. package/daemon/dist/db/migrations/089_classification_identity_provenance.d.ts.map +1 -0
  103. package/daemon/dist/db/migrations/089_classification_identity_provenance.js +6 -0
  104. package/daemon/dist/db/migrations/089_classification_identity_provenance.js.map +1 -0
  105. package/daemon/dist/domain/applied-launch-observation-store.d.ts +1 -1
  106. package/daemon/dist/domain/applied-launch-observation-store.d.ts.map +1 -1
  107. package/daemon/dist/domain/applied-launch-observation-store.js +6 -4
  108. package/daemon/dist/domain/applied-launch-observation-store.js.map +1 -1
  109. package/daemon/dist/domain/capture-observer.d.ts +130 -0
  110. package/daemon/dist/domain/capture-observer.d.ts.map +1 -0
  111. package/daemon/dist/domain/capture-observer.js +113 -0
  112. package/daemon/dist/domain/capture-observer.js.map +1 -0
  113. package/daemon/dist/domain/claim-service.d.ts.map +1 -1
  114. package/daemon/dist/domain/claim-service.js +24 -3
  115. package/daemon/dist/domain/claim-service.js.map +1 -1
  116. package/daemon/dist/domain/classification-attempts.d.ts +143 -0
  117. package/daemon/dist/domain/classification-attempts.d.ts.map +1 -0
  118. package/daemon/dist/domain/classification-attempts.js +316 -0
  119. package/daemon/dist/domain/classification-attempts.js.map +1 -0
  120. package/daemon/dist/domain/classification-sources.d.ts +44 -0
  121. package/daemon/dist/domain/classification-sources.d.ts.map +1 -0
  122. package/daemon/dist/domain/classification-sources.js +102 -0
  123. package/daemon/dist/domain/classification-sources.js.map +1 -0
  124. package/daemon/dist/domain/classifier-lease-manager.d.ts +15 -4
  125. package/daemon/dist/domain/classifier-lease-manager.d.ts.map +1 -1
  126. package/daemon/dist/domain/classifier-lease-manager.js +63 -21
  127. package/daemon/dist/domain/classifier-lease-manager.js.map +1 -1
  128. package/daemon/dist/domain/claude-compaction-enforcer.d.ts +3 -1
  129. package/daemon/dist/domain/claude-compaction-enforcer.d.ts.map +1 -1
  130. package/daemon/dist/domain/claude-compaction-enforcer.js +36 -7
  131. package/daemon/dist/domain/claude-compaction-enforcer.js.map +1 -1
  132. package/daemon/dist/domain/claude-managed-launch.d.ts +28 -0
  133. package/daemon/dist/domain/claude-managed-launch.d.ts.map +1 -0
  134. package/daemon/dist/domain/claude-managed-launch.js +111 -0
  135. package/daemon/dist/domain/claude-managed-launch.js.map +1 -0
  136. package/daemon/dist/domain/codex-daemon-support.d.ts +16 -0
  137. package/daemon/dist/domain/codex-daemon-support.d.ts.map +1 -0
  138. package/daemon/dist/domain/codex-daemon-support.js +52 -0
  139. package/daemon/dist/domain/codex-daemon-support.js.map +1 -0
  140. package/daemon/dist/domain/gateway/connections-projection.d.ts.map +1 -1
  141. package/daemon/dist/domain/gateway/connections-projection.js +6 -3
  142. package/daemon/dist/domain/gateway/connections-projection.js.map +1 -1
  143. package/daemon/dist/domain/gateway/slack/capabilities.d.ts +19 -0
  144. package/daemon/dist/domain/gateway/slack/capabilities.d.ts.map +1 -0
  145. package/daemon/dist/domain/gateway/slack/capabilities.js +24 -0
  146. package/daemon/dist/domain/gateway/slack/capabilities.js.map +1 -0
  147. package/daemon/dist/domain/gateway/slack/config.d.ts.map +1 -1
  148. package/daemon/dist/domain/gateway/slack/config.js +2 -1
  149. package/daemon/dist/domain/gateway/slack/config.js.map +1 -1
  150. package/daemon/dist/domain/gateway/slack/inbound.d.ts.map +1 -1
  151. package/daemon/dist/domain/gateway/slack/inbound.js +2 -1
  152. package/daemon/dist/domain/gateway/slack/inbound.js.map +1 -1
  153. package/daemon/dist/domain/gateway/slack/manifest.d.ts +54 -0
  154. package/daemon/dist/domain/gateway/slack/manifest.d.ts.map +1 -0
  155. package/daemon/dist/domain/gateway/slack/manifest.js +55 -0
  156. package/daemon/dist/domain/gateway/slack/manifest.js.map +1 -0
  157. package/daemon/dist/domain/model-divergence/model-divergence-monitor.d.ts +3 -2
  158. package/daemon/dist/domain/model-divergence/model-divergence-monitor.d.ts.map +1 -1
  159. package/daemon/dist/domain/model-divergence/model-divergence-monitor.js +9 -5
  160. package/daemon/dist/domain/model-divergence/model-divergence-monitor.js.map +1 -1
  161. package/daemon/dist/domain/native-permission-selection.d.ts +13 -0
  162. package/daemon/dist/domain/native-permission-selection.d.ts.map +1 -0
  163. package/daemon/dist/domain/native-permission-selection.js +30 -0
  164. package/daemon/dist/domain/native-permission-selection.js.map +1 -0
  165. package/daemon/dist/domain/native-permission-store.d.ts +17 -0
  166. package/daemon/dist/domain/native-permission-store.d.ts.map +1 -0
  167. package/daemon/dist/domain/native-permission-store.js +36 -0
  168. package/daemon/dist/domain/native-permission-store.js.map +1 -0
  169. package/daemon/dist/domain/native-resume-probe.d.ts +3 -1
  170. package/daemon/dist/domain/native-resume-probe.d.ts.map +1 -1
  171. package/daemon/dist/domain/native-resume-probe.js +5 -2
  172. package/daemon/dist/domain/native-resume-probe.js.map +1 -1
  173. package/daemon/dist/domain/node-inventory.d.ts +3 -0
  174. package/daemon/dist/domain/node-inventory.d.ts.map +1 -1
  175. package/daemon/dist/domain/node-inventory.js +2 -0
  176. package/daemon/dist/domain/node-inventory.js.map +1 -1
  177. package/daemon/dist/domain/node-launcher.d.ts.map +1 -1
  178. package/daemon/dist/domain/node-launcher.js +6 -0
  179. package/daemon/dist/domain/node-launcher.js.map +1 -1
  180. package/daemon/dist/domain/outbox-handler.d.ts +25 -2
  181. package/daemon/dist/domain/outbox-handler.d.ts.map +1 -1
  182. package/daemon/dist/domain/outbox-handler.js +70 -1
  183. package/daemon/dist/domain/outbox-handler.js.map +1 -1
  184. package/daemon/dist/domain/permission-drift-observer.d.ts +1 -0
  185. package/daemon/dist/domain/permission-drift-observer.d.ts.map +1 -1
  186. package/daemon/dist/domain/permission-drift-observer.js +1 -1
  187. package/daemon/dist/domain/permission-drift-observer.js.map +1 -1
  188. package/daemon/dist/domain/permission-drift.d.ts +10 -0
  189. package/daemon/dist/domain/permission-drift.d.ts.map +1 -1
  190. package/daemon/dist/domain/permission-drift.js +29 -18
  191. package/daemon/dist/domain/permission-drift.js.map +1 -1
  192. package/daemon/dist/domain/project-classifier.d.ts +43 -0
  193. package/daemon/dist/domain/project-classifier.d.ts.map +1 -1
  194. package/daemon/dist/domain/project-classifier.js +141 -25
  195. package/daemon/dist/domain/project-classifier.js.map +1 -1
  196. package/daemon/dist/domain/proof/judgments.d.ts +16 -0
  197. package/daemon/dist/domain/proof/judgments.d.ts.map +1 -1
  198. package/daemon/dist/domain/proof/judgments.js +17 -1
  199. package/daemon/dist/domain/proof/judgments.js.map +1 -1
  200. package/daemon/dist/domain/queue-repository.d.ts +8 -0
  201. package/daemon/dist/domain/queue-repository.d.ts.map +1 -1
  202. package/daemon/dist/domain/queue-repository.js +41 -14
  203. package/daemon/dist/domain/queue-repository.js.map +1 -1
  204. package/daemon/dist/domain/restore-orchestrator.d.ts.map +1 -1
  205. package/daemon/dist/domain/restore-orchestrator.js +28 -1
  206. package/daemon/dist/domain/restore-orchestrator.js.map +1 -1
  207. package/daemon/dist/domain/resume-metadata-refresher.d.ts.map +1 -1
  208. package/daemon/dist/domain/resume-metadata-refresher.js +3 -1
  209. package/daemon/dist/domain/resume-metadata-refresher.js.map +1 -1
  210. package/daemon/dist/domain/rig-lifecycle-service.d.ts.map +1 -1
  211. package/daemon/dist/domain/rig-lifecycle-service.js +7 -0
  212. package/daemon/dist/domain/rig-lifecycle-service.js.map +1 -1
  213. package/daemon/dist/domain/rig-teardown.d.ts.map +1 -1
  214. package/daemon/dist/domain/rig-teardown.js +4 -0
  215. package/daemon/dist/domain/rig-teardown.js.map +1 -1
  216. package/daemon/dist/domain/rigspec-instantiator.d.ts.map +1 -1
  217. package/daemon/dist/domain/rigspec-instantiator.js +36 -22
  218. package/daemon/dist/domain/rigspec-instantiator.js.map +1 -1
  219. package/daemon/dist/domain/runtime-adapter.d.ts +6 -0
  220. package/daemon/dist/domain/runtime-adapter.d.ts.map +1 -1
  221. package/daemon/dist/domain/runtime-adapter.js.map +1 -1
  222. package/daemon/dist/domain/seat-delivery-guard.d.ts +64 -0
  223. package/daemon/dist/domain/seat-delivery-guard.d.ts.map +1 -0
  224. package/daemon/dist/domain/seat-delivery-guard.js +224 -0
  225. package/daemon/dist/domain/seat-delivery-guard.js.map +1 -0
  226. package/daemon/dist/domain/seat-handover-service.d.ts.map +1 -1
  227. package/daemon/dist/domain/seat-handover-service.js +19 -1
  228. package/daemon/dist/domain/seat-handover-service.js.map +1 -1
  229. package/daemon/dist/domain/seat-lifecycle-service.d.ts +16 -2
  230. package/daemon/dist/domain/seat-lifecycle-service.d.ts.map +1 -1
  231. package/daemon/dist/domain/seat-lifecycle-service.js +70 -0
  232. package/daemon/dist/domain/seat-lifecycle-service.js.map +1 -1
  233. package/daemon/dist/domain/seat-status-service.d.ts +10 -0
  234. package/daemon/dist/domain/seat-status-service.d.ts.map +1 -1
  235. package/daemon/dist/domain/seat-status-service.js +13 -0
  236. package/daemon/dist/domain/seat-status-service.js.map +1 -1
  237. package/daemon/dist/domain/session-transport.d.ts +19 -1
  238. package/daemon/dist/domain/session-transport.d.ts.map +1 -1
  239. package/daemon/dist/domain/session-transport.js +221 -23
  240. package/daemon/dist/domain/session-transport.js.map +1 -1
  241. package/daemon/dist/domain/shadow-capture.d.ts +97 -0
  242. package/daemon/dist/domain/shadow-capture.d.ts.map +1 -0
  243. package/daemon/dist/domain/shadow-capture.js +147 -0
  244. package/daemon/dist/domain/shadow-capture.js.map +1 -0
  245. package/daemon/dist/domain/startup-orchestrator.d.ts.map +1 -1
  246. package/daemon/dist/domain/startup-orchestrator.js +11 -0
  247. package/daemon/dist/domain/startup-orchestrator.js.map +1 -1
  248. package/daemon/dist/domain/stream-classification-worker.d.ts +106 -0
  249. package/daemon/dist/domain/stream-classification-worker.d.ts.map +1 -0
  250. package/daemon/dist/domain/stream-classification-worker.js +265 -0
  251. package/daemon/dist/domain/stream-classification-worker.js.map +1 -0
  252. package/daemon/dist/domain/successor-session-launcher.d.ts +1 -0
  253. package/daemon/dist/domain/successor-session-launcher.d.ts.map +1 -1
  254. package/daemon/dist/domain/successor-session-launcher.js +4 -2
  255. package/daemon/dist/domain/successor-session-launcher.js.map +1 -1
  256. package/daemon/dist/domain/terminal/herdr-adapter.d.ts +7 -0
  257. package/daemon/dist/domain/terminal/herdr-adapter.d.ts.map +1 -1
  258. package/daemon/dist/domain/terminal/herdr-adapter.js +119 -12
  259. package/daemon/dist/domain/terminal/herdr-adapter.js.map +1 -1
  260. package/daemon/dist/domain/terminal/terminal-provider.d.ts +5 -0
  261. package/daemon/dist/domain/terminal/terminal-provider.d.ts.map +1 -1
  262. package/daemon/dist/domain/terminal/terminal-service.js +6 -6
  263. package/daemon/dist/domain/terminal/terminal-service.js.map +1 -1
  264. package/daemon/dist/domain/terminal/view-composer.d.ts +6 -4
  265. package/daemon/dist/domain/terminal/view-composer.d.ts.map +1 -1
  266. package/daemon/dist/domain/terminal/view-composer.js +5 -5
  267. package/daemon/dist/domain/terminal/view-composer.js.map +1 -1
  268. package/daemon/dist/domain/types.d.ts +10 -0
  269. package/daemon/dist/domain/types.d.ts.map +1 -1
  270. package/daemon/dist/domain/types.js.map +1 -1
  271. package/daemon/dist/domain/watchdog-policy-engine.d.ts +3 -1
  272. package/daemon/dist/domain/watchdog-policy-engine.d.ts.map +1 -1
  273. package/daemon/dist/domain/watchdog-policy-engine.js +5 -3
  274. package/daemon/dist/domain/watchdog-policy-engine.js.map +1 -1
  275. package/daemon/dist/gateway-slack-surface.d.ts +2 -0
  276. package/daemon/dist/gateway-slack-surface.d.ts.map +1 -1
  277. package/daemon/dist/gateway-slack-surface.js +2 -0
  278. package/daemon/dist/gateway-slack-surface.js.map +1 -1
  279. package/daemon/dist/routes/activity.d.ts.map +1 -1
  280. package/daemon/dist/routes/activity.js +28 -2
  281. package/daemon/dist/routes/activity.js.map +1 -1
  282. package/daemon/dist/routes/down.d.ts.map +1 -1
  283. package/daemon/dist/routes/down.js +3 -0
  284. package/daemon/dist/routes/down.js.map +1 -1
  285. package/daemon/dist/routes/gateway.d.ts.map +1 -1
  286. package/daemon/dist/routes/gateway.js +3 -0
  287. package/daemon/dist/routes/gateway.js.map +1 -1
  288. package/daemon/dist/routes/projects.d.ts.map +1 -1
  289. package/daemon/dist/routes/projects.js +205 -18
  290. package/daemon/dist/routes/projects.js.map +1 -1
  291. package/daemon/dist/routes/rigs.d.ts.map +1 -1
  292. package/daemon/dist/routes/rigs.js +13 -5
  293. package/daemon/dist/routes/rigs.js.map +1 -1
  294. package/daemon/dist/routes/seat.d.ts.map +1 -1
  295. package/daemon/dist/routes/seat.js +78 -1
  296. package/daemon/dist/routes/seat.js.map +1 -1
  297. package/daemon/dist/routes/sessions.d.ts.map +1 -1
  298. package/daemon/dist/routes/sessions.js +4 -1
  299. package/daemon/dist/routes/sessions.js.map +1 -1
  300. package/daemon/dist/routes/transport.d.ts.map +1 -1
  301. package/daemon/dist/routes/transport.js +9 -1
  302. package/daemon/dist/routes/transport.js.map +1 -1
  303. package/daemon/dist/server.d.ts +5 -0
  304. package/daemon/dist/server.d.ts.map +1 -1
  305. package/daemon/dist/server.js +3 -0
  306. package/daemon/dist/server.js.map +1 -1
  307. package/daemon/dist/startup.d.ts.map +1 -1
  308. package/daemon/dist/startup.js +32 -8
  309. package/daemon/dist/startup.js.map +1 -1
  310. package/daemon/dist/stream-classifier-surface.d.ts +6 -0
  311. package/daemon/dist/stream-classifier-surface.d.ts.map +1 -0
  312. package/daemon/dist/stream-classifier-surface.js +6 -0
  313. package/daemon/dist/stream-classifier-surface.js.map +1 -0
  314. package/daemon/dist/terminal/TerminalSessionBroker.d.ts +1 -0
  315. package/daemon/dist/terminal/TerminalSessionBroker.d.ts.map +1 -1
  316. package/daemon/dist/terminal/TerminalSessionBroker.js +10 -6
  317. package/daemon/dist/terminal/TerminalSessionBroker.js.map +1 -1
  318. package/daemon/docs/reference/getting-started.md +63 -5
  319. package/daemon/docs/reference/rig-spec.md +6 -1
  320. package/daemon/docs/reference/slack-app-setup.md +90 -0
  321. package/daemon/docs/reference/stream-classifier-worker.md +244 -0
  322. package/daemon/policies/builtin/yolo.policy.md +5 -5
  323. package/daemon/specs/rigs/launch/kernel/rig.yaml +4 -0
  324. package/dist/build-info.js +3 -3
  325. package/dist/commands/doctor.d.ts.map +1 -1
  326. package/dist/commands/doctor.js +9 -6
  327. package/dist/commands/doctor.js.map +1 -1
  328. package/dist/commands/policy.d.ts.map +1 -1
  329. package/dist/commands/policy.js +8 -1
  330. package/dist/commands/policy.js.map +1 -1
  331. package/dist/commands/preflight.d.ts.map +1 -1
  332. package/dist/commands/preflight.js +2 -0
  333. package/dist/commands/preflight.js.map +1 -1
  334. package/dist/commands/project-jev.d.ts +115 -0
  335. package/dist/commands/project-jev.d.ts.map +1 -0
  336. package/dist/commands/project-jev.js +239 -0
  337. package/dist/commands/project-jev.js.map +1 -0
  338. package/dist/commands/project-worker.d.ts +96 -0
  339. package/dist/commands/project-worker.d.ts.map +1 -0
  340. package/dist/commands/project-worker.js +125 -0
  341. package/dist/commands/project-worker.js.map +1 -0
  342. package/dist/commands/project.d.ts +5 -1
  343. package/dist/commands/project.d.ts.map +1 -1
  344. package/dist/commands/project.js +161 -0
  345. package/dist/commands/project.js.map +1 -1
  346. package/dist/commands/seat.d.ts.map +1 -1
  347. package/dist/commands/seat.js +79 -0
  348. package/dist/commands/seat.js.map +1 -1
  349. package/dist/commands/send.d.ts.map +1 -1
  350. package/dist/commands/send.js +18 -5
  351. package/dist/commands/send.js.map +1 -1
  352. package/dist/commands/slack.d.ts +4 -1
  353. package/dist/commands/slack.d.ts.map +1 -1
  354. package/dist/commands/slack.js +41 -2
  355. package/dist/commands/slack.js.map +1 -1
  356. package/dist/commands/terminal.d.ts.map +1 -1
  357. package/dist/commands/terminal.js +2 -0
  358. package/dist/commands/terminal.js.map +1 -1
  359. package/dist/commands/walk.d.ts.map +1 -1
  360. package/dist/commands/walk.js +6 -0
  361. package/dist/commands/walk.js.map +1 -1
  362. package/dist/node-support.d.ts +12 -0
  363. package/dist/node-support.d.ts.map +1 -0
  364. package/dist/node-support.js +37 -0
  365. package/dist/node-support.js.map +1 -0
  366. package/dist/system-preflight.d.ts +2 -0
  367. package/dist/system-preflight.d.ts.map +1 -1
  368. package/dist/system-preflight.js +9 -10
  369. package/dist/system-preflight.js.map +1 -1
  370. package/package.json +3 -3
  371. package/scripts/check-abi.mjs +119 -65
  372. package/tui/dist/commands/registry.d.ts.map +1 -1
  373. package/tui/dist/commands/registry.js +3 -0
  374. package/tui/dist/commands/registry.js.map +1 -1
  375. package/tui/dist/connections/connections-model.d.ts +11 -1
  376. package/tui/dist/connections/connections-model.d.ts.map +1 -1
  377. package/tui/dist/connections/connections-model.js +28 -1
  378. package/tui/dist/connections/connections-model.js.map +1 -1
  379. package/tui/dist/daemon-client.d.ts +2 -0
  380. package/tui/dist/daemon-client.d.ts.map +1 -1
  381. package/tui/dist/daemon-client.js +1 -0
  382. package/tui/dist/daemon-client.js.map +1 -1
  383. package/tui/dist/hydrate.d.ts.map +1 -1
  384. package/tui/dist/hydrate.js +5 -0
  385. package/tui/dist/hydrate.js.map +1 -1
  386. package/tui/dist/main.js +16 -2
  387. package/tui/dist/main.js.map +1 -1
  388. package/tui/dist/print-for-copy.d.ts +36 -0
  389. package/tui/dist/print-for-copy.d.ts.map +1 -0
  390. package/tui/dist/print-for-copy.js +92 -0
  391. package/tui/dist/print-for-copy.js.map +1 -0
  392. package/tui/dist/render.d.ts.map +1 -1
  393. package/tui/dist/render.js +4 -1
  394. package/tui/dist/render.js.map +1 -1
  395. package/tui/dist/state.d.ts.map +1 -1
  396. package/tui/dist/state.js +2 -0
  397. package/tui/dist/state.js.map +1 -1
  398. package/tui/dist/types.d.ts +8 -0
  399. package/tui/dist/types.d.ts.map +1 -1
@@ -0,0 +1,125 @@
1
+ import { createHash } from "node:crypto";
2
+ import fs from "node:fs";
3
+ import { parse } from "yaml";
4
+ import { StreamClassificationWorker, ClassifierLeaseError, ClassificationAttemptError, ProjectClassifierError, LABEL_FIELDS } from "../../daemon/dist/stream-classifier-surface.js";
5
+ const hash = (text) => `sha256:${createHash("sha256").update(text).digest("hex")}`;
6
+ function localText(file) {
7
+ if (fs.statSync(file).size > 1024 * 1024)
8
+ throw Error("worker input exceeds 1 MiB");
9
+ const text = fs.readFileSync(file, "utf8");
10
+ if (Buffer.byteLength(text) > 1024 * 1024)
11
+ throw Error("worker input exceeds 1 MiB");
12
+ return text;
13
+ }
14
+ function response(r) {
15
+ if (r.status < 400)
16
+ return r.data;
17
+ const body = r.data;
18
+ const code = body?.error ?? "http_error", message = body?.message ?? code;
19
+ if (code.startsWith("lease_") || ["no_active_lease", "occupant_changed", "occupant_unavailable"].includes(code))
20
+ throw new ClassifierLeaseError(code, message);
21
+ if (code.startsWith("attempt_") || code === "already_classified")
22
+ throw new ClassificationAttemptError(code, message);
23
+ if (code === "idempotency_violation")
24
+ throw new ProjectClassifierError(code, message);
25
+ throw Error(`${code}: ${message}`);
26
+ }
27
+ export async function prepareWorker(client, opts, read = localText) {
28
+ const limit = Number(opts.limit ?? 20);
29
+ if (!Number.isInteger(limit) || limit < 1 || limit > 100)
30
+ throw Error("limit must be an integer in 1..100");
31
+ const text = read(opts.taxonomy), taxonomy = parse(text);
32
+ if (!taxonomy || typeof taxonomy.version !== "string" || !taxonomy.version.trim())
33
+ throw Error("taxonomy version is required");
34
+ const snapshot = response(await client.get(`/api/projects/worker-sources?project=${encodeURIComponent(opts.project)}`));
35
+ const occupant = snapshot.occupant;
36
+ if (!occupant?.session || !occupant.generation || !occupant.nodeId)
37
+ throw Error("real classifier occupant unavailable");
38
+ const values = { classificationType: [], classificationUrgency: [], classificationMaturity: [], classificationConfidence: [], classificationDestination: [], area: [], scopeRef: [] };
39
+ for (const [input, output] of [["kind", "classificationType"], ["urgency", "classificationUrgency"], ["maturity", "classificationMaturity"], ["area", "area"]]) {
40
+ const field = taxonomy.fields?.[input];
41
+ if (typeof field?.question !== "string" || !field.values || Array.isArray(field.values) || typeof field.values !== "object")
42
+ throw Error(`taxonomy ${input} question/values unavailable`);
43
+ values[output] = Object.keys(field.values);
44
+ }
45
+ values.scopeRef = snapshot.sources.scopes.map(x => x.id);
46
+ values.classificationDestination = [...snapshot.sources.roster.map(x => x.session), "pool"];
47
+ const candidates = {
48
+ version: hash(JSON.stringify({ sourceVersion: snapshot.version, taxonomyHash: hash(text), values })), values,
49
+ duplicateCandidates: snapshot.sources.recent.map(x => ({ streamItemId: x.streamItemId, evidenceRef: x.evidenceRef })), relatedRefs: [],
50
+ };
51
+ const query = new URLSearchParams({ classifierVersion: opts.classifierVersion, taxonomyVersion: taxonomy.version, evidenceEpoch: opts.evidenceEpoch, limit: opts.limit ?? "20", expectedOccupant: occupant.generation });
52
+ const eligible = response(await client.get(`/api/projects/eligible?${query}`));
53
+ return { snapshot, candidates, taxonomy: { version: taxonomy.version, source: opts.taxonomy, hash: hash(text), questions: taxonomy.fields }, eligible };
54
+ }
55
+ /** The receiving entry for one occupant-owned bounded wake. No automatic registration. */
56
+ export async function runProjectWake(client, opts, read = localText, experiment) {
57
+ const prepared = await prepareWorker(client, opts, read);
58
+ const { snapshot, candidates, taxonomy } = prepared;
59
+ const { session, generation } = snapshot.occupant;
60
+ const suffix = (url) => `${url}${url.includes("?") ? "&" : "?"}expectedOccupant=${encodeURIComponent(generation)}`;
61
+ const get = async (url) => response(await client.get(suffix(url)));
62
+ const post = async (url, body) => response(await client.post(suffix(url), body));
63
+ const packet = opts.decisions ? JSON.parse(read(opts.decisions)) : null;
64
+ if (packet && (!Array.isArray(packet.decisions) || packet.decisions.length > 100 || new Set(packet.decisions.map(x => x.streamItemId)).size !== packet.decisions.length))
65
+ throw Error("decisions must contain at most 100 unique stream item IDs");
66
+ if (!experiment && (!packet || packet.candidateSetVersion !== candidates.version))
67
+ throw Error("fresh decisions bound to this candidateSetVersion are required; no attempts started");
68
+ if (experiment && packet)
69
+ throw Error("choose one source of decisions");
70
+ const worker = new StreamClassificationWorker({
71
+ session, classifierVersion: opts.classifierVersion, taxonomyVersion: taxonomy.version, evidenceEpoch: opts.evidenceEpoch,
72
+ candidates, pageSize: Number(opts.limit ?? 20),
73
+ ...(experiment ? { signal: experiment.signal, shouldStop: experiment.shouldStop, requestTimeoutMs: experiment.timeoutMs } : {}),
74
+ leases: {
75
+ evaluateDeadness: () => null, // acquire uses the existing evaluated-acquire transaction path.
76
+ acquire: actor => post("/api/projects/lease/acquire", { classifierSession: actor, evaluateDeadnessFirst: true }),
77
+ requireActiveHolder: (_actor, id) => get(`/api/projects/lease?expectedLeaseId=${encodeURIComponent(id ?? "")}`),
78
+ heartbeat: (id, actor) => post("/api/projects/lease/heartbeat", { leaseId: id, classifierSession: actor }),
79
+ },
80
+ attempts: {
81
+ eligible: input => get(`/api/projects/eligible?${new URLSearchParams(Object.entries(input).filter(([, v]) => v !== undefined).map(([k, v]) => [k, String(v)]))}`),
82
+ begin: input => post("/api/projects/attempts/begin", input),
83
+ abstain: input => post(`/api/projects/attempts/${encodeURIComponent(input.attemptId)}/abstain`, input),
84
+ fail: input => post(`/api/projects/attempts/${encodeURIComponent(input.attemptId)}/fail`, input),
85
+ },
86
+ classifier: { classify: input => post("/api/projects/project", input) },
87
+ stream: { getById: id => get(`/api/stream/${encodeURIComponent(id)}`) },
88
+ classify: experiment ? experiment.decide(prepared) : async (request) => {
89
+ if (snapshot.unavailable.length)
90
+ return { kind: "abstain", reason: `candidate sources unavailable: ${snapshot.unavailable.join("; ")}` };
91
+ if (!packet || packet.candidateSetVersion !== candidates.version)
92
+ return { kind: "abstain", reason: "decisions unavailable for this candidate snapshot" };
93
+ const selected = packet.decisions.find(x => x.streamItemId === request.item.streamItemId && x.bodyHash === hash(request.item.body));
94
+ if (!selected)
95
+ return { kind: "abstain", reason: "decision unavailable for exact stream item bytes" };
96
+ if (selected.decision?.kind === "classify") {
97
+ const labels = selected.decision.labels;
98
+ if (!labels || LABEL_FIELDS.some(field => labels[field] != null && !candidates.values[field].includes(labels[field])))
99
+ return { kind: "abstain", reason: "selected label candidate unavailable" };
100
+ if (labels.duplicateOfStreamItemId != null && !candidates.duplicateCandidates.some(x => x.streamItemId === labels.duplicateOfStreamItemId && x.evidenceRef === labels.duplicateEvidenceRef))
101
+ return { kind: "abstain", reason: "positive duplicate evidence unavailable" };
102
+ }
103
+ return selected.decision;
104
+ },
105
+ });
106
+ const result = await worker.wake();
107
+ // Descriptor only. A message requests this entry; it never executes a wake by itself.
108
+ let wakeRequest = null;
109
+ // A copied argument vector, never an interpolated shell command. The occupant still owns judgment.
110
+ const nextCommand = ["rig", "project", "candidates", "--project", opts.project, "--taxonomy", opts.taxonomy,
111
+ "--classifier-version", opts.classifierVersion, "--evidence-epoch", opts.evidenceEpoch, "--limit", opts.limit ?? "20", "--json"];
112
+ try {
113
+ if (experiment)
114
+ return { occupant: snapshot.occupant, candidateSetVersion: candidates.version, evidenceEpoch: opts.evidenceEpoch,
115
+ result, nextCommand: null, wakeRequest: null, registered: false, sourceSnapshot: snapshot,
116
+ continuation: "Foreground experiment only; no automatic retry or wake registration. Inspect this result before another explicit run." };
117
+ const descriptor = worker.wakeRegistration(session, generation);
118
+ descriptor.specYaml = JSON.stringify({ target: { session }, message: `Run ${JSON.stringify(nextCommand)} as an argument vector, read the exact eligible stream items with rig stream show, then supply source-bound decisions to rig project wake with these same options plus --decisions. One bounded wake only; honor returned nextWakeAt. Never change evidence epoch without owner authorization.` });
119
+ wakeRequest = descriptor;
120
+ }
121
+ catch { /* no acquired lease */ }
122
+ return { occupant: snapshot.occupant, candidateSetVersion: candidates.version, evidenceEpoch: opts.evidenceEpoch,
123
+ result, nextCommand, wakeRequest, registered: false, sourceSnapshot: snapshot };
124
+ }
125
+ //# sourceMappingURL=project-worker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-worker.js","sourceRoot":"","sources":["../../src/commands/project-worker.ts"],"names":[],"mappings":"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"}
@@ -3,12 +3,16 @@ import type { StatusDeps } from "./status.js";
3
3
  /**
4
4
  * `rig project` — coordination primitive L2 (classifier) commands (PL-004 Phase B).
5
5
  *
6
- * Backed by `/api/projects`. Operates only via the daemon HTTP API.
6
+ * Coordination uses `/api/projects`; optional experiment configuration/provider
7
+ * processing is local to the invoking occupant.
7
8
  *
8
9
  * Per PRD § L2: classifier judgment stays with the agent; daemon enforces
9
10
  * the lease + idempotency + reclaim contract.
10
11
  */
11
12
  export interface ProjectDeps extends StatusDeps {
13
+ workerRead?: (file: string) => string;
14
+ experimentEnv?: NodeJS.ProcessEnv;
15
+ experimentFetch?: typeof fetch;
12
16
  }
13
17
  export declare function projectCommand(depsOverride?: ProjectDeps): Command;
14
18
  //# sourceMappingURL=project.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../../src/commands/project.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C;;;;;;;GAOG;AAEH,MAAM,WAAW,WAAY,SAAQ,UAAU;CAAG;AAqBlD,wBAAgB,cAAc,CAAC,YAAY,CAAC,EAAE,WAAW,GAAG,OAAO,CA8JlE"}
1
+ {"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../../src/commands/project.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAI9C;;;;;;;;GAQG;AAEH,MAAM,WAAW,WAAY,SAAQ,UAAU;IAC7C,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IACtC,aAAa,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IAClC,eAAe,CAAC,EAAE,OAAO,KAAK,CAAC;CAChC;AAqBD,wBAAgB,cAAc,CAAC,YAAY,CAAC,EAAE,WAAW,GAAG,OAAO,CAiSlE"}
@@ -1,7 +1,10 @@
1
+ import { prepareWorker, runProjectWake } from "./project-worker.js";
1
2
  import { Command } from "commander";
2
3
  import { DaemonClient } from "../client.js";
3
4
  import { getDaemonStatus, getDaemonUrl, daemonStatusGuard } from "../daemon-lifecycle.js";
4
5
  import { realDeps } from "./daemon.js";
6
+ import { experimentStatus, setExperiment, readBounded, JevRun, streamDecision, classifyCapture } from "./project-jev.js";
7
+ import fs from "node:fs";
5
8
  async function withClient(deps, fn) {
6
9
  const status = await getDaemonStatus(deps.lifecycleDeps);
7
10
  if (!daemonStatusGuard(status))
@@ -25,6 +28,130 @@ export function projectCommand(depsOverride) {
25
28
  lifecycleDeps: realDeps(),
26
29
  clientFactory: (url) => new DaemonClient(url),
27
30
  };
31
+ const experimental = cmd.command("experimental").description("Optional Jev experiment; advisory, finite foreground runs, disabled by default");
32
+ for (const verb of ["enable", "disable", "status"]) {
33
+ experimental.command(verb).requiredOption("--config <file>", "Explicit local experiment JSON; contains no credential")
34
+ .option("--max-requests <n>", "Maximum requests per foreground run, 1..20")
35
+ .option("--timeout-ms <n>", "Per-request deadline, 1000..30000")
36
+ .option("--json", "JSON output")
37
+ .action(opts => {
38
+ try {
39
+ if (verb !== "status")
40
+ setExperiment(opts.config, verb === "enable", {
41
+ ...(opts.maxRequests !== undefined ? { maxRequests: Number(opts.maxRequests) } : {}),
42
+ ...(opts.timeoutMs !== undefined ? { timeoutMs: Number(opts.timeoutMs) } : {}),
43
+ });
44
+ printResult(true, experimentStatus(opts.config), 200);
45
+ }
46
+ catch (error) {
47
+ printResult(true, { error: "experiment_config", message: error instanceof Error ? error.message : "unavailable" }, 400);
48
+ }
49
+ });
50
+ }
51
+ experimental.command("capture").description("Classify a selected archived capture; never captures a live terminal or changes its verdict")
52
+ .requiredOption("--config <file>", "Explicit experiment configuration")
53
+ .requiredOption("--input <file>", "Existing shadow JSONL archive (max 8 MiB)")
54
+ .requiredOption("--output <file>", "New advisory JSONL result file; never overwrites input")
55
+ .option("--json", "JSON output")
56
+ .action(async (opts) => {
57
+ let run, fd;
58
+ try {
59
+ const deps = getDeps(), status = experimentStatus(opts.config, deps.workerRead);
60
+ if (!status.enabled) {
61
+ printResult(true, status, 200);
62
+ return;
63
+ }
64
+ run = new JevRun(opts.config, deps.workerRead, deps.experimentEnv, deps.experimentFetch);
65
+ const rows = readBounded(opts.input, 8 * 1024 * 1024).split("\n").filter(Boolean);
66
+ fd = fs.openSync(opts.output, "wx", 0o600);
67
+ process.once("SIGINT", run.stop);
68
+ process.once("SIGTERM", run.stop);
69
+ let inspected = 0, unavailable = 0;
70
+ for (const line of rows.slice(0, run.config.maxRequests)) {
71
+ if (run.stopped())
72
+ break;
73
+ const result = await classifyCapture(run, JSON.parse(line));
74
+ fs.writeFileSync(fd, JSON.stringify(result) + "\n");
75
+ inspected++;
76
+ if (result.status === "unavailable" || result.result?.status === "unavailable")
77
+ unavailable++;
78
+ }
79
+ printResult(true, { ...run.status(), inspected, unavailable, remaining: rows.length - inspected, output: opts.output }, run.status().reason || unavailable ? 409 : 200);
80
+ }
81
+ catch {
82
+ printResult(true, { error: "capture_experiment_unavailable", message: "No automatic retry; any existing output retains completed results." }, 409);
83
+ }
84
+ finally {
85
+ if (fd !== undefined)
86
+ fs.closeSync(fd);
87
+ if (run) {
88
+ process.removeListener("SIGINT", run.stop);
89
+ process.removeListener("SIGTERM", run.stop);
90
+ }
91
+ }
92
+ });
93
+ for (const verb of ["candidates", "wake"]) {
94
+ cmd.command(verb)
95
+ .description(verb === "wake" ? "Run one bounded occupant wake with source-bound decisions or explicit Jev experiment; no registration" : "Read current source-bound candidates and eligible item IDs for the occupant")
96
+ .requiredOption("--project <id>", "Selected configured project")
97
+ .requiredOption("--taxonomy <file>", "Occupant-owned taxonomy/question YAML")
98
+ .requiredOption("--classifier-version <version>", "Classifier version")
99
+ .requiredOption("--evidence-epoch <epoch>", "Owner-authorized evidence epoch; candidate changes do not retry terminal attempts")
100
+ .option("--decisions <file>", "JSON decisions bound to candidateSetVersion and each item's bodyHash")
101
+ .option("--experiment <file>", "Opt-in experimental Jev config; replaces --decisions for one bounded wake")
102
+ .option("--limit <count>", "Items per bounded wake (1..100)", "20")
103
+ .option("--json", "JSON output")
104
+ .action(async (opts) => {
105
+ let run;
106
+ try {
107
+ if (opts.experiment) {
108
+ if (verb !== "wake" || opts.decisions)
109
+ throw Error("--experiment is for wake only and cannot be combined with --decisions");
110
+ const deps = getDeps(), status = experimentStatus(opts.experiment, deps.workerRead);
111
+ if (!status.enabled) {
112
+ printResult(true, status, 200);
113
+ return;
114
+ }
115
+ run = new JevRun(opts.experiment, deps.workerRead, deps.experimentEnv, deps.experimentFetch);
116
+ opts.limit = String(Math.min(Number(opts.limit), run.config.maxRequests));
117
+ process.once("SIGINT", run.stop);
118
+ process.once("SIGTERM", run.stop);
119
+ }
120
+ await withClient(getDeps(), async (client) => {
121
+ try {
122
+ const result = verb === "wake" ? await runProjectWake(client, opts, getDeps().workerRead, run ? {
123
+ decide: prepared => streamDecision(run, prepared), signal: run.controller.signal,
124
+ shouldStop: run.stopped, timeoutMs: run.config.timeoutMs,
125
+ } : undefined) : await prepareWorker(client, opts, getDeps().workerRead);
126
+ console.log(JSON.stringify(run ? { ...result, experiment: run.status() } : result));
127
+ if ("result" in result && ["unavailable", "lease_lost"].includes(result.result.state))
128
+ process.exitCode = 1;
129
+ if (run?.status().reason)
130
+ process.exitCode = 1;
131
+ }
132
+ catch (error) {
133
+ printResult(true, { error: "worker_unavailable", message: error instanceof Error ? error.message : "unavailable", phase: "prepare", nextWakeAt: new Date(Date.now() + 60_000).toISOString() }, 409);
134
+ }
135
+ });
136
+ }
137
+ catch (error) {
138
+ printResult(true, { error: "experiment_unavailable", message: error instanceof Error ? error.message : "unavailable" }, 409);
139
+ }
140
+ finally {
141
+ if (run) {
142
+ process.removeListener("SIGINT", run.stop);
143
+ process.removeListener("SIGTERM", run.stop);
144
+ }
145
+ }
146
+ });
147
+ }
148
+ for (const verb of ["shadow-status", "shadow-drain", "shadow-stop"]) {
149
+ cmd.command(verb).description("Inspect, drain or stop an explicitly configured private shadow sink; never enables capture")
150
+ .action(async () => withClient(getDeps(), async (client) => {
151
+ const result = verb === "shadow-status" ? await client.get("/api/projects/shadow") : await client.post(`/api/projects/shadow/${verb === "shadow-stop" ? "stop" : "drain"}`);
152
+ printResult(true, result.data, result.status);
153
+ }));
154
+ }
28
155
  // ---- Lease lifecycle ----
29
156
  cmd
30
157
  .command("lease-acquire")
@@ -93,19 +220,44 @@ export function projectCommand(depsOverride) {
93
220
  .command("classify <streamItemId>")
94
221
  .description("Project a stream item with classification fields (idempotent on stream_item_id; requires active lease)")
95
222
  .requiredOption("--session <session>", "Classifier session name (must hold active lease)")
223
+ .requiredOption("--lease-id <id>", "Lease ID this result was computed under (from lease-acquire); a replaced or expired lease is refused")
224
+ .option("--attempt-id <id>", "Attempt ledger ID to mark written in the same transaction (omit for a manual classification)")
225
+ .option("--execution-id <id>", "Execution ID from the attempt's begin (required with --attempt-id; a superseded execution is refused)")
96
226
  .option("--type <type>", "Classification type (e.g., idea, bug, feature-request)")
97
227
  .option("--urgency <urgency>", "Classification urgency (e.g., normal, high, critical)")
98
228
  .option("--maturity <maturity>", "Classification maturity (e.g., concept, drafted, ratified)")
99
229
  .option("--confidence <confidence>", "Classification confidence (e.g., low, medium, high)")
100
230
  .option("--destination <destination>", "Classification destination (downstream slice/seat)")
101
231
  .option("--action <action>", "Action type (e.g., create, advance)")
232
+ .option("--area <area>", "Product area label")
233
+ .option("--scope-ref <id>", "Mission/slice scope id (requires --candidate-set-version)")
234
+ .option("--duplicate-of <streamItemId>", "Earlier stream item this one duplicates")
235
+ .option("--needs-human <value>", "true | false (omit when unknown; unknown is not false)")
236
+ .option("--classifier-version <v>", "Classifier version that produced the label")
237
+ .option("--taxonomy-version <v>", "Taxonomy version the label uses")
238
+ .option("--candidate-set-version <v>", "Version of the scope/roster candidate set the label was chosen from")
102
239
  .option("--json", "JSON output for agents")
103
240
  .action(async (streamItemId, opts) => {
241
+ if (opts.needsHuman !== undefined && opts.needsHuman !== "true" && opts.needsHuman !== "false") {
242
+ console.error("--needs-human must be true or false; omit it when unknown");
243
+ process.exitCode = 1;
244
+ return;
245
+ }
104
246
  const deps = getDeps();
105
247
  await withClient(deps, async (client) => {
106
248
  const res = await client.post("/api/projects/project", {
107
249
  streamItemId,
108
250
  classifierSession: opts.session,
251
+ leaseId: opts.leaseId,
252
+ attemptId: opts.attemptId,
253
+ executionId: opts.executionId,
254
+ area: opts.area,
255
+ scopeRef: opts.scopeRef,
256
+ duplicateOfStreamItemId: opts.duplicateOf,
257
+ needsHuman: opts.needsHuman === undefined ? undefined : opts.needsHuman === "true",
258
+ classifierVersion: opts.classifierVersion,
259
+ taxonomyVersion: opts.taxonomyVersion,
260
+ candidateSetVersion: opts.candidateSetVersion,
109
261
  classificationType: opts.type,
110
262
  classificationUrgency: opts.urgency,
111
263
  classificationMaturity: opts.maturity,
@@ -122,6 +274,9 @@ export function projectCommand(depsOverride) {
122
274
  .description("List project classifications with filters")
123
275
  .option("--session <session>", "Filter by classifier session")
124
276
  .option("--destination <destination>", "Filter by classification destination")
277
+ .option("--area <area>", "Filter by area")
278
+ .option("--scope-ref <id>", "Filter by scope ref")
279
+ .option("--needs-human <value>", "Filter: true | false | unknown")
125
280
  .option("--limit <n>", "Result limit", "100")
126
281
  .option("--json", "JSON output for agents")
127
282
  .action(async (opts) => {
@@ -131,6 +286,12 @@ export function projectCommand(depsOverride) {
131
286
  params.set("classifierSession", opts.session);
132
287
  if (opts.destination)
133
288
  params.set("classificationDestination", opts.destination);
289
+ if (opts.area)
290
+ params.set("area", opts.area);
291
+ if (opts.scopeRef)
292
+ params.set("scopeRef", opts.scopeRef);
293
+ if (opts.needsHuman)
294
+ params.set("needsHuman", opts.needsHuman);
134
295
  if (opts.limit)
135
296
  params.set("limit", opts.limit);
136
297
  await withClient(deps, async (client) => {
@@ -1 +1 @@
1
- {"version":3,"file":"project.js","sourceRoot":"","sources":["../../src/commands/project.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"project.js","sourceRoot":"","sources":["../../src/commands/project.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"seat.d.ts","sourceRoot":"","sources":["../../src/commands/seat.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,MAAM,MAAM,QAAQ,GAAG,UAAU,CAAC;AAqOlC,wBAAgB,WAAW,CAAC,YAAY,CAAC,EAAE,QAAQ,GAAG;IAAE,SAAS,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAA;CAAE,GAAG,OAAO,CA0VpG;AAED,UAAU,kBAAkB;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED;0EAC0E;AAC1E,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CA8C3G;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,YAAY,CAAC,EAAE,QAAQ,GAAG,OAAO,CA6BhE"}
1
+ {"version":3,"file":"seat.d.ts","sourceRoot":"","sources":["../../src/commands/seat.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,MAAM,MAAM,QAAQ,GAAG,UAAU,CAAC;AAyPlC,wBAAgB,WAAW,CAAC,YAAY,CAAC,EAAE,QAAQ,GAAG;IAAE,SAAS,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAA;CAAE,GAAG,OAAO,CAwZpG;AAED,UAAU,kBAAkB;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED;0EAC0E;AAC1E,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CA8C3G;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,YAAY,CAAC,EAAE,QAAQ,GAAG,OAAO,CA6BhE"}
@@ -18,7 +18,20 @@ function printHuman(status) {
18
18
  console.log(`Rig: ${status.rig_name}`);
19
19
  console.log(`Logical ID: ${status.logical_id}`);
20
20
  console.log(`Current occupant: ${display(status.current_occupant)}`);
21
+ if (status.typingGuard) {
22
+ const g = status.typingGuard;
23
+ console.log(`Typing guard: ${g.effective ? "on" : "off"}${g.pending ? ` (activation pending; requested ${g.desired ? "on" : "off"})` : ""}; ${g.heldCount} retained`);
24
+ console.log("Automatic input pauses while on, including writing lifecycle. Disabling does not replay held messages.");
25
+ }
21
26
  console.log(`Session: ${display(status.session_status, "unknown")}`);
27
+ if (status.permissions) {
28
+ const p = status.permissions;
29
+ console.log(`Permission mode for future launches: ${p.desired?.mode ?? p.selectionState}`);
30
+ console.log(`Last launch arguments: ${p.lastLaunchArguments?.value ?? "unknown"}${p.lastLaunchArguments?.approvalPolicy ? `; approval=${p.lastLaunchArguments.approvalPolicy}` : ""}`);
31
+ console.log("Native permission effect: unverified by this status read");
32
+ if (p.error)
33
+ console.log(`Permission selection unavailable: ${p.error}`);
34
+ }
22
35
  console.log(`Startup: ${display(status.startup_status, "unknown")}`);
23
36
  console.log(`Occupant lifecycle: ${status.occupant_lifecycle}`);
24
37
  console.log(`Continuity outcome: ${display(status.continuity_outcome, "unknown")}`);
@@ -120,6 +133,57 @@ export function seatCommand(depsOverride) {
120
133
  clientFactory: (url) => new DaemonClient(url),
121
134
  };
122
135
  const readStdin = depsOverride?.readStdin ?? defaultReadStdin;
136
+ const guardRequest = async (method, path, body, json) => {
137
+ const deps = getDeps();
138
+ const daemon = await getDaemonStatus(deps.lifecycleDeps);
139
+ if (!daemonStatusGuard(daemon))
140
+ return;
141
+ const client = deps.clientFactory(getDaemonUrl(daemon));
142
+ const result = method === "GET" ? await client.get(path) : await client.post(path, body ?? {});
143
+ console.log(JSON.stringify(result.data, null, json ? undefined : 2));
144
+ if (result.status >= 400)
145
+ process.exitCode = result.status >= 500 ? 2 : 1;
146
+ };
147
+ cmd.command("set-typing-guard").argument("<seat>").requiredOption("--enabled <boolean>", "true pauses all automatic terminal input; false permits new sends")
148
+ .requiredOption("--reason <text>").option("--json").description("Protect this seat's draft by retaining automatic delivery, even at an empty prompt")
149
+ .addHelpText("after", `
150
+ This persistent, per-seat preference defaults off. On pauses ALL automatic terminal
151
+ input, even at an empty prompt; it is not a typing detector or permission mode.
152
+ Messages and wakes are retained in the existing outbox. Writing lifecycle operations
153
+ refuse before effects; raw/force/submit-only options do not bypass protection.
154
+ Direct human terminal input remains available. Other seats keep their own settings.
155
+
156
+ Activation can be pending while an already-started operation finishes. Read
157
+ rig seat status <seat> and wait for effective=true before relying on protection.
158
+ Inspect retained bodies with rig seat held-messages <seat> (or --id <id>).
159
+ Turning the guard off permits NEW sends; it never flushes or retries held messages.
160
+ Retire a reviewed record with rig seat retire-held-message <seat> <id> --reason <text>.
161
+ Retirement preserves evidence and frees quota; it does not deliver or close work.
162
+
163
+ Active retention defaults: 100 records / 8 MiB per seat, 1 MiB per message.
164
+ New admissions refuse at capacity. Already-committed queue intent is preserved even
165
+ when a concurrent activation exceeds that cap; inspect and retire it explicitly.
166
+ Protection covers OpenRig's managed input paths, not external tmux tools or another
167
+ process writing directly to the terminal. Disable deliberately before lifecycle work.
168
+ `)
169
+ .action(async (seat, opts) => {
170
+ if (opts.enabled !== "true" && opts.enabled !== "false") {
171
+ console.error("--enabled must be true or false");
172
+ process.exitCode = 1;
173
+ return;
174
+ }
175
+ await guardRequest("POST", `/api/seat/set-typing-guard/${encodeURIComponent(seat)}`, { enabled: opts.enabled === "true", reason: opts.reason }, opts.json);
176
+ });
177
+ cmd.command("held-messages").argument("<seat>").option("--limit <n>", "Page size", "100").option("--offset <n>", "Page offset", "0").option("--id <id>", "Read one retained or retired record by ID").option("--json")
178
+ .description("Read retained messages outside the protected terminal; reading never delivers them")
179
+ .action(async (seat, opts) => {
180
+ await guardRequest("GET", `/api/seat/held-messages/${encodeURIComponent(seat)}?limit=${encodeURIComponent(opts.limit)}&offset=${encodeURIComponent(opts.offset)}${opts.id ? `&id=${encodeURIComponent(opts.id)}` : ""}`, undefined, opts.json);
181
+ });
182
+ cmd.command("retire-held-message").argument("<seat>").argument("<id>").requiredOption("--reason <text>").option("--json")
183
+ .description("Release one held message's active quota, preserving evidence; does not deliver or close work")
184
+ .action(async (seat, id, opts) => {
185
+ await guardRequest("POST", `/api/seat/retire-held-message/${encodeURIComponent(seat)}/${encodeURIComponent(id)}`, { reason: opts.reason }, opts.json);
186
+ });
123
187
  cmd
124
188
  .command("status")
125
189
  .argument("<seat>", "Canonical session name or logical seat ref")
@@ -285,6 +349,21 @@ Examples:
285
349
  }
286
350
  printOk(res.data);
287
351
  };
352
+ cmd
353
+ .command("set-permissions")
354
+ .argument("<seat>", "Canonical session name or logical seat ref")
355
+ .requiredOption("--mode <mode>", "floor, full_bypass, inherit, or a Claude mode supported by the bound managed launch context")
356
+ .requiredOption("--reason <text>", "Reason for the audited future-launch selection")
357
+ .option("--json", "JSON output for agents")
358
+ .description("Select native permissions for future managed launches; no relaunch or work-posture change")
359
+ .addHelpText("after", "\nUse inherit to clear this seat's explicit selection. Current native processes, history, rules and hooks remain unchanged. A later lifecycle action needs its own authorization.")
360
+ .action(async (seat, opts) => {
361
+ await runLifecycleVerb("set-permissions", seat, { mode: opts.mode, reason: opts.reason }, opts, data => {
362
+ const selection = data["to"];
363
+ console.log(`Permission mode: ${selection?.mode ?? "inherit"}${data["changed"] === false ? " (unchanged)" : " (audited)"}`);
364
+ console.log(String(data["effect"]));
365
+ });
366
+ });
288
367
  cmd
289
368
  .command("set-model")
290
369
  .argument("<seat>", "Canonical session name or logical seat ref")