@humwick/server 0.0.0-stage → 0.130.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2508) hide show
  1. package/CLA.md +66 -0
  2. package/CONTRIBUTING.md +144 -0
  3. package/LICENSE +167 -0
  4. package/README.md +511 -2
  5. package/SECURITY.md +67 -0
  6. package/THIRD_PARTY_NOTICES.md +144 -0
  7. package/bundled/prompts/README.md +10 -0
  8. package/bundled/prompts/context.advisory.compact.md +1 -0
  9. package/bundled/prompts/context.advisory.warn.md +1 -0
  10. package/bundled/prompts/continuation.envelope.md +18 -0
  11. package/bundled/prompts/manifest.json +838 -0
  12. package/bundled/prompts/memory.capture.boundary.post.md +1 -0
  13. package/bundled/prompts/memory.capture.boundary.pre.md +1 -0
  14. package/bundled/prompts/memory.charter.md +3 -0
  15. package/bundled/prompts/memory.native-off.md +0 -0
  16. package/bundled/prompts/notify.agent.exited.md +1 -0
  17. package/bundled/prompts/notify.agent.never-ready.md +1 -0
  18. package/bundled/prompts/notify.agent.ready.md +1 -0
  19. package/bundled/prompts/notify.automation.budget-warning.md +1 -0
  20. package/bundled/prompts/notify.land.failure.md +1 -0
  21. package/bundled/prompts/notify.land.steward-taken.coordinator.md +1 -0
  22. package/bundled/prompts/notify.land.steward-taken.md +1 -0
  23. package/bundled/prompts/notify.land.success.md +1 -0
  24. package/bundled/prompts/notify.routing.policy-changed.md +2 -0
  25. package/bundled/prompts/notify.spawn.failed.md +1 -0
  26. package/bundled/prompts/notify.spawn.queued.md +1 -0
  27. package/bundled/prompts/notify.spawn.recovered.md +1 -0
  28. package/bundled/prompts/notify.spawn.unconfirmed.md +1 -0
  29. package/bundled/prompts/profile.coordinator.charter.md +17 -0
  30. package/bundled/prompts/profile.debugger.system.md +12 -0
  31. package/bundled/prompts/profile.device-qa.system.md +10 -0
  32. package/bundled/prompts/profile.image-gen.append.0.md +2 -0
  33. package/bundled/prompts/profile.image-gen.system.md +4 -0
  34. package/bundled/prompts/profile.ops-assistant.brief.md +4 -0
  35. package/bundled/prompts/profile.probe.system.md +5 -0
  36. package/bundled/prompts/profile.qa.system.md +10 -0
  37. package/bundled/prompts/profile.sec-ops.system.md +14 -0
  38. package/bundled/prompts/profile.social-media.system.md +7 -0
  39. package/bundled/prompts/profile.software-design.system.md +26 -0
  40. package/bundled/prompts/profile.sub-coordinator.charter.md +2 -0
  41. package/bundled/prompts/profile.worker-gui.system.md +7 -0
  42. package/bundled/prompts/profile.worker.system.md +2 -0
  43. package/bundled/prompts/relay.agent-core.delivery.md +13 -0
  44. package/bundled/prompts/relay.agent-core.engineering.md +13 -0
  45. package/bundled/prompts/relay.agent-core.md +22 -0
  46. package/bundled/prompts/relay.context.claude.md +1 -0
  47. package/bundled/prompts/relay.context.claude.readonly.md +3 -0
  48. package/bundled/prompts/relay.context.codex.md +1 -0
  49. package/bundled/prompts/relay.context.opencode.md +1 -0
  50. package/bundled/prompts/relay.manual.claude.md +8 -0
  51. package/bundled/prompts/relay.search.fff.md +1 -0
  52. package/bundled/prompts/relay.temp-dir.md +1 -0
  53. package/bundled/prompts/relay.web.brave.md +1 -0
  54. package/bundled/prompts/relay.web.fetch.md +1 -0
  55. package/bundled/prompts/skill.device-lane.md +20 -0
  56. package/bundled/prompts/skill.security-code-review.md +10 -0
  57. package/bundled/prompts/skill.security-hardening.md +10 -0
  58. package/bundled/prompts/skill.security-host-audit.md +11 -0
  59. package/bundled/prompts/spawn.primer.md +6 -0
  60. package/bundled/prompts/spawn.reportup.child.md +3 -0
  61. package/bundled/prompts/spawn.reportup.coordinator.md +2 -0
  62. package/bundled/prompts/spawn.reportup.workflow-step.md +4 -0
  63. package/bundled/prompts/spawn.validation.delivery.md +1 -0
  64. package/bundled/prompts/spawn.validation.iterate.generic.md +1 -0
  65. package/bundled/prompts/spawn.validation.iterate.imperative.md +1 -0
  66. package/bundled/prompts/spawn.validation.landgates.header.md +1 -0
  67. package/bundled/prompts/steward.merge-stall.md +1 -0
  68. package/bundled/prompts/steward.prompt.md +20 -0
  69. package/bundled/prompts/steward.wake.md +1 -0
  70. package/bundled/prompts/task.claim.instruction.md +1 -0
  71. package/bundled/prompts/task.hydration.md +23 -0
  72. package/bundled/prompts/user.response.brief.md +1 -0
  73. package/bundled/prompts/user.response.normal.md +1 -0
  74. package/bundled/prompts/user.style.neutral.md +1 -0
  75. package/bundled/prompts/user.style.warm.md +1 -0
  76. package/bundled/prompts/workspace.deps.command.md +1 -0
  77. package/bundled/prompts/workspace.deps.none.md +1 -0
  78. package/bundled/prompts/workspace.deps.symlink.md +1 -0
  79. package/bundled/prompts/workspace.lifecycle.md +4 -0
  80. package/bundled/prompts/workspace.mcp.instructions.md +7 -0
  81. package/bundled/prompts/workspace.phase.abandoned.headline.md +1 -0
  82. package/bundled/prompts/workspace.phase.abandoned.hint.md +1 -0
  83. package/bundled/prompts/workspace.phase.active.headline.md +1 -0
  84. package/bundled/prompts/workspace.phase.active.hint.md +1 -0
  85. package/bundled/prompts/workspace.phase.conflict.headline.md +1 -0
  86. package/bundled/prompts/workspace.phase.conflict.hint.md +1 -0
  87. package/bundled/prompts/workspace.phase.merge-planned.headline.md +1 -0
  88. package/bundled/prompts/workspace.phase.merge-planned.hint.md +1 -0
  89. package/bundled/prompts/workspace.phase.merged.headline.md +1 -0
  90. package/bundled/prompts/workspace.phase.merged.hint.md +1 -0
  91. package/bundled/prompts/workspace.phase.ready.headline.md +1 -0
  92. package/bundled/prompts/workspace.phase.ready.hint.md +1 -0
  93. package/bundled/prompts/workspace.ready.contract.md +6 -0
  94. package/bundled/prompts/workspace.symlinks.md +1 -0
  95. package/bundled/roles/builder.md +18 -0
  96. package/bundled/roles/design-reviewer.md +13 -0
  97. package/bundled/roles/designer.md +11 -0
  98. package/bundled/roles/plan-auditor.md +29 -0
  99. package/bundled/roles/reviewer.md +36 -0
  100. package/bundled/roles/slice-qa.md +13 -0
  101. package/bundled/roles/verifier.md +13 -0
  102. package/bundled/skills/agent-browser/SKILL.md +72 -0
  103. package/bundled/skills/test-audit/SKILL.md +75 -0
  104. package/bundled/workflows/build-review.yaml +8 -0
  105. package/bundled/workflows/design-review.yaml +60 -0
  106. package/bundled/workflows/plan-conformance.yaml +5 -0
  107. package/bundled/workflows/slice-proof.yaml +85 -0
  108. package/bundled/workflows/verify-deployed.yaml +140 -0
  109. package/docs/guides/sub-coordinators.md +114 -0
  110. package/docs/guides/tools-administration.md +83 -0
  111. package/docs/guides/tools-agents.md +137 -0
  112. package/docs/guides/tools-coordination.md +228 -0
  113. package/docs/guides/tools-execution.md +48 -0
  114. package/docs/guides/tools-issues.md +69 -0
  115. package/docs/guides/tools-memory.md +150 -0
  116. package/docs/guides/tools-messages.md +192 -0
  117. package/docs/guides/tools-operations.md +133 -0
  118. package/docs/guides/tools-tasks.md +235 -0
  119. package/docs/guides/workflows.md +324 -0
  120. package/docs/license-faq.md +37 -0
  121. package/docs/openapi.json +18531 -0
  122. package/examples/integrations/github-issue.ts +48 -0
  123. package/examples/integrations/ops-alert.sh +27 -0
  124. package/examples/integrations/prometheus-alertmanager.ts +55 -0
  125. package/examples/integrations/support-ticket.sh +28 -0
  126. package/node_modules/@humwick/kernel/LICENSE +167 -0
  127. package/node_modules/@humwick/kernel/async-entity-persistence.ts +344 -0
  128. package/node_modules/@humwick/kernel/async-event-log.ts +107 -0
  129. package/node_modules/@humwick/kernel/automations.pilot.ts +147 -0
  130. package/node_modules/@humwick/kernel/config.ts +111 -0
  131. package/node_modules/@humwick/kernel/contract.ts +572 -0
  132. package/node_modules/@humwick/kernel/control-authz.ts +281 -0
  133. package/node_modules/@humwick/kernel/control.ts +645 -0
  134. package/node_modules/@humwick/kernel/effects.ts +493 -0
  135. package/node_modules/@humwick/kernel/event-log.ts +319 -0
  136. package/node_modules/@humwick/kernel/http-transport.ts +384 -0
  137. package/node_modules/@humwick/kernel/identity-grammar.ts +20 -0
  138. package/node_modules/@humwick/kernel/identity.ts +248 -0
  139. package/node_modules/@humwick/kernel/index.ts +28 -0
  140. package/node_modules/@humwick/kernel/kernel-persistence.ts +181 -0
  141. package/node_modules/@humwick/kernel/landing-incident.ts +306 -0
  142. package/node_modules/@humwick/kernel/landing.ts +953 -0
  143. package/node_modules/@humwick/kernel/manifest-validation.ts +460 -0
  144. package/node_modules/@humwick/kernel/mcp-transport.ts +109 -0
  145. package/node_modules/@humwick/kernel/message-authority-chaos-worker.ts +200 -0
  146. package/node_modules/@humwick/kernel/message-authority.ts +281 -0
  147. package/node_modules/@humwick/kernel/module-host.ts +722 -0
  148. package/node_modules/@humwick/kernel/openapi-init.ts +14 -0
  149. package/node_modules/@humwick/kernel/package.json +47 -0
  150. package/node_modules/@humwick/kernel/persistence-schema.ts +248 -0
  151. package/node_modules/@humwick/kernel/persistence.ts +510 -0
  152. package/node_modules/@humwick/kernel/registry.ts +60 -0
  153. package/node_modules/@humwick/kernel/sqlite-kernel-persistence.ts +499 -0
  154. package/node_modules/@humwick/kernel/sqlite-module-host.ts +87 -0
  155. package/node_modules/@humwick/kernel/timers-chaos-worker.ts +186 -0
  156. package/node_modules/@humwick/kernel/timers.pilot.ts +1411 -0
  157. package/node_modules/@humwick/kernel/workflow-activation.ts +25 -0
  158. package/node_modules/@humwick/kernel/workflow-backstop.ts +40 -0
  159. package/node_modules/@humwick/kernel/workflow-cancel-tree.ts +20 -0
  160. package/node_modules/@humwick/kernel/workflow-chaos-worker.ts +213 -0
  161. package/node_modules/@humwick/kernel/workflow-composition.ts +231 -0
  162. package/node_modules/@humwick/kernel/workflow-container.ts +72 -0
  163. package/node_modules/@humwick/kernel/workflow-control.test-fixture.ts +42 -0
  164. package/node_modules/@humwick/kernel/workflow-control.ts +178 -0
  165. package/node_modules/@humwick/kernel/workflow-definition.ts +507 -0
  166. package/node_modules/@humwick/kernel/workflow-dispatch.ts +60 -0
  167. package/node_modules/@humwick/kernel/workflow-foreach.ts +167 -0
  168. package/node_modules/@humwick/kernel/workflow-journal-codec.ts +339 -0
  169. package/node_modules/@humwick/kernel/workflow-journal.ts +922 -0
  170. package/node_modules/@humwick/kernel/workflow-lane.ts +48 -0
  171. package/node_modules/@humwick/kernel/workflow-lease-owner.ts +60 -0
  172. package/node_modules/@humwick/kernel/workflow-recovery.test-fixture.ts +19 -0
  173. package/node_modules/@humwick/kernel/workflow-runtime.ts +938 -0
  174. package/node_modules/@humwick/kernel/workflow-script.ts +11 -0
  175. package/node_modules/@humwick/kernel/workflow-state.ts +299 -0
  176. package/node_modules/@humwick/kernel/workflow-step-commit.ts +195 -0
  177. package/node_modules/@humwick/kernel/workflow-transitions.ts +317 -0
  178. package/node_modules/@humwick/kernel/workflow-values.ts +153 -0
  179. package/node_modules/@humwick/kernel/workflow.pilot.ts +376 -0
  180. package/node_modules/@humwick/offload/LICENSE +167 -0
  181. package/node_modules/@humwick/offload/README.md +57 -0
  182. package/node_modules/@humwick/offload/dist/async-runner.d.ts +18 -0
  183. package/node_modules/@humwick/offload/dist/async-runner.d.ts.map +1 -0
  184. package/node_modules/@humwick/offload/dist/async-runner.js +158 -0
  185. package/node_modules/@humwick/offload/dist/async-runner.js.map +1 -0
  186. package/node_modules/@humwick/offload/dist/envelope.d.ts +25 -0
  187. package/node_modules/@humwick/offload/dist/envelope.d.ts.map +1 -0
  188. package/node_modules/@humwick/offload/dist/envelope.js +80 -0
  189. package/node_modules/@humwick/offload/dist/envelope.js.map +1 -0
  190. package/node_modules/@humwick/offload/dist/fixtures/worker-task.d.ts +10 -0
  191. package/node_modules/@humwick/offload/dist/fixtures/worker-task.d.ts.map +1 -0
  192. package/node_modules/@humwick/offload/dist/fixtures/worker-task.js +59 -0
  193. package/node_modules/@humwick/offload/dist/fixtures/worker-task.js.map +1 -0
  194. package/node_modules/@humwick/offload/dist/index.d.ts +5 -0
  195. package/node_modules/@humwick/offload/dist/index.d.ts.map +1 -0
  196. package/node_modules/@humwick/offload/dist/index.js +5 -0
  197. package/node_modules/@humwick/offload/dist/index.js.map +1 -0
  198. package/node_modules/@humwick/offload/dist/subprocess-runner.d.ts +62 -0
  199. package/node_modules/@humwick/offload/dist/subprocess-runner.d.ts.map +1 -0
  200. package/node_modules/@humwick/offload/dist/subprocess-runner.js +295 -0
  201. package/node_modules/@humwick/offload/dist/subprocess-runner.js.map +1 -0
  202. package/node_modules/@humwick/offload/dist/types.d.ts +111 -0
  203. package/node_modules/@humwick/offload/dist/types.d.ts.map +1 -0
  204. package/node_modules/@humwick/offload/dist/types.js +176 -0
  205. package/node_modules/@humwick/offload/dist/types.js.map +1 -0
  206. package/node_modules/@humwick/offload/dist/worker-pool.d.ts +23 -0
  207. package/node_modules/@humwick/offload/dist/worker-pool.d.ts.map +1 -0
  208. package/node_modules/@humwick/offload/dist/worker-pool.js +435 -0
  209. package/node_modules/@humwick/offload/dist/worker-pool.js.map +1 -0
  210. package/node_modules/@humwick/offload/dist/worker-runtime.d.ts +2 -0
  211. package/node_modules/@humwick/offload/dist/worker-runtime.d.ts.map +1 -0
  212. package/node_modules/@humwick/offload/dist/worker-runtime.js +27 -0
  213. package/node_modules/@humwick/offload/dist/worker-runtime.js.map +1 -0
  214. package/node_modules/@humwick/offload/dist/worker.d.ts +5 -0
  215. package/node_modules/@humwick/offload/dist/worker.d.ts.map +1 -0
  216. package/node_modules/@humwick/offload/dist/worker.js +1 -0
  217. package/node_modules/@humwick/offload/dist/worker.js.map +1 -0
  218. package/node_modules/@humwick/offload/package.json +46 -0
  219. package/node_modules/@humwick/offload/src/async-runner.ts +170 -0
  220. package/node_modules/@humwick/offload/src/envelope.ts +92 -0
  221. package/node_modules/@humwick/offload/src/fixtures/worker-task.ts +49 -0
  222. package/node_modules/@humwick/offload/src/index.ts +4 -0
  223. package/node_modules/@humwick/offload/src/subprocess-runner.ts +334 -0
  224. package/node_modules/@humwick/offload/src/types.ts +235 -0
  225. package/node_modules/@humwick/offload/src/worker-pool.ts +463 -0
  226. package/node_modules/@humwick/offload/src/worker-runtime.ts +32 -0
  227. package/node_modules/@humwick/offload/src/worker.ts +5 -0
  228. package/package.json +229 -4
  229. package/public/assets/MessageBubble-BWpoBjl4.js +4 -0
  230. package/public/assets/PlanGraphPanel-C0auck3n.js +2 -0
  231. package/public/assets/TraceView-DBnOx7AQ.js +5 -0
  232. package/public/assets/VaultDecisionCard-0kp2oNBC.js +2 -0
  233. package/public/assets/activity-TMzFOdh2.js +2 -0
  234. package/public/assets/activity-yLztXEBt.js +2 -0
  235. package/public/assets/agent-lineage-BbJDR1dW.js +2 -0
  236. package/public/assets/agent-liveness-DyqxfB-t.js +2 -0
  237. package/public/assets/agent-name-CTZBrSD9.js +2 -0
  238. package/public/assets/agent-profiles-BpI_jTxq.js +2 -0
  239. package/public/assets/agent-project-badge-9TqzUUYE.js +2 -0
  240. package/public/assets/agent-tools-D4n40pn8.js +2 -0
  241. package/public/assets/agent-type-icon-D6FUarOf.js +2 -0
  242. package/public/assets/agents-BYDslkJc.js +2 -0
  243. package/public/assets/analytics-B-XSbEMC.js +910 -0
  244. package/public/assets/andromeeda-vGVdxbeo.js +2 -0
  245. package/public/assets/angular-html-BVBpGdXr.js +2 -0
  246. package/public/assets/angular-ts-BfdufMKP.js +2 -0
  247. package/public/assets/api-CIIVBtAV.js +10 -0
  248. package/public/assets/archive-CIuPSvmx.js +2 -0
  249. package/public/assets/arrow-right-vFsRqG8V.js +2 -0
  250. package/public/assets/arrow-up-a-z-CKC2RCjD.js +2 -0
  251. package/public/assets/artifact-viewer-DdWIfV6M.js +2 -0
  252. package/public/assets/artifacts-DPN1q4pA.js +2 -0
  253. package/public/assets/artifacts-oBOqks-2.js +2 -0
  254. package/public/assets/astro-JKRPP03v.js +2 -0
  255. package/public/assets/aurora-x-CDeNXAV0.js +2 -0
  256. package/public/assets/automation-4KcRFXEu.js +2 -0
  257. package/public/assets/ayu-dark-DluEY0Gj.js +2 -0
  258. package/public/assets/ayu-light-C3h-C4tm.js +2 -0
  259. package/public/assets/ayu-mirage-Bqwy1Gya.js +2 -0
  260. package/public/assets/backlog-Cw9xPTCF.js +2 -0
  261. package/public/assets/badge-DqJRtj_p.js +2 -0
  262. package/public/assets/bell-_Yzbxxrt.js +2 -0
  263. package/public/assets/blade-DA8yMPsw.js +2 -0
  264. package/public/assets/bot-B0NpDNhr.js +2 -0
  265. package/public/assets/boxes-Cv7Wq3h4.js +2 -0
  266. package/public/assets/braces-BOks9SsY.js +2 -0
  267. package/public/assets/brain-CagXMEKE.js +2 -0
  268. package/public/assets/brain-circuit-CpQeSmp3.js +2 -0
  269. package/public/assets/bundle-web-ifbJd0t-.js +14 -0
  270. package/public/assets/busy-health-CTu32MZt.js +2 -0
  271. package/public/assets/button-Do6Z3vvn.js +2 -0
  272. package/public/assets/c-Wt1voDr2.js +2 -0
  273. package/public/assets/calendar-QJjoZ1JU.js +2 -0
  274. package/public/assets/calendar-clock-CDG_KBhx.js +2 -0
  275. package/public/assets/card-C4QJ4hCW.js +2 -0
  276. package/public/assets/catppuccin-frappe-3VR1Za6u.js +2 -0
  277. package/public/assets/catppuccin-latte-DwIHMF0Q.js +2 -0
  278. package/public/assets/catppuccin-macchiato-DYnBP6_5.js +2 -0
  279. package/public/assets/catppuccin-mocha-DYhrFGRu.js +2 -0
  280. package/public/assets/channels-BiXzg1G9.js +2 -0
  281. package/public/assets/chart-column-S02ZGfTR.js +2 -0
  282. package/public/assets/chat-Ctk2qwvA.js +6 -0
  283. package/public/assets/check-B3M9Ug1P.js +2 -0
  284. package/public/assets/chevron-down-BoG3JCZn.js +2 -0
  285. package/public/assets/chevron-right-iljytE0x.js +2 -0
  286. package/public/assets/chevron-up-Bv3yC5ma.js +2 -0
  287. package/public/assets/circle-UESLMi2-.js +2 -0
  288. package/public/assets/circle-alert-CryagaZd.js +2 -0
  289. package/public/assets/circle-arrow-up-B432r0Kk.js +2 -0
  290. package/public/assets/circle-check-CkUkN96J.js +2 -0
  291. package/public/assets/circle-x-CZ0erS7Q.js +2 -0
  292. package/public/assets/clipboard-list-W2YeUsxT.js +2 -0
  293. package/public/assets/clock-3-BH47318N.js +2 -0
  294. package/public/assets/clock-BWPPBh1_.js +2 -0
  295. package/public/assets/code-preview-Bm1wWqAp.js +3 -0
  296. package/public/assets/coffee-CThvmt4R.js +2 -0
  297. package/public/assets/connectors-C36ax4Vw.js +2 -0
  298. package/public/assets/copy-DFxhHRtV.js +2 -0
  299. package/public/assets/copy-button-CjOj4HEf.js +2 -0
  300. package/public/assets/cosmos-Dn8XrlnS.css +1 -0
  301. package/public/assets/cosmos-Jj9LK2Wf.js +3993 -0
  302. package/public/assets/cpp-C5WNSHb9.js +2 -0
  303. package/public/assets/cpu-Dndy84IU.js +2 -0
  304. package/public/assets/crate-agent-H6S7-B9T.js +2 -0
  305. package/public/assets/css-DJp_X0uY.js +2 -0
  306. package/public/assets/csv-Dx-8-gkx.js +2 -0
  307. package/public/assets/dark-plus-Cs2F2srj.js +2 -0
  308. package/public/assets/dependency-graph-Cd1E23wa.js +2 -0
  309. package/public/assets/deploys-Bwfq146q.js +2 -0
  310. package/public/assets/dialog-uuJ9_geR.js +6 -0
  311. package/public/assets/display-CfO7rTuF.js +3 -0
  312. package/public/assets/dist-B2h2GeWt.js +2 -0
  313. package/public/assets/dist-BeVYU67E.js +2 -0
  314. package/public/assets/dist-Bmm-RKub.js +2 -0
  315. package/public/assets/dist-C1xmD7qJ.js +2 -0
  316. package/public/assets/dist-C2J943E6.js +2 -0
  317. package/public/assets/dist-C6lpJDoA.js +2 -0
  318. package/public/assets/dist-CoWL6B0c.js +2 -0
  319. package/public/assets/dist-D93SmTNC.js +2 -0
  320. package/public/assets/dist-Da7HrHNA.js +2 -0
  321. package/public/assets/dist-DeW2Y1R5.js +2 -0
  322. package/public/assets/dist-DwBdqQ6H.js +2 -0
  323. package/public/assets/dist-Dz182zaW.js +2 -0
  324. package/public/assets/dist-H3DLHJ0C.js +2 -0
  325. package/public/assets/dist-RrY9C4SI.js +2 -0
  326. package/public/assets/download-KgtpDbt5.js +2 -0
  327. package/public/assets/dracula-BHWKrbxM.js +2 -0
  328. package/public/assets/dracula-soft-5eyTD99u.js +2 -0
  329. package/public/assets/dropdown-menu-BXiNephE.js +2 -0
  330. package/public/assets/es2015-DMmZ8vbD.js +42 -0
  331. package/public/assets/esm-ZSuD7QuY.js +2 -0
  332. package/public/assets/everforest-dark-sB-x3p7T.js +2 -0
  333. package/public/assets/everforest-light-Df2xbC6M.js +2 -0
  334. package/public/assets/external-link-BRfu-fHG.js +2 -0
  335. package/public/assets/eye-BAP6fHrX.js +2 -0
  336. package/public/assets/file-code-corner-CXhIR1vB.js +2 -0
  337. package/public/assets/file-pen-Crunre5f.js +2 -0
  338. package/public/assets/file-text-CKuoMR2U.js +2 -0
  339. package/public/assets/files-DhhZI2Ih.js +3 -0
  340. package/public/assets/flag-CnEG9PH-.js +2 -0
  341. package/public/assets/flame-CxBuz46L.js +2 -0
  342. package/public/assets/fleet-BL4UXS_k.js +2 -0
  343. package/public/assets/fleet-metrics-BkHP-P3R.js +2 -0
  344. package/public/assets/folder-git-2-CJOmTT06.js +2 -0
  345. package/public/assets/folder-open-CBUCMSlu.js +2 -0
  346. package/public/assets/folder-tree-BG3Y9nqH.js +2 -0
  347. package/public/assets/formatted-body-Cm1RrzmN.js +3 -0
  348. package/public/assets/formatted-body-impl-DQiOuOD1.js +3 -0
  349. package/public/assets/gauge-BIODY-BQ.js +2 -0
  350. package/public/assets/geist-cyrillic-wght-normal-CHSlOQsW.woff2 +0 -0
  351. package/public/assets/geist-latin-ext-wght-normal-DMtmJ5ZE.woff2 +0 -0
  352. package/public/assets/geist-latin-wght-normal-Dm3htQBi.woff2 +0 -0
  353. package/public/assets/git-branch-yxhV0m8E.js +2 -0
  354. package/public/assets/git-commit-horizontal-DS1pJ_SS.js +2 -0
  355. package/public/assets/git-merge-C7eIG425.js +2 -0
  356. package/public/assets/github-dark-C-LZuMrd.js +2 -0
  357. package/public/assets/github-dark-default-DXG-b-1a.js +2 -0
  358. package/public/assets/github-dark-dimmed-Bx1FflLF.js +2 -0
  359. package/public/assets/github-dark-high-contrast-B_tTalzw.js +2 -0
  360. package/public/assets/github-light-EUqPIrTm.js +2 -0
  361. package/public/assets/github-light-default-BXViO-2h.js +2 -0
  362. package/public/assets/github-light-high-contrast-B68TUdTA.js +2 -0
  363. package/public/assets/globe-Cl5fXtqs.js +2 -0
  364. package/public/assets/glsl-Dv5r7kPw.js +2 -0
  365. package/public/assets/graphql-CcFwQwm0.js +2 -0
  366. package/public/assets/gruvbox-dark-hard-C820rvS2.js +2 -0
  367. package/public/assets/gruvbox-dark-medium-BPjhmG05.js +2 -0
  368. package/public/assets/gruvbox-dark-soft-MrdJrrXF.js +2 -0
  369. package/public/assets/gruvbox-light-hard-BC_s9l72.js +2 -0
  370. package/public/assets/gruvbox-light-medium-BAWPOn9u.js +2 -0
  371. package/public/assets/gruvbox-light-soft-BSMLrYjP.js +2 -0
  372. package/public/assets/haml-Bg4I2hiD.js +2 -0
  373. package/public/assets/handlebars-DnwbnL5R.js +2 -0
  374. package/public/assets/hash-CbtKih3g.js +2 -0
  375. package/public/assets/horizon-CE9ld1lL.js +2 -0
  376. package/public/assets/horizon-bright-DSNQnXHK.js +2 -0
  377. package/public/assets/host-mTgRw7xh.js +2 -0
  378. package/public/assets/host-providers-dialog-CHqwXTov.js +2 -0
  379. package/public/assets/hourglass-txu4ax6n.js +2 -0
  380. package/public/assets/houston-CsvMBhTu.js +2 -0
  381. package/public/assets/html-C8UlPnhE.js +2 -0
  382. package/public/assets/html-derivative-CY6NRz-J.js +2 -0
  383. package/public/assets/http-CoW620Fi.js +2 -0
  384. package/public/assets/humwick-lockup-on-dark-Ds44Y7BK.svg +19 -0
  385. package/public/assets/humwick-lockup-on-light-ClALZAHt.svg +19 -0
  386. package/public/assets/hurl-CSSETujw.js +2 -0
  387. package/public/assets/imba-DsUTQ-LC.js +2 -0
  388. package/public/assets/inbox-Dfwk3Gt8.js +2 -0
  389. package/public/assets/index-B7ZerHLY.css +2 -0
  390. package/public/assets/index-BK0WV6hF.js +15 -0
  391. package/public/assets/input-CsTB6jIx.js +2 -0
  392. package/public/assets/insights-fH1EL-qZ.js +2 -0
  393. package/public/assets/integrations-C5Oix6ng.js +2 -0
  394. package/public/assets/issue-ref-chip-ODyondIa.js +3 -0
  395. package/public/assets/java-CGc3VwQr.js +2 -0
  396. package/public/assets/javascript-CUt1pgmJ.js +2 -0
  397. package/public/assets/jinja-CD-Z-FLd.js +2 -0
  398. package/public/assets/jison-imPNup1l.js +2 -0
  399. package/public/assets/json-qhed-kSA.js +2 -0
  400. package/public/assets/json5-BR5RXkoi.js +2 -0
  401. package/public/assets/jsonc-CYpm1nAK.js +2 -0
  402. package/public/assets/jsonl-CmCQp5Yx.js +2 -0
  403. package/public/assets/jsx-CY6oMTks.js +2 -0
  404. package/public/assets/julia-CjffhBEM.js +2 -0
  405. package/public/assets/kanagawa-dragon-CXtmUGW6.js +2 -0
  406. package/public/assets/kanagawa-lotus-BN08jTvb.js +2 -0
  407. package/public/assets/kanagawa-wave-CTweb8Dz.js +2 -0
  408. package/public/assets/kernel-Bqr0CZGv.js +2 -0
  409. package/public/assets/key-round-CcSxl5qr.js +2 -0
  410. package/public/assets/keyboard-DcmEulph.js +2 -0
  411. package/public/assets/label-BPBzm9FJ.js +2 -0
  412. package/public/assets/laserwave-C_8bwKvT.js +2 -0
  413. package/public/assets/layers-DEfClY-v.js +2 -0
  414. package/public/assets/legacy-storage-carry-C-tBSxRA.js +2 -0
  415. package/public/assets/less-DVTAwKKz.js +2 -0
  416. package/public/assets/lib-D7DTGM1F.js +2 -0
  417. package/public/assets/lib-G-25QXXf.js +30 -0
  418. package/public/assets/light-plus-DVQuIRkW.js +2 -0
  419. package/public/assets/lightbulb-RDhZ4p-D.js +2 -0
  420. package/public/assets/link-2-off-DfRF9Hwb.js +2 -0
  421. package/public/assets/link-6RR7Hy3-.js +2 -0
  422. package/public/assets/list-checks-CwnS3hly.js +2 -0
  423. package/public/assets/list-ordered-D8nCM7rT.js +2 -0
  424. package/public/assets/list-todo-9qT0fgxZ.js +2 -0
  425. package/public/assets/loader-circle-BfPd4kOD.js +2 -0
  426. package/public/assets/lock-BW8MPKw_.js +2 -0
  427. package/public/assets/log-viewer-Cvfy6PW7.js +4 -0
  428. package/public/assets/mail-DyaDmwfY.js +2 -0
  429. package/public/assets/maintenance-D8CDH5wZ.js +2 -0
  430. package/public/assets/managed-agents-egllbpij.js +4 -0
  431. package/public/assets/markdown-BYOwaDjH.js +2 -0
  432. package/public/assets/markdown-preview-CYSFgVgK.js +3 -0
  433. package/public/assets/markdown-preview-impl-BteVIjX4.js +2 -0
  434. package/public/assets/marko-DvhNOisQ.js +2 -0
  435. package/public/assets/material-theme-Bm3Qr25_.js +2 -0
  436. package/public/assets/material-theme-darker-2IIEA8gg.js +2 -0
  437. package/public/assets/material-theme-lighter-uhdI0v04.js +2 -0
  438. package/public/assets/material-theme-ocean-CHQ94UKr.js +2 -0
  439. package/public/assets/material-theme-palenight-B5W6OYN7.js +2 -0
  440. package/public/assets/mdc-CazklSAj.js +2 -0
  441. package/public/assets/mdx-DQZ5AkYe.js +2 -0
  442. package/public/assets/memory-C8WmXsyr.js +2 -0
  443. package/public/assets/message-circle-wjztgHBe.js +2 -0
  444. package/public/assets/message-square-C-1G8dMM.js +2 -0
  445. package/public/assets/message-square-reply-B9Z4cbQx.js +2 -0
  446. package/public/assets/messages-BzQdqlO6.js +2 -0
  447. package/public/assets/messages-square-DVM1ZtcI.js +2 -0
  448. package/public/assets/min-dark-BSWPekZh.js +2 -0
  449. package/public/assets/min-light-DDpmG2fV.js +2 -0
  450. package/public/assets/minimize-2-BkK6XoMP.js +2 -0
  451. package/public/assets/monokai-CdkpiU2Y.js +2 -0
  452. package/public/assets/night-owl-DhmEMT88.js +2 -0
  453. package/public/assets/night-owl-light-eJ-hLW7d.js +2 -0
  454. package/public/assets/nord-Cb4Vim4T.js +2 -0
  455. package/public/assets/octagon-x-B5lnUY-8.js +2 -0
  456. package/public/assets/one-dark-pro-CLwyXe_n.js +2 -0
  457. package/public/assets/one-light-D7Lr4KcI.js +2 -0
  458. package/public/assets/orchestrators-B1HxzkNw.js +2 -0
  459. package/public/assets/overview-DCUnI4Z7.js +2 -0
  460. package/public/assets/package-open-ckPgcjpv.js +2 -0
  461. package/public/assets/package-plus-C1AKMjsl.js +2 -0
  462. package/public/assets/pairs-ftCd2XcD.js +2 -0
  463. package/public/assets/paperclip-CNpKZKum.js +2 -0
  464. package/public/assets/pause-DttnHD4c.js +2 -0
  465. package/public/assets/pencil-B1Hf2V_J.js +2 -0
  466. package/public/assets/php-CBqsN0ai.js +2 -0
  467. package/public/assets/pin-DcsKeXxr.js +2 -0
  468. package/public/assets/plastic-DQwYfKfQ.js +2 -0
  469. package/public/assets/play-BbT8m7A0.js +2 -0
  470. package/public/assets/plug-vIyO9_P8.js +2 -0
  471. package/public/assets/plug-zap-V0wMDJ-G.js +2 -0
  472. package/public/assets/plus-D5Ek4e2S.js +2 -0
  473. package/public/assets/poimandres-DRFjx7u4.js +2 -0
  474. package/public/assets/popover-8w1TWKMG.js +2 -0
  475. package/public/assets/postcss-BXeXVLqQ.js +2 -0
  476. package/public/assets/power-6tZOhYPg.js +2 -0
  477. package/public/assets/preload-helper-HclGiUj8.js +1 -0
  478. package/public/assets/profile-icon-B2zH8DMH.js +2 -0
  479. package/public/assets/projects-B_lmcqfO.js +2 -0
  480. package/public/assets/prompt-settings-Bftq9czX.js +2 -0
  481. package/public/assets/provider-brand-icon-_67JR7Zh.js +2 -0
  482. package/public/assets/provider-display-DbLWpP3j.js +2 -0
  483. package/public/assets/pug-C5hz5LQ7.js +2 -0
  484. package/public/assets/python-gzcpVVnB.js +2 -0
  485. package/public/assets/r-Dzep-lPg.js +2 -0
  486. package/public/assets/radio-Bn0_qc0G.js +2 -0
  487. package/public/assets/react-dom-DSFxiC7T.js +2 -0
  488. package/public/assets/red-CJ3rzSJv.js +2 -0
  489. package/public/assets/refresh-cw-CfpvQcUn.js +2 -0
  490. package/public/assets/regexp-Omp9DhTb.js +2 -0
  491. package/public/assets/registry-DWCU5c8q.js +4 -0
  492. package/public/assets/repeat-hl4p_Klo.js +2 -0
  493. package/public/assets/rocket-BmO1qSu-.js +2 -0
  494. package/public/assets/rolldown-runtime-QTnfLwEv.js +1 -0
  495. package/public/assets/rose-pine-BthvhNj6.js +2 -0
  496. package/public/assets/rose-pine-dawn-Dg85fqjY.js +2 -0
  497. package/public/assets/rose-pine-moon-hon4tzzS.js +2 -0
  498. package/public/assets/rotate-ccw-CtD77qkX.js +2 -0
  499. package/public/assets/rotate-cw-FPtkDewA.js +2 -0
  500. package/public/assets/run-card-CO_bguQf.js +2 -0
  501. package/public/assets/sass-DXrisJhu.js +2 -0
  502. package/public/assets/save-B_PGqSm4.js +2 -0
  503. package/public/assets/scroll-area-CIN4KQse.js +2 -0
  504. package/public/assets/scss-DdSxiZKl.js +2 -0
  505. package/public/assets/search-DjzbnTbf.js +2 -0
  506. package/public/assets/secrets-C7GIUATz.js +2 -0
  507. package/public/assets/security-BUFau5-N.js +3 -0
  508. package/public/assets/select-DTQMP4Dk.js +2 -0
  509. package/public/assets/separator-t1cLZErD.js +2 -0
  510. package/public/assets/server-CZIRjFyY.js +2 -0
  511. package/public/assets/service-access-settings-C3aujqTG.js +2 -0
  512. package/public/assets/settings-C6sZ9eBa.js +6 -0
  513. package/public/assets/shellscript-CLZ0U2zV.js +2 -0
  514. package/public/assets/shield-CtXNUA0i.js +2 -0
  515. package/public/assets/shield-alert-B9jCWcKW.js +2 -0
  516. package/public/assets/shipping-Bu8p1gEw.js +2 -0
  517. package/public/assets/shipping-stats-BiMTsA4A.js +2 -0
  518. package/public/assets/slack-dark-DnToyrRv.js +2 -0
  519. package/public/assets/slack-ochin-B2OO5cIa.js +2 -0
  520. package/public/assets/smile-plus-q6EQBXHZ.js +2 -0
  521. package/public/assets/snazzy-light-4G7pJPwS.js +2 -0
  522. package/public/assets/solarized-dark-DV17i1UV.js +2 -0
  523. package/public/assets/solarized-light-DSh2HLQt.js +2 -0
  524. package/public/assets/sparkles-CzwR10ZU.js +2 -0
  525. package/public/assets/sql-DNssxck8.js +2 -0
  526. package/public/assets/square-Bqly37YM.js +2 -0
  527. package/public/assets/stats-V9Z-GxUd.js +2 -0
  528. package/public/assets/status-dot-CVv0iGHL.js +2 -0
  529. package/public/assets/stethoscope-SCBrnQQ8.js +2 -0
  530. package/public/assets/store-BvtFdlGX.js +9 -0
  531. package/public/assets/stylus-B6D30XZt.js +2 -0
  532. package/public/assets/svelte-DOdLCIlh.js +2 -0
  533. package/public/assets/switch-DuCA7mrB.js +2 -0
  534. package/public/assets/synthwave-84-nFMaYfgc.js +2 -0
  535. package/public/assets/tabs-jZgNvNHr.js +2 -0
  536. package/public/assets/task-chip-CYj0mpoL.js +2 -0
  537. package/public/assets/tasks-BIyeAaPC.js +2 -0
  538. package/public/assets/tasks-CXU75HRF.js +11 -0
  539. package/public/assets/teams-BPf976zb.js +2 -0
  540. package/public/assets/terminal-Bl2u7KxT.js +2 -0
  541. package/public/assets/terminal-viewer-DE9BOe-8.js +3 -0
  542. package/public/assets/terminal-viewer-impl-BrP-ENHg.css +1 -0
  543. package/public/assets/terminal-viewer-impl-D04pjmGh.js +143 -0
  544. package/public/assets/textarea-hs6Mpyfl.js +2 -0
  545. package/public/assets/themes-G5j9m1Ji.js +2 -0
  546. package/public/assets/tokyo-night-oM2G3aXe.js +2 -0
  547. package/public/assets/trash-2-FbcSq927.js +2 -0
  548. package/public/assets/triangle-alert-BBNhfgMi.js +2 -0
  549. package/public/assets/ts-tags-Ca73dJJY.js +2 -0
  550. package/public/assets/tsx-5Eka4NBX.js +2 -0
  551. package/public/assets/typescript-DOu2WMV5.js +2 -0
  552. package/public/assets/use-agent-terminal-B1yR456R.js +2 -0
  553. package/public/assets/use-decisions-D-S4tpDf.js +2 -0
  554. package/public/assets/use-project-list-B-T2Bnnn.js +2 -0
  555. package/public/assets/use-selectors-CnrAk2YP.js +6 -0
  556. package/public/assets/user-avatar-nBFIcR4M.js +2 -0
  557. package/public/assets/user-cog-CKcouW1J.js +2 -0
  558. package/public/assets/user-plus-D9749q73.js +2 -0
  559. package/public/assets/users-C7B3u9jv.js +2 -0
  560. package/public/assets/versioned-prompt-editor-Diu8BIaM.js +8 -0
  561. package/public/assets/vesper-DdrHHSXu.js +2 -0
  562. package/public/assets/vitesse-black-fwtXNY1n.js +2 -0
  563. package/public/assets/vitesse-dark-BZCL-v6S.js +2 -0
  564. package/public/assets/vitesse-light-VbXTXTou.js +2 -0
  565. package/public/assets/volume-2-XrcRKD9Z.js +2 -0
  566. package/public/assets/vue-Bfx0ffIq.js +2 -0
  567. package/public/assets/vue-html-BeluIYX0.js +2 -0
  568. package/public/assets/vue-vine-DGUAbOCX.js +2 -0
  569. package/public/assets/warehouse-BanzOanY.js +2 -0
  570. package/public/assets/wasm-BnjxR4X6.js +2 -0
  571. package/public/assets/wasm-ByWQv1Qj.js +2 -0
  572. package/public/assets/waypoints-CIzINtLT.js +2 -0
  573. package/public/assets/wgsl-BsKzXJz4.js +2 -0
  574. package/public/assets/wit-DdvCle-K.js +2 -0
  575. package/public/assets/work-queue-TCjJxeT-.js +2 -0
  576. package/public/assets/workflow-marker-Cf3Hf2fN.js +2 -0
  577. package/public/assets/workflows-CXQX20Qj.js +6 -0
  578. package/public/assets/workspaces-qSYzKYMA.js +3 -0
  579. package/public/assets/wrench-C7-4CgnY.js +2 -0
  580. package/public/assets/x-Bge17hWJ.js +2 -0
  581. package/public/assets/xml-DIqSwXR3.js +2 -0
  582. package/public/assets/yaml-rwi0_p6S.js +2 -0
  583. package/public/assets/zap-DGuDTw4w.js +2 -0
  584. package/public/assets/zoom-in-Bs8Qv8VL.js +2 -0
  585. package/public/assets/zoomable-image-B3Og53nj.js +2 -0
  586. package/public/cosmos/audio/README.md +50 -0
  587. package/public/cosmos/audio/alert.mp3 +0 -0
  588. package/public/cosmos/audio/ambient-bed.mp3 +0 -0
  589. package/public/cosmos/audio/comet.mp3 +0 -0
  590. package/public/cosmos/audio/cross-galaxy.mp3 +0 -0
  591. package/public/cosmos/audio/deploy.mp3 +0 -0
  592. package/public/cosmos/audio/galaxy-dissipate.mp3 +0 -0
  593. package/public/cosmos/audio/galaxy-form.mp3 +0 -0
  594. package/public/cosmos/audio/land.mp3 +0 -0
  595. package/public/cosmos/audio/reap.mp3 +0 -0
  596. package/public/cosmos/audio/spawn.mp3 +0 -0
  597. package/public/cosmos.html +34 -0
  598. package/public/favicon.ico +0 -0
  599. package/public/favicon.svg +10 -0
  600. package/public/icons/apple-touch-icon.png +0 -0
  601. package/public/icons/humwick-192.png +0 -0
  602. package/public/icons/humwick-512.png +0 -0
  603. package/public/icons/humwick.svg +19 -0
  604. package/public/index.html +188 -0
  605. package/public/manifest.webmanifest +45 -0
  606. package/public/sw.js +160 -0
  607. package/recipes/code-review.yaml +26 -0
  608. package/recipes/debug.yaml +20 -0
  609. package/recipes/feature.yaml +26 -0
  610. package/recipes/refactor.yaml +20 -0
  611. package/recipes/test.yaml +20 -0
  612. package/runner/LICENSE +167 -0
  613. package/runner/agent-bin/agent-relay-browser +10 -0
  614. package/runner/agent-bin/humwick +10 -0
  615. package/runner/hooks/fff-search-redirect/fff-search-redirect.cjs +161 -0
  616. package/runner/hooks/fff-search-redirect/hooks.json +13 -0
  617. package/runner/hooks/rg-r-guard/hooks.json +18 -0
  618. package/runner/hooks/rg-r-guard/rg-r-guard.cjs +144 -0
  619. package/runner/hooks/web-tools-redirect/hooks.json +13 -0
  620. package/runner/hooks/web-tools-redirect/web-tools-redirect.cjs +84 -0
  621. package/runner/plugins/browser/skills/playwright-cli/SKILL.md +53 -0
  622. package/runner/plugins/claude/.claude-plugin/plugin.json +8 -0
  623. package/runner/plugins/claude/claude-statusline-probe.cjs +144 -0
  624. package/runner/plugins/claude/hooks/gate-run-guard.provisioned.mjs +914 -0
  625. package/runner/plugins/claude/hooks/gate-run-guard.sh +9 -0
  626. package/runner/plugins/claude/hooks/gate-run-guard.ts +237 -0
  627. package/runner/plugins/claude/hooks/hooks.json +158 -0
  628. package/runner/plugins/claude/hooks/kill-guard.provisioned.mjs +7027 -0
  629. package/runner/plugins/claude/hooks/kill-guard.sh +341 -0
  630. package/runner/plugins/claude/hooks/kill-guard.ts +337 -0
  631. package/runner/plugins/claude/hooks/permission-request.sh +22 -0
  632. package/runner/plugins/claude/hooks/post-compact.sh +10 -0
  633. package/runner/plugins/claude/hooks/post-tool-use.sh +8 -0
  634. package/runner/plugins/claude/hooks/pre-compact.sh +12 -0
  635. package/runner/plugins/claude/hooks/read-only-bash-guard.sh +587 -0
  636. package/runner/plugins/claude/hooks/relay-status.sh +373 -0
  637. package/runner/plugins/claude/hooks/session-end.sh +26 -0
  638. package/runner/plugins/claude/hooks/session-start.sh +31 -0
  639. package/runner/plugins/claude/hooks/shell-trust.ts +28 -0
  640. package/runner/plugins/claude/hooks/stop-failure.sh +47 -0
  641. package/runner/plugins/claude/hooks/stop.sh +48 -0
  642. package/runner/plugins/claude/hooks/subagent-guard.cjs +26 -0
  643. package/runner/plugins/claude/hooks/subagent-skill-policy.cjs +160 -0
  644. package/runner/plugins/claude/hooks/subagent-start.sh +13 -0
  645. package/runner/plugins/claude/hooks/subagent-stop.sh +19 -0
  646. package/runner/plugins/claude/hooks/user-prompt-submit.sh +18 -0
  647. package/runner/plugins/claude/hooks/wait-loop-guard.ts +120 -0
  648. package/runner/plugins/claude/monitors/monitors.json +7 -0
  649. package/runner/plugins/claude/monitors/relay-monitor.provisioned.mjs +786 -0
  650. package/runner/plugins/claude/monitors/relay-monitor.ts +58 -0
  651. package/runner/plugins/claude/skills/disconnect/SKILL.md +16 -0
  652. package/runner/plugins/claude/skills/label/SKILL.md +23 -0
  653. package/runner/plugins/claude/skills/message/SKILL.md +40 -0
  654. package/runner/plugins/claude/skills/pair/SKILL.md +30 -0
  655. package/runner/plugins/claude/skills/react/SKILL.md +18 -0
  656. package/runner/plugins/claude/skills/read-message/SKILL.md +24 -0
  657. package/runner/plugins/claude/skills/reply/SKILL.md +44 -0
  658. package/runner/plugins/claude/skills/send-claimable/SKILL.md +39 -0
  659. package/runner/plugins/claude/skills/slice-first/SKILL.md +32 -0
  660. package/runner/plugins/claude/skills/slice-first/references/plan-recipe.md +46 -0
  661. package/runner/plugins/claude/skills/status/SKILL.md +16 -0
  662. package/runner/plugins/claude/skills/tags/SKILL.md +25 -0
  663. package/runner/plugins/claude/skills/task/SKILL.md +28 -0
  664. package/runner/plugins/claude-output-style/.claude-plugin/plugin.json +5 -0
  665. package/runner/plugins/claude-output-style/output-styles/agent-relay.md +5 -0
  666. package/runner/plugins/codex/skills/disconnect/SKILL.md +15 -0
  667. package/runner/plugins/codex/skills/guide/SKILL.md +15 -0
  668. package/runner/plugins/codex/skills/label/SKILL.md +22 -0
  669. package/runner/plugins/codex/skills/message/SKILL.md +40 -0
  670. package/runner/plugins/codex/skills/pair/SKILL.md +29 -0
  671. package/runner/plugins/codex/skills/react/SKILL.md +17 -0
  672. package/runner/plugins/codex/skills/read-message/SKILL.md +23 -0
  673. package/runner/plugins/codex/skills/reply/SKILL.md +44 -0
  674. package/runner/plugins/codex/skills/send-claimable/SKILL.md +39 -0
  675. package/runner/plugins/codex/skills/slice-first/SKILL.md +32 -0
  676. package/runner/plugins/codex/skills/slice-first/references/plan-recipe.md +46 -0
  677. package/runner/plugins/codex/skills/status/SKILL.md +15 -0
  678. package/runner/plugins/codex/skills/tags/SKILL.md +24 -0
  679. package/runner/plugins/codex/skills/task/SKILL.md +28 -0
  680. package/runner/src/adapter.ts +1061 -0
  681. package/runner/src/adapters/__fixtures__/codex-app-server.ts +47 -0
  682. package/runner/src/adapters/claude-api.ts +243 -0
  683. package/runner/src/adapters/claude-context-command.ts +16 -0
  684. package/runner/src/adapters/claude-credentials.ts +22 -0
  685. package/runner/src/adapters/claude-delivery-lanes.ts +28 -0
  686. package/runner/src/adapters/claude-delivery.ts +166 -0
  687. package/runner/src/adapters/claude-effort.ts +94 -0
  688. package/runner/src/adapters/claude-exit.ts +290 -0
  689. package/runner/src/adapters/claude-headless-mirror.ts +88 -0
  690. package/runner/src/adapters/claude-headless-refusal.ts +51 -0
  691. package/runner/src/adapters/claude-headless.ts +617 -0
  692. package/runner/src/adapters/claude-monitor-delivery-plan.ts +317 -0
  693. package/runner/src/adapters/claude-permission.ts +243 -0
  694. package/runner/src/adapters/claude-prompt-gates.ts +269 -0
  695. package/runner/src/adapters/claude-prompt-hook.ts +145 -0
  696. package/runner/src/adapters/claude-session-capture.ts +293 -0
  697. package/runner/src/adapters/claude-session-probe.ts +414 -0
  698. package/runner/src/adapters/claude-shutdown.ts +190 -0
  699. package/runner/src/adapters/claude-status-detectors.ts +426 -0
  700. package/runner/src/adapters/claude-subagents.ts +93 -0
  701. package/runner/src/adapters/claude-submit-confirmation.ts +287 -0
  702. package/runner/src/adapters/claude-tmux.ts +548 -0
  703. package/runner/src/adapters/claude-token-usage-capture.ts +253 -0
  704. package/runner/src/adapters/claude-tool-policy.ts +165 -0
  705. package/runner/src/adapters/claude-transcript-tail.ts +193 -0
  706. package/runner/src/adapters/claude-transcript.ts +812 -0
  707. package/runner/src/adapters/claude.ts +1097 -0
  708. package/runner/src/adapters/codex-agent-message-capture.ts +189 -0
  709. package/runner/src/adapters/codex-app-server.ts +70 -0
  710. package/runner/src/adapters/codex-client.ts +362 -0
  711. package/runner/src/adapters/codex-effective-config.ts +87 -0
  712. package/runner/src/adapters/codex-launch-config.ts +153 -0
  713. package/runner/src/adapters/codex-rollout-context.ts +272 -0
  714. package/runner/src/adapters/codex-skill-discovery.ts +18 -0
  715. package/runner/src/adapters/codex-token-usage-capture.ts +163 -0
  716. package/runner/src/adapters/codex-tool-output.ts +53 -0
  717. package/runner/src/adapters/codex-turn-outcome.ts +27 -0
  718. package/runner/src/adapters/codex-version.ts +64 -0
  719. package/runner/src/adapters/codex.ts +1442 -0
  720. package/runner/src/adapters/incremental-file.ts +110 -0
  721. package/runner/src/adapters/opencode-api.ts +71 -0
  722. package/runner/src/adapters/opencode-context.ts +277 -0
  723. package/runner/src/adapters/opencode-model-registry.ts +126 -0
  724. package/runner/src/adapters/opencode-provider.ts +169 -0
  725. package/runner/src/adapters/opencode-server-retry.ts +50 -0
  726. package/runner/src/adapters/opencode-soft-steer.ts +302 -0
  727. package/runner/src/adapters/opencode-spawn.ts +145 -0
  728. package/runner/src/adapters/opencode-subscribe.ts +62 -0
  729. package/runner/src/adapters/opencode-token-usage-capture.ts +187 -0
  730. package/runner/src/adapters/opencode-tool-events.ts +302 -0
  731. package/runner/src/adapters/opencode-tools-config.ts +17 -0
  732. package/runner/src/adapters/opencode.ts +2264 -0
  733. package/runner/src/adapters/project-shell.ts +80 -0
  734. package/runner/src/adapters/provider-launch-config.ts +21 -0
  735. package/runner/src/adapters/provider-quota-harvest.ts +127 -0
  736. package/runner/src/adapters/service-access.ts +153 -0
  737. package/runner/src/adapters/tmux-offload.ts +207 -0
  738. package/runner/src/adapters/tool-summary.ts +214 -0
  739. package/runner/src/agent-redact.ts +75 -0
  740. package/runner/src/agent-runner/commands/dispatch.ts +185 -0
  741. package/runner/src/agent-runner/commands/lifecycle.ts +84 -0
  742. package/runner/src/agent-runner/commands/prompt.ts +284 -0
  743. package/runner/src/agent-runner/credentials.ts +208 -0
  744. package/runner/src/agent-runner/http-liveness.ts +85 -0
  745. package/runner/src/agent-runner/lifecycle-milestones.ts +207 -0
  746. package/runner/src/agent-runner/lifecycle-phase.ts +80 -0
  747. package/runner/src/agent-runner/registration.ts +163 -0
  748. package/runner/src/agent-runner/runner-context.ts +158 -0
  749. package/runner/src/agent-runner/session-mirror.ts +278 -0
  750. package/runner/src/agent-runner/task-claims.ts +116 -0
  751. package/runner/src/agent-runner/token-usage-coverage.ts +54 -0
  752. package/runner/src/agent-runner/turn-report.ts +269 -0
  753. package/runner/src/api-budget-accounting.ts +91 -0
  754. package/runner/src/area-memory.ts +255 -0
  755. package/runner/src/artifact-path-materialize.ts +52 -0
  756. package/runner/src/async-guard.ts +35 -0
  757. package/runner/src/attachment-cache-sweep.ts +31 -0
  758. package/runner/src/attachment-cache.ts +195 -0
  759. package/runner/src/background-script-reconcile.ts +106 -0
  760. package/runner/src/bounded-log.ts +59 -0
  761. package/runner/src/bounded-spawn-sync.ts +18 -0
  762. package/runner/src/busy-reconciler.ts +282 -0
  763. package/runner/src/claim-tracker.ts +140 -0
  764. package/runner/src/claude-settings.ts +167 -0
  765. package/runner/src/claude-workspace-trust.ts +289 -0
  766. package/runner/src/config.ts +547 -0
  767. package/runner/src/context-boundary.ts +101 -0
  768. package/runner/src/context-command.ts +151 -0
  769. package/runner/src/context-probe-state.ts +6 -0
  770. package/runner/src/continuation-archive.ts +179 -0
  771. package/runner/src/control-server.ts +730 -0
  772. package/runner/src/delivery-policy.ts +9 -0
  773. package/runner/src/delivery-result.ts +24 -0
  774. package/runner/src/effort-command.ts +125 -0
  775. package/runner/src/empty-turn.ts +816 -0
  776. package/runner/src/free-port.ts +25 -0
  777. package/runner/src/fs-offload.ts +26 -0
  778. package/runner/src/gate-run-config.ts +35 -0
  779. package/runner/src/gate-run-lease-probe.ts +38 -0
  780. package/runner/src/host-asset-plan.ts +450 -0
  781. package/runner/src/host-claude-config-worker.ts +34 -0
  782. package/runner/src/host-sources.ts +40 -0
  783. package/runner/src/inbox-carrier.ts +7 -0
  784. package/runner/src/index.ts +386 -0
  785. package/runner/src/launch-assembly.ts +955 -0
  786. package/runner/src/liveness.ts +105 -0
  787. package/runner/src/logger.ts +108 -0
  788. package/runner/src/mcp-outbox.ts +204 -0
  789. package/runner/src/mcp-preflight.ts +86 -0
  790. package/runner/src/mcp-source-selection.ts +54 -0
  791. package/runner/src/mcp-tool-deferral.ts +35 -0
  792. package/runner/src/mcp-vault-env.ts +25 -0
  793. package/runner/src/message-body-config/config.ts +16 -0
  794. package/runner/src/message-body-config.ts +1 -0
  795. package/runner/src/mid-turn-delivery.ts +43 -0
  796. package/runner/src/native-memory-lever.ts +329 -0
  797. package/runner/src/native-self-resume.ts +244 -0
  798. package/runner/src/outbox.ts +453 -0
  799. package/runner/src/park-post.ts +17 -0
  800. package/runner/src/pending-permission-store.ts +148 -0
  801. package/runner/src/process-meta.ts +9 -0
  802. package/runner/src/profile-home.ts +419 -0
  803. package/runner/src/profile-projection.ts +411 -0
  804. package/runner/src/project-hooks.ts +65 -0
  805. package/runner/src/project-instructions.ts +119 -0
  806. package/runner/src/provider-double.ts +59 -0
  807. package/runner/src/provider-hold.ts +228 -0
  808. package/runner/src/provider-home-marker.ts +3 -0
  809. package/runner/src/provider-home-tombstone.ts +4 -0
  810. package/runner/src/provider-input-queue.ts +134 -0
  811. package/runner/src/provider-integration.ts +93 -0
  812. package/runner/src/provider-processes.ts +17 -0
  813. package/runner/src/provider-submit-failure.ts +15 -0
  814. package/runner/src/providers.ts +35 -0
  815. package/runner/src/provisioning.ts +703 -0
  816. package/runner/src/question-decision.ts +18 -0
  817. package/runner/src/quota.ts +22 -0
  818. package/runner/src/rate-limit.ts +351 -0
  819. package/runner/src/refused-prompt-store.ts +36 -0
  820. package/runner/src/relay-injection-events.ts +161 -0
  821. package/runner/src/relay-instructions.ts +107 -0
  822. package/runner/src/relay-mcp-proxy.long-turn-e2e.ts +183 -0
  823. package/runner/src/relay-mcp-proxy.ts +704 -0
  824. package/runner/src/relay-mcp.ts +583 -0
  825. package/runner/src/reply-obligation-cache.ts +211 -0
  826. package/runner/src/response-capture-report.ts +111 -0
  827. package/runner/src/response-routing.ts +6 -0
  828. package/runner/src/runner-core.ts +2955 -0
  829. package/runner/src/runner-exit.ts +12 -0
  830. package/runner/src/runner-helpers.ts +582 -0
  831. package/runner/src/runner-insights.ts +105 -0
  832. package/runner/src/runner-mcp-proxy.ts +46 -0
  833. package/runner/src/runner-spawn-config.ts +68 -0
  834. package/runner/src/runner-stale-scratch-sweep.ts +21 -0
  835. package/runner/src/runner.ts +9 -0
  836. package/runner/src/runtime-token-file.ts +45 -0
  837. package/runner/src/runtime-token-remint.ts +56 -0
  838. package/runner/src/service-access.ts +88 -0
  839. package/runner/src/session-destroy.ts +27 -0
  840. package/runner/src/session-insights.ts +118 -0
  841. package/runner/src/session-scratch.ts +296 -0
  842. package/runner/src/spawn-input.ts +147 -0
  843. package/runner/src/startup-config-fetch.ts +48 -0
  844. package/runner/src/subreaper.ts +113 -0
  845. package/runner/src/template-resolver.ts +29 -0
  846. package/runner/src/test-run-dedup.ts +435 -0
  847. package/runner/src/transcript-context.ts +99 -0
  848. package/runner/src/transport-errors.ts +48 -0
  849. package/runner/src/turn-opener.ts +55 -0
  850. package/runner/src/turn-reconcile-event.ts +88 -0
  851. package/runner/src/vault-proxy-hop.ts +99 -0
  852. package/runner/src/version.ts +44 -0
  853. package/runner/src/web-tool-call-proxy.ts +128 -0
  854. package/runner/src/web-tools.ts +59 -0
  855. package/runner/test-support/codex-web-config-proof.ts +149 -0
  856. package/runner/test-support/effective-launch.ts +189 -0
  857. package/runner/test-support/native-context-sources.ts +77 -0
  858. package/runner/test-support/provisioning-context.ts +55 -0
  859. package/runner/test-support/recorder-double.ts +130 -0
  860. package/runner/test-support/recording-provider.ts +242 -0
  861. package/runner/test-support/runner-harness.ts +249 -0
  862. package/runner/test-support/service-access-fixture.ts +12 -0
  863. package/scripts/agent-vault/bootstrap.py +87 -0
  864. package/scripts/agent-vault/install.py +200 -0
  865. package/scripts/agent-vault/install_refresh.py +98 -0
  866. package/scripts/agent-vault/refresh.py +116 -0
  867. package/scripts/agent-vault/refresh_provision.py +109 -0
  868. package/scripts/agent-vault/refresh_store.py +54 -0
  869. package/scripts/agent-vault/runtime.py +253 -0
  870. package/scripts/agent-vault/sec-ops-activation.json +23 -0
  871. package/scripts/artifact-checkout-gc.ts +51 -0
  872. package/scripts/cd-config.ts +224 -0
  873. package/scripts/cd-deploy-debounce.ts +94 -0
  874. package/scripts/cd-deploy-worktree-gc.ts +235 -0
  875. package/scripts/cd-fleet-membership.ts +48 -0
  876. package/scripts/cd-host-epochs.ts +101 -0
  877. package/scripts/cd-hub-wake.ts +40 -0
  878. package/scripts/cd-land-boundary.ts +49 -0
  879. package/scripts/cd-watcher.ts +985 -0
  880. package/scripts/dashboard-build-marker.ts +71 -0
  881. package/scripts/fleet-sha-coverage.ts +66 -0
  882. package/scripts/gate-run-lease.ts +329 -0
  883. package/scripts/gate-slot +9 -0
  884. package/scripts/gate-slot-fleet-health.ts +60 -0
  885. package/scripts/gate.sh +6 -0
  886. package/scripts/install-bin-shim.cjs +149 -0
  887. package/scripts/orchestrator-spawn-smoke.ts +398 -0
  888. package/scripts/provisioning-matrix.ts +72 -0
  889. package/scripts/release-cd-stamp.ts +146 -0
  890. package/scripts/release-health.ts +133 -0
  891. package/scripts/release-report.ts +102 -0
  892. package/scripts/release-upgrade.ts +1296 -0
  893. package/scripts/steward-policy-cleanup.ts +73 -0
  894. package/scripts/wait-for-deploy.ts +43 -0
  895. package/src/agent-authz.ts +219 -0
  896. package/src/agent-branch-state.ts +45 -0
  897. package/src/agent-busy-health.ts +158 -0
  898. package/src/agent-card-projection.ts +86 -0
  899. package/src/agent-channel-binding.ts +49 -0
  900. package/src/agent-command-activity.ts +39 -0
  901. package/src/agent-core.ts +29 -0
  902. package/src/agent-death-diagnosis.ts +314 -0
  903. package/src/agent-drive-arbiter.ts +112 -0
  904. package/src/agent-exit-alarm.ts +10 -0
  905. package/src/agent-exit-cleanup-async.ts +69 -0
  906. package/src/agent-exit-cleanup.ts +99 -0
  907. package/src/agent-exit-report.ts +28 -0
  908. package/src/agent-issue-repo.ts +53 -0
  909. package/src/agent-launch-shape-redaction.ts +72 -0
  910. package/src/agent-lifecycle-events.ts +428 -0
  911. package/src/agent-principal.ts +14 -0
  912. package/src/agent-profile-catalog.ts +188 -0
  913. package/src/agent-ref.ts +340 -0
  914. package/src/agent-spawn.ts +45 -0
  915. package/src/agent-status-events.ts +41 -0
  916. package/src/agent-system-tags.ts +38 -0
  917. package/src/artifact-media.ts +34 -0
  918. package/src/artifact-storage.ts +245 -0
  919. package/src/artifact-text.ts +31 -0
  920. package/src/async-deadline.ts +59 -0
  921. package/src/auth/admin-routes.ts +36 -0
  922. package/src/auth/index.ts +23 -0
  923. package/src/auth/login-rate-limiter.ts +153 -0
  924. package/src/auth/password.ts +142 -0
  925. package/src/auth/provider.ts +60 -0
  926. package/src/auth/role-scopes.ts +15 -0
  927. package/src/auth/session-cookie.ts +35 -0
  928. package/src/auth/session-refresh.ts +61 -0
  929. package/src/auth/session.test-fixture.ts +10 -0
  930. package/src/auth/session.ts +107 -0
  931. package/src/authority-audit.ts +56 -0
  932. package/src/authz-meta-keys.ts +64 -0
  933. package/src/auto-spawn-dispatch.ts +154 -0
  934. package/src/automations/constants.ts +14 -0
  935. package/src/automations/cron.ts +129 -0
  936. package/src/automations/crud.ts +129 -0
  937. package/src/automations/dispatch.ts +299 -0
  938. package/src/automations/index.ts +5 -0
  939. package/src/automations/precheck.ts +124 -0
  940. package/src/automations/reconcile.ts +314 -0
  941. package/src/automations/storage.ts +200 -0
  942. package/src/automations/types.ts +16 -0
  943. package/src/automations/validation.ts +216 -0
  944. package/src/automations.ts +1 -0
  945. package/src/branch-landed.ts +761 -0
  946. package/src/browser-authz.ts +18 -0
  947. package/src/browser-config.ts +31 -0
  948. package/src/bundled-workflows.ts +48 -0
  949. package/src/bus-outbox-async.ts +16 -0
  950. package/src/bus-outbox.ts +265 -0
  951. package/src/bus-resume-commands.ts +18 -0
  952. package/src/bus.ts +792 -0
  953. package/src/canonical-repo-root.ts +131 -0
  954. package/src/cd-deploy-notify.ts +59 -0
  955. package/src/cd-host-deferrals.ts +23 -0
  956. package/src/cd-host-lag-notify.ts +36 -0
  957. package/src/cd-repository.ts +49 -0
  958. package/src/channel-output-control.ts +43 -0
  959. package/src/channel-output-validation.ts +11 -0
  960. package/src/channel-policy-health.ts +20 -0
  961. package/src/channel-target.ts +40 -0
  962. package/src/channels-host-service.ts +219 -0
  963. package/src/ci/bun-test-log.ts +41 -0
  964. package/src/ci/failed-test-files.ts +52 -0
  965. package/src/ci/gate-history.ts +66 -0
  966. package/src/ci/github-actions.ts +145 -0
  967. package/src/ci/incidents.ts +175 -0
  968. package/src/ci/index.ts +6 -0
  969. package/src/ci/job-verdict.ts +27 -0
  970. package/src/ci/land-boundary-ci.ts +104 -0
  971. package/src/ci/monitor.ts +528 -0
  972. package/src/ci/not-triggered.ts +116 -0
  973. package/src/ci/notifications.ts +234 -0
  974. package/src/ci/provider.ts +87 -0
  975. package/src/ci/root-missing.ts +35 -0
  976. package/src/ci/transition-notify.ts +279 -0
  977. package/src/ci-monitor.ts +7 -0
  978. package/src/claude-api-budget-async.ts +11 -0
  979. package/src/claude-api-budget-config.ts +23 -0
  980. package/src/claude-api-expiry.ts +70 -0
  981. package/src/claude-api-overflow.ts +146 -0
  982. package/src/claude-app/config.ts +13 -0
  983. package/src/claude-app/oauth-http.ts +127 -0
  984. package/src/claude-app/oauth-provider.ts +136 -0
  985. package/src/claude-app/passphrase.ts +14 -0
  986. package/src/claude-app-auth.ts +65 -0
  987. package/src/claude-app-gateway.ts +68 -0
  988. package/src/cli/_shared.ts +136 -0
  989. package/src/cli/agent-detect.ts +175 -0
  990. package/src/cli/agent-guide.ts +152 -0
  991. package/src/cli/agent-keep.ts +37 -0
  992. package/src/cli/agent-meta.ts +111 -0
  993. package/src/cli/artifact.ts +154 -0
  994. package/src/cli/browser.ts +56 -0
  995. package/src/cli/channel-output.ts +17 -0
  996. package/src/cli/channels-host.ts +13 -0
  997. package/src/cli/channels.ts +16 -0
  998. package/src/cli/claude-api-budget.ts +41 -0
  999. package/src/cli/context-probe.ts +90 -0
  1000. package/src/cli/credentials.ts +1 -0
  1001. package/src/cli/daemon.ts +125 -0
  1002. package/src/cli/dev.ts +185 -0
  1003. package/src/cli/ephemeral.ts +159 -0
  1004. package/src/cli/hosts.ts +41 -0
  1005. package/src/cli/index.ts +442 -0
  1006. package/src/cli/introspect.ts +74 -0
  1007. package/src/cli/maintenance.ts +24 -0
  1008. package/src/cli/merges.ts +78 -0
  1009. package/src/cli/message.ts +229 -0
  1010. package/src/cli/orchestrator.ts +384 -0
  1011. package/src/cli/pair.ts +135 -0
  1012. package/src/cli/profile.ts +35 -0
  1013. package/src/cli/project.ts +52 -0
  1014. package/src/cli/prompts.ts +23 -0
  1015. package/src/cli/provider-enablement.ts +42 -0
  1016. package/src/cli/provider.ts +230 -0
  1017. package/src/cli/recipe.ts +110 -0
  1018. package/src/cli/reply.ts +130 -0
  1019. package/src/cli/roles.ts +60 -0
  1020. package/src/cli/routing-policy.ts +20 -0
  1021. package/src/cli/run.ts +96 -0
  1022. package/src/cli/secrets-backup.ts +85 -0
  1023. package/src/cli/secrets.ts +55 -0
  1024. package/src/cli/service-access.ts +23 -0
  1025. package/src/cli/setup.ts +57 -0
  1026. package/src/cli/shutdown.ts +16 -0
  1027. package/src/cli/spawn.ts +31 -0
  1028. package/src/cli/state.ts +73 -0
  1029. package/src/cli/steward.ts +58 -0
  1030. package/src/cli/task.ts +151 -0
  1031. package/src/cli/team.ts +18 -0
  1032. package/src/cli/timers.ts +53 -0
  1033. package/src/cli/token.ts +72 -0
  1034. package/src/cli/upgrade.ts +200 -0
  1035. package/src/cli/web-tool-calls.ts +17 -0
  1036. package/src/cli/workflow.ts +46 -0
  1037. package/src/cli/workspace.ts +544 -0
  1038. package/src/cli.ts +4 -0
  1039. package/src/codex-reset-consume.ts +274 -0
  1040. package/src/codex-wham-quota.ts +177 -0
  1041. package/src/command-events.ts +69 -0
  1042. package/src/command-secrets.ts +198 -0
  1043. package/src/command-ttl.ts +63 -0
  1044. package/src/commands-db.ts +1196 -0
  1045. package/src/commands-landing-async.ts +166 -0
  1046. package/src/commands-write.ts +160 -0
  1047. package/src/comment-blocks.ts +84 -0
  1048. package/src/compaction-watch.ts +259 -0
  1049. package/src/config-model-selection.ts +14 -0
  1050. package/src/config-store-write.ts +39 -0
  1051. package/src/config-store.ts +1253 -0
  1052. package/src/config.ts +939 -0
  1053. package/src/connector-boot-health.ts +27 -0
  1054. package/src/connector-paths.ts +47 -0
  1055. package/src/connectors.ts +547 -0
  1056. package/src/content-security.ts +12 -0
  1057. package/src/context-advisory.ts +279 -0
  1058. package/src/context-block-rendered-at.ts +33 -0
  1059. package/src/context-injection-channel.ts +49 -0
  1060. package/src/context-router.ts +121 -0
  1061. package/src/context-threshold-config.ts +52 -0
  1062. package/src/continuation-replay-edge.ts +30 -0
  1063. package/src/continuity-working-state.ts +107 -0
  1064. package/src/contracts.ts +109 -0
  1065. package/src/coordinator-authority.ts +100 -0
  1066. package/src/coordinator-digest-config.ts +20 -0
  1067. package/src/cosmos-events.ts +164 -0
  1068. package/src/daemon.ts +570 -0
  1069. package/src/dashboard-notifications.ts +169 -0
  1070. package/src/dashboard-presence.ts +86 -0
  1071. package/src/db/activity-async.ts +58 -0
  1072. package/src/db/activity-read-ops.ts +42 -0
  1073. package/src/db/activity-write-ops.ts +43 -0
  1074. package/src/db/activity.ts +454 -0
  1075. package/src/db/agent-card-read.ts +98 -0
  1076. package/src/db/agent-effort-state.ts +146 -0
  1077. package/src/db/agent-exit-cleanup.ts +94 -0
  1078. package/src/db/agent-exit-report.ts +33 -0
  1079. package/src/db/agent-gate-runs-write-ops.ts +7 -0
  1080. package/src/db/agent-gate-runs.ts +96 -0
  1081. package/src/db/agent-identity-archive.test-fixture.ts +12 -0
  1082. package/src/db/agent-identity-archive.ts +75 -0
  1083. package/src/db/agent-keep.ts +21 -0
  1084. package/src/db/agent-lifecycle-write-ops.ts +92 -0
  1085. package/src/db/agent-meta.ts +74 -0
  1086. package/src/db/agent-outstanding-work.ts +154 -0
  1087. package/src/db/agent-ownership-async.ts +45 -0
  1088. package/src/db/agent-ownership-read-ops.ts +12 -0
  1089. package/src/db/agent-ownership-write-ops.ts +50 -0
  1090. package/src/db/agent-ownership.ts +200 -0
  1091. package/src/db/agent-predicates.ts +64 -0
  1092. package/src/db/agent-read.ts +39 -0
  1093. package/src/db/agent-search-async.ts +21 -0
  1094. package/src/db/agent-search-read-ops.ts +8 -0
  1095. package/src/db/agent-search.ts +162 -0
  1096. package/src/db/agent-shutdown-in-flight.ts +21 -0
  1097. package/src/db/agents-async.ts +333 -0
  1098. package/src/db/agents-prune-write-op.ts +37 -0
  1099. package/src/db/agents-read-ops.ts +33 -0
  1100. package/src/db/agents-write-ops.ts +174 -0
  1101. package/src/db/agents.ts +1284 -0
  1102. package/src/db/api-budget-schema.ts +144 -0
  1103. package/src/db/api-budget-usage-migration.ts +31 -0
  1104. package/src/db/api-budget-usage.ts +40 -0
  1105. package/src/db/artifact-browse.ts +145 -0
  1106. package/src/db/artifact-retention.ts +115 -0
  1107. package/src/db/artifacts-async.ts +81 -0
  1108. package/src/db/artifacts-read-ops.ts +24 -0
  1109. package/src/db/artifacts-write-ops.ts +46 -0
  1110. package/src/db/artifacts.ts +307 -0
  1111. package/src/db/auth-identities.ts +128 -0
  1112. package/src/db/backlog.ts +172 -0
  1113. package/src/db/blackboard.ts +171 -0
  1114. package/src/db/broadcast-scope.ts +63 -0
  1115. package/src/db/broker-memory-migration.ts +71 -0
  1116. package/src/db/browser-sessions.ts +89 -0
  1117. package/src/db/budget-lineage.ts +26 -0
  1118. package/src/db/bus-outbox-read-ops.ts +29 -0
  1119. package/src/db/bus-outbox-write-ops.ts +57 -0
  1120. package/src/db/bus-prune-async.ts +16 -0
  1121. package/src/db/busy-regression.worker.ts +48 -0
  1122. package/src/db/caller-lifecycle.ts +24 -0
  1123. package/src/db/carry-pending-marker.ts +129 -0
  1124. package/src/db/carry-pending.ts +145 -0
  1125. package/src/db/channel-binding-delete.ts +15 -0
  1126. package/src/db/channel-egress-allowlist.ts +200 -0
  1127. package/src/db/channel-identity.ts +38 -0
  1128. package/src/db/channel-runtime.ts +19 -0
  1129. package/src/db/channels-async.ts +55 -0
  1130. package/src/db/channels-read-ops.ts +13 -0
  1131. package/src/db/channels-session-fence.ts +18 -0
  1132. package/src/db/channels-write-ops.ts +42 -0
  1133. package/src/db/channels.ts +654 -0
  1134. package/src/db/checkout-refresh.ts +36 -0
  1135. package/src/db/ci-gate-runs.ts +92 -0
  1136. package/src/db/ci-incidents-async.ts +76 -0
  1137. package/src/db/ci-incidents-read-ops.ts +15 -0
  1138. package/src/db/ci-incidents-write-ops.ts +57 -0
  1139. package/src/db/ci-incidents.ts +667 -0
  1140. package/src/db/ci-sha-observations-schema.ts +33 -0
  1141. package/src/db/claim-sql.ts +44 -0
  1142. package/src/db/claude-api-budget-ops.ts +15 -0
  1143. package/src/db/claude-api-budget-reconcile.ts +39 -0
  1144. package/src/db/claude-api-budget.ts +198 -0
  1145. package/src/db/claude-app-oauth.ts +74 -0
  1146. package/src/db/claude-catalog-reconcile.ts +27 -0
  1147. package/src/db/codex-reset-consumes-async.ts +9 -0
  1148. package/src/db/codex-reset-consumes-read-ops.ts +5 -0
  1149. package/src/db/codex-reset-consumes-write-ops.ts +19 -0
  1150. package/src/db/codex-reset-consumes.ts +122 -0
  1151. package/src/db/command-agent-profiles.ts +58 -0
  1152. package/src/db/command-row.ts +88 -0
  1153. package/src/db/command-terminal-status.ts +33 -0
  1154. package/src/db/command-vault-pruning.ts +30 -0
  1155. package/src/db/commands-cancel-write.ts +45 -0
  1156. package/src/db/commands-claim-admission.ts +144 -0
  1157. package/src/db/commands-effort-read.ts +58 -0
  1158. package/src/db/commands-host-land-admission.ts +106 -0
  1159. package/src/db/commands-kernel-landing.ts +268 -0
  1160. package/src/db/commands-land-occupancy.ts +40 -0
  1161. package/src/db/commands-land-wait.ts +38 -0
  1162. package/src/db/commands-landing-completeness.ts +66 -0
  1163. package/src/db/commands-landing-tuples.ts +22 -0
  1164. package/src/db/commands-landing.ts +1046 -0
  1165. package/src/db/commands-leaseless-sweep.ts +72 -0
  1166. package/src/db/commands-list-query.ts +47 -0
  1167. package/src/db/commands-planner-stats.test-fixture.ts +97 -0
  1168. package/src/db/commands-read-ops.ts +49 -0
  1169. package/src/db/commands-scheduler-recovery.ts +71 -0
  1170. package/src/db/commands-spawn-read.ts +33 -0
  1171. package/src/db/commands-write-ops.ts +286 -0
  1172. package/src/db/config-store-write-ops.ts +58 -0
  1173. package/src/db/connection-instrumentation.ts +76 -0
  1174. package/src/db/connection.ts +532 -0
  1175. package/src/db/context-reset-carry.ts +144 -0
  1176. package/src/db/continuation-archive-purge.ts +48 -0
  1177. package/src/db/continuation-archive-search.ts +249 -0
  1178. package/src/db/continuation-archives-async.ts +59 -0
  1179. package/src/db/continuation-archives-read-ops.ts +10 -0
  1180. package/src/db/continuation-archives-write-ops.ts +15 -0
  1181. package/src/db/continuation-archives.ts +158 -0
  1182. package/src/db/continuations.ts +201 -0
  1183. package/src/db/coordinator-delivery.ts +10 -0
  1184. package/src/db/coordinator-digest-async.ts +13 -0
  1185. package/src/db/coordinator-digest-flush.ts +6 -0
  1186. package/src/db/coordinator-digest.ts +145 -0
  1187. package/src/db/coordinator-seat.ts +130 -0
  1188. package/src/db/crash-reports.ts +115 -0
  1189. package/src/db/db-error-registry.ts +290 -0
  1190. package/src/db/db-reader-worker.ts +91 -0
  1191. package/src/db/db-writer-worker.ts +66 -0
  1192. package/src/db/deferred-lineage-report-queries.ts +28 -0
  1193. package/src/db/deferred-lineage-reports.ts +44 -0
  1194. package/src/db/delivery-async.ts +102 -0
  1195. package/src/db/delivery-expiration-health.ts +97 -0
  1196. package/src/db/delivery-expiration.ts +52 -0
  1197. package/src/db/delivery-quality-async.ts +23 -0
  1198. package/src/db/delivery-quality.ts +116 -0
  1199. package/src/db/delivery-read-ops.ts +26 -0
  1200. package/src/db/delivery-report-echo.ts +53 -0
  1201. package/src/db/delivery-write-ops.ts +72 -0
  1202. package/src/db/delivery.ts +545 -0
  1203. package/src/db/deploy-events-async.ts +66 -0
  1204. package/src/db/deploy-events-read-ops.ts +25 -0
  1205. package/src/db/deploy-events-write-ops.ts +81 -0
  1206. package/src/db/deploy-events.ts +554 -0
  1207. package/src/db/deploy-task-completion.ts +48 -0
  1208. package/src/db/drive-leases.ts +165 -0
  1209. package/src/db/durable-payloads.ts +92 -0
  1210. package/src/db/fixtures/writer-shutdown.ts +28 -0
  1211. package/src/db/fts-query.ts +8 -0
  1212. package/src/db/gate-policy.ts +27 -0
  1213. package/src/db/gate-runs.ts +181 -0
  1214. package/src/db/gateway.ts +513 -0
  1215. package/src/db/generation-launch.ts +82 -0
  1216. package/src/db/guides-search.ts +18 -0
  1217. package/src/db/history-delivery-settle.ts +57 -0
  1218. package/src/db/hosts-async.ts +150 -0
  1219. package/src/db/hosts-backfill.ts +91 -0
  1220. package/src/db/hosts-read-ops.ts +21 -0
  1221. package/src/db/hosts-registration.ts +452 -0
  1222. package/src/db/hosts-views.ts +259 -0
  1223. package/src/db/hosts-write-ops.ts +94 -0
  1224. package/src/db/hosts.ts +251 -0
  1225. package/src/db/human-address.ts +6 -0
  1226. package/src/db/idle-digest.ts +54 -0
  1227. package/src/db/idle-self-care.ts +100 -0
  1228. package/src/db/inbox-async.ts +29 -0
  1229. package/src/db/inbox-read-ops.ts +8 -0
  1230. package/src/db/inbox-write-ops.ts +25 -0
  1231. package/src/db/inbox.ts +197 -0
  1232. package/src/db/index.ts +147 -0
  1233. package/src/db/injection-attempts.ts +41 -0
  1234. package/src/db/insights-read-ops.ts +12 -0
  1235. package/src/db/insights-write-ops.ts +15 -0
  1236. package/src/db/integrations.ts +297 -0
  1237. package/src/db/issue-associations.ts +136 -0
  1238. package/src/db/issue-lifecycle.ts +199 -0
  1239. package/src/db/issue-refs.ts +312 -0
  1240. package/src/db/kernel-event-log-schema.ts +14 -0
  1241. package/src/db/kernel-landing-admission.ts +15 -0
  1242. package/src/db/kernel-landing-command-authority.ts +222 -0
  1243. package/src/db/kernel-persistence-async.ts +48 -0
  1244. package/src/db/kernel-persistence-read-ops.ts +24 -0
  1245. package/src/db/kernel-persistence-write-ops.ts +43 -0
  1246. package/src/db/land-boundaries.ts +138 -0
  1247. package/src/db/land-executing.ts +147 -0
  1248. package/src/db/land-gate-attestations.ts +161 -0
  1249. package/src/db/land-incident-eligibility.ts +44 -0
  1250. package/src/db/land-queue-trace.ts +28 -0
  1251. package/src/db/land-stack.ts +80 -0
  1252. package/src/db/land-telemetry-schema.ts +50 -0
  1253. package/src/db/land-telemetry-write-ops.ts +16 -0
  1254. package/src/db/land-telemetry.ts +114 -0
  1255. package/src/db/land-withdrawal-state.ts +26 -0
  1256. package/src/db/landed-merge-evidence.ts +72 -0
  1257. package/src/db/landed-task-attribution.ts +23 -0
  1258. package/src/db/landing-audit.ts +18 -0
  1259. package/src/db/landing-controllers.ts +67 -0
  1260. package/src/db/landing-ingress-async.ts +102 -0
  1261. package/src/db/landing-ingress-read-ops.ts +8 -0
  1262. package/src/db/landing-ingress-write-ops.ts +42 -0
  1263. package/src/db/landing-ingress.ts +380 -0
  1264. package/src/db/landing-read-ops.ts +18 -0
  1265. package/src/db/landing-receipts.ts +206 -0
  1266. package/src/db/landing-schema.ts +479 -0
  1267. package/src/db/launch-facts.ts +60 -0
  1268. package/src/db/legacy-landing-publication.ts +103 -0
  1269. package/src/db/legacy-message-backfill.ts +90 -0
  1270. package/src/db/lifecycle-seq.ts +127 -0
  1271. package/src/db/lifecycle-write-window.ts +216 -0
  1272. package/src/db/lineage-pair-dedupe-sql.ts +80 -0
  1273. package/src/db/lineage-startup-captures.ts +43 -0
  1274. package/src/db/long-running-work-async.ts +12 -0
  1275. package/src/db/long-running-work-write-ops.ts +8 -0
  1276. package/src/db/long-running-work.ts +78 -0
  1277. package/src/db/macos-privacy.ts +72 -0
  1278. package/src/db/main-connection-writes.ts +44 -0
  1279. package/src/db/main-thread-state.ts +38 -0
  1280. package/src/db/maintenance-health.ts +560 -0
  1281. package/src/db/maintenance-indexes.ts +37 -0
  1282. package/src/db/maintenance-job-runs-async.ts +15 -0
  1283. package/src/db/maintenance-job-runs.ts +62 -0
  1284. package/src/db/maintenance-job-write-ops.ts +10 -0
  1285. package/src/db/maintenance-pauses.ts +224 -0
  1286. package/src/db/maintenance-worker.ts +111 -0
  1287. package/src/db/mappers.ts +422 -0
  1288. package/src/db/memory-preamble-read.ts +13 -0
  1289. package/src/db/memory-resolve.ts +209 -0
  1290. package/src/db/memory-retirement-plan.ts +31 -0
  1291. package/src/db/memory-retirement.ts +15 -0
  1292. package/src/db/merge-drain-async.ts +8 -0
  1293. package/src/db/merge-lease.ts +225 -0
  1294. package/src/db/message-claims.ts +16 -0
  1295. package/src/db/message-queries.ts +16 -0
  1296. package/src/db/message-read-mark.ts +32 -0
  1297. package/src/db/message-reads-async.ts +46 -0
  1298. package/src/db/message-reads-read-ops.ts +35 -0
  1299. package/src/db/message-reads-write-ops.ts +24 -0
  1300. package/src/db/message-reads.ts +553 -0
  1301. package/src/db/message-send-suppression.ts +58 -0
  1302. package/src/db/message-send.ts +76 -0
  1303. package/src/db/message-thread.ts +15 -0
  1304. package/src/db/message-write-ops.ts +96 -0
  1305. package/src/db/messages-async.ts +31 -0
  1306. package/src/db/messages-read-ops.ts +14 -0
  1307. package/src/db/messages.ts +1201 -0
  1308. package/src/db/migration-marker.ts +13 -0
  1309. package/src/db/migrations.ts +1761 -0
  1310. package/src/db/notification-subscriptions.ts +282 -0
  1311. package/src/db/on-loop-write-transaction.ts +34 -0
  1312. package/src/db/operator-actions-schema.ts +10 -0
  1313. package/src/db/operator-decisions.ts +180 -0
  1314. package/src/db/orchestrators-async.ts +57 -0
  1315. package/src/db/orchestrators-read-ops.ts +7 -0
  1316. package/src/db/orchestrators-write-ops.ts +52 -0
  1317. package/src/db/orchestrators.ts +485 -0
  1318. package/src/db/outbox-codec.ts +16 -0
  1319. package/src/db/pair-maintenance.ts +9 -0
  1320. package/src/db/pairs-async.ts +10 -0
  1321. package/src/db/pairs-write-ops.ts +8 -0
  1322. package/src/db/pairs.ts +264 -0
  1323. package/src/db/pending-relay-runs.ts +73 -0
  1324. package/src/db/plan-blurb-migration.ts +158 -0
  1325. package/src/db/plan-ci-blocks.ts +28 -0
  1326. package/src/db/plan-completion.ts +55 -0
  1327. package/src/db/plan-conformance.ts +104 -0
  1328. package/src/db/plan-dispatch-schema.ts +17 -0
  1329. package/src/db/plan-dispatch-store.ts +112 -0
  1330. package/src/db/plan-external.ts +79 -0
  1331. package/src/db/plan-graph-async.ts +23 -0
  1332. package/src/db/plan-graph-read-ops.ts +16 -0
  1333. package/src/db/plan-graph-write-ops.ts +37 -0
  1334. package/src/db/plan-graph.ts +403 -0
  1335. package/src/db/plan-import-schema.ts +19 -0
  1336. package/src/db/plan-import.ts +211 -0
  1337. package/src/db/plan-task-create.ts +44 -0
  1338. package/src/db/planner-stats.ts +123 -0
  1339. package/src/db/plans-async.ts +22 -0
  1340. package/src/db/plans-read-ops.ts +11 -0
  1341. package/src/db/plans-write-ops.ts +9 -0
  1342. package/src/db/plans.ts +385 -0
  1343. package/src/db/policy-runtime.ts +14 -0
  1344. package/src/db/presence-buffer.ts +111 -0
  1345. package/src/db/presence-loop.ts +58 -0
  1346. package/src/db/presence-write-ops.ts +28 -0
  1347. package/src/db/presence-write.ts +38 -0
  1348. package/src/db/profile-artifact-backfill-migration.ts +32 -0
  1349. package/src/db/profile-host-sources-migration.ts +150 -0
  1350. package/src/db/profile-legacy-project-instructions-migration.ts +41 -0
  1351. package/src/db/profile-name-case-migration.ts +46 -0
  1352. package/src/db/profile-override-migration.ts +200 -0
  1353. package/src/db/profile-project-ack-migration.ts +55 -0
  1354. package/src/db/profile-slim-migration.ts +125 -0
  1355. package/src/db/profile-slim-plan.ts +190 -0
  1356. package/src/db/project-entries-async.ts +18 -0
  1357. package/src/db/project-entries-read-ops.ts +28 -0
  1358. package/src/db/project-entries.ts +514 -0
  1359. package/src/db/project-entry-search.ts +63 -0
  1360. package/src/db/project-identity.ts +16 -0
  1361. package/src/db/project-journal.ts +256 -0
  1362. package/src/db/project-lifecycle.ts +80 -0
  1363. package/src/db/project-memory-group-migration.ts +76 -0
  1364. package/src/db/project-phantom-merge.ts +228 -0
  1365. package/src/db/project-root-schema.ts +30 -0
  1366. package/src/db/project-trust-approvals.ts +98 -0
  1367. package/src/db/projects-async.ts +50 -0
  1368. package/src/db/projects-read-ops.ts +59 -0
  1369. package/src/db/projects-write-ops.ts +74 -0
  1370. package/src/db/projects.ts +629 -0
  1371. package/src/db/prompt-templates-schema.ts +23 -0
  1372. package/src/db/prompt-templates.ts +138 -0
  1373. package/src/db/prompt-version-migration.ts +115 -0
  1374. package/src/db/prompt-versions-ops.ts +16 -0
  1375. package/src/db/prompt-versions.ts +167 -0
  1376. package/src/db/provider-catalog-async.ts +31 -0
  1377. package/src/db/provider-catalog-read-ops.ts +8 -0
  1378. package/src/db/provider-catalog-write-ops.ts +16 -0
  1379. package/src/db/provider-config-history.ts +49 -0
  1380. package/src/db/provider-config-secrets.ts +117 -0
  1381. package/src/db/provider-flap-messages-async.ts +6 -0
  1382. package/src/db/provider-flap-messages-write-ops.ts +12 -0
  1383. package/src/db/provider-flap-messages.ts +19 -0
  1384. package/src/db/provider-quota-advisory-types.ts +39 -0
  1385. package/src/db/provider-quota-burn.ts +322 -0
  1386. package/src/db/provider-quota-effect-occurrences.ts +13 -0
  1387. package/src/db/provider-quota-lease-write-ops.ts +23 -0
  1388. package/src/db/provider-quota-leases-async.ts +35 -0
  1389. package/src/db/provider-quota-leases.ts +174 -0
  1390. package/src/db/provider-quota-matrix-cache.ts +85 -0
  1391. package/src/db/provider-quota-matrix-fetch.ts +85 -0
  1392. package/src/db/provider-quota-merge.ts +90 -0
  1393. package/src/db/provider-quota-notification-write.ts +98 -0
  1394. package/src/db/provider-quota-prune.ts +35 -0
  1395. package/src/db/provider-quota-read-async.ts +77 -0
  1396. package/src/db/provider-quota-read-ops.ts +56 -0
  1397. package/src/db/provider-quota-recipients.ts +38 -0
  1398. package/src/db/provider-quota-state.ts +139 -0
  1399. package/src/db/provider-quota-visibility.ts +22 -0
  1400. package/src/db/provider-quota-write-ops.ts +69 -0
  1401. package/src/db/provider-quotas.ts +726 -0
  1402. package/src/db/provider-secret-scrub.ts +64 -0
  1403. package/src/db/provisioning-assets-migration.ts +85 -0
  1404. package/src/db/provisioning-async.ts +116 -0
  1405. package/src/db/provisioning-callmux.ts +184 -0
  1406. package/src/db/provisioning-github-api.ts +16 -0
  1407. package/src/db/provisioning-github-import-target.ts +29 -0
  1408. package/src/db/provisioning-mcp-validation.ts +103 -0
  1409. package/src/db/provisioning-read-ops.ts +23 -0
  1410. package/src/db/provisioning-registry.ts +1122 -0
  1411. package/src/db/provisioning-resolve.ts +321 -0
  1412. package/src/db/provisioning-write-ops.ts +43 -0
  1413. package/src/db/qa-skill-seed.ts +27 -0
  1414. package/src/db/quota-lease-busy.worker.ts +62 -0
  1415. package/src/db/read-op-marshaling-fixtures.ts +724 -0
  1416. package/src/db/read-ops.ts +266 -0
  1417. package/src/db/reader-pool.ts +252 -0
  1418. package/src/db/recipe-read-ops.ts +15 -0
  1419. package/src/db/recipe-write-ops.ts +68 -0
  1420. package/src/db/reply-obligations.ts +265 -0
  1421. package/src/db/report-suppression.ts +126 -0
  1422. package/src/db/restart-epoch-admin-async.ts +14 -0
  1423. package/src/db/restart-epoch-admin.ts +67 -0
  1424. package/src/db/restart-epoch-admission.ts +114 -0
  1425. package/src/db/restart-epoch-async.ts +80 -0
  1426. package/src/db/restart-epoch-begin.ts +177 -0
  1427. package/src/db/restart-epoch-read-ops.ts +40 -0
  1428. package/src/db/restart-epoch-release.ts +248 -0
  1429. package/src/db/restart-epoch-write-ops.ts +117 -0
  1430. package/src/db/restart-epoch.test-fixture.ts +37 -0
  1431. package/src/db/restart-epoch.ts +623 -0
  1432. package/src/db/restart-sensitive.ts +81 -0
  1433. package/src/db/retention.ts +423 -0
  1434. package/src/db/review-ref-cleanups.ts +306 -0
  1435. package/src/db/routing-policy.ts +64 -0
  1436. package/src/db/scheduled-timer-projection.ts +123 -0
  1437. package/src/db/scheduled-timer-quota-chaos-worker.ts +84 -0
  1438. package/src/db/scheduled-timers.ts +521 -0
  1439. package/src/db/schema.ts +1472 -0
  1440. package/src/db/scoped-message-reads.ts +31 -0
  1441. package/src/db/secrets-broker-async.ts +31 -0
  1442. package/src/db/secrets-broker-read-ops.ts +8 -0
  1443. package/src/db/secrets-broker-write-ops.ts +23 -0
  1444. package/src/db/secrets-broker.ts +221 -0
  1445. package/src/db/secrets-vault-import.ts +37 -0
  1446. package/src/db/secrets-vault-key-lifecycle.ts +64 -0
  1447. package/src/db/secrets-vault-metadata.ts +37 -0
  1448. package/src/db/secrets-vault-migration.ts +53 -0
  1449. package/src/db/secrets-vault-write.ts +97 -0
  1450. package/src/db/secrets-vault.ts +69 -0
  1451. package/src/db/self-effort-permissions.ts +50 -0
  1452. package/src/db/service-access-read-ops.ts +10 -0
  1453. package/src/db/services-async.ts +29 -0
  1454. package/src/db/services-read-ops.ts +134 -0
  1455. package/src/db/services-write-ops.ts +71 -0
  1456. package/src/db/shared.ts +7 -0
  1457. package/src/db/shipping-board-async.ts +6 -0
  1458. package/src/db/shipping-board.ts +319 -0
  1459. package/src/db/shipping-stats-async.ts +24 -0
  1460. package/src/db/shipping-stats-histogram.ts +45 -0
  1461. package/src/db/shipping-stats-schema.ts +8 -0
  1462. package/src/db/shipping-stats.ts +265 -0
  1463. package/src/db/snapshot-ledger-prune.ts +53 -0
  1464. package/src/db/spawn-budget.ts +145 -0
  1465. package/src/db/spawn-command-busy.worker.ts +71 -0
  1466. package/src/db/spawn-delegation-state.ts +124 -0
  1467. package/src/db/spawn-delegation.ts +114 -0
  1468. package/src/db/spawn-host-cap.ts +29 -0
  1469. package/src/db/spawn-in-flight-count.ts +37 -0
  1470. package/src/db/spawn-in-flight.ts +15 -0
  1471. package/src/db/spawn-process-evidence.ts +68 -0
  1472. package/src/db/spawn-project-target.ts +57 -0
  1473. package/src/db/spawn-registration-confirmed-backfill.ts +71 -0
  1474. package/src/db/spawn-request-id-migration.ts +36 -0
  1475. package/src/db/spawn-request-id.ts +35 -0
  1476. package/src/db/spawn-request-reuse.ts +28 -0
  1477. package/src/db/spawn-tree-cleanup.ts +89 -0
  1478. package/src/db/spawn-tree.ts +29 -0
  1479. package/src/db/sql-audit-indexes.ts +77 -0
  1480. package/src/db/stalled-message-delivery.ts +52 -0
  1481. package/src/db/startup-write-lock.ts +36 -0
  1482. package/src/db/stats-async.ts +235 -0
  1483. package/src/db/stats-health-read-model.ts +225 -0
  1484. package/src/db/stats-read-ops.ts +25 -0
  1485. package/src/db/stats.ts +633 -0
  1486. package/src/db/target-host.ts +25 -0
  1487. package/src/db/task-async.ts +165 -0
  1488. package/src/db/task-comment-through-async.ts +14 -0
  1489. package/src/db/task-comment-through-read-ops.ts +4 -0
  1490. package/src/db/task-comment-through-write-ops.ts +7 -0
  1491. package/src/db/task-comment-through.ts +123 -0
  1492. package/src/db/task-core.ts +44 -0
  1493. package/src/db/task-deliverables-async.ts +60 -0
  1494. package/src/db/task-deliverables-read-ops.ts +4 -0
  1495. package/src/db/task-deliverables-write-ops.ts +37 -0
  1496. package/src/db/task-deliverables.ts +387 -0
  1497. package/src/db/task-dependency-cycle.worker.ts +43 -0
  1498. package/src/db/task-detail-projection.ts +91 -0
  1499. package/src/db/task-entity-async.ts +252 -0
  1500. package/src/db/task-entity-read-ops.ts +51 -0
  1501. package/src/db/task-entity-write-ops.ts +197 -0
  1502. package/src/db/task-entity.ts +1143 -0
  1503. package/src/db/task-execution.ts +20 -0
  1504. package/src/db/task-issue-relation.ts +23 -0
  1505. package/src/db/task-issue-source.ts +46 -0
  1506. package/src/db/task-land-withdraw-async.ts +10 -0
  1507. package/src/db/task-land-withdraw-read-ops.ts +13 -0
  1508. package/src/db/task-land-withdraw-read.ts +47 -0
  1509. package/src/db/task-land-withdraw-write-ops.ts +31 -0
  1510. package/src/db/task-land-withdraw.ts +423 -0
  1511. package/src/db/task-list.ts +113 -0
  1512. package/src/db/task-maintenance.ts +25 -0
  1513. package/src/db/task-memory-async.ts +19 -0
  1514. package/src/db/task-memory-read-ops.ts +9 -0
  1515. package/src/db/task-memory-write-ops.ts +23 -0
  1516. package/src/db/task-memory.ts +170 -0
  1517. package/src/db/task-owner.ts +126 -0
  1518. package/src/db/task-read-ops.ts +44 -0
  1519. package/src/db/task-review-hold-async.ts +20 -0
  1520. package/src/db/task-review-hold-delivery.ts +58 -0
  1521. package/src/db/task-review-hold-write-ops.ts +26 -0
  1522. package/src/db/task-review-hold.ts +615 -0
  1523. package/src/db/task-state-reconcile-async.ts +12 -0
  1524. package/src/db/task-state-reconcile.ts +163 -0
  1525. package/src/db/task-validation.ts +71 -0
  1526. package/src/db/task-write-ops.ts +145 -0
  1527. package/src/db/tasks.ts +528 -0
  1528. package/src/db/team-epics.ts +37 -0
  1529. package/src/db/team-idle.ts +35 -0
  1530. package/src/db/team-project.ts +69 -0
  1531. package/src/db/team-spawn-delegation-read.ts +36 -0
  1532. package/src/db/team-spawn-delegation.ts +49 -0
  1533. package/src/db/teams-async.ts +58 -0
  1534. package/src/db/teams-read-ops.ts +27 -0
  1535. package/src/db/teams-write-ops.ts +17 -0
  1536. package/src/db/teams.ts +504 -0
  1537. package/src/db/terminal-events.ts +113 -0
  1538. package/src/db/timer-async.ts +523 -0
  1539. package/src/db/timer-cutover-core.ts +545 -0
  1540. package/src/db/timer-cutover-report-read-ops.ts +211 -0
  1541. package/src/db/timer-cutover-write-ops.ts +275 -0
  1542. package/src/db/timer-ingress-payload.ts +160 -0
  1543. package/src/db/timer-ingress-read-ops.ts +39 -0
  1544. package/src/db/timer-ingress-request-keys.ts +282 -0
  1545. package/src/db/timer-ingress-write-ops.ts +145 -0
  1546. package/src/db/timer-ingress.ts +515 -0
  1547. package/src/db/timer-message-cutover.ts +322 -0
  1548. package/src/db/timer-message-fire-deadletter.ts +136 -0
  1549. package/src/db/timer-message-fire.ts +209 -0
  1550. package/src/db/timer-message-flip-chaos-worker.ts +89 -0
  1551. package/src/db/timer-message-flip-consistency.ts +147 -0
  1552. package/src/db/timer-message-flip.ts +676 -0
  1553. package/src/db/timer-message-participant.ts +138 -0
  1554. package/src/db/timer-migrate-input.ts +92 -0
  1555. package/src/db/timer-operator-async.ts +177 -0
  1556. package/src/db/timer-operator-read-ops.ts +21 -0
  1557. package/src/db/timer-operator-stage10.ts +119 -0
  1558. package/src/db/timer-operator-write-ops.ts +102 -0
  1559. package/src/db/timer-operator.ts +393 -0
  1560. package/src/db/timer-read-ops.ts +147 -0
  1561. package/src/db/timer-transfer-errors.ts +10 -0
  1562. package/src/db/timer-transfer-write-ops.ts +39 -0
  1563. package/src/db/timer-verifier-schema.ts +29 -0
  1564. package/src/db/timer-verifier.ts +379 -0
  1565. package/src/db/timer-write-ops.ts +277 -0
  1566. package/src/db/token-db-write-ops.ts +92 -0
  1567. package/src/db/token-standing.ts +84 -0
  1568. package/src/db/token-usage-read-ops.ts +8 -0
  1569. package/src/db/token-usage-write-ops.ts +35 -0
  1570. package/src/db/token-usage.ts +338 -0
  1571. package/src/db/tool-groups-empty-migration.ts +59 -0
  1572. package/src/db/urgent-intake.ts +30 -0
  1573. package/src/db/user-invites.ts +107 -0
  1574. package/src/db/user-settings-read-ops.ts +19 -0
  1575. package/src/db/user-settings-write-ops.ts +42 -0
  1576. package/src/db/users.ts +173 -0
  1577. package/src/db/vault-backup.ts +59 -0
  1578. package/src/db/vault-expiry.ts +71 -0
  1579. package/src/db/vault-health.ts +99 -0
  1580. package/src/db/vault-token-launch.ts +77 -0
  1581. package/src/db/vault-token-ops.ts +14 -0
  1582. package/src/db/vault-tokens.ts +101 -0
  1583. package/src/db/viewer-scope.ts +117 -0
  1584. package/src/db/wal-checkpointer-worker.ts +48 -0
  1585. package/src/db/wal-checkpointer.ts +107 -0
  1586. package/src/db/wal-index.ts +53 -0
  1587. package/src/db/wal-live-log.ts +68 -0
  1588. package/src/db/wal-reclaim-async.ts +45 -0
  1589. package/src/db/wal-reclaim.ts +140 -0
  1590. package/src/db/web-tool-call-ops.ts +15 -0
  1591. package/src/db/web-tool-calls.ts +87 -0
  1592. package/src/db/withdraw-land-error.ts +18 -0
  1593. package/src/db/work-evidence.ts +43 -0
  1594. package/src/db/workflow-budget.ts +44 -0
  1595. package/src/db/workflow-contact.ts +173 -0
  1596. package/src/db/workflow-execution.ts +10 -0
  1597. package/src/db/workflow-journal-async.ts +64 -0
  1598. package/src/db/workflow-journal-prune.ts +71 -0
  1599. package/src/db/workflow-journal-read-ops.ts +21 -0
  1600. package/src/db/workflow-journal-schema.ts +9 -0
  1601. package/src/db/workflow-journal-write-ops.ts +33 -0
  1602. package/src/db/workflow-journal.ts +324 -0
  1603. package/src/db/workflow-spawn-quota.ts +57 -0
  1604. package/src/db/workflow-stats-read-ops.ts +177 -0
  1605. package/src/db/workflow-step-tasks.ts +74 -0
  1606. package/src/db/workflow-task-read-ops.ts +187 -0
  1607. package/src/db/workspace-land-state.ts +65 -0
  1608. package/src/db/workspace-merge-hold.ts +28 -0
  1609. package/src/db/workspace-persistence.ts +77 -0
  1610. package/src/db/workspace-rekey-write-ops.ts +11 -0
  1611. package/src/db/workspace-rekey.ts +148 -0
  1612. package/src/db/workspace-steward-cancel.ts +85 -0
  1613. package/src/db/workspace-steward-fence.ts +30 -0
  1614. package/src/db/workspace-write-ops.ts +26 -0
  1615. package/src/db/workspace-writes-async.ts +46 -0
  1616. package/src/db/workspace-writes.ts +196 -0
  1617. package/src/db/workspaces.ts +617 -0
  1618. package/src/db/write-ops.ts +594 -0
  1619. package/src/db/writer-drain.ts +27 -0
  1620. package/src/db/writer-fault-seam.ts +101 -0
  1621. package/src/db/writer-gateway.ts +840 -0
  1622. package/src/db/writer-ledger.ts +56 -0
  1623. package/src/db.ts +4 -0
  1624. package/src/deploy-executor.ts +139 -0
  1625. package/src/dev.ts +541 -0
  1626. package/src/dispatch-availability.ts +55 -0
  1627. package/src/dispatch-match.ts +21 -0
  1628. package/src/ephemeral/host-landing-slots-proof-worker.ts +45 -0
  1629. package/src/ephemeral/index.ts +58 -0
  1630. package/src/ephemeral/instance.ts +832 -0
  1631. package/src/ephemeral/landing-ingress-proof-worker.ts +30 -0
  1632. package/src/ephemeral/ports.ts +40 -0
  1633. package/src/ephemeral/profile.ts +323 -0
  1634. package/src/ephemeral/rehearsal-stamps.ts +149 -0
  1635. package/src/ephemeral/rehearsal.ts +213 -0
  1636. package/src/ephemeral/snapshot-kernel.ts +41 -0
  1637. package/src/ephemeral/snapshot.ts +753 -0
  1638. package/src/ephemeral/sweep.ts +40 -0
  1639. package/src/event-loop-lag.ts +584 -0
  1640. package/src/event-loop-yield.ts +27 -0
  1641. package/src/events.ts +140 -0
  1642. package/src/execution-mode.ts +63 -0
  1643. package/src/fleet-convergence.ts +123 -0
  1644. package/src/gate-resolver.ts +151 -0
  1645. package/src/gate-run-capture.ts +71 -0
  1646. package/src/git-sha.ts +58 -0
  1647. package/src/guides.ts +73 -0
  1648. package/src/host/capacity.ts +79 -0
  1649. package/src/host/gate-capacity-alert.ts +90 -0
  1650. package/src/host/identity.ts +128 -0
  1651. package/src/host/presentation.ts +234 -0
  1652. package/src/host/pressure-details.ts +89 -0
  1653. package/src/host/pressure.ts +216 -0
  1654. package/src/host/state.ts +132 -0
  1655. package/src/host/utilization-buffer.ts +71 -0
  1656. package/src/host-awareness.ts +57 -0
  1657. package/src/host-identity.ts +39 -0
  1658. package/src/host-provider-enablement.ts +75 -0
  1659. package/src/host-provider-store.ts +102 -0
  1660. package/src/host-tools.ts +39 -0
  1661. package/src/http-body.ts +49 -0
  1662. package/src/http-compression.ts +16 -0
  1663. package/src/hub-metrics-report.ts +67 -0
  1664. package/src/hub-metrics.ts +166 -0
  1665. package/src/idle-digest-config.ts +40 -0
  1666. package/src/idle-self-care.ts +58 -0
  1667. package/src/index.ts +35 -0
  1668. package/src/injection-sweep-pacing.ts +24 -0
  1669. package/src/insights-async.ts +16 -0
  1670. package/src/insights-db.ts +188 -0
  1671. package/src/internal-spawn-model.ts +18 -0
  1672. package/src/invite-link.ts +11 -0
  1673. package/src/issue-tracker/adapter.ts +58 -0
  1674. package/src/issue-tracker/github.ts +342 -0
  1675. package/src/issue-tracker/index.ts +12 -0
  1676. package/src/issue-tracker/registry.ts +26 -0
  1677. package/src/journal-preamble.ts +350 -0
  1678. package/src/kernel-correlation.ts +28 -0
  1679. package/src/land-authorization.ts +73 -0
  1680. package/src/land-block.ts +59 -0
  1681. package/src/land-failure-event-key.ts +8 -0
  1682. package/src/land-gate-failure-routing.ts +69 -0
  1683. package/src/land-gate-notifications.ts +173 -0
  1684. package/src/land-gate-queue-progress.ts +54 -0
  1685. package/src/land-gates-source.ts +126 -0
  1686. package/src/land-gates.ts +29 -0
  1687. package/src/land-lifecycle-drives.ts +15 -0
  1688. package/src/land-settle-dispatch.ts +134 -0
  1689. package/src/land-stack-depth.ts +11 -0
  1690. package/src/land-telemetry.ts +40 -0
  1691. package/src/landing-base-ref.ts +3 -0
  1692. package/src/landing-host-safety.ts +38 -0
  1693. package/src/landing-lane-key.ts +74 -0
  1694. package/src/launch-mode-support.ts +11 -0
  1695. package/src/launch-mode.ts +58 -0
  1696. package/src/legacy-landing.test-fixture.ts +56 -0
  1697. package/src/lifecycle-context-pressure.ts +134 -0
  1698. package/src/lifecycle-manager.ts +831 -0
  1699. package/src/lifecycle-signal-registry.ts +87 -0
  1700. package/src/live-runs-section.ts +38 -0
  1701. package/src/loop-block-attribution.ts +442 -0
  1702. package/src/loop-block-regression-alarm.ts +156 -0
  1703. package/src/loop-task-stamps.ts +62 -0
  1704. package/src/main-thread-clock.ts +95 -0
  1705. package/src/maintenance/agent-identity-archive-job.ts +15 -0
  1706. package/src/maintenance/artifact-checkout-gc-job.ts +14 -0
  1707. package/src/maintenance/artifact-checkout-gc.ts +33 -0
  1708. package/src/maintenance/artifact-sweep.ts +23 -0
  1709. package/src/maintenance/breaker.ts +200 -0
  1710. package/src/maintenance/cd-watcher.ts +176 -0
  1711. package/src/maintenance/checkout-refresh.ts +83 -0
  1712. package/src/maintenance/ci-monitor.ts +14 -0
  1713. package/src/maintenance/claude-api-budget-job.ts +16 -0
  1714. package/src/maintenance/constants.ts +134 -0
  1715. package/src/maintenance/continuation-archive-search-job.ts +27 -0
  1716. package/src/maintenance/critical-job-watchdog.ts +252 -0
  1717. package/src/maintenance/db-planner-stats-job.ts +19 -0
  1718. package/src/maintenance/db-wal-reclaim-job.ts +82 -0
  1719. package/src/maintenance/events.ts +28 -0
  1720. package/src/maintenance/gate-capacity-sample-job.ts +16 -0
  1721. package/src/maintenance/index.ts +10 -0
  1722. package/src/maintenance/jobs.ts +857 -0
  1723. package/src/maintenance/long-running-work.ts +41 -0
  1724. package/src/maintenance/orphaned-sessions.ts +126 -0
  1725. package/src/maintenance/pauses.ts +174 -0
  1726. package/src/maintenance/provider-secret-scrub-job.ts +16 -0
  1727. package/src/maintenance/queued-message-expiration.ts +23 -0
  1728. package/src/maintenance/red-main-controller-job.ts +22 -0
  1729. package/src/maintenance/reply-obligation-parity-job.ts +27 -0
  1730. package/src/maintenance/restart-epoch-hold-health.ts +62 -0
  1731. package/src/maintenance/run-registry.ts +194 -0
  1732. package/src/maintenance/scheduler.ts +778 -0
  1733. package/src/maintenance/service-access-job.ts +31 -0
  1734. package/src/maintenance/shipping-stats-rollup-job.ts +23 -0
  1735. package/src/maintenance/snapshot-ledger-prune-job.ts +17 -0
  1736. package/src/maintenance/stalled-delivery-pager.ts +125 -0
  1737. package/src/maintenance/steward-handback.ts +11 -0
  1738. package/src/maintenance/task-state-reconcile-job.ts +22 -0
  1739. package/src/maintenance/teams.ts +426 -0
  1740. package/src/maintenance/types.ts +124 -0
  1741. package/src/maintenance/vault-backup-job.ts +34 -0
  1742. package/src/maintenance/vault-expiry-job.ts +29 -0
  1743. package/src/maintenance/web-tool-call-prune-job.ts +13 -0
  1744. package/src/maintenance/workflow-backstop-job.ts +12 -0
  1745. package/src/maintenance/workflow-journal-prune-job.ts +29 -0
  1746. package/src/maintenance/workspaces.ts +784 -0
  1747. package/src/maintenance.ts +1 -0
  1748. package/src/managed-policy-escalation.ts +123 -0
  1749. package/src/managed-policy.ts +236 -0
  1750. package/src/managed-provider-gate.ts +27 -0
  1751. package/src/managed-spawn-reservation.ts +23 -0
  1752. package/src/markdown-frontmatter.ts +14 -0
  1753. package/src/mcp/activity-output.ts +57 -0
  1754. package/src/mcp/artifact-upload.ts +53 -0
  1755. package/src/mcp/context-output.ts +73 -0
  1756. package/src/mcp/dispatch-shape-schema.ts +13 -0
  1757. package/src/mcp/guides.ts +33 -0
  1758. package/src/mcp/http.ts +27 -0
  1759. package/src/mcp/identity-projection.ts +121 -0
  1760. package/src/mcp/identity.ts +235 -0
  1761. package/src/mcp/index.ts +355 -0
  1762. package/src/mcp/issue-selector-schema.ts +12 -0
  1763. package/src/mcp/message-read.ts +87 -0
  1764. package/src/mcp/output-descriptions.ts +72 -0
  1765. package/src/mcp/output-levels.ts +71 -0
  1766. package/src/mcp/output-projection.ts +88 -0
  1767. package/src/mcp/plan-presentation.ts +166 -0
  1768. package/src/mcp/presentation-values.ts +11 -0
  1769. package/src/mcp/presentation.ts +653 -0
  1770. package/src/mcp/project-entry-search-schema.ts +7 -0
  1771. package/src/mcp/prompts.ts +36 -0
  1772. package/src/mcp/runtime-output.ts +84 -0
  1773. package/src/mcp/schema-budget.ts +28 -0
  1774. package/src/mcp/self-care-visibility.ts +23 -0
  1775. package/src/mcp/service-access.ts +18 -0
  1776. package/src/mcp/spawn-targets-matrix.ts +68 -0
  1777. package/src/mcp/spawn-targets.test-fixture.ts +21 -0
  1778. package/src/mcp/task-validation-presentation.ts +19 -0
  1779. package/src/mcp/tool-generation.ts +8 -0
  1780. package/src/mcp/tool-groups.ts +136 -0
  1781. package/src/mcp/tools-artifacts.ts +82 -0
  1782. package/src/mcp/tools-messaging.ts +541 -0
  1783. package/src/mcp/tools-permission.ts +88 -0
  1784. package/src/mcp/tools-run.ts +73 -0
  1785. package/src/mcp/tools-scheduler.ts +156 -0
  1786. package/src/mcp/tools-spawn.ts +418 -0
  1787. package/src/mcp/tools-web-tool-calls.ts +28 -0
  1788. package/src/mcp/tools-workspace.ts +260 -0
  1789. package/src/mcp/types.ts +68 -0
  1790. package/src/mcp/validation.ts +66 -0
  1791. package/src/mcp-agent-action.ts +96 -0
  1792. package/src/mcp-agent-keep.ts +37 -0
  1793. package/src/mcp-backlog-tools.ts +137 -0
  1794. package/src/mcp-blackboard-tools.ts +131 -0
  1795. package/src/mcp-channel-binding-tools.ts +27 -0
  1796. package/src/mcp-claude-api-budget.ts +35 -0
  1797. package/src/mcp-codex-reset.ts +43 -0
  1798. package/src/mcp-decision-tools.ts +96 -0
  1799. package/src/mcp-dispatch-tools.ts +142 -0
  1800. package/src/mcp-egress-tools.ts +168 -0
  1801. package/src/mcp-errors.ts +7 -0
  1802. package/src/mcp-host-tools.ts +61 -0
  1803. package/src/mcp-interrupt-agent.ts +47 -0
  1804. package/src/mcp-issue-activity-tools.ts +114 -0
  1805. package/src/mcp-issue-association-tools.ts +103 -0
  1806. package/src/mcp-issue-lifecycle-tools.ts +49 -0
  1807. package/src/mcp-issue-ref-tools.ts +214 -0
  1808. package/src/mcp-maintenance-tools.ts +113 -0
  1809. package/src/mcp-merge-tools.ts +66 -0
  1810. package/src/mcp-notification-subscription-tools.ts +297 -0
  1811. package/src/mcp-output-levels.test-fixture.ts +95 -0
  1812. package/src/mcp-plan-tools.ts +347 -0
  1813. package/src/mcp-profile-trust-tools.ts +47 -0
  1814. package/src/mcp-project-journal-tools.ts +160 -0
  1815. package/src/mcp-project-tools.ts +420 -0
  1816. package/src/mcp-provider-catalog.ts +9 -0
  1817. package/src/mcp-release-tools.ts +33 -0
  1818. package/src/mcp-routing-policy-tools.ts +35 -0
  1819. package/src/mcp-secrets-tools.ts +87 -0
  1820. package/src/mcp-task-deliver-tools.ts +166 -0
  1821. package/src/mcp-task-land-withdraw-tools.ts +49 -0
  1822. package/src/mcp-task-memory-tools.ts +119 -0
  1823. package/src/mcp-task-review-hold-tools.ts +57 -0
  1824. package/src/mcp-task-tools.ts +342 -0
  1825. package/src/mcp-task-validation-tools.ts +30 -0
  1826. package/src/mcp-task-weave-tools.ts +63 -0
  1827. package/src/mcp-team-template-tools.ts +141 -0
  1828. package/src/mcp-team-tools.ts +197 -0
  1829. package/src/mcp-tool-allowlist.ts +88 -0
  1830. package/src/mcp-workflow-tools.ts +158 -0
  1831. package/src/mcp.ts +1 -0
  1832. package/src/memory-admission-rank.ts +55 -0
  1833. package/src/memory-area-injection.ts +216 -0
  1834. package/src/memory-boundary-capture.ts +206 -0
  1835. package/src/memory-entry-safety.ts +28 -0
  1836. package/src/memory-inject-filter.ts +190 -0
  1837. package/src/memory-injection.ts +954 -0
  1838. package/src/memory-preamble-admission.ts +158 -0
  1839. package/src/memory-preamble-async.ts +13 -0
  1840. package/src/memory-preamble.ts +1142 -0
  1841. package/src/memory-retirement.ts +11 -0
  1842. package/src/memory-seam.ts +273 -0
  1843. package/src/memory-tokens.ts +91 -0
  1844. package/src/merge-drain.ts +101 -0
  1845. package/src/merge-pause-maintenance.ts +19 -0
  1846. package/src/message-visibility.ts +50 -0
  1847. package/src/messaging-policy.ts +94 -0
  1848. package/src/native-memory.ts +59 -0
  1849. package/src/notification-prefs.ts +25 -0
  1850. package/src/notification-role-policy.ts +14 -0
  1851. package/src/notification-router.ts +329 -0
  1852. package/src/notification-rules.ts +390 -0
  1853. package/src/notification-settings-store.ts +47 -0
  1854. package/src/notification-settings.ts +166 -0
  1855. package/src/notification-subscription-rules.ts +11 -0
  1856. package/src/notification-types.ts +312 -0
  1857. package/src/notify.ts +55 -0
  1858. package/src/observed-reset-boundary.ts +23 -0
  1859. package/src/observed-reset-refresh.ts +21 -0
  1860. package/src/operator-alarm.ts +41 -0
  1861. package/src/operator-decisions-section.ts +29 -0
  1862. package/src/orchestrator-lookup.ts +29 -0
  1863. package/src/orchestrator-self-report-authz.ts +34 -0
  1864. package/src/package-pack.ts +246 -0
  1865. package/src/post-bind-startup.ts +58 -0
  1866. package/src/process-guard.ts +31 -0
  1867. package/src/profile-cells.ts +305 -0
  1868. package/src/profile-effective-survey.ts +121 -0
  1869. package/src/profile-host-sources.ts +73 -0
  1870. package/src/profile-instruction-blocks.ts +11 -0
  1871. package/src/profile-project-validation.ts +23 -0
  1872. package/src/profile-provider-options.ts +59 -0
  1873. package/src/profile-role-templates.ts +26 -0
  1874. package/src/profile-workflow-policy.ts +14 -0
  1875. package/src/project-claudemd-sweep.ts +176 -0
  1876. package/src/project-file-source.ts +54 -0
  1877. package/src/project-ingest.ts +195 -0
  1878. package/src/project-instructions.ts +700 -0
  1879. package/src/project-mcp.ts +18 -0
  1880. package/src/project-role-assets.ts +109 -0
  1881. package/src/project-roles-validate.ts +53 -0
  1882. package/src/project-roles.ts +364 -0
  1883. package/src/project-settings.ts +5 -0
  1884. package/src/project-skills.ts +5 -0
  1885. package/src/project-toolchain.ts +58 -0
  1886. package/src/project-trust-fingerprint.ts +174 -0
  1887. package/src/project-trust.ts +262 -0
  1888. package/src/project-workflows.ts +185 -0
  1889. package/src/prompt-resolver.ts +697 -0
  1890. package/src/prompt-template-fallback.ts +15 -0
  1891. package/src/prompt-version-errors.ts +13 -0
  1892. package/src/provider-catalog-store.ts +393 -0
  1893. package/src/provider-config-store.ts +308 -0
  1894. package/src/provider-enablement.ts +36 -0
  1895. package/src/provider-home-gc.ts +58 -0
  1896. package/src/provider-model-seed.ts +18 -0
  1897. package/src/provider-quota-async.ts +152 -0
  1898. package/src/provider-quota-config-store.ts +60 -0
  1899. package/src/provider-secrets.test-fixture.ts +34 -0
  1900. package/src/provider-state.ts +93 -0
  1901. package/src/provider-timeline-event.ts +76 -0
  1902. package/src/quota-advisory.ts +359 -0
  1903. package/src/quota-band-delivery.ts +13 -0
  1904. package/src/quota-band-projection.ts +149 -0
  1905. package/src/quota-band-transition.ts +316 -0
  1906. package/src/quota-pacing.ts +46 -0
  1907. package/src/quota-threshold-config.ts +46 -0
  1908. package/src/quota.ts +61 -0
  1909. package/src/ratchet-files.ts +202 -0
  1910. package/src/recipe-async.ts +50 -0
  1911. package/src/recipe-db.ts +260 -0
  1912. package/src/recipe-loader.ts +132 -0
  1913. package/src/recipe-runner.ts +259 -0
  1914. package/src/recipe-validator.ts +107 -0
  1915. package/src/relay-event-drain.ts +39 -0
  1916. package/src/relay-host-locality.ts +20 -0
  1917. package/src/relay-run-lease.ts +17 -0
  1918. package/src/repo-config-source.ts +209 -0
  1919. package/src/report-verbosity.ts +5 -0
  1920. package/src/restart-epoch-deploy-hold.ts +221 -0
  1921. package/src/retention-config-store.ts +32 -0
  1922. package/src/retention-config.ts +70 -0
  1923. package/src/reviewer-pipeline.ts +238 -0
  1924. package/src/routes/_route.ts +70 -0
  1925. package/src/routes/_shared.ts +513 -0
  1926. package/src/routes/activity.ts +70 -0
  1927. package/src/routes/agent-effort.ts +69 -0
  1928. package/src/routes/agent-keep.ts +27 -0
  1929. package/src/routes/agent-profiles.ts +169 -0
  1930. package/src/routes/agent-reporting.ts +19 -0
  1931. package/src/routes/agent-self-effort.ts +51 -0
  1932. package/src/routes/agent-sessions.ts +650 -0
  1933. package/src/routes/agent-sharing.ts +23 -0
  1934. package/src/routes/agents-spawn.ts +258 -0
  1935. package/src/routes/agents.ts +452 -0
  1936. package/src/routes/artifacts.ts +340 -0
  1937. package/src/routes/auth.ts +123 -0
  1938. package/src/routes/authority-audit.ts +14 -0
  1939. package/src/routes/automations.ts +83 -0
  1940. package/src/routes/backlog.ts +112 -0
  1941. package/src/routes/blackboard.ts +54 -0
  1942. package/src/routes/browser.ts +73 -0
  1943. package/src/routes/channel-binding-delete.ts +21 -0
  1944. package/src/routes/channel-output.ts +17 -0
  1945. package/src/routes/claude-api-budget.ts +65 -0
  1946. package/src/routes/commands-listing.ts +50 -0
  1947. package/src/routes/commands.ts +586 -0
  1948. package/src/routes/config.ts +75 -0
  1949. package/src/routes/connectors.ts +108 -0
  1950. package/src/routes/context-resets.ts +35 -0
  1951. package/src/routes/continuation-archives.ts +37 -0
  1952. package/src/routes/coordinator-teams.ts +14 -0
  1953. package/src/routes/decisions.ts +82 -0
  1954. package/src/routes/deploys.ts +15 -0
  1955. package/src/routes/fleet-convergence.ts +5 -0
  1956. package/src/routes/guides.ts +13 -0
  1957. package/src/routes/host-providers.ts +73 -0
  1958. package/src/routes/host-resource-control.ts +45 -0
  1959. package/src/routes/host-secret-files.ts +38 -0
  1960. package/src/routes/hosts.ts +240 -0
  1961. package/src/routes/inbox.ts +151 -0
  1962. package/src/routes/index.ts +614 -0
  1963. package/src/routes/insights.ts +86 -0
  1964. package/src/routes/integrations.ts +636 -0
  1965. package/src/routes/issue-activity.ts +78 -0
  1966. package/src/routes/issue-associations.ts +76 -0
  1967. package/src/routes/issue-lifecycle.ts +34 -0
  1968. package/src/routes/issue-refs.ts +163 -0
  1969. package/src/routes/kernel-timers-operator.ts +57 -0
  1970. package/src/routes/memory.ts +25 -0
  1971. package/src/routes/merges.ts +109 -0
  1972. package/src/routes/message-viewer.ts +4 -0
  1973. package/src/routes/messages.ts +621 -0
  1974. package/src/routes/notifications.ts +36 -0
  1975. package/src/routes/orchestrator-bootstrap.ts +101 -0
  1976. package/src/routes/orchestrator-host-registration.ts +125 -0
  1977. package/src/routes/orchestrator-host-utilization.ts +255 -0
  1978. package/src/routes/orchestrator-proxy.ts +174 -0
  1979. package/src/routes/orchestrator.ts +699 -0
  1980. package/src/routes/pairs.ts +214 -0
  1981. package/src/routes/plans.ts +98 -0
  1982. package/src/routes/project-onboarding.ts +56 -0
  1983. package/src/routes/project-trust.ts +73 -0
  1984. package/src/routes/projects.ts +296 -0
  1985. package/src/routes/prompt-templates.ts +106 -0
  1986. package/src/routes/provider-config.ts +232 -0
  1987. package/src/routes/provider-quota-config.ts +48 -0
  1988. package/src/routes/provider-quotas.ts +312 -0
  1989. package/src/routes/provisioning-registry.ts +192 -0
  1990. package/src/routes/recipes.ts +129 -0
  1991. package/src/routes/restart-epochs.ts +98 -0
  1992. package/src/routes/routing-policy.ts +30 -0
  1993. package/src/routes/run-command.ts +25 -0
  1994. package/src/routes/secrets-backup.ts +53 -0
  1995. package/src/routes/secrets-import.ts +32 -0
  1996. package/src/routes/secrets-page.ts +98 -0
  1997. package/src/routes/secrets-vault.ts +121 -0
  1998. package/src/routes/secrets.ts +165 -0
  1999. package/src/routes/service-access.ts +57 -0
  2000. package/src/routes/settings.ts +191 -0
  2001. package/src/routes/shipping.ts +56 -0
  2002. package/src/routes/spawn-policy.ts +299 -0
  2003. package/src/routes/spec.ts +58 -0
  2004. package/src/routes/sse.ts +18 -0
  2005. package/src/routes/stats.ts +159 -0
  2006. package/src/routes/steward.ts +49 -0
  2007. package/src/routes/task-graph.ts +30 -0
  2008. package/src/routes/task-http.ts +27 -0
  2009. package/src/routes/task-issues.ts +81 -0
  2010. package/src/routes/task-reads.ts +139 -0
  2011. package/src/routes/task-validation.ts +22 -0
  2012. package/src/routes/tasks.ts +553 -0
  2013. package/src/routes/team-templates.ts +65 -0
  2014. package/src/routes/teams-config.ts +15 -0
  2015. package/src/routes/teams.ts +141 -0
  2016. package/src/routes/token-usage.ts +167 -0
  2017. package/src/routes/tokens.ts +393 -0
  2018. package/src/routes/users.ts +248 -0
  2019. package/src/routes/viewer-read.ts +27 -0
  2020. package/src/routes/web-tool-calls.ts +38 -0
  2021. package/src/routes/workflows.ts +142 -0
  2022. package/src/routes/workspaces.ts +642 -0
  2023. package/src/routes.ts +3 -0
  2024. package/src/routing-eligibility.ts +42 -0
  2025. package/src/routing-model-aliases.ts +21 -0
  2026. package/src/routing-policy-normalize.ts +412 -0
  2027. package/src/routing-policy-push.ts +154 -0
  2028. package/src/routing-policy-service.ts +19 -0
  2029. package/src/routing-policy-store.ts +16 -0
  2030. package/src/routing-preferences.ts +82 -0
  2031. package/src/routing-step-defaults.ts +31 -0
  2032. package/src/runtime-grant.ts +164 -0
  2033. package/src/runtime-prefix.ts +8 -0
  2034. package/src/runtime-tokens.ts +395 -0
  2035. package/src/search-query.ts +10 -0
  2036. package/src/secret-keys.ts +24 -0
  2037. package/src/secrets-broker/config.ts +53 -0
  2038. package/src/secrets-broker/error.ts +8 -0
  2039. package/src/secrets-broker/infisical.ts +259 -0
  2040. package/src/secrets-broker/reader-infisical.ts +41 -0
  2041. package/src/secrets-broker/reader.ts +101 -0
  2042. package/src/secrets-broker/service.ts +242 -0
  2043. package/src/secrets-broker/tool-credentials.ts +9 -0
  2044. package/src/secrets-vault/backend-conformance.ts +26 -0
  2045. package/src/secrets-vault/backend.ts +102 -0
  2046. package/src/secrets-vault/backup.ts +103 -0
  2047. package/src/secrets-vault/config.ts +7 -0
  2048. package/src/secrets-vault/expiry.ts +10 -0
  2049. package/src/secrets-vault/identity.ts +27 -0
  2050. package/src/secrets-vault/import.ts +90 -0
  2051. package/src/secrets-vault/key-files.ts +91 -0
  2052. package/src/secrets-vault/keys.ts +79 -0
  2053. package/src/secrets-vault/metadata.ts +51 -0
  2054. package/src/secrets-vault/provider-env.ts +25 -0
  2055. package/src/secrets-vault/resolve.ts +101 -0
  2056. package/src/secrets-vault/restore.ts +57 -0
  2057. package/src/secrets-vault/scope.ts +25 -0
  2058. package/src/secrets-vault/service.ts +192 -0
  2059. package/src/secrets-vault/shared.ts +10 -0
  2060. package/src/security.ts +772 -0
  2061. package/src/self-effort-rule.ts +36 -0
  2062. package/src/self-resume-carry.ts +131 -0
  2063. package/src/self-resume-command.ts +24 -0
  2064. package/src/self-resume-config.ts +54 -0
  2065. package/src/self-resume-identity.ts +40 -0
  2066. package/src/self-resume-supersede.ts +19 -0
  2067. package/src/self-resume.ts +884 -0
  2068. package/src/server-background.ts +24 -0
  2069. package/src/server.ts +726 -0
  2070. package/src/service-access/config.ts +3 -0
  2071. package/src/service-access/health.ts +151 -0
  2072. package/src/service-access/host-health.ts +62 -0
  2073. package/src/service-access/host.ts +63 -0
  2074. package/src/service-access/operations.ts +21 -0
  2075. package/src/service-access/policy.ts +30 -0
  2076. package/src/service-access/probe.ts +62 -0
  2077. package/src/service-access/request-logs.ts +93 -0
  2078. package/src/service-access/scope.ts +7 -0
  2079. package/src/service-access/service.ts +185 -0
  2080. package/src/service-access/tokens.ts +174 -0
  2081. package/src/service-access/validation.ts +75 -0
  2082. package/src/service-access/vault.ts +59 -0
  2083. package/src/services/agent-action.ts +238 -0
  2084. package/src/services/agent-control-host.ts +74 -0
  2085. package/src/services/agent-effort.ts +60 -0
  2086. package/src/services/agent-hang-watchdog-job.ts +513 -0
  2087. package/src/services/agent-hang-watchdog-wiring.ts +487 -0
  2088. package/src/services/agent-hang-watchdog.ts +395 -0
  2089. package/src/services/agent-keep.ts +72 -0
  2090. package/src/services/agent-message-fanout.ts +91 -0
  2091. package/src/services/agent-outstanding-work.ts +66 -0
  2092. package/src/services/agent-reporting.ts +27 -0
  2093. package/src/services/artifact-access.ts +39 -0
  2094. package/src/services/artifact-multipart.ts +70 -0
  2095. package/src/services/artifact-path-host.ts +55 -0
  2096. package/src/services/artifact-read.ts +88 -0
  2097. package/src/services/artifact-write.ts +25 -0
  2098. package/src/services/auth-context.ts +117 -0
  2099. package/src/services/automatic-disposal.ts +33 -0
  2100. package/src/services/backlog.ts +149 -0
  2101. package/src/services/browser-inventory.ts +52 -0
  2102. package/src/services/browser-session-state.ts +41 -0
  2103. package/src/services/browser-session.ts +167 -0
  2104. package/src/services/bus-command-update.ts +84 -0
  2105. package/src/services/bus-expiration-death.ts +57 -0
  2106. package/src/services/canonical-root.ts +284 -0
  2107. package/src/services/captured-delivery-gate.ts +12 -0
  2108. package/src/services/carry-pending.ts +5 -0
  2109. package/src/services/channel-binding-delete.ts +20 -0
  2110. package/src/services/channel-suppression-receipt.ts +28 -0
  2111. package/src/services/checkout-refresh-state.ts +18 -0
  2112. package/src/services/checkout-refresh.test-fixture.ts +12 -0
  2113. package/src/services/child-work-evidence.ts +77 -0
  2114. package/src/services/claude-app.ts +91 -0
  2115. package/src/services/command-claim-rejection.ts +23 -0
  2116. package/src/services/command-host.ts +42 -0
  2117. package/src/services/coordinator-digest.ts +30 -0
  2118. package/src/services/decision-audience.ts +26 -0
  2119. package/src/services/delivery-gate-policy.ts +98 -0
  2120. package/src/services/delivery-tip.test-fixture.ts +25 -0
  2121. package/src/services/diff-gate.ts +110 -0
  2122. package/src/services/dispatch-command.ts +388 -0
  2123. package/src/services/effective-launch-driver.ts +240 -0
  2124. package/src/services/effective-launch-harness.ts +257 -0
  2125. package/src/services/errors.ts +31 -0
  2126. package/src/services/git-process.ts +176 -0
  2127. package/src/services/git-remote.ts +100 -0
  2128. package/src/services/harness-subagents.ts +12 -0
  2129. package/src/services/host-changed-paths.test-fixture.ts +134 -0
  2130. package/src/services/host-landing-placement.ts +65 -0
  2131. package/src/services/host-project-readiness.ts +49 -0
  2132. package/src/services/host-providers.ts +114 -0
  2133. package/src/services/host-utilization.ts +70 -0
  2134. package/src/services/idle-agent-digest.ts +318 -0
  2135. package/src/services/idle-epics.ts +105 -0
  2136. package/src/services/idle-self-care.ts +47 -0
  2137. package/src/services/interrupt-agent.ts +146 -0
  2138. package/src/services/isolated-workspace-placement.ts +258 -0
  2139. package/src/services/issue-activity.ts +23 -0
  2140. package/src/services/issue-associations.ts +72 -0
  2141. package/src/services/issue-completion-drain.ts +24 -0
  2142. package/src/services/issue-completion.ts +24 -0
  2143. package/src/services/issue-lifecycle-comments.ts +12 -0
  2144. package/src/services/issue-lifecycle.ts +620 -0
  2145. package/src/services/issue-refs.ts +65 -0
  2146. package/src/services/kernel-command-bridge.ts +219 -0
  2147. package/src/services/kernel-control-host.ts +78 -0
  2148. package/src/services/kernel-control-http.ts +119 -0
  2149. package/src/services/kernel-control-mcp.ts +193 -0
  2150. package/src/services/kernel-landing-command.ts +28 -0
  2151. package/src/services/kernel-landing-ingress.ts +65 -0
  2152. package/src/services/kernel-timers-authoritative-ingress.ts +48 -0
  2153. package/src/services/kernel-timers-authz.ts +229 -0
  2154. package/src/services/kernel-timers-command.ts +182 -0
  2155. package/src/services/kernel-timers-cutover-chaos-worker.ts +209 -0
  2156. package/src/services/kernel-timers-cutover.ts +39 -0
  2157. package/src/services/kernel-timers-ingress-apply.ts +39 -0
  2158. package/src/services/kernel-timers-ingress-chaos-worker.ts +312 -0
  2159. package/src/services/kernel-timers-ingress.ts +702 -0
  2160. package/src/services/kernel-timers-message-authority-chaos-worker.ts +97 -0
  2161. package/src/services/kernel-timers-migrate.ts +158 -0
  2162. package/src/services/kernel-timers-operator-chaos-worker.ts +259 -0
  2163. package/src/services/kernel-timers-operator-preflight.ts +18 -0
  2164. package/src/services/kernel-timers-operator.ts +424 -0
  2165. package/src/services/kernel-timers-outbox.ts +138 -0
  2166. package/src/services/kernel-timers-request-key-migration-chaos-worker.ts +77 -0
  2167. package/src/services/kernel-timers-stage10-operator.ts +210 -0
  2168. package/src/services/kernel-timers-stage10.ts +85 -0
  2169. package/src/services/kernel-timers-stage9.ts +57 -0
  2170. package/src/services/kernel-timers-transfer-chaos-worker.ts +118 -0
  2171. package/src/services/kernel-timers-transfer.ts +525 -0
  2172. package/src/services/kernel-timers-verifier.ts +39 -0
  2173. package/src/services/kernel-timers.ts +247 -0
  2174. package/src/services/land-boundary-settle.ts +32 -0
  2175. package/src/services/land-gate-placement.ts +60 -0
  2176. package/src/services/land-issue-relations.ts +46 -0
  2177. package/src/services/land-restart-retry.ts +77 -0
  2178. package/src/services/landed-ancestry.ts +417 -0
  2179. package/src/services/landed-task-attribution.ts +14 -0
  2180. package/src/services/landing-terminal-report.ts +119 -0
  2181. package/src/services/legacy-landing-backfill.ts +159 -0
  2182. package/src/services/legacy-landing-host.ts +291 -0
  2183. package/src/services/legacy-landing-publication.ts +35 -0
  2184. package/src/services/legacy-landing-recovery.ts +111 -0
  2185. package/src/services/macos-privacy.ts +34 -0
  2186. package/src/services/managed-running.ts +189 -0
  2187. package/src/services/memory-areas.ts +172 -0
  2188. package/src/services/memory-identity.ts +162 -0
  2189. package/src/services/merge-pause.ts +37 -0
  2190. package/src/services/message-delivery-actions.ts +11 -0
  2191. package/src/services/operator-decisions.ts +260 -0
  2192. package/src/services/orchestrator-landing-recovery.ts +55 -0
  2193. package/src/services/orchestrator-registration-recovery.ts +12 -0
  2194. package/src/services/orchestrator-upgrade.ts +83 -0
  2195. package/src/services/parity-harness.ts +141 -0
  2196. package/src/services/permission-decision.ts +129 -0
  2197. package/src/services/plan-ci-recovery.ts +76 -0
  2198. package/src/services/plan-conformance.ts +105 -0
  2199. package/src/services/plan-dispatch-policy.ts +79 -0
  2200. package/src/services/plan-dispatch.ts +372 -0
  2201. package/src/services/plan-external-view.ts +7 -0
  2202. package/src/services/plan-frontier.ts +34 -0
  2203. package/src/services/plan-graph.ts +703 -0
  2204. package/src/services/plan-import.ts +66 -0
  2205. package/src/services/plan-live-bindings.ts +139 -0
  2206. package/src/services/plan-task-create.ts +80 -0
  2207. package/src/services/plan-terminal-refs.ts +83 -0
  2208. package/src/services/plan-wake-digest.ts +88 -0
  2209. package/src/services/plan-wake-policy.ts +12 -0
  2210. package/src/services/profile-trust.ts +54 -0
  2211. package/src/services/project-checkout-binding.ts +65 -0
  2212. package/src/services/project-checkout-enrollment.ts +27 -0
  2213. package/src/services/project-cwd.ts +41 -0
  2214. package/src/services/project-onboarding.ts +165 -0
  2215. package/src/services/project-repo-create.ts +27 -0
  2216. package/src/services/project-role.test-fixture.ts +74 -0
  2217. package/src/services/project.ts +191 -0
  2218. package/src/services/prompt-templates.ts +46 -0
  2219. package/src/services/prompt-version-writer.ts +42 -0
  2220. package/src/services/provider-catalog.ts +7 -0
  2221. package/src/services/provider-hold-flap.ts +130 -0
  2222. package/src/services/provider-hold-nudge.ts +191 -0
  2223. package/src/services/provider-hold-record.ts +137 -0
  2224. package/src/services/provider-state-audit.ts +214 -0
  2225. package/src/services/provisioning-harness/analyze.ts +285 -0
  2226. package/src/services/provisioning-harness/budget-baseline.json +391 -0
  2227. package/src/services/provisioning-harness/capture.ts +197 -0
  2228. package/src/services/provisioning-harness/config.ts +55 -0
  2229. package/src/services/provisioning-harness/context-sources.ts +85 -0
  2230. package/src/services/provisioning-harness/driver.ts +156 -0
  2231. package/src/services/provisioning-harness/expect.ts +81 -0
  2232. package/src/services/provisioning-harness/fixture-matrix.ts +38 -0
  2233. package/src/services/provisioning-harness/fixtures/project/.agent-relay/land-gates.json +1 -0
  2234. package/src/services/provisioning-harness/fixtures/project/.claude/skills/harness-skill/SKILL.md +6 -0
  2235. package/src/services/provisioning-harness/fixtures/project/.mcp.json +1 -0
  2236. package/src/services/provisioning-harness/fixtures/project/AGENTS.md +1 -0
  2237. package/src/services/provisioning-harness/fixtures/project/CLAUDE.md +1 -0
  2238. package/src/services/provisioning-harness/fixtures/project/mcp-server.ts +33 -0
  2239. package/src/services/provisioning-harness/fixtures/provider-home/AGENTS.md +1 -0
  2240. package/src/services/provisioning-harness/fixtures/provider-home/CLAUDE.md +1 -0
  2241. package/src/services/provisioning-harness/host-fixtures.ts +25 -0
  2242. package/src/services/provisioning-harness/index.ts +4 -0
  2243. package/src/services/provisioning-harness/inventory-types.ts +8 -0
  2244. package/src/services/provisioning-harness/inventory.ts +33 -0
  2245. package/src/services/provisioning-harness/lifecycle.ts +193 -0
  2246. package/src/services/provisioning-harness/live.ts +61 -0
  2247. package/src/services/provisioning-harness/manifests.ts +118 -0
  2248. package/src/services/provisioning-harness/prepare.ts +113 -0
  2249. package/src/services/provisioning-harness/redundancy-report.ts +32 -0
  2250. package/src/services/provisioning-harness/redundancy.ts +137 -0
  2251. package/src/services/provisioning-harness/report.ts +129 -0
  2252. package/src/services/provisioning-harness/types.ts +174 -0
  2253. package/src/services/provisioning-registry.ts +15 -0
  2254. package/src/services/rate-limit-resume.ts +220 -0
  2255. package/src/services/reap-verdict.ts +52 -0
  2256. package/src/services/red-main-auto-revert.ts +103 -0
  2257. package/src/services/red-main-controller-deps.ts +80 -0
  2258. package/src/services/red-main-controller.ts +262 -0
  2259. package/src/services/red-main-incident.ts +44 -0
  2260. package/src/services/red-main-quarantine.ts +92 -0
  2261. package/src/services/register-agent.ts +447 -0
  2262. package/src/services/release-readiness.ts +219 -0
  2263. package/src/services/reported-exit-death.ts +29 -0
  2264. package/src/services/response-report-admission.ts +17 -0
  2265. package/src/services/restart-epoch-driver.ts +290 -0
  2266. package/src/services/restart-epoch-reconciler.ts +326 -0
  2267. package/src/services/restart-epoch-stale-command-recovery.ts +133 -0
  2268. package/src/services/restart-instructions.ts +86 -0
  2269. package/src/services/restart-project-role.ts +74 -0
  2270. package/src/services/restart-secret-refs.ts +14 -0
  2271. package/src/services/restart-spawn.ts +510 -0
  2272. package/src/services/review-publish.ts +76 -0
  2273. package/src/services/review-ref-reconcile.ts +337 -0
  2274. package/src/services/run-command-input.ts +22 -0
  2275. package/src/services/run-command.ts +510 -0
  2276. package/src/services/run-completion-message.ts +70 -0
  2277. package/src/services/run-log.ts +212 -0
  2278. package/src/services/run-queue.ts +63 -0
  2279. package/src/services/scheduler-command-cancel.ts +49 -0
  2280. package/src/services/scheduler-command.ts +590 -0
  2281. package/src/services/scheduler-create.ts +25 -0
  2282. package/src/services/scheduler-plan.ts +202 -0
  2283. package/src/services/scheduler-recovery.ts +31 -0
  2284. package/src/services/scheduler.ts +406 -0
  2285. package/src/services/self-care-state.ts +10 -0
  2286. package/src/services/self-effort-grant.ts +93 -0
  2287. package/src/services/self-effort.ts +152 -0
  2288. package/src/services/send-message.ts +548 -0
  2289. package/src/services/server-credentials.ts +53 -0
  2290. package/src/services/shipping-board.ts +111 -0
  2291. package/src/services/shipping-project-config.ts +86 -0
  2292. package/src/services/shipping-stats.ts +86 -0
  2293. package/src/services/shutdown-agent.ts +463 -0
  2294. package/src/services/shutdown-watchdog.ts +119 -0
  2295. package/src/services/spawn-agent.ts +967 -0
  2296. package/src/services/spawn-approval.ts +26 -0
  2297. package/src/services/spawn-brief.ts +39 -0
  2298. package/src/services/spawn-chain-inspector.ts +286 -0
  2299. package/src/services/spawn-cwd-placement.ts +250 -0
  2300. package/src/services/spawn-identity.ts +127 -0
  2301. package/src/services/spawn-instruction-inputs.ts +114 -0
  2302. package/src/services/spawn-issue-activity.ts +102 -0
  2303. package/src/services/spawn-launch-decision.ts +32 -0
  2304. package/src/services/spawn-launch.ts +116 -0
  2305. package/src/services/spawn-loss-escalation.ts +253 -0
  2306. package/src/services/spawn-placement.test-fixture.ts +30 -0
  2307. package/src/services/spawn-project-role.ts +133 -0
  2308. package/src/services/spawn-registration-watchdog.ts +352 -0
  2309. package/src/services/spawn-replay.ts +61 -0
  2310. package/src/services/spawn-repo-probe.ts +118 -0
  2311. package/src/services/spawn-tree-cleanup.ts +37 -0
  2312. package/src/services/spawn-warnings.ts +13 -0
  2313. package/src/services/steward-reaper.ts +244 -0
  2314. package/src/services/task-context-hydration.ts +413 -0
  2315. package/src/services/task-delivery-close.ts +26 -0
  2316. package/src/services/task-delivery-event.ts +11 -0
  2317. package/src/services/task-delivery-land-policy.ts +35 -0
  2318. package/src/services/task-delivery-summary.ts +38 -0
  2319. package/src/services/task-delivery.ts +762 -0
  2320. package/src/services/task-dependency-graph.ts +116 -0
  2321. package/src/services/task-dispatch.ts +178 -0
  2322. package/src/services/task-done-when.ts +45 -0
  2323. package/src/services/task-entity.ts +758 -0
  2324. package/src/services/task-from-issue.ts +80 -0
  2325. package/src/services/task-issue-digest.ts +45 -0
  2326. package/src/services/task-issue-link.ts +158 -0
  2327. package/src/services/task-issue-weave.ts +570 -0
  2328. package/src/services/task-land-withdraw.ts +462 -0
  2329. package/src/services/task-lifecycle.ts +668 -0
  2330. package/src/services/task-nothing-to-land.ts +37 -0
  2331. package/src/services/task-plan-view.ts +172 -0
  2332. package/src/services/task-review-hold.ts +244 -0
  2333. package/src/services/task-semantic-events.ts +396 -0
  2334. package/src/services/task-stage-wake.ts +15 -0
  2335. package/src/services/task-state-reconcile.ts +169 -0
  2336. package/src/services/task-validation.ts +42 -0
  2337. package/src/services/team-claim-race.worker.ts +72 -0
  2338. package/src/services/team-spawn-delegation.ts +30 -0
  2339. package/src/services/team-templates.ts +172 -0
  2340. package/src/services/team.ts +320 -0
  2341. package/src/services/terminal-provider-exit.ts +57 -0
  2342. package/src/services/timer-message-fire-chaos-worker.ts +29 -0
  2343. package/src/services/timer-message-fire-outbox.ts +184 -0
  2344. package/src/services/transient-agent-reaper.ts +412 -0
  2345. package/src/services/turn-reconcile-audit.ts +236 -0
  2346. package/src/services/user-onboarding.ts +98 -0
  2347. package/src/services/user-profile.ts +57 -0
  2348. package/src/services/web-search.ts +83 -0
  2349. package/src/services/web-tool-calls.ts +65 -0
  2350. package/src/services/withdraw-steward.ts +57 -0
  2351. package/src/services/work-finality.ts +34 -0
  2352. package/src/services/workflow-agent-obligation.ts +35 -0
  2353. package/src/services/workflow-auto-start.ts +126 -0
  2354. package/src/services/workflow-backstop.ts +38 -0
  2355. package/src/services/workflow-budget.test-fixture.ts +10 -0
  2356. package/src/services/workflow-caller.ts +32 -0
  2357. package/src/services/workflow-catalog.ts +43 -0
  2358. package/src/services/workflow-child-proof-worker.ts +76 -0
  2359. package/src/services/workflow-child.test-fixture.ts +51 -0
  2360. package/src/services/workflow-ci-main.ts +93 -0
  2361. package/src/services/workflow-control-proof-worker.ts +149 -0
  2362. package/src/services/workflow-coordinator-decision-proof-worker.ts +123 -0
  2363. package/src/services/workflow-coordinator.ts +8 -0
  2364. package/src/services/workflow-decision-answer.ts +18 -0
  2365. package/src/services/workflow-decision-proof-worker.ts +92 -0
  2366. package/src/services/workflow-decision.test-fixture.ts +58 -0
  2367. package/src/services/workflow-decisions.ts +107 -0
  2368. package/src/services/workflow-deferred-cleanup.ts +40 -0
  2369. package/src/services/workflow-dispatch-result.ts +20 -0
  2370. package/src/services/workflow-effect-driver.ts +165 -0
  2371. package/src/services/workflow-effects.ts +544 -0
  2372. package/src/services/workflow-foreach-proof-worker.ts +209 -0
  2373. package/src/services/workflow-land-notice.ts +18 -0
  2374. package/src/services/workflow-land.ts +105 -0
  2375. package/src/services/workflow-notice.ts +32 -0
  2376. package/src/services/workflow-overdue-notice.ts +19 -0
  2377. package/src/services/workflow-pins.ts +162 -0
  2378. package/src/services/workflow-reconcile.ts +210 -0
  2379. package/src/services/workflow-resume-pins.ts +30 -0
  2380. package/src/services/workflow-run-chaos-worker.ts +67 -0
  2381. package/src/services/workflow-run-view.ts +71 -0
  2382. package/src/services/workflow-run.test-fixture.ts +165 -0
  2383. package/src/services/workflow-runs.ts +370 -0
  2384. package/src/services/workflow-scripts.ts +100 -0
  2385. package/src/services/workflow-slice-proof.ts +14 -0
  2386. package/src/services/workflow-stats.ts +208 -0
  2387. package/src/services/workflow-supervisor-state.ts +117 -0
  2388. package/src/services/workflow-supervisor.ts +122 -0
  2389. package/src/services/workflow-verification.ts +68 -0
  2390. package/src/services/workspace-recovery.ts +168 -0
  2391. package/src/services/workspace-task-binding.ts +22 -0
  2392. package/src/settings/modules.ts +149 -0
  2393. package/src/settings/registry.ts +629 -0
  2394. package/src/settings/user-settings.ts +81 -0
  2395. package/src/setup.ts +199 -0
  2396. package/src/shared-mcp.ts +87 -0
  2397. package/src/shutdown.ts +33 -0
  2398. package/src/spawn-admission.ts +48 -0
  2399. package/src/spawn-budget.ts +18 -0
  2400. package/src/spawn-command.ts +373 -0
  2401. package/src/spawn-env.ts +27 -0
  2402. package/src/spawn-intent.ts +17 -0
  2403. package/src/spawn-lease.ts +41 -0
  2404. package/src/spawn-models.ts +22 -0
  2405. package/src/spawn-placement.ts +348 -0
  2406. package/src/spawn-profile-errors.ts +9 -0
  2407. package/src/spawn-quota.ts +15 -0
  2408. package/src/spawn-targets.ts +679 -0
  2409. package/src/sse-agent-status.ts +35 -0
  2410. package/src/sse-outbox-cursor.ts +28 -0
  2411. package/src/sse-visibility.ts +36 -0
  2412. package/src/sse.ts +684 -0
  2413. package/src/startup-context-injection.ts +518 -0
  2414. package/src/startup-timing.ts +30 -0
  2415. package/src/state-adoption/artifacts.ts +27 -0
  2416. package/src/state-adoption/cd-cutover.ts +125 -0
  2417. package/src/state-adoption/files.ts +31 -0
  2418. package/src/state-adoption/index.ts +166 -0
  2419. package/src/state-adoption/linux-plan.ts +67 -0
  2420. package/src/state-adoption/linux.ts +104 -0
  2421. package/src/state-adoption/macos-plan.ts +58 -0
  2422. package/src/state-adoption/macos.ts +112 -0
  2423. package/src/steward-claim-release.ts +38 -0
  2424. package/src/steward-handoff.ts +28 -0
  2425. package/src/steward-identity.ts +54 -0
  2426. package/src/steward-policy-cleanup.ts +222 -0
  2427. package/src/steward-policy-model-reconcile.ts +33 -0
  2428. package/src/steward-policy-name.ts +13 -0
  2429. package/src/steward-provenance.ts +59 -0
  2430. package/src/steward-queue.ts +85 -0
  2431. package/src/steward-slot-recovery.ts +34 -0
  2432. package/src/steward-spawn-guard.ts +344 -0
  2433. package/src/steward.test-fixture.ts +11 -0
  2434. package/src/steward.ts +199 -0
  2435. package/src/stream-proxy.ts +84 -0
  2436. package/src/task-authz.ts +40 -0
  2437. package/src/task-completion.ts +39 -0
  2438. package/src/task-dispatch-live.ts +70 -0
  2439. package/src/task-dispatcher-ranking.ts +136 -0
  2440. package/src/task-dispatcher.ts +841 -0
  2441. package/src/task-owner-notices.ts +35 -0
  2442. package/src/task-owner.ts +63 -0
  2443. package/src/task-plan-status.ts +21 -0
  2444. package/src/task-verification.ts +35 -0
  2445. package/src/team-idle-tracker.ts +39 -0
  2446. package/src/team-template-config.ts +100 -0
  2447. package/src/teams-config-store.ts +22 -0
  2448. package/src/terminal-authz.ts +49 -0
  2449. package/src/token-db-write.ts +44 -0
  2450. package/src/token-db.ts +487 -0
  2451. package/src/token-usage-async.ts +40 -0
  2452. package/src/transport-subscriptions.ts +57 -0
  2453. package/src/types.ts +1 -0
  2454. package/src/upgrade-install-verify.ts +179 -0
  2455. package/src/upgrade-local-id.ts +3 -0
  2456. package/src/upgrade-services.ts +125 -0
  2457. package/src/upgrade.ts +1006 -0
  2458. package/src/user-awaiting-reply.ts +42 -0
  2459. package/src/user-path.ts +246 -0
  2460. package/src/user-settings-async.ts +33 -0
  2461. package/src/user-settings-store.ts +106 -0
  2462. package/src/user-style.ts +83 -0
  2463. package/src/utils.ts +42 -0
  2464. package/src/validation.ts +324 -0
  2465. package/src/vault-backup-config.ts +28 -0
  2466. package/src/vault-expiry-config.ts +12 -0
  2467. package/src/versioned-prompts.ts +57 -0
  2468. package/src/workflow-capabilities.ts +10 -0
  2469. package/src/workflow-prompt-templates.ts +20 -0
  2470. package/src/workspace-action-audit.ts +42 -0
  2471. package/src/workspace-actions.ts +689 -0
  2472. package/src/workspace-auto-merge.ts +1055 -0
  2473. package/src/workspace-changed-paths-client.ts +97 -0
  2474. package/src/workspace-claim.ts +45 -0
  2475. package/src/workspace-cleanup-settle.ts +51 -0
  2476. package/src/workspace-cleanup-stale.ts +231 -0
  2477. package/src/workspace-command-settle.ts +589 -0
  2478. package/src/workspace-config.ts +7 -0
  2479. package/src/workspace-conflict-resolver.ts +182 -0
  2480. package/src/workspace-dead-owner-recovery.ts +19 -0
  2481. package/src/workspace-delivery-tip.ts +51 -0
  2482. package/src/workspace-escalation.ts +107 -0
  2483. package/src/workspace-git-state-client.ts +42 -0
  2484. package/src/workspace-host-client.ts +86 -0
  2485. package/src/workspace-host-target.ts +5 -0
  2486. package/src/workspace-host.ts +61 -0
  2487. package/src/workspace-human-escalation.ts +70 -0
  2488. package/src/workspace-land-gate-watchdog.ts +76 -0
  2489. package/src/workspace-land-gate.ts +99 -0
  2490. package/src/workspace-land-result.ts +12 -0
  2491. package/src/workspace-land-retry.ts +82 -0
  2492. package/src/workspace-land-stopped.ts +57 -0
  2493. package/src/workspace-merge-dispatch.ts +27 -0
  2494. package/src/workspace-merge-progress.ts +369 -0
  2495. package/src/workspace-merge-retry-policy.ts +59 -0
  2496. package/src/workspace-merge.ts +614 -0
  2497. package/src/workspace-nothing-to-land-notice.ts +27 -0
  2498. package/src/workspace-orphans.ts +927 -0
  2499. package/src/workspace-phase.ts +507 -0
  2500. package/src/workspace-pr-completion.ts +285 -0
  2501. package/src/workspace-probe.ts +212 -0
  2502. package/src/workspace-recorded-land.ts +47 -0
  2503. package/src/workspace-recovery-authz.ts +88 -0
  2504. package/src/workspace-rekey.ts +106 -0
  2505. package/src/workspace-steward-authority.ts +16 -0
  2506. package/src/workspace-steward-failure.ts +42 -0
  2507. package/src/workspace-steward-wake.ts +150 -0
  2508. package/src/workspace-steward-watchdog.ts +240 -0
