@openrig/cli 0.6.5 → 0.6.6

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 (821) hide show
  1. package/README.md +70 -49
  2. package/daemon/assets/onboarding/02-self-and-competent-action.md +39 -2
  3. package/daemon/assets/plugins/openrig-core/.claude-plugin/plugin.json +1 -1
  4. package/daemon/assets/plugins/openrig-core/.codex-plugin/plugin.json +1 -1
  5. package/daemon/assets/plugins/openrig-core/skills/applying-a-permission-policy/SKILL.md +41 -21
  6. package/daemon/assets/plugins/openrig-core/skills/claude-compaction-restore/SKILL.md +13 -7
  7. package/daemon/assets/plugins/openrig-core/skills/forming-an-openrig-mental-model/SKILL.md +1 -1
  8. package/daemon/assets/plugins/openrig-core/skills/openrig-skills/SKILL.md +3 -4
  9. package/daemon/assets/plugins/openrig-core/skills/openrig-user/SKILL.md +9 -4
  10. package/daemon/context-packs/help/help.md +33 -8
  11. package/daemon/context-packs/help/manifest.yaml +1 -1
  12. package/daemon/context-packs/onboarding-width/manifest.yaml +1 -1
  13. package/daemon/context-packs/onboarding-width/public-what-you-can-do.md +6 -5
  14. package/daemon/context-packs/reference/getting-started.md +423 -113
  15. package/daemon/context-packs/reference/manifest.yaml +1 -1
  16. package/daemon/context-packs/reference/rig-spec.md +150 -26
  17. package/daemon/context-packs/skills/agent-operated-software/manifest.yaml +1 -1
  18. package/daemon/context-packs/skills/agent-operated-workflows/manifest.yaml +1 -1
  19. package/daemon/context-packs/skills/applying-a-permission-policy/SKILL.md +41 -21
  20. package/daemon/context-packs/skills/applying-a-permission-policy/manifest.yaml +1 -1
  21. package/daemon/context-packs/skills/claude-compaction-restore/SKILL.md +13 -7
  22. package/daemon/context-packs/skills/claude-compaction-restore/manifest.yaml +1 -1
  23. package/daemon/context-packs/skills/core/agent-starters/SKILL.md +0 -6
  24. package/daemon/context-packs/skills/core/agent-starters/manifest.yaml +1 -1
  25. package/daemon/context-packs/skills/core/agent-startup-and-context-ingestion/SKILL.md +1 -8
  26. package/daemon/context-packs/skills/core/agent-startup-and-context-ingestion/manifest.yaml +1 -1
  27. package/daemon/context-packs/skills/core/cross-host-rig-commands/manifest.yaml +1 -1
  28. package/daemon/context-packs/skills/core/human-in-the-loop/manifest.yaml +1 -1
  29. package/daemon/context-packs/skills/core/messaging-the-human/manifest.yaml +1 -1
  30. package/daemon/context-packs/skills/core/openrig-architect/SKILL.md +5 -5
  31. package/daemon/context-packs/skills/core/openrig-architect/manifest.yaml +3 -3
  32. package/daemon/context-packs/skills/core/openrig-cmux/manifest.yaml +1 -1
  33. package/daemon/context-packs/skills/core/openrig-herdr/manifest.yaml +1 -1
  34. package/daemon/context-packs/skills/core/openrig-skills/SKILL.md +3 -4
  35. package/daemon/context-packs/skills/core/openrig-skills/manifest.yaml +1 -1
  36. package/daemon/context-packs/skills/core/openrig-software-factory/SKILL.md +12 -9
  37. package/daemon/context-packs/skills/core/openrig-software-factory/manifest.yaml +1 -1
  38. package/daemon/context-packs/skills/core/openrig-software-factory/references/worked-example.md +29 -29
  39. package/daemon/context-packs/skills/core/openrig-upgrade/manifest.yaml +1 -1
  40. package/daemon/context-packs/skills/core/rig-bundles-and-shareable-artifacts/SKILL.md +0 -1
  41. package/daemon/context-packs/skills/core/rig-bundles-and-shareable-artifacts/manifest.yaml +1 -1
  42. package/daemon/context-packs/skills/core/rig-lifecycle/manifest.yaml +1 -1
  43. package/daemon/context-packs/skills/core/session-source-fork/SKILL.md +0 -5
  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/delegating-work/manifest.yaml +1 -1
  49. package/daemon/context-packs/skills/forming-an-openrig-mental-model/SKILL.md +1 -1
  50. package/daemon/context-packs/skills/forming-an-openrig-mental-model/manifest.yaml +1 -1
  51. package/daemon/context-packs/skills/loading-addressable-markdown/manifest.yaml +1 -1
  52. package/daemon/context-packs/skills/mission-slice-sop/manifest.yaml +1 -1
  53. package/daemon/context-packs/skills/openrig-operating-model/manifest.yaml +1 -1
  54. package/daemon/context-packs/skills/openrig-user/SKILL.md +9 -4
  55. package/daemon/context-packs/skills/openrig-user/manifest.yaml +1 -1
  56. package/daemon/context-packs/skills/orienting-to-an-inherited-seat/manifest.yaml +1 -1
  57. package/daemon/context-packs/skills/pm/backlog-capture/manifest.yaml +1 -1
  58. package/daemon/context-packs/skills/pm/context-builder/manifest.yaml +1 -1
  59. package/daemon/context-packs/skills/pm/exec-summary/manifest.yaml +1 -1
  60. package/daemon/context-packs/skills/pm/office-hours/manifest.yaml +1 -1
  61. package/daemon/context-packs/skills/pm/plan-review/manifest.yaml +1 -1
  62. package/daemon/context-packs/skills/pm/requirements-writer/manifest.yaml +1 -1
  63. package/daemon/context-packs/skills/pm/ui-mockup/manifest.yaml +1 -1
  64. package/daemon/context-packs/skills/pods/development-team/manifest.yaml +1 -1
  65. package/daemon/context-packs/skills/pods/orchestration-team/manifest.yaml +1 -1
  66. package/daemon/context-packs/skills/pods/oversight-team/manifest.yaml +1 -1
  67. package/daemon/context-packs/skills/pods/review-team/manifest.yaml +1 -1
  68. package/daemon/context-packs/skills/process/agent-browser/OPENRIG.md +1 -1
  69. package/daemon/context-packs/skills/process/agent-browser/manifest.yaml +1 -1
  70. package/daemon/context-packs/skills/process/context-engineering/manifest.yaml +1 -1
  71. package/daemon/context-packs/skills/process/dogfood/manifest.yaml +1 -1
  72. package/daemon/context-packs/skills/process/frontend-design/manifest.yaml +1 -1
  73. package/daemon/context-packs/skills/process/systematic-debugging/SKILL.md +0 -2
  74. package/daemon/context-packs/skills/process/systematic-debugging/manifest.yaml +1 -1
  75. package/daemon/context-packs/skills/process/test-driven-development/manifest.yaml +1 -1
  76. package/daemon/context-packs/skills/process/verification-before-completion/manifest.yaml +1 -1
  77. package/daemon/context-packs/skills/queue-handoff/manifest.yaml +1 -1
  78. package/daemon/context-packs/skills/refocusing/manifest.yaml +1 -1
  79. package/daemon/context-packs/skills/retiring-and-inheriting-a-seat/manifest.yaml +1 -1
  80. package/daemon/context-packs/skills/seat-continuity-and-handover/manifest.yaml +1 -1
  81. package/daemon/context-packs/skills/session-compaction-and-restore/manifest.yaml +1 -1
  82. package/daemon/context-packs/skills/software-for-agents/manifest.yaml +1 -1
  83. package/daemon/context-packs/world-example/manifest.yaml +1 -1
  84. package/daemon/context-packs/world-public/manifest.yaml +1 -1
  85. package/daemon/dist/adapters/claude-code-adapter.d.ts +1 -1
  86. package/daemon/dist/adapters/claude-code-adapter.d.ts.map +1 -1
  87. package/daemon/dist/adapters/claude-code-adapter.js +25 -13
  88. package/daemon/dist/adapters/claude-code-adapter.js.map +1 -1
  89. package/daemon/dist/adapters/claude-resume.d.ts +1 -1
  90. package/daemon/dist/adapters/claude-resume.d.ts.map +1 -1
  91. package/daemon/dist/adapters/claude-resume.js +7 -4
  92. package/daemon/dist/adapters/claude-resume.js.map +1 -1
  93. package/daemon/dist/adapters/codex-resume.d.ts +3 -1
  94. package/daemon/dist/adapters/codex-resume.d.ts.map +1 -1
  95. package/daemon/dist/adapters/codex-resume.js +10 -4
  96. package/daemon/dist/adapters/codex-resume.js.map +1 -1
  97. package/daemon/dist/adapters/codex-runtime-adapter.d.ts +3 -0
  98. package/daemon/dist/adapters/codex-runtime-adapter.d.ts.map +1 -1
  99. package/daemon/dist/adapters/codex-runtime-adapter.js +59 -61
  100. package/daemon/dist/adapters/codex-runtime-adapter.js.map +1 -1
  101. package/daemon/dist/adapters/compose-services-adapter.js +1 -1
  102. package/daemon/dist/adapters/compose-services-adapter.js.map +1 -1
  103. package/daemon/dist/adapters/kernel-authority.d.ts +10 -0
  104. package/daemon/dist/adapters/kernel-authority.d.ts.map +1 -0
  105. package/daemon/dist/adapters/kernel-authority.js +53 -0
  106. package/daemon/dist/adapters/kernel-authority.js.map +1 -0
  107. package/daemon/dist/adapters/non-interruptive.d.ts +14 -0
  108. package/daemon/dist/adapters/non-interruptive.d.ts.map +1 -0
  109. package/daemon/dist/adapters/non-interruptive.js +38 -0
  110. package/daemon/dist/adapters/non-interruptive.js.map +1 -0
  111. package/daemon/dist/adapters/pi-resume.d.ts +3 -1
  112. package/daemon/dist/adapters/pi-resume.d.ts.map +1 -1
  113. package/daemon/dist/adapters/pi-resume.js +8 -1
  114. package/daemon/dist/adapters/pi-resume.js.map +1 -1
  115. package/daemon/dist/adapters/pi-runner-protocol.d.ts +15 -0
  116. package/daemon/dist/adapters/pi-runner-protocol.d.ts.map +1 -1
  117. package/daemon/dist/adapters/pi-runner-protocol.js +27 -0
  118. package/daemon/dist/adapters/pi-runner-protocol.js.map +1 -1
  119. package/daemon/dist/adapters/pi-runner.d.ts +3 -0
  120. package/daemon/dist/adapters/pi-runner.d.ts.map +1 -1
  121. package/daemon/dist/adapters/pi-runner.js +79 -13
  122. package/daemon/dist/adapters/pi-runner.js.map +1 -1
  123. package/daemon/dist/adapters/pi-runtime-adapter.d.ts +8 -0
  124. package/daemon/dist/adapters/pi-runtime-adapter.d.ts.map +1 -1
  125. package/daemon/dist/adapters/pi-runtime-adapter.js +37 -9
  126. package/daemon/dist/adapters/pi-runtime-adapter.js.map +1 -1
  127. package/daemon/dist/adapters/stub-runner-protocol.d.ts +1 -1
  128. package/daemon/dist/adapters/stub-runner-protocol.d.ts.map +1 -1
  129. package/daemon/dist/adapters/stub-runner.d.ts +1 -1
  130. package/daemon/dist/adapters/stub-runner.d.ts.map +1 -1
  131. package/daemon/dist/adapters/stub-runtime-adapter.d.ts.map +1 -1
  132. package/daemon/dist/adapters/stub-runtime-adapter.js +10 -7
  133. package/daemon/dist/adapters/stub-runtime-adapter.js.map +1 -1
  134. package/daemon/dist/adapters/tmux.d.ts +7 -3
  135. package/daemon/dist/adapters/tmux.d.ts.map +1 -1
  136. package/daemon/dist/adapters/tmux.js +11 -6
  137. package/daemon/dist/adapters/tmux.js.map +1 -1
  138. package/daemon/dist/adapters/yolo-mode.d.ts +1 -1
  139. package/daemon/dist/adapters/yolo-mode.d.ts.map +1 -1
  140. package/daemon/dist/adapters/yolo-mode.js +3 -0
  141. package/daemon/dist/adapters/yolo-mode.js.map +1 -1
  142. package/daemon/dist/build-info.js +3 -3
  143. package/daemon/dist/bundle-behaviour-surface.d.ts +2 -0
  144. package/daemon/dist/bundle-behaviour-surface.d.ts.map +1 -0
  145. package/daemon/dist/bundle-behaviour-surface.js +2 -0
  146. package/daemon/dist/bundle-behaviour-surface.js.map +1 -0
  147. package/daemon/dist/bundle-identity-surface.d.ts +2 -0
  148. package/daemon/dist/bundle-identity-surface.d.ts.map +1 -0
  149. package/daemon/dist/bundle-identity-surface.js +4 -0
  150. package/daemon/dist/bundle-identity-surface.js.map +1 -0
  151. package/daemon/dist/daemon-shutdown.d.ts +1 -1
  152. package/daemon/dist/daemon-shutdown.d.ts.map +1 -1
  153. package/daemon/dist/daemon-shutdown.js +5 -1
  154. package/daemon/dist/daemon-shutdown.js.map +1 -1
  155. package/daemon/dist/db/all-migrations.d.ts.map +1 -1
  156. package/daemon/dist/db/all-migrations.js +2 -0
  157. package/daemon/dist/db/all-migrations.js.map +1 -1
  158. package/daemon/dist/db/migrations/095_rig_non_interruptive.d.ts +3 -0
  159. package/daemon/dist/db/migrations/095_rig_non_interruptive.d.ts.map +1 -0
  160. package/daemon/dist/db/migrations/095_rig_non_interruptive.js +5 -0
  161. package/daemon/dist/db/migrations/095_rig_non_interruptive.js.map +1 -0
  162. package/daemon/dist/domain/agent-manifest.d.ts.map +1 -1
  163. package/daemon/dist/domain/agent-manifest.js +4 -2
  164. package/daemon/dist/domain/agent-manifest.js.map +1 -1
  165. package/daemon/dist/domain/bootstrap-orchestrator.d.ts +10 -0
  166. package/daemon/dist/domain/bootstrap-orchestrator.d.ts.map +1 -1
  167. package/daemon/dist/domain/bootstrap-orchestrator.js +133 -31
  168. package/daemon/dist/domain/bootstrap-orchestrator.js.map +1 -1
  169. package/daemon/dist/domain/builtin-policy-reference.d.ts +1 -1
  170. package/daemon/dist/domain/builtin-policy-reference.d.ts.map +1 -1
  171. package/daemon/dist/domain/builtin-policy-reference.js +2 -2
  172. package/daemon/dist/domain/builtin-policy-reference.js.map +1 -1
  173. package/daemon/dist/domain/bundle-archive.d.ts +24 -0
  174. package/daemon/dist/domain/bundle-archive.d.ts.map +1 -1
  175. package/daemon/dist/domain/bundle-archive.js +52 -27
  176. package/daemon/dist/domain/bundle-archive.js.map +1 -1
  177. package/daemon/dist/domain/bundle-audit.d.ts +5 -0
  178. package/daemon/dist/domain/bundle-audit.d.ts.map +1 -1
  179. package/daemon/dist/domain/bundle-audit.js.map +1 -1
  180. package/daemon/dist/domain/bundle-behaviour-inspect.d.ts +4 -0
  181. package/daemon/dist/domain/bundle-behaviour-inspect.d.ts.map +1 -0
  182. package/daemon/dist/domain/bundle-behaviour-inspect.js +56 -0
  183. package/daemon/dist/domain/bundle-behaviour-inspect.js.map +1 -0
  184. package/daemon/dist/domain/bundle-behaviour.d.ts +118 -0
  185. package/daemon/dist/domain/bundle-behaviour.d.ts.map +1 -0
  186. package/daemon/dist/domain/bundle-behaviour.js +364 -0
  187. package/daemon/dist/domain/bundle-behaviour.js.map +1 -0
  188. package/daemon/dist/domain/bundle-carried-context-pack.d.ts +16 -0
  189. package/daemon/dist/domain/bundle-carried-context-pack.d.ts.map +1 -0
  190. package/daemon/dist/domain/bundle-carried-context-pack.js +67 -0
  191. package/daemon/dist/domain/bundle-carried-context-pack.js.map +1 -0
  192. package/daemon/dist/domain/bundle-carried-project.d.ts +13 -0
  193. package/daemon/dist/domain/bundle-carried-project.d.ts.map +1 -0
  194. package/daemon/dist/domain/bundle-carried-project.js +71 -0
  195. package/daemon/dist/domain/bundle-carried-project.js.map +1 -0
  196. package/daemon/dist/domain/bundle-conflict-detector.js +3 -3
  197. package/daemon/dist/domain/bundle-conflict-detector.js.map +1 -1
  198. package/daemon/dist/domain/bundle-content-routing.d.ts +49 -0
  199. package/daemon/dist/domain/bundle-content-routing.d.ts.map +1 -0
  200. package/daemon/dist/domain/bundle-content-routing.js +246 -0
  201. package/daemon/dist/domain/bundle-content-routing.js.map +1 -0
  202. package/daemon/dist/domain/bundle-context-packs-router.d.ts +7 -2
  203. package/daemon/dist/domain/bundle-context-packs-router.d.ts.map +1 -1
  204. package/daemon/dist/domain/bundle-context-packs-router.js +19 -0
  205. package/daemon/dist/domain/bundle-context-packs-router.js.map +1 -1
  206. package/daemon/dist/domain/bundle-identity.d.ts +27 -0
  207. package/daemon/dist/domain/bundle-identity.d.ts.map +1 -0
  208. package/daemon/dist/domain/bundle-identity.js +34 -0
  209. package/daemon/dist/domain/bundle-identity.js.map +1 -0
  210. package/daemon/dist/domain/bundle-install-context.d.ts +22 -0
  211. package/daemon/dist/domain/bundle-install-context.d.ts.map +1 -0
  212. package/daemon/dist/domain/bundle-install-context.js +51 -0
  213. package/daemon/dist/domain/bundle-install-context.js.map +1 -0
  214. package/daemon/dist/domain/bundle-integrity.d.ts +1 -0
  215. package/daemon/dist/domain/bundle-integrity.d.ts.map +1 -1
  216. package/daemon/dist/domain/bundle-integrity.js +1 -1
  217. package/daemon/dist/domain/bundle-integrity.js.map +1 -1
  218. package/daemon/dist/domain/bundle-source-resolver.d.ts +4 -1
  219. package/daemon/dist/domain/bundle-source-resolver.d.ts.map +1 -1
  220. package/daemon/dist/domain/bundle-source-resolver.js +73 -19
  221. package/daemon/dist/domain/bundle-source-resolver.js.map +1 -1
  222. package/daemon/dist/domain/bundle-types.d.ts +37 -0
  223. package/daemon/dist/domain/bundle-types.d.ts.map +1 -1
  224. package/daemon/dist/domain/bundle-types.js +78 -0
  225. package/daemon/dist/domain/bundle-types.js.map +1 -1
  226. package/daemon/dist/domain/claude-compaction-enforcer.d.ts +4 -1
  227. package/daemon/dist/domain/claude-compaction-enforcer.d.ts.map +1 -1
  228. package/daemon/dist/domain/claude-compaction-enforcer.js +45 -10
  229. package/daemon/dist/domain/claude-compaction-enforcer.js.map +1 -1
  230. package/daemon/dist/domain/codex-team-workspace.d.ts +8 -0
  231. package/daemon/dist/domain/codex-team-workspace.d.ts.map +1 -0
  232. package/daemon/dist/domain/codex-team-workspace.js +54 -0
  233. package/daemon/dist/domain/codex-team-workspace.js.map +1 -0
  234. package/daemon/dist/domain/context-monitor.d.ts.map +1 -1
  235. package/daemon/dist/domain/context-monitor.js +7 -1
  236. package/daemon/dist/domain/context-monitor.js.map +1 -1
  237. package/daemon/dist/domain/daemon-version.d.ts +3 -1
  238. package/daemon/dist/domain/daemon-version.d.ts.map +1 -1
  239. package/daemon/dist/domain/daemon-version.js +6 -1
  240. package/daemon/dist/domain/daemon-version.js.map +1 -1
  241. package/daemon/dist/domain/event-loop-monitor.d.ts +6 -0
  242. package/daemon/dist/domain/event-loop-monitor.d.ts.map +1 -1
  243. package/daemon/dist/domain/event-loop-monitor.js +13 -0
  244. package/daemon/dist/domain/event-loop-monitor.js.map +1 -1
  245. package/daemon/dist/domain/finite-telemetry.d.ts +74 -0
  246. package/daemon/dist/domain/finite-telemetry.d.ts.map +1 -0
  247. package/daemon/dist/domain/finite-telemetry.js +236 -0
  248. package/daemon/dist/domain/finite-telemetry.js.map +1 -0
  249. package/daemon/dist/domain/gateway/connections-projection.d.ts +1 -1
  250. package/daemon/dist/domain/gateway/gateway-subsystem.d.ts +2 -0
  251. package/daemon/dist/domain/gateway/gateway-subsystem.d.ts.map +1 -1
  252. package/daemon/dist/domain/gateway/gateway-subsystem.js +4 -0
  253. package/daemon/dist/domain/gateway/gateway-subsystem.js.map +1 -1
  254. package/daemon/dist/domain/gateway/slack/channel-recovery.d.ts +45 -0
  255. package/daemon/dist/domain/gateway/slack/channel-recovery.d.ts.map +1 -0
  256. package/daemon/dist/domain/gateway/slack/channel-recovery.js +176 -0
  257. package/daemon/dist/domain/gateway/slack/channel-recovery.js.map +1 -0
  258. package/daemon/dist/domain/gateway/slack/inbound.d.ts +3 -1
  259. package/daemon/dist/domain/gateway/slack/inbound.d.ts.map +1 -1
  260. package/daemon/dist/domain/gateway/slack/inbound.js +19 -8
  261. package/daemon/dist/domain/gateway/slack/inbound.js.map +1 -1
  262. package/daemon/dist/domain/gateway/slack/slack-api.d.ts +1 -0
  263. package/daemon/dist/domain/gateway/slack/slack-api.d.ts.map +1 -1
  264. package/daemon/dist/domain/gateway/slack/slack-api.js +3 -1
  265. package/daemon/dist/domain/gateway/slack/slack-api.js.map +1 -1
  266. package/daemon/dist/domain/gateway/slack/slack-subsystem.d.ts.map +1 -1
  267. package/daemon/dist/domain/gateway/slack/slack-subsystem.js +7 -1
  268. package/daemon/dist/domain/gateway/slack/slack-subsystem.js.map +1 -1
  269. package/daemon/dist/domain/gateway/slack/socket-inbound.d.ts +4 -0
  270. package/daemon/dist/domain/gateway/slack/socket-inbound.d.ts.map +1 -1
  271. package/daemon/dist/domain/gateway/slack/socket-inbound.js +11 -1
  272. package/daemon/dist/domain/gateway/slack/socket-inbound.js.map +1 -1
  273. package/daemon/dist/domain/gateway/slack/state-store.d.ts +24 -0
  274. package/daemon/dist/domain/gateway/slack/state-store.d.ts.map +1 -1
  275. package/daemon/dist/domain/gateway/slack/state-store.js +84 -1
  276. package/daemon/dist/domain/gateway/slack/state-store.js.map +1 -1
  277. package/daemon/dist/domain/generated-file-hygiene.d.ts +3 -0
  278. package/daemon/dist/domain/generated-file-hygiene.d.ts.map +1 -0
  279. package/daemon/dist/domain/generated-file-hygiene.js +142 -0
  280. package/daemon/dist/domain/generated-file-hygiene.js.map +1 -0
  281. package/daemon/dist/domain/install-planner.d.ts.map +1 -1
  282. package/daemon/dist/domain/install-planner.js +17 -0
  283. package/daemon/dist/domain/install-planner.js.map +1 -1
  284. package/daemon/dist/domain/managed-blocks.d.ts +1 -0
  285. package/daemon/dist/domain/managed-blocks.d.ts.map +1 -1
  286. package/daemon/dist/domain/managed-blocks.js +3 -0
  287. package/daemon/dist/domain/managed-blocks.js.map +1 -1
  288. package/daemon/dist/domain/native-permission-store.d.ts +14 -0
  289. package/daemon/dist/domain/native-permission-store.d.ts.map +1 -1
  290. package/daemon/dist/domain/native-permission-store.js +168 -4
  291. package/daemon/dist/domain/native-permission-store.js.map +1 -1
  292. package/daemon/dist/domain/native-process-executable.d.ts +4 -0
  293. package/daemon/dist/domain/native-process-executable.d.ts.map +1 -0
  294. package/daemon/dist/domain/native-process-executable.js +53 -0
  295. package/daemon/dist/domain/native-process-executable.js.map +1 -0
  296. package/daemon/dist/domain/native-process-lineage.d.ts +2 -0
  297. package/daemon/dist/domain/native-process-lineage.d.ts.map +1 -1
  298. package/daemon/dist/domain/native-process-lineage.js +34 -7
  299. package/daemon/dist/domain/native-process-lineage.js.map +1 -1
  300. package/daemon/dist/domain/native-resume-probe.d.ts +3 -1
  301. package/daemon/dist/domain/native-resume-probe.d.ts.map +1 -1
  302. package/daemon/dist/domain/native-resume-probe.js +38 -7
  303. package/daemon/dist/domain/native-resume-probe.js.map +1 -1
  304. package/daemon/dist/domain/permission-policy/policy-ref.d.ts +6 -1
  305. package/daemon/dist/domain/permission-policy/policy-ref.d.ts.map +1 -1
  306. package/daemon/dist/domain/permission-policy/policy-ref.js +16 -4
  307. package/daemon/dist/domain/permission-policy/policy-ref.js.map +1 -1
  308. package/daemon/dist/domain/permission-policy/policy-spec.d.ts +1 -1
  309. package/daemon/dist/domain/permission-policy/policy-spec.d.ts.map +1 -1
  310. package/daemon/dist/domain/permission-policy/policy-spec.js +2 -2
  311. package/daemon/dist/domain/permission-policy/policy-spec.js.map +1 -1
  312. package/daemon/dist/domain/profile-resolver.d.ts +3 -2
  313. package/daemon/dist/domain/profile-resolver.d.ts.map +1 -1
  314. package/daemon/dist/domain/profile-resolver.js +71 -9
  315. package/daemon/dist/domain/profile-resolver.js.map +1 -1
  316. package/daemon/dist/domain/projection-planner.d.ts +11 -0
  317. package/daemon/dist/domain/projection-planner.d.ts.map +1 -1
  318. package/daemon/dist/domain/projection-planner.js +1 -1
  319. package/daemon/dist/domain/projection-planner.js.map +1 -1
  320. package/daemon/dist/domain/queue-repository.d.ts.map +1 -1
  321. package/daemon/dist/domain/queue-repository.js +36 -10
  322. package/daemon/dist/domain/queue-repository.js.map +1 -1
  323. package/daemon/dist/domain/queue-transition-log.d.ts.map +1 -1
  324. package/daemon/dist/domain/queue-transition-log.js +12 -10
  325. package/daemon/dist/domain/queue-transition-log.js.map +1 -1
  326. package/daemon/dist/domain/readiness-timeout.d.ts +7 -0
  327. package/daemon/dist/domain/readiness-timeout.d.ts.map +1 -0
  328. package/daemon/dist/domain/readiness-timeout.js +19 -0
  329. package/daemon/dist/domain/readiness-timeout.js.map +1 -0
  330. package/daemon/dist/domain/request-phase-observer.d.ts +69 -0
  331. package/daemon/dist/domain/request-phase-observer.d.ts.map +1 -0
  332. package/daemon/dist/domain/request-phase-observer.js +206 -0
  333. package/daemon/dist/domain/request-phase-observer.js.map +1 -0
  334. package/daemon/dist/domain/restore-orchestrator.d.ts +2 -0
  335. package/daemon/dist/domain/restore-orchestrator.d.ts.map +1 -1
  336. package/daemon/dist/domain/restore-orchestrator.js +58 -12
  337. package/daemon/dist/domain/restore-orchestrator.js.map +1 -1
  338. package/daemon/dist/domain/rig-mode/operating-posture.d.ts +17 -1
  339. package/daemon/dist/domain/rig-mode/operating-posture.d.ts.map +1 -1
  340. package/daemon/dist/domain/rig-mode/operating-posture.js +53 -15
  341. package/daemon/dist/domain/rig-mode/operating-posture.js.map +1 -1
  342. package/daemon/dist/domain/rig-repository.d.ts +12 -5
  343. package/daemon/dist/domain/rig-repository.d.ts.map +1 -1
  344. package/daemon/dist/domain/rig-repository.js +49 -6
  345. package/daemon/dist/domain/rig-repository.js.map +1 -1
  346. package/daemon/dist/domain/rig-teardown.d.ts.map +1 -1
  347. package/daemon/dist/domain/rig-teardown.js +12 -3
  348. package/daemon/dist/domain/rig-teardown.js.map +1 -1
  349. package/daemon/dist/domain/rigspec-codec.d.ts.map +1 -1
  350. package/daemon/dist/domain/rigspec-codec.js +2 -0
  351. package/daemon/dist/domain/rigspec-codec.js.map +1 -1
  352. package/daemon/dist/domain/rigspec-exporter.d.ts.map +1 -1
  353. package/daemon/dist/domain/rigspec-exporter.js +1 -0
  354. package/daemon/dist/domain/rigspec-exporter.js.map +1 -1
  355. package/daemon/dist/domain/rigspec-instantiator.d.ts +8 -3
  356. package/daemon/dist/domain/rigspec-instantiator.d.ts.map +1 -1
  357. package/daemon/dist/domain/rigspec-instantiator.js +45 -12
  358. package/daemon/dist/domain/rigspec-instantiator.js.map +1 -1
  359. package/daemon/dist/domain/rigspec-preflight.d.ts +3 -2
  360. package/daemon/dist/domain/rigspec-preflight.d.ts.map +1 -1
  361. package/daemon/dist/domain/rigspec-preflight.js +18 -10
  362. package/daemon/dist/domain/rigspec-preflight.js.map +1 -1
  363. package/daemon/dist/domain/rigspec-schema.d.ts.map +1 -1
  364. package/daemon/dist/domain/rigspec-schema.js +5 -1
  365. package/daemon/dist/domain/rigspec-schema.js.map +1 -1
  366. package/daemon/dist/domain/route-timing-recorder.d.ts.map +1 -1
  367. package/daemon/dist/domain/route-timing-recorder.js +2 -0
  368. package/daemon/dist/domain/route-timing-recorder.js.map +1 -1
  369. package/daemon/dist/domain/runtime-adapter.d.ts +12 -3
  370. package/daemon/dist/domain/runtime-adapter.d.ts.map +1 -1
  371. package/daemon/dist/domain/runtime-adapter.js +1 -0
  372. package/daemon/dist/domain/runtime-adapter.js.map +1 -1
  373. package/daemon/dist/domain/seat-attention-reconciler.d.ts.map +1 -1
  374. package/daemon/dist/domain/seat-attention-reconciler.js +10 -4
  375. package/daemon/dist/domain/seat-attention-reconciler.js.map +1 -1
  376. package/daemon/dist/domain/seat-handover-service.d.ts +2 -0
  377. package/daemon/dist/domain/seat-handover-service.d.ts.map +1 -1
  378. package/daemon/dist/domain/seat-handover-service.js +5 -7
  379. package/daemon/dist/domain/seat-handover-service.js.map +1 -1
  380. package/daemon/dist/domain/seat-launch-environment.d.ts.map +1 -1
  381. package/daemon/dist/domain/seat-launch-environment.js +4 -0
  382. package/daemon/dist/domain/seat-launch-environment.js.map +1 -1
  383. package/daemon/dist/domain/seat-lifecycle-service.d.ts +4 -0
  384. package/daemon/dist/domain/seat-lifecycle-service.d.ts.map +1 -1
  385. package/daemon/dist/domain/seat-lifecycle-service.js +4 -0
  386. package/daemon/dist/domain/seat-lifecycle-service.js.map +1 -1
  387. package/daemon/dist/domain/seat-status-service.d.ts +2 -1
  388. package/daemon/dist/domain/seat-status-service.d.ts.map +1 -1
  389. package/daemon/dist/domain/seat-status-service.js +6 -4
  390. package/daemon/dist/domain/seat-status-service.js.map +1 -1
  391. package/daemon/dist/domain/service-orchestrator.d.ts +1 -0
  392. package/daemon/dist/domain/service-orchestrator.d.ts.map +1 -1
  393. package/daemon/dist/domain/service-orchestrator.js +4 -0
  394. package/daemon/dist/domain/service-orchestrator.js.map +1 -1
  395. package/daemon/dist/domain/session-transport.d.ts +5 -0
  396. package/daemon/dist/domain/session-transport.d.ts.map +1 -1
  397. package/daemon/dist/domain/session-transport.js +161 -14
  398. package/daemon/dist/domain/session-transport.js.map +1 -1
  399. package/daemon/dist/domain/skill-catalog.d.ts +19 -0
  400. package/daemon/dist/domain/skill-catalog.d.ts.map +1 -1
  401. package/daemon/dist/domain/skill-catalog.js +166 -17
  402. package/daemon/dist/domain/skill-catalog.js.map +1 -1
  403. package/daemon/dist/domain/skill-discovery.d.ts +1 -1
  404. package/daemon/dist/domain/skill-discovery.d.ts.map +1 -1
  405. package/daemon/dist/domain/skill-discovery.js +6 -0
  406. package/daemon/dist/domain/skill-discovery.js.map +1 -1
  407. package/daemon/dist/domain/slow-op-recorder.d.ts +5 -0
  408. package/daemon/dist/domain/slow-op-recorder.d.ts.map +1 -1
  409. package/daemon/dist/domain/slow-op-recorder.js +34 -1
  410. package/daemon/dist/domain/slow-op-recorder.js.map +1 -1
  411. package/daemon/dist/domain/startup-orchestrator.d.ts +30 -5
  412. package/daemon/dist/domain/startup-orchestrator.d.ts.map +1 -1
  413. package/daemon/dist/domain/startup-orchestrator.js +143 -43
  414. package/daemon/dist/domain/startup-orchestrator.js.map +1 -1
  415. package/daemon/dist/domain/startup-proof.d.ts +7 -0
  416. package/daemon/dist/domain/startup-proof.d.ts.map +1 -1
  417. package/daemon/dist/domain/startup-proof.js +7 -0
  418. package/daemon/dist/domain/startup-proof.js.map +1 -1
  419. package/daemon/dist/domain/startup-submission-evidence.d.ts +5 -1
  420. package/daemon/dist/domain/startup-submission-evidence.d.ts.map +1 -1
  421. package/daemon/dist/domain/startup-submission-evidence.js +19 -2
  422. package/daemon/dist/domain/startup-submission-evidence.js.map +1 -1
  423. package/daemon/dist/domain/successor-session-launcher.d.ts +9 -3
  424. package/daemon/dist/domain/successor-session-launcher.d.ts.map +1 -1
  425. package/daemon/dist/domain/successor-session-launcher.js +12 -4
  426. package/daemon/dist/domain/successor-session-launcher.js.map +1 -1
  427. package/daemon/dist/domain/system-world.d.ts +3 -0
  428. package/daemon/dist/domain/system-world.d.ts.map +1 -1
  429. package/daemon/dist/domain/system-world.js +24 -21
  430. package/daemon/dist/domain/system-world.js.map +1 -1
  431. package/daemon/dist/domain/terminal/cmux-provider-adapter.d.ts.map +1 -1
  432. package/daemon/dist/domain/terminal/cmux-provider-adapter.js +2 -3
  433. package/daemon/dist/domain/terminal/cmux-provider-adapter.js.map +1 -1
  434. package/daemon/dist/domain/terminal/herdr-adapter.d.ts +19 -4
  435. package/daemon/dist/domain/terminal/herdr-adapter.d.ts.map +1 -1
  436. package/daemon/dist/domain/terminal/herdr-adapter.js +102 -8
  437. package/daemon/dist/domain/terminal/herdr-adapter.js.map +1 -1
  438. package/daemon/dist/domain/terminal/terminal-provider.d.ts +2 -0
  439. package/daemon/dist/domain/terminal/terminal-provider.d.ts.map +1 -1
  440. package/daemon/dist/domain/terminal/terminal-service.d.ts +10 -0
  441. package/daemon/dist/domain/terminal/terminal-service.d.ts.map +1 -1
  442. package/daemon/dist/domain/terminal/terminal-service.js +75 -6
  443. package/daemon/dist/domain/terminal/terminal-service.js.map +1 -1
  444. package/daemon/dist/domain/terminal/view-composer.d.ts +6 -0
  445. package/daemon/dist/domain/terminal/view-composer.d.ts.map +1 -1
  446. package/daemon/dist/domain/terminal/view-composer.js +4 -2
  447. package/daemon/dist/domain/terminal/view-composer.js.map +1 -1
  448. package/daemon/dist/domain/topology/remote-up-leaf.d.ts +1 -0
  449. package/daemon/dist/domain/topology/remote-up-leaf.d.ts.map +1 -1
  450. package/daemon/dist/domain/topology/remote-up-leaf.js.map +1 -1
  451. package/daemon/dist/domain/transcript-store.d.ts.map +1 -1
  452. package/daemon/dist/domain/transcript-store.js +3 -2
  453. package/daemon/dist/domain/transcript-store.js.map +1 -1
  454. package/daemon/dist/domain/types.d.ts +6 -0
  455. package/daemon/dist/domain/types.d.ts.map +1 -1
  456. package/daemon/dist/domain/user-settings/settings-store.d.ts +1 -1
  457. package/daemon/dist/domain/user-settings/settings-store.d.ts.map +1 -1
  458. package/daemon/dist/domain/user-settings/settings-store.js +13 -0
  459. package/daemon/dist/domain/user-settings/settings-store.js.map +1 -1
  460. package/daemon/dist/domain/workflow-runtime.d.ts +1 -1
  461. package/daemon/dist/domain/workspace/project-catalog.d.ts +20 -0
  462. package/daemon/dist/domain/workspace/project-catalog.d.ts.map +1 -1
  463. package/daemon/dist/domain/workspace/project-catalog.js +92 -0
  464. package/daemon/dist/domain/workspace/project-catalog.js.map +1 -1
  465. package/daemon/dist/domain/workspace/project-registration.d.ts +49 -0
  466. package/daemon/dist/domain/workspace/project-registration.d.ts.map +1 -0
  467. package/daemon/dist/domain/workspace/project-registration.js +251 -0
  468. package/daemon/dist/domain/workspace/project-registration.js.map +1 -0
  469. package/daemon/dist/index.d.ts.map +1 -1
  470. package/daemon/dist/index.js +2 -1
  471. package/daemon/dist/index.js.map +1 -1
  472. package/daemon/dist/project-catalog-surface.d.ts +2 -1
  473. package/daemon/dist/project-catalog-surface.d.ts.map +1 -1
  474. package/daemon/dist/project-catalog-surface.js +1 -1
  475. package/daemon/dist/project-catalog-surface.js.map +1 -1
  476. package/daemon/dist/routes/bundles.d.ts.map +1 -1
  477. package/daemon/dist/routes/bundles.js +174 -413
  478. package/daemon/dist/routes/bundles.js.map +1 -1
  479. package/daemon/dist/routes/compaction.d.ts.map +1 -1
  480. package/daemon/dist/routes/compaction.js +14 -2
  481. package/daemon/dist/routes/compaction.js.map +1 -1
  482. package/daemon/dist/routes/env.d.ts.map +1 -1
  483. package/daemon/dist/routes/env.js +14 -4
  484. package/daemon/dist/routes/env.js.map +1 -1
  485. package/daemon/dist/routes/gateway.d.ts.map +1 -1
  486. package/daemon/dist/routes/gateway.js +5 -0
  487. package/daemon/dist/routes/gateway.js.map +1 -1
  488. package/daemon/dist/routes/projects.d.ts.map +1 -1
  489. package/daemon/dist/routes/projects.js +4 -2
  490. package/daemon/dist/routes/projects.js.map +1 -1
  491. package/daemon/dist/routes/rigs.d.ts.map +1 -1
  492. package/daemon/dist/routes/rigs.js +3 -2
  493. package/daemon/dist/routes/rigs.js.map +1 -1
  494. package/daemon/dist/routes/rigspec.js +4 -2
  495. package/daemon/dist/routes/rigspec.js.map +1 -1
  496. package/daemon/dist/routes/seat.js +11 -4
  497. package/daemon/dist/routes/seat.js.map +1 -1
  498. package/daemon/dist/routes/sessions.d.ts.map +1 -1
  499. package/daemon/dist/routes/sessions.js +2 -1
  500. package/daemon/dist/routes/sessions.js.map +1 -1
  501. package/daemon/dist/routes/telemetry.d.ts +2 -0
  502. package/daemon/dist/routes/telemetry.d.ts.map +1 -1
  503. package/daemon/dist/routes/telemetry.js +16 -0
  504. package/daemon/dist/routes/telemetry.js.map +1 -1
  505. package/daemon/dist/routes/up.js +9 -5
  506. package/daemon/dist/routes/up.js.map +1 -1
  507. package/daemon/dist/server.d.ts +1 -0
  508. package/daemon/dist/server.d.ts.map +1 -1
  509. package/daemon/dist/server.js +4 -1
  510. package/daemon/dist/server.js.map +1 -1
  511. package/daemon/dist/spec-validation-surface.d.ts +2 -0
  512. package/daemon/dist/spec-validation-surface.d.ts.map +1 -1
  513. package/daemon/dist/spec-validation-surface.js +2 -0
  514. package/daemon/dist/spec-validation-surface.js.map +1 -1
  515. package/daemon/dist/startup.d.ts.map +1 -1
  516. package/daemon/dist/startup.js +33 -11
  517. package/daemon/dist/startup.js.map +1 -1
  518. package/daemon/dist/system-world-surface.d.ts +1 -1
  519. package/daemon/dist/system-world-surface.d.ts.map +1 -1
  520. package/daemon/dist/system-world-surface.js +1 -1
  521. package/daemon/dist/system-world-surface.js.map +1 -1
  522. package/daemon/docs/reference/agent-spec.md +113 -67
  523. package/daemon/docs/reference/agent-startup-guide.md +106 -33
  524. package/daemon/docs/reference/agent-state-taxonomy.md +44 -13
  525. package/daemon/docs/reference/browser-access.md +8 -7
  526. package/daemon/docs/reference/bundle-formats.md +207 -0
  527. package/daemon/docs/reference/chain-file-convention.md +16 -7
  528. package/daemon/docs/reference/developing.md +7 -0
  529. package/daemon/docs/reference/edge-types.md +18 -10
  530. package/daemon/docs/reference/getting-started.md +423 -113
  531. package/daemon/docs/reference/health-diagnosis.md +14 -6
  532. package/daemon/docs/reference/help.md +33 -8
  533. package/daemon/docs/reference/host-resources.md +3 -2
  534. package/daemon/docs/reference/inventory-request-diagnostics.md +75 -0
  535. package/daemon/docs/reference/knowledge-maturity.md +3 -1
  536. package/daemon/docs/reference/legacy-topology-migration.md +4 -2
  537. package/daemon/docs/reference/lore-routing.md +3 -1
  538. package/daemon/docs/reference/mission-install.md +3 -1
  539. package/daemon/docs/reference/non-interruptive-mode.md +60 -0
  540. package/daemon/docs/reference/planning-dial.md +2 -1
  541. package/daemon/docs/reference/product-journey-sdlc.md +11 -6
  542. package/daemon/docs/reference/product-management-pass.md +3 -1
  543. package/daemon/docs/reference/project-workspace.md +80 -3
  544. package/daemon/docs/reference/publishing-a-rig-bundle.md +144 -0
  545. package/daemon/docs/reference/refocus-channel.md +14 -5
  546. package/daemon/docs/reference/release-boundary.md +7 -3
  547. package/daemon/docs/reference/rig-bundle.md +271 -42
  548. package/daemon/docs/reference/rig-spec.md +150 -26
  549. package/daemon/docs/reference/rosters.md +60 -0
  550. package/daemon/docs/reference/schemas/bundle-behaviour.v1.schema.json +546 -0
  551. package/daemon/docs/reference/schemas/bundle-common.v1.schema.json +110 -0
  552. package/daemon/docs/reference/schemas/bundle-configurations.v1.schema.json +67 -0
  553. package/daemon/docs/reference/schemas/bundle-status.v1.schema.json +323 -0
  554. package/daemon/docs/reference/schemas/fixtures/identity-vectors.json +80 -0
  555. package/daemon/docs/reference/schemas/fixtures/invalid/behaviour/not-generated-with-sections.json +60 -0
  556. package/daemon/docs/reference/schemas/fixtures/invalid/configurations/spaced-member.configurations.yaml +6 -0
  557. package/daemon/docs/reference/schemas/fixtures/invalid/registry/listed-with-withdrawn-on.yaml +21 -0
  558. package/daemon/docs/reference/schemas/fixtures/invalid/registry/missing-source.yaml +16 -0
  559. package/daemon/docs/reference/schemas/fixtures/invalid/registry/parent-folder.yaml +20 -0
  560. package/daemon/docs/reference/schemas/fixtures/invalid/registry/short-commit.yaml +20 -0
  561. package/daemon/docs/reference/schemas/fixtures/invalid/registry/withdrawn-without-date.yaml +20 -0
  562. package/daemon/docs/reference/schemas/fixtures/invalid/run-record/harness-check-with-configuration.json +75 -0
  563. package/daemon/docs/reference/schemas/fixtures/invalid/run-record/unlabelable-platform.json +97 -0
  564. package/daemon/docs/reference/schemas/fixtures/invalid/status/hand-edited-notice.json +61 -0
  565. package/daemon/docs/reference/schemas/fixtures/invalid/status/tested-with-assistance.json +62 -0
  566. package/daemon/docs/reference/schemas/fixtures/invalid/status/tested-without-records.json +59 -0
  567. package/daemon/docs/reference/schemas/fixtures/invalid/status/unavailable-harness-with-result.json +61 -0
  568. package/daemon/docs/reference/schemas/fixtures/invalid/status/unavailable-listing-with-label.json +61 -0
  569. package/daemon/docs/reference/schemas/fixtures/valid/behaviour/custom-not-generated.json +22 -0
  570. package/daemon/docs/reference/schemas/fixtures/valid/behaviour/legacy-archive-unknown-identity.json +53 -0
  571. package/daemon/docs/reference/schemas/fixtures/valid/behaviour/mixed-runtimes-default.json +101 -0
  572. package/daemon/docs/reference/schemas/fixtures/valid/behaviour/mixed-runtimes-yolo.json +102 -0
  573. package/daemon/docs/reference/schemas/fixtures/valid/behaviour/openrig-dev.recommended.json +258 -0
  574. package/daemon/docs/reference/schemas/fixtures/valid/configurations/openrig-dev.configurations.yaml +12 -0
  575. package/daemon/docs/reference/schemas/fixtures/valid/registry/openrig-dev.yaml +20 -0
  576. package/daemon/docs/reference/schemas/fixtures/valid/registry/withdrawn.yaml +21 -0
  577. package/daemon/docs/reference/schemas/fixtures/valid/run-record/pi-harness-check-blocked.json +74 -0
  578. package/daemon/docs/reference/schemas/fixtures/valid/run-record/team-assisted-pass.json +97 -0
  579. package/daemon/docs/reference/schemas/fixtures/valid/run-record/team-pass.json +97 -0
  580. package/daemon/docs/reference/schemas/fixtures/valid/run-record/withdraws-earlier.json +99 -0
  581. package/daemon/docs/reference/schemas/fixtures/valid/status/status.json +61 -0
  582. package/daemon/docs/reference/schemas/registry-entry.v1.schema.json +139 -0
  583. package/daemon/docs/reference/schemas/run-record.v1.schema.json +315 -0
  584. package/daemon/docs/reference/scoped-operating-posture.md +17 -9
  585. package/daemon/docs/reference/sdlc-conventions.md +42 -26
  586. package/daemon/docs/reference/slack-app-setup.md +52 -7
  587. package/daemon/docs/reference/stream-classifier-worker.md +21 -8
  588. package/daemon/docs/reference/telemetry.md +114 -0
  589. package/daemon/docs/reference/worktree-builds.md +12 -6
  590. package/daemon/policies/builtin/auto.policy.md +24 -0
  591. package/daemon/specs/agents/development/implementer/agent.yaml +2 -2
  592. package/daemon/specs/agents/development/qa/agent.yaml +1 -1
  593. package/daemon/specs/agents/product-management/pm/agent.yaml +10 -0
  594. package/daemon/specs/agents/shared/skills/core/agent-starters/SKILL.md +0 -6
  595. package/daemon/specs/agents/shared/skills/core/agent-startup-and-context-ingestion/SKILL.md +1 -8
  596. package/daemon/specs/agents/shared/skills/core/openrig-architect/SKILL.md +5 -5
  597. package/daemon/specs/agents/shared/skills/core/openrig-skills/SKILL.md +3 -4
  598. package/daemon/specs/agents/shared/skills/core/openrig-software-factory/SKILL.md +12 -9
  599. package/daemon/specs/agents/shared/skills/core/openrig-software-factory/references/worked-example.md +29 -29
  600. package/daemon/specs/agents/shared/skills/core/rig-bundles-and-shareable-artifacts/SKILL.md +0 -1
  601. package/daemon/specs/agents/shared/skills/core/session-source-fork/SKILL.md +0 -5
  602. package/daemon/specs/agents/shared/skills/process/agent-browser/OPENRIG.md +1 -1
  603. package/daemon/specs/agents/shared/skills/process/systematic-debugging/SKILL.md +0 -2
  604. package/daemon/specs/rigs/focused/{adversarial-review → code-review}/rig.yaml +1 -1
  605. package/daemon/specs/rigs/focused/pm/CULTURE.md +21 -0
  606. package/daemon/specs/rigs/focused/{pm-team → pm}/rig.yaml +5 -5
  607. package/daemon/specs/rigs/focused/{research-team → research}/rig.yaml +1 -1
  608. package/daemon/specs/rigs/launch/factory/CULTURE.md +96 -0
  609. package/daemon/specs/rigs/launch/factory/guidance/advisor-role.md +10 -0
  610. package/daemon/specs/rigs/launch/factory/guidance/lead-first-move.md +23 -0
  611. package/daemon/specs/rigs/launch/{demo → factory}/rig.yaml +46 -35
  612. package/daemon/specs/rigs/{preview/product-team → launch/factory}/topology/instance/CRAFT.md +1 -1
  613. package/daemon/specs/rigs/{preview/product-team → launch/factory}/topology/rig/CRAFT.md +2 -2
  614. package/daemon/specs/rigs/{preview/product-team → launch/factory}/topology/rig/ORCHESTRATION-CRAFT.md +2 -2
  615. package/daemon/specs/rigs/{preview/product-team/topology/seats/dev1-qa → launch/factory/topology/seats/dev-qa}/CRAFT.md +1 -1
  616. package/daemon/specs/rigs/{preview/product-team/topology/seats/orch1-lead → launch/factory/topology/seats/orch-lead}/CRAFT.md +1 -1
  617. package/daemon/specs/rigs/{preview/product-team/topology/seats/rev1-r1 → launch/factory/topology/seats/review-r1}/CRAFT.md +1 -1
  618. package/daemon/specs/rigs/{preview/product-team/topology/seats/rev1-r2 → launch/factory/topology/seats/review-r2}/CRAFT.md +1 -1
  619. package/daemon/specs/rigs/launch/kernel/agents/advisor/lead/guidance/role.md +37 -0
  620. package/daemon/specs/rigs/launch/kernel/agents/advisor/lead/startup/context.md +12 -13
  621. package/daemon/specs/rigs/launch/kernel/agents/operator/agent/guidance/role.md +167 -4
  622. package/daemon/specs/rigs/launch/kernel/agents/operator/agent/startup/context.md +30 -7
  623. package/daemon/specs/rigs/launch/kernel/agents/queue/worker/guidance/role.md +37 -0
  624. package/daemon/specs/rigs/launch/kernel/culture/CULTURE.md +41 -0
  625. package/daemon/specs/rigs/launch/starter/CULTURE.md +39 -0
  626. package/daemon/specs/rigs/launch/starter/guidance/lead-first-move.md +23 -0
  627. package/daemon/specs/rigs/launch/{first-project-mixed → starter}/rig.yaml +11 -8
  628. package/dist/build-info.js +3 -3
  629. package/dist/bundle-behaviour.d.ts +10 -0
  630. package/dist/bundle-behaviour.d.ts.map +1 -0
  631. package/dist/bundle-behaviour.js +72 -0
  632. package/dist/bundle-behaviour.js.map +1 -0
  633. package/dist/commands/bootstrap.d.ts.map +1 -1
  634. package/dist/commands/bootstrap.js +30 -5
  635. package/dist/commands/bootstrap.js.map +1 -1
  636. package/dist/commands/bundle.d.ts +12 -0
  637. package/dist/commands/bundle.d.ts.map +1 -1
  638. package/dist/commands/bundle.js +286 -21
  639. package/dist/commands/bundle.js.map +1 -1
  640. package/dist/commands/capture.js +4 -4
  641. package/dist/commands/capture.js.map +1 -1
  642. package/dist/commands/compact-plan.js +2 -2
  643. package/dist/commands/compact-plan.js.map +1 -1
  644. package/dist/commands/config.d.ts.map +1 -1
  645. package/dist/commands/config.js +3 -0
  646. package/dist/commands/config.js.map +1 -1
  647. package/dist/commands/context.d.ts +3 -1
  648. package/dist/commands/context.d.ts.map +1 -1
  649. package/dist/commands/context.js +66 -18
  650. package/dist/commands/context.js.map +1 -1
  651. package/dist/commands/daemon.js +1 -1
  652. package/dist/commands/daemon.js.map +1 -1
  653. package/dist/commands/doctor.d.ts.map +1 -1
  654. package/dist/commands/doctor.js +7 -2
  655. package/dist/commands/doctor.js.map +1 -1
  656. package/dist/commands/down.d.ts.map +1 -1
  657. package/dist/commands/down.js +7 -1
  658. package/dist/commands/down.js.map +1 -1
  659. package/dist/commands/env.js +1 -1
  660. package/dist/commands/env.js.map +1 -1
  661. package/dist/commands/health.d.ts.map +1 -1
  662. package/dist/commands/health.js +4 -1
  663. package/dist/commands/health.js.map +1 -1
  664. package/dist/commands/host.d.ts +11 -0
  665. package/dist/commands/host.d.ts.map +1 -1
  666. package/dist/commands/host.js +25 -1
  667. package/dist/commands/host.js.map +1 -1
  668. package/dist/commands/import.d.ts.map +1 -1
  669. package/dist/commands/import.js +2 -0
  670. package/dist/commands/import.js.map +1 -1
  671. package/dist/commands/mcp.d.ts.map +1 -1
  672. package/dist/commands/mcp.js +25 -12
  673. package/dist/commands/mcp.js.map +1 -1
  674. package/dist/commands/policy.d.ts.map +1 -1
  675. package/dist/commands/policy.js +3 -2
  676. package/dist/commands/policy.js.map +1 -1
  677. package/dist/commands/project-jev.js +1 -1
  678. package/dist/commands/project-jev.js.map +1 -1
  679. package/dist/commands/project.d.ts.map +1 -1
  680. package/dist/commands/project.js +5 -3
  681. package/dist/commands/project.js.map +1 -1
  682. package/dist/commands/ps.d.ts +1 -0
  683. package/dist/commands/ps.d.ts.map +1 -1
  684. package/dist/commands/ps.js +12 -2
  685. package/dist/commands/ps.js.map +1 -1
  686. package/dist/commands/queue.d.ts.map +1 -1
  687. package/dist/commands/queue.js +4 -2
  688. package/dist/commands/queue.js.map +1 -1
  689. package/dist/commands/restore.d.ts.map +1 -1
  690. package/dist/commands/restore.js +5 -0
  691. package/dist/commands/restore.js.map +1 -1
  692. package/dist/commands/roster.d.ts +63 -0
  693. package/dist/commands/roster.d.ts.map +1 -0
  694. package/dist/commands/roster.js +169 -0
  695. package/dist/commands/roster.js.map +1 -0
  696. package/dist/commands/seat.d.ts.map +1 -1
  697. package/dist/commands/seat.js +57 -8
  698. package/dist/commands/seat.js.map +1 -1
  699. package/dist/commands/send.d.ts.map +1 -1
  700. package/dist/commands/send.js +20 -6
  701. package/dist/commands/send.js.map +1 -1
  702. package/dist/commands/setup.d.ts +1 -1
  703. package/dist/commands/setup.d.ts.map +1 -1
  704. package/dist/commands/setup.js +72 -25
  705. package/dist/commands/setup.js.map +1 -1
  706. package/dist/commands/slack.d.ts +1 -1
  707. package/dist/commands/slack.d.ts.map +1 -1
  708. package/dist/commands/slack.js +49 -4
  709. package/dist/commands/slack.js.map +1 -1
  710. package/dist/commands/specs.d.ts.map +1 -1
  711. package/dist/commands/specs.js +19 -2
  712. package/dist/commands/specs.js.map +1 -1
  713. package/dist/commands/start.js +1 -1
  714. package/dist/commands/start.js.map +1 -1
  715. package/dist/commands/telemetry.d.ts +5 -0
  716. package/dist/commands/telemetry.d.ts.map +1 -0
  717. package/dist/commands/telemetry.js +58 -0
  718. package/dist/commands/telemetry.js.map +1 -0
  719. package/dist/commands/terminal.js +1 -1
  720. package/dist/commands/terminal.js.map +1 -1
  721. package/dist/commands/tui.js +4 -4
  722. package/dist/commands/tui.js.map +1 -1
  723. package/dist/commands/up.d.ts.map +1 -1
  724. package/dist/commands/up.js +115 -68
  725. package/dist/commands/up.js.map +1 -1
  726. package/dist/commands/whoami.d.ts +3 -0
  727. package/dist/commands/whoami.d.ts.map +1 -1
  728. package/dist/commands/whoami.js +29 -2
  729. package/dist/commands/whoami.js.map +1 -1
  730. package/dist/config-store.d.ts +5 -1
  731. package/dist/config-store.d.ts.map +1 -1
  732. package/dist/config-store.js +16 -1
  733. package/dist/config-store.js.map +1 -1
  734. package/dist/daemon-auto-start.d.ts +8 -0
  735. package/dist/daemon-auto-start.d.ts.map +1 -0
  736. package/dist/daemon-auto-start.js +39 -0
  737. package/dist/daemon-auto-start.js.map +1 -0
  738. package/dist/front-door.d.ts.map +1 -1
  739. package/dist/front-door.js +3 -2
  740. package/dist/front-door.js.map +1 -1
  741. package/dist/index.d.ts +1 -0
  742. package/dist/index.d.ts.map +1 -1
  743. package/dist/index.js +4 -0
  744. package/dist/index.js.map +1 -1
  745. package/dist/lib/bundle-check.d.ts +13 -0
  746. package/dist/lib/bundle-check.d.ts.map +1 -0
  747. package/dist/lib/bundle-check.js +191 -0
  748. package/dist/lib/bundle-check.js.map +1 -0
  749. package/dist/lib/bundle-configuration.d.ts +60 -0
  750. package/dist/lib/bundle-configuration.d.ts.map +1 -0
  751. package/dist/lib/bundle-configuration.js +198 -0
  752. package/dist/lib/bundle-configuration.js.map +1 -0
  753. package/dist/lib/bundle-source.d.ts +57 -0
  754. package/dist/lib/bundle-source.d.ts.map +1 -0
  755. package/dist/lib/bundle-source.js +355 -0
  756. package/dist/lib/bundle-source.js.map +1 -0
  757. package/dist/lib/context-install.d.ts.map +1 -1
  758. package/dist/lib/context-install.js +2 -3
  759. package/dist/lib/context-install.js.map +1 -1
  760. package/dist/lib/permission-policy/policy-ref.d.ts +6 -1
  761. package/dist/lib/permission-policy/policy-ref.d.ts.map +1 -1
  762. package/dist/lib/permission-policy/policy-ref.js +16 -4
  763. package/dist/lib/permission-policy/policy-ref.js.map +1 -1
  764. package/dist/lib/permission-policy/policy-spec.d.ts +1 -1
  765. package/dist/lib/permission-policy/policy-spec.d.ts.map +1 -1
  766. package/dist/lib/permission-policy/policy-spec.js +2 -2
  767. package/dist/lib/permission-policy/policy-spec.js.map +1 -1
  768. package/dist/lib/scope/templates.d.ts.map +1 -1
  769. package/dist/lib/scope/templates.js +1 -0
  770. package/dist/lib/scope/templates.js.map +1 -1
  771. package/dist/lib/scope-templates/notes.md +1 -1
  772. package/dist/lib/work-install.d.ts +12 -0
  773. package/dist/lib/work-install.d.ts.map +1 -1
  774. package/dist/lib/work-install.js +55 -4
  775. package/dist/lib/work-install.js.map +1 -1
  776. package/package.json +1 -1
  777. package/tui/dist/commands/registry.d.ts.map +1 -1
  778. package/tui/dist/commands/registry.js +8 -3
  779. package/tui/dist/commands/registry.js.map +1 -1
  780. package/tui/dist/daemon-client.d.ts +1 -0
  781. package/tui/dist/daemon-client.d.ts.map +1 -1
  782. package/tui/dist/daemon-client.js +5 -2
  783. package/tui/dist/daemon-client.js.map +1 -1
  784. package/tui/dist/main.js +30 -3
  785. package/tui/dist/main.js.map +1 -1
  786. package/tui/dist/render.d.ts.map +1 -1
  787. package/tui/dist/render.js +66 -19
  788. package/tui/dist/render.js.map +1 -1
  789. package/tui/dist/specs/graph.d.ts +5 -0
  790. package/tui/dist/specs/graph.d.ts.map +1 -0
  791. package/tui/dist/specs/graph.js +16 -0
  792. package/tui/dist/specs/graph.js.map +1 -0
  793. package/tui/dist/specs/launch.d.ts +29 -0
  794. package/tui/dist/specs/launch.d.ts.map +1 -0
  795. package/tui/dist/specs/launch.js +64 -0
  796. package/tui/dist/specs/launch.js.map +1 -0
  797. package/tui/dist/startup.d.ts.map +1 -1
  798. package/tui/dist/startup.js +15 -6
  799. package/tui/dist/startup.js.map +1 -1
  800. package/tui/dist/state.d.ts +2 -2
  801. package/tui/dist/state.d.ts.map +1 -1
  802. package/tui/dist/state.js +41 -18
  803. package/tui/dist/state.js.map +1 -1
  804. package/tui/dist/terminals/terminal-model.d.ts +1 -0
  805. package/tui/dist/terminals/terminal-model.d.ts.map +1 -1
  806. package/tui/dist/terminals/terminal-model.js +19 -2
  807. package/tui/dist/terminals/terminal-model.js.map +1 -1
  808. package/tui/dist/types.d.ts +17 -0
  809. package/tui/dist/types.d.ts.map +1 -1
  810. package/daemon/specs/rigs/launch/conveyor/README.md +0 -33
  811. package/daemon/specs/rigs/launch/conveyor/rig.yaml +0 -72
  812. package/daemon/specs/rigs/launch/demo/project-example/README.md +0 -25
  813. package/daemon/specs/rigs/launch/demo/project-example/missions/improve-onboarding/SPEC.md +0 -19
  814. package/daemon/specs/rigs/launch/demo/project-example/missions/improve-onboarding/slices/01-shorten-first-run/PROGRESS.md +0 -6
  815. package/daemon/specs/rigs/launch/demo/project-example/missions/improve-onboarding/slices/01-shorten-first-run/PROOF.md +0 -7
  816. package/daemon/specs/rigs/launch/demo/project-example/missions/improve-onboarding/slices/01-shorten-first-run/SPEC.md +0 -31
  817. package/daemon/specs/rigs/launch/first-project/rig.yaml +0 -31
  818. package/daemon/specs/rigs/launch/first-project-claude/rig.yaml +0 -30
  819. package/daemon/specs/rigs/launch/implementation-pair/rig.yaml +0 -27
  820. package/daemon/specs/rigs/preview/product-team/rig.yaml +0 -90
  821. /package/daemon/specs/rigs/launch/factory-rsi/{rig.yaml → world-bundle.yaml} +0 -0
