@openrig/cli 0.1.12 → 0.2.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 (518) hide show
  1. package/daemon/assets/openrig-activity-hook-relay.cjs +104 -0
  2. package/daemon/dist/adapters/claude-code-adapter.d.ts +14 -6
  3. package/daemon/dist/adapters/claude-code-adapter.d.ts.map +1 -1
  4. package/daemon/dist/adapters/claude-code-adapter.js +183 -65
  5. package/daemon/dist/adapters/claude-code-adapter.js.map +1 -1
  6. package/daemon/dist/adapters/claude-resume.d.ts +5 -0
  7. package/daemon/dist/adapters/claude-resume.d.ts.map +1 -1
  8. package/daemon/dist/adapters/claude-resume.js +13 -0
  9. package/daemon/dist/adapters/claude-resume.js.map +1 -1
  10. package/daemon/dist/adapters/codex-resume.d.ts +8 -1
  11. package/daemon/dist/adapters/codex-resume.d.ts.map +1 -1
  12. package/daemon/dist/adapters/codex-resume.js +74 -5
  13. package/daemon/dist/adapters/codex-resume.js.map +1 -1
  14. package/daemon/dist/adapters/codex-runtime-adapter.d.ts +9 -5
  15. package/daemon/dist/adapters/codex-runtime-adapter.d.ts.map +1 -1
  16. package/daemon/dist/adapters/codex-runtime-adapter.js +255 -28
  17. package/daemon/dist/adapters/codex-runtime-adapter.js.map +1 -1
  18. package/daemon/dist/adapters/terminal-adapter.d.ts +2 -1
  19. package/daemon/dist/adapters/terminal-adapter.d.ts.map +1 -1
  20. package/daemon/dist/adapters/terminal-adapter.js +7 -1
  21. package/daemon/dist/adapters/terminal-adapter.js.map +1 -1
  22. package/daemon/dist/adapters/tmux.d.ts.map +1 -1
  23. package/daemon/dist/adapters/tmux.js +53 -5
  24. package/daemon/dist/adapters/tmux.js.map +1 -1
  25. package/daemon/dist/db/migrations/021_seat_handover_observability.d.ts +3 -0
  26. package/daemon/dist/db/migrations/021_seat_handover_observability.d.ts.map +1 -0
  27. package/daemon/dist/db/migrations/021_seat_handover_observability.js +11 -0
  28. package/daemon/dist/db/migrations/021_seat_handover_observability.js.map +1 -0
  29. package/daemon/dist/db/migrations/022_node_codex_config_profile.d.ts +3 -0
  30. package/daemon/dist/db/migrations/022_node_codex_config_profile.d.ts.map +1 -0
  31. package/daemon/dist/db/migrations/022_node_codex_config_profile.js +7 -0
  32. package/daemon/dist/db/migrations/022_node_codex_config_profile.js.map +1 -0
  33. package/daemon/dist/db/migrations/023_stream_items.d.ts +16 -0
  34. package/daemon/dist/db/migrations/023_stream_items.d.ts.map +1 -0
  35. package/daemon/dist/db/migrations/023_stream_items.js +37 -0
  36. package/daemon/dist/db/migrations/023_stream_items.js.map +1 -0
  37. package/daemon/dist/db/migrations/024_queue_items.d.ts +19 -0
  38. package/daemon/dist/db/migrations/024_queue_items.d.ts.map +1 -0
  39. package/daemon/dist/db/migrations/024_queue_items.js +52 -0
  40. package/daemon/dist/db/migrations/024_queue_items.js.map +1 -0
  41. package/daemon/dist/db/migrations/025_queue_transitions.d.ts +13 -0
  42. package/daemon/dist/db/migrations/025_queue_transitions.d.ts.map +1 -0
  43. package/daemon/dist/db/migrations/025_queue_transitions.js +28 -0
  44. package/daemon/dist/db/migrations/025_queue_transitions.js.map +1 -0
  45. package/daemon/dist/db/migrations/026_inbox_entries.d.ts +14 -0
  46. package/daemon/dist/db/migrations/026_inbox_entries.d.ts.map +1 -0
  47. package/daemon/dist/db/migrations/026_inbox_entries.js +35 -0
  48. package/daemon/dist/db/migrations/026_inbox_entries.js.map +1 -0
  49. package/daemon/dist/db/migrations/027_outbox_entries.d.ts +12 -0
  50. package/daemon/dist/db/migrations/027_outbox_entries.d.ts.map +1 -0
  51. package/daemon/dist/db/migrations/027_outbox_entries.js +30 -0
  52. package/daemon/dist/db/migrations/027_outbox_entries.js.map +1 -0
  53. package/daemon/dist/db/migrations/028_project_classifications.d.ts +26 -0
  54. package/daemon/dist/db/migrations/028_project_classifications.d.ts.map +1 -0
  55. package/daemon/dist/db/migrations/028_project_classifications.js +44 -0
  56. package/daemon/dist/db/migrations/028_project_classifications.js.map +1 -0
  57. package/daemon/dist/db/migrations/029_classifier_leases.d.ts +22 -0
  58. package/daemon/dist/db/migrations/029_classifier_leases.d.ts.map +1 -0
  59. package/daemon/dist/db/migrations/029_classifier_leases.js +41 -0
  60. package/daemon/dist/db/migrations/029_classifier_leases.js.map +1 -0
  61. package/daemon/dist/db/migrations/030_views_custom.d.ts +15 -0
  62. package/daemon/dist/db/migrations/030_views_custom.d.ts.map +1 -0
  63. package/daemon/dist/db/migrations/030_views_custom.js +27 -0
  64. package/daemon/dist/db/migrations/030_views_custom.js.map +1 -0
  65. package/daemon/dist/db/migrations/031_watchdog_jobs.d.ts +34 -0
  66. package/daemon/dist/db/migrations/031_watchdog_jobs.d.ts.map +1 -0
  67. package/daemon/dist/db/migrations/031_watchdog_jobs.js +59 -0
  68. package/daemon/dist/db/migrations/031_watchdog_jobs.js.map +1 -0
  69. package/daemon/dist/db/migrations/032_watchdog_history.d.ts +28 -0
  70. package/daemon/dist/db/migrations/032_watchdog_history.d.ts.map +1 -0
  71. package/daemon/dist/db/migrations/032_watchdog_history.js +46 -0
  72. package/daemon/dist/db/migrations/032_watchdog_history.js.map +1 -0
  73. package/daemon/dist/db/migrations/033_workflow_specs.d.ts +30 -0
  74. package/daemon/dist/db/migrations/033_workflow_specs.d.ts.map +1 -0
  75. package/daemon/dist/db/migrations/033_workflow_specs.js +50 -0
  76. package/daemon/dist/db/migrations/033_workflow_specs.js.map +1 -0
  77. package/daemon/dist/db/migrations/034_workflow_instances.d.ts +42 -0
  78. package/daemon/dist/db/migrations/034_workflow_instances.d.ts.map +1 -0
  79. package/daemon/dist/db/migrations/034_workflow_instances.js +63 -0
  80. package/daemon/dist/db/migrations/034_workflow_instances.js.map +1 -0
  81. package/daemon/dist/db/migrations/035_workflow_step_trails.d.ts +29 -0
  82. package/daemon/dist/db/migrations/035_workflow_step_trails.d.ts.map +1 -0
  83. package/daemon/dist/db/migrations/035_workflow_step_trails.js +48 -0
  84. package/daemon/dist/db/migrations/035_workflow_step_trails.js.map +1 -0
  85. package/daemon/dist/db/migrations/036_watchdog_policy_enum_extension.d.ts +35 -0
  86. package/daemon/dist/db/migrations/036_watchdog_policy_enum_extension.d.ts.map +1 -0
  87. package/daemon/dist/db/migrations/036_watchdog_policy_enum_extension.js +43 -0
  88. package/daemon/dist/db/migrations/036_watchdog_policy_enum_extension.js.map +1 -0
  89. package/daemon/dist/domain/agent-activity-store.d.ts +42 -0
  90. package/daemon/dist/domain/agent-activity-store.d.ts.map +1 -0
  91. package/daemon/dist/domain/agent-activity-store.js +177 -0
  92. package/daemon/dist/domain/agent-activity-store.js.map +1 -0
  93. package/daemon/dist/domain/agent-manifest.d.ts.map +1 -1
  94. package/daemon/dist/domain/agent-manifest.js +3 -0
  95. package/daemon/dist/domain/agent-manifest.js.map +1 -1
  96. package/daemon/dist/domain/agent-starter-resolver.d.ts +100 -0
  97. package/daemon/dist/domain/agent-starter-resolver.d.ts.map +1 -0
  98. package/daemon/dist/domain/agent-starter-resolver.js +200 -0
  99. package/daemon/dist/domain/agent-starter-resolver.js.map +1 -0
  100. package/daemon/dist/domain/classifier-lease-manager.d.ts +130 -0
  101. package/daemon/dist/domain/classifier-lease-manager.d.ts.map +1 -0
  102. package/daemon/dist/domain/classifier-lease-manager.js +285 -0
  103. package/daemon/dist/domain/classifier-lease-manager.js.map +1 -0
  104. package/daemon/dist/domain/context-usage-store.d.ts +1 -1
  105. package/daemon/dist/domain/context-usage-store.js +1 -1
  106. package/daemon/dist/domain/context-usage-store.js.map +1 -1
  107. package/daemon/dist/domain/hot-potato-enforcer.d.ts +45 -0
  108. package/daemon/dist/domain/hot-potato-enforcer.d.ts.map +1 -0
  109. package/daemon/dist/domain/hot-potato-enforcer.js +94 -0
  110. package/daemon/dist/domain/hot-potato-enforcer.js.map +1 -0
  111. package/daemon/dist/domain/inbox-handler.d.ts +68 -0
  112. package/daemon/dist/domain/inbox-handler.d.ts.map +1 -0
  113. package/daemon/dist/domain/inbox-handler.js +177 -0
  114. package/daemon/dist/domain/inbox-handler.js.map +1 -0
  115. package/daemon/dist/domain/native-resume-probe.d.ts +1 -1
  116. package/daemon/dist/domain/native-resume-probe.d.ts.map +1 -1
  117. package/daemon/dist/domain/native-resume-probe.js +67 -0
  118. package/daemon/dist/domain/native-resume-probe.js.map +1 -1
  119. package/daemon/dist/domain/node-inventory.d.ts +29 -1
  120. package/daemon/dist/domain/node-inventory.d.ts.map +1 -1
  121. package/daemon/dist/domain/node-inventory.js +160 -38
  122. package/daemon/dist/domain/node-inventory.js.map +1 -1
  123. package/daemon/dist/domain/node-launcher.d.ts +2 -0
  124. package/daemon/dist/domain/node-launcher.d.ts.map +1 -1
  125. package/daemon/dist/domain/node-launcher.js +14 -2
  126. package/daemon/dist/domain/node-launcher.js.map +1 -1
  127. package/daemon/dist/domain/outbox-handler.d.ts +48 -0
  128. package/daemon/dist/domain/outbox-handler.d.ts.map +1 -0
  129. package/daemon/dist/domain/outbox-handler.js +106 -0
  130. package/daemon/dist/domain/outbox-handler.js.map +1 -0
  131. package/daemon/dist/domain/policies/artifact-pool-helpers.d.ts +64 -0
  132. package/daemon/dist/domain/policies/artifact-pool-helpers.d.ts.map +1 -0
  133. package/daemon/dist/domain/policies/artifact-pool-helpers.js +226 -0
  134. package/daemon/dist/domain/policies/artifact-pool-helpers.js.map +1 -0
  135. package/daemon/dist/domain/policies/artifact-pool-ready.d.ts +3 -0
  136. package/daemon/dist/domain/policies/artifact-pool-ready.d.ts.map +1 -0
  137. package/daemon/dist/domain/policies/artifact-pool-ready.js +41 -0
  138. package/daemon/dist/domain/policies/artifact-pool-ready.js.map +1 -0
  139. package/daemon/dist/domain/policies/edge-artifact-required.d.ts +3 -0
  140. package/daemon/dist/domain/policies/edge-artifact-required.d.ts.map +1 -0
  141. package/daemon/dist/domain/policies/edge-artifact-required.js +90 -0
  142. package/daemon/dist/domain/policies/edge-artifact-required.js.map +1 -0
  143. package/daemon/dist/domain/policies/periodic-reminder.d.ts +3 -0
  144. package/daemon/dist/domain/policies/periodic-reminder.d.ts.map +1 -0
  145. package/daemon/dist/domain/policies/periodic-reminder.js +30 -0
  146. package/daemon/dist/domain/policies/periodic-reminder.js.map +1 -0
  147. package/daemon/dist/domain/policies/types.d.ts +51 -0
  148. package/daemon/dist/domain/policies/types.d.ts.map +1 -0
  149. package/daemon/dist/domain/policies/types.js +9 -0
  150. package/daemon/dist/domain/policies/types.js.map +1 -0
  151. package/daemon/dist/domain/policies/workflow-keepalive.d.ts +7 -0
  152. package/daemon/dist/domain/policies/workflow-keepalive.d.ts.map +1 -0
  153. package/daemon/dist/domain/policies/workflow-keepalive.js +123 -0
  154. package/daemon/dist/domain/policies/workflow-keepalive.js.map +1 -0
  155. package/daemon/dist/domain/project-classifier.d.ts +75 -0
  156. package/daemon/dist/domain/project-classifier.d.ts.map +1 -0
  157. package/daemon/dist/domain/project-classifier.js +132 -0
  158. package/daemon/dist/domain/project-classifier.js.map +1 -0
  159. package/daemon/dist/domain/projection-planner.d.ts +1 -0
  160. package/daemon/dist/domain/projection-planner.d.ts.map +1 -1
  161. package/daemon/dist/domain/projection-planner.js +3 -0
  162. package/daemon/dist/domain/projection-planner.js.map +1 -1
  163. package/daemon/dist/domain/ps-projection.d.ts +31 -0
  164. package/daemon/dist/domain/ps-projection.d.ts.map +1 -1
  165. package/daemon/dist/domain/ps-projection.js +38 -0
  166. package/daemon/dist/domain/ps-projection.js.map +1 -1
  167. package/daemon/dist/domain/queue-repository.d.ts +322 -0
  168. package/daemon/dist/domain/queue-repository.d.ts.map +1 -0
  169. package/daemon/dist/domain/queue-repository.js +686 -0
  170. package/daemon/dist/domain/queue-repository.js.map +1 -0
  171. package/daemon/dist/domain/queue-transition-log.d.ts +38 -0
  172. package/daemon/dist/domain/queue-transition-log.d.ts.map +1 -0
  173. package/daemon/dist/domain/queue-transition-log.js +52 -0
  174. package/daemon/dist/domain/queue-transition-log.js.map +1 -0
  175. package/daemon/dist/domain/restore-check-service.d.ts +203 -0
  176. package/daemon/dist/domain/restore-check-service.d.ts.map +1 -0
  177. package/daemon/dist/domain/restore-check-service.js +1047 -0
  178. package/daemon/dist/domain/restore-check-service.js.map +1 -0
  179. package/daemon/dist/domain/restore-orchestrator.d.ts +49 -3
  180. package/daemon/dist/domain/restore-orchestrator.d.ts.map +1 -1
  181. package/daemon/dist/domain/restore-orchestrator.js +460 -62
  182. package/daemon/dist/domain/restore-orchestrator.js.map +1 -1
  183. package/daemon/dist/domain/rig-expansion-service.d.ts.map +1 -1
  184. package/daemon/dist/domain/rig-expansion-service.js +13 -0
  185. package/daemon/dist/domain/rig-expansion-service.js.map +1 -1
  186. package/daemon/dist/domain/rig-repository.d.ts +17 -1
  187. package/daemon/dist/domain/rig-repository.d.ts.map +1 -1
  188. package/daemon/dist/domain/rig-repository.js +63 -5
  189. package/daemon/dist/domain/rig-repository.js.map +1 -1
  190. package/daemon/dist/domain/rigspec-codec.d.ts.map +1 -1
  191. package/daemon/dist/domain/rigspec-codec.js +13 -0
  192. package/daemon/dist/domain/rigspec-codec.js.map +1 -1
  193. package/daemon/dist/domain/rigspec-exporter.d.ts.map +1 -1
  194. package/daemon/dist/domain/rigspec-exporter.js +2 -0
  195. package/daemon/dist/domain/rigspec-exporter.js.map +1 -1
  196. package/daemon/dist/domain/rigspec-instantiator.d.ts.map +1 -1
  197. package/daemon/dist/domain/rigspec-instantiator.js +61 -1
  198. package/daemon/dist/domain/rigspec-instantiator.js.map +1 -1
  199. package/daemon/dist/domain/rigspec-schema.d.ts.map +1 -1
  200. package/daemon/dist/domain/rigspec-schema.js +196 -0
  201. package/daemon/dist/domain/rigspec-schema.js.map +1 -1
  202. package/daemon/dist/domain/runtime-adapter.d.ts +27 -2
  203. package/daemon/dist/domain/runtime-adapter.d.ts.map +1 -1
  204. package/daemon/dist/domain/runtime-adapter.js +5 -0
  205. package/daemon/dist/domain/runtime-adapter.js.map +1 -1
  206. package/daemon/dist/domain/seat-handover-planner.d.ts +84 -0
  207. package/daemon/dist/domain/seat-handover-planner.d.ts.map +1 -0
  208. package/daemon/dist/domain/seat-handover-planner.js +188 -0
  209. package/daemon/dist/domain/seat-handover-planner.js.map +1 -0
  210. package/daemon/dist/domain/seat-handover-service.d.ts +104 -0
  211. package/daemon/dist/domain/seat-handover-service.d.ts.map +1 -0
  212. package/daemon/dist/domain/seat-handover-service.js +343 -0
  213. package/daemon/dist/domain/seat-handover-service.js.map +1 -0
  214. package/daemon/dist/domain/seat-status-service.d.ts +50 -0
  215. package/daemon/dist/domain/seat-status-service.d.ts.map +1 -0
  216. package/daemon/dist/domain/seat-status-service.js +66 -0
  217. package/daemon/dist/domain/seat-status-service.js.map +1 -0
  218. package/daemon/dist/domain/session-source-rebuild-resolver.d.ts +53 -0
  219. package/daemon/dist/domain/session-source-rebuild-resolver.d.ts.map +1 -0
  220. package/daemon/dist/domain/session-source-rebuild-resolver.js +59 -0
  221. package/daemon/dist/domain/session-source-rebuild-resolver.js.map +1 -0
  222. package/daemon/dist/domain/session-transport.d.ts +30 -0
  223. package/daemon/dist/domain/session-transport.d.ts.map +1 -1
  224. package/daemon/dist/domain/session-transport.js +322 -12
  225. package/daemon/dist/domain/session-transport.js.map +1 -1
  226. package/daemon/dist/domain/snapshot-repository.d.ts +18 -0
  227. package/daemon/dist/domain/snapshot-repository.d.ts.map +1 -1
  228. package/daemon/dist/domain/snapshot-repository.js +77 -0
  229. package/daemon/dist/domain/snapshot-repository.js.map +1 -1
  230. package/daemon/dist/domain/startup-orchestrator.d.ts +22 -3
  231. package/daemon/dist/domain/startup-orchestrator.d.ts.map +1 -1
  232. package/daemon/dist/domain/startup-orchestrator.js +31 -5
  233. package/daemon/dist/domain/startup-orchestrator.js.map +1 -1
  234. package/daemon/dist/domain/stream-store.d.ts +56 -0
  235. package/daemon/dist/domain/stream-store.d.ts.map +1 -0
  236. package/daemon/dist/domain/stream-store.js +108 -0
  237. package/daemon/dist/domain/stream-store.js.map +1 -0
  238. package/daemon/dist/domain/transcript-redaction.d.ts +13 -0
  239. package/daemon/dist/domain/transcript-redaction.d.ts.map +1 -0
  240. package/daemon/dist/domain/transcript-redaction.js +34 -0
  241. package/daemon/dist/domain/transcript-redaction.js.map +1 -0
  242. package/daemon/dist/domain/transcript-store.d.ts +15 -0
  243. package/daemon/dist/domain/transcript-store.d.ts.map +1 -1
  244. package/daemon/dist/domain/transcript-store.js +57 -1
  245. package/daemon/dist/domain/transcript-store.js.map +1 -1
  246. package/daemon/dist/domain/types.d.ts +316 -3
  247. package/daemon/dist/domain/types.d.ts.map +1 -1
  248. package/daemon/dist/domain/view-event-bridge.d.ts +12 -0
  249. package/daemon/dist/domain/view-event-bridge.d.ts.map +1 -0
  250. package/daemon/dist/domain/view-event-bridge.js +92 -0
  251. package/daemon/dist/domain/view-event-bridge.js.map +1 -0
  252. package/daemon/dist/domain/view-projector.d.ts +83 -0
  253. package/daemon/dist/domain/view-projector.d.ts.map +1 -0
  254. package/daemon/dist/domain/view-projector.js +296 -0
  255. package/daemon/dist/domain/view-projector.js.map +1 -0
  256. package/daemon/dist/domain/watchdog-history-log.d.ts +49 -0
  257. package/daemon/dist/domain/watchdog-history-log.d.ts.map +1 -0
  258. package/daemon/dist/domain/watchdog-history-log.js +67 -0
  259. package/daemon/dist/domain/watchdog-history-log.js.map +1 -0
  260. package/daemon/dist/domain/watchdog-jobs-repository.d.ts +81 -0
  261. package/daemon/dist/domain/watchdog-jobs-repository.d.ts.map +1 -0
  262. package/daemon/dist/domain/watchdog-jobs-repository.js +164 -0
  263. package/daemon/dist/domain/watchdog-jobs-repository.js.map +1 -0
  264. package/daemon/dist/domain/watchdog-policy-engine.d.ts +92 -0
  265. package/daemon/dist/domain/watchdog-policy-engine.d.ts.map +1 -0
  266. package/daemon/dist/domain/watchdog-policy-engine.js +442 -0
  267. package/daemon/dist/domain/watchdog-policy-engine.js.map +1 -0
  268. package/daemon/dist/domain/watchdog-scheduler.d.ts +76 -0
  269. package/daemon/dist/domain/watchdog-scheduler.d.ts.map +1 -0
  270. package/daemon/dist/domain/watchdog-scheduler.js +112 -0
  271. package/daemon/dist/domain/watchdog-scheduler.js.map +1 -0
  272. package/daemon/dist/domain/workflow-instance-store.d.ts +46 -0
  273. package/daemon/dist/domain/workflow-instance-store.d.ts.map +1 -0
  274. package/daemon/dist/domain/workflow-instance-store.js +116 -0
  275. package/daemon/dist/domain/workflow-instance-store.js.map +1 -0
  276. package/daemon/dist/domain/workflow-projector.d.ts +64 -0
  277. package/daemon/dist/domain/workflow-projector.d.ts.map +1 -0
  278. package/daemon/dist/domain/workflow-projector.js +424 -0
  279. package/daemon/dist/domain/workflow-projector.js.map +1 -0
  280. package/daemon/dist/domain/workflow-runtime.d.ts +63 -0
  281. package/daemon/dist/domain/workflow-runtime.d.ts.map +1 -0
  282. package/daemon/dist/domain/workflow-runtime.js +150 -0
  283. package/daemon/dist/domain/workflow-runtime.js.map +1 -0
  284. package/daemon/dist/domain/workflow-spec-cache.d.ts +35 -0
  285. package/daemon/dist/domain/workflow-spec-cache.d.ts.map +1 -0
  286. package/daemon/dist/domain/workflow-spec-cache.js +171 -0
  287. package/daemon/dist/domain/workflow-spec-cache.js.map +1 -0
  288. package/daemon/dist/domain/workflow-step-trail-log.d.ts +27 -0
  289. package/daemon/dist/domain/workflow-step-trail-log.d.ts.map +1 -0
  290. package/daemon/dist/domain/workflow-step-trail-log.js +73 -0
  291. package/daemon/dist/domain/workflow-step-trail-log.js.map +1 -0
  292. package/daemon/dist/domain/workflow-types.d.ts +108 -0
  293. package/daemon/dist/domain/workflow-types.d.ts.map +1 -0
  294. package/daemon/dist/domain/workflow-types.js +11 -0
  295. package/daemon/dist/domain/workflow-types.js.map +1 -0
  296. package/daemon/dist/domain/workflow-validator.d.ts +31 -0
  297. package/daemon/dist/domain/workflow-validator.d.ts.map +1 -0
  298. package/daemon/dist/domain/workflow-validator.js +115 -0
  299. package/daemon/dist/domain/workflow-validator.js.map +1 -0
  300. package/daemon/dist/index.d.ts.map +1 -1
  301. package/daemon/dist/index.js +21 -2
  302. package/daemon/dist/index.js.map +1 -1
  303. package/daemon/dist/routes/activity.d.ts +3 -0
  304. package/daemon/dist/routes/activity.d.ts.map +1 -0
  305. package/daemon/dist/routes/activity.js +47 -0
  306. package/daemon/dist/routes/activity.js.map +1 -0
  307. package/daemon/dist/routes/projects.d.ts +12 -0
  308. package/daemon/dist/routes/projects.d.ts.map +1 -0
  309. package/daemon/dist/routes/projects.js +178 -0
  310. package/daemon/dist/routes/projects.js.map +1 -0
  311. package/daemon/dist/routes/queue.d.ts +10 -0
  312. package/daemon/dist/routes/queue.d.ts.map +1 -0
  313. package/daemon/dist/routes/queue.js +374 -0
  314. package/daemon/dist/routes/queue.js.map +1 -0
  315. package/daemon/dist/routes/restore-check.d.ts +3 -0
  316. package/daemon/dist/routes/restore-check.d.ts.map +1 -0
  317. package/daemon/dist/routes/restore-check.js +200 -0
  318. package/daemon/dist/routes/restore-check.js.map +1 -0
  319. package/daemon/dist/routes/rigs.d.ts.map +1 -1
  320. package/daemon/dist/routes/rigs.js +60 -4
  321. package/daemon/dist/routes/rigs.js.map +1 -1
  322. package/daemon/dist/routes/seat.d.ts +3 -0
  323. package/daemon/dist/routes/seat.d.ts.map +1 -0
  324. package/daemon/dist/routes/seat.js +69 -0
  325. package/daemon/dist/routes/seat.js.map +1 -0
  326. package/daemon/dist/routes/sessions.d.ts.map +1 -1
  327. package/daemon/dist/routes/sessions.js +25 -4
  328. package/daemon/dist/routes/sessions.js.map +1 -1
  329. package/daemon/dist/routes/snapshots.js +66 -29
  330. package/daemon/dist/routes/snapshots.js.map +1 -1
  331. package/daemon/dist/routes/stream.d.ts +9 -0
  332. package/daemon/dist/routes/stream.d.ts.map +1 -0
  333. package/daemon/dist/routes/stream.js +119 -0
  334. package/daemon/dist/routes/stream.js.map +1 -0
  335. package/daemon/dist/routes/transcripts.d.ts.map +1 -1
  336. package/daemon/dist/routes/transcripts.js +38 -0
  337. package/daemon/dist/routes/transcripts.js.map +1 -1
  338. package/daemon/dist/routes/transport.d.ts.map +1 -1
  339. package/daemon/dist/routes/transport.js +21 -0
  340. package/daemon/dist/routes/transport.js.map +1 -1
  341. package/daemon/dist/routes/up.js +24 -3
  342. package/daemon/dist/routes/up.js.map +1 -1
  343. package/daemon/dist/routes/views.d.ts +13 -0
  344. package/daemon/dist/routes/views.d.ts.map +1 -0
  345. package/daemon/dist/routes/views.js +120 -0
  346. package/daemon/dist/routes/views.js.map +1 -0
  347. package/daemon/dist/routes/watchdog.d.ts +18 -0
  348. package/daemon/dist/routes/watchdog.d.ts.map +1 -0
  349. package/daemon/dist/routes/watchdog.js +148 -0
  350. package/daemon/dist/routes/watchdog.js.map +1 -0
  351. package/daemon/dist/routes/workflow.d.ts +20 -0
  352. package/daemon/dist/routes/workflow.d.ts.map +1 -0
  353. package/daemon/dist/routes/workflow.js +184 -0
  354. package/daemon/dist/routes/workflow.js.map +1 -0
  355. package/daemon/dist/server.d.ts +30 -0
  356. package/daemon/dist/server.d.ts.map +1 -1
  357. package/daemon/dist/server.js +33 -0
  358. package/daemon/dist/server.js.map +1 -1
  359. package/daemon/dist/startup.d.ts.map +1 -1
  360. package/daemon/dist/startup.js +202 -8
  361. package/daemon/dist/startup.js.map +1 -1
  362. package/daemon/docs/reference/agent-spec.md +12 -5
  363. package/daemon/docs/reference/agent-startup-guide.md +9 -9
  364. package/daemon/specs/agents/apps/vault-specialist/agent.yaml +1 -1
  365. package/daemon/specs/agents/design/product-designer/agent.yaml +1 -1
  366. package/daemon/specs/agents/development/implementer/agent.yaml +1 -1
  367. package/daemon/specs/agents/development/qa/agent.yaml +1 -1
  368. package/daemon/specs/agents/orchestration/orchestrator/agent.yaml +1 -1
  369. package/daemon/specs/agents/product-management/pm/agent.yaml +4 -0
  370. package/daemon/specs/agents/research/analyst/agent.yaml +1 -1
  371. package/daemon/specs/agents/research/synthesizer/agent.yaml +1 -1
  372. package/daemon/specs/agents/review/independent-reviewer/agent.yaml +1 -1
  373. package/daemon/specs/agents/shared/agent.yaml +17 -0
  374. package/daemon/specs/agents/shared/runtime/claude-mcp.fragment.json +12 -0
  375. package/daemon/specs/agents/shared/runtime/claude-settings.fragment.json +16 -0
  376. package/daemon/specs/agents/shared/runtime/codex-config.fragment.toml +5 -0
  377. package/daemon/specs/agents/shared/skills/claude-compact-in-place/SKILL.md +100 -0
  378. package/daemon/specs/agents/shared/skills/core/openrig-operator/SKILL.md +110 -0
  379. package/daemon/specs/agents/shared/skills/core/openrig-user/SKILL.md +44 -1
  380. package/daemon/specs/agents/shared/skills/mental-model-ha/SKILL.md +3 -0
  381. package/daemon/specs/agents/shared/skills/pods/orchestration-team/SKILL.md +3 -0
  382. package/daemon/specs/agents/shared/skills/rig-architect/SKILL.md +11 -1
  383. package/dist/bin-wrapper.js +0 -0
  384. package/dist/commands/capture.d.ts +7 -1
  385. package/dist/commands/capture.d.ts.map +1 -1
  386. package/dist/commands/capture.js +59 -1
  387. package/dist/commands/capture.js.map +1 -1
  388. package/dist/commands/compact-plan.d.ts +9 -0
  389. package/dist/commands/compact-plan.d.ts.map +1 -0
  390. package/dist/commands/compact-plan.js +354 -0
  391. package/dist/commands/compact-plan.js.map +1 -0
  392. package/dist/commands/context.d.ts +9 -0
  393. package/dist/commands/context.d.ts.map +1 -0
  394. package/dist/commands/context.js +220 -0
  395. package/dist/commands/context.js.map +1 -0
  396. package/dist/commands/expand.d.ts.map +1 -1
  397. package/dist/commands/expand.js +15 -4
  398. package/dist/commands/expand.js.map +1 -1
  399. package/dist/commands/heartbeat.d.ts +99 -0
  400. package/dist/commands/heartbeat.d.ts.map +1 -0
  401. package/dist/commands/heartbeat.js +393 -0
  402. package/dist/commands/heartbeat.js.map +1 -0
  403. package/dist/commands/project.d.ts +14 -0
  404. package/dist/commands/project.d.ts.map +1 -0
  405. package/dist/commands/project.js +157 -0
  406. package/dist/commands/project.js.map +1 -0
  407. package/dist/commands/ps.d.ts +20 -3
  408. package/dist/commands/ps.d.ts.map +1 -1
  409. package/dist/commands/ps.js +455 -33
  410. package/dist/commands/ps.js.map +1 -1
  411. package/dist/commands/queue.d.ts +16 -0
  412. package/dist/commands/queue.d.ts.map +1 -0
  413. package/dist/commands/queue.js +401 -0
  414. package/dist/commands/queue.js.map +1 -0
  415. package/dist/commands/restore-check.d.ts +9 -0
  416. package/dist/commands/restore-check.d.ts.map +1 -0
  417. package/dist/commands/restore-check.js +234 -0
  418. package/dist/commands/restore-check.js.map +1 -0
  419. package/dist/commands/restore-packet.d.ts +9 -0
  420. package/dist/commands/restore-packet.d.ts.map +1 -0
  421. package/dist/commands/restore-packet.js +383 -0
  422. package/dist/commands/restore-packet.js.map +1 -0
  423. package/dist/commands/restore.d.ts.map +1 -1
  424. package/dist/commands/restore.js +44 -1
  425. package/dist/commands/restore.js.map +1 -1
  426. package/dist/commands/seat.d.ts +5 -0
  427. package/dist/commands/seat.d.ts.map +1 -0
  428. package/dist/commands/seat.js +170 -0
  429. package/dist/commands/seat.js.map +1 -0
  430. package/dist/commands/send.d.ts +12 -1
  431. package/dist/commands/send.d.ts.map +1 -1
  432. package/dist/commands/send.js +93 -5
  433. package/dist/commands/send.js.map +1 -1
  434. package/dist/commands/setup.js +3 -3
  435. package/dist/commands/setup.js.map +1 -1
  436. package/dist/commands/specs.d.ts.map +1 -1
  437. package/dist/commands/specs.js +99 -16
  438. package/dist/commands/specs.js.map +1 -1
  439. package/dist/commands/stream.d.ts +12 -0
  440. package/dist/commands/stream.d.ts.map +1 -0
  441. package/dist/commands/stream.js +111 -0
  442. package/dist/commands/stream.js.map +1 -0
  443. package/dist/commands/up.d.ts.map +1 -1
  444. package/dist/commands/up.js +63 -3
  445. package/dist/commands/up.js.map +1 -1
  446. package/dist/commands/view.d.ts +12 -0
  447. package/dist/commands/view.d.ts.map +1 -0
  448. package/dist/commands/view.js +82 -0
  449. package/dist/commands/view.js.map +1 -0
  450. package/dist/commands/watchdog.d.ts +15 -0
  451. package/dist/commands/watchdog.d.ts.map +1 -0
  452. package/dist/commands/watchdog.js +120 -0
  453. package/dist/commands/watchdog.js.map +1 -0
  454. package/dist/commands/whoami.d.ts +8 -1
  455. package/dist/commands/whoami.d.ts.map +1 -1
  456. package/dist/commands/whoami.js +60 -1
  457. package/dist/commands/whoami.js.map +1 -1
  458. package/dist/commands/workflow.d.ts +17 -0
  459. package/dist/commands/workflow.d.ts.map +1 -0
  460. package/dist/commands/workflow.js +138 -0
  461. package/dist/commands/workflow.js.map +1 -0
  462. package/dist/cross-host-cli-helpers.d.ts +12 -0
  463. package/dist/cross-host-cli-helpers.d.ts.map +1 -0
  464. package/dist/cross-host-cli-helpers.js +48 -0
  465. package/dist/cross-host-cli-helpers.js.map +1 -0
  466. package/dist/cross-host-executor.d.ts +84 -0
  467. package/dist/cross-host-executor.d.ts.map +1 -0
  468. package/dist/cross-host-executor.js +138 -0
  469. package/dist/cross-host-executor.js.map +1 -0
  470. package/dist/host-registry.d.ts +50 -0
  471. package/dist/host-registry.d.ts.map +1 -0
  472. package/dist/host-registry.js +116 -0
  473. package/dist/host-registry.js.map +1 -0
  474. package/dist/index.d.ts +20 -0
  475. package/dist/index.d.ts.map +1 -1
  476. package/dist/index.js +24 -0
  477. package/dist/index.js.map +1 -1
  478. package/dist/mcp-server.d.ts.map +1 -1
  479. package/dist/mcp-server.js +22 -2
  480. package/dist/mcp-server.js.map +1 -1
  481. package/dist/restore-packet/claude-transcript-parser.d.ts +12 -0
  482. package/dist/restore-packet/claude-transcript-parser.d.ts.map +1 -0
  483. package/dist/restore-packet/claude-transcript-parser.js +221 -0
  484. package/dist/restore-packet/claude-transcript-parser.js.map +1 -0
  485. package/dist/restore-packet/codex-jsonl-parser.d.ts +11 -0
  486. package/dist/restore-packet/codex-jsonl-parser.d.ts.map +1 -0
  487. package/dist/restore-packet/codex-jsonl-parser.js +159 -0
  488. package/dist/restore-packet/codex-jsonl-parser.js.map +1 -0
  489. package/dist/restore-packet/omitted-records.d.ts +60 -0
  490. package/dist/restore-packet/omitted-records.d.ts.map +1 -0
  491. package/dist/restore-packet/omitted-records.js +116 -0
  492. package/dist/restore-packet/omitted-records.js.map +1 -0
  493. package/dist/restore-packet/packet-writer.d.ts +59 -0
  494. package/dist/restore-packet/packet-writer.d.ts.map +1 -0
  495. package/dist/restore-packet/packet-writer.js +224 -0
  496. package/dist/restore-packet/packet-writer.js.map +1 -0
  497. package/dist/restore-packet/redaction.d.ts +30 -0
  498. package/dist/restore-packet/redaction.d.ts.map +1 -0
  499. package/dist/restore-packet/redaction.js +71 -0
  500. package/dist/restore-packet/redaction.js.map +1 -0
  501. package/dist/restore-packet/runtime-detect.d.ts +19 -0
  502. package/dist/restore-packet/runtime-detect.d.ts.map +1 -0
  503. package/dist/restore-packet/runtime-detect.js +81 -0
  504. package/dist/restore-packet/runtime-detect.js.map +1 -0
  505. package/dist/restore-packet/schema-validator.d.ts +13 -0
  506. package/dist/restore-packet/schema-validator.d.ts.map +1 -0
  507. package/dist/restore-packet/schema-validator.js +245 -0
  508. package/dist/restore-packet/schema-validator.js.map +1 -0
  509. package/dist/restore-packet/types.d.ts +76 -0
  510. package/dist/restore-packet/types.d.ts.map +1 -0
  511. package/dist/restore-packet/types.js +15 -0
  512. package/dist/restore-packet/types.js.map +1 -0
  513. package/dist/schemas/restore-summary.schema.json +98 -0
  514. package/package.json +10 -3
  515. package/scripts/check-abi.mjs +123 -0
  516. package/ui/dist/assets/{index-DlMH-REm.css → index-Dec25siz.css} +1 -1
  517. package/ui/dist/assets/{index-Ccd-jwRN.js → index-GNYaWmBj.js} +2 -2
  518. package/ui/dist/index.html +2 -2