@@ -0,0 +1,841 @@
1
+ import { isOpenAiApiModel } from "@humwick/sdk";
2
+ // #839 — the declarative task dispatcher.
3
+ //
4
+ // A pure function from (Task work-shape + live system state) → a concrete spawn
5
+ // (provider / model / effort) plus a human-readable rationale. The work-shape is the
6
+ // small, stable taxonomy a coordinator declares on the Task's `dispatch` field
7
+ // ({complexity, type, contextFootprint, criticality}); the routing heuristics that map
8
+ // it onto an agent live as INSPECTABLE, EDITABLE policy (RoutingPolicy.dispatch, with a
9
+ // built-in default) — never hardcoded here, never tribal coordinator knowledge.
10
+ //
11
+ // Guarantees this module is built to keep (the #839 GUARD):
12
+ // 1. Every decision reports WHY (rationale string + structured factors).
13
+ // 2. Every decision is overridable by an explicit model/provider pin.
14
+ // 3. The function is PURE — no DB writes, no spawning. The MCP entrypoint
15
+ // (mcp-dispatch-tools.ts) consumes the decision; #838 (spawn-with-task) will
16
+ // hydrate + actually spawn. Auto-review surfaces as a PLAN the caller may enact.
17
+ import type {
18
+ DispatchAutoReview,
19
+ DispatchModelTarget,
20
+ DispatchPolicy,
21
+ DispatchRule,
22
+ HostUtilizationSignal,
23
+ RoutingRule,
24
+ SpawnProvider,
25
+ TaskDispatch,
26
+ } from "@humwick/sdk";
27
+ import { isProviderEnabled, type ProviderCatalogEntry, type ProviderModelCatalogEntry } from "@humwick/sdk/provider-catalog";
28
+ import { getAllManifests, getManifest, routingFamilySiblings } from "@humwick/providers";
29
+ import { effectiveProviderCatalogList } from "./provider-catalog-store";
30
+ import { getDispatchPolicy, getRoutingPolicy } from "./routing-policy-store";
31
+ import { rankCandidates, quotaFor, bandRank, markRankingSelected, type DispatchCandidate } from "./task-dispatcher-ranking";
32
+ import { automaticallyRoutable, createRoutingEligibility, routingResolutionError } from "./routing-eligibility";
33
+ import { matchesShape } from "./dispatch-match";
34
+ import { evaluateRoutingPreferences, preferenceExclusions, preferenceRationale, preferenceAdditions, type RoutingPreferenceEvaluation } from "./routing-preferences";
35
+ import { advertisedProviders, providerQuotaBands, type ProviderQuotaBand, type QuotaBand } from "./spawn-targets";
36
+ import { CLAUDE_API_PROVIDER, decideApiOverflow, isClaudeSubscription, type ApiOverflowContext, type ApiOverflowVerdict } from "./claude-api-overflow";
37
+ import { DEFAULT_API_EXPIRY_LEAD_MS, inApiExpiryLeadWindow, decideApiExpiry, type ApiExpiryContext } from "./claude-api-expiry";
38
+
39
+ import type { SpawnCapOptions } from "./spawn-placement";
40
+ import { dispatchWithLiveContext } from "./task-dispatch-live";
41
+ import { runnableDispatchCatalog, type TargetAdmission, type TargetUncertainty } from "./dispatch-availability";
42
+
43
+ /** An explicit per-case override. Any field set wins over the policy-derived target. */
44
+ export interface DispatchPin {
45
+ provider?: SpawnProvider;
46
+ model?: string;
47
+ effort?: string;
48
+ }
49
+
50
+ /**
51
+ * Live-state inputs. All optional + injectable so the dispatcher is unit-testable without a
52
+ * running fleet; each defaults to the real source (policy store / quota bands / catalog).
53
+ */
54
+ export interface DispatchContext {
55
+ /** Live admission predicate; omitted by catalog-only unit callers. */
56
+ targetAvailable?: (target: DispatchTarget) => boolean;
57
+ targetUnavailableReason?: (target: DispatchTarget) => string | undefined;
58
+ targetAdmission?: (target: DispatchTarget) => TargetAdmission;
59
+ orchestratorId?: string;
60
+ spawnCap?: SpawnCapOptions;
61
+ policy?: DispatchPolicy;
62
+ bands?: ProviderQuotaBand[];
63
+ catalog?: ProviderCatalogEntry[];
64
+ /**
65
+ * #901 degrade-never-refuse: when true, the dispatcher ALWAYS returns a usable provider —
66
+ * widening the search through caution → avoid-large → least-utilized blockedNow tiers before
67
+ * giving up. A loud warning is emitted for each degraded tier used. Non-critical paths (flag
68
+ * unset or false) keep the existing stricter behaviour (prefer|normal only).
69
+ */
70
+ mustResolveAvailable?: boolean;
71
+ /**
72
+ * #901 host-placement seam. Shape-only in v1 — no selection logic reads this field yet.
73
+ * A future host-placement phase will inject live host load here so the dispatcher can
74
+ * prefer the least-loaded machine when multiple orchestrators are viable.
75
+ */
76
+ hosts?: HostUtilizationSignal[];
77
+ /**
78
+ * #2516 — providers at least one ONLINE orchestrator advertises (heartbeat-reported
79
+ * `providers`). Family-sibling candidates are nominated ONLY when advertised: a manifest/
80
+ * catalog entry alone is not live availability (claude-b is registered on every install),
81
+ * and routing load onto an unadvertised sibling gets the spawn rejected instead of falling
82
+ * back to codex/zai. Defaults to the live orchestrator roster; inject `new Set()` in the
83
+ * pure-function harness to model a host that advertises no sibling.
84
+ */
85
+ advertisedProviders?: Set<SpawnProvider>;
86
+ /** #2754 — subscription-overflow snapshot. Absent = overflow off; only the async shell gathers it. */
87
+ apiOverflow?: ApiOverflowContext;
88
+ apiExpiry?: ApiExpiryContext;
89
+ /** #3105 — prefer any advertised, unblocked provider outside these (and their model family); with none, stay among them. */
90
+ avoidProviders?: readonly SpawnProvider[];
91
+ /** #3121 — `advertisedProviders` is a pinned host's: every candidate must be one of them. */
92
+ onlyAdvertised?: boolean;
93
+ /** #3327 — routing preferences (RoutingPolicy.rules); defaults to the stored policy's. */
94
+ preferences?: readonly RoutingRule[];
95
+ /** Captured once by the async shell; injected in boundary tests. */
96
+ now?: number;
97
+ policyRevision?: number;
98
+ }
99
+
100
+ export interface DispatchTarget {
101
+ provider: SpawnProvider;
102
+ model?: string;
103
+ effort?: string;
104
+ /**
105
+ * #901 host-placement seam. Stays undefined in v1 — a future host-placement phase will
106
+ * populate this with the chosen orchestrator id when multiple hosts are viable.
107
+ * No selection logic writes or reads this field in v1.
108
+ */
109
+ orchestratorId?: string;
110
+ }
111
+
112
+ /** Structured trace of the inputs that produced the decision (the machine-readable rationale). */
113
+ export interface DispatchFactors {
114
+ evaluatedAt?: number;
115
+ policyRevision?: number;
116
+ pinSources?: Record<string, string>;
117
+ constraintOverrides?: Array<{ ruleId: string; source: string }>;
118
+ complexity?: string;
119
+ type?: string;
120
+ contextFootprint?: string;
121
+ criticality?: string;
122
+ /** Label of the matched rule, or a "fallback"/"pin" marker. */
123
+ matchedRule: string;
124
+ /** The final provider's live quota band. */
125
+ band: QuotaBand;
126
+ /** Context window of the chosen model, when known. */
127
+ contextWindowTokens?: number;
128
+ /** Model was escalated to a bigger-window family member for a large footprint. */
129
+ escalatedForFootprint?: boolean;
130
+ /** Provider was rerouted away from a scarce/blocked pool; original provider recorded here. */
131
+ reroutedFromProvider?: SpawnProvider;
132
+ /** Which target fields were set by an explicit pin. */
133
+ pinnedFields?: string[];
134
+ /** Ranked provider/model candidates considered by the quota-aware resolver. */
135
+ ranking?: DispatchRankingEntry[];
136
+ /** Human-readable reason the winning candidate beat same-band alternatives. */
137
+ rankingReason?: string;
138
+ /** #2754 — overflow verdict, present when the policy is on and the target was Claude subscription work. */
139
+ apiOverflow?: ApiOverflowVerdict & { fromProvider?: SpawnProvider };
140
+ apiExpiry?: ApiOverflowVerdict & { fromProvider?: SpawnProvider; leadTimeMs?: number; skippedRerouteProvider?: SpawnProvider };
141
+ subscriptionExpiry?: string;
142
+ /** #3105 — the avoided providers; `fallback`: none other was advertised with quota, so the decision stayed among them. */
143
+ avoidProviders?: { providers: SpawnProvider[]; fallback: boolean };
144
+ /** #3327 — matching routing preferences and the per-provider counts they ranked by (within a quota band). */
145
+ preferences?: RoutingPreferenceEvaluation;
146
+ }
147
+
148
+ export interface DispatchRankingEntry {
149
+ provider: SpawnProvider;
150
+ model?: string;
151
+ effort?: string;
152
+ label?: string;
153
+ band: QuotaBand;
154
+ quotaPenalty: number;
155
+ slack: number | null;
156
+ prefer: boolean;
157
+ blockedNow: boolean;
158
+ /** #3327 — net routing-preference count for this provider. */
159
+ preference?: number;
160
+ directive?: number;
161
+ selected?: boolean;
162
+ dropReason?: string;
163
+ probeUncertainties?: TargetUncertainty[];
164
+ rankReason?: string;
165
+ }
166
+
167
+ /** A dependent review Task the caller may create (high criticality / complex work). */
168
+ export interface ReviewPlan {
169
+ /** Work-shape for the review Task. */
170
+ dispatch: TaskDispatch;
171
+ target: DispatchTarget;
172
+ rationale: string;
173
+ /** Why the review was triggered (e.g. "criticality=high"). */
174
+ reason: string;
175
+ }
176
+
177
+ export interface DispatchDecision {
178
+ target: DispatchTarget;
179
+ /** True when any target field came from an explicit pin. */
180
+ pinned: boolean;
181
+ /** Human-readable explanation, e.g. `opus-4.8 high: type=build, complexity=complex; claude band=normal`. */
182
+ rationale: string;
183
+ factors: DispatchFactors;
184
+ /** Non-fatal advisories (e.g. scarce pool, no model meets the footprint). */
185
+ warnings: string[];
186
+ /** Present when the policy's auto-review threshold is met. */
187
+ review?: ReviewPlan;
188
+ }
189
+
190
+ // ---------------------------------------------------------------------------
191
+ // Public entrypoint
192
+ // ---------------------------------------------------------------------------
193
+
194
+ /**
195
+ * Map a work-shape + live state onto a concrete spawn. `pin` overrides any field per-case;
196
+ * the rationale always explains the choice (including why a pin or reroute happened).
197
+ */
198
+ export function dispatchTask(shape: TaskDispatch | undefined, pin: DispatchPin = {}, ctx: DispatchContext = {}): DispatchDecision {
199
+ const policy = ctx.policy ?? getDispatchPolicy();
200
+ const catalog = runnableDispatchCatalog((ctx.catalog ?? effectiveProviderCatalogList()).map(entry => ({ ...entry, models: entry.models.filter(model => !isOpenAiApiModel(entry.provider, model.alias) || pin?.model === model.alias) })), ctx.targetAvailable);
201
+ const bands = ctx.bands ?? providerQuotaBands();
202
+ const advertised = ctx.advertisedProviders ?? advertisedProviders();
203
+ const work: TaskDispatch = shape ?? {};
204
+ const warnings: string[] = [];
205
+
206
+ // An injected policy snapshot carries its own preferences (or none); only the store default reads them here.
207
+ const preferences = evaluateRoutingPreferences(ctx.preferences ?? (ctx.policy ? [] : getRoutingPolicy().rules), work, ctx.now ?? Date.now());
208
+ const controlled = preferences.matched.length > 0;
209
+ const eligibility = createRoutingEligibility(catalog, bands, advertised, preferences);
210
+ const policyCandidates = withPreferredCandidates(resolvePolicyCandidates(work, policy, advertised), preferences, catalog, advertised);
211
+ const avoid = ctx.avoidProviders?.length && !pin.provider ? new Set(ctx.avoidProviders.flatMap(sameModelProviders)) : undefined;
212
+ // #3121 — a pinned host's spawn also lands on a provider it advertises: its policy candidates there, else its healthiest one.
213
+ const preference = avoid || ctx.onlyAdvertised ? preferOtherProvider(policyCandidates, avoid ?? new Set(), advertised, bands, catalog, preferences, eligibility) : undefined;
214
+ const candidates = preference?.candidates ?? policyCandidates;
215
+ const matched = candidates[0]!;
216
+ let target: DispatchTarget = { ...matched.target };
217
+ const factors: DispatchFactors = {
218
+ ...(ctx.now !== undefined ? { evaluatedAt: ctx.now } : {}),
219
+ ...(ctx.policyRevision !== undefined ? { policyRevision: ctx.policyRevision } : {}),
220
+ ...(work.complexity ? { complexity: work.complexity } : {}),
221
+ ...(work.type ? { type: work.type } : {}),
222
+ ...(work.contextFootprint ? { contextFootprint: work.contextFootprint } : {}),
223
+ ...(work.criticality ? { criticality: work.criticality } : {}),
224
+ matchedRule: matched.label,
225
+ band: "normal",
226
+ ...(avoid ? { avoidProviders: { providers: [...avoid], fallback: !preference!.other } } : {}),
227
+ ...(controlled || preferences.expired.length ? { preferences } : {}),
228
+ };
229
+ if (avoid && !preference!.other) warnings.push(`No provider other than ${[...avoid].join("/")} is advertised with quota; staying on that family.`);
230
+
231
+ const providerPinnedByInput = Boolean(pin.provider);
232
+ const modelPinnedByInput = Boolean(pin.model);
233
+ const effortPinnedByInput = Boolean(pin.effort);
234
+ let selectedExplicitModel = Boolean(matched.target.model);
235
+ let selectedExplicitEffort = Boolean(matched.target.effort);
236
+
237
+ if (!providerPinnedByInput && !modelPinnedByInput) {
238
+ const targetAvailable = ctx.targetAvailable && ((t: DispatchModelTarget) => ctx.targetAvailable!({ ...t, model: t.model ?? catalogEntry(catalog, t.provider)?.defaultModel }));
239
+ const targetAdmission = ctx.targetAdmission && ((t: DispatchModelTarget) => ctx.targetAdmission!({ ...t, model: t.model ?? catalogEntry(catalog, t.provider)?.defaultModel }));
240
+ const options = { allowBlockedLastResort: !controlled && ctx.mustResolveAvailable === true, preferences, eligibility, targetAvailable, targetAdmission };
241
+ let ranked = rankCandidates(candidates, bands, options);
242
+ if (!ranked.winner && ctx.targetAvailable) {
243
+ ranked = rankCandidates([...candidates, ...runnableAlternatives(catalog, advertised, candidates.length)], bands, options);
244
+ }
245
+ factors.ranking = ranked.ranking;
246
+ if (ranked.winner) {
247
+ target = { ...ranked.winner.target };
248
+ factors.matchedRule = ranked.winner.label;
249
+ factors.rankingReason = ranked.reason;
250
+ selectedExplicitModel = Boolean(ranked.winner.target.model);
251
+ selectedExplicitEffort = Boolean(ranked.winner.target.effort);
252
+ }
253
+ }
254
+
255
+ const pinnedFields = applyPin(target, pin);
256
+ const providerPinned = pinnedFields.includes("provider");
257
+ const modelPinned = pinnedFields.includes("model");
258
+ const effortPinned = pinnedFields.includes("effort");
259
+ if (pinnedFields.length) factors.pinnedFields = pinnedFields;
260
+
261
+ // Footprint escalation (skip when the model is explicitly pinned — respect the human choice).
262
+ if (!modelPinned) escalateForFootprint(target, work, policy, catalog, factors, warnings);
263
+
264
+ // Model finalization: complexity modulation, then the enabled-model guarantee (a pinned model wins).
265
+ const finalizeModel = (t: DispatchTarget, out: string[], source?: DispatchTarget) => {
266
+ if (!modelPinned || !effortPinned) {
267
+ modulateForComplexity(t, work, policy, bands, catalog, out, { modelPinned, effortPinned, explicitModel: source ? Boolean(source.model) : selectedExplicitModel, explicitEffort: source ? Boolean(source.effort) : selectedExplicitEffort });
268
+ }
269
+ if (!modelPinned) ensureEnabledModel(t, catalog, out);
270
+ if (ctx.targetAvailable && !modelPinned && !t.model) t.model = catalogEntry(catalog, t.provider)?.defaultModel;
271
+ if (ctx.targetAvailable && !effortPinned && !t.effort) {
272
+ t.effort = catalogEntry(catalog, t.provider)?.models.find((model) => model.alias === (t.model ?? catalogEntry(catalog, t.provider)?.defaultModel))?.defaultEffort;
273
+ }
274
+ };
275
+ // #2754 — opt-in overflow onto claude-api pre-empts leaving the Claude family. It is judged on the
276
+ // model that would actually run on claude-api, so that target is finalized before the verdict.
277
+ const paid: DispatchTarget = { ...target, provider: CLAUDE_API_PROVIDER };
278
+ const paidWarnings: string[] = [];
279
+ const paidSource = ctx.apiExpiry?.expiryPolicy?.enabled && !isClaudeSubscription(target.provider) && isClaudeSubscription(matched.target.provider) ? matched.target : undefined;
280
+ if (!providerPinned && (ctx.apiOverflow?.policy?.enabled || ctx.apiExpiry?.expiryPolicy?.enabled)) {
281
+ if (paidSource) {
282
+ Object.assign(paid, { ...paidSource, provider: CLAUDE_API_PROVIDER, ...(modelPinned ? { model: pin.model } : {}), ...(effortPinned ? { effort: pin.effort } : {}) });
283
+ if (!modelPinned) escalateForFootprint(paid, work, policy, catalog, { ...factors }, paidWarnings);
284
+ }
285
+ finalizeModel(paid, paidWarnings, paidSource);
286
+ }
287
+ const paidDrop = controlled ? eligibility(CLAUDE_API_PROVIDER) ?? (preference?.other && avoid?.has(CLAUDE_API_PROVIDER) ? "cross-provider family partition" : undefined) : undefined;
288
+ const constrainPaid = (verdict: ApiOverflowVerdict | undefined) => verdict?.selected && paidDrop ? { selected: false, reason: `${verdict.reason}; claude-api excluded: ${paidDrop}` } : verdict;
289
+ const overflow = providerPinned || !ctx.apiOverflow ? undefined : constrainPaid(decideApiOverflow(target.provider, paid.model, advertised, catalog, ctx.apiOverflow));
290
+ const expiry = providerPinned || !ctx.apiExpiry ? undefined : constrainPaid(decideApiExpiry(matched.target.provider, paid.model, advertised, catalog, ctx.apiExpiry));
291
+ if (expiry) factors.apiExpiry = expiry.selected ? { ...expiry, fromProvider: matched.target.provider, leadTimeMs: ctx.apiExpiry?.expiryPolicy?.leadTimeMs ?? DEFAULT_API_EXPIRY_LEAD_MS } : expiry;
292
+ const expiryWindow = ctx.apiExpiry && inApiExpiryLeadWindow(ctx.apiExpiry.expiryPolicy, ctx.apiExpiry.budget, ctx.apiExpiry.now);
293
+ if (overflow) factors.apiOverflow = expiryWindow ? { selected: false, reason: `monthly expiry policy takes precedence: ${expiry?.reason}` } : overflow.selected ? { ...overflow, fromProvider: target.provider } : overflow;
294
+ if (expiry?.selected) {
295
+ const skipped = { ...target };
296
+ rerouteForBand(skipped, work, policy, bands, catalog, { ...factors }, [], { effortPinned, mustResolveAvailable: ctx.mustResolveAvailable, advertised, preferences, eligibility });
297
+ if (!isClaudeSubscription(skipped.provider) && skipped.provider !== CLAUDE_API_PROVIDER) factors.apiExpiry!.skippedRerouteProvider = skipped.provider;
298
+ }
299
+ if (expiry?.selected || (overflow?.selected && !expiryWindow)) {
300
+ Object.assign(target, paid);
301
+ warnings.push(...paidWarnings);
302
+ } else {
303
+ // Band-aware rerouting (skip when the provider is explicitly pinned). Protects scarce pools
304
+ // and load-shifts large/blocked work onto an abundant one, re-validating footprint + pinned effort.
305
+ if (!providerPinned) rerouteForBand(target, work, policy, bands, catalog, factors, warnings, { effortPinned, mustResolveAvailable: ctx.mustResolveAvailable, advertised, preferences, eligibility, ...(preference?.other ? { avoid } : {}) });
306
+ finalizeModel(target, warnings);
307
+ }
308
+
309
+ if (controlled && !providerPinned && !modelPinned) {
310
+ if (eligibility(target.provider)) throw routingResolutionError(preferences, catalog, eligibility);
311
+ if (ctx.mustResolveAvailable && bandRank(bandFor(target.provider, bands)) > bandRank("normal")) warnings.push(`[CRITICAL] mustResolveAvailable: degraded to ${target.provider} (${bandFor(target.provider, bands)} band). Contention likely.`);
312
+ }
313
+ if (!modelPinned && ctx.targetAvailable && !ctx.targetAvailable(target)) {
314
+ throw new Error(ctx.targetUnavailableReason?.(target) ?? `No eligible online host runs ${target.provider}/${target.model ?? "default"}${target.effort ? ` at effort ${target.effort}` : ""}.`);
315
+ }
316
+ if (factors.preferences) factors.preferences = { ...factors.preferences, excluded: preferenceExclusions(preferences, factors.ranking, (p) => eligibility(p) ?? (!advertised.has(p) ? "not-advertised" : undefined)) };
317
+ // Record the FINAL provider's band + the chosen model's window for transparency.
318
+ factors.band = bandFor(target.provider, bands);
319
+ const subscriptionExpiry = bands.find((b) => b.provider === target.provider)?.expiryPreference;
320
+ if (subscriptionExpiry) factors.subscriptionExpiry = subscriptionExpiry;
321
+ const finalWindow = contextWindowOf(catalog, target.provider, target.model);
322
+ if (finalWindow !== undefined) factors.contextWindowTokens = finalWindow;
323
+ collectBandWarnings(target.provider, work, bands, providerPinned, warnings);
324
+
325
+ const review = planAutoReview(work, policy, bands, catalog, ctx);
326
+
327
+ return {
328
+ target,
329
+ pinned: pinnedFields.length > 0,
330
+ rationale: buildRationale(target, factors),
331
+ factors,
332
+ warnings,
333
+ ...(review ? { review } : {}),
334
+ };
335
+ }
336
+
337
+ function runnableAlternatives(catalog: ProviderCatalogEntry[], advertised: Set<SpawnProvider>, priority: number): DispatchCandidate[] {
338
+ return catalog.filter((entry) => advertised.has(entry.provider) && automaticallyRoutable(entry.provider)).map((entry, i) => {
339
+ const model = entry.models.find((model) => model.alias === entry.defaultModel);
340
+ return { target: { provider: entry.provider, model: model?.alias, effort: model?.defaultEffort }, label: `${entry.provider} runnable catalog alternative`, priority: priority + i };
341
+ });
342
+ }
343
+
344
+ export function dispatchTaskAsync(shape: TaskDispatch | undefined, pin: DispatchPin = {}, ctx: Omit<DispatchContext, "policy" | "bands" | "catalog"> = {}): Promise<DispatchDecision> {
345
+ return dispatchWithLiveContext(shape, pin, ctx, dispatchTask);
346
+ }
347
+
348
+ // ---------------------------------------------------------------------------
349
+ // Policy rule matching
350
+ // ---------------------------------------------------------------------------
351
+
352
+ /**
353
+ * #2516 — provider families: subscriptions that share one model surface but hold INDEPENDENT
354
+ * quota windows (#2513/#2514): claude (primary subscription) and claude-b (second subscription,
355
+ * own credentials + own 5h/7d quota). Family membership is classified canonically by the
356
+ * provider manifest's launch shim (routingFamilySiblings in @humwick/providers: every
357
+ * `claude-relay` manifest is one family), NOT by a hardcoded id list — a future claude-c joins
358
+ * by registering a claude-relay manifest. A policy rule targeting one family member also
359
+ * nominates the others as trailing candidates, so the quota-aware ranker shifts a scarce
360
+ * member's load INSIDE the family (near-capped claude → healthy claude-b) before
361
+ * `rerouteForBand`'s generic healthiest-of-ALL fallback can leave the family for codex/zai.
362
+ */
363
+ function resolvePolicyCandidates(work: TaskDispatch, policy: DispatchPolicy, advertised: Set<SpawnProvider>): DispatchCandidate[] {
364
+ const candidates: DispatchCandidate[] = [];
365
+ for (let i = 0; i < policy.rules.length; i++) {
366
+ const rule = policy.rules[i]!;
367
+ if (rule.enabled === false) continue;
368
+ if (matchesShape(rule.match, work)) {
369
+ candidates.push({ target: rule.target, label: rule.label ?? "rule", priority: i });
370
+ }
371
+ }
372
+ const base = candidates.length ? candidates : [{ target: policy.fallback, label: "fallback (no rule matched)", priority: policy.rules.length }];
373
+ return expandFamilyCandidates(base, advertised);
374
+ }
375
+
376
+ /**
377
+ * #2516 family expansion — append each candidate's manifest-classified siblings that the policy
378
+ * didn't already target explicitly AND that at least one online orchestrator advertises (a
379
+ * catalog entry alone is not live availability — see DispatchContext.advertisedProviders).
380
+ * Siblings trail their origin rule by half a priority slot: the rule's own target still wins
381
+ * ties, while the family fallback ranks ahead of later non-family rules.
382
+ */
383
+ function expandFamilyCandidates(candidates: DispatchCandidate[], advertised: Set<SpawnProvider>): DispatchCandidate[] {
384
+ const explicit = new Set(candidates.map((candidate) => candidate.target.provider));
385
+ const expanded: DispatchCandidate[] = [...candidates];
386
+ for (const candidate of candidates) {
387
+ for (const sibling of routingFamilySiblings(candidate.target.provider) as SpawnProvider[]) {
388
+ if (explicit.has(sibling)) continue;
389
+ explicit.add(sibling);
390
+ if (!advertised.has(sibling)) continue; // no online host advertises it — never route to it
391
+ expanded.push({
392
+ target: { ...candidate.target, provider: sibling },
393
+ label: `${candidate.label} → ${sibling} (family)`,
394
+ priority: candidate.priority + 0.5,
395
+ });
396
+ }
397
+ }
398
+ return expanded;
399
+ }
400
+
401
+ // #3327 — with a matching preference, eligible catalog providers no work-shape rule seeds are ranked too.
402
+ function withPreferredCandidates(candidates: DispatchCandidate[], preferences: RoutingPreferenceEvaluation, catalog: ProviderCatalogEntry[], advertised: Set<SpawnProvider>): DispatchCandidate[] {
403
+ const next = Math.max(0, ...candidates.map((candidate) => candidate.priority)) + 1;
404
+ return [...candidates, ...preferenceAdditions(preferences, candidates.map((c) => c.target.provider), catalog.map((e) => e.provider), (p) => advertised.has(p) && automaticallyRoutable(p))
405
+ .map((provider, i) => ({ target: { provider }, label: `${provider} catalog alternative (routing preference)`, priority: next + i }))];
406
+ }
407
+
408
+ // ---------------------------------------------------------------------------
409
+ // Pin application
410
+ // ---------------------------------------------------------------------------
411
+
412
+ function applyPin(target: DispatchTarget, pin: DispatchPin): string[] {
413
+ const fields: string[] = [];
414
+ if (pin.provider) {
415
+ // A provider change invalidates a provider-specific policy model/effort unless the pin
416
+ // also restates them; clear them so we fall back to that provider's defaults.
417
+ if (pin.provider !== target.provider) {
418
+ if (!pin.model) target.model = undefined;
419
+ if (!pin.effort) target.effort = undefined;
420
+ }
421
+ target.provider = pin.provider;
422
+ fields.push("provider");
423
+ }
424
+ if (pin.model) {
425
+ target.model = pin.model;
426
+ fields.push("model");
427
+ }
428
+ if (pin.effort) {
429
+ target.effort = pin.effort;
430
+ fields.push("effort");
431
+ }
432
+ return fields;
433
+ }
434
+
435
+ // ---------------------------------------------------------------------------
436
+ // Footprint → context-window escalation
437
+ // ---------------------------------------------------------------------------
438
+
439
+ function escalateForFootprint(
440
+ target: DispatchTarget,
441
+ work: TaskDispatch,
442
+ policy: DispatchPolicy,
443
+ catalog: ProviderCatalogEntry[],
444
+ factors: DispatchFactors,
445
+ warnings: string[],
446
+ ): void {
447
+ const footprint = work.contextFootprint;
448
+ if (!footprint) return;
449
+ const minTokens = policy.footprintMinContextTokens?.[footprint];
450
+ if (!minTokens) return;
451
+ const entry = catalogEntry(catalog, target.provider);
452
+ if (!entry) return;
453
+ const alias = target.model ?? entry.defaultModel;
454
+ const current = alias ? contextWindowFromEntry(entry, alias) : undefined;
455
+ if (current !== undefined && current >= minTokens) return; // already big enough
456
+
457
+ // Prefer widening the SAME model family (opus-4.8 → opus-4.8[1m]); fall back to any other
458
+ // sufficient model on this provider before giving up (e.g. after a reroute reset us to a small
459
+ // default). Smallest sufficient window wins so we don't over-allocate.
460
+ const pick = biggestSufficient(entry, minTokens, alias);
461
+ if (pick && pick.alias !== alias) {
462
+ target.model = pick.alias;
463
+ factors.escalatedForFootprint = true;
464
+ return;
465
+ }
466
+ if (!pick && current === undefined) return; // unknown window AND no sufficient alternative — can't assert a gap
467
+ // Nothing on this provider satisfies the footprint — surface it rather than silently downgrade.
468
+ warnings.push(
469
+ `contextFootprint=${footprint} wants ≥${minTokens} tokens but ${target.provider}/${alias ?? "default"} offers ${current ?? "unknown"}; no model on ${target.provider} meets it — review the pick.`,
470
+ );
471
+ }
472
+
473
+ /**
474
+ * Validate that `target.model` is enabled on the chosen provider. When it is disabled or
475
+ * unavailable, replace it with the first enabled model and emit a warning. Callers must skip
476
+ * this when the model was explicitly pinned (pin takes precedence, even if broken).
477
+ */
478
+ function ensureEnabledModel(target: DispatchTarget, catalog: ProviderCatalogEntry[], warnings: string[]): void {
479
+ const entry = catalogEntry(catalog, target.provider);
480
+ if (!entry) return;
481
+ const alias = target.model ?? entry.defaultModel;
482
+ if (!alias) return;
483
+ const model = entry.models.find((m) => m.alias === alias || m.providerModel === alias);
484
+ if (model && !model.disabled && !model.unavailable) return;
485
+ const enabled = entry.models.find((m) => !m.disabled && !m.unavailable);
486
+ if (enabled) {
487
+ warnings.push(`Model ${alias} is disabled/unavailable on ${target.provider}; resolved to ${enabled.alias} instead.`);
488
+ target.model = enabled.alias;
489
+ } else {
490
+ warnings.push(`No enabled models on ${target.provider}; spawn may fail.`);
491
+ }
492
+ }
493
+
494
+ // The smallest-window model on this provider whose window meets the requirement. Prefers the
495
+ // same model family as `alias` (e.g. opus-4.8 → opus-4.8[1m]) when one qualifies, else any family.
496
+ function biggestSufficient(
497
+ entry: ProviderCatalogEntry,
498
+ minTokens: number,
499
+ alias: string | undefined,
500
+ ): ProviderModelCatalogEntry | undefined {
501
+ const sufficient = entry.models
502
+ .filter((m) => !m.disabled && !m.unavailable)
503
+ .map((m) => ({ model: m, window: m.limits?.contextWindowTokens?.value }))
504
+ .filter((c): c is { model: ProviderModelCatalogEntry; window: number } => typeof c.window === "number" && c.window >= minTokens)
505
+ .sort((a, b) => a.window - b.window);
506
+ const base = alias ? familyBase(alias) : undefined;
507
+ const sameFamily = base ? sufficient.find((c) => familyBase(c.model.alias) === base) : undefined;
508
+ return (sameFamily ?? sufficient[0])?.model;
509
+ }
510
+
511
+ function familyBase(alias: string): string {
512
+ return alias.trim().toLowerCase().replace(/\[[^\]]+\]$/, "");
513
+ }
514
+
515
+ function modulateForComplexity(
516
+ target: DispatchTarget,
517
+ work: TaskDispatch,
518
+ policy: DispatchPolicy,
519
+ bands: ProviderQuotaBand[],
520
+ catalog: ProviderCatalogEntry[],
521
+ warnings: string[],
522
+ opts: { modelPinned: boolean; effortPinned: boolean; explicitModel: boolean; explicitEffort: boolean },
523
+ ): void {
524
+ const complexity = work.complexity;
525
+ const critical = work.criticality === "high";
526
+ const entry = catalogEntry(catalog, target.provider);
527
+ if (!entry) return;
528
+ const minContextTokens = work.contextFootprint ? policy.footprintMinContextTokens?.[work.contextFootprint] : undefined;
529
+ if (complexity === "trivial" && !critical) {
530
+ if (!opts.modelPinned && !opts.explicitModel) {
531
+ const cheaper = cheapestModel(entry, minContextTokens, target.effort);
532
+ if (cheaper && cheaper.alias !== target.model) target.model = cheaper.alias;
533
+ }
534
+ if (!opts.effortPinned && !opts.explicitEffort) {
535
+ const low = effortIfSupported(entry, target.model, "low");
536
+ if (low) target.effort = low;
537
+ }
538
+ return;
539
+ }
540
+ if (complexity === "complex" || critical) {
541
+ if (!opts.modelPinned && !opts.explicitModel) {
542
+ const richer = richestModel(entry, minContextTokens, target.effort);
543
+ if (richer && richer.alias !== target.model) target.model = richer.alias;
544
+ }
545
+ if (!opts.effortPinned && !opts.explicitEffort) {
546
+ const high = effortIfSupported(entry, target.model, "high") ?? effortIfSupported(entry, target.model, "xhigh") ?? effortIfSupported(entry, target.model, "max");
547
+ if (high) target.effort = high;
548
+ }
549
+ return;
550
+ }
551
+ if (work.type === "mechanical" && !critical && !opts.effortPinned && !opts.explicitEffort) {
552
+ const quota = quotaFor(target.provider, bands);
553
+ if ((quota.band === "caution" || quota.band === "avoid-large") && effortIfSupported(entry, target.model, "low")) {
554
+ target.effort = "low";
555
+ warnings.push(`Quota pressure on ${target.provider} bounded ${work.type ?? "trivial"} work to low effort.`);
556
+ }
557
+ }
558
+ }
559
+
560
+ function cheapestModel(entry: ProviderCatalogEntry, minContextTokens?: number, effort?: string): ProviderModelCatalogEntry | undefined {
561
+ return contextEligibleModels(entry, minContextTokens)
562
+ .filter((model) => !effort || model.efforts.includes(effort))
563
+ .sort((a, b) => {
564
+ const tierDelta = modelTier(a.alias) - modelTier(b.alias);
565
+ if (tierDelta) return tierDelta;
566
+ return minContextTokens ? (a.limits?.contextWindowTokens?.value ?? Number.POSITIVE_INFINITY) - (b.limits?.contextWindowTokens?.value ?? Number.POSITIVE_INFINITY) : 0;
567
+ })[0];
568
+ }
569
+
570
+ function richestModel(entry: ProviderCatalogEntry, minContextTokens?: number, effort?: string): ProviderModelCatalogEntry | undefined {
571
+ return contextEligibleModels(entry, minContextTokens)
572
+ .filter((model) => !effort || model.efforts.includes(effort))
573
+ .sort((a, b) => {
574
+ const tierDelta = modelTier(b.alias) - modelTier(a.alias);
575
+ if (tierDelta) return tierDelta;
576
+ return minContextTokens ? (b.limits?.contextWindowTokens?.value ?? Number.NEGATIVE_INFINITY) - (a.limits?.contextWindowTokens?.value ?? Number.NEGATIVE_INFINITY) : 0;
577
+ })[0];
578
+ }
579
+
580
+ function enabledModels(entry: ProviderCatalogEntry): ProviderModelCatalogEntry[] {
581
+ return entry.models.filter((m) => !m.disabled && !m.unavailable);
582
+ }
583
+
584
+ function contextEligibleModels(entry: ProviderCatalogEntry, minContextTokens: number | undefined): ProviderModelCatalogEntry[] {
585
+ const models = enabledModels(entry);
586
+ if (!minContextTokens) return models;
587
+ return models.filter((model) => (model.limits?.contextWindowTokens?.value ?? 0) >= minContextTokens);
588
+ }
589
+
590
+ function modelTier(alias: string): number {
591
+ const lower = alias.toLowerCase();
592
+ if (lower.includes("haiku") || lower.includes("mini") || lower.includes("5.4")) return 0;
593
+ if (lower.includes("opus") || lower.includes("pro") || lower.includes("[1m]")) return 2;
594
+ return 1;
595
+ }
596
+
597
+ // ---------------------------------------------------------------------------
598
+ // Quota-band aware rerouting
599
+ // ---------------------------------------------------------------------------
600
+
601
+ function rerouteForBand(
602
+ target: DispatchTarget,
603
+ work: TaskDispatch,
604
+ policy: DispatchPolicy,
605
+ bands: ProviderQuotaBand[],
606
+ catalog: ProviderCatalogEntry[],
607
+ factors: DispatchFactors,
608
+ warnings: string[],
609
+ opts: { effortPinned: boolean; mustResolveAvailable?: boolean; advertised: Set<SpawnProvider>; avoid?: ReadonlySet<SpawnProvider>; preferences?: RoutingPreferenceEvaluation; eligibility: (provider: SpawnProvider) => string | undefined },
610
+ ): void {
611
+ const band = bandFor(target.provider, bands);
612
+ const blocked = isBlocked(target.provider, bands);
613
+ const isLarge = work.contextFootprint === "large";
614
+ // #2656 — a disabled provider must always be left, regardless of its (stale) band.
615
+ const disabled = !isProviderEnabled(catalogEntry(catalog, target.provider));
616
+ // Reroute when the pool is at capacity / hard-avoid, or a large job lands on an avoid-large pool.
617
+ const controlled = !!opts.preferences?.matched.length;
618
+ if (controlled && !opts.eligibility(target.provider)) return;
619
+ const mustMove = (controlled && !!opts.eligibility(target.provider)) || disabled || blocked || band === "hard-avoid" || (isLarge && band === "avoid-large");
620
+ if (!mustMove) return;
621
+
622
+ const alt = healthiestAlternative(new Set([target.provider, ...(opts.avoid ?? [])]), bands, catalog, opts.mustResolveAvailable, opts.advertised, opts.preferences, opts.eligibility);
623
+ if (!alt) {
624
+ warnings.push(`${target.provider} band=${band}${blocked ? " (at capacity)" : ""} and no healthier provider is available — keeping it; expect contention.`);
625
+ return;
626
+ }
627
+ if (!disabled && opts.mustResolveAvailable !== true && bandRank(alt.band) >= bandRank(band)) {
628
+ warnings.push(`${target.provider} band=${band}${blocked ? " (at capacity)" : ""} and no healthier provider is available — keeping it; expect contention.`);
629
+ return;
630
+ }
631
+ if (alt.degraded) {
632
+ warnings.push(
633
+ `[CRITICAL] mustResolveAvailable: all prefer/normal providers unavailable; degraded to ${alt.provider} (${alt.degradedReason ?? "degraded tier"}). Contention likely.`,
634
+ );
635
+ }
636
+ const altEntry = catalogEntry(catalog, alt.provider)!;
637
+ factors.reroutedFromProvider = target.provider;
638
+ factors.ranking = markRankingSelected(alt.ranking, alt.target, factors.ranking);
639
+ factors.rankingReason = alt.reason;
640
+ warnings.push(`Rerouted ${target.provider} (${disabled ? "disabled" : `band=${band}${blocked ? ", at capacity" : ""}`}) → ${alt.provider} (band=${alt.band}) to ${disabled ? "leave the disabled provider" : alt.band === "prefer" ? "use abundant quota" : "avoid the scarce pool"}.`);
641
+ const prevEffort = target.effort;
642
+ target.provider = alt.provider;
643
+ // Provider changed → model is provider-specific; reset to the new provider's default, then
644
+ // RE-VALIDATE the footprint on the new provider (it may widen to a 1M model, or warn if it
645
+ // cannot meet the footprint) so a large job is never silently downgraded onto a small window.
646
+ target.model = altEntry.defaultModel;
647
+ // Re-derive escalation against the NEW provider — the prior provider's escalation flag is stale.
648
+ delete factors.escalatedForFootprint;
649
+ escalateForFootprint(target, work, policy, catalog, factors, warnings);
650
+ // Effort: a pinned effort is authoritative and survives the reroute (warn if the rerouted model
651
+ // doesn't list it, rather than silently dropping it). An unpinned effort is kept only if supported.
652
+ if (opts.effortPinned) {
653
+ target.effort = prevEffort;
654
+ if (prevEffort && effortIfSupported(altEntry, target.model, prevEffort) === undefined) {
655
+ warnings.push(`Pinned effort '${prevEffort}' isn't listed for ${alt.provider}/${target.model ?? "default"}; honoring the pin anyway.`);
656
+ }
657
+ } else {
658
+ target.effort = effortIfSupported(altEntry, target.model, prevEffort);
659
+ }
660
+ }
661
+
662
+ // Best advertised, automatically routable provider outside `avoid` — not only those with
663
+ // a quota advisory. A provider with no quota record defaults to the
664
+ // "normal" band (via bandFor), so a healthy catalog provider is never skipped just because it has
665
+ // no burn data yet. Prefer "prefer" band, then "normal"; never a blocked one.
666
+ //
667
+ // When mustResolveAvailable is set (#901 degrade-never-refuse), widens search in tiers when
668
+ // no prefer/normal provider is available: caution → avoid-large → hard-avoid-but-not-blocked
669
+ // → least-utilized blockedNow.
670
+ // A `degraded` flag + `degradedReason` signals to the caller to emit a louder warning.
671
+ //
672
+ // A static catalog registration is not availability or permission to route onto paid API.
673
+ function healthiestAlternative(
674
+ avoid: ReadonlySet<SpawnProvider>,
675
+ bands: ProviderQuotaBand[],
676
+ catalog: ProviderCatalogEntry[],
677
+ mustResolveAvailable: boolean | undefined,
678
+ advertised: Set<SpawnProvider>,
679
+ preferences: RoutingPreferenceEvaluation | undefined,
680
+ eligibility: (provider: SpawnProvider) => string | undefined,
681
+ ): { target: DispatchTarget; provider: SpawnProvider; band: QuotaBand; degraded?: boolean; degradedReason?: string; ranking: DispatchRankingEntry[]; reason: string } | undefined {
682
+ const entries = catalog.filter((c) => !avoid.has(c.provider) && advertised.has(c.provider) && automaticallyRoutable(c.provider));
683
+ const candidates = entries.map((entry, priority) => ({
684
+ target: { provider: entry.provider, ...(entry.defaultModel ? { model: entry.defaultModel } : {}) },
685
+ label: `${entry.provider} catalog alternative`,
686
+ priority,
687
+ }));
688
+ const ranked = rankCandidates(candidates, bands, { allowBlockedLastResort: !preferences?.matched.length && mustResolveAvailable === true, preferences, eligibility });
689
+ const winner = ranked.winner;
690
+ if (!winner) return undefined;
691
+ const band = bandFor(winner.target.provider, bands);
692
+ const blocked = isBlocked(winner.target.provider, bands);
693
+ const degraded = mustResolveAvailable === true && (bandRank(band) > bandRank("normal") || blocked);
694
+ return {
695
+ target: winner.target,
696
+ provider: winner.target.provider,
697
+ band,
698
+ ranking: ranked.ranking,
699
+ reason: ranked.reason,
700
+ ...(degraded ? { degraded: true, degradedReason: blocked ? "blockedNow provider (tier 4 last-resort — ALL providers at capacity)" : `${band} band degraded tier` } : {}),
701
+ };
702
+ }
703
+
704
+ /** #3105 — providers that run the same models: every claude-relay manifest (subscriptions and the API) is Claude. */
705
+ export function sameModelProviders(provider: SpawnProvider): SpawnProvider[] {
706
+ const claude = getManifest(provider)?.shim?.kind === "claude-relay";
707
+ return claude ? getAllManifests().filter((m) => m.shim?.kind === "claude-relay").map((m) => m.id as SpawnProvider) : [provider];
708
+ }
709
+
710
+ /** #3105 — the soft avoid: advertised policy candidates outside `avoid` with a viable rank win, then the healthiest
711
+ * advertised provider outside it; with neither it stays inside `avoid`, still on an advertised provider, so the spawn never waits. */
712
+ function preferOtherProvider(candidates: DispatchCandidate[], avoid: ReadonlySet<SpawnProvider>, advertised: Set<SpawnProvider>, bands: ProviderQuotaBand[], catalog: ProviderCatalogEntry[], preferences: RoutingPreferenceEvaluation, eligibility: (provider: SpawnProvider) => string | undefined): { candidates: DispatchCandidate[]; other: boolean } {
713
+ const live = candidates.filter((candidate) => advertised.has(candidate.target.provider));
714
+ const others = live.filter((candidate) => !avoid.has(candidate.target.provider));
715
+ if (rankCandidates(others, bands, { preferences, eligibility }).winner) return { candidates: others, other: true };
716
+ const alt = healthiestAlternative(avoid, bands, catalog, false, advertised, preferences, eligibility);
717
+ if (alt) return { candidates: [{ target: alt.target, label: `${alt.provider} (other than ${[...avoid].join("/")})`, priority: 0 }], other: true };
718
+ if (live.length) return { candidates: live, other: false };
719
+ const only = healthiestAlternative(new Set(), bands, catalog, false, advertised, preferences, eligibility);
720
+ return { candidates: only ? [{ target: only.target, label: `${only.provider} (advertised)`, priority: 0 }] : candidates, other: false };
721
+ }
722
+
723
+ function collectBandWarnings(provider: SpawnProvider, work: TaskDispatch, bands: ProviderQuotaBand[], providerPinned: boolean, warnings: string[]): void {
724
+ if (!providerPinned) return; // non-pinned scarce pools were already handled by reroute
725
+ const band = bandFor(provider, bands);
726
+ if (band === "hard-avoid" || isBlocked(provider, bands)) {
727
+ warnings.push(`Pinned provider ${provider} is band=${band}${isBlocked(provider, bands) ? " (at capacity)" : ""}; honoring the pin but it may be slow or blocked.`);
728
+ } else if (band === "avoid-large" && work.contextFootprint === "large") {
729
+ warnings.push(`Pinned provider ${provider} is band=avoid-large for a large job; honoring the pin.`);
730
+ }
731
+ }
732
+
733
+ // ---------------------------------------------------------------------------
734
+ // Auto-review planning
735
+ // ---------------------------------------------------------------------------
736
+
737
+ function planAutoReview(
738
+ work: TaskDispatch,
739
+ policy: DispatchPolicy,
740
+ bands: ProviderQuotaBand[],
741
+ catalog: ProviderCatalogEntry[],
742
+ ctx: DispatchContext,
743
+ ): ReviewPlan | undefined {
744
+ const cfg = policy.autoReview;
745
+ if (!cfg) return undefined;
746
+ const reason = autoReviewReason(work, cfg);
747
+ if (!reason) return undefined;
748
+ // The review Task's own work-shape: a review, inheriting the parent's criticality. Its target
749
+ // is resolved through the SAME policy (so review routing stays single-source) — either the
750
+ // explicit autoReview.target or whatever the review-type rules pick. No pin, no recursion into
751
+ // auto-review (a review of a review isn't wanted).
752
+ const reviewShape: TaskDispatch = {
753
+ type: "review",
754
+ ...(work.criticality ? { criticality: work.criticality } : {}),
755
+ ...(work.complexity ? { complexity: work.complexity } : {}),
756
+ };
757
+ const reviewPolicy: DispatchPolicy = cfg.target
758
+ ? { ...policy, rules: [{ label: "auto-review target", match: { type: "review" }, target: cfg.target }, ...policy.rules], autoReview: undefined }
759
+ : { ...policy, autoReview: undefined };
760
+ const decision = dispatchTask(reviewShape, {}, { targetAvailable: ctx.targetAvailable, advertisedProviders: ctx.advertisedProviders, mustResolveAvailable: ctx.mustResolveAvailable, policy: reviewPolicy, bands, catalog });
761
+ return {
762
+ dispatch: reviewShape,
763
+ target: decision.target,
764
+ rationale: decision.rationale,
765
+ reason,
766
+ };
767
+ }
768
+
769
+ function autoReviewReason(work: TaskDispatch, cfg: DispatchAutoReview): string | undefined {
770
+ if (work.criticality && cfg.whenCriticality?.includes(work.criticality)) return `criticality=${work.criticality}`;
771
+ if (work.complexity && cfg.whenComplexity?.includes(work.complexity)) return `complexity=${work.complexity}`;
772
+ return undefined;
773
+ }
774
+
775
+ // ---------------------------------------------------------------------------
776
+ // Rationale rendering
777
+ // ---------------------------------------------------------------------------
778
+
779
+ export function buildRationale(target: DispatchTarget, factors: DispatchFactors): string {
780
+ const head = `${target.model ?? `${target.provider} default`}${target.effort ? ` ${target.effort}` : ""}`;
781
+ const shape = [
782
+ factors.type ? `type=${factors.type}` : undefined,
783
+ factors.complexity ? `complexity=${factors.complexity}` : undefined,
784
+ factors.contextFootprint ? `contextFootprint=${factors.contextFootprint}` : undefined,
785
+ factors.criticality ? `criticality=${factors.criticality}` : undefined,
786
+ ].filter(Boolean).join(", ");
787
+ const parts = [`${head}:`];
788
+ if (shape) parts.push(shape + ";");
789
+ parts.push(`matched ${factors.matchedRule};`);
790
+ parts.push(`${capitalize(target.provider)} band=${factors.band}`);
791
+ if (factors.escalatedForFootprint) parts.push(`(escalated to ${target.model} for footprint)`);
792
+ if (factors.reroutedFromProvider) parts.push(`(rerouted from ${factors.reroutedFromProvider})`);
793
+ if (factors.apiOverflow?.selected) parts.push(`(api overflow from ${factors.apiOverflow.fromProvider}: ${factors.apiOverflow.reason})`);
794
+ if (factors.apiExpiry) parts.push(`(api expiry${factors.apiExpiry.selected ? ` from ${factors.apiExpiry.fromProvider}` : " declined"}: ${factors.apiExpiry.reason}${factors.apiExpiry.skippedRerouteProvider ? `; cross-family reroute to ${factors.apiExpiry.skippedRerouteProvider} skipped` : ""})`);
795
+ if (factors.subscriptionExpiry) parts.push(`(subscription expiry: ${factors.subscriptionExpiry})`);
796
+ if (factors.rankingReason) parts.push(`(${factors.rankingReason})`);
797
+ const preferences = preferenceRationale(factors.preferences, target.provider);
798
+ if (preferences) parts.push(`(${preferences})`);
799
+ if (factors.pinSources) parts.push(`(sources: ${Object.entries(factors.pinSources).map(([field, source]) => `${field}=${source}`).join(", ")})`);
800
+ if (factors.constraintOverrides?.length) parts.push(`(requirements overridden: ${factors.constraintOverrides.map((override) => `${override.ruleId} by ${override.source}`).join(", ")})`);
801
+ if (factors.pinnedFields?.length) parts.push(`(pinned: ${factors.pinnedFields.join(", ")})`);
802
+ return parts.join(" ");
803
+ }
804
+
805
+ function capitalize(value: string): string {
806
+ return value ? value[0]!.toUpperCase() + value.slice(1) : value;
807
+ }
808
+
809
+ // ---------------------------------------------------------------------------
810
+ // Catalog / band helpers
811
+ // ---------------------------------------------------------------------------
812
+
813
+ function catalogEntry(catalog: ProviderCatalogEntry[], provider: SpawnProvider): ProviderCatalogEntry | undefined {
814
+ return catalog.find((c) => c.provider === provider);
815
+ }
816
+
817
+ function contextWindowOf(catalog: ProviderCatalogEntry[], provider: SpawnProvider, model: string | undefined): number | undefined {
818
+ const entry = catalogEntry(catalog, provider);
819
+ if (!entry) return undefined;
820
+ const alias = model ?? entry.defaultModel;
821
+ return alias ? contextWindowFromEntry(entry, alias) : undefined;
822
+ }
823
+
824
+ function contextWindowFromEntry(entry: ProviderCatalogEntry, alias: string): number | undefined {
825
+ const model = entry.models.find((m) => m.alias === alias) ?? entry.models.find((m) => m.providerModel === alias);
826
+ return model?.limits?.contextWindowTokens?.value;
827
+ }
828
+
829
+ function effortIfSupported(entry: ProviderCatalogEntry, alias: string | undefined, effort: string | undefined): string | undefined {
830
+ if (!effort || !alias) return undefined;
831
+ const model = entry.models.find((m) => m.alias === alias);
832
+ return model && model.efforts.includes(effort) ? effort : undefined;
833
+ }
834
+
835
+ function bandFor(provider: SpawnProvider, bands: ProviderQuotaBand[]): QuotaBand {
836
+ return bands.find((b) => b.provider === provider)?.band ?? "normal";
837
+ }
838
+
839
+ function isBlocked(provider: SpawnProvider, bands: ProviderQuotaBand[]): boolean {
840
+ return bands.find((b) => b.provider === provider)?.blockedNow ?? false;
841
+ }