@openrig/cli 0.5.4 → 0.5.5

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 (747) hide show
  1. package/daemon/assets/guidance/openrig-start.md +7 -0
  2. package/daemon/assets/onboarding/01-world-and-purpose.md +52 -0
  3. package/daemon/assets/onboarding/02-self-and-competent-action.md +57 -0
  4. package/daemon/assets/plugins/openrig-core/README.md +5 -2
  5. package/daemon/assets/plugins/openrig-core/hooks/claude.json +3 -12
  6. package/daemon/assets/plugins/openrig-core/hooks/codex.json +5 -12
  7. package/daemon/assets/plugins/openrig-core/hooks/scripts/refocus.cjs +194 -124
  8. package/daemon/assets/plugins/openrig-core/skills/mission-slice-sop/SKILL.md +18 -23
  9. package/daemon/assets/plugins/openrig-core/skills/openrig-operating-model/CHANGELOG.md +92 -0
  10. package/daemon/assets/plugins/openrig-core/skills/openrig-operating-model/REVISION-GUIDE.md +34 -0
  11. package/daemon/assets/plugins/openrig-core/skills/openrig-operating-model/ROADMAP.md +23 -0
  12. package/daemon/assets/plugins/openrig-core/skills/openrig-operating-model/ROLLOUT.md +234 -0
  13. package/daemon/assets/plugins/openrig-core/skills/openrig-operating-model/SKILL.md +404 -0
  14. package/daemon/assets/plugins/openrig-core/skills/openrig-operating-model/scripts/compose.py +653 -0
  15. package/daemon/assets/plugins/openrig-core/skills/openrig-operating-model/scripts/scaffold.sh +34 -0
  16. package/daemon/assets/plugins/openrig-core/skills/openrig-operating-model/scripts/trace-due.sh +32 -0
  17. package/daemon/assets/plugins/openrig-core/skills/openrig-operating-model/scripts/trace-stamp.sh +5 -0
  18. package/daemon/assets/plugins/openrig-core/skills/openrig-operating-model/scripts/trunk-diff.sh +18 -0
  19. package/daemon/assets/plugins/openrig-core/skills/openrig-operating-model/templates/LEARNED.md +40 -0
  20. package/daemon/assets/plugins/openrig-core/skills/openrig-operating-model/templates/NOTES.md +9 -0
  21. package/daemon/assets/plugins/openrig-core/skills/openrig-operating-model/templates/PLAYBOOK.md +5 -0
  22. package/daemon/assets/plugins/openrig-core/skills/openrig-operating-model/templates/SOP.md +24 -0
  23. package/daemon/assets/plugins/openrig-core/skills/openrig-operating-model/templates/SPEC.md +54 -0
  24. package/daemon/assets/plugins/openrig-core/skills/openrig-skills/SKILL.md +2 -0
  25. package/daemon/assets/plugins/openrig-core/skills/refocusing/SKILL.md +31 -0
  26. package/daemon/assets/plugins/openrig-core/skills/refocusing/references/refocus.md +22 -0
  27. package/daemon/assets/plugins/openrig-core/skills/refocusing/scripts/trace-to-root.py +221 -0
  28. package/daemon/assets/plugins/openrig-core/skills/retiring-and-inheriting-a-seat/SKILL.md +3 -3
  29. package/daemon/context-packs/onboarding-width/manifest.yaml +11 -0
  30. package/daemon/context-packs/{world/install/reference-material.md → onboarding-width/public-reference-material.md} +4 -26
  31. package/daemon/context-packs/{world/install/what-you-can-do.md → onboarding-width/public-what-you-can-do.md} +13 -9
  32. package/daemon/context-packs/skills/core/agent-starters/manifest.yaml +1 -1
  33. package/daemon/context-packs/skills/core/agent-startup-and-context-ingestion/SKILL.md +1 -1
  34. package/daemon/context-packs/skills/core/agent-startup-and-context-ingestion/manifest.yaml +1 -1
  35. package/daemon/context-packs/skills/core/attention-queue/manifest.yaml +1 -1
  36. package/daemon/context-packs/skills/core/cross-host-rig-commands/manifest.yaml +1 -1
  37. package/daemon/context-packs/skills/core/human-in-the-loop/manifest.yaml +1 -1
  38. package/daemon/context-packs/skills/core/openrig-architect/manifest.yaml +1 -1
  39. package/daemon/context-packs/skills/core/openrig-cmux/manifest.yaml +1 -1
  40. package/daemon/context-packs/skills/core/openrig-herdr/manifest.yaml +1 -1
  41. package/daemon/context-packs/skills/core/openrig-upgrade/manifest.yaml +1 -1
  42. package/daemon/context-packs/skills/core/rig-bundles-and-shareable-artifacts/manifest.yaml +1 -1
  43. package/daemon/context-packs/skills/core/rig-lifecycle/manifest.yaml +1 -1
  44. package/daemon/context-packs/skills/core/session-source-fork/manifest.yaml +1 -1
  45. package/daemon/context-packs/skills/core/specification-system/manifest.yaml +1 -1
  46. package/daemon/context-packs/skills/core/topology-mutation-and-seat-management/manifest.yaml +1 -1
  47. package/daemon/context-packs/skills/core/watchdog/manifest.yaml +1 -1
  48. package/daemon/context-packs/skills/pm/backlog-capture/manifest.yaml +1 -1
  49. package/daemon/context-packs/skills/pm/context-builder/manifest.yaml +1 -1
  50. package/daemon/context-packs/skills/pm/exec-summary/manifest.yaml +1 -1
  51. package/daemon/context-packs/skills/pm/office-hours/manifest.yaml +1 -1
  52. package/daemon/context-packs/skills/pm/plan-review/manifest.yaml +1 -1
  53. package/daemon/context-packs/skills/pm/requirements-writer/SKILL.md +21 -15
  54. package/daemon/context-packs/skills/pm/requirements-writer/manifest.yaml +3 -3
  55. package/daemon/context-packs/skills/pm/ui-mockup/manifest.yaml +1 -1
  56. package/daemon/context-packs/skills/pods/development-team/manifest.yaml +1 -1
  57. package/daemon/context-packs/skills/pods/orchestration-team/manifest.yaml +1 -1
  58. package/daemon/context-packs/skills/pods/oversight-team/manifest.yaml +1 -1
  59. package/daemon/context-packs/skills/pods/review-team/manifest.yaml +1 -1
  60. package/daemon/context-packs/skills/process/agent-browser/manifest.yaml +1 -1
  61. package/daemon/context-packs/skills/process/brainstorming/manifest.yaml +1 -1
  62. package/daemon/context-packs/skills/process/context-engineering/manifest.yaml +1 -1
  63. package/daemon/context-packs/skills/process/dogfood/manifest.yaml +1 -1
  64. package/daemon/context-packs/skills/process/executing-plans/manifest.yaml +1 -1
  65. package/daemon/context-packs/skills/process/frontend-design/manifest.yaml +1 -1
  66. package/daemon/context-packs/skills/process/systematic-debugging/manifest.yaml +1 -1
  67. package/daemon/context-packs/skills/process/test-driven-development/manifest.yaml +1 -1
  68. package/daemon/context-packs/skills/process/using-superpowers/manifest.yaml +1 -1
  69. package/daemon/context-packs/skills/process/verification-before-completion/manifest.yaml +1 -1
  70. package/daemon/context-packs/skills/process/writing-plans/manifest.yaml +1 -1
  71. package/daemon/context-packs/world-example/manifest.yaml +8 -0
  72. package/daemon/context-packs/world-example/your-world.md +37 -0
  73. package/daemon/dist/adapters/claude-code-adapter.d.ts +15 -0
  74. package/daemon/dist/adapters/claude-code-adapter.d.ts.map +1 -1
  75. package/daemon/dist/adapters/claude-code-adapter.js +57 -0
  76. package/daemon/dist/adapters/claude-code-adapter.js.map +1 -1
  77. package/daemon/dist/build-info.js +3 -3
  78. package/daemon/dist/db/all-migrations.d.ts.map +1 -1
  79. package/daemon/dist/db/all-migrations.js +4 -0
  80. package/daemon/dist/db/all-migrations.js.map +1 -1
  81. package/daemon/dist/db/migrations/072_thread_seat_map.d.ts +3 -0
  82. package/daemon/dist/db/migrations/072_thread_seat_map.d.ts.map +1 -0
  83. package/daemon/dist/db/migrations/072_thread_seat_map.js +22 -0
  84. package/daemon/dist/db/migrations/072_thread_seat_map.js.map +1 -0
  85. package/daemon/dist/db/migrations/073_queue_transition_wakes.d.ts +3 -0
  86. package/daemon/dist/db/migrations/073_queue_transition_wakes.d.ts.map +1 -0
  87. package/daemon/dist/db/migrations/073_queue_transition_wakes.js +21 -0
  88. package/daemon/dist/db/migrations/073_queue_transition_wakes.js.map +1 -0
  89. package/daemon/dist/domain/activity-taxonomy.d.ts +112 -0
  90. package/daemon/dist/domain/activity-taxonomy.d.ts.map +1 -0
  91. package/daemon/dist/domain/activity-taxonomy.js +99 -0
  92. package/daemon/dist/domain/activity-taxonomy.js.map +1 -0
  93. package/daemon/dist/domain/bind-plan.d.ts +19 -0
  94. package/daemon/dist/domain/bind-plan.d.ts.map +1 -0
  95. package/daemon/dist/domain/bind-plan.js +25 -0
  96. package/daemon/dist/domain/bind-plan.js.map +1 -0
  97. package/daemon/dist/domain/event-bus.d.ts +6 -0
  98. package/daemon/dist/domain/event-bus.d.ts.map +1 -1
  99. package/daemon/dist/domain/event-bus.js +15 -5
  100. package/daemon/dist/domain/event-bus.js.map +1 -1
  101. package/daemon/dist/domain/gateway/gateway-process-main.d.ts.map +1 -1
  102. package/daemon/dist/domain/gateway/gateway-process-main.js +9 -0
  103. package/daemon/dist/domain/gateway/gateway-process-main.js.map +1 -1
  104. package/daemon/dist/domain/gateway/gateway-process.d.ts.map +1 -1
  105. package/daemon/dist/domain/gateway/gateway-process.js +9 -0
  106. package/daemon/dist/domain/gateway/gateway-process.js.map +1 -1
  107. package/daemon/dist/domain/gateway/gateway-subsystem.d.ts +80 -0
  108. package/daemon/dist/domain/gateway/gateway-subsystem.d.ts.map +1 -0
  109. package/daemon/dist/domain/gateway/gateway-subsystem.js +149 -0
  110. package/daemon/dist/domain/gateway/gateway-subsystem.js.map +1 -0
  111. package/daemon/dist/domain/gateway/human-registry.d.ts +109 -0
  112. package/daemon/dist/domain/gateway/human-registry.d.ts.map +1 -1
  113. package/daemon/dist/domain/gateway/human-registry.js +250 -0
  114. package/daemon/dist/domain/gateway/human-registry.js.map +1 -1
  115. package/{dist → daemon/dist/domain/gateway}/slack/config.d.ts +8 -5
  116. package/daemon/dist/domain/gateway/slack/config.d.ts.map +1 -0
  117. package/{dist → daemon/dist/domain/gateway}/slack/config.js +8 -6
  118. package/daemon/dist/domain/gateway/slack/config.js.map +1 -0
  119. package/{dist → daemon/dist/domain/gateway}/slack/inbound-admission.d.ts +1 -1
  120. package/daemon/dist/domain/gateway/slack/inbound-admission.d.ts.map +1 -0
  121. package/daemon/dist/domain/gateway/slack/inbound-admission.js.map +1 -0
  122. package/{dist → daemon/dist/domain/gateway}/slack/inbound.d.ts +14 -3
  123. package/daemon/dist/domain/gateway/slack/inbound.d.ts.map +1 -0
  124. package/{dist → daemon/dist/domain/gateway}/slack/inbound.js +6 -5
  125. package/daemon/dist/domain/gateway/slack/inbound.js.map +1 -0
  126. package/daemon/dist/domain/gateway/slack/message.d.ts +80 -0
  127. package/daemon/dist/domain/gateway/slack/message.d.ts.map +1 -0
  128. package/daemon/dist/domain/gateway/slack/message.js +164 -0
  129. package/daemon/dist/domain/gateway/slack/message.js.map +1 -0
  130. package/daemon/dist/domain/gateway/slack/outbound-driver.d.ts +54 -0
  131. package/daemon/dist/domain/gateway/slack/outbound-driver.d.ts.map +1 -0
  132. package/daemon/dist/domain/gateway/slack/outbound-driver.js +96 -0
  133. package/daemon/dist/domain/gateway/slack/outbound-driver.js.map +1 -0
  134. package/daemon/dist/domain/gateway/slack/queue-access.d.ts +53 -0
  135. package/daemon/dist/domain/gateway/slack/queue-access.d.ts.map +1 -0
  136. package/daemon/dist/domain/gateway/slack/queue-access.js +72 -0
  137. package/daemon/dist/domain/gateway/slack/queue-access.js.map +1 -0
  138. package/daemon/dist/domain/gateway/slack/secrets.d.ts.map +1 -0
  139. package/daemon/dist/domain/gateway/slack/secrets.js.map +1 -0
  140. package/daemon/dist/domain/gateway/slack/slack-api.d.ts +106 -0
  141. package/daemon/dist/domain/gateway/slack/slack-api.d.ts.map +1 -0
  142. package/daemon/dist/domain/gateway/slack/slack-api.js +198 -0
  143. package/daemon/dist/domain/gateway/slack/slack-api.js.map +1 -0
  144. package/daemon/dist/domain/gateway/slack/slack-delivery.d.ts +47 -0
  145. package/daemon/dist/domain/gateway/slack/slack-delivery.d.ts.map +1 -0
  146. package/daemon/dist/domain/gateway/slack/slack-delivery.js +147 -0
  147. package/daemon/dist/domain/gateway/slack/slack-delivery.js.map +1 -0
  148. package/daemon/dist/domain/gateway/slack/slack-subsystem.d.ts +21 -0
  149. package/daemon/dist/domain/gateway/slack/slack-subsystem.d.ts.map +1 -0
  150. package/daemon/dist/domain/gateway/slack/slack-subsystem.js +198 -0
  151. package/daemon/dist/domain/gateway/slack/slack-subsystem.js.map +1 -0
  152. package/daemon/dist/domain/gateway/slack/socket-inbound.d.ts +30 -0
  153. package/daemon/dist/domain/gateway/slack/socket-inbound.d.ts.map +1 -0
  154. package/daemon/dist/domain/gateway/slack/socket-inbound.js +99 -0
  155. package/daemon/dist/domain/gateway/slack/socket-inbound.js.map +1 -0
  156. package/daemon/dist/domain/gateway/slack/state-store.d.ts.map +1 -0
  157. package/daemon/dist/domain/gateway/slack/state-store.js.map +1 -0
  158. package/daemon/dist/domain/gateway/slack/thread-routing.d.ts +17 -0
  159. package/daemon/dist/domain/gateway/slack/thread-routing.d.ts.map +1 -0
  160. package/daemon/dist/domain/gateway/slack/thread-routing.js +35 -0
  161. package/daemon/dist/domain/gateway/slack/thread-routing.js.map +1 -0
  162. package/daemon/dist/domain/gateway/slack/thread-seat-map.d.ts +56 -0
  163. package/daemon/dist/domain/gateway/slack/thread-seat-map.d.ts.map +1 -0
  164. package/daemon/dist/domain/gateway/slack/thread-seat-map.js +103 -0
  165. package/daemon/dist/domain/gateway/slack/thread-seat-map.js.map +1 -0
  166. package/daemon/dist/domain/gateway/spawn-gateway.d.ts.map +1 -1
  167. package/daemon/dist/domain/gateway/spawn-gateway.js +9 -0
  168. package/daemon/dist/domain/gateway/spawn-gateway.js.map +1 -1
  169. package/daemon/dist/domain/gateway/transport.d.ts.map +1 -1
  170. package/daemon/dist/domain/gateway/transport.js +9 -0
  171. package/daemon/dist/domain/gateway/transport.js.map +1 -1
  172. package/daemon/dist/domain/node-inventory.d.ts.map +1 -1
  173. package/daemon/dist/domain/node-inventory.js +20 -0
  174. package/daemon/dist/domain/node-inventory.js.map +1 -1
  175. package/daemon/dist/domain/parked-query.d.ts +81 -0
  176. package/daemon/dist/domain/parked-query.d.ts.map +1 -0
  177. package/daemon/dist/domain/parked-query.js +126 -0
  178. package/daemon/dist/domain/parked-query.js.map +1 -0
  179. package/daemon/dist/domain/queue-pickup.d.ts +38 -0
  180. package/daemon/dist/domain/queue-pickup.d.ts.map +1 -0
  181. package/daemon/dist/domain/queue-pickup.js +67 -0
  182. package/daemon/dist/domain/queue-pickup.js.map +1 -0
  183. package/daemon/dist/domain/queue-repository.d.ts +38 -10
  184. package/daemon/dist/domain/queue-repository.d.ts.map +1 -1
  185. package/daemon/dist/domain/queue-repository.js +267 -35
  186. package/daemon/dist/domain/queue-repository.js.map +1 -1
  187. package/daemon/dist/domain/queue-stuck-sweep.d.ts +77 -0
  188. package/daemon/dist/domain/queue-stuck-sweep.d.ts.map +1 -0
  189. package/daemon/dist/domain/queue-stuck-sweep.js +348 -0
  190. package/daemon/dist/domain/queue-stuck-sweep.js.map +1 -0
  191. package/daemon/dist/domain/queue-wake-ladder.d.ts +96 -0
  192. package/daemon/dist/domain/queue-wake-ladder.d.ts.map +1 -0
  193. package/daemon/dist/domain/queue-wake-ladder.js +533 -0
  194. package/daemon/dist/domain/queue-wake-ladder.js.map +1 -0
  195. package/daemon/dist/domain/queue-wake-repository.d.ts +37 -0
  196. package/daemon/dist/domain/queue-wake-repository.d.ts.map +1 -0
  197. package/daemon/dist/domain/queue-wake-repository.js +80 -0
  198. package/daemon/dist/domain/queue-wake-repository.js.map +1 -0
  199. package/daemon/dist/domain/rebuild-priming-chain.d.ts +28 -0
  200. package/daemon/dist/domain/rebuild-priming-chain.d.ts.map +1 -0
  201. package/daemon/dist/domain/rebuild-priming-chain.js +71 -0
  202. package/daemon/dist/domain/rebuild-priming-chain.js.map +1 -0
  203. package/daemon/dist/domain/review/compose.d.ts +3 -1
  204. package/daemon/dist/domain/review/compose.d.ts.map +1 -1
  205. package/daemon/dist/domain/review/compose.js +14 -8
  206. package/daemon/dist/domain/review/compose.js.map +1 -1
  207. package/daemon/dist/domain/review/gather.d.ts.map +1 -1
  208. package/daemon/dist/domain/review/gather.js +3 -1
  209. package/daemon/dist/domain/review/gather.js.map +1 -1
  210. package/daemon/dist/domain/rigspec-instantiator.d.ts +3 -0
  211. package/daemon/dist/domain/rigspec-instantiator.d.ts.map +1 -1
  212. package/daemon/dist/domain/rigspec-instantiator.js +18 -0
  213. package/daemon/dist/domain/rigspec-instantiator.js.map +1 -1
  214. package/daemon/dist/domain/scope/plan-lock-artifacts.d.ts +6 -5
  215. package/daemon/dist/domain/scope/plan-lock-artifacts.d.ts.map +1 -1
  216. package/daemon/dist/domain/scope/plan-lock-artifacts.js +23 -20
  217. package/daemon/dist/domain/scope/plan-lock-artifacts.js.map +1 -1
  218. package/daemon/dist/domain/scope/scaffold-placeholder.d.ts +4 -5
  219. package/daemon/dist/domain/scope/scaffold-placeholder.d.ts.map +1 -1
  220. package/daemon/dist/domain/scope/scaffold-placeholder.js +6 -7
  221. package/daemon/dist/domain/scope/scaffold-placeholder.js.map +1 -1
  222. package/daemon/dist/domain/scope/scope-approve.d.ts +1 -1
  223. package/daemon/dist/domain/scope/scope-approve.d.ts.map +1 -1
  224. package/daemon/dist/domain/scope/scope-approve.js +5 -4
  225. package/daemon/dist/domain/scope/scope-approve.js.map +1 -1
  226. package/daemon/dist/domain/scope/scope-audit.d.ts +42 -3
  227. package/daemon/dist/domain/scope/scope-audit.d.ts.map +1 -1
  228. package/daemon/dist/domain/scope/scope-audit.js +78 -93
  229. package/daemon/dist/domain/scope/scope-audit.js.map +1 -1
  230. package/daemon/dist/domain/scope/scope-view-projection.d.ts.map +1 -1
  231. package/daemon/dist/domain/scope/scope-view-projection.js +7 -2
  232. package/daemon/dist/domain/scope/scope-view-projection.js.map +1 -1
  233. package/daemon/dist/domain/seat-activity-service.d.ts +91 -0
  234. package/daemon/dist/domain/seat-activity-service.d.ts.map +1 -1
  235. package/daemon/dist/domain/seat-activity-service.js +416 -1
  236. package/daemon/dist/domain/seat-activity-service.js.map +1 -1
  237. package/daemon/dist/domain/seat-handover-planner.d.ts +14 -0
  238. package/daemon/dist/domain/seat-handover-planner.d.ts.map +1 -1
  239. package/daemon/dist/domain/seat-handover-planner.js +14 -1
  240. package/daemon/dist/domain/seat-handover-planner.js.map +1 -1
  241. package/daemon/dist/domain/seat-handover-service.d.ts +54 -1
  242. package/daemon/dist/domain/seat-handover-service.d.ts.map +1 -1
  243. package/daemon/dist/domain/seat-handover-service.js +162 -19
  244. package/daemon/dist/domain/seat-handover-service.js.map +1 -1
  245. package/daemon/dist/domain/session-transport.js +1 -2
  246. package/daemon/dist/domain/session-transport.js.map +1 -1
  247. package/daemon/dist/domain/successor-session-launcher.d.ts +6 -1
  248. package/daemon/dist/domain/successor-session-launcher.d.ts.map +1 -1
  249. package/daemon/dist/domain/successor-session-launcher.js +3 -3
  250. package/daemon/dist/domain/successor-session-launcher.js.map +1 -1
  251. package/daemon/dist/domain/types.d.ts +33 -0
  252. package/daemon/dist/domain/types.d.ts.map +1 -1
  253. package/daemon/dist/domain/types.js.map +1 -1
  254. package/daemon/dist/domain/user-settings/settings-store.d.ts +1 -1
  255. package/daemon/dist/domain/user-settings/settings-store.d.ts.map +1 -1
  256. package/daemon/dist/domain/user-settings/settings-store.js +48 -0
  257. package/daemon/dist/domain/user-settings/settings-store.js.map +1 -1
  258. package/daemon/dist/domain/view-projector.d.ts +1 -1
  259. package/daemon/dist/domain/view-projector.d.ts.map +1 -1
  260. package/daemon/dist/domain/view-projector.js +41 -2
  261. package/daemon/dist/domain/view-projector.js.map +1 -1
  262. package/daemon/dist/domain/watchdog-policy-engine.d.ts +7 -0
  263. package/daemon/dist/domain/watchdog-policy-engine.d.ts.map +1 -1
  264. package/daemon/dist/domain/watchdog-policy-engine.js +3 -0
  265. package/daemon/dist/domain/watchdog-policy-engine.js.map +1 -1
  266. package/daemon/dist/domain/workspace/default-workspace-scaffold.d.ts +4 -3
  267. package/daemon/dist/domain/workspace/default-workspace-scaffold.d.ts.map +1 -1
  268. package/daemon/dist/domain/workspace/default-workspace-scaffold.js +56 -196
  269. package/daemon/dist/domain/workspace/default-workspace-scaffold.js.map +1 -1
  270. package/daemon/dist/domain/workspace/getting-started-narrative.js +1 -1
  271. package/daemon/dist/domain/workspace/getting-started-narrative.js.map +1 -1
  272. package/daemon/dist/domain/workspace/workspace-doctor.d.ts +8 -11
  273. package/daemon/dist/domain/workspace/workspace-doctor.d.ts.map +1 -1
  274. package/daemon/dist/domain/workspace/workspace-doctor.js +23 -25
  275. package/daemon/dist/domain/workspace/workspace-doctor.js.map +1 -1
  276. package/daemon/dist/gateway-slack-surface.d.ts +4 -0
  277. package/daemon/dist/gateway-slack-surface.d.ts.map +1 -0
  278. package/daemon/dist/gateway-slack-surface.js +8 -0
  279. package/daemon/dist/gateway-slack-surface.js.map +1 -0
  280. package/daemon/dist/index.d.ts +29 -0
  281. package/daemon/dist/index.d.ts.map +1 -1
  282. package/daemon/dist/index.js +99 -4
  283. package/daemon/dist/index.js.map +1 -1
  284. package/daemon/dist/lib/pane-envelope.d.ts +1 -1
  285. package/daemon/dist/lib/pane-envelope.d.ts.map +1 -1
  286. package/daemon/dist/lib/pane-envelope.js +8 -14
  287. package/daemon/dist/lib/pane-envelope.js.map +1 -1
  288. package/daemon/dist/routes/activity.d.ts +13 -0
  289. package/daemon/dist/routes/activity.d.ts.map +1 -1
  290. package/daemon/dist/routes/activity.js +186 -0
  291. package/daemon/dist/routes/activity.js.map +1 -1
  292. package/daemon/dist/routes/config.js +2 -2
  293. package/daemon/dist/routes/config.js.map +1 -1
  294. package/daemon/dist/routes/gateway.d.ts +3 -0
  295. package/daemon/dist/routes/gateway.d.ts.map +1 -0
  296. package/daemon/dist/routes/gateway.js +46 -0
  297. package/daemon/dist/routes/gateway.js.map +1 -0
  298. package/daemon/dist/routes/health-summary.d.ts.map +1 -1
  299. package/daemon/dist/routes/health-summary.js +8 -0
  300. package/daemon/dist/routes/health-summary.js.map +1 -1
  301. package/daemon/dist/routes/queue.d.ts.map +1 -1
  302. package/daemon/dist/routes/queue.js +3 -1
  303. package/daemon/dist/routes/queue.js.map +1 -1
  304. package/daemon/dist/routes/scope-audit.d.ts.map +1 -1
  305. package/daemon/dist/routes/scope-audit.js +72 -13
  306. package/daemon/dist/routes/scope-audit.js.map +1 -1
  307. package/daemon/dist/routes/seat.d.ts.map +1 -1
  308. package/daemon/dist/routes/seat.js +15 -0
  309. package/daemon/dist/routes/seat.js.map +1 -1
  310. package/daemon/dist/server.d.ts +17 -0
  311. package/daemon/dist/server.d.ts.map +1 -1
  312. package/daemon/dist/server.js +25 -4
  313. package/daemon/dist/server.js.map +1 -1
  314. package/daemon/dist/startup.d.ts +4 -0
  315. package/daemon/dist/startup.d.ts.map +1 -1
  316. package/daemon/dist/startup.js +33 -0
  317. package/daemon/dist/startup.js.map +1 -1
  318. package/daemon/docs/reference/agent-state-taxonomy.md +106 -0
  319. package/daemon/docs/reference/project-workspace.md +22 -14
  320. package/daemon/docs/reference/refocus-channel.md +27 -14
  321. package/daemon/docs/reference/sdlc-conventions.md +24 -13
  322. package/daemon/specs/agents/shared/skills/core/agent-startup-and-context-ingestion/SKILL.md +1 -1
  323. package/daemon/specs/agents/shared/skills/pm/requirements-writer/SKILL.md +21 -15
  324. package/daemon/specs/rigs/launch/kernel/agents/advisor/lead/guidance/role.md +1 -1
  325. package/dist/build-info.js +3 -3
  326. package/dist/commands/config-init-workspace.d.ts.map +1 -1
  327. package/dist/commands/config-init-workspace.js +32 -57
  328. package/dist/commands/config-init-workspace.js.map +1 -1
  329. package/dist/commands/config.d.ts.map +1 -1
  330. package/dist/commands/config.js +5 -0
  331. package/dist/commands/config.js.map +1 -1
  332. package/dist/commands/daemon.d.ts.map +1 -1
  333. package/dist/commands/daemon.js +14 -4
  334. package/dist/commands/daemon.js.map +1 -1
  335. package/dist/commands/gateway.d.ts +19 -1
  336. package/dist/commands/gateway.d.ts.map +1 -1
  337. package/dist/commands/gateway.js +157 -33
  338. package/dist/commands/gateway.js.map +1 -1
  339. package/dist/commands/parked.d.ts +3 -0
  340. package/dist/commands/parked.d.ts.map +1 -0
  341. package/dist/commands/parked.js +83 -0
  342. package/dist/commands/parked.js.map +1 -0
  343. package/dist/commands/proof.d.ts +2 -1
  344. package/dist/commands/proof.d.ts.map +1 -1
  345. package/dist/commands/proof.js +8 -8
  346. package/dist/commands/proof.js.map +1 -1
  347. package/dist/commands/ps.d.ts +10 -0
  348. package/dist/commands/ps.d.ts.map +1 -1
  349. package/dist/commands/ps.js +14 -3
  350. package/dist/commands/ps.js.map +1 -1
  351. package/dist/commands/queue.d.ts.map +1 -1
  352. package/dist/commands/queue.js +31 -3
  353. package/dist/commands/queue.js.map +1 -1
  354. package/dist/commands/scope.d.ts.map +1 -1
  355. package/dist/commands/scope.js +255 -136
  356. package/dist/commands/scope.js.map +1 -1
  357. package/dist/commands/seat.d.ts.map +1 -1
  358. package/dist/commands/seat.js +40 -10
  359. package/dist/commands/seat.js.map +1 -1
  360. package/dist/commands/send.d.ts +1 -1
  361. package/dist/commands/send.d.ts.map +1 -1
  362. package/dist/commands/send.js +13 -14
  363. package/dist/commands/send.js.map +1 -1
  364. package/dist/commands/slack.d.ts +14 -28
  365. package/dist/commands/slack.d.ts.map +1 -1
  366. package/dist/commands/slack.js +73 -187
  367. package/dist/commands/slack.js.map +1 -1
  368. package/dist/commands/start.d.ts +3 -0
  369. package/dist/commands/start.d.ts.map +1 -1
  370. package/dist/commands/start.js +12 -5
  371. package/dist/commands/start.js.map +1 -1
  372. package/dist/commands/up.d.ts.map +1 -1
  373. package/dist/commands/up.js +11 -4
  374. package/dist/commands/up.js.map +1 -1
  375. package/dist/commands/view.d.ts +4 -2
  376. package/dist/commands/view.d.ts.map +1 -1
  377. package/dist/commands/view.js +1 -1
  378. package/dist/commands/view.js.map +1 -1
  379. package/dist/commands/watchdog.d.ts.map +1 -1
  380. package/dist/commands/watchdog.js +2 -1
  381. package/dist/commands/watchdog.js.map +1 -1
  382. package/dist/commands/workspace.js +1 -1
  383. package/dist/config-store.d.ts +15 -1
  384. package/dist/config-store.d.ts.map +1 -1
  385. package/dist/config-store.js +60 -0
  386. package/dist/config-store.js.map +1 -1
  387. package/dist/cross-host-target.d.ts.map +1 -1
  388. package/dist/cross-host-target.js +5 -4
  389. package/dist/cross-host-target.js.map +1 -1
  390. package/dist/daemon-lifecycle.d.ts +45 -3
  391. package/dist/daemon-lifecycle.d.ts.map +1 -1
  392. package/dist/daemon-lifecycle.js +126 -0
  393. package/dist/daemon-lifecycle.js.map +1 -1
  394. package/dist/index.d.ts.map +1 -1
  395. package/dist/index.js +2 -0
  396. package/dist/index.js.map +1 -1
  397. package/dist/lib/scope/capability-delta.d.ts +9 -0
  398. package/dist/lib/scope/capability-delta.d.ts.map +1 -0
  399. package/dist/lib/scope/capability-delta.js +73 -0
  400. package/dist/lib/scope/capability-delta.js.map +1 -0
  401. package/dist/lib/scope/scaffold-placeholder.d.ts +4 -5
  402. package/dist/lib/scope/scaffold-placeholder.d.ts.map +1 -1
  403. package/dist/lib/scope/scaffold-placeholder.js +6 -7
  404. package/dist/lib/scope/scaffold-placeholder.js.map +1 -1
  405. package/dist/lib/scope/scope-audit.d.ts +42 -3
  406. package/dist/lib/scope/scope-audit.d.ts.map +1 -1
  407. package/dist/lib/scope/scope-audit.js +78 -93
  408. package/dist/lib/scope/scope-audit.js.map +1 -1
  409. package/dist/lib/scope/scope-fs.d.ts +18 -14
  410. package/dist/lib/scope/scope-fs.d.ts.map +1 -1
  411. package/dist/lib/scope/scope-fs.js +60 -29
  412. package/dist/lib/scope/scope-fs.js.map +1 -1
  413. package/dist/lib/scope/templates.d.ts +17 -17
  414. package/dist/lib/scope/templates.d.ts.map +1 -1
  415. package/dist/lib/scope/templates.js +35 -39
  416. package/dist/lib/scope/templates.js.map +1 -1
  417. package/dist/lib/scope-templates/backlog-deprecation.md +3 -1
  418. package/dist/lib/scope-templates/backlog-tech-debt.md +3 -1
  419. package/dist/lib/scope-templates/bug-fix.md +3 -1
  420. package/dist/lib/scope-templates/capability-delta.md +60 -0
  421. package/dist/lib/scope-templates/mission-placeholder.md +9 -40
  422. package/dist/lib/scope-templates/mission-progress.md +5 -6
  423. package/dist/lib/scope-templates/mission-release.md +9 -40
  424. package/dist/lib/scope-templates/notes.md +14 -0
  425. package/dist/lib/scope-templates/placeholder.md +3 -1
  426. package/dist/lib/scope-templates/proof.md +1 -1
  427. package/dist/lib/scope-templates/release-feature.md +3 -1
  428. package/dist/lib/scope-templates/research.md +3 -1
  429. package/dist/lib/scope-templates/slice-progress.md +4 -5
  430. package/node_modules/@openrig/daemon/dist/adapters/claude-code-adapter.d.ts +15 -0
  431. package/node_modules/@openrig/daemon/dist/adapters/claude-code-adapter.d.ts.map +1 -1
  432. package/node_modules/@openrig/daemon/dist/adapters/claude-code-adapter.js +57 -0
  433. package/node_modules/@openrig/daemon/dist/adapters/claude-code-adapter.js.map +1 -1
  434. package/node_modules/@openrig/daemon/dist/build-info.js +3 -3
  435. package/node_modules/@openrig/daemon/dist/db/all-migrations.d.ts.map +1 -1
  436. package/node_modules/@openrig/daemon/dist/db/all-migrations.js +4 -0
  437. package/node_modules/@openrig/daemon/dist/db/all-migrations.js.map +1 -1
  438. package/node_modules/@openrig/daemon/dist/db/migrations/072_thread_seat_map.d.ts +3 -0
  439. package/node_modules/@openrig/daemon/dist/db/migrations/072_thread_seat_map.d.ts.map +1 -0
  440. package/node_modules/@openrig/daemon/dist/db/migrations/072_thread_seat_map.js +22 -0
  441. package/node_modules/@openrig/daemon/dist/db/migrations/072_thread_seat_map.js.map +1 -0
  442. package/node_modules/@openrig/daemon/dist/db/migrations/073_queue_transition_wakes.d.ts +3 -0
  443. package/node_modules/@openrig/daemon/dist/db/migrations/073_queue_transition_wakes.d.ts.map +1 -0
  444. package/node_modules/@openrig/daemon/dist/db/migrations/073_queue_transition_wakes.js +21 -0
  445. package/node_modules/@openrig/daemon/dist/db/migrations/073_queue_transition_wakes.js.map +1 -0
  446. package/node_modules/@openrig/daemon/dist/domain/activity-taxonomy.d.ts +112 -0
  447. package/node_modules/@openrig/daemon/dist/domain/activity-taxonomy.d.ts.map +1 -0
  448. package/node_modules/@openrig/daemon/dist/domain/activity-taxonomy.js +99 -0
  449. package/node_modules/@openrig/daemon/dist/domain/activity-taxonomy.js.map +1 -0
  450. package/node_modules/@openrig/daemon/dist/domain/bind-plan.d.ts +19 -0
  451. package/node_modules/@openrig/daemon/dist/domain/bind-plan.d.ts.map +1 -0
  452. package/node_modules/@openrig/daemon/dist/domain/bind-plan.js +25 -0
  453. package/node_modules/@openrig/daemon/dist/domain/bind-plan.js.map +1 -0
  454. package/node_modules/@openrig/daemon/dist/domain/event-bus.d.ts +6 -0
  455. package/node_modules/@openrig/daemon/dist/domain/event-bus.d.ts.map +1 -1
  456. package/node_modules/@openrig/daemon/dist/domain/event-bus.js +15 -5
  457. package/node_modules/@openrig/daemon/dist/domain/event-bus.js.map +1 -1
  458. package/node_modules/@openrig/daemon/dist/domain/gateway/gateway-process-main.d.ts.map +1 -1
  459. package/node_modules/@openrig/daemon/dist/domain/gateway/gateway-process-main.js +9 -0
  460. package/node_modules/@openrig/daemon/dist/domain/gateway/gateway-process-main.js.map +1 -1
  461. package/node_modules/@openrig/daemon/dist/domain/gateway/gateway-process.d.ts.map +1 -1
  462. package/node_modules/@openrig/daemon/dist/domain/gateway/gateway-process.js +9 -0
  463. package/node_modules/@openrig/daemon/dist/domain/gateway/gateway-process.js.map +1 -1
  464. package/node_modules/@openrig/daemon/dist/domain/gateway/gateway-subsystem.d.ts +80 -0
  465. package/node_modules/@openrig/daemon/dist/domain/gateway/gateway-subsystem.d.ts.map +1 -0
  466. package/node_modules/@openrig/daemon/dist/domain/gateway/gateway-subsystem.js +149 -0
  467. package/node_modules/@openrig/daemon/dist/domain/gateway/gateway-subsystem.js.map +1 -0
  468. package/node_modules/@openrig/daemon/dist/domain/gateway/human-registry.d.ts +109 -0
  469. package/node_modules/@openrig/daemon/dist/domain/gateway/human-registry.d.ts.map +1 -1
  470. package/node_modules/@openrig/daemon/dist/domain/gateway/human-registry.js +250 -0
  471. package/node_modules/@openrig/daemon/dist/domain/gateway/human-registry.js.map +1 -1
  472. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/config.d.ts +44 -0
  473. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/config.d.ts.map +1 -0
  474. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/config.js +62 -0
  475. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/config.js.map +1 -0
  476. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/inbound-admission.d.ts +8 -0
  477. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/inbound-admission.d.ts.map +1 -0
  478. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/inbound-admission.js +20 -0
  479. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/inbound-admission.js.map +1 -0
  480. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/inbound.d.ts +113 -0
  481. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/inbound.d.ts.map +1 -0
  482. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/inbound.js +146 -0
  483. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/inbound.js.map +1 -0
  484. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/message.d.ts +80 -0
  485. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/message.d.ts.map +1 -0
  486. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/message.js +164 -0
  487. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/message.js.map +1 -0
  488. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/outbound-driver.d.ts +54 -0
  489. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/outbound-driver.d.ts.map +1 -0
  490. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/outbound-driver.js +96 -0
  491. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/outbound-driver.js.map +1 -0
  492. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/queue-access.d.ts +53 -0
  493. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/queue-access.d.ts.map +1 -0
  494. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/queue-access.js +72 -0
  495. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/queue-access.js.map +1 -0
  496. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/secrets.d.ts +21 -0
  497. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/secrets.d.ts.map +1 -0
  498. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/secrets.js +73 -0
  499. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/secrets.js.map +1 -0
  500. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/slack-api.d.ts +106 -0
  501. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/slack-api.d.ts.map +1 -0
  502. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/slack-api.js +198 -0
  503. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/slack-api.js.map +1 -0
  504. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/slack-delivery.d.ts +47 -0
  505. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/slack-delivery.d.ts.map +1 -0
  506. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/slack-delivery.js +147 -0
  507. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/slack-delivery.js.map +1 -0
  508. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/slack-subsystem.d.ts +21 -0
  509. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/slack-subsystem.d.ts.map +1 -0
  510. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/slack-subsystem.js +198 -0
  511. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/slack-subsystem.js.map +1 -0
  512. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/socket-inbound.d.ts +30 -0
  513. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/socket-inbound.d.ts.map +1 -0
  514. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/socket-inbound.js +99 -0
  515. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/socket-inbound.js.map +1 -0
  516. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/state-store.d.ts +62 -0
  517. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/state-store.d.ts.map +1 -0
  518. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/state-store.js +132 -0
  519. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/state-store.js.map +1 -0
  520. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/thread-routing.d.ts +17 -0
  521. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/thread-routing.d.ts.map +1 -0
  522. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/thread-routing.js +35 -0
  523. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/thread-routing.js.map +1 -0
  524. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/thread-seat-map.d.ts +56 -0
  525. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/thread-seat-map.d.ts.map +1 -0
  526. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/thread-seat-map.js +103 -0
  527. package/node_modules/@openrig/daemon/dist/domain/gateway/slack/thread-seat-map.js.map +1 -0
  528. package/node_modules/@openrig/daemon/dist/domain/gateway/spawn-gateway.d.ts.map +1 -1
  529. package/node_modules/@openrig/daemon/dist/domain/gateway/spawn-gateway.js +9 -0
  530. package/node_modules/@openrig/daemon/dist/domain/gateway/spawn-gateway.js.map +1 -1
  531. package/node_modules/@openrig/daemon/dist/domain/gateway/transport.d.ts.map +1 -1
  532. package/node_modules/@openrig/daemon/dist/domain/gateway/transport.js +9 -0
  533. package/node_modules/@openrig/daemon/dist/domain/gateway/transport.js.map +1 -1
  534. package/node_modules/@openrig/daemon/dist/domain/node-inventory.d.ts.map +1 -1
  535. package/node_modules/@openrig/daemon/dist/domain/node-inventory.js +20 -0
  536. package/node_modules/@openrig/daemon/dist/domain/node-inventory.js.map +1 -1
  537. package/node_modules/@openrig/daemon/dist/domain/parked-query.d.ts +81 -0
  538. package/node_modules/@openrig/daemon/dist/domain/parked-query.d.ts.map +1 -0
  539. package/node_modules/@openrig/daemon/dist/domain/parked-query.js +126 -0
  540. package/node_modules/@openrig/daemon/dist/domain/parked-query.js.map +1 -0
  541. package/node_modules/@openrig/daemon/dist/domain/queue-pickup.d.ts +38 -0
  542. package/node_modules/@openrig/daemon/dist/domain/queue-pickup.d.ts.map +1 -0
  543. package/node_modules/@openrig/daemon/dist/domain/queue-pickup.js +67 -0
  544. package/node_modules/@openrig/daemon/dist/domain/queue-pickup.js.map +1 -0
  545. package/node_modules/@openrig/daemon/dist/domain/queue-repository.d.ts +38 -10
  546. package/node_modules/@openrig/daemon/dist/domain/queue-repository.d.ts.map +1 -1
  547. package/node_modules/@openrig/daemon/dist/domain/queue-repository.js +267 -35
  548. package/node_modules/@openrig/daemon/dist/domain/queue-repository.js.map +1 -1
  549. package/node_modules/@openrig/daemon/dist/domain/queue-stuck-sweep.d.ts +77 -0
  550. package/node_modules/@openrig/daemon/dist/domain/queue-stuck-sweep.d.ts.map +1 -0
  551. package/node_modules/@openrig/daemon/dist/domain/queue-stuck-sweep.js +348 -0
  552. package/node_modules/@openrig/daemon/dist/domain/queue-stuck-sweep.js.map +1 -0
  553. package/node_modules/@openrig/daemon/dist/domain/queue-wake-ladder.d.ts +96 -0
  554. package/node_modules/@openrig/daemon/dist/domain/queue-wake-ladder.d.ts.map +1 -0
  555. package/node_modules/@openrig/daemon/dist/domain/queue-wake-ladder.js +533 -0
  556. package/node_modules/@openrig/daemon/dist/domain/queue-wake-ladder.js.map +1 -0
  557. package/node_modules/@openrig/daemon/dist/domain/queue-wake-repository.d.ts +37 -0
  558. package/node_modules/@openrig/daemon/dist/domain/queue-wake-repository.d.ts.map +1 -0
  559. package/node_modules/@openrig/daemon/dist/domain/queue-wake-repository.js +80 -0
  560. package/node_modules/@openrig/daemon/dist/domain/queue-wake-repository.js.map +1 -0
  561. package/node_modules/@openrig/daemon/dist/domain/rebuild-priming-chain.d.ts +28 -0
  562. package/node_modules/@openrig/daemon/dist/domain/rebuild-priming-chain.d.ts.map +1 -0
  563. package/node_modules/@openrig/daemon/dist/domain/rebuild-priming-chain.js +71 -0
  564. package/node_modules/@openrig/daemon/dist/domain/rebuild-priming-chain.js.map +1 -0
  565. package/node_modules/@openrig/daemon/dist/domain/review/compose.d.ts +3 -1
  566. package/node_modules/@openrig/daemon/dist/domain/review/compose.d.ts.map +1 -1
  567. package/node_modules/@openrig/daemon/dist/domain/review/compose.js +14 -8
  568. package/node_modules/@openrig/daemon/dist/domain/review/compose.js.map +1 -1
  569. package/node_modules/@openrig/daemon/dist/domain/review/gather.d.ts.map +1 -1
  570. package/node_modules/@openrig/daemon/dist/domain/review/gather.js +3 -1
  571. package/node_modules/@openrig/daemon/dist/domain/review/gather.js.map +1 -1
  572. package/node_modules/@openrig/daemon/dist/domain/rigspec-instantiator.d.ts +3 -0
  573. package/node_modules/@openrig/daemon/dist/domain/rigspec-instantiator.d.ts.map +1 -1
  574. package/node_modules/@openrig/daemon/dist/domain/rigspec-instantiator.js +18 -0
  575. package/node_modules/@openrig/daemon/dist/domain/rigspec-instantiator.js.map +1 -1
  576. package/node_modules/@openrig/daemon/dist/domain/scope/plan-lock-artifacts.d.ts +6 -5
  577. package/node_modules/@openrig/daemon/dist/domain/scope/plan-lock-artifacts.d.ts.map +1 -1
  578. package/node_modules/@openrig/daemon/dist/domain/scope/plan-lock-artifacts.js +23 -20
  579. package/node_modules/@openrig/daemon/dist/domain/scope/plan-lock-artifacts.js.map +1 -1
  580. package/node_modules/@openrig/daemon/dist/domain/scope/scaffold-placeholder.d.ts +4 -5
  581. package/node_modules/@openrig/daemon/dist/domain/scope/scaffold-placeholder.d.ts.map +1 -1
  582. package/node_modules/@openrig/daemon/dist/domain/scope/scaffold-placeholder.js +6 -7
  583. package/node_modules/@openrig/daemon/dist/domain/scope/scaffold-placeholder.js.map +1 -1
  584. package/node_modules/@openrig/daemon/dist/domain/scope/scope-approve.d.ts +1 -1
  585. package/node_modules/@openrig/daemon/dist/domain/scope/scope-approve.d.ts.map +1 -1
  586. package/node_modules/@openrig/daemon/dist/domain/scope/scope-approve.js +5 -4
  587. package/node_modules/@openrig/daemon/dist/domain/scope/scope-approve.js.map +1 -1
  588. package/node_modules/@openrig/daemon/dist/domain/scope/scope-audit.d.ts +42 -3
  589. package/node_modules/@openrig/daemon/dist/domain/scope/scope-audit.d.ts.map +1 -1
  590. package/node_modules/@openrig/daemon/dist/domain/scope/scope-audit.js +78 -93
  591. package/node_modules/@openrig/daemon/dist/domain/scope/scope-audit.js.map +1 -1
  592. package/node_modules/@openrig/daemon/dist/domain/scope/scope-view-projection.d.ts.map +1 -1
  593. package/node_modules/@openrig/daemon/dist/domain/scope/scope-view-projection.js +7 -2
  594. package/node_modules/@openrig/daemon/dist/domain/scope/scope-view-projection.js.map +1 -1
  595. package/node_modules/@openrig/daemon/dist/domain/seat-activity-service.d.ts +91 -0
  596. package/node_modules/@openrig/daemon/dist/domain/seat-activity-service.d.ts.map +1 -1
  597. package/node_modules/@openrig/daemon/dist/domain/seat-activity-service.js +416 -1
  598. package/node_modules/@openrig/daemon/dist/domain/seat-activity-service.js.map +1 -1
  599. package/node_modules/@openrig/daemon/dist/domain/seat-handover-planner.d.ts +14 -0
  600. package/node_modules/@openrig/daemon/dist/domain/seat-handover-planner.d.ts.map +1 -1
  601. package/node_modules/@openrig/daemon/dist/domain/seat-handover-planner.js +14 -1
  602. package/node_modules/@openrig/daemon/dist/domain/seat-handover-planner.js.map +1 -1
  603. package/node_modules/@openrig/daemon/dist/domain/seat-handover-service.d.ts +54 -1
  604. package/node_modules/@openrig/daemon/dist/domain/seat-handover-service.d.ts.map +1 -1
  605. package/node_modules/@openrig/daemon/dist/domain/seat-handover-service.js +162 -19
  606. package/node_modules/@openrig/daemon/dist/domain/seat-handover-service.js.map +1 -1
  607. package/node_modules/@openrig/daemon/dist/domain/session-transport.js +1 -2
  608. package/node_modules/@openrig/daemon/dist/domain/session-transport.js.map +1 -1
  609. package/node_modules/@openrig/daemon/dist/domain/successor-session-launcher.d.ts +6 -1
  610. package/node_modules/@openrig/daemon/dist/domain/successor-session-launcher.d.ts.map +1 -1
  611. package/node_modules/@openrig/daemon/dist/domain/successor-session-launcher.js +3 -3
  612. package/node_modules/@openrig/daemon/dist/domain/successor-session-launcher.js.map +1 -1
  613. package/node_modules/@openrig/daemon/dist/domain/types.d.ts +33 -0
  614. package/node_modules/@openrig/daemon/dist/domain/types.d.ts.map +1 -1
  615. package/node_modules/@openrig/daemon/dist/domain/types.js.map +1 -1
  616. package/node_modules/@openrig/daemon/dist/domain/user-settings/settings-store.d.ts +1 -1
  617. package/node_modules/@openrig/daemon/dist/domain/user-settings/settings-store.d.ts.map +1 -1
  618. package/node_modules/@openrig/daemon/dist/domain/user-settings/settings-store.js +48 -0
  619. package/node_modules/@openrig/daemon/dist/domain/user-settings/settings-store.js.map +1 -1
  620. package/node_modules/@openrig/daemon/dist/domain/view-projector.d.ts +1 -1
  621. package/node_modules/@openrig/daemon/dist/domain/view-projector.d.ts.map +1 -1
  622. package/node_modules/@openrig/daemon/dist/domain/view-projector.js +41 -2
  623. package/node_modules/@openrig/daemon/dist/domain/view-projector.js.map +1 -1
  624. package/node_modules/@openrig/daemon/dist/domain/watchdog-policy-engine.d.ts +7 -0
  625. package/node_modules/@openrig/daemon/dist/domain/watchdog-policy-engine.d.ts.map +1 -1
  626. package/node_modules/@openrig/daemon/dist/domain/watchdog-policy-engine.js +3 -0
  627. package/node_modules/@openrig/daemon/dist/domain/watchdog-policy-engine.js.map +1 -1
  628. package/node_modules/@openrig/daemon/dist/domain/workspace/default-workspace-scaffold.d.ts +4 -3
  629. package/node_modules/@openrig/daemon/dist/domain/workspace/default-workspace-scaffold.d.ts.map +1 -1
  630. package/node_modules/@openrig/daemon/dist/domain/workspace/default-workspace-scaffold.js +56 -196
  631. package/node_modules/@openrig/daemon/dist/domain/workspace/default-workspace-scaffold.js.map +1 -1
  632. package/node_modules/@openrig/daemon/dist/domain/workspace/getting-started-narrative.js +1 -1
  633. package/node_modules/@openrig/daemon/dist/domain/workspace/getting-started-narrative.js.map +1 -1
  634. package/node_modules/@openrig/daemon/dist/domain/workspace/workspace-doctor.d.ts +8 -11
  635. package/node_modules/@openrig/daemon/dist/domain/workspace/workspace-doctor.d.ts.map +1 -1
  636. package/node_modules/@openrig/daemon/dist/domain/workspace/workspace-doctor.js +23 -25
  637. package/node_modules/@openrig/daemon/dist/domain/workspace/workspace-doctor.js.map +1 -1
  638. package/node_modules/@openrig/daemon/dist/gateway-slack-surface.d.ts +4 -0
  639. package/node_modules/@openrig/daemon/dist/gateway-slack-surface.d.ts.map +1 -0
  640. package/node_modules/@openrig/daemon/dist/gateway-slack-surface.js +8 -0
  641. package/node_modules/@openrig/daemon/dist/gateway-slack-surface.js.map +1 -0
  642. package/node_modules/@openrig/daemon/dist/index.d.ts +29 -0
  643. package/node_modules/@openrig/daemon/dist/index.d.ts.map +1 -1
  644. package/node_modules/@openrig/daemon/dist/index.js +99 -4
  645. package/node_modules/@openrig/daemon/dist/index.js.map +1 -1
  646. package/node_modules/@openrig/daemon/dist/lib/pane-envelope.d.ts +1 -1
  647. package/node_modules/@openrig/daemon/dist/lib/pane-envelope.d.ts.map +1 -1
  648. package/node_modules/@openrig/daemon/dist/lib/pane-envelope.js +8 -14
  649. package/node_modules/@openrig/daemon/dist/lib/pane-envelope.js.map +1 -1
  650. package/node_modules/@openrig/daemon/dist/routes/activity.d.ts +13 -0
  651. package/node_modules/@openrig/daemon/dist/routes/activity.d.ts.map +1 -1
  652. package/node_modules/@openrig/daemon/dist/routes/activity.js +186 -0
  653. package/node_modules/@openrig/daemon/dist/routes/activity.js.map +1 -1
  654. package/node_modules/@openrig/daemon/dist/routes/config.js +2 -2
  655. package/node_modules/@openrig/daemon/dist/routes/config.js.map +1 -1
  656. package/node_modules/@openrig/daemon/dist/routes/gateway.d.ts +3 -0
  657. package/node_modules/@openrig/daemon/dist/routes/gateway.d.ts.map +1 -0
  658. package/node_modules/@openrig/daemon/dist/routes/gateway.js +46 -0
  659. package/node_modules/@openrig/daemon/dist/routes/gateway.js.map +1 -0
  660. package/node_modules/@openrig/daemon/dist/routes/health-summary.d.ts.map +1 -1
  661. package/node_modules/@openrig/daemon/dist/routes/health-summary.js +8 -0
  662. package/node_modules/@openrig/daemon/dist/routes/health-summary.js.map +1 -1
  663. package/node_modules/@openrig/daemon/dist/routes/queue.d.ts.map +1 -1
  664. package/node_modules/@openrig/daemon/dist/routes/queue.js +3 -1
  665. package/node_modules/@openrig/daemon/dist/routes/queue.js.map +1 -1
  666. package/node_modules/@openrig/daemon/dist/routes/scope-audit.d.ts.map +1 -1
  667. package/node_modules/@openrig/daemon/dist/routes/scope-audit.js +72 -13
  668. package/node_modules/@openrig/daemon/dist/routes/scope-audit.js.map +1 -1
  669. package/node_modules/@openrig/daemon/dist/routes/seat.d.ts.map +1 -1
  670. package/node_modules/@openrig/daemon/dist/routes/seat.js +15 -0
  671. package/node_modules/@openrig/daemon/dist/routes/seat.js.map +1 -1
  672. package/node_modules/@openrig/daemon/dist/server.d.ts +17 -0
  673. package/node_modules/@openrig/daemon/dist/server.d.ts.map +1 -1
  674. package/node_modules/@openrig/daemon/dist/server.js +25 -4
  675. package/node_modules/@openrig/daemon/dist/server.js.map +1 -1
  676. package/node_modules/@openrig/daemon/dist/startup.d.ts +4 -0
  677. package/node_modules/@openrig/daemon/dist/startup.d.ts.map +1 -1
  678. package/node_modules/@openrig/daemon/dist/startup.js +33 -0
  679. package/node_modules/@openrig/daemon/dist/startup.js.map +1 -1
  680. package/node_modules/@openrig/daemon/package.json +5 -1
  681. package/package.json +1 -1
  682. package/tui/dist/daemon-client.d.ts +5 -0
  683. package/tui/dist/daemon-client.d.ts.map +1 -1
  684. package/tui/dist/daemon-client.js +17 -0
  685. package/tui/dist/daemon-client.js.map +1 -1
  686. package/tui/dist/hydrate.d.ts.map +1 -1
  687. package/tui/dist/hydrate.js +12 -4
  688. package/tui/dist/hydrate.js.map +1 -1
  689. package/tui/dist/live-events.d.ts +21 -0
  690. package/tui/dist/live-events.d.ts.map +1 -0
  691. package/tui/dist/live-events.js +88 -0
  692. package/tui/dist/live-events.js.map +1 -0
  693. package/tui/dist/live.js +1 -1
  694. package/tui/dist/main.js +27 -8
  695. package/tui/dist/main.js.map +1 -1
  696. package/tui/dist/refresh.d.ts +10 -1
  697. package/tui/dist/refresh.d.ts.map +1 -1
  698. package/tui/dist/refresh.js +22 -2
  699. package/tui/dist/refresh.js.map +1 -1
  700. package/daemon/context-packs/world/install/01-world-from-primitives.md +0 -97
  701. package/daemon/context-packs/world/install/02-permission-self-sleep.md +0 -141
  702. package/daemon/context-packs/world/install/03-what-this-is-for.md +0 -86
  703. package/daemon/context-packs/world/install/04-ontology.md +0 -790
  704. package/daemon/context-packs/world/install/05-harness-power-use.md +0 -355
  705. package/daemon/context-packs/world/install/06-a-competent-turn.md +0 -225
  706. package/daemon/context-packs/world/install/manifest.yaml +0 -125
  707. package/dist/lib/scope-templates/mission-brief.md +0 -20
  708. package/dist/lib/scope-templates/mission-notes.md +0 -102
  709. package/dist/slack/config.d.ts.map +0 -1
  710. package/dist/slack/config.js.map +0 -1
  711. package/dist/slack/connector-server.d.ts +0 -31
  712. package/dist/slack/connector-server.d.ts.map +0 -1
  713. package/dist/slack/connector-server.js +0 -108
  714. package/dist/slack/connector-server.js.map +0 -1
  715. package/dist/slack/inbound-admission.d.ts.map +0 -1
  716. package/dist/slack/inbound-admission.js.map +0 -1
  717. package/dist/slack/inbound.d.ts.map +0 -1
  718. package/dist/slack/inbound.js.map +0 -1
  719. package/dist/slack/message.d.ts +0 -39
  720. package/dist/slack/message.d.ts.map +0 -1
  721. package/dist/slack/message.js +0 -88
  722. package/dist/slack/message.js.map +0 -1
  723. package/dist/slack/outbound.d.ts +0 -39
  724. package/dist/slack/outbound.d.ts.map +0 -1
  725. package/dist/slack/outbound.js +0 -63
  726. package/dist/slack/outbound.js.map +0 -1
  727. package/dist/slack/queue-bridge.d.ts +0 -61
  728. package/dist/slack/queue-bridge.d.ts.map +0 -1
  729. package/dist/slack/queue-bridge.js +0 -114
  730. package/dist/slack/queue-bridge.js.map +0 -1
  731. package/dist/slack/secrets.d.ts.map +0 -1
  732. package/dist/slack/secrets.js.map +0 -1
  733. package/dist/slack/slack-api.d.ts +0 -49
  734. package/dist/slack/slack-api.d.ts.map +0 -1
  735. package/dist/slack/slack-api.js +0 -110
  736. package/dist/slack/slack-api.js.map +0 -1
  737. package/dist/slack/slack-delivery.d.ts +0 -14
  738. package/dist/slack/slack-delivery.d.ts.map +0 -1
  739. package/dist/slack/slack-delivery.js +0 -28
  740. package/dist/slack/slack-delivery.js.map +0 -1
  741. package/dist/slack/state-store.d.ts.map +0 -1
  742. package/dist/slack/state-store.js.map +0 -1
  743. /package/{dist → daemon/dist/domain/gateway}/slack/inbound-admission.js +0 -0
  744. /package/{dist → daemon/dist/domain/gateway}/slack/secrets.d.ts +0 -0
  745. /package/{dist → daemon/dist/domain/gateway}/slack/secrets.js +0 -0
  746. /package/{dist → daemon/dist/domain/gateway}/slack/state-store.d.ts +0 -0
  747. /package/{dist → daemon/dist/domain/gateway}/slack/state-store.js +0 -0
