@openrig/cli 0.6.12 → 0.6.13

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 (432) hide show
  1. package/README.md +19 -12
  2. package/daemon/assets/plugins/openrig-core/.claude-plugin/plugin.json +1 -1
  3. package/daemon/assets/plugins/openrig-core/.codex-plugin/plugin.json +1 -1
  4. package/daemon/assets/plugins/openrig-core/README.md +9 -2
  5. package/daemon/assets/plugins/openrig-core/hooks/scripts/activity-relay.cjs +25 -9
  6. package/daemon/assets/plugins/openrig-core/hooks/scripts/refocus.cjs +7 -4
  7. package/daemon/assets/plugins/openrig-core/skills/mission-slice-sop/SKILL.md +5 -0
  8. package/daemon/assets/plugins/openrig-core/skills/refocusing/scripts/trace-to-root.py +61 -16
  9. package/daemon/assets/skills/rigs/SKILL.md +8 -4
  10. package/daemon/context-packs/help/manifest.yaml +1 -1
  11. package/daemon/context-packs/onboarding-width/manifest.yaml +1 -1
  12. package/daemon/context-packs/onboarding-width/public-what-you-can-do.md +60 -12
  13. package/daemon/context-packs/reference/getting-started.md +44 -14
  14. package/daemon/context-packs/reference/manifest.yaml +1 -1
  15. package/daemon/context-packs/reference/rig-spec.md +5 -5
  16. package/daemon/context-packs/reference/whats-new.md +90 -163
  17. package/daemon/context-packs/skills/agent-operated-software/manifest.yaml +1 -1
  18. package/daemon/context-packs/skills/agent-operated-workflows/manifest.yaml +1 -1
  19. package/daemon/context-packs/skills/applying-a-permission-policy/manifest.yaml +1 -1
  20. package/daemon/context-packs/skills/claude-compaction-restore/manifest.yaml +1 -1
  21. package/daemon/context-packs/skills/core/agent-starters/manifest.yaml +1 -1
  22. package/daemon/context-packs/skills/core/agent-startup-and-context-ingestion/manifest.yaml +1 -1
  23. package/daemon/context-packs/skills/core/cross-host-rig-commands/manifest.yaml +1 -1
  24. package/daemon/context-packs/skills/core/human-in-the-loop/manifest.yaml +1 -1
  25. package/daemon/context-packs/skills/core/messaging-the-human/manifest.yaml +1 -1
  26. package/daemon/context-packs/skills/core/openrig-architect/manifest.yaml +1 -1
  27. package/daemon/context-packs/skills/core/openrig-cmux/manifest.yaml +1 -1
  28. package/daemon/context-packs/skills/core/openrig-herdr/manifest.yaml +1 -1
  29. package/daemon/context-packs/skills/core/openrig-skills/manifest.yaml +1 -1
  30. package/daemon/context-packs/skills/core/openrig-software-factory/manifest.yaml +1 -1
  31. package/daemon/context-packs/skills/core/openrig-upgrade/manifest.yaml +1 -1
  32. package/daemon/context-packs/skills/core/rig-bundles-and-shareable-artifacts/manifest.yaml +1 -1
  33. package/daemon/context-packs/skills/core/rig-lifecycle/manifest.yaml +1 -1
  34. package/daemon/context-packs/skills/core/session-source-fork/manifest.yaml +1 -1
  35. package/daemon/context-packs/skills/core/specification-system/manifest.yaml +1 -1
  36. package/daemon/context-packs/skills/core/topology-mutation-and-seat-management/manifest.yaml +1 -1
  37. package/daemon/context-packs/skills/core/watchdog/manifest.yaml +1 -1
  38. package/daemon/context-packs/skills/delegating-work/manifest.yaml +1 -1
  39. package/daemon/context-packs/skills/forming-an-openrig-mental-model/manifest.yaml +1 -1
  40. package/daemon/context-packs/skills/loading-addressable-markdown/manifest.yaml +1 -1
  41. package/daemon/context-packs/skills/mission-slice-sop/SKILL.md +5 -0
  42. package/daemon/context-packs/skills/mission-slice-sop/manifest.yaml +1 -1
  43. package/daemon/context-packs/skills/openrig-operating-model/manifest.yaml +1 -1
  44. package/daemon/context-packs/skills/openrig-user/manifest.yaml +1 -1
  45. package/daemon/context-packs/skills/orienting-to-an-inherited-seat/manifest.yaml +1 -1
  46. package/daemon/context-packs/skills/pm/backlog-capture/manifest.yaml +1 -1
  47. package/daemon/context-packs/skills/pm/context-builder/manifest.yaml +1 -1
  48. package/daemon/context-packs/skills/pm/exec-summary/manifest.yaml +1 -1
  49. package/daemon/context-packs/skills/pm/office-hours/manifest.yaml +1 -1
  50. package/daemon/context-packs/skills/pm/plan-review/manifest.yaml +1 -1
  51. package/daemon/context-packs/skills/pm/requirements-writer/manifest.yaml +1 -1
  52. package/daemon/context-packs/skills/pm/ui-mockup/manifest.yaml +1 -1
  53. package/daemon/context-packs/skills/pods/development-team/manifest.yaml +1 -1
  54. package/daemon/context-packs/skills/pods/orchestration-team/manifest.yaml +1 -1
  55. package/daemon/context-packs/skills/pods/oversight-team/manifest.yaml +1 -1
  56. package/daemon/context-packs/skills/pods/review-team/manifest.yaml +1 -1
  57. package/daemon/context-packs/skills/process/agent-browser/manifest.yaml +1 -1
  58. package/daemon/context-packs/skills/process/context-engineering/manifest.yaml +1 -1
  59. package/daemon/context-packs/skills/process/dogfood/manifest.yaml +1 -1
  60. package/daemon/context-packs/skills/process/frontend-design/manifest.yaml +1 -1
  61. package/daemon/context-packs/skills/process/systematic-debugging/manifest.yaml +1 -1
  62. package/daemon/context-packs/skills/process/test-driven-development/manifest.yaml +1 -1
  63. package/daemon/context-packs/skills/process/verification-before-completion/manifest.yaml +1 -1
  64. package/daemon/context-packs/skills/queue-handoff/manifest.yaml +1 -1
  65. package/daemon/context-packs/skills/refocusing/manifest.yaml +1 -1
  66. package/daemon/context-packs/skills/refocusing/scripts/trace-to-root.py +61 -16
  67. package/daemon/context-packs/skills/retiring-and-inheriting-a-seat/manifest.yaml +1 -1
  68. package/daemon/context-packs/skills/seat-continuity-and-handover/manifest.yaml +1 -1
  69. package/daemon/context-packs/skills/session-compaction-and-restore/manifest.yaml +1 -1
  70. package/daemon/context-packs/skills/software-for-agents/manifest.yaml +1 -1
  71. package/daemon/context-packs/world-example/manifest.yaml +1 -1
  72. package/daemon/context-packs/world-public/manifest.yaml +1 -1
  73. package/daemon/dist/adapters/claude-code-adapter.d.ts +9 -1
  74. package/daemon/dist/adapters/claude-code-adapter.d.ts.map +1 -1
  75. package/daemon/dist/adapters/claude-code-adapter.js +110 -52
  76. package/daemon/dist/adapters/claude-code-adapter.js.map +1 -1
  77. package/daemon/dist/adapters/codex-runtime-adapter.d.ts.map +1 -1
  78. package/daemon/dist/adapters/codex-runtime-adapter.js +47 -6
  79. package/daemon/dist/adapters/codex-runtime-adapter.js.map +1 -1
  80. package/daemon/dist/adapters/pi-resume.d.ts +1 -1
  81. package/daemon/dist/adapters/pi-resume.d.ts.map +1 -1
  82. package/daemon/dist/adapters/pi-resume.js +4 -1
  83. package/daemon/dist/adapters/pi-resume.js.map +1 -1
  84. package/daemon/dist/adapters/pi-runner-protocol.d.ts +9 -0
  85. package/daemon/dist/adapters/pi-runner-protocol.d.ts.map +1 -1
  86. package/daemon/dist/adapters/pi-runner-protocol.js +16 -0
  87. package/daemon/dist/adapters/pi-runner-protocol.js.map +1 -1
  88. package/daemon/dist/adapters/pi-runner.d.ts +5 -2
  89. package/daemon/dist/adapters/pi-runner.d.ts.map +1 -1
  90. package/daemon/dist/adapters/pi-runner.js +72 -15
  91. package/daemon/dist/adapters/pi-runner.js.map +1 -1
  92. package/daemon/dist/adapters/pi-runtime-adapter.d.ts.map +1 -1
  93. package/daemon/dist/adapters/pi-runtime-adapter.js +2 -0
  94. package/daemon/dist/adapters/pi-runtime-adapter.js.map +1 -1
  95. package/daemon/dist/adapters/stub-compaction.d.ts +1 -0
  96. package/daemon/dist/adapters/stub-compaction.d.ts.map +1 -1
  97. package/daemon/dist/adapters/stub-compaction.js +2 -0
  98. package/daemon/dist/adapters/stub-compaction.js.map +1 -1
  99. package/daemon/dist/adapters/stub-refocus.d.ts +6 -0
  100. package/daemon/dist/adapters/stub-refocus.d.ts.map +1 -0
  101. package/daemon/dist/adapters/stub-refocus.js +22 -0
  102. package/daemon/dist/adapters/stub-refocus.js.map +1 -0
  103. package/daemon/dist/adapters/stub-runner.d.ts +6 -0
  104. package/daemon/dist/adapters/stub-runner.d.ts.map +1 -1
  105. package/daemon/dist/adapters/stub-runner.js +18 -1
  106. package/daemon/dist/adapters/stub-runner.js.map +1 -1
  107. package/daemon/dist/adapters/stub-script.d.ts +2 -2
  108. package/daemon/dist/adapters/stub-script.d.ts.map +1 -1
  109. package/daemon/dist/adapters/stub-script.js +2 -2
  110. package/daemon/dist/adapters/stub-script.js.map +1 -1
  111. package/daemon/dist/build-info.js +3 -3
  112. package/daemon/dist/db/all-migrations.d.ts.map +1 -1
  113. package/daemon/dist/db/all-migrations.js +2 -0
  114. package/daemon/dist/db/all-migrations.js.map +1 -1
  115. package/daemon/dist/db/migrations/117_provider_account_readings.d.ts +3 -0
  116. package/daemon/dist/db/migrations/117_provider_account_readings.d.ts.map +1 -0
  117. package/daemon/dist/db/migrations/117_provider_account_readings.js +32 -0
  118. package/daemon/dist/db/migrations/117_provider_account_readings.js.map +1 -0
  119. package/daemon/dist/domain/claude-activity-hooks.d.ts +6 -0
  120. package/daemon/dist/domain/claude-activity-hooks.d.ts.map +1 -1
  121. package/daemon/dist/domain/claude-activity-hooks.js +19 -1
  122. package/daemon/dist/domain/claude-activity-hooks.js.map +1 -1
  123. package/daemon/dist/domain/claude-core-plugin-env.d.ts +2 -0
  124. package/daemon/dist/domain/claude-core-plugin-env.d.ts.map +1 -1
  125. package/daemon/dist/domain/claude-core-plugin-env.js +6 -2
  126. package/daemon/dist/domain/claude-core-plugin-env.js.map +1 -1
  127. package/daemon/dist/domain/claude-managed-launch.d.ts +5 -0
  128. package/daemon/dist/domain/claude-managed-launch.d.ts.map +1 -1
  129. package/daemon/dist/domain/claude-managed-launch.js +48 -7
  130. package/daemon/dist/domain/claude-managed-launch.js.map +1 -1
  131. package/daemon/dist/domain/claude-mcp-menu.d.ts +5 -0
  132. package/daemon/dist/domain/claude-mcp-menu.d.ts.map +1 -0
  133. package/daemon/dist/domain/claude-mcp-menu.js +25 -0
  134. package/daemon/dist/domain/claude-mcp-menu.js.map +1 -0
  135. package/daemon/dist/domain/fresh-occupant-relation.d.ts +7 -0
  136. package/daemon/dist/domain/fresh-occupant-relation.d.ts.map +1 -1
  137. package/daemon/dist/domain/fresh-occupant-relation.js +44 -0
  138. package/daemon/dist/domain/fresh-occupant-relation.js.map +1 -1
  139. package/daemon/dist/domain/gateway/slack/channel-recovery.d.ts +14 -2
  140. package/daemon/dist/domain/gateway/slack/channel-recovery.d.ts.map +1 -1
  141. package/daemon/dist/domain/gateway/slack/channel-recovery.js +128 -89
  142. package/daemon/dist/domain/gateway/slack/channel-recovery.js.map +1 -1
  143. package/daemon/dist/domain/gateway/slack/inbound.d.ts +4 -0
  144. package/daemon/dist/domain/gateway/slack/inbound.d.ts.map +1 -1
  145. package/daemon/dist/domain/gateway/slack/inbound.js +5 -3
  146. package/daemon/dist/domain/gateway/slack/inbound.js.map +1 -1
  147. package/daemon/dist/domain/gateway/slack/recovery-budget.d.ts +24 -0
  148. package/daemon/dist/domain/gateway/slack/recovery-budget.d.ts.map +1 -0
  149. package/daemon/dist/domain/gateway/slack/recovery-budget.js +18 -0
  150. package/daemon/dist/domain/gateway/slack/recovery-budget.js.map +1 -0
  151. package/daemon/dist/domain/gateway/slack/slack-recovery.d.ts +104 -0
  152. package/daemon/dist/domain/gateway/slack/slack-recovery.d.ts.map +1 -0
  153. package/daemon/dist/domain/gateway/slack/slack-recovery.js +236 -0
  154. package/daemon/dist/domain/gateway/slack/slack-recovery.js.map +1 -0
  155. package/daemon/dist/domain/gateway/slack/slack-subsystem.d.ts.map +1 -1
  156. package/daemon/dist/domain/gateway/slack/slack-subsystem.js +29 -6
  157. package/daemon/dist/domain/gateway/slack/slack-subsystem.js.map +1 -1
  158. package/daemon/dist/domain/gateway/slack/state-store.d.ts +34 -0
  159. package/daemon/dist/domain/gateway/slack/state-store.d.ts.map +1 -1
  160. package/daemon/dist/domain/gateway/slack/state-store.js +67 -0
  161. package/daemon/dist/domain/gateway/slack/state-store.js.map +1 -1
  162. package/daemon/dist/domain/gateway/slack/thread-recovery.d.ts +37 -0
  163. package/daemon/dist/domain/gateway/slack/thread-recovery.d.ts.map +1 -0
  164. package/daemon/dist/domain/gateway/slack/thread-recovery.js +173 -0
  165. package/daemon/dist/domain/gateway/slack/thread-recovery.js.map +1 -0
  166. package/daemon/dist/domain/gateway/slack/thread-seat-map.d.ts +8 -0
  167. package/daemon/dist/domain/gateway/slack/thread-seat-map.d.ts.map +1 -1
  168. package/daemon/dist/domain/gateway/slack/thread-seat-map.js +11 -0
  169. package/daemon/dist/domain/gateway/slack/thread-seat-map.js.map +1 -1
  170. package/daemon/dist/domain/model-divergence/current-generation-record.d.ts +6 -1
  171. package/daemon/dist/domain/model-divergence/current-generation-record.d.ts.map +1 -1
  172. package/daemon/dist/domain/model-divergence/current-generation-record.js +4 -1
  173. package/daemon/dist/domain/model-divergence/current-generation-record.js.map +1 -1
  174. package/daemon/dist/domain/model-divergence/current-model-reader.d.ts +74 -0
  175. package/daemon/dist/domain/model-divergence/current-model-reader.d.ts.map +1 -0
  176. package/daemon/dist/domain/model-divergence/current-model-reader.js +246 -0
  177. package/daemon/dist/domain/model-divergence/current-model-reader.js.map +1 -0
  178. package/daemon/dist/domain/model-divergence/effective-model-readers.d.ts +18 -0
  179. package/daemon/dist/domain/model-divergence/effective-model-readers.d.ts.map +1 -1
  180. package/daemon/dist/domain/model-divergence/effective-model-readers.js +24 -8
  181. package/daemon/dist/domain/model-divergence/effective-model-readers.js.map +1 -1
  182. package/daemon/dist/domain/native-process-lineage.d.ts +8 -1
  183. package/daemon/dist/domain/native-process-lineage.d.ts.map +1 -1
  184. package/daemon/dist/domain/native-process-lineage.js +40 -26
  185. package/daemon/dist/domain/native-process-lineage.js.map +1 -1
  186. package/daemon/dist/domain/native-resume-probe.d.ts.map +1 -1
  187. package/daemon/dist/domain/native-resume-probe.js +34 -8
  188. package/daemon/dist/domain/native-resume-probe.js.map +1 -1
  189. package/daemon/dist/domain/node-inventory.d.ts +1 -1
  190. package/daemon/dist/domain/node-inventory.d.ts.map +1 -1
  191. package/daemon/dist/domain/node-inventory.js +84 -18
  192. package/daemon/dist/domain/node-inventory.js.map +1 -1
  193. package/daemon/dist/domain/process-census.d.ts +1 -1
  194. package/daemon/dist/domain/process-census.d.ts.map +1 -1
  195. package/daemon/dist/domain/process-table.d.ts +26 -0
  196. package/daemon/dist/domain/process-table.d.ts.map +1 -0
  197. package/daemon/dist/domain/process-table.js +185 -0
  198. package/daemon/dist/domain/process-table.js.map +1 -0
  199. package/daemon/dist/domain/profile-resolver.d.ts +8 -0
  200. package/daemon/dist/domain/profile-resolver.d.ts.map +1 -1
  201. package/daemon/dist/domain/profile-resolver.js +11 -0
  202. package/daemon/dist/domain/profile-resolver.js.map +1 -1
  203. package/daemon/dist/domain/projection-planner.js +1 -1
  204. package/daemon/dist/domain/projection-planner.js.map +1 -1
  205. package/daemon/dist/domain/provider/claude-usage-windows.d.ts +3 -1
  206. package/daemon/dist/domain/provider/claude-usage-windows.d.ts.map +1 -1
  207. package/daemon/dist/domain/provider/claude-usage-windows.js +48 -3
  208. package/daemon/dist/domain/provider/claude-usage-windows.js.map +1 -1
  209. package/daemon/dist/domain/provider/codex-usage-reader.d.ts +4 -1
  210. package/daemon/dist/domain/provider/codex-usage-reader.d.ts.map +1 -1
  211. package/daemon/dist/domain/provider/codex-usage-reader.js +3 -0
  212. package/daemon/dist/domain/provider/codex-usage-reader.js.map +1 -1
  213. package/daemon/dist/domain/provider/codex-usage-windows.d.ts +3 -1
  214. package/daemon/dist/domain/provider/codex-usage-windows.d.ts.map +1 -1
  215. package/daemon/dist/domain/provider/codex-usage-windows.js +1 -0
  216. package/daemon/dist/domain/provider/codex-usage-windows.js.map +1 -1
  217. package/daemon/dist/domain/provider/provider-account-readings.d.ts +42 -0
  218. package/daemon/dist/domain/provider/provider-account-readings.d.ts.map +1 -0
  219. package/daemon/dist/domain/provider/provider-account-readings.js +132 -0
  220. package/daemon/dist/domain/provider/provider-account-readings.js.map +1 -0
  221. package/daemon/dist/domain/provider/provider-types.d.ts +29 -0
  222. package/daemon/dist/domain/provider/provider-types.d.ts.map +1 -1
  223. package/daemon/dist/domain/provider/usage-across-hosts.d.ts.map +1 -1
  224. package/daemon/dist/domain/provider/usage-across-hosts.js +6 -0
  225. package/daemon/dist/domain/provider/usage-across-hosts.js.map +1 -1
  226. package/daemon/dist/domain/provider/usage-windows.d.ts +25 -0
  227. package/daemon/dist/domain/provider/usage-windows.d.ts.map +1 -1
  228. package/daemon/dist/domain/provider/usage-windows.js +100 -4
  229. package/daemon/dist/domain/provider/usage-windows.js.map +1 -1
  230. package/daemon/dist/domain/queue-repository.d.ts +23 -0
  231. package/daemon/dist/domain/queue-repository.d.ts.map +1 -1
  232. package/daemon/dist/domain/queue-repository.js +59 -1
  233. package/daemon/dist/domain/queue-repository.js.map +1 -1
  234. package/daemon/dist/domain/queue-stuck-sweep.d.ts.map +1 -1
  235. package/daemon/dist/domain/queue-stuck-sweep.js +47 -4
  236. package/daemon/dist/domain/queue-stuck-sweep.js.map +1 -1
  237. package/daemon/dist/domain/restore-check-service.d.ts +10 -0
  238. package/daemon/dist/domain/restore-check-service.d.ts.map +1 -1
  239. package/daemon/dist/domain/restore-check-service.js +73 -10
  240. package/daemon/dist/domain/restore-check-service.js.map +1 -1
  241. package/daemon/dist/domain/restore-guidance.d.ts +6 -0
  242. package/daemon/dist/domain/restore-guidance.d.ts.map +1 -1
  243. package/daemon/dist/domain/restore-guidance.js +21 -5
  244. package/daemon/dist/domain/restore-guidance.js.map +1 -1
  245. package/daemon/dist/domain/restore-orchestrator.js +1 -1
  246. package/daemon/dist/domain/restore-orchestrator.js.map +1 -1
  247. package/daemon/dist/domain/resume-metadata-refresher.d.ts.map +1 -1
  248. package/daemon/dist/domain/resume-metadata-refresher.js +6 -29
  249. package/daemon/dist/domain/resume-metadata-refresher.js.map +1 -1
  250. package/daemon/dist/domain/rig-repository.d.ts +3 -0
  251. package/daemon/dist/domain/rig-repository.d.ts.map +1 -1
  252. package/daemon/dist/domain/rig-repository.js +6 -0
  253. package/daemon/dist/domain/rig-repository.js.map +1 -1
  254. package/daemon/dist/domain/rigspec-instantiator.d.ts.map +1 -1
  255. package/daemon/dist/domain/rigspec-instantiator.js +4 -2
  256. package/daemon/dist/domain/rigspec-instantiator.js.map +1 -1
  257. package/daemon/dist/domain/rigspec-preflight.d.ts +4 -0
  258. package/daemon/dist/domain/rigspec-preflight.d.ts.map +1 -1
  259. package/daemon/dist/domain/rigspec-preflight.js +12 -2
  260. package/daemon/dist/domain/rigspec-preflight.js.map +1 -1
  261. package/daemon/dist/domain/rigspec-schema.d.ts.map +1 -1
  262. package/daemon/dist/domain/rigspec-schema.js +11 -0
  263. package/daemon/dist/domain/rigspec-schema.js.map +1 -1
  264. package/daemon/dist/domain/runtime-adapter.d.ts +13 -0
  265. package/daemon/dist/domain/runtime-adapter.d.ts.map +1 -1
  266. package/daemon/dist/domain/runtime-adapter.js.map +1 -1
  267. package/daemon/dist/domain/seat-attention-reconciler.d.ts.map +1 -1
  268. package/daemon/dist/domain/seat-attention-reconciler.js +15 -1
  269. package/daemon/dist/domain/seat-attention-reconciler.js.map +1 -1
  270. package/daemon/dist/domain/seat-cwd-preparation.d.ts +22 -0
  271. package/daemon/dist/domain/seat-cwd-preparation.d.ts.map +1 -0
  272. package/daemon/dist/domain/seat-cwd-preparation.js +107 -0
  273. package/daemon/dist/domain/seat-cwd-preparation.js.map +1 -0
  274. package/daemon/dist/domain/seat-effort.d.ts +4 -3
  275. package/daemon/dist/domain/seat-effort.d.ts.map +1 -1
  276. package/daemon/dist/domain/seat-effort.js +21 -3
  277. package/daemon/dist/domain/seat-effort.js.map +1 -1
  278. package/daemon/dist/domain/seat-lifecycle-service.d.ts +36 -2
  279. package/daemon/dist/domain/seat-lifecycle-service.d.ts.map +1 -1
  280. package/daemon/dist/domain/seat-lifecycle-service.js +206 -15
  281. package/daemon/dist/domain/seat-lifecycle-service.js.map +1 -1
  282. package/daemon/dist/domain/seat-restart-in-place.d.ts +14 -0
  283. package/daemon/dist/domain/seat-restart-in-place.d.ts.map +1 -1
  284. package/daemon/dist/domain/seat-restart-in-place.js +59 -3
  285. package/daemon/dist/domain/seat-restart-in-place.js.map +1 -1
  286. package/daemon/dist/domain/seat-status-service.d.ts +2 -0
  287. package/daemon/dist/domain/seat-status-service.d.ts.map +1 -1
  288. package/daemon/dist/domain/seat-status-service.js +1 -0
  289. package/daemon/dist/domain/seat-status-service.js.map +1 -1
  290. package/daemon/dist/domain/seat-structural-activity-service.d.ts +7 -1
  291. package/daemon/dist/domain/seat-structural-activity-service.d.ts.map +1 -1
  292. package/daemon/dist/domain/seat-structural-activity-service.js +9 -3
  293. package/daemon/dist/domain/seat-structural-activity-service.js.map +1 -1
  294. package/daemon/dist/domain/session-name.d.ts +8 -0
  295. package/daemon/dist/domain/session-name.d.ts.map +1 -1
  296. package/daemon/dist/domain/session-name.js +12 -0
  297. package/daemon/dist/domain/session-name.js.map +1 -1
  298. package/daemon/dist/domain/session-transport.d.ts +78 -3
  299. package/daemon/dist/domain/session-transport.d.ts.map +1 -1
  300. package/daemon/dist/domain/session-transport.js +306 -15
  301. package/daemon/dist/domain/session-transport.js.map +1 -1
  302. package/daemon/dist/domain/successor-session-launcher.js +1 -1
  303. package/daemon/dist/domain/successor-session-launcher.js.map +1 -1
  304. package/daemon/dist/domain/types.d.ts +14 -0
  305. package/daemon/dist/domain/types.d.ts.map +1 -1
  306. package/daemon/dist/domain/types.js.map +1 -1
  307. package/daemon/dist/domain/watchdog-delivery.d.ts +29 -0
  308. package/daemon/dist/domain/watchdog-delivery.d.ts.map +1 -0
  309. package/daemon/dist/domain/watchdog-delivery.js +113 -0
  310. package/daemon/dist/domain/watchdog-delivery.js.map +1 -0
  311. package/daemon/dist/domain/watchdog-policy-engine.d.ts +60 -1
  312. package/daemon/dist/domain/watchdog-policy-engine.d.ts.map +1 -1
  313. package/daemon/dist/domain/watchdog-policy-engine.js +154 -28
  314. package/daemon/dist/domain/watchdog-policy-engine.js.map +1 -1
  315. package/daemon/dist/domain/watchdog-scheduler.d.ts.map +1 -1
  316. package/daemon/dist/domain/watchdog-scheduler.js +6 -1
  317. package/daemon/dist/domain/watchdog-scheduler.js.map +1 -1
  318. package/daemon/dist/domain/workflow-instance-store.d.ts.map +1 -1
  319. package/daemon/dist/domain/workflow-instance-store.js +6 -2
  320. package/daemon/dist/domain/workflow-instance-store.js.map +1 -1
  321. package/daemon/dist/routes/attention.d.ts.map +1 -1
  322. package/daemon/dist/routes/attention.js +41 -1
  323. package/daemon/dist/routes/attention.js.map +1 -1
  324. package/daemon/dist/routes/compaction.js +1 -1
  325. package/daemon/dist/routes/compaction.js.map +1 -1
  326. package/daemon/dist/routes/queue.d.ts.map +1 -1
  327. package/daemon/dist/routes/queue.js +3 -1
  328. package/daemon/dist/routes/queue.js.map +1 -1
  329. package/daemon/dist/routes/restore-check.d.ts.map +1 -1
  330. package/daemon/dist/routes/restore-check.js +19 -1
  331. package/daemon/dist/routes/restore-check.js.map +1 -1
  332. package/daemon/dist/routes/seat.d.ts.map +1 -1
  333. package/daemon/dist/routes/seat.js +15 -2
  334. package/daemon/dist/routes/seat.js.map +1 -1
  335. package/daemon/dist/routes/sessions.d.ts.map +1 -1
  336. package/daemon/dist/routes/sessions.js +7 -1
  337. package/daemon/dist/routes/sessions.js.map +1 -1
  338. package/daemon/dist/routes/transport.d.ts.map +1 -1
  339. package/daemon/dist/routes/transport.js +13 -2
  340. package/daemon/dist/routes/transport.js.map +1 -1
  341. package/daemon/dist/server.d.ts +1 -0
  342. package/daemon/dist/server.d.ts.map +1 -1
  343. package/daemon/dist/server.js +1 -0
  344. package/daemon/dist/server.js.map +1 -1
  345. package/daemon/dist/startup.d.ts.map +1 -1
  346. package/daemon/dist/startup.js +39 -113
  347. package/daemon/dist/startup.js.map +1 -1
  348. package/daemon/docs/reference/agent-spec.md +1 -1
  349. package/daemon/docs/reference/agent-startup-guide.md +84 -0
  350. package/daemon/docs/reference/getting-started.md +44 -14
  351. package/daemon/docs/reference/publishing-a-rig-bundle.md +5 -2
  352. package/daemon/docs/reference/refocus-channel.md +11 -1
  353. package/daemon/docs/reference/rig-spec.md +5 -5
  354. package/daemon/docs/reference/rosters.md +29 -2
  355. package/daemon/docs/reference/slack-app-setup.md +47 -17
  356. package/daemon/docs/reference/whats-new.md +90 -163
  357. package/daemon/specs/agents/apps/vault-specialist/agent.yaml +1 -0
  358. package/daemon/specs/agents/conveyor/builder/agent.yaml +1 -0
  359. package/daemon/specs/agents/conveyor/lead/agent.yaml +1 -0
  360. package/daemon/specs/agents/conveyor/planner/agent.yaml +1 -0
  361. package/daemon/specs/agents/conveyor/reviewer/agent.yaml +1 -0
  362. package/daemon/specs/agents/design/product-designer/agent.yaml +1 -0
  363. package/daemon/specs/agents/development/implementer/agent.yaml +1 -0
  364. package/daemon/specs/agents/development/qa/agent.yaml +1 -0
  365. package/daemon/specs/agents/factory-rsi/dogfood/agent.yaml +1 -0
  366. package/daemon/specs/agents/factory-rsi/release-manager/agent.yaml +1 -0
  367. package/daemon/specs/agents/orchestration/orchestrator/agent.yaml +1 -0
  368. package/daemon/specs/agents/product-management/pm/agent.yaml +1 -0
  369. package/daemon/specs/agents/research/analyst/agent.yaml +1 -0
  370. package/daemon/specs/agents/research/synthesizer/agent.yaml +1 -0
  371. package/daemon/specs/agents/review/independent-reviewer/agent.yaml +1 -0
  372. package/dist/build-info.js +3 -3
  373. package/dist/commands/capture.d.ts.map +1 -1
  374. package/dist/commands/capture.js +14 -0
  375. package/dist/commands/capture.js.map +1 -1
  376. package/dist/commands/config.d.ts.map +1 -1
  377. package/dist/commands/config.js +3 -2
  378. package/dist/commands/config.js.map +1 -1
  379. package/dist/commands/doctor.d.ts.map +1 -1
  380. package/dist/commands/doctor.js +8 -7
  381. package/dist/commands/doctor.js.map +1 -1
  382. package/dist/commands/grow.d.ts.map +1 -1
  383. package/dist/commands/grow.js +24 -7
  384. package/dist/commands/grow.js.map +1 -1
  385. package/dist/commands/provider.d.ts.map +1 -1
  386. package/dist/commands/provider.js +43 -7
  387. package/dist/commands/provider.js.map +1 -1
  388. package/dist/commands/ps.d.ts +2 -0
  389. package/dist/commands/ps.d.ts.map +1 -1
  390. package/dist/commands/ps.js +12 -1
  391. package/dist/commands/ps.js.map +1 -1
  392. package/dist/commands/remove.d.ts.map +1 -1
  393. package/dist/commands/remove.js +20 -1
  394. package/dist/commands/remove.js.map +1 -1
  395. package/dist/commands/roster.d.ts +2 -1
  396. package/dist/commands/roster.d.ts.map +1 -1
  397. package/dist/commands/roster.js +10 -5
  398. package/dist/commands/roster.js.map +1 -1
  399. package/dist/commands/scope.js +1 -1
  400. package/dist/commands/scope.js.map +1 -1
  401. package/dist/commands/seat.d.ts.map +1 -1
  402. package/dist/commands/seat.js +75 -8
  403. package/dist/commands/seat.js.map +1 -1
  404. package/dist/commands/slack.d.ts.map +1 -1
  405. package/dist/commands/slack.js +14 -1
  406. package/dist/commands/slack.js.map +1 -1
  407. package/dist/commands/usage.d.ts.map +1 -1
  408. package/dist/commands/usage.js +4 -3
  409. package/dist/commands/usage.js.map +1 -1
  410. package/dist/lib/model-observation.d.ts +13 -0
  411. package/dist/lib/model-observation.d.ts.map +1 -0
  412. package/dist/lib/model-observation.js +25 -0
  413. package/dist/lib/model-observation.js.map +1 -0
  414. package/dist/mcp-server.d.ts.map +1 -1
  415. package/dist/mcp-server.js +1 -0
  416. package/dist/mcp-server.js.map +1 -1
  417. package/package.json +1 -1
  418. package/tui/dist/attention/attention-model.js +6 -5
  419. package/tui/dist/attention/attention-model.js.map +1 -1
  420. package/tui/dist/attention/source-continuity.d.ts.map +1 -1
  421. package/tui/dist/attention/source-continuity.js +2 -0
  422. package/tui/dist/attention/source-continuity.js.map +1 -1
  423. package/tui/dist/terminals/open-window.d.ts +11 -1
  424. package/tui/dist/terminals/open-window.d.ts.map +1 -1
  425. package/tui/dist/terminals/open-window.js +47 -2
  426. package/tui/dist/terminals/open-window.js.map +1 -1
  427. package/tui/dist/usage/usage-model.d.ts +2 -0
  428. package/tui/dist/usage/usage-model.d.ts.map +1 -1
  429. package/tui/dist/usage/usage-model.js +38 -3
  430. package/tui/dist/usage/usage-model.js.map +1 -1
  431. package/ui/dist/assets/{index-Cfbtfd9G.js → index-CVgod3Pm.js} +1 -1
  432. package/ui/dist/index.html +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"session-transport.d.ts","sourceRoot":"","sources":["../../src/domain/session-transport.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session-transport.d.ts","sourceRoot":"","sources":["../../src/domain/session-transport.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { currentClaudeMcpMenu } from "./claude-mcp-menu.js";
1
2
  import stringWidth from "string-width";
2
3
  import { CODEX_TURN_STATUS_PATTERN } from "./codex-pane-patterns.js";
3
4
  import { randomUUID } from "node:crypto";
@@ -8,6 +9,7 @@ import { OutboxHandler } from "./outbox-handler.js";
8
9
  import { DraftAwareDelivery } from "./draft-aware-delivery.js";
9
10
  import { claudeResumeRotation } from "./session-registry.js";
10
11
  import { latestHookPermissionPending, latestHookWaitsOnPerson } from "./agent-activity-store.js";
12
+ import { DeliveryGuardError } from "./seat-delivery-guard.js";
11
13
  import { wrapPaneEnvelope, appendDeliveredSegment } from "../lib/pane-envelope.js";
12
14
  import { SeatIdentityStore } from "./seat-identity-store.js";
13
15
  import { isShellForeground } from "./shell-classifier.js";
@@ -490,14 +492,17 @@ export function classifyPaneActivity(paneContent, options = {}) {
490
492
  : null;
491
493
  const claudeComposer = findClaudeComposer(paneContent, options);
492
494
  const oldQuestionEnd = promptScanLines.lastIndexOf(CLAUDE_QUESTION_FOOTER);
495
+ const permissionPromptEvidence = findPatternEvidence(promptScanLines, PERMISSION_PROMPT_PATTERNS);
493
496
  // A complete later empty composer with a recognized Claude bar makes the preceding question history.
494
497
  // Keep draft handling and selectors without this dialog boundary unchanged.
495
498
  const selectionLines = claudeComposer?.framed &&
496
499
  CLAUDE_ANCHORED_MODE_FOOTER.test(claudeComposer.bar) &&
497
500
  IDLE_PROMPT_PATTERNS.some(pattern => pattern.test(claudeComposer.text)) &&
498
501
  oldQuestionEnd >= 0 && oldQuestionEnd < promptScanLines.length - 1
499
- ? promptScanLines.slice(oldQuestionEnd + 1) : promptScanLines;
500
- const selectionPromptEvidence = findCurrentClaudeQuestion(paneContent) ??
502
+ ? promptScanLines.slice(oldQuestionEnd + 1)
503
+ : options.runtime === "codex" && !permissionPromptEvidence
504
+ ? codexCurrentSelectionLines(paneContent) ?? promptScanLines : promptScanLines;
505
+ const selectionPromptEvidence = currentClaudeMcpMenu(paneContent) ?? findCurrentClaudeQuestion(paneContent) ??
501
506
  findPatternEvidence(selectionLines, [COMPOSER_SELECTION_SCAN_PATTERN]);
502
507
  if (selectionPromptEvidence) {
503
508
  return {
@@ -509,7 +514,6 @@ export function classifyPaneActivity(paneContent, options = {}) {
509
514
  // OPR.0.4.1.10 (FR-1c): a permission/confirmation question is attention even when its selector is
510
515
  // not in view — checked before the idle short-circuits so a permission block above an idle-looking
511
516
  // footer never reads as idle (which would let a default send land on it).
512
- const permissionPromptEvidence = findPatternEvidence(promptScanLines, PERMISSION_PROMPT_PATTERNS);
513
517
  if (permissionPromptEvidence) {
514
518
  return {
515
519
  state: "attention",
@@ -1173,6 +1177,21 @@ function codexTurnStatusAt(box) {
1173
1177
  return i;
1174
1178
  return -1;
1175
1179
  }
1180
+ /** Codex 0.160.0's parent bottom-pane renderer replaces the normal composer for a modal; inline choices and
1181
+ * previews follow the running status. Only scope generic selector history at this adjacent normal-frame slot.
1182
+ * A draft, queued input, different visible version, missing footer or intervening content keeps the full scan.
1183
+ * Source: openai/codex a956835d, tui/src/bottom_pane/mod.rs:2164-2310. Permission detectors keep their own scan. */
1184
+ function codexCurrentSelectionLines(pane) {
1185
+ if (readInputBox(pane, "codex", "") !== "empty")
1186
+ return null;
1187
+ const box = codexInputBox(pane);
1188
+ let status = box.inputAt - 1;
1189
+ while (status >= 0 && !box.lines[status].trim())
1190
+ status--;
1191
+ if (status < 0 || !CODEX_TURN_STATUS_PATTERN.test(box.lines[status]))
1192
+ return null;
1193
+ return trimPaneLines(box.lines.slice(status).join("\n"));
1194
+ }
1176
1195
  /** Whether a Claude Code frame shows a running turn: `esc to interrupt` in the footer under its input box, or a
1177
1196
  * live status row above the box (timer-less rows included): in the two rows above the box's opening rule, where
1178
1197
  * Claude Code 2.1.296 draws its status row over a one-row margin whatever the box's height, or as
@@ -1468,6 +1487,15 @@ export function readInputBox(pane, runtime, text, beforeEnter) {
1468
1487
  // composerRegion's body has every space removed (the startup guard's matcher, unchanged); identity reads the rows.
1469
1488
  return boxHoldsText(stripBoxGlyph(pane.split("\n").slice(markerLine - 1, closingRuleLine - 1)), text);
1470
1489
  }
1490
+ const CALLER_CANCELLED = "caller_cancelled";
1491
+ /** The caller's cancellation signal, or none for sends no caller owns (queue wakes, committed outbox deliveries). */
1492
+ function callerSignal(opts) {
1493
+ return opts?.queueWake || opts?.committedOutboxIds ? undefined : opts?.signal;
1494
+ }
1495
+ function callerCancelled(sessionName) {
1496
+ return { ok: false, sessionName, sent: false, inputPhase: "not_reached", reason: CALLER_CANCELLED,
1497
+ error: `The request was cancelled before any input started. Nothing was typed into '${sessionName}', and nothing will be.` };
1498
+ }
1471
1499
  /** The evidence of a verified send whose path does not read the input box (an audited prompt answer). */
1472
1500
  const INPUT_BOX_UNCHECKED = { seat: "unchecked", before: "unchecked", after: "unchecked", sameProcess: false };
1473
1501
  export class SessionTransport {
@@ -1802,6 +1830,9 @@ export class SessionTransport {
1802
1830
  async send(sessionName, text, opts) {
1803
1831
  const guard = this.tmuxAdapter.deliveryGuard;
1804
1832
  if (!guard) {
1833
+ // No guard, so no recorded delivery to read back: a caller already gone ends the send here.
1834
+ if (callerSignal(opts)?.aborted)
1835
+ return callerCancelled(sessionName);
1805
1836
  const result = await this.sendUnguarded(sessionName, text, opts);
1806
1837
  if (result.ok && result.sent !== false) {
1807
1838
  await this.reconcileStartupReadiness(sessionName).catch(() => { });
@@ -1839,6 +1870,10 @@ export class SessionTransport {
1839
1870
  return retainedResult();
1840
1871
  }
1841
1872
  }
1873
+ // A recorded delivery has answered with its own outcome above; with nothing recorded, a caller already gone
1874
+ // ends the send here.
1875
+ if (callerSignal(opts)?.aborted)
1876
+ return callerCancelled(sessionName);
1842
1877
  // #1084 — the idle wait must not occupy the seat's serial lease: a long
1843
1878
  // --wait-for-idle inside guard.operation holds up other sends and queue
1844
1879
  // creates to this seat for the whole wait. The lease-free wait, main's
@@ -1878,7 +1913,14 @@ export class SessionTransport {
1878
1913
  }
1879
1914
  const result = await guard.operation(sessionName, async () => {
1880
1915
  if (this.guardedDelivery && !sendOpts?.submitOnly && guard.needsInputCheck(sessionName)) {
1881
- return this.guardedDelivery.send(sessionName, text, sendOpts ?? {}, ids);
1916
+ // Up to its durable record a draft-aware send is still the caller's: one that went away while this send
1917
+ // waited for the lease ends here, unless a record for this delivery already exists. DraftAwareDelivery.send
1918
+ // commits that record synchronously before its first await, so no cancellation lands between this check
1919
+ // and the commit; after the commit a caller going away doesn't cancel it.
1920
+ if (callerSignal(sendOpts)?.aborted && !this.guardedDelivery.existing(sessionName, text, sendOpts ?? {}, ids)) {
1921
+ return callerCancelled(sessionName);
1922
+ }
1923
+ return this.guardedDelivery.send(sessionName, text, { ...sendOpts, signal: undefined }, ids);
1882
1924
  }
1883
1925
  const prior = this.guardedDelivery?.existing(sessionName, text, sendOpts ?? {}, ids);
1884
1926
  return prior ?? this.sendUnguarded(sessionName, text, sendOpts);
@@ -1888,6 +1930,9 @@ export class SessionTransport {
1888
1930
  return prior;
1889
1931
  if (opts?.submitOnly)
1890
1932
  return { ok: false, sessionName, sent: false, reason: "typing_guard_enabled", error: "Typing guard prevents submit-only; no Enter was sent." };
1933
+ // Nothing is retained yet: a caller that went away while this send waited for the lease ends it here.
1934
+ if (callerSignal(opts)?.aborted)
1935
+ return callerCancelled(sessionName);
1891
1936
  this.db.transaction(() => {
1892
1937
  for (const id of ids) {
1893
1938
  const prior = opts?.committedOutboxIds ? outbox.getById(id) : null;
@@ -2050,6 +2095,7 @@ export class SessionTransport {
2050
2095
  timeoutMs,
2051
2096
  binding: { sessionName, nodeId: meta.nodeId, occupant: meta.occupant, pane: meta.pane },
2052
2097
  readinessFromPaneOnly: opts.readinessFromPaneOnly === true,
2098
+ signal: callerSignal(opts), cancelledBy: "caller",
2053
2099
  });
2054
2100
  if (!preWait.ok) {
2055
2101
  return { ok: false, failure: {
@@ -2261,13 +2307,33 @@ export class SessionTransport {
2261
2307
  };
2262
2308
  }
2263
2309
  this.tmuxAdapter.deliveryGuard?.expectStagedInput(sessionName, expected);
2310
+ // This Enter is the request's first input, so a caller that has gone ends it here, before any key, as for a paste.
2311
+ const cancel = callerSignal(opts);
2312
+ if (cancel?.aborted)
2313
+ return callerCancelled(sessionName);
2264
2314
  const targetFailure = await checkClaudeTarget();
2265
2315
  if (targetFailure)
2266
2316
  return targetFailure;
2267
2317
  const copyModeFailure = await leavePaneMode("Nothing was submitted.");
2268
2318
  if (copyModeFailure)
2269
2319
  return copyModeFailure;
2270
- const submitResult = await this.runStage("session_transport.submit", () => this.tmuxAdapter.sendKeys(sessionName, ["Enter"]), (result) => result.ok ? "ok" : "failed");
2320
+ if (cancel?.aborted)
2321
+ return callerCancelled(sessionName);
2322
+ // The last check runs in the adapter, immediately before the key (after its guard checks).
2323
+ const beforeKey = cancel ? () => { if (cancel.aborted)
2324
+ throw new DeliveryGuardError(CALLER_CANCELLED, "caller cancelled before the key"); } : undefined;
2325
+ let submitResult;
2326
+ try {
2327
+ submitResult = await this.runStage("session_transport.submit", () => beforeKey ? this.tmuxAdapter.sendKeys(sessionName, ["Enter"], beforeKey) : this.tmuxAdapter.sendKeys(sessionName, ["Enter"]), (result) => result.ok ? "ok" : "failed");
2328
+ }
2329
+ catch (error) {
2330
+ // Unguarded, the adapter's pre-key check throws instead of returning a result; no key was sent.
2331
+ if (error instanceof DeliveryGuardError && error.code === CALLER_CANCELLED && cancel?.aborted)
2332
+ return callerCancelled(sessionName);
2333
+ throw error;
2334
+ }
2335
+ if (!submitResult.ok && submitResult.code === CALLER_CANCELLED && cancel?.aborted)
2336
+ return callerCancelled(sessionName);
2271
2337
  if (!submitResult.ok) {
2272
2338
  return { ok: false, sessionName, reason: "submit_failed", outcome: "failed", error: `submitOnly: Enter did not land on '${sessionName}': ${submitResult.message}` };
2273
2339
  }
@@ -2288,6 +2354,7 @@ export class SessionTransport {
2288
2354
  timeoutMs: waitForIdleMs,
2289
2355
  binding: observed?.binding,
2290
2356
  readinessFromPaneOnly: opts?.readinessFromPaneOnly === true,
2357
+ signal: callerSignal(opts), cancelledBy: "caller",
2291
2358
  });
2292
2359
  waitEvidence = {
2293
2360
  activity: waitResult.activity,
@@ -2346,6 +2413,7 @@ export class SessionTransport {
2346
2413
  timeoutLabelMs: waitForIdleMs,
2347
2414
  binding: observed?.binding,
2348
2415
  readinessFromPaneOnly: opts.readinessFromPaneOnly === true,
2416
+ signal: callerSignal(opts), cancelledBy: "caller",
2349
2417
  });
2350
2418
  waitEvidence = {
2351
2419
  activity: rewait.activity,
@@ -2513,6 +2581,9 @@ export class SessionTransport {
2513
2581
  if (opts?.stampISO) {
2514
2582
  text = appendDeliveredSegment(text, this.now().getTime() - Date.parse(opts.stampISO));
2515
2583
  }
2584
+ // A caller that went away while this send waited: nothing has been written, so nothing ever is.
2585
+ if (callerSignal(opts)?.aborted)
2586
+ return observe({ ...callerCancelled(sessionName), ...(waitMode ? waitEvidence : {}) });
2516
2587
  // Recheck the selected recipient after readiness/capture awaits, at the input boundary.
2517
2588
  const targetFailure = await checkClaudeTarget();
2518
2589
  if (targetFailure)
@@ -2523,6 +2594,13 @@ export class SessionTransport {
2523
2594
  // 3. Deliver ordinary messages as paste, audited prompt answers as key input.
2524
2595
  if (observed)
2525
2596
  observed.sentHash = hashSentText(text);
2597
+ // The caller's cancellation is checked once more at the adapter's last step before the paste (after its buffer
2598
+ // setup). A refusal there is proven pre-input and returns caller_cancelled; Enter below never checks it.
2599
+ const cancel = callerSignal(opts);
2600
+ if (cancel?.aborted)
2601
+ return observe({ ...callerCancelled(sessionName), ...(waitMode ? waitEvidence : {}) });
2602
+ const beforePaste = cancel ? () => { opts?.beforeWrite?.(); if (cancel.aborted)
2603
+ throw new DeliveryGuardError(CALLER_CANCELLED, "caller cancelled before the paste"); } : opts?.beforeWrite;
2526
2604
  // Set once the text write has been handed to the adapter: from then on a throw is not "nothing sent".
2527
2605
  let writeIssued = false;
2528
2606
  const tagIssued = (error) => {
@@ -2534,9 +2612,12 @@ export class SessionTransport {
2534
2612
  opts?.beforeWrite?.();
2535
2613
  writeIssued = true;
2536
2614
  if (promptOverride)
2537
- return this.tmuxAdapter.sendText(sessionName, text, opts?.beforeWrite, { bracketed: false });
2538
- return opts?.beforeWrite ? this.tmuxAdapter.sendText(sessionName, text, opts.beforeWrite) : this.tmuxAdapter.sendText(sessionName, text);
2615
+ return this.tmuxAdapter.sendText(sessionName, text, beforePaste, { bracketed: false });
2616
+ return beforePaste ? this.tmuxAdapter.sendText(sessionName, text, beforePaste) : this.tmuxAdapter.sendText(sessionName, text);
2539
2617
  }, (result) => result.ok ? "ok" : "failed").catch(tagIssued);
2618
+ if (!textResult.ok && textResult.code === CALLER_CANCELLED && cancel?.aborted) {
2619
+ return observe({ ...callerCancelled(sessionName), ...(waitMode ? waitEvidence : {}) });
2620
+ }
2540
2621
  if (!textResult.ok) {
2541
2622
  // A draft refusal is the guard holding the write before any input; it is not an attempted write.
2542
2623
  const policyRefusal = typeof textResult.code === "string" && textResult.code.startsWith("draft_");
@@ -2741,12 +2822,15 @@ export class SessionTransport {
2741
2822
  activity, waitedMs: input.timeoutMs, attempts,
2742
2823
  };
2743
2824
  };
2825
+ const cancelReason = input.cancelledBy === "caller" ? CALLER_CANCELLED : "preparation_cancelled";
2744
2826
  const cancelled = () => ({
2745
2827
  ok: false,
2746
- reason: "preparation_cancelled",
2747
- error: "Managed preparation ended; no compact authorized.",
2828
+ reason: cancelReason,
2829
+ error: input.cancelledBy === "caller"
2830
+ ? "The request was cancelled while it waited for the seat to be idle. No text was sent, and none will be."
2831
+ : "Managed preparation ended; no compact authorized.",
2748
2832
  activity: last ?? {
2749
- state: "unknown", reason: "preparation_cancelled", evidenceSource: "pane_heuristic",
2833
+ state: "unknown", reason: cancelReason, evidenceSource: "pane_heuristic",
2750
2834
  sampledAt: this.now().toISOString(), evidence: null,
2751
2835
  },
2752
2836
  waitedMs: Math.max(0, Math.min(input.timeoutMs, input.timeoutMs - (deadline - Date.now()))),
@@ -2758,7 +2842,9 @@ export class SessionTransport {
2758
2842
  if (attempts > 0 && Date.now() > deadline)
2759
2843
  return expire();
2760
2844
  attempts++;
2761
- const activity = await this.observeReadinessWithin(input, deadline - Date.now());
2845
+ // A caller's cancellation also ends a pending observation (the abandoned read is ignored, never delivered on).
2846
+ // Managed preparation's wait keeps its own behaviour: it doesn't race the read against its signal.
2847
+ const activity = await this.observeReadinessWithin(input, deadline - Date.now(), input.cancelledBy === "caller" ? input.signal : undefined);
2762
2848
  if (input.signal?.aborted)
2763
2849
  return cancelled();
2764
2850
  if (activity === null || Date.now() > deadline)
@@ -2784,21 +2870,28 @@ export class SessionTransport {
2784
2870
  await this.sleep(Math.min(this.waitForIdlePollMs, remainingMs));
2785
2871
  }
2786
2872
  }
2787
- /** One readiness observation, raced against the time left before the wait's deadline. Null
2788
- * when the deadline wins; the abandoned observation is ignored, never delivered on. */
2789
- async observeReadinessWithin(input, remainingMs) {
2873
+ /** One readiness observation, raced against the time left before the wait's deadline and, when given, the
2874
+ * caller's cancellation. Null when the deadline or the cancellation wins; the abandoned observation is ignored,
2875
+ * never delivered on. */
2876
+ async observeReadinessWithin(input, remainingMs, cancel) {
2877
+ if (cancel?.aborted)
2878
+ return null;
2790
2879
  const observation = this.classifySendReadiness(input);
2791
2880
  observation.catch(() => undefined);
2792
2881
  let timer;
2882
+ let onAbort;
2793
2883
  try {
2794
2884
  return await Promise.race([
2795
2885
  observation,
2796
2886
  new Promise((resolve) => { timer = setTimeout(() => resolve(null), Math.max(0, remainingMs)); }),
2887
+ ...(cancel ? [new Promise((resolve) => { onAbort = () => resolve(null); cancel.addEventListener("abort", onAbort, { once: true }); })] : []),
2797
2888
  ]);
2798
2889
  }
2799
2890
  finally {
2800
2891
  if (timer !== undefined)
2801
2892
  clearTimeout(timer);
2893
+ if (cancel && onAbort)
2894
+ cancel.removeEventListener("abort", onAbort);
2802
2895
  }
2803
2896
  }
2804
2897
  async claudeDeliveryObservation(sessionName, pane, resumeToken, rotation = null) {
@@ -3098,6 +3191,9 @@ export class SessionTransport {
3098
3191
  return { ok: false, reason: "audit_persist_failed" };
3099
3192
  }
3100
3193
  }
3194
+ /** `inputBox`: also describe a Claude Code or Codex seat's live input box (three more tmux reads), for callers that
3195
+ * use it: the capture route asks when its request does (`rig capture`, the MCP tool). `inputBoxBudget` is the time
3196
+ * those reads may still take, shared across a fan-out; a single capture gets its own CAPTURE_INPUT_BOX_DEADLINE_MS. */
3101
3197
  async capture(sessionName, opts) {
3102
3198
  const sessionMeta = this.getSessionMeta(sessionName);
3103
3199
  if (sessionMeta.attachmentType === "external_cli") {
@@ -3151,7 +3247,47 @@ export class SessionTransport {
3151
3247
  };
3152
3248
  }
3153
3249
  await this.reconcileStartupReadiness(sessionName).catch(() => { });
3154
- return { ok: true, sessionName, content, lines };
3250
+ const runtime = sessionMeta.runtime;
3251
+ const inputBox = opts?.inputBox && (runtime === "claude-code" || runtime === "codex")
3252
+ ? await this.captureInputBox(sessionName, runtime, opts.inputBoxBudget ?? { remainingMs: CAPTURE_INPUT_BOX_DEADLINE_MS })
3253
+ : undefined;
3254
+ return { ok: true, sessionName, content, lines, ...(inputBox ? { inputBox } : {}) };
3255
+ }
3256
+ /** The input box, or unknown when its reads don't finish within the budget's remaining time (or none is left): the
3257
+ * pane text is already in hand, so a slow read never holds the capture. The time spent comes off the budget. A read
3258
+ * still pending then settles on its own, unused. */
3259
+ async captureInputBox(sessionName, runtime, budget) {
3260
+ if (budget.remainingMs <= 0)
3261
+ return annotateInputBox(null, null, runtime, { budgetSpent: true });
3262
+ const started = this.now().getTime();
3263
+ let timer;
3264
+ const late = new Promise((resolve) => {
3265
+ timer = setTimeout(() => resolve(annotateInputBox(null, null, runtime, { timedOut: true })), budget.remainingMs);
3266
+ });
3267
+ try {
3268
+ return await Promise.race([this.readInputBoxAnnotation(sessionName, runtime), late]);
3269
+ }
3270
+ finally {
3271
+ clearTimeout(timer);
3272
+ budget.remainingMs -= this.now().getTime() - started;
3273
+ }
3274
+ }
3275
+ /** One styled read of the visible screen with the cursor read before and after it: a cursor that moved, or a pane
3276
+ * that resized, in between is reported as moved; when only one read succeeds, its reading is passed on as seen once.
3277
+ * Never throws. */
3278
+ async readInputBoxAnnotation(sessionName, runtime) {
3279
+ try {
3280
+ const before = await this.tmuxAdapter.getPaneCursorPosition(sessionName);
3281
+ const screen = await this.tmuxAdapter.capturePaneContent(sessionName, 0, { escapeSequences: true });
3282
+ const after = await this.tmuxAdapter.getPaneCursorPosition(sessionName);
3283
+ const steady = before && after && before.x === after.x && before.y === after.y
3284
+ && before.width === after.width && before.height === after.height ? after : null;
3285
+ const cursorSeenOnce = (before === null) !== (after === null) ? before ?? after : null;
3286
+ return annotateInputBox(screen, steady, runtime, { cursorMoved: before !== null && after !== null && steady === null, cursorSeenOnce });
3287
+ }
3288
+ catch {
3289
+ return annotateInputBox(null, null, runtime);
3290
+ }
3155
3291
  }
3156
3292
  async broadcast(target, text, opts) {
3157
3293
  const resolved = await this.resolveSessions(target);
@@ -3340,4 +3476,159 @@ export class SessionTransport {
3340
3476
  return false;
3341
3477
  }
3342
3478
  }
3479
+ const INPUT_CONTINUATION_COLUMN = 2; // Claude Code and Codex indent an input's later rows by two cells
3480
+ // How long a capture's input-box reads may take in all before the box reports unknown: one seat's three reads, or a
3481
+ // whole fan-out's (the send path's INPUT_BOX_READ_DEADLINE_MS bounds one read each).
3482
+ export const CAPTURE_INPUT_BOX_DEADLINE_MS = 1_000;
3483
+ // Claude Code's input frame rule, as findClaudeComposer and the composer-boundary reader match it (a label may sit in it).
3484
+ const CLAUDE_FRAME_RULE = /^─{3,}(?: .+ ─+)?$/;
3485
+ /** The input box's rows on the screen: Claude Code's prompt row inside its frame (the opening rule directly above it,
3486
+ * through the row before the closing rule), or Codex's box as codexInputBox reads it. A committed prompt row in the
3487
+ * transcript, or a prompt-looking line in output, has no opening rule above it. Null when no input box is recognized
3488
+ * (a selector, a menu instead of a box, busy output with no box, another layout). */
3489
+ function inputBoxRows(lines, runtime) {
3490
+ if (runtime === "codex") {
3491
+ const box = codexInputBox(lines.join("\n"));
3492
+ if (!box)
3493
+ return null;
3494
+ return { first: box.inputAt, last: box.inputAt + Math.max(box.rows.length, 1) - 1, empty: box.text === "" };
3495
+ }
3496
+ const promptClass = composerPromptClassForRuntime("claude-code");
3497
+ const first = findComposerInputLineIndex(lines, promptClass);
3498
+ if (first < 1 || composerNumberedChoicePattern(promptClass).test(lines[first].trimStart()))
3499
+ return null;
3500
+ // A rule at the prompt's own indent: an input's later rows are indented, so a rule typed inside it never closes it.
3501
+ const indent = /^[ \t]*/.exec(lines[first])[0];
3502
+ const frame = (line) => line.startsWith(indent) && CLAUDE_FRAME_RULE.test(line.slice(indent.length).trimEnd());
3503
+ if (!frame(lines[first - 1]))
3504
+ return null;
3505
+ let close = first + 1;
3506
+ while (close < lines.length && !frame(lines[close]))
3507
+ close++;
3508
+ return close < lines.length ? { first, last: close - 1 } : null;
3509
+ }
3510
+ export function annotateInputBox(styledScreen, cursor, runtime, opts = {}) {
3511
+ const harness = runtime === "codex" ? "Codex" : "Claude Code";
3512
+ const result = (status, confidence, hint, input = null, suggestion = null, evidence = []) => ({ status, confidence, cursor, input, suggestion, evidence, hint });
3513
+ const budget = `${CAPTURE_INPUT_BOX_DEADLINE_MS / 1000} s`;
3514
+ if (opts.timedOut) {
3515
+ return result("unknown", "unknown", `The input box's reads didn't finish within this capture's ${budget} budget, so it wasn't checked.`, null, null, ["input box reads timed out"]);
3516
+ }
3517
+ if (opts.budgetSpent) {
3518
+ return result("unknown", "unknown", `The input box wasn't read: this capture's ${budget} budget for input-box reads was spent on earlier seats.`, null, null, ["input box budget spent"]);
3519
+ }
3520
+ if (!styledScreen?.trim())
3521
+ return result("unknown", "unknown", "The screen couldn't be read, so the input box wasn't checked.");
3522
+ const cells = styledLines(styledScreen);
3523
+ const lines = cells.map((row) => row.map((cell) => cell.ch).join(""));
3524
+ const box = inputBoxRows(lines, runtime);
3525
+ if (!box)
3526
+ return result("no-input-box", "unknown", `No ${harness} input box was recognized on the screen.`);
3527
+ // Each box row's text cells with their screen columns. The first row's text starts after the prompt glyph and its
3528
+ // space, a later row's after its two-cell indent.
3529
+ const rows = [];
3530
+ for (let row = box.first; row <= box.last; row++) {
3531
+ let col = 0;
3532
+ const placed = (cells[row] ?? []).map((cell) => { const at = col; col += stringWidth(cell.ch); return { ...cell, col: at }; });
3533
+ const glyphAt = row === box.first ? placed.findIndex((cell) => cell.ch === "❯" || cell.ch === "›") : -1;
3534
+ const startCol = row === box.first ? (glyphAt >= 0 ? placed[glyphAt].col + 2 : INPUT_CONTINUATION_COLUMN) : INPUT_CONTINUATION_COLUMN;
3535
+ let text = placed.filter((cell) => cell.col >= startCol);
3536
+ while (text.length && !text[text.length - 1].ch.trim())
3537
+ text = text.slice(0, -1);
3538
+ rows.push({ row, cells: text });
3539
+ }
3540
+ const startCol = rows[0].cells[0]?.col ?? (lines[box.first].search(/[❯›]/) + 2);
3541
+ const spanOf = (from, to) => ({
3542
+ startRow: from.row, startCol: from.col, endRow: to.row, endCol: to.col,
3543
+ text: rows.filter((r) => r.row >= from.row && r.row <= to.row)
3544
+ .map((r) => r.cells.filter((cell) => (r.row > from.row || cell.col >= from.col) && (r.row < to.row || cell.col < to.col)).map((cell) => cell.ch).join(""))
3545
+ .join("\n"),
3546
+ });
3547
+ const textRows = rows.filter((r) => r.cells.length > 0);
3548
+ const outsideBox = (at) => at.y < box.first || at.y > box.last;
3549
+ // A cursor seen outside the box by the one read that worked still contradicts the box being the live one.
3550
+ const seenOutside = cursor === null && !opts.cursorMoved && opts.cursorSeenOnce != null && outsideBox(opts.cursorSeenOnce);
3551
+ const seenOutsideEvidence = "cursor outside the input box (the other cursor read failed)";
3552
+ if (box.empty || textRows.length === 0) {
3553
+ // Only a steady cursor in the box shows it's the live one: an empty frame drawn in output has the cursor below it, a
3554
+ // moved cursor means the box may have changed, and a missing cursor shows nothing either way.
3555
+ if (cursor !== null && !outsideBox(cursor))
3556
+ return result("empty", "high", "The input box is empty.", null, null, ["no text in the input box"]);
3557
+ if (cursor !== null || seenOutside) {
3558
+ return result("unknown", "unknown", `An empty ${harness} input box was recognized, but the cursor is outside it, so it may not be the live box.`, null, null, ["no text in the input box", cursor !== null ? "cursor outside the input box" : seenOutsideEvidence]);
3559
+ }
3560
+ if (opts.cursorMoved) {
3561
+ return result("unknown", "unknown", `The ${harness} input box read empty, but the cursor moved during the capture, so it may have changed.`, null, null, ["no text in the input box", "cursor moved during the capture"]);
3562
+ }
3563
+ return result("unknown", "unknown", `An empty ${harness} input box was recognized, but the cursor couldn't be read, so it may not be the live box.`, null, null, ["no text in the input box", "cursor unavailable"]);
3564
+ }
3565
+ const lastRow = textRows[textRows.length - 1];
3566
+ const lastCell = lastRow.cells[lastRow.cells.length - 1];
3567
+ const end = { row: lastRow.row, col: lastCell.col + stringWidth(lastCell.ch) };
3568
+ const input = spanOf({ row: box.first, col: startCol }, end);
3569
+ const quote = (text) => {
3570
+ const flat = text.replace(/\s*\n\s*/g, " ").trim();
3571
+ return `"${flat.length > 60 ? `${flat.slice(0, 57)}...` : flat}"`;
3572
+ };
3573
+ const styled = /\x1b\[/.test(styledScreen);
3574
+ const textCells = rows.flatMap((r) => r.cells.filter((cell) => cell.ch.trim()).map((cell) => ({ ...cell, row: r.row })));
3575
+ const allFaint = styled && textCells.every((cell) => cell.faint);
3576
+ const noneFaint = styled && textCells.every((cell) => !cell.faint);
3577
+ // Claude Code's `Try "…"` words are a person's possible words too, so they count only where there's no styling to go
3578
+ // on, and at most as a possible (medium) suggestion. With styling, the faint text decides.
3579
+ const tryShape = runtime === "claude-code" && CLAUDE_TRY_SUGGESTION.test(input.text.replace(/\s+/g, ""));
3580
+ const trySuggestion = tryShape && !styled;
3581
+ const evidence = [];
3582
+ if (tryShape)
3583
+ evidence.push("Claude Code's Try \"...\" words");
3584
+ evidence.push(!styled ? "no styling in the capture" : allFaint ? "text drawn faint" : noneFaint ? "text not faint" : "part of the text drawn faint");
3585
+ const inBox = cursor !== null && cursor.y >= box.first && cursor.y <= box.last;
3586
+ const atStart = inBox && cursor.y === box.first && cursor.x === startCol;
3587
+ const atEnd = inBox && cursor.y === end.row && cursor.x === end.col;
3588
+ if (cursor === null)
3589
+ evidence.unshift(opts.cursorMoved ? "cursor moved during the capture" : seenOutside ? seenOutsideEvidence : "cursor unavailable");
3590
+ else
3591
+ evidence.unshift(!inBox ? "cursor outside the input box" : atStart ? "cursor at the input's start" : atEnd ? "cursor after the text" : "cursor inside the text");
3592
+ const why = evidence.join("; ");
3593
+ const likelySuggestion = (confidence) => result("likely-suggestion", confidence, confidence === "high"
3594
+ ? `The input box shows ${quote(input.text)}, likely a ${harness} suggestion (${why}), not something the person typed: it isn't their intent, a draft or a staged command.`
3595
+ : `The input box shows ${quote(input.text)}, possibly a ${harness} suggestion (${why}; medium confidence): don't take it as the person's intent, and don't assume it isn't their draft.`, input, input, evidence);
3596
+ const typed = (confidence) => result("typed", confidence, `The input box holds ${quote(input.text)}, likely typed by the person and not yet sent (${why}).`, input, null, evidence);
3597
+ const unknown = () => result("unknown", "unknown", `The input box shows ${quote(input.text)}; whether the person typed it or it's a ${harness} suggestion is unknown (${why}).`, input, null, evidence);
3598
+ // A moved cursor or one seen outside the box contradicts any reading; only an unavailable cursor leaves the styling or
3599
+ // the Try words to go on, at medium confidence.
3600
+ if (cursor === null || !inBox) {
3601
+ if (cursor === null && !opts.cursorMoved && !seenOutside && (allFaint || trySuggestion))
3602
+ return likelySuggestion("medium");
3603
+ return unknown();
3604
+ }
3605
+ if (atStart) {
3606
+ if (allFaint)
3607
+ return likelySuggestion("high");
3608
+ if (!styled)
3609
+ return likelySuggestion("medium");
3610
+ // Claude Code draws its suggestion faint (Codex draws its placeholder faint too); unfaint text with the cursor at its
3611
+ // start may be a draft the person moved the cursor back through, in either harness.
3612
+ return unknown();
3613
+ }
3614
+ if (atEnd) {
3615
+ if (noneFaint)
3616
+ return typed("high");
3617
+ if (!styled)
3618
+ return typed("medium");
3619
+ return unknown();
3620
+ }
3621
+ // The cursor is inside the text: the person moved it, or typed a prefix and the harness suggests the rest after it.
3622
+ const split = textCells.findIndex((cell) => cell.row > cursor.y || (cell.row === cursor.y && cell.col >= cursor.x));
3623
+ const before = split < 0 ? textCells : textCells.slice(0, split);
3624
+ const after = split < 0 ? [] : textCells.slice(split);
3625
+ if (styled && before.length > 0 && after.length > 0 && before.every((cell) => !cell.faint) && after.every((cell) => cell.faint)) {
3626
+ const suggestion = spanOf({ row: cursor.y, col: cursor.x }, end);
3627
+ const typedPart = spanOf({ row: box.first, col: startCol }, { row: cursor.y, col: cursor.x });
3628
+ return result("typed-with-suggestion", "high", `The input box holds ${quote(typedPart.text)}, likely typed by the person, then ${quote(suggestion.text)}, likely a ${harness} suggestion after the cursor (${why}; the text after the cursor is faint): the suggestion isn't their intent.`, input, suggestion, [...evidence, "the text after the cursor is faint"]);
3629
+ }
3630
+ if (noneFaint)
3631
+ return typed("medium");
3632
+ return unknown();
3633
+ }
3343
3634
  //# sourceMappingURL=session-transport.js.map