@@ -0,0 +1,236 @@
1
+ import { createHash } from "node:crypto";
2
+ export const TELEMETRY_LIMITS = { rows: 128, responseBytes: 128 * 1024, recordBytes: 4096, cursorBytes: 2048 };
3
+ const MAX_ID = 9223372036854775807n;
4
+ export class TelemetryInputError extends Error {
5
+ }
6
+ // Column names and caps are source-owned, never request SQL. The CASE prevents
7
+ // oversized legacy metadata from being materialized, not just from being sent.
8
+ function field(column, alias, cap = 256) {
9
+ return `CASE WHEN typeof(${column}) = 'text' AND octet_length(${column}) <= ${cap} THEN ${column} END AS ${alias},
10
+ CASE WHEN ${column} IS NULL THEN NULL WHEN typeof(${column}) != 'text' THEN 'invalid_type'
11
+ WHEN octet_length(${column}) > ${cap} THEN 'oversized_field' END AS _gap_${alias}`;
12
+ }
13
+ const eventFields = [field("rig_id", "rigId"), field("node_id", "nodeId"), field("type", "type", 128), field("created_at", "originalTimestamp", 128)].join(",");
14
+ const transitionFields = [field("qitem_id", "qitemId"), field("ts", "originalTimestamp", 128), field("state", "state", 128),
15
+ field("actor_session", "actorSession", 512), field("identity_provenance", "identityProvenance", 128),
16
+ field("closure_reason", "closureReason", 128), field("closure_target", "closureTarget", 512)].join(",");
17
+ const tenureFields = [field("node_id", "nodeId"), field("generation_uuid", "generationUuid"), field("kind", "kind", 128),
18
+ field("native_session_id_at_boot", "nativeSessionIdAtBoot"), field("boot_at", "originalTimestamp", 128)].join(",");
19
+ // Export the exact statements for query-plan controls. No payload, note, body,
20
+ // current-owner join, or history window function enters this projection.
21
+ export const TELEMETRY_PAGE_SQL = {
22
+ events: `SELECT CAST(seq AS TEXT) AS _id, ${eventFields} FROM events WHERE seq > ? AND seq <= ? ORDER BY seq LIMIT ?`,
23
+ active: `SELECT CAST(transition_id AS TEXT) AS _id, ${transitionFields} FROM queue_transitions WHERE transition_id > ? AND transition_id <= ? ORDER BY transition_id LIMIT ?`,
24
+ archive: `SELECT CAST(transition_id AS TEXT) AS _id, ${transitionFields} FROM queue_transitions_archive WHERE transition_id > ? AND transition_id <= ? ORDER BY transition_id LIMIT ?`,
25
+ tenures: `SELECT CAST(generation_ordinal AS TEXT) AS _id, ${tenureFields} FROM occupant_tenures WHERE node_id = ? AND generation_ordinal < ? AND generation_ordinal <= ? ORDER BY generation_ordinal DESC LIMIT ?`,
26
+ };
27
+ function id(value) {
28
+ return typeof value === "string" && /^(0|[1-9][0-9]{0,18})$/.test(value) && BigInt(value) <= MAX_ID;
29
+ }
30
+ function encode(cursor) { return Buffer.from(JSON.stringify(cursor)).toString("base64url"); }
31
+ function decode(raw) {
32
+ if (Buffer.byteLength(raw) > TELEMETRY_LIMITS.cursorBytes || !/^[A-Za-z0-9_-]+$/.test(raw))
33
+ throw new TelemetryInputError("Invalid telemetry cursor");
34
+ let value;
35
+ try {
36
+ value = JSON.parse(Buffer.from(raw, "base64url").toString("utf8"));
37
+ }
38
+ catch {
39
+ throw new TelemetryInputError("Invalid telemetry cursor");
40
+ }
41
+ if (!value || value.v !== 1 || !["events", "queue-transitions", "tenures"].includes(value.stream ?? "") ||
42
+ typeof value.boot !== "string" || value.boot.length > 128 || typeof value.filter !== "string" || value.filter.length !== 64 ||
43
+ !id(value.last) || !(value.through === null || id(value.through)))
44
+ throw new TelemetryInputError("Invalid telemetry cursor");
45
+ if (value.stream === "tenures" && (!id(value.floor) || value.floor === "0" || BigInt(value.floor) > BigInt(value.last)))
46
+ throw new TelemetryInputError("Invalid tenure cursor floor");
47
+ return value;
48
+ }
49
+ function boundedFilter(value) {
50
+ if (value === undefined)
51
+ return null;
52
+ if (!value || Buffer.byteLength(value) > 256)
53
+ throw new TelemetryInputError("Telemetry filter must contain 1 to 256 bytes");
54
+ return value;
55
+ }
56
+ function utc(value) {
57
+ if (!value)
58
+ return null;
59
+ const explicit = /^\d{4}-\d\d-\d\d[ T]\d\d:\d\d:\d\d(?:\.\d+)?$/.test(value) ? value.replace(" ", "T") + "Z" : value;
60
+ if (!/(Z|[+-]\d\d:\d\d)$/.test(explicit))
61
+ return null;
62
+ const time = Date.parse(explicit);
63
+ return Number.isFinite(time) ? new Date(time).toISOString() : null;
64
+ }
65
+ function bounds(db, table, key, nodeId) {
66
+ const where = nodeId === undefined ? "" : "WHERE node_id = ?";
67
+ const args = nodeId === undefined ? [] : [nodeId, nodeId];
68
+ // Separate indexed min/max seeks: a combined MIN/MAX aggregate can scan all rows.
69
+ return db.prepare(`SELECT
70
+ (SELECT CAST(${key} AS TEXT) FROM ${table} ${where} ORDER BY ${key} LIMIT 1) AS low,
71
+ COALESCE((SELECT CAST(${key} AS TEXT) FROM ${table} ${where} ORDER BY ${key} DESC LIMIT 1), '0') AS high`).get(...args);
72
+ }
73
+ /** One read snapshot and a finite source prefix. No writes, subscription or catch-up loop. */
74
+ export function readTelemetryPage(db, source, stream, input, observedAt = new Date().toISOString()) {
75
+ const nodeId = boundedFilter(input.nodeId), rigId = boundedFilter(input.rigId), qitemId = boundedFilter(input.qitemId);
76
+ if (stream === "tenures" ? (!nodeId || rigId || qitemId) : stream === "events" ? qitemId : (nodeId || rigId))
77
+ throw new TelemetryInputError("Unsupported filter for telemetry stream");
78
+ if (input.cursor !== undefined && input.start !== undefined)
79
+ throw new TelemetryInputError("Use cursor or start, not both");
80
+ if (input.start !== undefined && !["latest", "retained"].includes(input.start))
81
+ throw new TelemetryInputError("start must be latest or retained");
82
+ if (stream === "tenures" && input.start !== undefined)
83
+ throw new TelemetryInputError("Tenures start newest first; use a cursor to continue");
84
+ const limit = input.limit === undefined ? (stream === "tenures" ? 32 : 128) : Number(input.limit);
85
+ if ((input.limit !== undefined && !/^[0-9]+$/.test(input.limit)) || !Number.isInteger(limit) || limit < 1 || limit > TELEMETRY_LIMITS.rows)
86
+ throw new TelemetryInputError("limit must be an integer from 1 to 128");
87
+ const filter = createHash("sha256").update(JSON.stringify([nodeId, rigId, qitemId])).digest("hex");
88
+ const previous = input.cursor === undefined ? null : decode(input.cursor);
89
+ if (previous && (previous.stream !== stream || previous.filter !== filter))
90
+ throw new TelemetryInputError("Cursor stream or filters do not match");
91
+ if (previous?.through !== null && previous?.through !== undefined && stream !== "tenures" && BigInt(previous.last) > BigInt(previous.through))
92
+ throw new TelemetryInputError("Cursor is past its window");
93
+ if (previous && stream === "tenures" && (previous.last === "0" || previous.through === null || BigInt(previous.last) > BigInt(previous.through)))
94
+ throw new TelemetryInputError("Invalid tenure cursor window");
95
+ if (!source.bootEpoch || Buffer.byteLength(source.bootEpoch) > 128)
96
+ throw new Error("telemetry_source_unavailable");
97
+ const boot = source.bootEpoch;
98
+ return db.transaction(() => {
99
+ const ranges = stream === "events" ? [bounds(db, "events", "seq")] : stream === "tenures" ? [bounds(db, "occupant_tenures", "generation_ordinal", nodeId)] :
100
+ [bounds(db, "queue_transitions", "transition_id"), bounds(db, "queue_transitions_archive", "transition_id")];
101
+ const high = ranges.reduce((a, b) => BigInt(a) > BigInt(b.high) ? a : b.high, "0");
102
+ const lows = ranges.flatMap(r => r.low === null ? [] : [r.low]);
103
+ const low = lows.reduce((a, b) => a === null || BigInt(b) < BigInt(a) ? b : a, null);
104
+ if (!id(high) || (low !== null && (!id(low) || low === "0")))
105
+ throw new Error("telemetry_source_id_unavailable");
106
+ const gaps = [];
107
+ let gapCount = 0;
108
+ const gap = (entry) => {
109
+ gapCount++;
110
+ if (gaps.length < 32)
111
+ gaps.push(entry);
112
+ };
113
+ const startLatest = stream !== "tenures" && !previous && input.start !== "retained";
114
+ let last = previous?.last ?? (startLatest ? high : "0");
115
+ const requestedAfter = stream === "tenures" ? null : last;
116
+ const through = previous?.through ?? high;
117
+ const rows = [];
118
+ let fetched = 0, scanned = 0, filtered = 0, withheld = 0, rowBytes = 0;
119
+ let capReason = null;
120
+ const floor = stream === "tenures" ? previous?.floor ?? low ?? undefined : undefined;
121
+ const cursor = (lastId, end) => encode({ v: 1, stream, boot, filter, last: lastId, through: end, ...(floor ? { floor } : {}) });
122
+ const reset = previous && (previous.boot !== boot || BigInt(previous.last) > BigInt(high) || (previous.through !== null && BigInt(previous.through) > BigInt(high)));
123
+ if (reset)
124
+ gap({ code: previous.boot !== boot ? "boot_boundary_history_unverified" : "watermark_regression_history_unverified" });
125
+ if (startLatest)
126
+ gap({ code: `historical_${stream === "events" ? "events" : "transitions"}_not_read`, through: high });
127
+ if (stream === "tenures" && low === null)
128
+ gap({ code: "tenure_history_unavailable" });
129
+ if (!reset && stream === "tenures" && previous && floor && low && BigInt(low) > BigInt(floor)) {
130
+ // Only describe the remaining part of the already observed window.
131
+ // The cause of a changed retained floor is unknown.
132
+ const missingThrough = (BigInt(low) < BigInt(previous.last) ? BigInt(low) : BigInt(previous.last)) - 1n;
133
+ if (missingThrough >= BigInt(floor))
134
+ gap({ code: "tenure_floor_history_unavailable", from: floor, through: missingThrough.toString() });
135
+ }
136
+ if (!reset && !startLatest && stream !== "tenures" && low && BigInt(last) + 1n < BigInt(low)) {
137
+ const missingThrough = BigInt(low) - 1n < BigInt(through) ? (BigInt(low) - 1n).toString() : through;
138
+ gap({ code: "before_retained_floor", from: (BigInt(last) + 1n).toString(), through: missingThrough });
139
+ last = missingThrough;
140
+ }
141
+ if (!reset && !startLatest) {
142
+ const args = [BigInt(last), BigInt(through), limit];
143
+ let candidates;
144
+ if (stream === "events")
145
+ candidates = db.prepare(TELEMETRY_PAGE_SQL.events).all(...args);
146
+ else if (stream === "tenures") {
147
+ // An inclusive first page avoids max-int + 1 overflowing the SQLite binding.
148
+ const query = previous ? TELEMETRY_PAGE_SQL.tenures : TELEMETRY_PAGE_SQL.tenures.replace("generation_ordinal < ? AND ", "");
149
+ candidates = db.prepare(query).all(...(previous ? [nodeId, BigInt(last), BigInt(through), limit] : [nodeId, BigInt(through), limit]));
150
+ }
151
+ else {
152
+ candidates = [...db.prepare(TELEMETRY_PAGE_SQL.active).all(...args), ...db.prepare(TELEMETRY_PAGE_SQL.archive).all(...args)];
153
+ candidates.sort((a, b) => BigInt(a._id) < BigInt(b._id) ? -1 : BigInt(a._id) > BigInt(b._id) ? 1 : 0);
154
+ }
155
+ fetched = candidates.length;
156
+ for (let i = 0; i < candidates.length && scanned < limit; i++) {
157
+ const raw = candidates[i];
158
+ let conflict = false;
159
+ while (candidates[i + 1]?._id === raw._id) {
160
+ if (JSON.stringify(candidates[++i]) !== JSON.stringify(raw))
161
+ conflict = true;
162
+ }
163
+ const matches = (!nodeId || raw.nodeId === nodeId) && (!rigId || raw.rigId === rigId) && (!qitemId || raw.qitemId === qitemId);
164
+ const record = { [stream === "events" ? "seq" : stream === "tenures" ? "generationOrdinal" : "transitionId"]: raw._id };
165
+ for (const [key, value] of Object.entries(raw))
166
+ if (!key.startsWith("_"))
167
+ record[key] = value;
168
+ record[stream === "tenures" ? "bootAt" : "createdAt"] = utc(raw.originalTimestamp ?? null);
169
+ const size = Buffer.byteLength(JSON.stringify(record));
170
+ // Reserve 16 KiB for the bounded envelope/cursors/gap details.
171
+ if (matches && !conflict && size <= TELEMETRY_LIMITS.recordBytes && rowBytes + size + 1 > TELEMETRY_LIMITS.responseBytes - 16 * 1024) {
172
+ capReason = "response_byte_limit";
173
+ break;
174
+ }
175
+ if (stream !== "tenures" && BigInt(raw._id) > BigInt(last) + 1n)
176
+ gap({ code: "retained_sequence_gap", from: (BigInt(last) + 1n).toString(), through: (BigInt(raw._id) - 1n).toString() });
177
+ if (stream === "tenures" && (previous || scanned > 0) && BigInt(raw._id) + 1n < BigInt(last))
178
+ gap({ code: "retained_ordinal_gap", from: (BigInt(raw._id) + 1n).toString(), through: (BigInt(last) - 1n).toString() });
179
+ last = raw._id;
180
+ scanned++;
181
+ if (conflict) {
182
+ gap({ code: "conflicting_transition_id", id: raw._id });
183
+ withheld++;
184
+ continue;
185
+ }
186
+ for (const [key, value] of Object.entries(raw))
187
+ if (key.startsWith("_gap_") && value)
188
+ gap({ code: value, id: raw._id, field: key.slice(5) });
189
+ if (raw.originalTimestamp !== null && !record[stream === "tenures" ? "bootAt" : "createdAt"])
190
+ gap({ code: "invalid_timestamp", id: raw._id });
191
+ if (!matches) {
192
+ filtered++;
193
+ continue;
194
+ }
195
+ if (size > TELEMETRY_LIMITS.recordBytes) {
196
+ gap({ code: "record_byte_limit", id: raw._id });
197
+ withheld++;
198
+ continue;
199
+ }
200
+ rows.push(record);
201
+ rowBytes += size + 1;
202
+ }
203
+ // A vanished tail inside an old window must not create an endless empty page.
204
+ if (stream !== "tenures" && scanned < limit && !capReason && BigInt(last) < BigInt(through)) {
205
+ gap({ code: "retained_sequence_gap", from: (BigInt(last) + 1n).toString(), through });
206
+ last = through;
207
+ }
208
+ if (stream === "tenures" && previous && scanned === 0)
209
+ gap({ code: "requested_tenure_window_unavailable" });
210
+ }
211
+ let hasMore = false;
212
+ if (!reset && !startLatest) {
213
+ hasMore = stream === "tenures" ? low !== null && BigInt(last) > BigInt(low) : BigInt(last) < BigInt(through);
214
+ if (hasMore && !capReason)
215
+ capReason = "source_row_limit";
216
+ }
217
+ const page = {
218
+ requestedAfter, requestedBefore: stream === "tenures" ? previous?.last ?? null : null,
219
+ lastScanned: last, through, retainedHighWatermark: high, hasMore,
220
+ nextCursor: reset ? null : stream === "tenures" ? (hasMore ? cursor(last, through) : null) : cursor(last, hasMore ? through : null),
221
+ restartCursor: reset ? (stream === "tenures" ? null : cursor(high, null)) : null,
222
+ fetched, scanned, filtered, withheld, returned: rows.length, capReason,
223
+ };
224
+ const result = {
225
+ schemaVersion: 1, stream, observedAt,
226
+ source: { hostId: source.hostId && Buffer.byteLength(source.hostId) <= 256 ? source.hostId : null, bootEpoch: boot, sequenceSpaceId: null },
227
+ rows, page,
228
+ coverage: { status: reset ? "unavailable" : gapCount ? "partial" : "retained_window", historyCompleteness: "unknown", retainedMinimum: low,
229
+ gaps, gapCount, gapDetailsTruncated: gapCount > gaps.length, eventPayloads: "not_read" },
230
+ };
231
+ if (Buffer.byteLength(JSON.stringify(result)) > TELEMETRY_LIMITS.responseBytes)
232
+ throw new Error("telemetry_response_bound_exceeded");
233
+ return result;
234
+ })();
235
+ }
236
+ //# sourceMappingURL=finite-telemetry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"finite-telemetry.js","sourceRoot":"","sources":["../../src/domain/finite-telemetry.ts"],"names":[],"mappings":"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"}
@@ -75,7 +75,7 @@ export declare function connectionsProjection(home: string, gateway: Record<stri
75
75
  class: "human";
76
76
  away: boolean | null;
77
77
  deliveryClass: "A" | "B" | "C" | "D";
78
- availability: "available" | "away" | "focus" | "off";
78
+ availability: "available" | "off" | "away" | "focus";
79
79
  excluded: boolean | null;
80
80
  bindings: {
81
81
  browserKey: string;
@@ -77,6 +77,8 @@ export declare class GatewaySubsystem {
77
77
  dispatch(op: string, entityBindingRef: string, payload: unknown, opts?: {
78
78
  decisionId?: string;
79
79
  }): DispatchResult;
80
+ /** Snapshot only: no dispatch-buffer scan, network or recovery work. */
81
+ connectorStatus(): Record<string, unknown>;
80
82
  status(): GatewaySubsystemStatus;
81
83
  /** Recovery half of recovers-or-reports: tear down and re-run the wiring. If services were
82
84
  * live (post-bind), the rebuilt wire's services start too — a config flip (enable/disable)
@@ -1 +1 @@
1
- {"version":3,"file":"gateway-subsystem.d.ts","sourceRoot":"","sources":["../../../src/domain/gateway/gateway-subsystem.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,iBAAiB,EAAE,KAAK,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACzE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEtD;uEACuE;AACvE,MAAM,MAAM,wBAAwB,GAAG;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AACpG,MAAM,MAAM,kBAAkB,GAAG,CAAC,QAAQ,EAAE,gBAAgB,KAAK,OAAO,CAAC,wBAAwB,CAAC,CAAC;AAEnG;;;4FAG4F;AAC5F,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,iBAAiB,CAAC;IAC9B,IAAI,IAAI,IAAI,CAAC;IACb,aAAa,CAAC,IAAI,IAAI,CAAC;IACvB,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb;4FACwF;IACxF,OAAO,EAAE,kBAAkB,CAAC;IAC5B;yFACqF;IACrF,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CAC7B;AAED;;;kFAGkF;AAClF,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,iBAAiB,GAAG,WAAW,CAkCvE;AAED,MAAM,MAAM,qBAAqB,GAAG,UAAU,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEjF,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,qBAAqB,CAAC;IAC7B,+FAA+F;IAC/F,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,6FAA6F;IAC7F,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,gFAAgF;IAChF,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACrC;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb;uEACmE;IACnE,IAAI,EAAE,MAAM,WAAW,CAAC;IACxB,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5B,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;CAClB;AAED,qBAAa,gBAAgB;IAOf,OAAO,CAAC,QAAQ,CAAC,IAAI;IANjC,OAAO,CAAC,KAAK,CAAqC;IAClD,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,WAAW,CAAqB;IACxC,OAAO,CAAC,UAAU,CAA0B;IAC5C,OAAO,CAAC,eAAe,CAAS;gBAEH,IAAI,EAAE,oBAAoB;IAEvD;qFACiF;IACjF,KAAK,IAAI,IAAI;IAgBb;;8FAE0F;IAC1F,aAAa,IAAI,IAAI;IAarB;;mFAE+E;IAC/E,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,cAAc;IAOhH,MAAM,IAAI,sBAAsB;IAchC;;0CAEsC;IACtC,OAAO,IAAI,IAAI;IAQf,IAAI,IAAI,IAAI;CAOb"}
1
+ {"version":3,"file":"gateway-subsystem.d.ts","sourceRoot":"","sources":["../../../src/domain/gateway/gateway-subsystem.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,iBAAiB,EAAE,KAAK,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACzE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEtD;uEACuE;AACvE,MAAM,MAAM,wBAAwB,GAAG;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AACpG,MAAM,MAAM,kBAAkB,GAAG,CAAC,QAAQ,EAAE,gBAAgB,KAAK,OAAO,CAAC,wBAAwB,CAAC,CAAC;AAEnG;;;4FAG4F;AAC5F,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,iBAAiB,CAAC;IAC9B,IAAI,IAAI,IAAI,CAAC;IACb,aAAa,CAAC,IAAI,IAAI,CAAC;IACvB,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb;4FACwF;IACxF,OAAO,EAAE,kBAAkB,CAAC;IAC5B;yFACqF;IACrF,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CAC7B;AAED;;;kFAGkF;AAClF,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,iBAAiB,GAAG,WAAW,CAkCvE;AAED,MAAM,MAAM,qBAAqB,GAAG,UAAU,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEjF,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,qBAAqB,CAAC;IAC7B,+FAA+F;IAC/F,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,6FAA6F;IAC7F,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,gFAAgF;IAChF,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACrC;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb;uEACmE;IACnE,IAAI,EAAE,MAAM,WAAW,CAAC;IACxB,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5B,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;CAClB;AAED,qBAAa,gBAAgB;IAOf,OAAO,CAAC,QAAQ,CAAC,IAAI;IANjC,OAAO,CAAC,KAAK,CAAqC;IAClD,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,WAAW,CAAqB;IACxC,OAAO,CAAC,UAAU,CAA0B;IAC5C,OAAO,CAAC,eAAe,CAAS;gBAEH,IAAI,EAAE,oBAAoB;IAEvD;qFACiF;IACjF,KAAK,IAAI,IAAI;IAgBb;;8FAE0F;IAC1F,aAAa,IAAI,IAAI;IAarB;;mFAE+E;IAC/E,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,cAAc;IAOhH,wEAAwE;IACxE,eAAe,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAI1C,MAAM,IAAI,sBAAsB;IAchC;;0CAEsC;IACtC,OAAO,IAAI,IAAI;IAQf,IAAI,IAAI,IAAI;CAOb"}
@@ -111,6 +111,10 @@ export class GatewaySubsystem {
111
111
  }
112
112
  return this.wireHandle.dispatcher.dispatch(op, entityBindingRef, payload, opts);
113
113
  }
114
+ /** Snapshot only: no dispatch-buffer scan, network or recovery work. */
115
+ connectorStatus() {
116
+ return { state: this.state, connector: this.wireHandle?.status?.() ?? null };
117
+ }
114
118
  status() {
115
119
  const s = { state: this.state };
116
120
  if (this.reason !== undefined)
@@ -1 +1 @@
1
- {"version":3,"file":"gateway-subsystem.js","sourceRoot":"","sources":["../../../src/domain/gateway/gateway-subsystem.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gateway-subsystem.js","sourceRoot":"","sources":["../../../src/domain/gateway/gateway-subsystem.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ import { type FetchImpl } from "./slack-api.js";
2
+ import { type InboundRouter } from "./inbound.js";
3
+ import { ChannelCoverageStore, type ChannelCoverage } from "./state-store.js";
4
+ interface RecoveryOptions {
5
+ channel: string | null;
6
+ token: string | null;
7
+ stateDir: string;
8
+ router: InboundRouter;
9
+ fetchImpl?: FetchImpl;
10
+ store?: ChannelCoverageStore;
11
+ now?: () => number;
12
+ }
13
+ /** One owner across socket generations. Stop fences admission and checkpoint writes;
14
+ * already admitted I/O remains owned until it settles (no timeout/unlock race). */
15
+ export declare class ChannelRecovery {
16
+ private readonly opts;
17
+ private readonly store;
18
+ private readonly now;
19
+ private coverage?;
20
+ private pass?;
21
+ private stopped;
22
+ private state;
23
+ private reason;
24
+ private lastScanAt;
25
+ private accepted;
26
+ private deadLettered;
27
+ constructor(opts: RecoveryOptions);
28
+ initialize(): void;
29
+ status(): {
30
+ state: string;
31
+ reason: string | undefined;
32
+ channel: string | null;
33
+ lastScanAt: string | undefined;
34
+ coverage: ChannelCoverage | null;
35
+ acceptedThisProcess: number;
36
+ deadLetteredThisProcess: number;
37
+ limits: string[];
38
+ };
39
+ stop(): void;
40
+ run(): Promise<void>;
41
+ private save;
42
+ private scan;
43
+ }
44
+ export {};
45
+ //# sourceMappingURL=channel-recovery.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"channel-recovery.d.ts","sourceRoot":"","sources":["../../../../src/domain/gateway/slack/channel-recovery.ts"],"names":[],"mappings":"AAEA,OAAO,EAAc,KAAK,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAkB,KAAK,aAAa,EAAmB,MAAM,cAAc,CAAC;AACnF,OAAO,EAAE,oBAAoB,EAA+B,KAAK,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAE3G,UAAU,eAAe;IACvB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,aAAa,CAAC;IACtB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,KAAK,CAAC,EAAE,oBAAoB,CAAC;IAC7B,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CACpB;AAED;mFACmF;AACnF,qBAAa,eAAe;IAYd,OAAO,CAAC,QAAQ,CAAC,IAAI;IAXjC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAuB;IAC7C,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAe;IACnC,OAAO,CAAC,QAAQ,CAAC,CAAkB;IACnC,OAAO,CAAC,IAAI,CAAC,CAAgB;IAC7B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,KAAK,CAAiB;IAC9B,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,UAAU,CAAqB;IACvC,OAAO,CAAC,QAAQ,CAAK;IACrB,OAAO,CAAC,YAAY,CAAK;gBAEI,IAAI,EAAE,eAAe;IAKlD,UAAU,IAAI,IAAI;IAUlB,MAAM;;;;;;;;;;IAWN,IAAI,IAAI,IAAI;IAEZ,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;IAWpB,OAAO,CAAC,IAAI;YAME,IAAI;CAsEnB"}
@@ -0,0 +1,176 @@
1
+ // Available top-level channel history only. A seen event is not scanned coverage.
2
+ import path from "node:path";
3
+ import { callWebApi } from "./slack-api.js";
4
+ import { ingestDecision } from "./inbound.js";
5
+ import { ChannelCoverageStore, slackMicros, slackTimestamp } from "./state-store.js";
6
+ /** One owner across socket generations. Stop fences admission and checkpoint writes;
7
+ * already admitted I/O remains owned until it settles (no timeout/unlock race). */
8
+ export class ChannelRecovery {
9
+ opts;
10
+ store;
11
+ now;
12
+ coverage;
13
+ pass;
14
+ stopped = false;
15
+ state = "not-started";
16
+ reason;
17
+ lastScanAt;
18
+ accepted = 0;
19
+ deadLettered = 0;
20
+ constructor(opts) {
21
+ this.opts = opts;
22
+ this.now = opts.now ?? Date.now;
23
+ this.store = opts.store ?? new ChannelCoverageStore(path.join(opts.stateDir, "slack-channel-coverage.json"));
24
+ }
25
+ initialize() {
26
+ if (!this.opts.channel) {
27
+ this.state = "unavailable";
28
+ this.reason = "channel-not-configured";
29
+ return;
30
+ }
31
+ try {
32
+ this.coverage = this.store.initialize(this.opts.channel, slackTimestamp(BigInt(this.now()) * 1000n), path.join(this.opts.stateDir, "slack-inbound-seen.jsonl"), path.join(this.opts.stateDir, "slack-inbound-receipts.jsonl"));
33
+ this.state = this.opts.token ? "pending" : "unavailable";
34
+ this.reason = this.opts.token ? undefined : "bot-token-unresolved";
35
+ }
36
+ catch {
37
+ this.state = "unavailable";
38
+ this.reason = "checkpoint-unreadable-or-unwritable";
39
+ }
40
+ }
41
+ status() {
42
+ return { state: this.state, reason: this.reason, channel: this.opts.channel, lastScanAt: this.lastScanAt,
43
+ coverage: this.coverage ? structuredClone(this.coverage) : null,
44
+ acceptedThisProcess: this.accepted, deadLetteredThisProcess: this.deadLettered,
45
+ limits: ["older history unknown", "counts reset on connector rewire/restart", "top-level configured-channel messages only; thread recovery deferred",
46
+ ...(this.coverage?.historyLimited ? ["Slack plan limit excludes older history; only available messages were scanned"] : []),
47
+ "coverage means scanned available history; dead letters are custody, not delivery",
48
+ "five-second settle margin; larger clock skew or history visibility lag remains unverified",
49
+ "four pages / 100 entries / 15 seconds admission per pass; no global chronological ordering"] };
50
+ }
51
+ stop() { this.stopped = true; this.state = "stopped"; }
52
+ run() {
53
+ if (this.pass)
54
+ return this.pass;
55
+ if (this.stopped || !this.coverage || !this.opts.token || !this.opts.channel)
56
+ return Promise.resolve();
57
+ const pass = this.scan().catch(() => {
58
+ if (!this.stopped) {
59
+ this.state = "incomplete";
60
+ this.reason = "storage-or-routing-failed";
61
+ }
62
+ });
63
+ this.pass = pass;
64
+ void pass.finally(() => { if (this.pass === pass)
65
+ this.pass = undefined; });
66
+ return pass;
67
+ }
68
+ save(next) {
69
+ if (this.stopped)
70
+ return;
71
+ this.store.save(this.opts.channel, next);
72
+ this.coverage = next; // publish only after the atomic write succeeds
73
+ }
74
+ async scan() {
75
+ if (this.coverage.nextRetryAt && this.coverage.nextRetryAt > this.now()) {
76
+ this.state = "backoff";
77
+ return;
78
+ }
79
+ const deadline = this.now() + 15_000;
80
+ this.lastScanAt = new Date(this.now()).toISOString();
81
+ this.state = "scanning";
82
+ this.reason = undefined;
83
+ if (!this.coverage.pending) {
84
+ // Leave recent posts for the next interval so ordinary visibility lag/clock skew
85
+ // does not mark their timestamps covered before history can expose them.
86
+ const upper = slackTimestamp(BigInt(Math.max(0, this.now() - 5000)) * 1000n);
87
+ if (slackMicros(upper) <= slackMicros(this.coverage.coveredThrough)) {
88
+ this.state = "pending";
89
+ return;
90
+ }
91
+ this.save({ ...this.coverage, nextRetryAt: undefined, pending: { upper, nextLatest: upper } });
92
+ }
93
+ let entries = 0;
94
+ for (let pages = 0; pages < 4 && !this.stopped && this.now() < deadline; pages++) {
95
+ const c = { ...this.coverage };
96
+ const lower = slackMicros(c.coveredThrough);
97
+ const latest = slackMicros(c.pending.nextLatest);
98
+ const r = await callWebApi("conversations.history", this.opts.token, {
99
+ channel: this.opts.channel, oldest: slackTimestamp(lower > 0n ? lower - 1n : 0n),
100
+ latest: c.pending.nextLatest, inclusive: false, limit: Math.min(25, 100 - entries),
101
+ }, this.opts.fetchImpl, Math.min(5000, deadline - this.now()), "get-query");
102
+ if (this.stopped)
103
+ return;
104
+ if (!r.ok) {
105
+ const known = ["missing_scope", "not_in_channel", "channel_not_found", "invalid_auth", "token_revoked"];
106
+ this.reason = r.status === 429 ? "rate-limited" : known.includes(r.error ?? "") ? r.error : "history-api-unavailable";
107
+ const retrySeconds = r.retryAfterSeconds ?? (r.status === 0 || r.status >= 500 ? 5 : 300);
108
+ this.save({ ...c, nextRetryAt: this.now() + retrySeconds * 1000 });
109
+ this.state = "backoff";
110
+ return;
111
+ }
112
+ const messages = r.json.messages;
113
+ const cursor = r.json.response_metadata?.next_cursor;
114
+ if (!Array.isArray(messages) || (r.json.has_more !== undefined && typeof r.json.has_more !== "boolean") ||
115
+ (r.json.has_more === undefined && cursor === undefined) ||
116
+ (cursor !== undefined && typeof cursor !== "string") || messages.length > 25 ||
117
+ messages.some(m => !m || typeof m !== "object" || slackMicros(m.ts) === null ||
118
+ slackMicros(m.ts) < lower || slackMicros(m.ts) >= latest)) {
119
+ this.state = "incomplete";
120
+ this.reason = "invalid-history-page";
121
+ return;
122
+ }
123
+ const ordered = [...messages].sort((a, b) => slackMicros(a.ts) < slackMicros(b.ts) ? -1 : 1);
124
+ const more = r.json.has_more === true || (typeof cursor === "string" && cursor.length > 0);
125
+ if (more && (!messages.length || slackMicros(ordered[0]?.ts) <= lower)) {
126
+ this.state = "incomplete";
127
+ this.reason = "history-page-no-progress";
128
+ return;
129
+ }
130
+ // The page is valid; the flag describes unreachable older history. Retain that
131
+ // qualification with the next durable page boundary rather than stalling forever.
132
+ if (r.json.is_limited === true)
133
+ c.historyLimited = true;
134
+ for (const message of ordered) {
135
+ if (this.stopped)
136
+ return;
137
+ if (this.now() >= deadline || entries >= 100) {
138
+ this.state = "incomplete";
139
+ this.reason = "pass-budget";
140
+ return;
141
+ }
142
+ entries++;
143
+ const ev = { ...message, channel: this.opts.channel, recoveredAfterGap: true };
144
+ if (ev.thread_ts && ev.thread_ts !== ev.ts)
145
+ continue;
146
+ if (!ingestDecision(ev).ingest)
147
+ continue;
148
+ const landed = await this.opts.router.route(ev, 0, () => !this.stopped);
149
+ if (this.stopped)
150
+ return;
151
+ if (landed.reason === "inflight" || landed.reason === "inactive") {
152
+ this.state = "incomplete";
153
+ this.reason = "landing-in-progress";
154
+ return;
155
+ }
156
+ if (landed.disposition === "accepted")
157
+ this.accepted++;
158
+ if (landed.disposition === "dead-lettered")
159
+ this.deadLettered++;
160
+ }
161
+ if (!more) {
162
+ this.save({ ...c, coveredThrough: c.pending.upper, pending: undefined, nextRetryAt: undefined });
163
+ this.state = "scanned";
164
+ return;
165
+ }
166
+ this.save({ ...c, pending: { upper: c.pending.upper, nextLatest: ordered[0].ts }, nextRetryAt: undefined });
167
+ if (entries >= 100)
168
+ break;
169
+ }
170
+ if (!this.stopped) {
171
+ this.state = "incomplete";
172
+ this.reason = "pass-budget";
173
+ }
174
+ }
175
+ }
176
+ //# sourceMappingURL=channel-recovery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"channel-recovery.js","sourceRoot":"","sources":["../../../../src/domain/gateway/slack/channel-recovery.ts"],"names":[],"mappings":"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"}
@@ -14,6 +14,8 @@ export interface SlackEvent {
14
14
  thread_ts?: string;
15
15
  channel?: string;
16
16
  files?: unknown[];
17
+ /** Internal history provenance, retained across dead-letter retry. */
18
+ recoveredAfterGap?: boolean;
17
19
  }
18
20
  /** #193 — the parts of a Socket Mode `block_actions` payload (a button click) we read. */
19
21
  export interface SlackBlockActions {
@@ -165,7 +167,7 @@ export declare class InboundRouter {
165
167
  * LIVE path: attempt to land; on a genuine create failure, dead-letter the
166
168
  * event (attempt-counted) BEFORE returning — NOT marked seen (item 8).
167
169
  */
168
- route(ev: SlackEvent, attempts?: number): Promise<{
170
+ route(ev: SlackEvent, attempts?: number, isCurrent?: () => boolean): Promise<{
169
171
  landed: boolean;
170
172
  qitemId?: string;
171
173
  disposition: "accepted" | "ignored" | "refused" | "dead-lettered";