@@ -0,0 +1,533 @@
1
+ // S01 (OPR.0.5.5.1) — WAKE OR ESCALATE ON BATONS. A handoff whose wake fails must never
2
+ // silently park: today one failed nudge is recorded and nothing follows (the measured
3
+ // dominant 0.5.3 failure class — a perfect surviving packet, a recipient never woken).
4
+ // This module gives every baton (handed-off row) whose wake FAILED a bounded retry ladder,
5
+ // then named escalation rungs — the destination's orchestrator (aggregated per destination,
6
+ // never a duplicate row per baton), then the operator surface — each step a recorded
7
+ // transition, none silent.
8
+ //
9
+ // NAMED INVARIANT (mini-req 7): THE ROW CARRIES THE OBLIGATION EXACTLY-ONCE; THE WAKE IS
10
+ // AT-LEAST-ONCE. The ladder retries the NUDGE — an envelope pointer at the row — never the
11
+ // content, so a re-attempt can never double-deliver the obligation.
12
+ //
13
+ // AM-P3-F6: the transitions ARE the ladder state. Attempts, rungs, suspension and
14
+ // exhaustion are all markers on the row's transition log, and every tick DERIVES its
15
+ // position from them — a daemon restart can neither forget a ladder (silent park returns)
16
+ // nor restart its counts (cap violated by repetition). Marker vocabulary is imported from
17
+ // queue-stuck-sweep (AM-P3-F5): S02's undelivered half skips rows whose ladder is live and
18
+ // remains the net for the exhausted handback; created-with-destination obligations stay
19
+ // S02 territory (the baton filter here is handed_off_from — the named hole is explicit).
20
+ //
21
+ // AM-P3-F1: `rendered-unconfirmed`-class outcomes (queue grammar: delivered-ack-pending,
22
+ // indeterminate:*, gateway-owned:*) NEVER retry — the measured false-negative class — but
23
+ // they enter the ladder on a confirmation path: unconfirmed + zero pickup evidence within
24
+ // the config-keyed window escalates directly, skipping the retry rung entirely (escalation
25
+ // is not a re-send; it cannot double-deliver).
26
+ //
27
+ // AM-P3-F2: suspension is DERIVED, never declared — the destination's post-swap state
28
+ // (nodes.handover_at within a bounded grace; the handover txn itself is atomic and
29
+ // unobservable) suspends wake attempts, with suspend/resume recorded. The manually
30
+ // declared window survives ONLY as an operator override (OPENRIG_WAKE_SUSPEND, fresh-read).
31
+ //
32
+ // AM-P3-F4 + AM-R25: rungs DELIVER, not just record. The orchestrator rung attempts a real
33
+ // wake on the aggregate escalation row; a rung whose own wake fails advances after one
34
+ // bounded cycle. The operator rung's delivery floor here is the escalation view + the
35
+ // daemon-health surface, stated honestly in its marker — the human-layer connector attempt
36
+ // is S11 territory (0.5.6), cited, not built; the rung gains that leg when S11 lands.
37
+ import { SettingsStore } from "./user-settings/settings-store.js";
38
+ import { LADDER_ATTEMPT_PREFIX, LADDER_RUNG_PREFIX, LADDER_EXHAUSTED_PREFIX, defaultResolveOrchestrator, resolveSessionNodeId, } from "./queue-stuck-sweep.js";
39
+ export const WAKE_RETRY_INTERVAL_KEY = "queue.wake_retry_interval_seconds";
40
+ export const DEFAULT_WAKE_RETRY_INTERVAL_SECONDS = 300;
41
+ export const WAKE_RETRY_CAP_KEY = "queue.wake_retry_cap";
42
+ export const DEFAULT_WAKE_RETRY_CAP = 3;
43
+ export const WAKE_UNCONFIRMED_WINDOW_KEY = "queue.wake_unconfirmed_window_minutes";
44
+ export const DEFAULT_WAKE_UNCONFIRMED_WINDOW_MINUTES = 30;
45
+ export const WAKE_SWAP_GRACE_KEY = "queue.wake_swap_grace_seconds";
46
+ export const DEFAULT_WAKE_SWAP_GRACE_SECONDS = 180;
47
+ /** The operator-declared suspension override (F2: override, never the mechanism).
48
+ * Format: comma-separated `<session>:<untilIso>` pairs; fresh-read every tick. */
49
+ export const WAKE_SUSPEND_OVERRIDE_ENV = "OPENRIG_WAKE_SUSPEND";
50
+ /** Stamp tag on the per-destination aggregate escalation row. */
51
+ export const WAKE_ESCALATION_TAG = "wake-escalation";
52
+ export function escalationDedupTag(destination) {
53
+ return `wake-escalation:${destination}`;
54
+ }
55
+ // Suspension markers (attempt/rung/exhausted come from the S02 seam vocabulary).
56
+ export const LADDER_SUSPEND_PREFIX = "ladder-suspend:";
57
+ export const LADDER_RESUME_PREFIX = "ladder-resume:";
58
+ const LADDER_ACTOR = "wake-ladder@system";
59
+ /** The loop's observable heartbeat — rides /healthz beside the S02 sweep's. */
60
+ export function createWakeLadderStatus() {
61
+ const state = {
62
+ lastTickAt: null,
63
+ lastOutcome: null,
64
+ lastError: null,
65
+ consecutiveFailures: 0,
66
+ activeLadders: 0,
67
+ escalationsOpen: 0,
68
+ exhaustedTotal: 0,
69
+ };
70
+ return {
71
+ record(outcome, detail) {
72
+ state.lastTickAt = new Date().toISOString();
73
+ state.lastOutcome = outcome;
74
+ state.lastError = outcome === "failed" ? (detail?.error ?? "unknown error") : null;
75
+ state.consecutiveFailures = outcome === "failed" ? state.consecutiveFailures + 1 : 0;
76
+ if (detail?.active !== undefined)
77
+ state.activeLadders = detail.active;
78
+ if (detail?.escalations !== undefined)
79
+ state.escalationsOpen = detail.escalations;
80
+ if (detail?.exhausted)
81
+ state.exhaustedTotal += detail.exhausted;
82
+ },
83
+ snapshot() {
84
+ return { ...state };
85
+ },
86
+ };
87
+ }
88
+ /** The operator seat for the self-skip floor (workspace.operator_seat_name — the
89
+ * conventional `operator-${USER}@kernel`); null when settings resolution fails. */
90
+ function resolveOperatorSeat() {
91
+ try {
92
+ const v = new SettingsStore().resolveOne("workspace.operator_seat_name").value;
93
+ return typeof v === "string" && v.length > 0 ? v : null;
94
+ }
95
+ catch {
96
+ return null;
97
+ }
98
+ }
99
+ function resolveNumber(key, fallback) {
100
+ try {
101
+ const v = new SettingsStore().resolveOne(key).value;
102
+ const n = typeof v === "number" ? v : Number(v);
103
+ return Number.isFinite(n) && n > 0 ? n : fallback;
104
+ }
105
+ catch {
106
+ return fallback;
107
+ }
108
+ }
109
+ export const resolveWakeRetryIntervalSeconds = () => resolveNumber(WAKE_RETRY_INTERVAL_KEY, DEFAULT_WAKE_RETRY_INTERVAL_SECONDS);
110
+ export const resolveWakeRetryCap = () => resolveNumber(WAKE_RETRY_CAP_KEY, DEFAULT_WAKE_RETRY_CAP);
111
+ export const resolveWakeUnconfirmedWindowMinutes = () => resolveNumber(WAKE_UNCONFIRMED_WINDOW_KEY, DEFAULT_WAKE_UNCONFIRMED_WINDOW_MINUTES);
112
+ export const resolveWakeSwapGraceSeconds = () => resolveNumber(WAKE_SWAP_GRACE_KEY, DEFAULT_WAKE_SWAP_GRACE_SECONDS);
113
+ function readLadder(db, qitemId) {
114
+ const rows = db
115
+ .prepare("SELECT ts, transition_note FROM queue_transitions WHERE qitem_id = ? ORDER BY ts, rowid")
116
+ .all(qitemId);
117
+ const view = {
118
+ attempts: 0,
119
+ lastMarkerTs: null,
120
+ orchRung: false,
121
+ orchRungFailed: false,
122
+ opRung: false,
123
+ exhausted: false,
124
+ suspendEpisodeOpen: false,
125
+ firstMarkerTs: null,
126
+ };
127
+ let suspends = 0;
128
+ let resumes = 0;
129
+ for (const r of rows) {
130
+ const note = r.transition_note ?? "";
131
+ const isAttempt = note.startsWith(LADDER_ATTEMPT_PREFIX);
132
+ const isRung = note.startsWith(LADDER_RUNG_PREFIX);
133
+ if (isAttempt)
134
+ view.attempts += 1;
135
+ if (isRung && /^escalation-rung:\s*orchestrator/.test(note)) {
136
+ view.orchRung = true;
137
+ view.orchRungFailed = /outcome=failed:/.test(note);
138
+ }
139
+ if (isRung && /^escalation-rung:\s*operator/.test(note))
140
+ view.opRung = true;
141
+ if (note.startsWith(LADDER_EXHAUSTED_PREFIX))
142
+ view.exhausted = true;
143
+ if (note.startsWith(LADDER_SUSPEND_PREFIX))
144
+ suspends += 1;
145
+ if (note.startsWith(LADDER_RESUME_PREFIX))
146
+ resumes += 1;
147
+ if (isAttempt || isRung) {
148
+ const t = Date.parse(r.ts);
149
+ if (!Number.isNaN(t)) {
150
+ view.lastMarkerTs = Math.max(view.lastMarkerTs ?? t, t);
151
+ view.firstMarkerTs = view.firstMarkerTs === null ? t : Math.min(view.firstMarkerTs, t);
152
+ }
153
+ }
154
+ }
155
+ view.suspendEpisodeOpen = suspends > resumes;
156
+ return view;
157
+ }
158
+ /** Pickup evidence (the S04 receipt join, F1): a claim, a heartbeat, or any transition
159
+ * that is neither a founding record nor ladder machinery — someone real moved. */
160
+ function hasPickupEvidence(db, row) {
161
+ if (row.claimedAt)
162
+ return true;
163
+ if (row.lastHeartbeat)
164
+ return true;
165
+ const rows = db
166
+ .prepare("SELECT transition_note FROM queue_transitions WHERE qitem_id = ?")
167
+ .all(row.qitemId);
168
+ for (const r of rows) {
169
+ const note = r.transition_note ?? "";
170
+ if (note === "created")
171
+ continue;
172
+ if (note.startsWith("handoff"))
173
+ continue;
174
+ if (note.startsWith(LADDER_ATTEMPT_PREFIX) ||
175
+ note.startsWith(LADDER_RUNG_PREFIX) ||
176
+ note.startsWith(LADDER_EXHAUSTED_PREFIX) ||
177
+ note.startsWith(LADDER_SUSPEND_PREFIX) ||
178
+ note.startsWith(LADDER_RESUME_PREFIX))
179
+ continue;
180
+ return true;
181
+ }
182
+ return false;
183
+ }
184
+ function classifyWakeResult(lastNudgeResult) {
185
+ if (!lastNudgeResult)
186
+ return null;
187
+ if (lastNudgeResult.startsWith("failed:"))
188
+ return "failed";
189
+ if (lastNudgeResult === "delivered-ack-pending" ||
190
+ lastNudgeResult.startsWith("indeterminate:") ||
191
+ lastNudgeResult.startsWith("gateway-owned:"))
192
+ return "unconfirmed";
193
+ return null; // verified (or unknown vocabulary) — never enters the ladder
194
+ }
195
+ /** F2 — derived suspension: the destination's post-swap grace (nodes.handover_at within
196
+ * the bound), or the operator-declared override. Returns the reason, or null. */
197
+ function suspensionReason(db, destination, graceSeconds, now) {
198
+ const override = process.env[WAKE_SUSPEND_OVERRIDE_ENV];
199
+ if (override) {
200
+ for (const entry of override.split(",")) {
201
+ const idx = entry.lastIndexOf(":");
202
+ const session = entry.slice(0, entry.indexOf(":"));
203
+ const untilIso = entry.slice(entry.indexOf(":") + 1);
204
+ void idx;
205
+ if (session === destination) {
206
+ const until = Date.parse(untilIso);
207
+ if (!Number.isNaN(until) && now.getTime() < until) {
208
+ return `operator override (${WAKE_SUSPEND_OVERRIDE_ENV}) until ${untilIso}`;
209
+ }
210
+ }
211
+ }
212
+ }
213
+ // The durable session→node binding — never a string transform of the session name
214
+ // (canonical dash-form sessions and dotted logical ids are independent identities).
215
+ const nodeId = resolveSessionNodeId(db, destination);
216
+ if (!nodeId)
217
+ return null;
218
+ const row = db
219
+ .prepare("SELECT handover_at AS handoverAt FROM nodes WHERE id = ? LIMIT 1")
220
+ .get(nodeId);
221
+ if (!row?.handoverAt)
222
+ return null;
223
+ const swapAt = Date.parse(row.handoverAt);
224
+ if (Number.isNaN(swapAt))
225
+ return null;
226
+ const ageS = (now.getTime() - swapAt) / 1000;
227
+ if (ageS >= 0 && ageS < graceSeconds) {
228
+ return `destination in post-swap grace (handover ${Math.round(ageS)}s ago, grace ${graceSeconds}s)`;
229
+ }
230
+ return null;
231
+ }
232
+ function appendMarker(repo, row, note) {
233
+ repo.transitionLog.append({
234
+ qitemId: row.qitemId,
235
+ state: row.state,
236
+ actorSession: LADDER_ACTOR,
237
+ transitionNote: note,
238
+ });
239
+ }
240
+ function minutesSince(ts, now) {
241
+ if (ts === null || ts === undefined)
242
+ return 0;
243
+ const t = typeof ts === "number" ? ts : Date.parse(ts);
244
+ if (Number.isNaN(t))
245
+ return 0;
246
+ return Math.max(0, Math.round((now.getTime() - t) / 60_000));
247
+ }
248
+ /**
249
+ * One ladder tick. Everything is derived from the row + transition log — the tick holds
250
+ * no memory (F6). Never throws: a tick that cannot run is loud on the status surface
251
+ * and the log, because a silent skip is the exact class this slice kills.
252
+ */
253
+ export async function runWakeLadderTick(deps) {
254
+ const log = deps.log ?? ((line) => console.error(line));
255
+ const status = deps.status;
256
+ try {
257
+ const now = deps.now ?? new Date();
258
+ const intervalS = deps.retryIntervalSeconds ?? resolveWakeRetryIntervalSeconds();
259
+ const cap = deps.retryCap ?? resolveWakeRetryCap();
260
+ const windowMin = deps.unconfirmedWindowMinutes ?? resolveWakeUnconfirmedWindowMinutes();
261
+ const graceS = deps.swapGraceSeconds ?? resolveWakeSwapGraceSeconds();
262
+ const resolveOrch = deps.resolveOrchestrator ?? ((session) => defaultResolveOrchestrator(deps.db, session));
263
+ const attemptWake = deps.attemptWake ??
264
+ (async (qitemId, target) => {
265
+ await deps.queueRepo.maybeNudge(qitemId, target, true);
266
+ return deps.queueRepo.getById(qitemId)?.lastNudgeResult ?? "indeterminate:no transport available";
267
+ });
268
+ const actions = [];
269
+ let exhaustedThisTick = 0;
270
+ // Batons: handed-off rows still pending and unclaimed. Created-with-destination rows
271
+ // are explicitly NOT here — that hole is S02's net (F5).
272
+ const batonRows = deps.db
273
+ .prepare(`SELECT qitem_id FROM queue_items
274
+ WHERE state = 'pending' AND claimed_at IS NULL AND handed_off_from IS NOT NULL`)
275
+ .all();
276
+ /** Escalation-phase members grouped per destination (F3 aggregation). */
277
+ const escalating = new Map();
278
+ /** Per-destination wake attempts inside the current window, across ALL ladders (F3
279
+ * rate bound). Seeded from recorded markers so restarts keep the bound too. */
280
+ const windowBudget = new Map();
281
+ let activeLadders = 0;
282
+ const budgetFor = (dest) => {
283
+ if (!windowBudget.has(dest)) {
284
+ const since = new Date(now.getTime() - intervalS * 1000).toISOString();
285
+ const counted = deps.db
286
+ .prepare(`SELECT COUNT(*) AS n FROM queue_transitions t JOIN queue_items q ON q.qitem_id = t.qitem_id
287
+ WHERE q.destination_session = ? AND t.transition_note LIKE ? AND t.ts >= ?`)
288
+ .get(dest, `${LADDER_ATTEMPT_PREFIX}%`, since);
289
+ windowBudget.set(dest, counted.n);
290
+ }
291
+ return windowBudget.get(dest);
292
+ };
293
+ for (const { qitem_id } of batonRows) {
294
+ const row = deps.queueRepo.getById(qitem_id);
295
+ if (!row)
296
+ continue;
297
+ const mode = classifyWakeResult(row.lastNudgeResult);
298
+ if (!mode)
299
+ continue;
300
+ const view = readLadder(deps.db, row.qitemId);
301
+ if (view.exhausted)
302
+ continue; // finite: an exhausted ladder never re-fires
303
+ // F1 gates for the unconfirmed class: never re-nudge; enter only past the window
304
+ // with zero pickup evidence.
305
+ if (mode === "unconfirmed") {
306
+ if (minutesSince(row.tsCreated, now) < windowMin)
307
+ continue;
308
+ if (hasPickupEvidence(deps.db, row))
309
+ continue;
310
+ }
311
+ activeLadders += 1;
312
+ // Due-ness: the latest ladder marker (or the original nudge attempt) is older than
313
+ // the retry interval. No markers + no recorded attempt = due now. Gates ACTIONS
314
+ // only — detection (and the aggregate refresh) is not throttled by it.
315
+ const lastActivity = view.lastMarkerTs ?? (row.lastNudgeAttempt ? Date.parse(row.lastNudgeAttempt) : null);
316
+ const due = lastActivity === null || Number.isNaN(lastActivity) || now.getTime() - lastActivity >= intervalS * 1000;
317
+ const suspended = due ? suspensionReason(deps.db, row.destinationSession, graceS, now) : null;
318
+ // Retry rung — failed outcomes only, under the cap, inside the destination budget.
319
+ if (mode === "failed" && view.attempts < cap) {
320
+ if (!due)
321
+ continue;
322
+ // F2 — derived suspension, checked only when the ladder would otherwise act.
323
+ if (suspended) {
324
+ if (!view.suspendEpisodeOpen) {
325
+ appendMarker(deps.queueRepo, row, `${LADDER_SUSPEND_PREFIX} ${suspended}`);
326
+ actions.push({ qitemId: row.qitemId, action: "suspend" });
327
+ }
328
+ continue;
329
+ }
330
+ if (view.suspendEpisodeOpen) {
331
+ appendMarker(deps.queueRepo, row, `${LADDER_RESUME_PREFIX} suspension over; ladder resumes`);
332
+ actions.push({ qitemId: row.qitemId, action: "resume" });
333
+ }
334
+ if (budgetFor(row.destinationSession) >= cap)
335
+ continue; // destination-bounded (F3)
336
+ windowBudget.set(row.destinationSession, budgetFor(row.destinationSession) + 1);
337
+ const outcome = await attemptWake(row.qitemId, row.destinationSession);
338
+ appendMarker(deps.queueRepo, row, `${LADDER_ATTEMPT_PREFIX} ${view.attempts + 1}/${cap} outcome=${outcome}`);
339
+ actions.push({ qitemId: row.qitemId, action: "retry", target: row.destinationSession });
340
+ continue;
341
+ }
342
+ // Escalation phase (past the cap, or the F1 direct path). Grouped per destination
343
+ // regardless of due-ness so the aggregate refresh rides every detection pass.
344
+ const reason = mode === "failed"
345
+ ? `wake failed ${view.attempts} times over ${minutesSince(view.firstMarkerTs ?? row.tsCreated, now)} min`
346
+ : `unconfirmed delivery with no pickup evidence over ${minutesSince(row.tsCreated, now)} min`;
347
+ const dest = row.destinationSession;
348
+ if (!escalating.has(dest))
349
+ escalating.set(dest, []);
350
+ escalating.get(dest).push({ row, view, mode, reason, due, suspended });
351
+ }
352
+ // F3 — per-destination aggregation: ONE escalation carrying the row list, refreshed
353
+ // not duplicated (the S02 idempotency shape), and rung markers on every member baton.
354
+ for (const [dest, members] of escalating) {
355
+ const orch = resolveOrch(dest);
356
+ // F3 — the aggregate refresh is detection-gated (the S02 idempotency shape): a
357
+ // live escalation group refreshes its one open row every pass, no wake attached.
358
+ await refreshEscalationRowIfExists(deps, dest, members);
359
+ const actionable = members.filter((m) => m.due && !m.suspended);
360
+ const needsOrchRung = actionable.filter((m) => !m.view.orchRung);
361
+ const reason = needsOrchRung[0]?.reason ?? members[0].reason;
362
+ if (needsOrchRung.length > 0) {
363
+ if (orch === null || orch === dest) {
364
+ // F4: rung 1 self-skips when it resolves to the destination itself (or nowhere)
365
+ // — never escalate INTO the dead seat; fall through to the operator rung now.
366
+ // The operator floor must be a VISIBLE OBJECT, not markers alone: ensure the
367
+ // per-destination escalation row exists (addressed to the operator seat, else
368
+ // the obligation's own creator) so the escalations view and the health count
369
+ // expose it — it stays open past the batons' exhaustion.
370
+ const floorDest = resolveOperatorSeat() ?? needsOrchRung[0].row.sourceSession;
371
+ await ensureEscalationRow(deps, dest, floorDest, needsOrchRung, reason);
372
+ for (const m of needsOrchRung) {
373
+ appendMarker(deps.queueRepo, m.row, `${LADDER_RUNG_PREFIX} orchestrator self-skip (resolves to ${orch === null ? "no orchestrator" : "destination"}) reason=${m.reason}`);
374
+ operatorRung(deps.queueRepo, m.row, m.reason, actions);
375
+ appendExhausted(deps.queueRepo, m.row, "operator rung reached");
376
+ exhaustedThisTick += 1;
377
+ }
378
+ }
379
+ else {
380
+ const escRow = await ensureEscalationRow(deps, dest, orch, members, reason);
381
+ const outcome = await attemptWake(escRow.qitemId, orch);
382
+ for (const m of needsOrchRung) {
383
+ appendMarker(deps.queueRepo, m.row, `${LADDER_RUNG_PREFIX} orchestrator -> ${orch} outcome=${outcome} reason=${m.reason}`);
384
+ actions.push({ qitemId: m.row.qitemId, action: "escalate-orchestrator", target: orch });
385
+ if (!outcome.startsWith("failed:")) {
386
+ // Delivered (or durable-unconfirmed — the aggregate row itself is now the
387
+ // orchestrator's durable obligation; S02 nets it if it sits unclaimed).
388
+ appendExhausted(deps.queueRepo, m.row, `escalated to orchestrator (${outcome === "verified" ? "delivered" : outcome})`);
389
+ exhaustedThisTick += 1;
390
+ }
391
+ }
392
+ }
393
+ continue; // one rung per destination per tick — bounded advance (F4)
394
+ }
395
+ // Orchestrator rung recorded and failed → advance to the operator rung.
396
+ for (const m of actionable) {
397
+ if (m.view.orchRung && m.view.orchRungFailed && !m.view.opRung) {
398
+ operatorRung(deps.queueRepo, m.row, m.reason, actions);
399
+ appendExhausted(deps.queueRepo, m.row, "operator rung reached");
400
+ exhaustedThisTick += 1;
401
+ }
402
+ }
403
+ }
404
+ const escalationsOpen = deps.db
405
+ .prepare(`SELECT COUNT(*) AS n FROM queue_items
406
+ WHERE state IN ('pending','in-progress','blocked') AND tags LIKE ?`)
407
+ .get(`%"${WAKE_ESCALATION_TAG}"%`).n;
408
+ const outcome = actions.length > 0 ? "actions" : "clean";
409
+ status?.record(outcome, { active: activeLadders, escalations: escalationsOpen, exhausted: exhaustedThisTick });
410
+ return { outcome, actions };
411
+ }
412
+ catch (err) {
413
+ const message = err instanceof Error ? err.message : String(err);
414
+ log(`[wake-ladder] TICK FAILED (skipping loudly): ${message}`);
415
+ status?.record("failed", { error: message });
416
+ return { outcome: "failed", actions: [], error: message };
417
+ }
418
+ }
419
+ /** The operator rung: records and advances (AM-R25 trim). Its delivery floor here is the
420
+ * escalation view + the daemon-health surface, stated honestly on the marker; the
421
+ * human-layer connector attempt is S11 territory (0.5.6) and rides in when S11 lands. */
422
+ function operatorRung(repo, row, reason, actions) {
423
+ appendMarker(repo, row, `${LADDER_RUNG_PREFIX} operator floor=escalation view + daemon-health (human-layer connector = S11/0.5.6, cited not built) reason=${reason}`);
424
+ actions.push({ qitemId: row.qitemId, action: "escalate-operator" });
425
+ }
426
+ function appendExhausted(repo, row, why) {
427
+ appendMarker(repo, row, `${LADDER_EXHAUSTED_PREFIX} ${why}`);
428
+ }
429
+ /** Ensure the per-destination aggregate escalation row (F3): one open row, deduped by
430
+ * tag, refreshed on re-detection — never one row per baton. The row is a NEW durable
431
+ * obligation addressed to the orchestrator; the baton itself is never duplicated. */
432
+ /** Refresh-only leg of the F3 aggregate: an already-open escalation row gains a
433
+ * detection-pass note naming the current member list; creation stays with the rung
434
+ * action so a row never exists before its first delivery attempt. */
435
+ async function refreshEscalationRowIfExists(deps, dest, members) {
436
+ const existing = deps.db
437
+ .prepare(`SELECT qitem_id FROM queue_items
438
+ WHERE state IN ('pending','in-progress','blocked') AND tags LIKE ? LIMIT 1`)
439
+ .get(`%"${escalationDedupTag(dest)}"%`);
440
+ if (!existing)
441
+ return;
442
+ deps.queueRepo.transitionLog.append({
443
+ qitemId: existing.qitem_id,
444
+ state: "pending",
445
+ actorSession: LADDER_ACTOR,
446
+ transitionNote: `wake-escalation refresh: ${members.length} stuck baton(s) for ${dest} — ${members
447
+ .map((m) => m.row.qitemId)
448
+ .join(", ")}`,
449
+ });
450
+ }
451
+ async function ensureEscalationRow(deps, dest, orch, members, reason) {
452
+ const dedupTag = escalationDedupTag(dest);
453
+ const existing = deps.db
454
+ .prepare(`SELECT qitem_id FROM queue_items
455
+ WHERE state IN ('pending','in-progress','blocked') AND tags LIKE ? LIMIT 1`)
456
+ .get(`%"${dedupTag}"%`);
457
+ if (existing) {
458
+ deps.queueRepo.transitionLog.append({
459
+ qitemId: existing.qitem_id,
460
+ state: "pending",
461
+ actorSession: LADDER_ACTOR,
462
+ transitionNote: `wake-escalation refresh: ${members.length} stuck baton(s) for ${dest} — ${members
463
+ .map((m) => m.row.qitemId)
464
+ .join(", ")}`,
465
+ });
466
+ return { qitemId: existing.qitem_id };
467
+ }
468
+ const body = `WAKE ESCALATION (aggregated per destination)\n` +
469
+ `destination: ${dest}\n` +
470
+ `reason: ${reason}\n` +
471
+ `stuck batons (${members.length}):\n` +
472
+ members.map((m) => `- ${m.row.qitemId} (${m.reason})`).join("\n") +
473
+ `\nThe rows above still carry their obligations exactly-once; this escalation is the wake, not the content.`;
474
+ const created = await deps.queueRepo.create({
475
+ sourceSession: members[0].row.sourceSession,
476
+ destinationSession: orch,
477
+ body,
478
+ summary: `Wake escalation: ${members.length} baton(s) stuck at ${dest} — ${reason}`,
479
+ tags: [WAKE_ESCALATION_TAG, dedupTag],
480
+ nudge: false, // delivery is the ladder's own rung attempt, recorded with its outcome
481
+ });
482
+ return { qitemId: created.qitemId };
483
+ }
484
+ /** The standing loop — the watchdog-scheduler pattern (injected seams, runTickNow, no
485
+ * overlapping ticks), so the ladder is unit-drivable without timers. */
486
+ export class WakeLadderScheduler {
487
+ deps;
488
+ timer = null;
489
+ inflight = null;
490
+ shuttingDown = false;
491
+ started = false;
492
+ constructor(deps) {
493
+ this.deps = deps;
494
+ }
495
+ start() {
496
+ if (this.started)
497
+ return;
498
+ this.started = true;
499
+ this.shuttingDown = false;
500
+ this.scheduleNext();
501
+ }
502
+ async stop() {
503
+ this.shuttingDown = true;
504
+ if (this.timer) {
505
+ (this.deps.clearTimer ?? clearTimeout)(this.timer);
506
+ this.timer = null;
507
+ }
508
+ if (this.inflight)
509
+ await this.inflight.catch(() => { });
510
+ this.started = false;
511
+ }
512
+ async runTickNow() {
513
+ if (this.inflight) {
514
+ await this.inflight;
515
+ return;
516
+ }
517
+ this.inflight = this.deps.runTick().finally(() => {
518
+ this.inflight = null;
519
+ });
520
+ await this.inflight;
521
+ }
522
+ scheduleNext() {
523
+ if (this.shuttingDown)
524
+ return;
525
+ const ms = this.deps.tickIntervalMs ?? DEFAULT_WAKE_RETRY_INTERVAL_SECONDS * 1000;
526
+ this.timer = (this.deps.setTimer ?? setTimeout)(() => {
527
+ void this.runTickNow()
528
+ .catch((err) => (this.deps.onTickError ?? console.error)(err))
529
+ .finally(() => this.scheduleNext());
530
+ }, ms);
531
+ }
532
+ }
533
+ //# sourceMappingURL=queue-wake-ladder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queue-wake-ladder.js","sourceRoot":"","sources":["../../src/domain/queue-wake-ladder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ import type Database from "better-sqlite3";
2
+ export type ParkWakeKind = "watchdog" | "timer" | "blocker";
3
+ export type ParkWakePhase = "armed" | "fired";
4
+ export interface QueueWakeRecord {
5
+ transitionId: number;
6
+ qitemId: string;
7
+ phase: ParkWakePhase;
8
+ kind: ParkWakeKind;
9
+ ref: string;
10
+ deliveryStatus: string | null;
11
+ }
12
+ export interface ParkWakeStatus {
13
+ kind: ParkWakeKind;
14
+ ref: string;
15
+ phase: ParkWakePhase;
16
+ live: boolean;
17
+ deliveryStatus: string | null;
18
+ /** A wake fired, but the row is still HELD. The resume attempt is visible
19
+ * and cannot be mistaken for a healthy armed continuation. */
20
+ unconsumed: boolean;
21
+ }
22
+ /** Persistence + live-state projection for transition-bound park wakes. */
23
+ export declare class QueueWakeRepository {
24
+ private readonly db;
25
+ private readonly available;
26
+ constructor(db: Database.Database);
27
+ record(input: QueueWakeRecord): void;
28
+ getForTransition(transitionId: number): QueueWakeRecord | null;
29
+ getStatus(qitemId: string): ParkWakeStatus | null;
30
+ findBlockedQitemsByWatchdog(jobId: string): Array<{
31
+ qitemId: string;
32
+ kind: "watchdog" | "timer";
33
+ }>;
34
+ private isLive;
35
+ private row;
36
+ }
37
+ //# sourceMappingURL=queue-wake-repository.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queue-wake-repository.d.ts","sourceRoot":"","sources":["../../src/domain/queue-wake-repository.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAE3C,MAAM,MAAM,YAAY,GAAG,UAAU,GAAG,OAAO,GAAG,SAAS,CAAC;AAC5D,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,OAAO,CAAC;AAE9C,MAAM,WAAW,eAAe;IAC9B,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,aAAa,CAAC;IACrB,IAAI,EAAE,YAAY,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,YAAY,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,aAAa,CAAC;IACrB,IAAI,EAAE,OAAO,CAAC;IACd,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B;mEAC+D;IAC/D,UAAU,EAAE,OAAO,CAAC;CACrB;AAWD,2EAA2E;AAC3E,qBAAa,mBAAmB;IAGlB,OAAO,CAAC,QAAQ,CAAC,EAAE;IAF/B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAU;gBAEP,EAAE,EAAE,QAAQ,CAAC,QAAQ;IAMlD,MAAM,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI;IAgBpC,gBAAgB,CAAC,YAAY,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI;IAQ9D,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI;IA2BjD,2BAA2B,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAA;KAAE,CAAC;IAmBlG,OAAO,CAAC,MAAM;IAad,OAAO,CAAC,GAAG;CAUZ"}