@@ -1,7 +1,7 @@
1
1
  import { join } from "node:path";
2
2
  import { readFileSync, existsSync } from "node:fs";
3
3
  /** Freshness threshold: samples older than this are considered stale for compact displays. */
4
- export const FRESHNESS_THRESHOLD_MS = 120_000; // 2 minutes
4
+ export const FRESHNESS_THRESHOLD_MS = 600_000; // 10 minutes per PM spec
5
5
  export class ContextUsageStore {
6
6
  db;
7
7
  stateDir;
@@ -1 +1 @@
1
- {"version":3,"file":"context-usage-store.js","sourceRoot":"","sources":["../../src/domain/context-usage-store.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAGnD,8FAA8F;AAC9F,MAAM,CAAC,MAAM,sBAAsB,GAAG,OAAO,CAAC,CAAC,YAAY;AAuC3D,MAAM,OAAO,iBAAiB;IACnB,EAAE,CAAoB;IACvB,QAAQ,CAAS;IAEzB,YAAY,EAAqB,EAAE,IAA2B;QAC5D,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;IAChC,CAAC;IAED,+CAA+C;IAC/C,cAAc,CAAC,WAAmB;QAChC,8CAA8C;QAC9C,MAAM,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC;QAC3D,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,EAAE,GAAG,IAAI,OAAO,CAAC,CAAC;IACxD,CAAC;IAED,wEAAwE;IACxE,WAAW,CAAC,WAAmB;QAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;QAClD,IAAI,CAAC;YACH,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;gBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,iBAAiB,EAAE,CAAC;YAC3E,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAChD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAe,CAAC;YACjD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QACpC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC;QAC9C,CAAC;IACH,CAAC;IAED,gEAAgE;IAChE,gBAAgB,CAAC,WAAmB;QAClC,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QAC7C,IAAI,CAAC,MAAM,CAAC,EAAE;YAAE,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACxD,OAAO,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC3C,CAAC;IAED,6DAA6D;IAC7D,eAAe,CAAC,GAAsB;QACpC,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,OAAO,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,CAAC;QAC9C,CAAC;QAED,MAAM,EAAE,GAAG,GAAG,CAAC,cAAc,CAAC;QAC9B,IAAI,CAAC,EAAE,IAAI,OAAO,EAAE,CAAC,eAAe,KAAK,QAAQ,EAAE,CAAC;YAClD,OAAO,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;QAC1C,CAAC;QAED,MAAM,SAAS,GAAG,GAAG,CAAC,UAAU,IAAI,IAAI,CAAC;QACzC,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QAE1D,OAAO;YACL,YAAY,EAAE,OAAO;YACrB,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,wBAAwB;YAChC,cAAc,EAAE,EAAE,CAAC,eAAe,IAAI,IAAI;YAC1C,mBAAmB,EAAE,EAAE,CAAC,oBAAoB,IAAI,IAAI;YACpD,iBAAiB,EAAE,EAAE,CAAC,mBAAmB,IAAI,IAAI;YACjD,gBAAgB,EAAE,EAAE,CAAC,kBAAkB,IAAI,IAAI;YAC/C,iBAAiB,EAAE,EAAE,CAAC,mBAAmB,IAAI,IAAI;YACjD,YAAY,EAAE,IAAI,CAAC,qBAAqB,CAAC,EAAE,CAAC,aAAa,CAAC;YAC1D,cAAc,EAAE,GAAG,CAAC,eAAe,IAAI,IAAI;YAC3C,SAAS,EAAE,GAAG,CAAC,UAAU,IAAI,IAAI;YACjC,WAAW,EAAE,GAAG,CAAC,YAAY,IAAI,IAAI;YACrC,SAAS;YACT,KAAK;SACN,CAAC;IACJ,CAAC;IAED,0DAA0D;IAC1D,OAAO,CAAC,MAAc,EAAE,KAAmB;QACzC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;;;;;;;;;;;;;;;;;;;KAsBf,CAAC,CAAC,GAAG,CACJ,MAAM,EACN,KAAK,CAAC,SAAS,EACf,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,MAAM,EACZ,KAAK,CAAC,MAAM,EACZ,KAAK,CAAC,cAAc,EACpB,KAAK,CAAC,mBAAmB,EACzB,KAAK,CAAC,iBAAiB,EACvB,KAAK,CAAC,gBAAgB,EACtB,KAAK,CAAC,iBAAiB,EACvB,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,cAAc,EACpB,KAAK,CAAC,SAAS,CAChB,CAAC;IACJ,CAAC;IAED,8FAA8F;IAC9F,UAAU,CAAC,MAAc,EAAE,kBAAiC;QAC1D,IAAI,CAAC,kBAAkB;YAAE,OAAO,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;QAEjE,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,+CAA+C,CAAC,CAAC,GAAG,CAAC,MAAM,CAAgC,CAAC;QACxH,IAAI,CAAC,GAAG;YAAE,OAAO,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QAE9C,kEAAkE;QAClE,IAAI,GAAG,CAAC,YAAY,IAAI,GAAG,CAAC,YAAY,KAAK,kBAAkB,EAAE,CAAC;YAChE,OAAO,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,CAAC;QAC/C,CAAC;QAED,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC;IAED,2EAA2E;IAC3E,WAAW,CAAC,OAAqE;QAC/E,MAAM,MAAM,GAAG,IAAI,GAAG,EAAwB,CAAC;QAC/C,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,MAAM,CAAC;QAExC,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QAC7C,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;QAEjF,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAC1B,iDAAiD,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CACrF,CAAC,GAAG,CAAC,GAAG,OAAO,CAAsB,CAAC;QAEvC,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAExD,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,IAAI,CAAC,KAAK,CAAC,kBAAkB,EAAE,CAAC;gBAC9B,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC;gBAC3D,SAAS;YACX,CAAC;YAED,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACrC,IAAI,CAAC,GAAG,EAAE,CAAC;gBACT,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC;gBACvD,SAAS;YACX,CAAC;YAED,IAAI,GAAG,CAAC,YAAY,IAAI,GAAG,CAAC,YAAY,KAAK,KAAK,CAAC,kBAAkB,EAAE,CAAC;gBACtE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,CAAC,CAAC;gBAChE,SAAS;YACX,CAAC;YAED,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;QACjD,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,4DAA4D;IAC5D,YAAY,CAAC,MAA4B;QACvC,OAAO;YACL,YAAY,EAAE,SAAS;YACvB,MAAM;YACN,MAAM,EAAE,IAAI;YACZ,cAAc,EAAE,IAAI;YACpB,mBAAmB,EAAE,IAAI;YACzB,iBAAiB,EAAE,IAAI;YACvB,gBAAgB,EAAE,IAAI;YACtB,iBAAiB,EAAE,IAAI;YACvB,YAAY,EAAE,IAAI;YAClB,cAAc,EAAE,IAAI;YACpB,SAAS,EAAE,IAAI;YACf,WAAW,EAAE,IAAI;YACjB,SAAS,EAAE,IAAI;YACf,KAAK,EAAE,KAAK;SACb,CAAC;IACJ,CAAC;IAED,4CAA4C;IACpC,OAAO,CAAC,SAAiB;QAC/B,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC;YACvD,OAAO,GAAG,GAAG,sBAAsB,CAAC;QACtC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,8DAA8D;IACtD,UAAU,CAAC,GAAoB;QACrC,MAAM,KAAK,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QACpE,OAAO;YACL,YAAY,EAAE,GAAG,CAAC,YAA4C;YAC9D,MAAM,EAAE,GAAG,CAAC,MAAgC;YAC5C,MAAM,EAAE,GAAG,CAAC,MAAgC;YAC5C,cAAc,EAAE,GAAG,CAAC,eAAe;YACnC,mBAAmB,EAAE,GAAG,CAAC,oBAAoB;YAC7C,iBAAiB,EAAE,GAAG,CAAC,mBAAmB;YAC1C,gBAAgB,EAAE,GAAG,CAAC,kBAAkB;YACxC,iBAAiB,EAAE,GAAG,CAAC,mBAAmB;YAC1C,YAAY,EAAE,GAAG,CAAC,aAAa;YAC/B,cAAc,EAAE,GAAG,CAAC,eAAe;YACnC,SAAS,EAAE,GAAG,CAAC,UAAU;YACzB,WAAW,EAAE,GAAG,CAAC,YAAY;YAC7B,SAAS,EAAE,GAAG,CAAC,UAAU;YACzB,KAAK;SACN,CAAC;IACJ,CAAC;IAEO,qBAAqB,CAAC,KAAc;QAC1C,IAAI,KAAK,IAAI,IAAI;YAAE,OAAO,IAAI,CAAC;QAC/B,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,OAAO,KAAK,CAAC;QAC5C,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"context-usage-store.js","sourceRoot":"","sources":["../../src/domain/context-usage-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Hot-potato strict-rejection contract (PL-004 Phase A).
3
+ *
4
+ * Load-bearing API contract: any code path that transitions a queue_item to
5
+ * `done` MUST pass a valid `closure_reason` from the 6-value enum below. This
6
+ * is enforced at this layer (NOT at the route, NOT at the CLI) so every
7
+ * surface that reaches the queue inherits the same guarantee.
8
+ *
9
+ * The 6 valid closure reasons:
10
+ * - handed_off_to : work continues with a different seat (closure_target = new owner)
11
+ * - blocked_on : work is parked pending another qitem (closure_target = blocker qitem_id)
12
+ * - denied : receiver rejected the work (closure_target = reason text)
13
+ * - canceled : sender or receiver withdrew (closure_target = note)
14
+ * - no-follow-on : terminal completion, nothing else needed
15
+ * - escalation : kicked up to higher tier (closure_target = escalation target)
16
+ */
17
+ export declare const CLOSURE_REASONS: readonly ["handed_off_to", "blocked_on", "denied", "canceled", "no-follow-on", "escalation"];
18
+ export type ClosureReason = (typeof CLOSURE_REASONS)[number];
19
+ export interface ClosureRequest {
20
+ state: string;
21
+ closureReason?: string | null;
22
+ closureTarget?: string | null;
23
+ }
24
+ export interface ClosureValidationOk {
25
+ ok: true;
26
+ closureReason: ClosureReason | null;
27
+ closureTarget: string | null;
28
+ }
29
+ export interface ClosureValidationErr {
30
+ ok: false;
31
+ code: "missing_closure_reason" | "invalid_closure_reason" | "missing_closure_target";
32
+ message: string;
33
+ validReasons?: readonly string[];
34
+ }
35
+ export type ClosureValidation = ClosureValidationOk | ClosureValidationErr;
36
+ /**
37
+ * Validate a state transition's closure obligation.
38
+ * - If state !== "done": no closure_reason required; pass through any provided values.
39
+ * - If state === "done": closure_reason REQUIRED, must be in CLOSURE_REASONS.
40
+ * handed_off_to / blocked_on / escalation also require closure_target.
41
+ */
42
+ export declare function validateClosure(req: ClosureRequest): ClosureValidation;
43
+ export declare function isClosureReason(value: unknown): value is ClosureReason;
44
+ export declare function computeClosureRequiredAt(claimedAt: string, tier: string | null): string | null;
45
+ //# sourceMappingURL=hot-potato-enforcer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hot-potato-enforcer.d.ts","sourceRoot":"","sources":["../../src/domain/hot-potato-enforcer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,eAAO,MAAM,eAAe,8FAOlB,CAAC;AAEX,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC;AAE7D,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAED,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,IAAI,CAAC;IACT,aAAa,EAAE,aAAa,GAAG,IAAI,CAAC;IACpC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,KAAK,CAAC;IACV,IAAI,EAAE,wBAAwB,GAAG,wBAAwB,GAAG,wBAAwB,CAAC;IACrF,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAClC;AAED,MAAM,MAAM,iBAAiB,GAAG,mBAAmB,GAAG,oBAAoB,CAAC;AAE3E;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,cAAc,GAAG,iBAAiB,CA4CtE;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,aAAa,CAEtE;AAcD,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAM9F"}
@@ -0,0 +1,94 @@
1
+ /**
2
+ * Hot-potato strict-rejection contract (PL-004 Phase A).
3
+ *
4
+ * Load-bearing API contract: any code path that transitions a queue_item to
5
+ * `done` MUST pass a valid `closure_reason` from the 6-value enum below. This
6
+ * is enforced at this layer (NOT at the route, NOT at the CLI) so every
7
+ * surface that reaches the queue inherits the same guarantee.
8
+ *
9
+ * The 6 valid closure reasons:
10
+ * - handed_off_to : work continues with a different seat (closure_target = new owner)
11
+ * - blocked_on : work is parked pending another qitem (closure_target = blocker qitem_id)
12
+ * - denied : receiver rejected the work (closure_target = reason text)
13
+ * - canceled : sender or receiver withdrew (closure_target = note)
14
+ * - no-follow-on : terminal completion, nothing else needed
15
+ * - escalation : kicked up to higher tier (closure_target = escalation target)
16
+ */
17
+ export const CLOSURE_REASONS = [
18
+ "handed_off_to",
19
+ "blocked_on",
20
+ "denied",
21
+ "canceled",
22
+ "no-follow-on",
23
+ "escalation",
24
+ ];
25
+ /**
26
+ * Validate a state transition's closure obligation.
27
+ * - If state !== "done": no closure_reason required; pass through any provided values.
28
+ * - If state === "done": closure_reason REQUIRED, must be in CLOSURE_REASONS.
29
+ * handed_off_to / blocked_on / escalation also require closure_target.
30
+ */
31
+ export function validateClosure(req) {
32
+ if (req.state !== "done") {
33
+ return {
34
+ ok: true,
35
+ closureReason: (req.closureReason ?? null),
36
+ closureTarget: req.closureTarget ?? null,
37
+ };
38
+ }
39
+ if (!req.closureReason) {
40
+ return {
41
+ ok: false,
42
+ code: "missing_closure_reason",
43
+ message: `state=done requires closure_reason; valid values: ${CLOSURE_REASONS.join(", ")}`,
44
+ validReasons: CLOSURE_REASONS,
45
+ };
46
+ }
47
+ if (!isClosureReason(req.closureReason)) {
48
+ return {
49
+ ok: false,
50
+ code: "invalid_closure_reason",
51
+ message: `closure_reason=${req.closureReason} is not valid; valid values: ${CLOSURE_REASONS.join(", ")}`,
52
+ validReasons: CLOSURE_REASONS,
53
+ };
54
+ }
55
+ const requiresTarget = req.closureReason === "handed_off_to"
56
+ || req.closureReason === "blocked_on"
57
+ || req.closureReason === "escalation";
58
+ if (requiresTarget && !req.closureTarget) {
59
+ return {
60
+ ok: false,
61
+ code: "missing_closure_target",
62
+ message: `closure_reason=${req.closureReason} requires closure_target`,
63
+ };
64
+ }
65
+ return {
66
+ ok: true,
67
+ closureReason: req.closureReason,
68
+ closureTarget: req.closureTarget ?? null,
69
+ };
70
+ }
71
+ export function isClosureReason(value) {
72
+ return typeof value === "string" && CLOSURE_REASONS.includes(value);
73
+ }
74
+ /**
75
+ * Compute closure_required_at given a claim time and a tier.
76
+ * Tier policies are intentionally simple in Phase A; the structure exists so
77
+ * Phase B/C can swap in operator-tunable SLAs without a contract change.
78
+ */
79
+ const TIER_SLA_SECONDS = {
80
+ fast: 30 * 60,
81
+ routine: 4 * 60 * 60,
82
+ deep: 24 * 60 * 60,
83
+ critical: 15 * 60,
84
+ };
85
+ export function computeClosureRequiredAt(claimedAt, tier) {
86
+ if (!tier)
87
+ return null;
88
+ const slaSeconds = TIER_SLA_SECONDS[tier];
89
+ if (slaSeconds === undefined)
90
+ return null;
91
+ const claimed = new Date(claimedAt).getTime();
92
+ return new Date(claimed + slaSeconds * 1000).toISOString();
93
+ }
94
+ //# sourceMappingURL=hot-potato-enforcer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hot-potato-enforcer.js","sourceRoot":"","sources":["../../src/domain/hot-potato-enforcer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,eAAe;IACf,YAAY;IACZ,QAAQ;IACR,UAAU;IACV,cAAc;IACd,YAAY;CACJ,CAAC;AAyBX;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,GAAmB;IACjD,IAAI,GAAG,CAAC,KAAK,KAAK,MAAM,EAAE,CAAC;QACzB,OAAO;YACL,EAAE,EAAE,IAAI;YACR,aAAa,EAAE,CAAC,GAAG,CAAC,aAAa,IAAI,IAAI,CAAyB;YAClE,aAAa,EAAE,GAAG,CAAC,aAAa,IAAI,IAAI;SACzC,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;QACvB,OAAO;YACL,EAAE,EAAE,KAAK;YACT,IAAI,EAAE,wBAAwB;YAC9B,OAAO,EAAE,qDAAqD,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YAC1F,YAAY,EAAE,eAAe;SAC9B,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC;QACxC,OAAO;YACL,EAAE,EAAE,KAAK;YACT,IAAI,EAAE,wBAAwB;YAC9B,OAAO,EAAE,kBAAkB,GAAG,CAAC,aAAa,gCAAgC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YACxG,YAAY,EAAE,eAAe;SAC9B,CAAC;IACJ,CAAC;IAED,MAAM,cAAc,GAAG,GAAG,CAAC,aAAa,KAAK,eAAe;WACvD,GAAG,CAAC,aAAa,KAAK,YAAY;WAClC,GAAG,CAAC,aAAa,KAAK,YAAY,CAAC;IAExC,IAAI,cAAc,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;QACzC,OAAO;YACL,EAAE,EAAE,KAAK;YACT,IAAI,EAAE,wBAAwB;YAC9B,OAAO,EAAE,kBAAkB,GAAG,CAAC,aAAa,0BAA0B;SACvE,CAAC;IACJ,CAAC;IAED,OAAO;QACL,EAAE,EAAE,IAAI;QACR,aAAa,EAAE,GAAG,CAAC,aAAa;QAChC,aAAa,EAAE,GAAG,CAAC,aAAa,IAAI,IAAI;KACzC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,KAAc;IAC5C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAK,eAAqC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC7F,CAAC;AAED;;;;GAIG;AACH,MAAM,gBAAgB,GAA2B;IAC/C,IAAI,EAAE,EAAE,GAAG,EAAE;IACb,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE;IACpB,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE;IAClB,QAAQ,EAAE,EAAE,GAAG,EAAE;CAClB,CAAC;AAEF,MAAM,UAAU,wBAAwB,CAAC,SAAiB,EAAE,IAAmB;IAC7E,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IACvB,MAAM,UAAU,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAC1C,IAAI,UAAU,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IAC1C,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC;IAC9C,OAAO,IAAI,IAAI,CAAC,OAAO,GAAG,UAAU,GAAG,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;AAC7D,CAAC"}
@@ -0,0 +1,68 @@
1
+ import type Database from "better-sqlite3";
2
+ import type { EventBus } from "./event-bus.js";
3
+ import { QueueRepository } from "./queue-repository.js";
4
+ export declare const INBOX_STATES: readonly ["pending", "absorbed", "denied"];
5
+ export type InboxState = (typeof INBOX_STATES)[number];
6
+ export interface InboxEntry {
7
+ inboxId: string;
8
+ destinationSession: string;
9
+ senderSession: string;
10
+ body: string;
11
+ tags: string[] | null;
12
+ urgency: string;
13
+ tsDropped: string;
14
+ state: InboxState;
15
+ absorbedAt: string | null;
16
+ absorbedQitemId: string | null;
17
+ deniedAt: string | null;
18
+ deniedReason: string | null;
19
+ auditPointer: string | null;
20
+ }
21
+ export interface InboxDropInput {
22
+ inboxId?: string;
23
+ destinationSession: string;
24
+ senderSession: string;
25
+ body: string;
26
+ tags?: string[];
27
+ urgency?: string;
28
+ auditPointer?: string;
29
+ }
30
+ export declare class InboxHandlerError extends Error {
31
+ readonly code: string;
32
+ constructor(code: string, message: string);
33
+ }
34
+ /**
35
+ * Inbox mailbox handler. Authenticated drop-and-go path.
36
+ * Receiver chooses absorb (promote to queue_item) or deny (record reason).
37
+ *
38
+ * `authenticate` is the contract surface that lets routes plug in identity
39
+ * verification. Default is permissive (accept any sender_session); routes
40
+ * SHOULD verify against the calling principal.
41
+ */
42
+ export declare class InboxHandler {
43
+ readonly db: Database.Database;
44
+ private readonly eventBus;
45
+ private readonly queueRepo;
46
+ private readonly authenticate;
47
+ constructor(db: Database.Database, eventBus: EventBus, queueRepo: QueueRepository, opts?: {
48
+ authenticate?: (sender: string, claimed: string) => boolean;
49
+ });
50
+ drop(input: InboxDropInput, authenticatedSender?: string): InboxEntry;
51
+ /**
52
+ * Receiver absorbs a pending inbox entry into their main queue.
53
+ * Idempotent on inbox_id: if already absorbed, returns the existing
54
+ * `absorbed_qitem_id` rather than creating a duplicate.
55
+ */
56
+ absorb(inboxId: string, receiverSession: string): Promise<{
57
+ entry: InboxEntry;
58
+ qitemId: string;
59
+ }>;
60
+ deny(inboxId: string, receiverSession: string, reason: string): InboxEntry;
61
+ getById(inboxId: string): InboxEntry | null;
62
+ listPending(destinationSession: string): InboxEntry[];
63
+ listForDestination(destinationSession: string, limit?: number): InboxEntry[];
64
+ private getByIdRaw;
65
+ private getByIdOrThrow;
66
+ private rowToEntry;
67
+ }
68
+ //# sourceMappingURL=inbox-handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inbox-handler.d.ts","sourceRoot":"","sources":["../../src/domain/inbox-handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,eAAO,MAAM,YAAY,4CAA6C,CAAC;AACvE,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC;AAEvD,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,UAAU,CAAC;IAClB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAkBD,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,qBAAa,iBAAkB,SAAQ,KAAK;IAC1C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;gBACV,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAI1C;AAQD;;;;;;;GAOG;AACH,qBAAa,YAAY;IACvB,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,CAAC;IAC/B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAW;IACpC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAkB;IAC5C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA+C;gBAG1E,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,eAAe,EAC1B,IAAI,CAAC,EAAE;QAAE,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,OAAO,CAAA;KAAE;IAQxE,IAAI,CAAC,KAAK,EAAE,cAAc,EAAE,mBAAmB,CAAC,EAAE,MAAM,GAAG,UAAU;IAoCrE;;;;OAIG;IACG,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,UAAU,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IA2DvG,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,UAAU;IA2C1E,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI;IAK3C,WAAW,CAAC,kBAAkB,EAAE,MAAM,GAAG,UAAU,EAAE;IAWrD,kBAAkB,CAAC,kBAAkB,EAAE,MAAM,EAAE,KAAK,SAAM,GAAG,UAAU,EAAE;IASzE,OAAO,CAAC,UAAU;IAMlB,OAAO,CAAC,cAAc;IAMtB,OAAO,CAAC,UAAU;CAiBnB"}
@@ -0,0 +1,177 @@
1
+ export const INBOX_STATES = ["pending", "absorbed", "denied"];
2
+ export class InboxHandlerError extends Error {
3
+ code;
4
+ constructor(code, message) {
5
+ super(message);
6
+ this.code = code;
7
+ }
8
+ }
9
+ function newInboxId() {
10
+ const ts = new Date().toISOString().replace(/[-:T.Z]/g, "").slice(0, 14);
11
+ const hex = Math.floor(Math.random() * 0xffffffff).toString(16).padStart(8, "0");
12
+ return `inbox-${ts}-${hex}`;
13
+ }
14
+ /**
15
+ * Inbox mailbox handler. Authenticated drop-and-go path.
16
+ * Receiver chooses absorb (promote to queue_item) or deny (record reason).
17
+ *
18
+ * `authenticate` is the contract surface that lets routes plug in identity
19
+ * verification. Default is permissive (accept any sender_session); routes
20
+ * SHOULD verify against the calling principal.
21
+ */
22
+ export class InboxHandler {
23
+ db;
24
+ eventBus;
25
+ queueRepo;
26
+ authenticate;
27
+ constructor(db, eventBus, queueRepo, opts) {
28
+ this.db = db;
29
+ this.eventBus = eventBus;
30
+ this.queueRepo = queueRepo;
31
+ this.authenticate = opts?.authenticate ?? (() => true);
32
+ }
33
+ drop(input, authenticatedSender) {
34
+ if (authenticatedSender !== undefined && !this.authenticate(authenticatedSender, input.senderSession)) {
35
+ throw new InboxHandlerError("auth_failed", `authenticated principal ${authenticatedSender} cannot send as ${input.senderSession}`);
36
+ }
37
+ const id = input.inboxId ?? newInboxId();
38
+ const existing = this.getByIdRaw(id);
39
+ if (existing)
40
+ return this.rowToEntry(existing);
41
+ const ts = new Date().toISOString();
42
+ const tags = input.tags ? JSON.stringify(input.tags) : null;
43
+ const urgency = input.urgency ?? "routine";
44
+ this.db
45
+ .prepare(`INSERT INTO inbox_entries (
46
+ inbox_id, destination_session, sender_session, body, tags, urgency, ts_dropped, audit_pointer
47
+ ) VALUES (?, ?, ?, ?, ?, ?, ?, ?)`)
48
+ .run(id, input.destinationSession, input.senderSession, input.body, tags, urgency, ts, input.auditPointer ?? null);
49
+ return this.getByIdOrThrow(id);
50
+ }
51
+ /**
52
+ * Receiver absorbs a pending inbox entry into their main queue.
53
+ * Idempotent on inbox_id: if already absorbed, returns the existing
54
+ * `absorbed_qitem_id` rather than creating a duplicate.
55
+ */
56
+ async absorb(inboxId, receiverSession) {
57
+ const entry = this.getById(inboxId);
58
+ if (!entry) {
59
+ throw new InboxHandlerError("inbox_not_found", `inbox ${inboxId} not found`);
60
+ }
61
+ if (entry.destinationSession !== receiverSession) {
62
+ throw new InboxHandlerError("absorb_destination_mismatch", `inbox ${inboxId} is destined for ${entry.destinationSession}, not ${receiverSession}`);
63
+ }
64
+ if (entry.state === "absorbed") {
65
+ return { entry, qitemId: entry.absorbedQitemId };
66
+ }
67
+ if (entry.state === "denied") {
68
+ throw new InboxHandlerError("inbox_already_denied", `inbox ${inboxId} was denied; cannot absorb`);
69
+ }
70
+ // Inbox-absorb suppresses the default queue create-time nudge: the inbox
71
+ // surface already had its own delivery (the original drop), so a second
72
+ // nudge on absorb is duplicative. The destination knows it absorbed.
73
+ const qitem = await this.queueRepo.create({
74
+ sourceSession: entry.senderSession,
75
+ destinationSession: entry.destinationSession,
76
+ body: entry.body,
77
+ tags: entry.tags ?? undefined,
78
+ priority: entry.urgency === "critical" ? "critical" : entry.urgency === "urgent" ? "urgent" : "routine",
79
+ nudge: false,
80
+ });
81
+ const ts = new Date().toISOString();
82
+ const txn = this.db.transaction(() => {
83
+ this.db
84
+ .prepare(`UPDATE inbox_entries
85
+ SET state = 'absorbed', absorbed_at = ?, absorbed_qitem_id = ?
86
+ WHERE inbox_id = ?`)
87
+ .run(ts, qitem.qitemId, inboxId);
88
+ return this.eventBus.persistWithinTransaction({
89
+ type: "inbox.absorbed",
90
+ inboxId,
91
+ destinationSession: entry.destinationSession,
92
+ senderSession: entry.senderSession,
93
+ promotedQitemId: qitem.qitemId,
94
+ });
95
+ });
96
+ const persistedEvent = txn();
97
+ this.eventBus.notifySubscribers(persistedEvent);
98
+ return { entry: this.getByIdOrThrow(inboxId), qitemId: qitem.qitemId };
99
+ }
100
+ deny(inboxId, receiverSession, reason) {
101
+ const entry = this.getById(inboxId);
102
+ if (!entry) {
103
+ throw new InboxHandlerError("inbox_not_found", `inbox ${inboxId} not found`);
104
+ }
105
+ if (entry.destinationSession !== receiverSession) {
106
+ throw new InboxHandlerError("deny_destination_mismatch", `inbox ${inboxId} is destined for ${entry.destinationSession}, not ${receiverSession}`);
107
+ }
108
+ if (entry.state !== "pending") {
109
+ throw new InboxHandlerError("inbox_not_pending", `inbox ${inboxId} is in state ${entry.state}; only pending entries can be denied`);
110
+ }
111
+ const ts = new Date().toISOString();
112
+ const txn = this.db.transaction(() => {
113
+ this.db
114
+ .prepare(`UPDATE inbox_entries
115
+ SET state = 'denied', denied_at = ?, denied_reason = ?
116
+ WHERE inbox_id = ?`)
117
+ .run(ts, reason, inboxId);
118
+ return this.eventBus.persistWithinTransaction({
119
+ type: "inbox.denied",
120
+ inboxId,
121
+ destinationSession: entry.destinationSession,
122
+ senderSession: entry.senderSession,
123
+ reason,
124
+ });
125
+ });
126
+ const persistedEvent = txn();
127
+ this.eventBus.notifySubscribers(persistedEvent);
128
+ return this.getByIdOrThrow(inboxId);
129
+ }
130
+ getById(inboxId) {
131
+ const row = this.getByIdRaw(inboxId);
132
+ return row ? this.rowToEntry(row) : null;
133
+ }
134
+ listPending(destinationSession) {
135
+ const rows = this.db
136
+ .prepare(`SELECT * FROM inbox_entries
137
+ WHERE destination_session = ? AND state = 'pending'
138
+ ORDER BY ts_dropped ASC`)
139
+ .all(destinationSession);
140
+ return rows.map((r) => this.rowToEntry(r));
141
+ }
142
+ listForDestination(destinationSession, limit = 100) {
143
+ const rows = this.db
144
+ .prepare(`SELECT * FROM inbox_entries WHERE destination_session = ? ORDER BY ts_dropped DESC, rowid DESC LIMIT ?`)
145
+ .all(destinationSession, limit);
146
+ return rows.map((r) => this.rowToEntry(r));
147
+ }
148
+ getByIdRaw(inboxId) {
149
+ return this.db
150
+ .prepare("SELECT * FROM inbox_entries WHERE inbox_id = ?")
151
+ .get(inboxId);
152
+ }
153
+ getByIdOrThrow(inboxId) {
154
+ const entry = this.getById(inboxId);
155
+ if (!entry)
156
+ throw new InboxHandlerError("inbox_not_found", `inbox ${inboxId} not found after write`);
157
+ return entry;
158
+ }
159
+ rowToEntry(row) {
160
+ return {
161
+ inboxId: row.inbox_id,
162
+ destinationSession: row.destination_session,
163
+ senderSession: row.sender_session,
164
+ body: row.body,
165
+ tags: row.tags ? JSON.parse(row.tags) : null,
166
+ urgency: row.urgency,
167
+ tsDropped: row.ts_dropped,
168
+ state: row.state,
169
+ absorbedAt: row.absorbed_at,
170
+ absorbedQitemId: row.absorbed_qitem_id,
171
+ deniedAt: row.denied_at,
172
+ deniedReason: row.denied_reason,
173
+ auditPointer: row.audit_pointer,
174
+ };
175
+ }
176
+ }
177
+ //# sourceMappingURL=inbox-handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inbox-handler.js","sourceRoot":"","sources":["../../src/domain/inbox-handler.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- export type NativeResumeProbeStatus = "resumed" | "failed" | "inconclusive";
1
+ export type NativeResumeProbeStatus = "resumed" | "failed" | "inconclusive" | "attention_required";
2
2
  export interface NativeResumeProbeInput {
3
3
  runtime: string | null;
4
4
  paneCommand: string | null;
@@ -1 +1 @@
1
- {"version":3,"file":"native-resume-probe.d.ts","sourceRoot":"","sources":["../../src/domain/native-resume-probe.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,uBAAuB,GAAG,SAAS,GAAG,QAAQ,GAAG,cAAc,CAAC;AAE5E,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,uBAAuB,CAAC;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAID,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,MAAM,GAAG,IAAI,EACtB,WAAW,EAAE,MAAM,GAAG,IAAI,EAC1B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,GAC1B,MAAM,GAAG,IAAI,CAUf;AAED,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,sBAAsB,GAC5B,uBAAuB,CAqHzB;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAItE"}
1
+ {"version":3,"file":"native-resume-probe.d.ts","sourceRoot":"","sources":["../../src/domain/native-resume-probe.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,uBAAuB,GAAG,SAAS,GAAG,QAAQ,GAAG,cAAc,GAAG,oBAAoB,CAAC;AAEnG,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,uBAAuB,CAAC;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAID,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,MAAM,GAAG,IAAI,EACtB,WAAW,EAAE,MAAM,GAAG,IAAI,EAC1B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,GAC1B,MAAM,GAAG,IAAI,CAUf;AAED,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,sBAAsB,GAC5B,uBAAuB,CA0IzB;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAItE"}
@@ -24,6 +24,13 @@ export function assessNativeResumeProbe(input) {
24
24
  detail: "Claude reported that the requested session no longer exists.",
25
25
  };
26
26
  }
27
+ if (looksLikeClaudeResumeSelectionPrompt(paneContent)) {
28
+ return {
29
+ status: "attention_required",
30
+ code: "claude_resume_selection_prompt",
31
+ detail: "Claude is at a resume-selection prompt; an operator must choose the conversation to continue.",
32
+ };
33
+ }
27
34
  if (looksLikeClaudeTrustPrompt(paneContent)) {
28
35
  return {
29
36
  status: "inconclusive",
@@ -80,6 +87,13 @@ export function assessNativeResumeProbe(input) {
80
87
  detail: "Codex reported that the requested saved session does not exist.",
81
88
  };
82
89
  }
90
+ if (looksLikeCodexAuthRefusal(paneContent)) {
91
+ return {
92
+ status: "attention_required",
93
+ code: "codex_auth_refusal",
94
+ detail: "Codex could not refresh the stored access token; an operator must sign in again before the session can resume.",
95
+ };
96
+ }
83
97
  if (looksLikeCodexTrustPrompt(paneContent)) {
84
98
  return {
85
99
  status: "inconclusive",
@@ -87,6 +101,13 @@ export function assessNativeResumeProbe(input) {
87
101
  detail: "Codex is waiting for workspace trust approval before the session can become interactive.",
88
102
  };
89
103
  }
104
+ if (looksLikeCodexModelSelectionPrompt(paneContent)) {
105
+ return {
106
+ status: "inconclusive",
107
+ code: "model_selection_gate",
108
+ detail: "Codex is waiting for model selection before the session can become interactive.",
109
+ };
110
+ }
90
111
  if (looksLikeCodexTui(paneContent)) {
91
112
  return {
92
113
  status: "resumed",
@@ -143,6 +164,27 @@ function looksLikeClaudeTrustPrompt(paneContent) {
143
164
  return paneContent.includes("Accessing workspace:")
144
165
  && paneContent.includes("Yes, I trust this folder");
145
166
  }
167
+ // Claude's resume-selection prompt appears when `claude --resume` finds multiple
168
+ // candidate conversations (or after a reboot when the conversation index is
169
+ // rebuilt). The prompt lists numbered options and asks the operator to pick.
170
+ //
171
+ // L3 invariant: do NOT auto-answer. Surface as `attention_required` and let an
172
+ // operator choose; later reconciliation upgrades to `operator_recovered` only
173
+ // when the operator reaches a usable state.
174
+ function looksLikeClaudeResumeSelectionPrompt(paneContent) {
175
+ // Stable substring is the explicit "Choose ... conversation" verb plus the
176
+ // numbered/arrow option marker that Claude prints. Both must be present so
177
+ // we don't false-positive on similar TUI strings.
178
+ const hasChooseVerb = paneContent.includes("Choose a conversation")
179
+ || paneContent.includes("Choose the conversation")
180
+ || paneContent.includes("Select a conversation");
181
+ if (!hasChooseVerb)
182
+ return false;
183
+ // Look for the numbered/arrow option marker in recent lines.
184
+ const recentLines = paneContent.split("\n").slice(-30);
185
+ const numberedOption = recentLines.some((line) => /^\s*(?:›\s*)?\d+\.\s+\S/.test(line));
186
+ return numberedOption;
187
+ }
146
188
  function looksLikeClaudeLoginPrompt(paneContent) {
147
189
  return paneContent.includes("Not logged in")
148
190
  && paneContent.includes("Run /login");
@@ -161,8 +203,33 @@ function looksLikeCodexTui(paneContent) {
161
203
  const hasModelFooter = /(^|\n)\s{2,}gpt-[^\n]+ · [^\n]+(?:\n|$)/.test(recentLines);
162
204
  return hasPromptLine && hasModelFooter;
163
205
  }
206
+ // Codex prints these messages when its stored OAuth access token can no
207
+ // longer be refreshed — operator logged out elsewhere, account changed,
208
+ // device key revoked, etc. Operator recovers via `codex login`. Both
209
+ // anchors required: the access-token phrase distinguishes from generic
210
+ // errors; the operator-instruction phrase distinguishes from internal
211
+ // debug logs that may include the access-token phrase incidentally.
212
+ //
213
+ // Source verified at codex-cli 0.125.0 binary at
214
+ // /opt/homebrew/Caskroom/codex/0.125.0/codex-aarch64-apple-darwin:
215
+ // "Your access token could not be refreshed because you have since
216
+ // logged out or signed in to another account. Please sign in again."
217
+ // "Your access token could not be refreshed. Please log out and sign
218
+ // in again."
219
+ function looksLikeCodexAuthRefusal(paneContent) {
220
+ if (!paneContent.includes("access token could not be refreshed"))
221
+ return false;
222
+ return (paneContent.includes("Please sign in again")
223
+ || paneContent.includes("Please log out and sign in again"));
224
+ }
164
225
  function looksLikeCodexTrustPrompt(paneContent) {
165
226
  return paneContent.includes("Do you trust the contents of this directory?")
166
227
  && paneContent.includes("Yes, continue");
167
228
  }
229
+ function looksLikeCodexModelSelectionPrompt(paneContent) {
230
+ const recentLines = paneContent.split("\n").slice(-20);
231
+ const numberedModelOptions = recentLines.filter((line) => (/^\s*(?:›\s*)?\d+\.\s+/.test(line)
232
+ && /\bgpt-[\w.-]+\b/i.test(line)));
233
+ return numberedModelOptions.length >= 2;
234
+ }
168
235
  //# sourceMappingURL=native-resume-probe.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"native-resume-probe.js","sourceRoot":"","sources":["../../src/domain/native-resume-probe.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAqBxD,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;AAE5E,MAAM,UAAU,wBAAwB,CACtC,OAAsB,EACtB,WAA0B,EAC1B,WAA2B;IAE3B,IAAI,CAAC,WAAW;QAAE,OAAO,IAAI,CAAC;IAC9B,IAAI,OAAO,KAAK,aAAa,EAAE,CAAC;QAC9B,MAAM,UAAU,GAAG,WAAW,CAAC,CAAC,CAAC,WAAW,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3E,OAAO,mBAAmB,UAAU,CAAC,WAAW,CAAC,GAAG,UAAU,EAAE,CAAC;IACnE,CAAC;IACD,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;QACxB,OAAO,gBAAgB,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;IACnD,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,KAA6B;IAE7B,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC;IACpC,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,IAAI,EAAE,CAAC;IAC5C,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,IAAI,EAAE,CAAC;IAE5C,IAAI,OAAO,KAAK,aAAa,EAAE,CAAC;QAC9B,IAAI,WAAW,CAAC,QAAQ,CAAC,uBAAuB,CAAC,EAAE,CAAC;YAClD,OAAO;gBACL,MAAM,EAAE,QAAQ;gBAChB,IAAI,EAAE,uBAAuB;gBAC7B,MAAM,EAAE,8DAA8D;aACvE,CAAC;QACJ,CAAC;QACD,IAAI,0BAA0B,CAAC,WAAW,CAAC,EAAE,CAAC;YAC5C,OAAO;gBACL,MAAM,EAAE,cAAc;gBACtB,IAAI,EAAE,YAAY;gBAClB,MAAM,EAAE,2FAA2F;aACpG,CAAC;QACJ,CAAC;QACD,IAAI,gCAAgC,CAAC,WAAW,CAAC,EAAE,CAAC;YAClD,OAAO;gBACL,MAAM,EAAE,cAAc;gBACtB,IAAI,EAAE,UAAU;gBAChB,MAAM,EAAE,8FAA8F;aACvG,CAAC;QACJ,CAAC;QACD,IAAI,0BAA0B,CAAC,WAAW,CAAC,EAAE,CAAC;YAC5C,OAAO;gBACL,MAAM,EAAE,QAAQ;gBAChB,IAAI,EAAE,gBAAgB;gBACtB,MAAM,EAAE,+DAA+D;aACxE,CAAC;QACJ,CAAC;QACD,IAAI,kBAAkB,CAAC,WAAW,CAAC,EAAE,CAAC;YACpC,OAAO;gBACL,MAAM,EAAE,SAAS;gBACjB,IAAI,EAAE,gBAAgB;gBACtB,MAAM,EAAE,qEAAqE;aAC9E,CAAC;QACJ,CAAC;QACD,IAAI,WAAW,KAAK,QAAQ,EAAE,CAAC;YAC7B,OAAO;gBACL,MAAM,EAAE,SAAS;gBACjB,IAAI,EAAE,gBAAgB;gBACtB,MAAM,EAAE,4DAA4D;aACrE,CAAC;QACJ,CAAC;QACD,IAAI,cAAc,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;YACpC,OAAO;gBACL,MAAM,EAAE,QAAQ;gBAChB,IAAI,EAAE,mBAAmB;gBACzB,MAAM,EAAE,2EAA2E;aACpF,CAAC;QACJ,CAAC;QACD,OAAO;YACL,MAAM,EAAE,cAAc;YACtB,IAAI,EAAE,kBAAkB;YACxB,MAAM,EAAE,uFAAuF;SAChG,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;QACxB,IAAI,WAAW,CAAC,QAAQ,CAAC,wBAAwB,CAAC,EAAE,CAAC;YACnD,OAAO;gBACL,MAAM,EAAE,QAAQ;gBAChB,IAAI,EAAE,kBAAkB;gBACxB,MAAM,EAAE,iEAAiE;aAC1E,CAAC;QACJ,CAAC;QACD,IAAI,yBAAyB,CAAC,WAAW,CAAC,EAAE,CAAC;YAC3C,OAAO;gBACL,MAAM,EAAE,cAAc;gBACtB,IAAI,EAAE,YAAY;gBAClB,MAAM,EAAE,0FAA0F;aACnG,CAAC;QACJ,CAAC;QACD,IAAI,iBAAiB,CAAC,WAAW,CAAC,EAAE,CAAC;YACnC,OAAO;gBACL,MAAM,EAAE,SAAS;gBACjB,IAAI,EAAE,gBAAgB;gBACtB,MAAM,EAAE,oEAAoE;aAC7E,CAAC;QACJ,CAAC;QACD,IAAI,WAAW,CAAC,QAAQ,CAAC,mBAAmB,CAAC,IAAI,WAAW,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC;YACxF,OAAO;gBACL,MAAM,EAAE,cAAc;gBACtB,IAAI,EAAE,aAAa;gBACnB,MAAM,EAAE,+FAA+F;aACxG,CAAC;QACJ,CAAC;QACD,IAAI,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YACpC,OAAO;gBACL,MAAM,EAAE,SAAS;gBACjB,IAAI,EAAE,gBAAgB;gBACtB,MAAM,EAAE,2DAA2D;aACpE,CAAC;QACJ,CAAC;QACD,IAAI,cAAc,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;YACpC,OAAO;gBACL,MAAM,EAAE,QAAQ;gBAChB,IAAI,EAAE,mBAAmB;gBACzB,MAAM,EAAE,2EAA2E;aACpF,CAAC;QACJ,CAAC;QACD,OAAO;YACL,MAAM,EAAE,cAAc;YACtB,IAAI,EAAE,kBAAkB;YACxB,MAAM,EAAE,sFAAsF;SAC/F,CAAC;IACJ,CAAC;IAED,OAAO;QACL,MAAM,EAAE,cAAc;QACtB,IAAI,EAAE,qBAAqB;QAC3B,MAAM,EAAE,qDAAqD;KAC9D,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,KAA2B;IAC3D,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,IAAI,EAAE,CAAC;IAC5C,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACpD,OAAO,cAAc,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;AACnE,CAAC;AAED,SAAS,kBAAkB,CAAC,WAAmB;IAC7C,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACjD,IAAI,CAAC,SAAS;QAAE,OAAO,KAAK,CAAC;IAE7B,OAAO,CACL,WAAW,CAAC,QAAQ,CAAC,eAAe,CAAC;WAClC,WAAW,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAC3C,CAAC;AACJ,CAAC;AAED,SAAS,0BAA0B,CAAC,WAAmB;IACrD,OAAO,WAAW,CAAC,QAAQ,CAAC,sBAAsB,CAAC;WAC9C,WAAW,CAAC,QAAQ,CAAC,0BAA0B,CAAC,CAAC;AACxD,CAAC;AAED,SAAS,0BAA0B,CAAC,WAAmB;IACrD,OAAO,WAAW,CAAC,QAAQ,CAAC,eAAe,CAAC;WACvC,WAAW,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;AAC1C,CAAC;AAED,SAAS,gCAAgC,CAAC,WAAmB;IAC3D,OAAO,WAAW,CAAC,QAAQ,CAAC,oCAAoC,CAAC;WAC5D,WAAW,CAAC,QAAQ,CAAC,+BAA+B,CAAC;WACrD,WAAW,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC;AAChD,CAAC;AAED,SAAS,iBAAiB,CAAC,WAAmB;IAC5C,IAAI,WAAW,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC;QAC5C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClE,MAAM,aAAa,GAAG,oBAAoB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC7D,MAAM,cAAc,GAAG,yCAAyC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAEnF,OAAO,aAAa,IAAI,cAAc,CAAC;AACzC,CAAC;AAED,SAAS,yBAAyB,CAAC,WAAmB;IACpD,OAAO,WAAW,CAAC,QAAQ,CAAC,8CAA8C,CAAC;WACtE,WAAW,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;AAC7C,CAAC"}
1
+ {"version":3,"file":"native-resume-probe.js","sourceRoot":"","sources":["../../src/domain/native-resume-probe.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,30 @@
1
1
  import type Database from "better-sqlite3";
2
- import type { NodeInventoryEntry, NodeDetailEntry } from "./types.js";
2
+ import type { NodeInventoryEntry, NodeDetailEntry, NodeRestoreOutcome, NodeLifecycleState, Snapshot } from "./types.js";
3
3
  import type { RuntimeAdapter } from "./runtime-adapter.js";
4
4
  import type { ContextUsageStore } from "./context-usage-store.js";
5
+ import type { AgentActivityStore } from "./agent-activity-store.js";
6
+ import type { TmuxAdapter } from "../adapters/tmux.js";
7
+ /**
8
+ * Derives per-node lifecycle state from session/restore truth plus the rig's latest
9
+ * usable snapshot.
10
+ *
11
+ * Priorities (post-L2):
12
+ * attention_required — restoreOutcome=failed AND tmux session is alive
13
+ * (v0 proxy for the Claude resume-prompt case; revisited in L3).
14
+ * running — sessionStatus=running.
15
+ * recoverable — non-running session AND the latest usable snapshot has a
16
+ * non-null resume token for THIS node.
17
+ * detached — anything else (no session, exited, detached without resume token).
18
+ *
19
+ * Permission/IO failures upstream (L1 fail-closed) leave sessionStatus unchanged, so
20
+ * the projection stays honest without misclassifying ambiguous probe failures.
21
+ */
22
+ export declare function deriveNodeLifecycleState(input: {
23
+ sessionStatus: string | null;
24
+ restoreOutcome: NodeRestoreOutcome;
25
+ nodeId: string;
26
+ usableSnapshot: Snapshot | null;
27
+ }): NodeLifecycleState;
5
28
  /**
6
29
  * Get the canonical node inventory for a rig.
7
30
  * Single source of truth consumed by CLI, UI, and MCP.
@@ -30,4 +53,9 @@ export declare function getNodeInventoryWithContext(db: Database.Database, rigId
30
53
  * Context-aware wrapper: returns node detail with context usage attached.
31
54
  */
32
55
  export declare function getNodeDetailWithContext(db: Database.Database, rigId: string, logicalId: string, contextUsageStore: ContextUsageStore, opts?: Parameters<typeof getNodeDetail>[3]): NodeDetailEntry | null;
56
+ export declare function attachAgentActivity(entries: NodeInventoryEntry[], deps: {
57
+ tmuxAdapter: TmuxAdapter;
58
+ activityStore?: AgentActivityStore;
59
+ now?: Date;
60
+ }): Promise<NodeInventoryEntry[]>;
33
61
  //# sourceMappingURL=node-inventory.d.ts.map