@desplega.ai/agent-swarm 1.168.0 → 1.171.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 (410) hide show
  1. package/README.md +11 -2
  2. package/dist/{acp-adapter-zhejfecx.js → acp-adapter-1z9p3fvx.js} +6 -6
  3. package/dist/{actions-7jg840nr.js → actions-rc2yjk8a.js} +41 -33
  4. package/dist/{amp-adapter-ye6rnetm.js → amp-adapter-ypyf5s1x.js} +6 -6
  5. package/dist/{anthropic-messages-13yn502s.js → anthropic-messages-etkbxhhy.js} +11 -11
  6. package/dist/{app-ffes2kyf.js → app-04ab2s0z.js} +10 -10
  7. package/dist/{artifact-fey7dvj9.js → artifact-eczsknc3.js} +6 -3
  8. package/dist/{assistant-fhm5smyz.js → assistant-vhmjd8wf.js} +47 -36
  9. package/dist/{azure-openai-responses-9st34pfz.js → azure-openai-responses-xap57x4b.js} +7 -7
  10. package/dist/{boot-reembed-jvfadhsk.js → boot-reembed-3p0m259x.js} +9 -9
  11. package/dist/{boot-reembed-20q3nzvg.js → boot-reembed-wew3gwk8.js} +9 -9
  12. package/dist/{boot-scrub-sweep-jtfajzve.js → boot-scrub-sweep-5ytwtq24.js} +10 -10
  13. package/dist/{boot-seeds-9qt0j8j2.js → boot-seeds-s8p2xry8.js} +13 -13
  14. package/dist/{claude-adapter-a8znhthz.js → claude-adapter-akrzg6jh.js} +16 -16
  15. package/dist/{claude-managed-adapter-tzwxy803.js → claude-managed-adapter-kqqqhp2q.js} +3 -3
  16. package/dist/{claude-managed-setup-nrhfx5b0.js → claude-managed-setup-bnmjarjc.js} +12 -9
  17. package/dist/{claude-sdk-session-7x7chdrs.js → claude-sdk-session-exq1jadx.js} +7818 -7721
  18. package/dist/{cli-g6gx2dn1.js → cli-01qndrvw.js} +17080 -19099
  19. package/dist/{cli-74ez9b66.js → cli-0d2rqhvq.js} +584 -75
  20. package/dist/cli-0p3enk35.js +188 -0
  21. package/dist/cli-1srmzpr3.js +16 -0
  22. package/dist/{cli-6bpvv8h4.js → cli-231av4y6.js} +7 -7
  23. package/dist/{cli-9q0bh411.js → cli-280gnz4v.js} +2 -2
  24. package/dist/{cli-mv2520nm.js → cli-2bw3w47j.js} +1 -1
  25. package/dist/{cli-fqq06kkb.js → cli-2qbs2tvf.js} +22 -14
  26. package/dist/{cli-efnd2kce.js → cli-2rbt7at8.js} +6 -1
  27. package/dist/{cli-xvc3q9br.js → cli-451ks6aw.js} +1 -1
  28. package/dist/{cli-0jngabtb.js → cli-4bm25xtw.js} +2 -2
  29. package/dist/{cli-zp38xvtm.js → cli-5rqrj7q0.js} +1 -1
  30. package/dist/{cli-km4x66j0.js → cli-5y67yrt6.js} +13 -13
  31. package/dist/{cli-nctfv2yy.js → cli-62bwwc2q.js} +8 -8
  32. package/dist/cli-6xxxb8qt.js +2084 -0
  33. package/dist/cli-6zx22mv6.js +0 -0
  34. package/dist/{cli-zp67qg5x.js → cli-7a0sde2x.js} +72 -1
  35. package/dist/{cli-v1w7pbd8.js → cli-7jykv7ef.js} +1 -1
  36. package/dist/{cli-rfphkzh5.js → cli-7pz3b7x5.js} +24 -4
  37. package/dist/{cli-mb75wpxf.js → cli-81r1wjyv.js} +1 -1
  38. package/dist/{cli-svah6b6w.js → cli-8mr695sb.js} +9 -5
  39. package/dist/{cli-f14fvzag.js → cli-a1b9b32n.js} +6 -1
  40. package/dist/cli-cd0hv9nh.js +32 -0
  41. package/dist/{cli-rr5z1j4p.js → cli-ctret352.js} +691 -213
  42. package/dist/{cli-wt7ccy4r.js → cli-d161g69q.js} +9 -1
  43. package/dist/cli-db3m6zdt.js +362 -0
  44. package/dist/{cli-g5erf0zt.js → cli-e2prcx5m.js} +31 -0
  45. package/dist/{cli-hf5s9pgf.js → cli-e3pmyt39.js} +1 -1
  46. package/dist/{cli-pgehz8e1.js → cli-ec7hrgqp.js} +404 -89
  47. package/dist/{cli-ng1pmdx6.js → cli-erbp6b4g.js} +10 -7
  48. package/dist/{cli-9k7mqz00.js → cli-ge593j7e.js} +30 -3
  49. package/dist/{cli-5qkcdv8c.js → cli-gmdajfw5.js} +3 -3
  50. package/dist/cli-h8w3fg83.js +17 -0
  51. package/dist/{cli-xvdgasgy.js → cli-hsem16hb.js} +114 -9
  52. package/dist/{cli-ytmmyj7f.js → cli-hsk5gd15.js} +9 -5
  53. package/dist/{cli-aj1e0h0d.js → cli-jxsgrnmq.js} +201 -37
  54. package/dist/{cli-tc5zec7v.js → cli-k2v5x13t.js} +2 -2
  55. package/dist/{cli-69egj654.js → cli-m4csbs67.js} +2 -2
  56. package/dist/{cli-43jg9xdw.js → cli-mzj3aqac.js} +3 -3
  57. package/dist/{cli-p5jqk8fr.js → cli-n805bb98.js} +1 -1
  58. package/dist/{cli-ew0c3a1j.js → cli-n8ybnv1k.js} +3 -3
  59. package/dist/{cli-j05x7pnb.js → cli-nkjwe4z7.js} +219 -41
  60. package/dist/{cli-jb931ba2.js → cli-p2pjfq1r.js} +2 -2
  61. package/dist/{cli-ee0402n1.js → cli-p8f7dqgt.js} +871 -2980
  62. package/dist/{cli-r7eeddkq.js → cli-ph3145b7.js} +3 -3
  63. package/dist/cli-ppy4nnnh.js +168 -0
  64. package/dist/cli-r455yd58.js +832 -0
  65. package/dist/{cli-mxvnnv5q.js → cli-rrbctenq.js} +2 -2
  66. package/dist/{cli-47zfzshm.js → cli-s88my3br.js} +40 -28
  67. package/dist/{cli-9q24yyvs.js → cli-srmej5tp.js} +3 -3
  68. package/dist/{cli-bcspch6h.js → cli-tg8q0b5y.js} +14 -11
  69. package/dist/cli-w0zx9ya1.js +1351 -0
  70. package/dist/cli-wfvedq5w.js +2659 -0
  71. package/dist/{cli-ewhwpyrb.js → cli-x207g4w1.js} +1 -1
  72. package/dist/{cli-fhj4y16f.js → cli-x3fy2tgp.js} +2 -2
  73. package/dist/{cli-7mhy3ths.js → cli-x61srfpp.js} +5 -5
  74. package/dist/{cli-9q3wt23f.js → cli-x6z90nq9.js} +1 -1
  75. package/dist/{cli-jbzbr36n.js → cli-y1j1ggbf.js} +8 -8
  76. package/dist/{cli-jvmtxqtc.js → cli-ywh2a87k.js} +7 -2
  77. package/dist/{cli-3qhyh31j.js → cli-ywm1azg9.js} +6 -0
  78. package/dist/{cli-z48ggfyq.js → cli-zxm9p3x4.js} +2 -2
  79. package/dist/cli.js +49 -28
  80. package/dist/{codex-adapter-n63k33d3.js → codex-adapter-9ag75whm.js} +13 -13
  81. package/dist/{codex-hook-15dgc4cb.js → codex-hook-7ba15hjd.js} +7 -5
  82. package/dist/{codex-login-g1cyt5zm.js → codex-login-841kv5fk.js} +7 -5
  83. package/dist/{codex-session-runner-xkxfd81a.js → codex-session-runner-9fp7y4cf.js} +13 -13
  84. package/dist/{commands-q4mfhn51.js → commands-d7eah0y9.js} +11 -11
  85. package/dist/controller-hq5ggpcp.js +193 -0
  86. package/dist/controllers-connect-8t0k65x2.js +265 -0
  87. package/dist/{cursor-adapter-v8mm6bp5.js → cursor-adapter-t4pr1m3c.js} +6 -6
  88. package/dist/db-2rmd23wq.js +71 -0
  89. package/dist/{db-1t0bj3pc.js → db-sp39qv72.js} +9 -9
  90. package/dist/{devin-adapter-bffjj5n4.js → devin-adapter-xgtj680j.js} +2 -2
  91. package/dist/{dispatcher-k1fhavcf.js → dispatcher-g7fsybsd.js} +32 -28
  92. package/dist/docker-f503k9p0.js +201 -0
  93. package/dist/{dsh-adapter-5423p70m.js → dsh-adapter-2h8m4cab.js} +5 -5
  94. package/dist/e2b-66xra4az.js +202 -0
  95. package/dist/{e2b-nd50eccg.js → e2b-xwhyj8cw.js} +43 -527
  96. package/dist/{event-bus-vnfthafg.js → event-bus-vjtv82gm.js} +2 -2
  97. package/dist/{grok-adapter-phrndeb8.js → grok-adapter-1err1me7.js} +7 -7
  98. package/dist/{handlers-59ywqwzh.js → handlers-c7yggm37.js} +35 -31
  99. package/dist/heartbeat-dkm924fk.js +124 -0
  100. package/dist/{hook-atj0swc2.js → hook-g8e7sfnf.js} +14 -14
  101. package/dist/{hook-mew1chq9.js → hook-wgx4exw6.js} +21 -18
  102. package/dist/{http-ef2fnn9v.js → http-1d23k928.js} +11499 -9018
  103. package/dist/{index-9fc2h7ww.js → index-gm10tmye.js} +32 -28
  104. package/dist/{index-w2yhye23.js → index-q7cj9bn2.js} +41 -29
  105. package/dist/{index-48pb9erw.js → index-va4zbvzp.js} +42 -37
  106. package/dist/{index-gr69c43q.js → index-vertaxs1.js} +9 -9
  107. package/dist/{index-h26wjcfy.js → index-y5vvczrs.js} +62 -24
  108. package/dist/{keepalive-qhcqz56v.js → keepalive-1jc5e7ct.js} +11 -11
  109. package/dist/{lead-hpk5r3b1.js → lead-yxw2f1sg.js} +52 -48
  110. package/dist/{maintenance-nvkyp2xe.js → maintenance-h7w2m10y.js} +9 -9
  111. package/dist/{node-8zkdq42h.js → node-c9we95xf.js} +9 -9
  112. package/dist/{node-qm9eb6z0.js → node-fkajaq96.js} +1 -1
  113. package/dist/{oauth-refresh-sweep-ngskthwh.js → oauth-refresh-sweep-wh9ypd1b.js} +10 -10
  114. package/dist/{onboard-yfnkqhxc.js → onboard-dfr9j762.js} +25 -15
  115. package/dist/{openai-codex-responses-jzxkta9b.js → openai-codex-responses-pgvtddvv.js} +3 -3
  116. package/dist/{openai-responses-m3g43rrt.js → openai-responses-9dyzwzkr.js} +9 -9
  117. package/dist/{opencode-adapter-yjyqynzf.js → opencode-adapter-f1zby94p.js} +3 -3
  118. package/dist/{otel-impl-hhm64r6m.js → otel-impl-and31m5s.js} +5 -5
  119. package/dist/{pi-mono-adapter-0eg8kw2c.js → pi-mono-adapter-fx6k5wwh.js} +40 -28
  120. package/dist/{pricing-refresh-35f91nx2.js → pricing-refresh-23zr6j3w.js} +11 -11
  121. package/dist/{rbac-roles-97w370qj.js → rbac-roles-nc7k9d0t.js} +11 -11
  122. package/dist/{rbac-roles-z6sje3gy.js → rbac-roles-wnx35x4x.js} +12 -12
  123. package/dist/{render-v2-n4v66bj3.js → render-v2-81cg1y52.js} +10 -10
  124. package/dist/resume-d4b6j2n2.js +70 -0
  125. package/dist/{setup-m3hhyv5f.js → setup-g68r1w28.js} +7 -5
  126. package/dist/static-t1gr2cr7.js +30 -0
  127. package/dist/{virtual-modules-ftr9kwe8.js → virtual-modules-rdjmcg7q.js} +3 -3
  128. package/dist/{work-objects-mxf2c842.js → work-objects-0zzdnbt9.js} +37 -33
  129. package/dist/{worker-9t07z1gq.js → worker-p1g8qm6h.js} +52 -48
  130. package/dist/{x-ma4gnfgy.js → x-qfmygqqv.js} +2 -2
  131. package/openapi.json +15455 -11731
  132. package/package.json +10 -7
  133. package/src/apps/store.ts +1 -0
  134. package/src/artifact-sdk/feedback-overlay.ts +528 -0
  135. package/src/be/db/agents.ts +6 -0
  136. package/src/be/db/instance-signals.ts +30 -0
  137. package/src/be/db/tasks/read.ts +2 -0
  138. package/src/be/db/tasks/write.ts +39 -5
  139. package/src/be/db/workflow-runs.ts +117 -0
  140. package/src/be/db-queries/slack-inbound.ts +489 -0
  141. package/src/be/db.ts +105 -42
  142. package/src/be/extensions/assets.ts +1 -1
  143. package/src/be/fleet-benchmark-stats.ts +39 -0
  144. package/src/be/migrations/203_workflow_run_parent_step.sql +10 -0
  145. package/src/be/migrations/204_slack_inbound_receipts.sql +51 -0
  146. package/src/be/migrations/205_favorites_per_dashboard_user.sql +29 -0
  147. package/src/be/migrations/206_runtime_pools.sql +62 -0
  148. package/src/be/migrations/207_runtime_session_tokens.sql +31 -0
  149. package/src/be/migrations/208_task_runtime_dispatch.sql +4 -0
  150. package/src/be/model-tier-resolution.ts +9 -2
  151. package/src/be/multi-runtime.ts +102 -13
  152. package/src/be/org-profile.ts +35 -0
  153. package/src/be/rbac-audit.ts +4 -0
  154. package/src/be/runtime-pools/controllers.ts +150 -0
  155. package/src/be/runtime-pools/db.ts +526 -0
  156. package/src/be/runtime-pools/demand.ts +65 -0
  157. package/src/be/runtime-pools/e2b-images.ts +109 -0
  158. package/src/be/runtime-pools/errors.ts +8 -0
  159. package/src/be/runtime-pools/lifecycle.ts +44 -0
  160. package/src/be/runtime-pools/reachability.ts +30 -0
  161. package/src/be/runtime-pools/recovery.ts +248 -0
  162. package/src/be/runtime-pools/remote-controller.ts +144 -0
  163. package/src/be/runtime-pools/routing.ts +304 -0
  164. package/src/be/runtime-pools/seed.ts +110 -0
  165. package/src/be/runtime-pools/supervisor.ts +981 -0
  166. package/src/be/runtime-pools/tokens.ts +57 -0
  167. package/src/be/script-connections.ts +1 -1
  168. package/src/be/scripts/run-saved.ts +40 -20
  169. package/src/be/scripts/typecheck.ts +48 -3
  170. package/src/be/secret-registry.ts +17 -1
  171. package/src/be/skill-usage.ts +467 -0
  172. package/src/be/swarm-config-guard.ts +62 -2
  173. package/src/be/telemetry-enable.ts +66 -0
  174. package/src/be/telemetry-ingest-anchor.ts +77 -0
  175. package/src/be/users.ts +173 -23
  176. package/src/be/worker-nudge-listener.ts +28 -0
  177. package/src/be/worker-nudges.ts +22 -0
  178. package/src/cli.tsx +22 -3
  179. package/src/commands/controller.ts +180 -0
  180. package/src/commands/onboard/non-interactive.ts +36 -12
  181. package/src/commands/onboard/types.ts +1 -1
  182. package/src/commands/onboard.tsx +3 -0
  183. package/src/commands/push-delivery.ts +230 -0
  184. package/src/commands/runner.ts +560 -276
  185. package/src/e2b/dispatch.ts +15 -1
  186. package/src/extensions/catalog.ts +1 -1
  187. package/src/extensions/contract-types.generated.ts +1 -1
  188. package/src/extensions/dispatcher.ts +3 -3
  189. package/src/fleet-benchmark.ts +157 -0
  190. package/src/heartbeat/heartbeat.ts +205 -137
  191. package/src/heartbeat/templates.ts +16 -0
  192. package/src/hooks/hook.ts +3 -2
  193. package/src/http/agents.ts +21 -0
  194. package/src/http/all-routes.ts +7 -0
  195. package/src/http/apps.ts +4 -2
  196. package/src/http/auth.ts +4 -7
  197. package/src/http/config.ts +58 -21
  198. package/src/http/controllers-connect.ts +206 -0
  199. package/src/http/core.ts +108 -14
  200. package/src/http/favorite-owner.ts +31 -1
  201. package/src/http/fleet-benchmark.ts +206 -0
  202. package/src/http/index.ts +40 -6
  203. package/src/http/integrations.ts +3 -1
  204. package/src/http/mcp-bridge.ts +1 -0
  205. package/src/http/mcp.ts +3 -8
  206. package/src/http/pages-public.ts +7 -2
  207. package/src/http/pages.ts +178 -0
  208. package/src/http/poll.ts +31 -2
  209. package/src/http/realtime.ts +1 -1
  210. package/src/http/request-principal.ts +2 -0
  211. package/src/http/runtime-pools.ts +527 -0
  212. package/src/http/session-data.ts +2 -0
  213. package/src/http/sessions.ts +100 -23
  214. package/src/http/skills.ts +173 -0
  215. package/src/http/slack-inbound.ts +107 -0
  216. package/src/http/status.ts +25 -1
  217. package/src/http/tasks.ts +59 -28
  218. package/src/http/telemetry-ui.ts +102 -0
  219. package/src/http/used-by.ts +140 -0
  220. package/src/http/users.ts +1 -1
  221. package/src/http/utils.ts +7 -1
  222. package/src/http/webhooks.ts +20 -20
  223. package/src/http/workflows.ts +10 -2
  224. package/src/jira/app.ts +1 -2
  225. package/src/kv-reserved-namespaces.ts +1 -0
  226. package/src/linear/app.ts +1 -2
  227. package/src/prompts/session-templates.ts +32 -0
  228. package/src/providers/acp-target-catalog.ts +75 -1
  229. package/src/providers/acp-targets.ts +115 -1
  230. package/src/providers/amp-adapter.ts +2 -2
  231. package/src/providers/claude-adapter.ts +1 -1
  232. package/src/providers/claude-managed-adapter.ts +2 -11
  233. package/src/providers/claude-sdk-session.ts +1 -1
  234. package/src/providers/codex-adapter.ts +5 -1
  235. package/src/providers/opencode-adapter.ts +3 -3
  236. package/src/providers/pi-mono-adapter.ts +44 -29
  237. package/src/providers/pricing-sources.md +2 -0
  238. package/src/providers/skill-invoke.ts +39 -3
  239. package/src/rbac/legacy-policy.ts +8 -0
  240. package/src/rbac/permissions.ts +16 -0
  241. package/src/rbac/types.ts +2 -0
  242. package/src/realtime/auth.ts +13 -0
  243. package/src/realtime/browser.generated.txt +8 -8
  244. package/src/realtime/browser.ts +3 -3
  245. package/src/realtime/channels.ts +24 -0
  246. package/src/realtime/transport.ts +94 -15
  247. package/src/realtime/worker-client.ts +176 -0
  248. package/src/runtime-providers/controller-protocol.ts +97 -0
  249. package/src/runtime-providers/controller.ts +86 -0
  250. package/src/runtime-providers/docker.ts +235 -0
  251. package/src/runtime-providers/e2b.ts +217 -0
  252. package/src/runtime-providers/index.ts +37 -0
  253. package/src/runtime-providers/static.ts +26 -0
  254. package/src/runtime-providers/types.ts +92 -0
  255. package/src/runtime-providers/worker-api-url.ts +11 -0
  256. package/src/scripts-runtime/executors/quickjs-pool-config.ts +26 -0
  257. package/src/scripts-runtime/executors/quickjs.ts +9 -2
  258. package/src/scripts-runtime/sdk-allowlist.ts +6 -0
  259. package/src/scripts-runtime/types/stdlib.d.ts +15 -0
  260. package/src/scripts-runtime/types/swarm-extension.d.ts +1 -0
  261. package/src/scripts-runtime/types/swarm-sdk.d.ts +15 -0
  262. package/src/server.ts +13 -0
  263. package/src/slack/actions.ts +6 -2
  264. package/src/slack/app.ts +5 -0
  265. package/src/slack/assistant.ts +15 -5
  266. package/src/slack/egress-scrub.ts +3 -2
  267. package/src/slack/handlers.ts +36 -18
  268. package/src/slack/inbound-dispatch.ts +549 -0
  269. package/src/slack/inbound-files.ts +2 -0
  270. package/src/slack/router.ts +7 -5
  271. package/src/tasks/worker-follow-up.ts +80 -52
  272. package/src/telemetry-context.ts +7 -0
  273. package/src/telemetry-contract/EVENTS.md +14 -1
  274. package/src/telemetry-contract/SOURCE.json +4 -4
  275. package/src/telemetry-contract/catalog.json +155 -0
  276. package/src/telemetry-contract/types.gen.ts +248 -4
  277. package/src/telemetry-ui-events.ts +130 -0
  278. package/src/telemetry.ts +43 -3
  279. package/src/tests/acp-adapter.test.ts +129 -0
  280. package/src/tests/claude-adapter.test.ts +6 -2
  281. package/src/tests/codex-adapter.test.ts +6 -2
  282. package/src/tests/codex-oauth-device.test.ts +1 -1
  283. package/src/tests/config-internal-keys.test.ts +27 -0
  284. package/src/tests/config-session-auth.test.ts +19 -3
  285. package/src/tests/db-retention.test.ts +50 -10
  286. package/src/tests/docs-index-footprint.test.js +3 -3
  287. package/src/tests/e2b-dispatch.test.ts +28 -1
  288. package/src/tests/e2e-runtime-pools.test.ts +51 -0
  289. package/src/tests/entrypoint-acp-target-binary.test.ts +38 -1
  290. package/src/tests/favorites.test.ts +188 -0
  291. package/src/tests/fetch-resolved-env.test.ts +59 -1
  292. package/src/tests/fleet-benchmark.test.ts +453 -0
  293. package/src/tests/harness-model-support.test.ts +70 -2
  294. package/src/tests/heartbeat-checklist.test.ts +243 -0
  295. package/src/tests/heartbeat-orphan-resume.test.ts +24 -0
  296. package/src/tests/heartbeat-reboot-live.test.ts +31 -0
  297. package/src/tests/heartbeat-supersede-resume.test.ts +21 -0
  298. package/src/tests/hook-runtime-close.test.ts +64 -0
  299. package/src/tests/http-task-write-ownership.test.ts +8 -1
  300. package/src/tests/integration-disable-flags.test.ts +45 -0
  301. package/src/tests/migration-206-runtime-pools.test.ts +134 -0
  302. package/src/tests/migration-207-runtime-session-tokens.test.ts +45 -0
  303. package/src/tests/migration-208-task-runtime-dispatch.test.ts +30 -0
  304. package/src/tests/multi-runtime-registration.test.ts +219 -4
  305. package/src/tests/onboard-non-interactive.test.ts +104 -6
  306. package/src/tests/opencode-adapter.test.ts +6 -2
  307. package/src/tests/org-website.test.ts +115 -0
  308. package/src/tests/pages-feedback.test.ts +218 -0
  309. package/src/tests/pi-mono-adapter.test.ts +74 -10
  310. package/src/tests/rbac-admission-e2e.test.ts +4 -4
  311. package/src/tests/rbac-engine.test.ts +8 -1
  312. package/src/tests/realtime-room-auth.test.ts +49 -0
  313. package/src/tests/repo-allow-merge-gate.test.ts +8 -1
  314. package/src/tests/runner-exit-after-tasks.test.ts +163 -0
  315. package/src/tests/runner-finish-retry.test.ts +466 -0
  316. package/src/tests/runner-harness-telemetry-env.test.ts +105 -0
  317. package/src/tests/runner-push-delivery.test.ts +670 -0
  318. package/src/tests/runner-slot-reconcile.test.ts +89 -1
  319. package/src/tests/runtime-child-token-cleanup.test.ts +172 -0
  320. package/src/tests/runtime-controller-token.test.ts +254 -0
  321. package/src/tests/runtime-demand.test.ts +119 -0
  322. package/src/tests/runtime-e2b-pools.test.ts +847 -0
  323. package/src/tests/runtime-pool-reachability.test.ts +328 -0
  324. package/src/tests/runtime-pool-routing.test.ts +817 -0
  325. package/src/tests/runtime-pools-db.test.ts +275 -0
  326. package/src/tests/runtime-pools-http.test.ts +506 -0
  327. package/src/tests/runtime-pools-ownership-guards.test.ts +235 -0
  328. package/src/tests/runtime-pools-seed.test.ts +203 -0
  329. package/src/tests/runtime-pools-test-utils.ts +128 -0
  330. package/src/tests/runtime-provider-registration.test.ts +133 -0
  331. package/src/tests/runtime-providers-docker.test.ts +400 -0
  332. package/src/tests/runtime-providers-e2b-transport.test.ts +50 -0
  333. package/src/tests/runtime-providers-e2b.test.ts +335 -0
  334. package/src/tests/runtime-recovery.test.ts +745 -0
  335. package/src/tests/runtime-remote-controller.test.ts +846 -0
  336. package/src/tests/runtime-supervisor-failures.test.ts +387 -0
  337. package/src/tests/runtime-supervisor.test.ts +1039 -0
  338. package/src/tests/runtime-token-auth.test.ts +897 -0
  339. package/src/tests/script-connections.test.ts +9 -0
  340. package/src/tests/script-executor-quickjs-pool.test.ts +106 -0
  341. package/src/tests/script-executor-registry.test.ts +38 -0
  342. package/src/tests/secret-scrubber.test.ts +17 -2
  343. package/src/tests/session-costs-codex-recompute.test.ts +49 -0
  344. package/src/tests/session-tokens.test.ts +13 -3
  345. package/src/tests/skill-invoke.test.ts +142 -0
  346. package/src/tests/skill-usage-cohorts.test.ts +232 -0
  347. package/src/tests/skill-usage.test.ts +348 -0
  348. package/src/tests/slack-attachments-block.test.ts +23 -0
  349. package/src/tests/slack-inbound-diagnostics-auth.test.ts +93 -0
  350. package/src/tests/slack-inbound-receipts.test.ts +684 -0
  351. package/src/tests/slack-render-v2.test.ts +6 -0
  352. package/src/tests/slack-session-status.test.ts +4 -2
  353. package/src/tests/status-instance.test.ts +71 -0
  354. package/src/tests/task-supersede-resume.test.ts +87 -4
  355. package/src/tests/telemetry-enable.test.ts +113 -0
  356. package/src/tests/telemetry-ui-route.test.ts +195 -0
  357. package/src/tests/tool-annotations.test.ts +1 -1
  358. package/src/tests/ui-e2e-ingest-payload.test.ts +5 -1
  359. package/src/tests/used-by-route.test.ts +237 -0
  360. package/src/tests/user-token-routes.test.ts +1 -1
  361. package/src/tests/worker-nudges.test.ts +653 -0
  362. package/src/tests/worker-realtime-client.test.ts +188 -0
  363. package/src/tests/workflow-executors.test.ts +3 -2
  364. package/src/tests/workflow-sub-workflow.test.ts +385 -0
  365. package/src/tools/app-upsert.ts +1 -1
  366. package/src/tools/runtime-controller-list.ts +28 -0
  367. package/src/tools/runtime-pool-bind-agent.ts +29 -0
  368. package/src/tools/runtime-pool-common.ts +37 -0
  369. package/src/tools/runtime-pool-create-agent.ts +29 -0
  370. package/src/tools/runtime-pool-delete.ts +27 -0
  371. package/src/tools/runtime-pool-list.ts +27 -0
  372. package/src/tools/runtime-pool-upsert.ts +31 -0
  373. package/src/tools/script-common.ts +1 -1
  374. package/src/tools/send-task.ts +3 -2
  375. package/src/tools/tool-config.ts +6 -0
  376. package/src/types.ts +137 -2
  377. package/src/utils/config-secrets.ts +1 -0
  378. package/src/utils/internal-ai/complete-structured.ts +6 -3
  379. package/src/utils/lead-monitor-channels.ts +3 -0
  380. package/src/utils/org-website.ts +104 -0
  381. package/src/utils/request-auth-context.ts +10 -2
  382. package/src/utils/runtime-model-catalog.ts +1 -1
  383. package/src/utils/runtime-pools-flag.ts +11 -0
  384. package/src/utils/secret-scrubber.ts +9 -0
  385. package/src/utils/session-token-connections.ts +20 -0
  386. package/src/workflows/engine.ts +17 -1
  387. package/src/workflows/executors/agent-task.ts +2 -2
  388. package/src/workflows/executors/human-in-the-loop.ts +3 -3
  389. package/src/workflows/executors/registry.ts +2 -0
  390. package/src/workflows/executors/script.ts +1 -1
  391. package/src/workflows/executors/sub-workflow.ts +135 -0
  392. package/src/workflows/executors/wait.ts +3 -3
  393. package/src/workflows/recovery.ts +11 -1
  394. package/src/workflows/resume.ts +77 -0
  395. package/src/workflows/wait-filter.ts +5 -7
  396. package/templates/skills/apps/content.md +1 -1
  397. package/templates/skills/code-quality/content.md +9 -1
  398. package/templates/skills/db-query-guidance/content.md +9 -0
  399. package/templates/skills/heartbeat-runbook/content.md +3 -1
  400. package/templates/skills/pages/content.md +25 -0
  401. package/templates/skills/swarm-scripts/SKILL.md +1 -1
  402. package/templates/skills/swarm-scripts/content.md +1 -1
  403. package/templates/skills/work-on-task/SKILL.md +1 -1
  404. package/templates/skills/work-on-task/content.md +1 -1
  405. package/dist/{cli-qd97v6z2.js → cli-1qtgd1h1.js} +3 -3
  406. package/dist/{cli-cmxkbzzs.js → cli-j0w59p15.js} +6 -6
  407. package/dist/{google-generative-ai-b8zxrpax.js → google-generative-ai-pvhm0dq1.js} +1 -1
  408. package/dist/{google-vertex-nrdd697t.js → google-vertex-tek9sqe2.js} +4 -4
  409. package/dist/{mistral-conversations-059y51zt.js → mistral-conversations-rjxa9s1j.js} +3 -3
  410. package/dist/{openai-completions-663yncfq.js → openai-completions-44gb0zsk.js} +12 -12
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  ALL_TOOLS,
3
3
  init_tool_config
4
- } from "./cli-3qhyh31j.js";
4
+ } from "./cli-ywm1azg9.js";
5
5
  import {
6
6
  AgentAvatarSchema,
7
7
  CreateTaskOptionsSchema,
@@ -22,7 +22,7 @@ import {
22
22
  normalizeAssetKey,
23
23
  parseAssetKey,
24
24
  parseModelTier
25
- } from "./cli-xvdgasgy.js";
25
+ } from "./cli-hsem16hb.js";
26
26
  import {
27
27
  IdentityFieldBudgetError,
28
28
  checkIdentityFieldBudget,
@@ -36,14 +36,14 @@ import {
36
36
  init_profile_sync,
37
37
  matchesDefaultClaudeMd,
38
38
  matchesDefaultIdentityMd
39
- } from "./cli-mxvnnv5q.js";
39
+ } from "./cli-rrbctenq.js";
40
40
  import {
41
41
  init_steering_enabled,
42
42
  isSteeringEnabled
43
43
  } from "./cli-7mm2r1kp.js";
44
44
  import {
45
45
  init_session_templates
46
- } from "./cli-g5erf0zt.js";
46
+ } from "./cli-e2prcx5m.js";
47
47
  import {
48
48
  init_config,
49
49
  isSlackConfigured
@@ -76,10 +76,6 @@ import {
76
76
  getOpenRouterAttributionHeaders,
77
77
  init_openrouter_base_url
78
78
  } from "./cli-a35hzdve.js";
79
- import {
80
- init_env_flag,
81
- isEnvFlagEnabled
82
- } from "./cli-ej6gbxfb.js";
83
79
  import {
84
80
  harnessModelMismatch,
85
81
  init_runtime_model_catalog,
@@ -103,18 +99,22 @@ import {
103
99
  import {
104
100
  init_package,
105
101
  package_default
106
- } from "./cli-ng1pmdx6.js";
102
+ } from "./cli-erbp6b4g.js";
107
103
  import {
108
104
  init_bus,
109
105
  realtimeBus
110
106
  } from "./cli-zf8jjwex.js";
107
+ import {
108
+ init_env_flag,
109
+ isEnvFlagEnabled
110
+ } from "./cli-ej6gbxfb.js";
111
111
  import {
112
112
  init_secret_scrubber,
113
113
  registerSensitiveKeyName,
114
114
  registerVolatileSecret,
115
115
  scrubObject,
116
116
  scrubSecrets
117
- } from "./cli-wt7ccy4r.js";
117
+ } from "./cli-d161g69q.js";
118
118
  import {
119
119
  __commonJS,
120
120
  __esm,
@@ -8597,6 +8597,15 @@ var init_catalog = __esm(() => {
8597
8597
  "system",
8598
8598
  "other"
8599
8599
  ]
8600
+ },
8601
+ popup: {
8602
+ type: "string",
8603
+ description: "Dashboard pop-up that a popup.* event is about.",
8604
+ enum: [
8605
+ "feedback",
8606
+ "org_name",
8607
+ "used_by"
8608
+ ]
8600
8609
  }
8601
8610
  },
8602
8611
  common_properties: {
@@ -9721,6 +9730,10 @@ var init_catalog = __esm(() => {
9721
9730
  key: {
9722
9731
  type: "string",
9723
9732
  required: true
9733
+ },
9734
+ email_domain: {
9735
+ type: "string",
9736
+ description: "Domain of the email typed into the item, never the address."
9724
9737
  }
9725
9738
  }
9726
9739
  },
@@ -9800,6 +9813,148 @@ var init_catalog = __esm(() => {
9800
9813
  }
9801
9814
  }
9802
9815
  },
9816
+ {
9817
+ product: "agent-swarm",
9818
+ event: "popup.shown",
9819
+ description: "A dashboard pop-up was shown. Telemetry-gated: never sent while telemetry is off.",
9820
+ since: "2026-10-12",
9821
+ source: "ui",
9822
+ properties: {
9823
+ popup: {
9824
+ ref: "popup",
9825
+ required: true
9826
+ },
9827
+ trigger: {
9828
+ type: "string",
9829
+ required: true,
9830
+ enum: [
9831
+ "task_failed",
9832
+ "tasks_completed",
9833
+ "workflow_completed",
9834
+ "quarterly",
9835
+ "missing_org_name"
9836
+ ],
9837
+ description: "Rule that made the pop-up eligible."
9838
+ }
9839
+ }
9840
+ },
9841
+ {
9842
+ product: "agent-swarm",
9843
+ event: "popup.dismissed",
9844
+ description: "A dashboard pop-up was closed without submitting.",
9845
+ since: "2026-10-12",
9846
+ source: "ui",
9847
+ properties: {
9848
+ popup: {
9849
+ ref: "popup",
9850
+ required: true
9851
+ },
9852
+ method: {
9853
+ type: "string",
9854
+ required: true,
9855
+ enum: [
9856
+ "later",
9857
+ "close",
9858
+ "escape"
9859
+ ]
9860
+ }
9861
+ }
9862
+ },
9863
+ {
9864
+ product: "agent-swarm",
9865
+ event: "popup.submitted",
9866
+ description: "A dashboard pop-up was submitted. Content stays out of telemetry: only flags for what was filled.",
9867
+ since: "2026-10-12",
9868
+ source: "ui",
9869
+ properties: {
9870
+ popup: {
9871
+ ref: "popup",
9872
+ required: true
9873
+ },
9874
+ score: {
9875
+ type: "integer",
9876
+ minimum: 0,
9877
+ description: "Feedback pop-up only: the 0-10 score. /v1/feedback enforces the upper bound."
9878
+ },
9879
+ has_message: {
9880
+ type: "boolean",
9881
+ required: true
9882
+ },
9883
+ has_contact: {
9884
+ type: "boolean",
9885
+ required: true,
9886
+ description: "A name or email was left. The values go to /v1/feedback, never here."
9887
+ }
9888
+ }
9889
+ },
9890
+ {
9891
+ product: "agent-swarm",
9892
+ event: "org.profile_updated",
9893
+ description: "An admin changed the org profile. Lists which fields changed, never their values.",
9894
+ since: "2026-10-12",
9895
+ source: "ui",
9896
+ properties: {
9897
+ fields: {
9898
+ type: "array",
9899
+ required: true,
9900
+ description: "Changed field names: name, website."
9901
+ },
9902
+ surface: {
9903
+ type: "string",
9904
+ required: true,
9905
+ enum: [
9906
+ "prompt",
9907
+ "setup",
9908
+ "settings"
9909
+ ],
9910
+ description: "Where the change was made. Not trigger_surface: that key fills the raw_events.trigger_surface column."
9911
+ }
9912
+ }
9913
+ },
9914
+ {
9915
+ product: "agent-swarm",
9916
+ event: "used_by.consent_changed",
9917
+ description: 'An admin granted or revoked the "used by" logo consent. The request itself goes to /v1/used-by.',
9918
+ since: "2026-10-12",
9919
+ source: "ui",
9920
+ properties: {
9921
+ granted: {
9922
+ type: "boolean",
9923
+ required: true
9924
+ }
9925
+ }
9926
+ },
9927
+ {
9928
+ product: "agent-swarm",
9929
+ event: "telemetry.enabled",
9930
+ description: "Telemetry was turned on. Sent once, on the first boot or re-init after opting in.",
9931
+ since: "2026-10-12",
9932
+ source: "api-server",
9933
+ properties: {
9934
+ via: {
9935
+ type: "string",
9936
+ required: true,
9937
+ enum: [
9938
+ "banner",
9939
+ "settings",
9940
+ "env"
9941
+ ]
9942
+ }
9943
+ }
9944
+ },
9945
+ {
9946
+ product: "agent-swarm",
9947
+ event: "fleet_benchmark.viewed",
9948
+ description: "The fleet benchmark card was shown.",
9949
+ since: "2026-10-12",
9950
+ source: "ui",
9951
+ properties: {
9952
+ has_org_name: {
9953
+ type: "boolean",
9954
+ required: true
9955
+ }
9956
+ }
9957
+ },
9803
9958
  {
9804
9959
  product: "agent-fs",
9805
9960
  event: "server.started",
@@ -9955,6 +10110,7 @@ function buildContext(input) {
9955
10110
  const userId = input.actor?.userId?.trim();
9956
10111
  const orgName = input.orgName?.trim();
9957
10112
  const orgDomain = validOrgDomain(input.orgDomain);
10113
+ const orgWebsite = validOrgDomain(input.orgWebsite);
9958
10114
  return {
9959
10115
  org_id: input.orgId,
9960
10116
  org_name: orgName ? orgName : null,
@@ -9966,7 +10122,8 @@ function buildContext(input) {
9966
10122
  swarm_version: input.swarmVersion,
9967
10123
  install_method: input.installMethod ?? null,
9968
10124
  install_preset: input.installPreset ?? null,
9969
- acquisition_source: input.acquisitionSource ?? null
10125
+ acquisition_source: input.acquisitionSource ?? null,
10126
+ ...orgWebsite ? { org_website: orgWebsite } : {}
9970
10127
  };
9971
10128
  }
9972
10129
  function catalogSpecs(event) {
@@ -10007,6 +10164,87 @@ var init_telemetry_context = __esm(() => {
10007
10164
  ORG_DOMAIN_PATTERN = /^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)+$/;
10008
10165
  });
10009
10166
 
10167
+ // src/utils/org-website.ts
10168
+ function normalizeOrgWebsite(raw) {
10169
+ let value = raw?.trim().toLowerCase();
10170
+ if (!value)
10171
+ return null;
10172
+ if (!/^[a-z][a-z0-9+.-]*:\/\//.test(value))
10173
+ value = `https://${value}`;
10174
+ let host;
10175
+ try {
10176
+ const url = new URL(value);
10177
+ if (url.protocol !== "http:" && url.protocol !== "https:")
10178
+ return null;
10179
+ if (url.username || url.password)
10180
+ return null;
10181
+ host = url.hostname;
10182
+ } catch {
10183
+ return null;
10184
+ }
10185
+ host = host.replace(/\.$/, "");
10186
+ if (host.startsWith("www."))
10187
+ host = host.slice(4);
10188
+ if (!host || host.length > 253)
10189
+ return null;
10190
+ if (host.startsWith("[") || IPV4.test(host))
10191
+ return null;
10192
+ const labels = host.split(".");
10193
+ if (labels.length < 2)
10194
+ return null;
10195
+ if (!labels.every((label) => label.length <= 63 && LABEL.test(label)))
10196
+ return null;
10197
+ if (/^\d+$/.test(labels.at(-1) ?? ""))
10198
+ return null;
10199
+ if (BLOCKED_SUFFIXES.some((suffix) => host.endsWith(suffix)))
10200
+ return null;
10201
+ return host;
10202
+ }
10203
+ function orgLogoUrl(host, origin = TELEMETRY_PROXY_ORIGIN) {
10204
+ return `${origin.replace(/\/+$/, "")}/v1/logo?domain=${encodeURIComponent(host)}`;
10205
+ }
10206
+ function isFilledOrgLogoUrl(url, origin = TELEMETRY_PROXY_ORIGIN) {
10207
+ if (!url)
10208
+ return false;
10209
+ try {
10210
+ const parsed = new URL(url);
10211
+ return parsed.origin === new URL(origin).origin && parsed.pathname === "/v1/logo" && parsed.searchParams.has("domain");
10212
+ } catch {
10213
+ return false;
10214
+ }
10215
+ }
10216
+ var LABEL, IPV4, BLOCKED_SUFFIXES, TELEMETRY_PROXY_ORIGIN = "https://proxy.desplega.sh", FREE_MAIL_DOMAINS;
10217
+ var init_org_website = __esm(() => {
10218
+ LABEL = /^[a-z0-9]([a-z0-9-]*[a-z0-9])?$/;
10219
+ IPV4 = /^\d{1,3}(\.\d{1,3}){3}$/;
10220
+ BLOCKED_SUFFIXES = [".local", ".internal", ".localhost", ".lan", ".home", ".test"];
10221
+ FREE_MAIL_DOMAINS = new Set([
10222
+ "gmail.com",
10223
+ "googlemail.com",
10224
+ "outlook.com",
10225
+ "hotmail.com",
10226
+ "live.com",
10227
+ "msn.com",
10228
+ "yahoo.com",
10229
+ "icloud.com",
10230
+ "me.com",
10231
+ "mac.com",
10232
+ "aol.com",
10233
+ "proton.me",
10234
+ "protonmail.com",
10235
+ "gmx.com",
10236
+ "gmx.de",
10237
+ "yandex.com",
10238
+ "yandex.ru",
10239
+ "mail.com",
10240
+ "zoho.com",
10241
+ "qq.com",
10242
+ "163.com",
10243
+ "hey.com",
10244
+ "fastmail.com"
10245
+ ]);
10246
+ });
10247
+
10010
10248
  // src/utils/request-auth-context.ts
10011
10249
  import { AsyncLocalStorage } from "node:async_hooks";
10012
10250
  function beginRequestAuthScope() {
@@ -10041,6 +10279,9 @@ var init_request_auth_context = __esm(() => {
10041
10279
 
10042
10280
  // src/telemetry.ts
10043
10281
  import { randomUUID } from "node:crypto";
10282
+ function setTelemetryIngestObserver(observer) {
10283
+ ingestObserver = observer;
10284
+ }
10044
10285
  function isTelemetryEnabled() {
10045
10286
  return isEnvFlagEnabled("ANONYMIZED_TELEMETRY", true);
10046
10287
  }
@@ -10228,7 +10469,13 @@ function getTelemetryEnvironment() {
10228
10469
  ;
10229
10470
  return "production";
10230
10471
  }
10231
- function emit(event, properties, metadata, actor) {
10472
+ function track(options) {
10473
+ emit(options.event, options.properties, options.metadata, options.actor);
10474
+ }
10475
+ function trackRelayed(event, properties, options) {
10476
+ emit(event, properties, undefined, options.actor, options.emitter);
10477
+ }
10478
+ function emit(event, properties, metadata, actor, emitter = source) {
10232
10479
  if (!isTelemetryEnabled() || !installationId)
10233
10480
  return;
10234
10481
  maybeRefreshOrgIdentity();
@@ -10236,6 +10483,8 @@ function emit(event, properties, metadata, actor) {
10236
10483
  if (!orgId)
10237
10484
  return;
10238
10485
  try {
10486
+ const occurredAt = new Date().toISOString();
10487
+ const sentFor = installationId;
10239
10488
  const isCloud = cachedIsCloud || isCloudDeployment();
10240
10489
  const orgIdentity = getOrgIdentity();
10241
10490
  const userId = actor?.userId?.trim() || undefined;
@@ -10243,14 +10492,15 @@ function emit(event, properties, metadata, actor) {
10243
10492
  schema_version: 2,
10244
10493
  product: PRODUCT,
10245
10494
  event,
10246
- occurred_at: new Date().toISOString(),
10247
- source,
10495
+ occurred_at: occurredAt,
10496
+ source: emitter,
10248
10497
  actor_mode: "anonymous",
10249
10498
  actor_anonymous_id: installationId,
10250
10499
  context: buildContext({
10251
10500
  orgId,
10252
10501
  orgName: orgIdentity.organization_name,
10253
10502
  orgDomain: cachedOrgDomain,
10503
+ orgWebsite: normalizeOrgWebsite(process.env.SWARM_ORG_WEBSITE),
10254
10504
  installationId,
10255
10505
  actor: userId ? { userId, role: actor?.role ?? roleResolver?.(userId) ?? null } : undefined,
10256
10506
  isCloud,
@@ -10286,6 +10536,9 @@ function emit(event, properties, metadata, actor) {
10286
10536
  headers: { "Content-Type": "application/json" },
10287
10537
  body: JSON.stringify(payload),
10288
10538
  signal: AbortSignal.timeout(TIMEOUT_MS)
10539
+ }).then((response) => {
10540
+ if (response.ok)
10541
+ ingestObserver?.({ installationId: sentFor, occurredAt });
10289
10542
  }).catch(() => {});
10290
10543
  } catch {}
10291
10544
  }
@@ -10300,12 +10553,13 @@ function emitIntegrationConnected(type, providerSlug, firstOfType) {
10300
10553
  }, { userId: getCurrentRequestUserId() ?? null });
10301
10554
  return true;
10302
10555
  }
10303
- var TELEMETRY_ENDPOINT = "https://proxy.desplega.sh/v1/events", PRODUCT = "agent-swarm", TIMEOUT_MS = 5000, installationId = null, installedAt = null, cachedOrgId, cachedOrgDomain, roleResolver = null, identityReloader = null, lastIdentityLoadAt = 0, source = "unknown", cachedIsCloud = false, cachedIsE2b = false, cachedHasEmbedding = false, cachedHasSlackChannel = false, cachedHasEmailChannel = false, cachedInstallMethod = "manual", cachedInstallPreset, CLOUD_HOST_EXACT, CLOUD_HOST_SUFFIXES, KNOWN_INSTALL_METHODS, KNOWN_INSTALL_PRESETS, KNOWN_INTEGRATION_TYPES, INTEGRATION_PROVIDERS, ORG_IDENTITY_RETRY_MS = 60000, ORG_IDENTITY_REFRESH_MS, telemetry;
10556
+ var TELEMETRY_ENDPOINT = "https://proxy.desplega.sh/v1/events", PRODUCT = "agent-swarm", TIMEOUT_MS = 5000, installationId = null, installedAt = null, ingestObserver = null, cachedOrgId, cachedOrgDomain, roleResolver = null, identityReloader = null, lastIdentityLoadAt = 0, source = "unknown", cachedIsCloud = false, cachedIsE2b = false, cachedHasEmbedding = false, cachedHasSlackChannel = false, cachedHasEmailChannel = false, cachedInstallMethod = "manual", cachedInstallPreset, CLOUD_HOST_EXACT, CLOUD_HOST_SUFFIXES, KNOWN_INSTALL_METHODS, KNOWN_INSTALL_PRESETS, KNOWN_INTEGRATION_TYPES, INTEGRATION_PROVIDERS, ORG_IDENTITY_RETRY_MS = 60000, ORG_IDENTITY_REFRESH_MS, telemetry;
10304
10557
  var init_telemetry = __esm(() => {
10305
10558
  init_package();
10306
10559
  init_config();
10307
10560
  init_telemetry_context();
10308
10561
  init_env_flag();
10562
+ init_org_website();
10309
10563
  init_request_auth_context();
10310
10564
  CLOUD_HOST_EXACT = new Set([
10311
10565
  "agent-swarm-mcp.desplega.sh",
@@ -12118,7 +12372,7 @@ var init_runtime = __esm(() => {
12118
12372
  // src/telemetry-identity.ts
12119
12373
  async function loadUserRole(userId) {
12120
12374
  try {
12121
- const { getUserGrant } = await import("./rbac-roles-97w370qj.js");
12375
+ const { getUserGrant } = await import("./rbac-roles-nc7k9d0t.js");
12122
12376
  const grant = await getUserGrant(userId);
12123
12377
  const role = grant.grantsAll ? "admin" : "member";
12124
12378
  if (roleCache.size >= ROLE_CACHE_LIMIT) {
@@ -12278,6 +12532,10 @@ var init_codex_auth_failure = __esm(() => {
12278
12532
  ];
12279
12533
  });
12280
12534
 
12535
+ // src/utils/config-secrets.ts
12536
+ var MASKED_SECRET_VALUE = "********";
12537
+ var init_config_secrets = () => {};
12538
+
12281
12539
  // src/utils/github-pull-request.ts
12282
12540
  function parseGitHubPullRequestToken(token) {
12283
12541
  const candidate = token.replace(TRAILING_PROSE_PUNCTUATION_RE, "");
@@ -12396,6 +12654,14 @@ var init_heartbeat_expiry = __esm(() => {
12396
12654
  };
12397
12655
  });
12398
12656
 
12657
+ // src/utils/runtime-pools-flag.ts
12658
+ function isRuntimePoolsEnabled(env2 = process.env) {
12659
+ return isEnvFlagEnabled("RUNTIME_POOLS_ENABLED", false, env2);
12660
+ }
12661
+ var init_runtime_pools_flag = __esm(() => {
12662
+ init_env_flag();
12663
+ });
12664
+
12399
12665
  // src/be/date-utils.ts
12400
12666
  function normalizeDate(date) {
12401
12667
  if (date == null)
@@ -12436,6 +12702,9 @@ function rowToAgent(row, slim = false) {
12436
12702
  name: row.name,
12437
12703
  isLead: row.isLead === 1,
12438
12704
  status: row.status,
12705
+ runtimePoolId: row.runtime_pool_id ?? null,
12706
+ runtimeProvisionAttempts: row.runtime_provision_attempts ?? 0,
12707
+ runtimeProvisionRetryAt: row.runtime_provision_retry_at ?? null,
12439
12708
  description: row.description ?? undefined,
12440
12709
  role: row.role ?? undefined,
12441
12710
  capabilities: row.capabilities ? JSON.parse(row.capabilities) : [],
@@ -13106,6 +13375,7 @@ function rowToAgentTask(row) {
13106
13375
  routingReason: row.routing_reason ?? undefined,
13107
13376
  routingSource: row.routing_source ?? undefined,
13108
13377
  routingNote: row.routing_note ?? undefined,
13378
+ poolWakeAt: row.pool_wake_at ?? undefined,
13109
13379
  taskType: row.taskType ?? undefined,
13110
13380
  tags: row.tags ? JSON.parse(row.tags) : [],
13111
13381
  priority: row.priority ?? 50,
@@ -13839,6 +14109,52 @@ var init_task_lifecycle_events = __esm(() => {
13839
14109
  taskStartedHandlers = [];
13840
14110
  });
13841
14111
 
14112
+ // src/realtime/channels.ts
14113
+ function channelTopic(namespace, name) {
14114
+ return `channel:${JSON.stringify([namespace, name])}`;
14115
+ }
14116
+ function addWorkerSubscription(agentId, subscriber) {
14117
+ const subscribers = workerSubscribers.get(agentId) ?? new Set;
14118
+ subscribers.add(subscriber);
14119
+ workerSubscribers.set(agentId, subscribers);
14120
+ }
14121
+ function removeWorkerSubscription(agentId, subscriber) {
14122
+ const subscribers = workerSubscribers.get(agentId);
14123
+ subscribers?.delete(subscriber);
14124
+ if (subscribers?.size === 0)
14125
+ workerSubscribers.delete(agentId);
14126
+ }
14127
+ function listSubscribedWorkerAgents() {
14128
+ return [...workerSubscribers.keys()];
14129
+ }
14130
+ var workerSubscribers;
14131
+ var init_channels = __esm(() => {
14132
+ workerSubscribers = new Map;
14133
+ });
14134
+
14135
+ // src/be/worker-nudges.ts
14136
+ function publishWorkerNudge(agentId, nudge) {
14137
+ if (!isRuntimePoolsEnabled())
14138
+ return;
14139
+ realtimeBus.publish(channelTopic(`worker:${agentId}`, "nudge"), {
14140
+ v: 1,
14141
+ ...nudge,
14142
+ at: new Date().toISOString()
14143
+ });
14144
+ }
14145
+ function publishWorkerConfigNudge(scope, scopeId) {
14146
+ if (!isRuntimePoolsEnabled())
14147
+ return;
14148
+ const agents = scope === "agent" ? scopeId ? [scopeId] : [] : listSubscribedWorkerAgents();
14149
+ for (const agentId of agents)
14150
+ publishWorkerNudge(agentId, { kind: "config" });
14151
+ }
14152
+ var init_worker_nudges = __esm(() => {
14153
+ init_bus();
14154
+ init_channels();
14155
+ init_runtime_pools_flag();
14156
+ });
14157
+
13842
14158
  // src/be/db/tasks/write.ts
13843
14159
  function configureTaskWriteDependencies(value) {
13844
14160
  dependencies3 = value;
@@ -13917,10 +14233,10 @@ async function getPendingTaskForAgent(agentId) {
13917
14233
  }
13918
14234
  return null;
13919
14235
  }
13920
- async function assignUnassignedTaskPending(taskId, agentId) {
14236
+ async function assignUnassignedTaskPending(taskId, agentId, options = {}) {
13921
14237
  {
13922
- const task = await getTaskById(taskId);
13923
- const agent = await getAgentById(agentId);
14238
+ const task = options.routingSnapshot?.task ?? await getTaskById(taskId);
14239
+ const agent = options.routingSnapshot?.agent ?? await getAgentById(agentId);
13924
14240
  if (task && (!agent || !isAgentEligibleForTask(agent, task))) {
13925
14241
  try {
13926
14242
  await dependencies3.createLogEntry({
@@ -13939,8 +14255,22 @@ async function assignUnassignedTaskPending(taskId, agentId) {
13939
14255
  }
13940
14256
  }
13941
14257
  const now = new Date().toISOString();
13942
- const row = await getDbClient().get(`UPDATE agent_tasks SET agentId = ?, status = 'pending', lastUpdatedAt = ?
13943
- WHERE id = ? AND status = 'unassigned' RETURNING *`, [agentId, now, taskId]);
14258
+ const snapshot = options.routingSnapshot;
14259
+ const guards = snapshot ? ` AND lastUpdatedAt = ?
14260
+ AND EXISTS (SELECT 1 FROM agents WHERE id = ? AND lastUpdatedAt = ?
14261
+ AND (SELECT COUNT(*) FROM agent_tasks WHERE agentId = agents.id
14262
+ AND status IN ('pending', 'in_progress')) < COALESCE(maxTasks, 1))` : "";
14263
+ const poolGuard = snapshot?.pool ? ` AND EXISTS (SELECT 1 FROM runtime_pools WHERE id = ? AND updated_at = ?
14264
+ AND enabled = 1 AND (circuit_open_until IS NULL OR circuit_open_until <= ?))` : "";
14265
+ const row = await getDbClient().get(`UPDATE agent_tasks SET agentId = ?, status = 'pending', lastUpdatedAt = ?, pool_wake_at = ?
14266
+ WHERE id = ? AND status = 'unassigned'${guards}${poolGuard} RETURNING *`, [
14267
+ agentId,
14268
+ now,
14269
+ options.poolWakeAt ?? null,
14270
+ taskId,
14271
+ ...snapshot ? [snapshot.task.lastUpdatedAt, agentId, snapshot.agent.lastUpdatedAt] : [],
14272
+ ...snapshot?.pool ? [snapshot.pool.id, snapshot.pool.updatedAt, options.poolWakeAt ?? now] : []
14273
+ ]);
13944
14274
  if (row) {
13945
14275
  try {
13946
14276
  await dependencies3.createLogEntry({
@@ -13952,6 +14282,7 @@ async function assignUnassignedTaskPending(taskId, agentId) {
13952
14282
  metadata: { pendingDispatch: true }
13953
14283
  });
13954
14284
  } catch {}
14285
+ getDbClient().afterCommit(() => publishWorkerNudge(agentId, { kind: "work", taskId }));
13955
14286
  }
13956
14287
  return row ? rowToAgentTask(row) : null;
13957
14288
  }
@@ -14077,7 +14408,7 @@ async function completeTask(id, output, options) {
14077
14408
  });
14078
14409
  } catch {}
14079
14410
  getDbClient().afterCommit(() => {
14080
- import("./event-bus-vnfthafg.js").then(({ workflowEventBus }) => {
14411
+ import("./event-bus-vjtv82gm.js").then(({ workflowEventBus }) => {
14081
14412
  workflowEventBus.emit("task.completed", {
14082
14413
  taskId: id,
14083
14414
  output: scrubbedOutput,
@@ -14132,7 +14463,7 @@ async function failTask(id, reason, opts = {}) {
14132
14463
  });
14133
14464
  } catch {}
14134
14465
  getDbClient().afterCommit(() => {
14135
- import("./event-bus-vnfthafg.js").then(({ workflowEventBus }) => {
14466
+ import("./event-bus-vjtv82gm.js").then(({ workflowEventBus }) => {
14136
14467
  workflowEventBus.emit("task.failed", {
14137
14468
  taskId: id,
14138
14469
  failureReason: scrubbedReason,
@@ -14189,6 +14520,13 @@ async function cancelTask(id, reason) {
14189
14520
  const row = await getDbClient().get(`UPDATE agent_tasks SET status = 'cancelled', failureReason = ?, finishedAt = ?, lastUpdatedAt = strftime('%Y-%m-%dT%H:%M:%fZ', 'now')
14190
14521
  WHERE id = ? AND status NOT IN ('completed', 'failed', 'cancelled', 'superseded') RETURNING *`, [cancelReason, finishedAt, id]);
14191
14522
  if (row && oldTask) {
14523
+ const recipients = new Set([row.agentId, row.offeredTo]);
14524
+ getDbClient().afterCommit(() => {
14525
+ for (const agentId of recipients) {
14526
+ if (agentId)
14527
+ publishWorkerNudge(agentId, { kind: "cancel", taskId: id });
14528
+ }
14529
+ });
14192
14530
  dependencies3.emitTaskLifecycleTelemetryAfterCommit("cancelled", {
14193
14531
  taskId: id,
14194
14532
  source: oldTask.source,
@@ -14207,7 +14545,7 @@ async function cancelTask(id, reason) {
14207
14545
  });
14208
14546
  } catch {}
14209
14547
  getDbClient().afterCommit(() => {
14210
- import("./event-bus-vnfthafg.js").then(({ workflowEventBus }) => {
14548
+ import("./event-bus-vjtv82gm.js").then(({ workflowEventBus }) => {
14211
14549
  workflowEventBus.emit("task.cancelled", {
14212
14550
  taskId: id,
14213
14551
  agentId: row.agentId,
@@ -14264,7 +14602,7 @@ async function supersedeTask(id, args) {
14264
14602
  });
14265
14603
  } catch {}
14266
14604
  getDbClient().afterCommit(() => {
14267
- import("./event-bus-vnfthafg.js").then(({ workflowEventBus }) => {
14605
+ import("./event-bus-vjtv82gm.js").then(({ workflowEventBus }) => {
14268
14606
  workflowEventBus.emit("task.superseded", {
14269
14607
  taskId: id,
14270
14608
  reason: args.reason,
@@ -14476,7 +14814,7 @@ async function updateTaskProgress(id, progress) {
14476
14814
  });
14477
14815
  } catch {}
14478
14816
  getDbClient().afterCommit(() => {
14479
- import("./event-bus-vnfthafg.js").then(({ workflowEventBus }) => {
14817
+ import("./event-bus-vjtv82gm.js").then(({ workflowEventBus }) => {
14480
14818
  workflowEventBus.emit("task.progress", {
14481
14819
  taskId: id,
14482
14820
  progress: scrubbedProgress,
@@ -14494,6 +14832,7 @@ var init_write = __esm(() => {
14494
14832
  init_types();
14495
14833
  init_secret_scrubber();
14496
14834
  init_task_lifecycle_events();
14835
+ init_worker_nudges();
14497
14836
  init_agents();
14498
14837
  init_runtime();
14499
14838
  init_human_free();
@@ -14502,6 +14841,90 @@ var init_write = __esm(() => {
14502
14841
  lastAffinityDispatchSkipLoggedAt = new Map;
14503
14842
  });
14504
14843
 
14844
+ // src/be/db/workflow-runs.ts
14845
+ async function getChildWorkflowRunId(parentStepId) {
14846
+ const row = await getDbClient().get("SELECT id FROM workflow_runs WHERE parentStepId = ?", [parentStepId]);
14847
+ return row?.id ?? null;
14848
+ }
14849
+ async function getWorkflowRunParent(parentStepId) {
14850
+ const row = await getDbClient().get(`SELECT s.runId AS runId, r.workflowId AS workflowId, s.id AS stepId, s.nodeId AS nodeId
14851
+ FROM workflow_run_steps s
14852
+ JOIN workflow_runs r ON r.id = s.runId
14853
+ WHERE s.id = ?`, [parentStepId]);
14854
+ return row ?? null;
14855
+ }
14856
+ async function getWorkflowRunLineage(runId, maxDepth) {
14857
+ const rows = await getDbClient().query(`WITH RECURSIVE lineage(id, workflowId, parentStepId, depth) AS (
14858
+ SELECT id, workflowId, parentStepId, 0 FROM workflow_runs WHERE id = ?
14859
+ UNION ALL
14860
+ SELECT r.id, r.workflowId, r.parentStepId, l.depth + 1
14861
+ FROM lineage l
14862
+ JOIN workflow_run_steps s ON s.id = l.parentStepId
14863
+ JOIN workflow_runs r ON r.id = s.runId
14864
+ WHERE l.depth < ?
14865
+ )
14866
+ SELECT workflowId FROM lineage ORDER BY depth`, [runId, maxDepth]);
14867
+ return rows.map((row) => row.workflowId);
14868
+ }
14869
+ async function getSettledChildRunParentSteps() {
14870
+ const rows = await getDbClient().query(`SELECT s.id
14871
+ FROM workflow_run_steps s
14872
+ LEFT JOIN workflow_runs c ON c.parentStepId = s.id
14873
+ WHERE s.status = 'waiting' AND s.nodeType = 'sub-workflow'
14874
+ AND (c.id IS NULL OR c.status IN ('completed', 'failed', 'cancelled', 'skipped'))`);
14875
+ return rows.map((row) => row.id);
14876
+ }
14877
+ async function wakeParentsOfDeletedRuns(workflowId) {
14878
+ const rows = await getDbClient().query("SELECT id, parentStepId FROM workflow_runs WHERE workflowId = ? AND parentStepId IS NOT NULL", [workflowId]);
14879
+ for (const row of rows)
14880
+ emitAfterCommit(row.id, row.parentStepId);
14881
+ }
14882
+ function emitChildRunFinished(childRunId, parentStepId, status) {
14883
+ if (TERMINAL_STATUSES.has(status))
14884
+ emitAfterCommit(childRunId, parentStepId);
14885
+ }
14886
+ function emitAfterCommit(childRunId, parentStepId) {
14887
+ getDbClient().afterCommit(() => {
14888
+ import("./event-bus-vjtv82gm.js").then(({ workflowEventBus }) => {
14889
+ workflowEventBus.emit("workflow.child.finished", { childRunId, parentStepId });
14890
+ }).catch((err) => console.error("[db] workflow.child.finished event not emitted:", scrubSecrets(err instanceof Error ? err.message : String(err))));
14891
+ });
14892
+ }
14893
+ var TERMINAL_STATUSES;
14894
+ var init_workflow_runs = __esm(() => {
14895
+ init_secret_scrubber();
14896
+ init_runtime();
14897
+ TERMINAL_STATUSES = new Set([
14898
+ "completed",
14899
+ "failed",
14900
+ "cancelled",
14901
+ "skipped"
14902
+ ]);
14903
+ });
14904
+
14905
+ // src/scripts-runtime/executors/quickjs-pool-config.ts
14906
+ function validateQuickJSPoolSize(value) {
14907
+ const error2 = `Invalid SCRIPT_QUICKJS_POOL_SIZE (must be an integer between 1 and ${MAX_QUICKJS_POOL_SIZE})`;
14908
+ if (typeof value !== "string" && typeof value !== "number")
14909
+ return error2;
14910
+ const text = String(value).trim();
14911
+ const size = Number(text);
14912
+ if (!/^\d+$/.test(text) || !Number.isSafeInteger(size) || size < 1 || size > MAX_QUICKJS_POOL_SIZE) {
14913
+ return error2;
14914
+ }
14915
+ return null;
14916
+ }
14917
+ function resolveQuickJSPoolSize(value) {
14918
+ if (value === undefined)
14919
+ return DEFAULT_QUICKJS_POOL_SIZE;
14920
+ const error2 = validateQuickJSPoolSize(value);
14921
+ if (error2)
14922
+ throw new Error(error2);
14923
+ return Number(value);
14924
+ }
14925
+ var DEFAULT_QUICKJS_POOL_SIZE = 4, MAX_QUICKJS_POOL_SIZE = 32;
14926
+ var init_quickjs_pool_config = () => {};
14927
+
14505
14928
  // src/slack/reaction-shortcode.ts
14506
14929
  function normalizeSlackReactionShortcode(raw) {
14507
14930
  if (typeof raw !== "string")
@@ -14627,7 +15050,8 @@ function isInternalConfigKey(key) {
14627
15050
  return INTERNAL_CONFIG_KEYS.has(key.toLowerCase());
14628
15051
  }
14629
15052
  function internalConfigKeyError(key) {
14630
- return new Error(`Key '${key}' is managed by /api/onboarding`);
15053
+ const owner = key.toLowerCase() === "runtime_owner_id" ? "the runtime supervisor" : "/api/onboarding";
15054
+ return new Error(`Key '${key}' is managed by ${owner}`);
14631
15055
  }
14632
15056
  function isReservedConfigKey(key) {
14633
15057
  return RESERVED_KEYS.has(key.toUpperCase());
@@ -14719,18 +15143,24 @@ function validateFloatRange(key, value, min, max, expectation) {
14719
15143
  }
14720
15144
  return null;
14721
15145
  }
15146
+ function validateRuntimeTokenTtlHours(value) {
15147
+ const hours = Number(value);
15148
+ return typeof value === "string" && Number.isFinite(hours) && hours > 0 && hours <= 168 ? null : "Invalid RUNTIME_TOKEN_TTL_HOURS (must be greater than zero and at most 168)";
15149
+ }
14722
15150
  function validateConfigValue(key, value) {
14723
15151
  if (isTierConfigKey(key))
14724
15152
  return validateTierConfigValue(key.toUpperCase(), value);
14725
15153
  const validator = VALIDATED_KEYS[key.toUpperCase()];
14726
15154
  return validator ? validator(value) : null;
14727
15155
  }
14728
- var RESERVED_KEYS, INTERNAL_CONFIG_KEYS, BOOLEAN_LITERALS, MAX_DB_RETENTION_DAYS = 1e6, DB_RETENTION_TUNING_BOUNDS, VALIDATED_KEYS;
15156
+ var RESERVED_KEYS, INTERNAL_CONFIG_KEYS, BOOLEAN_LITERALS, MAX_DB_RETENTION_DAYS = 1e6, DB_RETENTION_TUNING_BOUNDS, validateControllerTokenTtlDays, validateControllerGraceSec, VALIDATED_KEYS;
14729
15157
  var init_swarm_config_guard = __esm(() => {
15158
+ init_quickjs_pool_config();
14730
15159
  init_reaction_shortcode();
14731
15160
  init_types();
14732
15161
  init_api_drain();
14733
15162
  init_enabled_tools();
15163
+ init_org_website();
14734
15164
  init_task_tool_manifest();
14735
15165
  init_model_tier_keys();
14736
15166
  RESERVED_KEYS = new Set([
@@ -14739,14 +15169,37 @@ var init_swarm_config_guard = __esm(() => {
14739
15169
  "CORS_ALLOW_ANY_ORIGIN",
14740
15170
  "EXTENSION_ALLOW_LEAD_ACTIVATION"
14741
15171
  ]);
14742
- INTERNAL_CONFIG_KEYS = new Set(["onboarding_state"]);
15172
+ INTERNAL_CONFIG_KEYS = new Set(["onboarding_state", "runtime_owner_id"]);
14743
15173
  BOOLEAN_LITERALS = ["true", "false", "1", "0"];
14744
15174
  DB_RETENTION_TUNING_BOUNDS = {
14745
15175
  DB_RETENTION_TICK_BUDGET_MS: { min: 1000, max: 300000 },
14746
15176
  DB_RETENTION_CATCHUP_INTERVAL_MS: { min: 5000, max: 3600000 },
14747
15177
  DB_RETENTION_MAX_STATEMENT_MS: { min: 25, max: 5000 }
14748
15178
  };
15179
+ validateControllerTokenTtlDays = boundedIntegerValidators(["RUNTIME_CONTROLLER_TOKEN_TTL_DAYS"], 1, 3650).RUNTIME_CONTROLLER_TOKEN_TTL_DAYS;
15180
+ validateControllerGraceSec = boundedIntegerValidators(["RUNTIME_CONTROLLER_GRACE_SEC"], 0, 86400).RUNTIME_CONTROLLER_GRACE_SEC;
14749
15181
  VALIDATED_KEYS = {
15182
+ ...booleanValidators(["RUNTIME_POOLS_ENABLED"]),
15183
+ ...enumValidator("RUNTIME_DEFAULT_DELIVERY", ["poll", "push"]),
15184
+ RUNTIME_TOKEN_TTL_HOURS: validateRuntimeTokenTtlHours,
15185
+ RUNTIME_CONTROLLER_TOKEN_TTL_DAYS: validateControllerTokenTtlDays,
15186
+ RUNTIME_CONTROLLER_GRACE_SEC: validateControllerGraceSec,
15187
+ ...integerValidators([
15188
+ "RUNTIME_SUPERVISOR_INTERVAL_MS",
15189
+ "RUNTIME_PROVISION_TIMEOUT_SEC",
15190
+ "RUNTIME_PROVISION_CONCURRENCY",
15191
+ "RUNTIME_PER_TASK_EXIT_GRACE_SEC",
15192
+ "RUNTIME_PROVISION_MAX_ATTEMPTS",
15193
+ "RUNTIME_CIRCUIT_THRESHOLD",
15194
+ "RUNTIME_CIRCUIT_OPEN_MIN",
15195
+ "RUNTIME_TOKEN_ROTATE_BEFORE_MIN",
15196
+ "RUNTIME_LEASE_RENEW_BEFORE_SEC",
15197
+ "RUNTIME_E2B_BUILD_TIMEOUT_SEC",
15198
+ "RUNTIME_ROTATE_BEFORE_SEC",
15199
+ "E2B_MAX_CONTINUOUS_SEC"
15200
+ ], 1),
15201
+ ...integerValidators(["RUNTIME_SOCKET_GRACE_SEC"], 0),
15202
+ ...integerValidators(["RUNTIME_WAKE_GRACE_SEC", "RUNTIME_WAKE_REROUTE_SEC", "RUNTIME_ROUTING_INTERVAL_MS"], 0),
14750
15203
  TASK_TOOL_MANIFESTS: (value) => {
14751
15204
  try {
14752
15205
  if (typeof value !== "string")
@@ -14791,7 +15244,9 @@ var init_swarm_config_guard = __esm(() => {
14791
15244
  },
14792
15245
  ...enumValidator("CLAUDE_TRANSPORT", ["cli", "sdk"]),
14793
15246
  ...enumValidator("SCRIPT_EXECUTOR", ["native", "quickjs"]),
15247
+ SCRIPT_QUICKJS_POOL_SIZE: validateQuickJSPoolSize,
14794
15248
  ...enumValidator("MODEL_WINDOW_EXHAUSTED_POLICY", ["fail", "fallback"]),
15249
+ ...enumValidator("HEARTBEAT_CHECKLIST_GATE_MODE", ["shadow", "enforce"]),
14795
15250
  CODEX_CREDITS_EXHAUSTED_COOLDOWN_MS: (value) => {
14796
15251
  const str2 = String(value).trim();
14797
15252
  if (!/^\d+$/.test(str2) || Number(str2) <= 0) {
@@ -14820,7 +15275,12 @@ var init_swarm_config_guard = __esm(() => {
14820
15275
  }
14821
15276
  return null;
14822
15277
  },
15278
+ SWARM_ORG_WEBSITE: (value) => {
15279
+ const str2 = String(value).trim();
15280
+ return str2 === "" || normalizeOrgWebsite(str2) === str2 ? null : "Invalid SWARM_ORG_WEBSITE (must be a public hostname such as example.com, without scheme, www, path or port)";
15281
+ },
14823
15282
  ...booleanValidators([
15283
+ "SWARM_USED_BY_CONSENT",
14824
15284
  "SWARM_DEV_MODE",
14825
15285
  "MULTI_RUNTIME_ENABLED",
14826
15286
  "STEERING_ENABLED",
@@ -14934,7 +15394,7 @@ async function listStoredConfigSecrets() {
14934
15394
  }
14935
15395
  return { secrets, failed };
14936
15396
  }
14937
- var init_config_secrets = __esm(() => {
15397
+ var init_config_secrets2 = __esm(() => {
14938
15398
  init_crypto();
14939
15399
  init_swarm_config_guard();
14940
15400
  init_runtime();
@@ -16086,7 +16546,13 @@ function registerStoredSecret(value, name) {
16086
16546
  registerVolatileSecret(form, name);
16087
16547
  }
16088
16548
  async function loadSecretRegistry() {
16089
- const result = { config: 0, oauth: 0, scriptApi: 0, failed: 0 };
16549
+ const result = {
16550
+ config: 0,
16551
+ oauth: 0,
16552
+ scriptApi: 0,
16553
+ runtimeController: 0,
16554
+ failed: 0
16555
+ };
16090
16556
  try {
16091
16557
  const { secrets, failed } = await listStoredConfigSecrets();
16092
16558
  for (const { key, value } of secrets)
@@ -16115,11 +16581,19 @@ async function loadSecretRegistry() {
16115
16581
  } catch {
16116
16582
  result.failed += 1;
16117
16583
  }
16584
+ try {
16585
+ const { loadRuntimeControllerSecrets } = await import("./db-2rmd23wq.js");
16586
+ const loaded = await loadRuntimeControllerSecrets();
16587
+ result.runtimeController = loaded.count;
16588
+ result.failed += loaded.failed;
16589
+ } catch {
16590
+ result.failed += 1;
16591
+ }
16118
16592
  return result;
16119
16593
  }
16120
16594
  var init_secret_registry = __esm(() => {
16121
16595
  init_secret_scrubber();
16122
- init_config_secrets();
16596
+ init_config_secrets2();
16123
16597
  init_oauth();
16124
16598
  init_db();
16125
16599
  });
@@ -17848,6 +18322,11 @@ async function createSteeringMessage(args) {
17848
18322
  ]);
17849
18323
  if (!row)
17850
18324
  throw new Error("Failed to create steering message");
18325
+ getDbClient().afterCommit(async () => {
18326
+ const task = await getTaskById(args.taskId);
18327
+ if (task?.agentId)
18328
+ publishWorkerNudge(task.agentId, { kind: "steer", taskId: args.taskId });
18329
+ });
17851
18330
  try {
17852
18331
  await createLogEntry({
17853
18332
  eventType: "task_steering",
@@ -18386,7 +18865,7 @@ async function createTaskExtended(task, options) {
18386
18865
  priority: row.priority
18387
18866
  }, (task2) => task2 !== null, row.requestedByUserId);
18388
18867
  getDbClient().afterCommit(() => {
18389
- import("./event-bus-vnfthafg.js").then(({ workflowEventBus }) => {
18868
+ import("./event-bus-vjtv82gm.js").then(({ workflowEventBus }) => {
18390
18869
  workflowEventBus.emit("task.created", {
18391
18870
  taskId: row.id,
18392
18871
  task: row.task,
@@ -18441,15 +18920,21 @@ async function claimTask(taskId, agentId) {
18441
18920
  }
18442
18921
  return result;
18443
18922
  }
18444
- async function releaseTask(taskId) {
18445
- const task = await getTaskById(taskId);
18923
+ async function releaseTask(taskId, wakeSnapshot) {
18924
+ const task = wakeSnapshot ?? await getTaskById(taskId);
18446
18925
  if (!task)
18447
18926
  return null;
18448
18927
  if (task.status !== "pending" && task.status !== "in_progress")
18449
18928
  return null;
18450
18929
  const now = new Date().toISOString();
18451
- const row = await getDbClient().get(`UPDATE agent_tasks SET agentId = NULL, status = 'unassigned', lastUpdatedAt = ?
18452
- WHERE id = ? AND status IN ('pending', 'in_progress') RETURNING *`, [now, taskId]);
18930
+ const row = await getDbClient().get(`UPDATE agent_tasks SET agentId = NULL, status = 'unassigned', lastUpdatedAt = ?, pool_wake_at = NULL
18931
+ WHERE id = ? AND status IN ('pending', 'in_progress')
18932
+ ${wakeSnapshot ? "AND status = 'pending' AND agentId = ? AND pool_wake_at = ? AND COALESCE(routing_reason, '') != 'human_pinned'" : ""}
18933
+ RETURNING *`, [
18934
+ now,
18935
+ taskId,
18936
+ ...wakeSnapshot ? [wakeSnapshot.agentId ?? null, wakeSnapshot.poolWakeAt ?? null] : []
18937
+ ]);
18453
18938
  if (row) {
18454
18939
  try {
18455
18940
  await createLogEntry({
@@ -18460,6 +18945,10 @@ async function releaseTask(taskId) {
18460
18945
  newValue: "unassigned"
18461
18946
  });
18462
18947
  } catch {}
18948
+ if (isRuntimePoolsEnabled() && !wakeSnapshot)
18949
+ getDbClient().afterCommit(() => {
18950
+ import("./event-bus-vjtv82gm.js").then(({ workflowEventBus }) => workflowEventBus.emit("task.unassigned", { taskId })).catch((error2) => console.error("[db] Routing event failed:", scrubSecrets(String(error2))));
18951
+ });
18463
18952
  }
18464
18953
  return row ? rowToAgentTask(row) : null;
18465
18954
  }
@@ -18500,6 +18989,7 @@ async function acceptTask(taskId, agentId) {
18500
18989
  newValue: "pending"
18501
18990
  });
18502
18991
  } catch {}
18992
+ getDbClient().afterCommit(() => publishWorkerNudge(agentId, { kind: "work", taskId }));
18503
18993
  }
18504
18994
  return row ? rowToAgentTask(row) : null;
18505
18995
  }
@@ -18512,7 +19002,7 @@ async function rejectTask(taskId, agentId, reason) {
18512
19002
  const now = new Date().toISOString();
18513
19003
  const row = await getDbClient().get(`UPDATE agent_tasks SET
18514
19004
  status = 'unassigned', offeredTo = NULL, offeredAt = NULL,
18515
- rejectionReason = ?, lastUpdatedAt = ?
19005
+ rejectionReason = ?, lastUpdatedAt = ?, pool_wake_at = NULL
18516
19006
  WHERE id = ? AND status IN ('offered', 'reviewing') RETURNING *`, [reason ?? null, now, taskId]);
18517
19007
  if (row) {
18518
19008
  try {
@@ -18525,6 +19015,10 @@ async function rejectTask(taskId, agentId, reason) {
18525
19015
  metadata: reason ? { reason } : undefined
18526
19016
  });
18527
19017
  } catch {}
19018
+ if (isRuntimePoolsEnabled())
19019
+ getDbClient().afterCommit(() => {
19020
+ import("./event-bus-vjtv82gm.js").then(({ workflowEventBus }) => workflowEventBus.emit("task.unassigned", { taskId })).catch((error2) => console.error("[db] Routing event failed:", scrubSecrets(String(error2))));
19021
+ });
18528
19022
  }
18529
19023
  return row ? rowToAgentTask(row) : null;
18530
19024
  }
@@ -18617,15 +19111,23 @@ async function releaseStaleReviewingTasks(timeoutMinutes = 30) {
18617
19111
  WHERE status = 'reviewing' AND lastUpdatedAt < ?`, [now, cutoffTime]);
18618
19112
  return result.changes;
18619
19113
  }
18620
- async function releaseStaleOfferedTasksForOfflineAgents() {
19114
+ async function releaseStaleOfferedTasksForOfflineAgents(isReachable) {
18621
19115
  const now = new Date().toISOString();
19116
+ const reachable = [];
19117
+ if (isRuntimePoolsEnabled() && isReachable) {
19118
+ for (const agent of await getAllAgents()) {
19119
+ if (agent.status === "offline" && await isReachable(agent))
19120
+ reachable.push(agent.id);
19121
+ }
19122
+ }
18622
19123
  const result = await getDbClient().run(`UPDATE agent_tasks
18623
19124
  SET status = 'unassigned', offeredTo = NULL, offeredAt = NULL, lastUpdatedAt = ?
18624
19125
  WHERE status = 'offered'
18625
19126
  AND offeredTo IS NOT NULL
19127
+ ${reachable.length ? `AND offeredTo NOT IN (${reachable.map(() => "?").join(",")})` : ""}
18626
19128
  AND NOT EXISTS (
18627
19129
  SELECT 1 FROM agents WHERE agents.id = agent_tasks.offeredTo AND agents.status != 'offline'
18628
- )`, [now]);
19130
+ )`, [now, ...reachable]);
18629
19131
  return result.changes;
18630
19132
  }
18631
19133
  async function getOfferedTasksForAgent(agentId) {
@@ -18968,6 +19470,11 @@ async function postMessage(channelId, agentId, content, options) {
18968
19470
  targetMentions = parentMessage.mentions;
18969
19471
  }
18970
19472
  }
19473
+ getDbClient().afterCommit(() => {
19474
+ for (const mentionedAgentId of new Set(targetMentions)) {
19475
+ publishWorkerNudge(mentionedAgentId, { kind: "work" });
19476
+ }
19477
+ });
18971
19478
  if (isTaskMessage && targetMentions.length > 0) {
18972
19479
  const sender = agentId ? await getAgentById(agentId) : null;
18973
19480
  const channel = await getChannelById(channelId);
@@ -19423,7 +19930,7 @@ function rowToSessionCost(row) {
19423
19930
  };
19424
19931
  }
19425
19932
  async function createSessionCost(input) {
19426
- const id = crypto.randomUUID();
19933
+ const id = input.id ?? crypto.randomUUID();
19427
19934
  const costSource = input.costSource ?? "harness";
19428
19935
  const reasoningOutputTokens = input.reasoningOutputTokens ?? 0;
19429
19936
  const thinkingTokens = input.thinkingTokens ?? 0;
@@ -19436,7 +19943,8 @@ async function createSessionCost(input) {
19436
19943
  costSource, harnessCostUsd, cacheWrite5mTokens, cacheWrite1hTokens,
19437
19944
  modelBreakdown, createdAt
19438
19945
  )
19439
- VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, strftime('%Y-%m-%dT%H:%M:%fZ', 'now'))`, [
19946
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, strftime('%Y-%m-%dT%H:%M:%fZ', 'now'))
19947
+ ON CONFLICT(id) DO NOTHING`, [
19440
19948
  id,
19441
19949
  input.sessionId,
19442
19950
  input.taskId ?? null,
@@ -19458,29 +19966,12 @@ async function createSessionCost(input) {
19458
19966
  input.cacheWrite1hTokens ?? null,
19459
19967
  input.modelBreakdown ? JSON.stringify(input.modelBreakdown) : null
19460
19968
  ]);
19461
- return {
19462
- id,
19463
- sessionId: input.sessionId,
19464
- taskId: input.taskId,
19465
- agentId: input.agentId,
19466
- totalCostUsd: input.totalCostUsd,
19467
- inputTokens: input.inputTokens ?? 0,
19468
- outputTokens: input.outputTokens ?? 0,
19469
- cacheReadTokens: input.cacheReadTokens ?? 0,
19470
- cacheWriteTokens: input.cacheWriteTokens ?? 0,
19471
- reasoningOutputTokens,
19472
- thinkingTokens,
19473
- durationMs: input.durationMs,
19474
- numTurns: input.numTurns,
19475
- model: input.model,
19476
- isError: input.isError ?? false,
19477
- costSource,
19478
- harnessCostUsd: input.harnessCostUsd ?? null,
19479
- cacheWrite5mTokens: input.cacheWrite5mTokens ?? null,
19480
- cacheWrite1hTokens: input.cacheWrite1hTokens ?? null,
19481
- modelBreakdown: input.modelBreakdown ?? null,
19482
- createdAt: new Date().toISOString()
19483
- };
19969
+ const row = await getDbClient().get("SELECT * FROM session_costs WHERE id = ?", [
19970
+ id
19971
+ ]);
19972
+ if (!row)
19973
+ throw new Error("Session cost record is missing after insertion.");
19974
+ return rowToSessionCost(row);
19484
19975
  }
19485
19976
  async function getSessionCostsByTaskId(taskId, limit2 = 500) {
19486
19977
  const rows = await getDbClient().query("SELECT * FROM session_costs WHERE taskId = ? ORDER BY createdAt DESC LIMIT ?", [taskId, limit2]);
@@ -20177,8 +20668,11 @@ async function updateScheduledTask(id, data) {
20177
20668
  return row ? rowToScheduledTask(row) : null;
20178
20669
  }
20179
20670
  async function deleteScheduledTask(id) {
20180
- const result = await getDbClient().run("DELETE FROM scheduled_tasks WHERE id = ?", [id]);
20181
- return result.changes > 0;
20671
+ return await getDbClient().transaction(async (tx) => {
20672
+ await tx.run("DELETE FROM user_favorites WHERE itemType = 'schedule' AND itemId = ?", [id]);
20673
+ const result = await tx.run("DELETE FROM scheduled_tasks WHERE id = ?", [id]);
20674
+ return result.changes > 0;
20675
+ });
20182
20676
  }
20183
20677
  async function getDueScheduledTasks() {
20184
20678
  const now = new Date().toISOString();
@@ -20266,7 +20760,7 @@ function autoEncryptLegacyPlaintextSecrets(database, dbPath, options = {}) {
20266
20760
  console.log(`[secrets] Auto-migrated ${rows.length} secret(s) to encrypted storage.`);
20267
20761
  }
20268
20762
  function maskSecrets(configs) {
20269
- return configs.map((c) => c.isSecret ? { ...c, value: "********" } : c);
20763
+ return configs.map((c) => c.isSecret ? { ...c, value: MASKED_SECRET_VALUE } : c);
20270
20764
  }
20271
20765
  function writeEnvFile(configs) {
20272
20766
  const { readFileSync: readFileSync3, writeFileSync: writeFileSync2 } = __require("node:fs");
@@ -20394,6 +20888,7 @@ async function upsertSwarmConfig(data) {
20394
20888
  registerStoredSecret(config.value, configSecretName(config.key));
20395
20889
  registerSensitiveKeyName(config.key);
20396
20890
  }
20891
+ getDbClient().afterCommit(() => publishWorkerConfigNudge(config.scope, config.scopeId));
20397
20892
  return config;
20398
20893
  }
20399
20894
  async function emitBuiltInIntegrationConnectedOnce(provider) {
@@ -20407,8 +20902,10 @@ async function emitBuiltInIntegrationConnectedOnce(provider) {
20407
20902
  } catch {}
20408
20903
  }
20409
20904
  async function deleteSwarmConfig(id) {
20410
- const result = await getDbClient().run("DELETE FROM swarm_config WHERE id = ?", [id]);
20411
- return result.changes > 0;
20905
+ const row = await getDbClient().get("DELETE FROM swarm_config WHERE id = ? RETURNING scope, scopeId", [id]);
20906
+ if (row)
20907
+ getDbClient().afterCommit(() => publishWorkerConfigNudge(row.scope, row.scopeId));
20908
+ return row !== null;
20412
20909
  }
20413
20910
  async function deleteSwarmConfigByKey(scope, scopeId, key) {
20414
20911
  const resolvedScopeId = scope === "global" ? null : scopeId;
@@ -20417,7 +20914,7 @@ async function deleteSwarmConfigByKey(scope, scopeId, key) {
20417
20914
  return false;
20418
20915
  return await deleteSwarmConfig(existing.id);
20419
20916
  }
20420
- async function getResolvedConfig(agentId, repoId) {
20917
+ async function getResolvedConfig(agentId, repoId, options = {}) {
20421
20918
  const configMap = new Map;
20422
20919
  const globalConfigs = await getSwarmConfigs({ scope: "global" });
20423
20920
  for (const config of globalConfigs) {
@@ -20432,6 +20929,8 @@ async function getResolvedConfig(agentId, repoId) {
20432
20929
  if (repoId) {
20433
20930
  const repoConfigs = await getSwarmConfigs({ scope: "repo", scopeId: repoId });
20434
20931
  for (const config of repoConfigs) {
20932
+ if (config.isSecret && options.includeRepoSecrets === false)
20933
+ continue;
20435
20934
  configMap.set(config.key, config);
20436
20935
  }
20437
20936
  }
@@ -20919,9 +21418,11 @@ async function deleteWorkflowRows(id, source2) {
20919
21418
  const client = getDbClient();
20920
21419
  const linkedTaskIds = (await client.query(`SELECT id FROM agent_tasks WHERE workflowRunId IN (SELECT id FROM workflow_runs WHERE workflowId = ?)`, [id])).map((row) => row.id);
20921
21420
  await client.run(`UPDATE agent_tasks SET workflowRunId = NULL, workflowRunStepId = NULL WHERE workflowRunId IN (SELECT id FROM workflow_runs WHERE workflowId = ?)`, [id]);
21421
+ await wakeParentsOfDeletedRuns(id);
20922
21422
  await client.run(`DELETE FROM workflow_run_steps WHERE runId IN (SELECT id FROM workflow_runs WHERE workflowId = ?)`, [id]);
20923
21423
  await client.run("DELETE FROM workflow_runs WHERE workflowId = ?", [id]);
20924
21424
  await reclassifyTaskHumanFree(linkedTaskIds);
21425
+ await client.run("DELETE FROM user_favorites WHERE itemType = 'workflow' AND itemId = ?", [id]);
20925
21426
  const result = await client.run("DELETE FROM workflows WHERE id = ?", [id]);
20926
21427
  const deleted = result.changes > 0;
20927
21428
  if (deleted) {
@@ -20948,7 +21449,8 @@ function rowToWorkflowRun(row, view = "replay") {
20948
21449
  createdBy: row.created_by ?? undefined,
20949
21450
  startedAt: normalizeDateRequired(row.startedAt),
20950
21451
  lastUpdatedAt: normalizeDateRequired(row.lastUpdatedAt),
20951
- finishedAt: normalizeDate(row.finishedAt) ?? undefined
21452
+ finishedAt: normalizeDate(row.finishedAt) ?? undefined,
21453
+ parentStepId: row.parentStepId ?? undefined
20952
21454
  };
20953
21455
  return defineWorkflowPayload(run, "context", row.context, row.context_replay, view, {
20954
21456
  runId: row.id,
@@ -20957,13 +21459,14 @@ function rowToWorkflowRun(row, view = "replay") {
20957
21459
  }
20958
21460
  async function createWorkflowRun(data) {
20959
21461
  const now = new Date().toISOString();
20960
- const row = await getDbClient().get(`INSERT INTO workflow_runs (id, workflowId, triggerType, startedAt, triggerData, created_by) VALUES (?, ?, ?, ?, ?, ?) RETURNING *`, [
21462
+ const row = await getDbClient().get(`INSERT INTO workflow_runs (id, workflowId, triggerType, startedAt, triggerData, created_by, parentStepId) VALUES (?, ?, ?, ?, ?, ?, ?) RETURNING *`, [
20961
21463
  data.id,
20962
21464
  data.workflowId,
20963
21465
  data.triggerType ?? "manual",
20964
21466
  now,
20965
21467
  data.triggerData ? scrubJsonValue(data.triggerData) : null,
20966
- data.createdBy ?? null
21468
+ data.createdBy ?? null,
21469
+ data.parentStepId ?? null
20967
21470
  ]);
20968
21471
  if (!row)
20969
21472
  throw new Error("Failed to create workflow run");
@@ -21025,6 +21528,8 @@ async function updateWorkflowRun(id, data) {
21025
21528
  if (data.status === "completed" || data.status === "failed") {
21026
21529
  emitWorkflowTerminalTelemetry(run);
21027
21530
  }
21531
+ if (row.parentStepId)
21532
+ emitChildRunFinished(id, row.parentStepId, run.status);
21028
21533
  return run;
21029
21534
  }
21030
21535
  async function listWorkflowRuns(workflowId, options = {}) {
@@ -24439,12 +24944,14 @@ var init_db2 = __esm(() => {
24439
24944
  init_telemetry_trigger();
24440
24945
  init_types();
24441
24946
  init_codex_auth_failure();
24947
+ init_config_secrets();
24442
24948
  init_credentials();
24443
24949
  init_github_pull_request();
24444
24950
  init_heartbeat_expiry();
24445
24951
  init_identity_field_budget();
24446
24952
  init_model_rate_limit_windows();
24447
24953
  init_request_auth_context();
24954
+ init_runtime_pools_flag();
24448
24955
  init_secret_scrubber();
24449
24956
  init_subscription_plans();
24450
24957
  init_asset_key_audit();
@@ -24457,12 +24964,14 @@ var init_db2 = __esm(() => {
24457
24964
  init_human_free();
24458
24965
  init_read();
24459
24966
  init_write();
24967
+ init_workflow_runs();
24460
24968
  init_scrub_json();
24461
24969
  init_sealed_json();
24462
24970
  init_secret_registry();
24463
24971
  init_steering();
24464
24972
  init_swarm_config_guard();
24465
24973
  init_task_lifecycle_events();
24974
+ init_worker_nudges();
24466
24975
  init_workflow_replay();
24467
24976
  init_active_sessions();
24468
24977
  init_agents();
@@ -25644,4 +26153,4 @@ function getMemoryStore() {
25644
26153
  var embeddingProvider2 = null, memoryStore = null;
25645
26154
  var init_memory = () => {};
25646
26155
 
25647
- export { slackContextKey, agentmailContextKey, githubContextKey, gitlabContextKey, azureDevOpsContextKey, linearContextKey, buildJiraContextKey, scheduleContextKey, workflowContextKey, agentContextKey, pageContextKey, init_context_key, checkSlackRoutingCoherence, init_slack_routing, mapTriggerSurface, init_telemetry_context, beginRequestAuthScope, setRequestAuth, getRequestAuth, getCurrentRequestAuth, runWithoutRequestAuth, getCurrentRequestUserId, init_request_auth_context, isTelemetryEnabled, _resolveIntegrationType, _resolveIntegrationProvider, initTelemetry, setTelemetryRoleResolver, isTelemetryReady, telemetry, emitIntegrationConnected, init_telemetry, auditAssetKeys, init_asset_key_audit, CredentialBindingSchema, placeholderForConfigKey, CredentialBroker, DEFAULT_CREDENTIAL_BINDINGS, init_credential_broker, encryptSecret, decryptSecret, getEncryptionKey, init_crypto, isInTransaction, init_db_client, breaksJsonValidity, scrubJsonValue, init_scrub_json, sealJson, init_sealed_json, getPromptTemplateDefaultDrift, init_default_drift, init_templates2 as init_templates, init_templates3 as init_templates1, isSqliteVecAvailable, resolveSqliteVecExtensionPath, __resetSqliteVecExtensionPathCacheForTests, initDb, getDb, closeDb, getDbClient, init_runtime, cachedUserRole, configureOrgDomainPersistence, recomputeOrgDomain, scheduleOrgDomainRecompute, init_telemetry_identity, resolveTriggerSurface, emitTaskTelemetry, init_telemetry_trigger, CODEX_AUTH_WATCH_NAMESPACE, codexAuthBenchMarkerKey, isCodexAuthFailureReason, init_codex_auth_failure, HeartbeatExpiryError, init_heartbeat_expiry, normalizeDate, normalizeDateRequired, init_date_utils, updateAgentCredentialState, updateAgentCredentialMissing, createAgent, getAgentById, EXTENSION_AGENT_ROLE, NOT_EXTENSION_AGENT_SQL, isExtensionAgent, extensionAgentAssignmentError, ReservedAgentRoleError, reservedRoleViolation, ExtensionAgentAssignmentError, getAllAgents, getAgentStatusCounts, getLeadAgent, updateAgentStatus, updateAgentMaxTasks, updateAgentProvider, setAgentHarnessProvider, updateAgentCredStatus, listAgentsWithCredStatusByProvider, getAgentHarnessProviders, updateAgentActivity, MAX_EMPTY_POLLS, incrementEmptyPollCount, resetEmptyPollCount, shouldBlockPolling, deleteAgent, getActiveTaskCount, hasCapacity, getRemainingCapacity, updateAgentStatusFromCapacity, isPoolAffinityEnforcementEnabled, buildRoutingAffinityFromAgent, isAgentEligibleForTask, getAgentDailyTaskCounts, listApprovalRequestSummaries, getPendingApprovalVoteState, recordApprovalVotes, computeContentHash, createContextVersion, getLatestContextVersion, getContextVersion, getContextVersionHistory, setHumanFreeQueueListener, drainHumanFreeReclassifyQueue, init_human_free, getTaskById, getChildTasks, hasNonTerminalResumeChild, getSupersededTasksWithoutResume, getSupersededTasksWithUnsettledDependents, hasNonTerminalRerouteDecisionChild, getTasksByAgentId, getAgentCurrentTask, getTasksByStatus, findTaskByVcs, findTaskByGitHub, getAllTasks, getTasksCount, getTaskStats, getCompletedSlackTasks, getPendingSlackRelayTasks, markSlackRelayAttempted, markSlackRelayDelivered, markFinalizedSlackRelaysDelivered, getRecentlyFinishedWorkerTasks, markTasksNotified, resetTasksNotified, getInProgressSlackTasks, getSlackTasksMissingTree, getInProgressTasksByContextKey, isLinearTrackerContextKey, findExistingLinearTrackerContextWork, getLatestTaskByContextKey, getLatestScriptRunStepTaskByContextKey, getAgentWorkingOnThread, getLatestActiveTaskInThread, getLatestLeadTaskInThread, getMostRecentTaskInThread, findCompletedTaskInThread, findRecentCancelledTaskInThread, onTaskStarted, init_task_lifecycle_events, createTask, getPendingTaskForAgent, assignUnassignedTaskPending, startTask, updateTaskClaudeSessionId, recordTaskProviderIfUnset, updateTaskTitle, completeTask, failTask, overwriteTerminalTaskResultText, cancelTask, supersedeTask, settleSupersededTaskDependents, backfillSupersedeTaskResumeTaskId, pauseTask, resumeTask, getPausedTasksForAgent, getOrphanedInProgressTasksForAgent, resetOrphanedInProgressTasksForAgent, getRecentlyCancelledTasksForAgent, deleteTask, updateTaskProgress, SLACK_REACTION_DEFAULTS, SLACK_REACTION_CONFIG_KEYS, reactionName, init_reaction_shortcode, API_DRAINING_HEADER, API_DRAIN_MAX_MS_LIMIT, isApiDrainingResponse, init_api_drain, parseEnabledTools, init_enabled_tools, parseTaskToolManifest, selectTaskTools, init_task_tool_manifest, tierConfigKey, init_model_tier_keys, isInternalConfigKey, internalConfigKeyError, isReservedConfigKey, reservedKeyError, MAX_DB_RETENTION_DAYS, DB_RETENTION_TUNING_BOUNDS, validateConfigValue, init_swarm_config_guard, getDefaultAuthorizationIdForProvider, getOAuthApp, getOAuthAppById, getOAuthAppIdByProvider, createOAuthApp, updateOAuthAppById, upsertOAuthApp, listAuthorizationsForApp, getAuthorizationById, upsertAuthorization, updateAuthorizationTokens, updateAuthorizationIdentity, deleteAuthorizationById, deleteAuthorizationsForApp, createOAuthPending, consumeOAuthPending, gcOAuthPending, markAuthorizationRefreshFailed, getOAuthTokens, listAuthorizationSweepRows, listKeepAliveAuthorizations, deleteOAuthTokens, acquireOAuthRefreshLock, releaseOAuthRefreshLock, init_oauth, OpenAI, init_openai, CANDIDATE_SET_MULTIPLIER, isGraphExpansionEnabled, EMBEDDING_DIMENSIONS, init_constants, LONGTERM_ROOT, MEMORY_KEY_PATTERN, MEMORY_KEY_PATTERN_MESSAGE, MEMORY_KEY_MAX_LENGTH, isLongtermKey, longtermKeyError, isConsolidatedKey, consolidatedKeyMessage, resolveStoreKey, init_key_paths, computeScore, rerank, init_reranker, rowToCandidate, init_sqlite_store, getEmbeddingProvider, resetEmbeddingProvider, getMemoryStore, init_memory, embeddingProvider, embedScript, searchScripts, reembedAllScripts, init_embeddings2 as init_embeddings, upsertScriptByName, getScript, getScriptById, getScriptVersion, listScripts, listScriptVersions, deleteScript, touchScratchScriptLastUsed, restoreScratchScriptLastUsedIfUnchanged, createScriptApi, listScriptApisForScript, getScriptApiById, getScriptApiSecret, updateScriptApi, rotateScriptApiSecret, deleteScriptApi, recordScriptApiUsage, init_db, oauthSecretName, registerStoredSecret, loadSecretRegistry, init_secret_registry, SteeringRequestError, isSteeringEnabled2 as isSteeringEnabled, getTaskSteeringFields, getTaskSteeringFieldsForTasks, promotePendingSteeringForTask, markSteeringUndeliverable, requestSteering, init_steering, WorkflowReplayStateError, init_workflow_replay, SESSION_ACTIVITY_REFRESH_MIN_INTERVAL_MS, refreshActiveSessionOnActivity, recordKeySeatMismatch, getScriptRunExecutionArgs, getSlackRenderV2ActivatedAt, ensureSlackRenderV2Activation, getSlackDelegationActivatedAt, ensureSlackDelegationActivation, isPendingSlackMessage, isSettledSlackMessage, recordSlackMessage, reserveSlackMessage, bindSlackMessageTimestamp, updateSlackMessageRecord, markSlackTreeRendered, deleteSlackMessageRecord, getSlackTreeMessage, getSlackTreeMessageByThread, getSlackOutcomeMessage, getResolvableDeferralOutcomes, markSlackDeferralResolved, noteSlackOutcomeDeliveryFailure, abandonSlackOutcomeDelivery, getSlackTreeMessages, getSlackMessageByChannelTs, getSlackTasksInThread, listSlackThreadsAwaitingHuman, isSlackThreadAwaitingHuman, markTaskSlackReplySent, setSlackMessageTracking, updateTaskVcs, insertTaskAttachment, recordTaskPullRequestAttachments, getAssetKeyMappingByProvider, upsertAssetKeyMapping, getAssetKeyMapping, listAssetSummaries, moveAssetKey, deleteTaskAttachment, replaceTaskAttachment, getTaskAttachments, createSteeringMessage, getSteeringMessagesForTask, getSteeringMessageById, getPendingSteeringForTask, getPendingSteeringForAgent, markSteeringDelivered, markSteeringHandled, markSteeringPromoted, cancelPendingSteeringForTask, hasPendingSteering, getAgentWithTasks, getAllAgentsWithTasks, createLogEntry, getLogsByAgentId, getLogsByTaskId, getLogsByTaskIdAndEventType, getLogsByTaskIdChronological, getLogsByEventType, getAllLogs, findRecentSimilarTasks, createTaskExtended, claimTask, releaseTask, acceptTask, rejectTask, moveTaskToBacklog, moveTaskFromBacklog, promoteDraftTask, refreshDraftTaskLease, promoteAbandonedDraftTasks, releaseStaleReviewingTasks, releaseStaleOfferedTasksForOfflineAgents, getOfferedTasksForAgent, claimOfferedTask, getUnassignedTasksCount, getUnassignedTaskIds, getUnassignedTaskIdsForAgent, checkDependencies, getDependentTasks, cascadeFailDependents, updateAgentProfile, updateAgentName, createChannel, getMessageById, getChannelById, getChannelByName, getAllChannels, deleteChannel, postMessage, getChannelMessages, updateReadState, getLastReadAt, getUnreadMessages, getMentionsForAgent, getInboxSummary, claimMentions, releaseMentionProcessing, releaseStaleMentionProcessing, createService, getServiceById, getServiceByAgentAndName, getServicesByAgentId, getAllServices, updateServiceStatus, deleteService, upsertService, deleteServicesByAgentId, createSessionLogs, getSessionLogsByTaskId, getSessionLogsBySession, createSessionCost, getSessionCostsByTaskId, getSessionCostsByAgentId, getAllSessionCosts, getSessionCostsFiltered, UNATTRIBUTED_USER_ID, getSessionCostSummary, getAttributionByPerson, getDashboardCostSummary, createInboxMessage, getInboxMessageById, getUnreadInboxMessages, claimInboxMessages, markInboxMessageRead, markInboxMessageResponded, markInboxMessageDelegated, releaseStaleProcessingInbox, getConcurrentContext, getScheduledTasks, getScheduledTaskById, getScheduledTaskByName, createScheduledTask, updateScheduledTask, deleteScheduledTask, getDueScheduledTasks, autoEncryptLegacyPlaintextSecrets, maskSecrets, getSwarmConfigs, getInjectableGlobalConfigs, getSwarmConfigById, getSwarmConfigLookupById, upsertSwarmConfig, emitBuiltInIntegrationConnectedOnce, deleteSwarmConfig, deleteSwarmConfigByKey, getResolvedConfig, getSwarmRepos, getSwarmRepoById, getSwarmRepoByName, getSwarmRepoByUrl, createSwarmRepo, updateSwarmRepo, deleteSwarmRepo, getAgentMailInboxMapping, getAgentMailInboxMappingsByAgent, getAllAgentMailInboxMappings, createAgentMailInboxMapping, deleteAgentMailInboxMapping, findTaskByAgentMailThread, insertActiveSession, deleteActiveSession, deleteActiveSessionById, getActiveSessions, heartbeatActiveSession, cleanupStaleSessions, cleanupAgentSessions, updateActiveSessionProviderSessionId, getActiveSessionForTask, reassociateSessionLogs, getStalledInProgressTasks, getStalePinnedResumes, failPendingResumeIfUnclaimed, getIdleWorkersWithCapacity, getUnassignedPoolTasks, getStaleUnassignedAffinityTasks, getRecentFailedTasks, getRecentCompletedCount, getRecentFailedCount, createWorkflow, getWorkflow, listWorkflows, updateWorkflow, deleteWorkflow, getWorkflowsByScheduleId, createWorkflowRun, getWorkflowRun, updateWorkflowRun, listWorkflowRuns, countWorkflowRuns, listWorkflowRunsPage, createWorkflowRunStep, getWorkflowRunStep, updateWorkflowRunStep, getWorkflowRunStepsByRunId, getStuckWorkflowRuns, getLastSuccessfulRun, getLastRunStart, getRetryableSteps, getCompletedStepNodeIds, getTaskByWorkflowRunStepId, detachTaskFromWorkflowRunStep, getStepByIdempotencyKey, getStepCountForNode, getLatestStepForNode, getCurrentStepForNode, createWorkflowVersion, getWorkflowVersions, getWorkflowVersion, createAppVersion, getAppVersions, getAppVersion, createPage, getPage, getPageBySlug, getLatestPageBySlug, listPagesByAgent, listAllPages, countAllPages, countPagesByAgent, updatePage, deletePage, incrementPageViewCount, createPageVersion, getPageVersions, getPageVersion, createMetric, getMetric, getMetricBySlug, listMetricsByAgent, listAllMetrics, countAllMetrics, countMetricsByAgent, updateMetric, deleteMetric, createMetricVersion, getMetricVersions, getMetricVersion, getPromptTemplates, getPromptTemplateById, upsertPromptTemplate, deletePromptTemplate, resetPromptTemplateToDefault, getPromptTemplateHistory, resolvePromptTemplate, checkoutPromptTemplate, getAllChannelActivityCursors, getChannelActivityCursor, upsertChannelActivityCursor, createApprovalRequest, getApprovalRequestById, resolveApprovalRequest, cancelApprovalRequestById, cancelPendingApprovalRequestsForRun, listCancelledApprovalRequestsForRun, listCancelledApprovalRequestsForStep, claimApprovalCancellationNotification, completeApprovalCancellationNotificationClaim, releaseApprovalCancellationNotificationClaim, updateApprovalRequestNotifications, listApprovalRequests, getStuckApprovalRuns, getApprovalRequestByStepId, getExpiredPendingApprovals, getStaleApprovalRequests, createWaitState, getWaitStateById, getWaitStateByStepId, getDueWaitStates, getPendingEventWaitNames, getPendingWaitsByEvent, resolveWaitState, getStuckWaitRuns, SKILL_FILE_LIMITS, normalizeSkillFilePath, createSkill, updateSkill, listSkillFileManifest, getSkillFiles, getSkillFile, upsertSkillFile, upsertSkillFiles, deleteSkillFile, deleteSkill, getSkillById, getSkillByName, listSkills, searchSkills, installSkill, getSystemDefaultSkills, installSystemDefaultSkillsForAgent, uninstallSkill, getAgentSkills, toggleAgentSkill, createMcpServer, emitMcpServerConnectedTelemetry, updateMcpServer, deleteMcpServer, getMcpServerById, getMcpServerByName, listMcpServers, installMcpServer, uninstallMcpServer, getAgentMcpServers, createContextSnapshot, getContextSnapshotsByTaskId, getContextSnapshotsBySessionId, getContextSummaryByTaskId, getAvailableKeyIndices, recordKeyUsage, setApiKeyPlan, markKeyRateLimited, recordKeyAuthFailure, recordKeyRateLimitWindows, setApiKeyName, clearKeyRateLimit, getKeyStatuses, getKeyCostSummary, getUserById, getAllUsers, createUser, updateUser, deleteUser, listInboxState, upsertInboxState, listFavorites, listUserFavorites, getFavoriteItemIdSet, setFavorite, setUserFavorite, withFavoriteFlags, listTaskTemplates, getRootTaskChain, listRecentSessions, countSessions, getBudget, getBudgets, upsertBudget, deleteBudget, getAllPricingRows, getPricingRows, getActivePricingRow, insertPricingRow, deletePricingRow, getDailySpendForAgent, getDailySpendGlobal, getDailySpendForUser, recordBudgetRefusalNotification, getBudgetRefusalNotification, getRecentBudgetRefusalNotifications, hasBudgetRefusalNotificationToday, setBudgetRefusalFollowUpTaskId, getLiveAgentCounts, getReadyAgentCounts, getInstanceActivity, getSwarmMetrics, hasFirstCompletedTask, getKv, sweepExpiredKv, sweepExpiredKvPrefix, upsertKv, claimKv, deleteKv, KvTypeCollisionError, incrKv, kvPrefixUpperBound, listKv, countKv, createScriptRun, recordInlineScriptRun, getScriptRun, getScriptRunByIdempotencyKey, listScriptRuns, countScriptRuns, countActiveScriptRuns, updateScriptRun, updateScriptRunIfNotTerminal, updateScriptRunIfRunning, getRunningScriptRuns, getScriptRunJournalStep, upsertScriptRunJournalStep, listScriptRunJournalSteps, countScriptRunJournalSteps, countScriptRunJournalAgentTaskSteps, exports_db, init_db2 as init_db1 };
26156
+ export { slackContextKey, agentmailContextKey, githubContextKey, gitlabContextKey, azureDevOpsContextKey, linearContextKey, buildJiraContextKey, scheduleContextKey, workflowContextKey, agentContextKey, pageContextKey, init_context_key, checkSlackRoutingCoherence, init_slack_routing, init_catalog, catalog_default, mapTriggerSurface, init_telemetry_context, TELEMETRY_PROXY_ORIGIN, normalizeOrgWebsite, orgLogoUrl, isFilledOrgLogoUrl, init_org_website, beginRequestAuthScope, setRequestAuth, getRequestAuth, getCurrentRequestAuth, runWithoutRequestAuth, getCurrentRequestUserId, init_request_auth_context, setTelemetryIngestObserver, isTelemetryEnabled, _resolveIntegrationType, _resolveIntegrationProvider, initTelemetry, setTelemetryRoleResolver, isTelemetryReady, track, trackRelayed, telemetry, emitIntegrationConnected, init_telemetry, auditAssetKeys, init_asset_key_audit, CredentialBindingSchema, placeholderForConfigKey, CredentialBroker, DEFAULT_CREDENTIAL_BINDINGS, init_credential_broker, encryptSecret, decryptSecret, getEncryptionKey, init_crypto, isInTransaction, init_db_client, breaksJsonValidity, scrubJsonValue, init_scrub_json, sealJson, init_sealed_json, getPromptTemplateDefaultDrift, init_default_drift, init_templates2 as init_templates, init_templates3 as init_templates1, isSqliteVecAvailable, resolveSqliteVecExtensionPath, __resetSqliteVecExtensionPathCacheForTests, initDb, getDb, closeDb, getDbClient, init_runtime, cachedUserRole, configureOrgDomainPersistence, recomputeOrgDomain, scheduleOrgDomainRecompute, init_telemetry_identity, resolveTriggerSurface, emitTaskTelemetry, init_telemetry_trigger, CODEX_AUTH_WATCH_NAMESPACE, codexAuthBenchMarkerKey, isCodexAuthFailureReason, init_codex_auth_failure, MASKED_SECRET_VALUE, init_config_secrets, HeartbeatExpiryError, init_heartbeat_expiry, isRuntimePoolsEnabled, init_runtime_pools_flag, normalizeDate, normalizeDateRequired, init_date_utils, rowToAgent, updateAgentCredentialState, updateAgentCredentialMissing, createAgent, getAgentById, EXTENSION_AGENT_ROLE, NOT_EXTENSION_AGENT_SQL, isExtensionAgent, extensionAgentAssignmentError, ReservedAgentRoleError, reservedRoleViolation, ExtensionAgentAssignmentError, getAllAgents, getAgentStatusCounts, getLeadAgent, updateAgentStatus, updateAgentMaxTasks, updateAgentProvider, setAgentHarnessProvider, updateAgentCredStatus, listAgentsWithCredStatusByProvider, getAgentHarnessProviders, updateAgentActivity, MAX_EMPTY_POLLS, incrementEmptyPollCount, resetEmptyPollCount, shouldBlockPolling, deleteAgent, getActiveTaskCount, hasCapacity, getRemainingCapacity, updateAgentStatusFromCapacity, isPoolAffinityEnforcementEnabled, buildRoutingAffinityFromAgent, isAgentEligibleForTask, getAgentDailyTaskCounts, init_agents, listApprovalRequestSummaries, getPendingApprovalVoteState, recordApprovalVotes, computeContentHash, createContextVersion, getLatestContextVersion, getContextVersion, getContextVersionHistory, setHumanFreeQueueListener, drainHumanFreeReclassifyQueue, init_human_free, rowToAgentTask, getTaskById, getChildTasks, hasNonTerminalResumeChild, getSupersededTasksWithoutResume, getSupersededTasksWithUnsettledDependents, hasNonTerminalRerouteDecisionChild, getTasksByAgentId, getAgentCurrentTask, getTasksByStatus, findTaskByVcs, findTaskByGitHub, getAllTasks, getTasksCount, getTaskStats, getCompletedSlackTasks, getPendingSlackRelayTasks, markSlackRelayAttempted, markSlackRelayDelivered, markFinalizedSlackRelaysDelivered, getRecentlyFinishedWorkerTasks, markTasksNotified, resetTasksNotified, getInProgressSlackTasks, getSlackTasksMissingTree, getInProgressTasksByContextKey, isLinearTrackerContextKey, findExistingLinearTrackerContextWork, getLatestTaskByContextKey, getLatestScriptRunStepTaskByContextKey, getAgentWorkingOnThread, getLatestActiveTaskInThread, getLatestLeadTaskInThread, getMostRecentTaskInThread, findCompletedTaskInThread, findRecentCancelledTaskInThread, init_read, onTaskStarted, init_task_lifecycle_events, channelTopic, addWorkerSubscription, removeWorkerSubscription, listSubscribedWorkerAgents, init_channels, publishWorkerNudge, init_worker_nudges, createTask, getPendingTaskForAgent, assignUnassignedTaskPending, startTask, updateTaskClaudeSessionId, recordTaskProviderIfUnset, updateTaskTitle, completeTask, failTask, overwriteTerminalTaskResultText, cancelTask, supersedeTask, settleSupersededTaskDependents, backfillSupersedeTaskResumeTaskId, pauseTask, resumeTask, getPausedTasksForAgent, getOrphanedInProgressTasksForAgent, resetOrphanedInProgressTasksForAgent, getRecentlyCancelledTasksForAgent, deleteTask, updateTaskProgress, getChildWorkflowRunId, getWorkflowRunParent, getWorkflowRunLineage, getSettledChildRunParentSteps, init_workflow_runs, resolveQuickJSPoolSize, init_quickjs_pool_config, SLACK_REACTION_DEFAULTS, SLACK_REACTION_CONFIG_KEYS, reactionName, init_reaction_shortcode, API_DRAINING_HEADER, API_DRAIN_MAX_MS_LIMIT, isApiDrainingResponse, init_api_drain, parseEnabledTools, init_enabled_tools, parseTaskToolManifest, selectTaskTools, init_task_tool_manifest, tierConfigKey, init_model_tier_keys, isInternalConfigKey, internalConfigKeyError, isReservedConfigKey, reservedKeyError, MAX_DB_RETENTION_DAYS, DB_RETENTION_TUNING_BOUNDS, validateRuntimeTokenTtlHours, validateControllerTokenTtlDays, validateControllerGraceSec, validateConfigValue, init_swarm_config_guard, getDefaultAuthorizationIdForProvider, getOAuthApp, getOAuthAppById, getOAuthAppIdByProvider, createOAuthApp, updateOAuthAppById, upsertOAuthApp, listAuthorizationsForApp, getAuthorizationById, upsertAuthorization, updateAuthorizationTokens, updateAuthorizationIdentity, deleteAuthorizationById, deleteAuthorizationsForApp, createOAuthPending, consumeOAuthPending, gcOAuthPending, markAuthorizationRefreshFailed, getOAuthTokens, listAuthorizationSweepRows, listKeepAliveAuthorizations, deleteOAuthTokens, acquireOAuthRefreshLock, releaseOAuthRefreshLock, init_oauth, OpenAI, init_openai, CANDIDATE_SET_MULTIPLIER, isGraphExpansionEnabled, EMBEDDING_DIMENSIONS, init_constants, LONGTERM_ROOT, MEMORY_KEY_PATTERN, MEMORY_KEY_PATTERN_MESSAGE, MEMORY_KEY_MAX_LENGTH, isLongtermKey, longtermKeyError, isConsolidatedKey, consolidatedKeyMessage, resolveStoreKey, init_key_paths, computeScore, rerank, init_reranker, rowToCandidate, init_sqlite_store, getEmbeddingProvider, resetEmbeddingProvider, getMemoryStore, init_memory, embeddingProvider, embedScript, searchScripts, reembedAllScripts, init_embeddings2 as init_embeddings, upsertScriptByName, getScript, getScriptById, getScriptVersion, listScripts, listScriptVersions, deleteScript, touchScratchScriptLastUsed, restoreScratchScriptLastUsedIfUnchanged, createScriptApi, listScriptApisForScript, getScriptApiById, getScriptApiSecret, updateScriptApi, rotateScriptApiSecret, deleteScriptApi, recordScriptApiUsage, init_db, oauthSecretName, registerStoredSecret, loadSecretRegistry, init_secret_registry, SteeringRequestError, isSteeringEnabled2 as isSteeringEnabled, getTaskSteeringFields, getTaskSteeringFieldsForTasks, promotePendingSteeringForTask, markSteeringUndeliverable, requestSteering, init_steering, WorkflowReplayStateError, init_workflow_replay, SESSION_ACTIVITY_REFRESH_MIN_INTERVAL_MS, refreshActiveSessionOnActivity, recordKeySeatMismatch, getScriptRunExecutionArgs, getSlackRenderV2ActivatedAt, ensureSlackRenderV2Activation, getSlackDelegationActivatedAt, ensureSlackDelegationActivation, isPendingSlackMessage, isSettledSlackMessage, recordSlackMessage, reserveSlackMessage, bindSlackMessageTimestamp, updateSlackMessageRecord, markSlackTreeRendered, deleteSlackMessageRecord, getSlackTreeMessage, getSlackTreeMessageByThread, getSlackOutcomeMessage, getResolvableDeferralOutcomes, markSlackDeferralResolved, noteSlackOutcomeDeliveryFailure, abandonSlackOutcomeDelivery, getSlackTreeMessages, getSlackMessageByChannelTs, getSlackTasksInThread, listSlackThreadsAwaitingHuman, isSlackThreadAwaitingHuman, markTaskSlackReplySent, setSlackMessageTracking, updateTaskVcs, insertTaskAttachment, recordTaskPullRequestAttachments, getAssetKeyMappingByProvider, upsertAssetKeyMapping, getAssetKeyMapping, listAssetSummaries, moveAssetKey, deleteTaskAttachment, replaceTaskAttachment, getTaskAttachments, createSteeringMessage, getSteeringMessagesForTask, getSteeringMessageById, getPendingSteeringForTask, getPendingSteeringForAgent, markSteeringDelivered, markSteeringHandled, markSteeringPromoted, cancelPendingSteeringForTask, hasPendingSteering, getAgentWithTasks, getAllAgentsWithTasks, createLogEntry, getLogsByAgentId, getLogsByTaskId, getLogsByTaskIdAndEventType, getLogsByTaskIdChronological, getLogsByEventType, getAllLogs, findRecentSimilarTasks, createTaskExtended, claimTask, releaseTask, acceptTask, rejectTask, moveTaskToBacklog, moveTaskFromBacklog, promoteDraftTask, refreshDraftTaskLease, promoteAbandonedDraftTasks, releaseStaleReviewingTasks, releaseStaleOfferedTasksForOfflineAgents, getOfferedTasksForAgent, claimOfferedTask, getUnassignedTasksCount, getUnassignedTaskIds, getUnassignedTaskIdsForAgent, checkDependencies, getDependentTasks, cascadeFailDependents, updateAgentProfile, updateAgentName, createChannel, getMessageById, getChannelById, getChannelByName, getAllChannels, deleteChannel, postMessage, getChannelMessages, updateReadState, getLastReadAt, getUnreadMessages, getMentionsForAgent, getInboxSummary, claimMentions, releaseMentionProcessing, releaseStaleMentionProcessing, createService, getServiceById, getServiceByAgentAndName, getServicesByAgentId, getAllServices, updateServiceStatus, deleteService, upsertService, deleteServicesByAgentId, createSessionLogs, getSessionLogsByTaskId, getSessionLogsBySession, createSessionCost, getSessionCostsByTaskId, getSessionCostsByAgentId, getAllSessionCosts, getSessionCostsFiltered, UNATTRIBUTED_USER_ID, getSessionCostSummary, getAttributionByPerson, getDashboardCostSummary, createInboxMessage, getInboxMessageById, getUnreadInboxMessages, claimInboxMessages, markInboxMessageRead, markInboxMessageResponded, markInboxMessageDelegated, releaseStaleProcessingInbox, getConcurrentContext, getScheduledTasks, getScheduledTaskById, getScheduledTaskByName, createScheduledTask, updateScheduledTask, deleteScheduledTask, getDueScheduledTasks, autoEncryptLegacyPlaintextSecrets, maskSecrets, getSwarmConfigs, getInjectableGlobalConfigs, getSwarmConfigById, getSwarmConfigLookupById, upsertSwarmConfig, emitBuiltInIntegrationConnectedOnce, deleteSwarmConfig, deleteSwarmConfigByKey, getResolvedConfig, getSwarmRepos, getSwarmRepoById, getSwarmRepoByName, getSwarmRepoByUrl, createSwarmRepo, updateSwarmRepo, deleteSwarmRepo, getAgentMailInboxMapping, getAgentMailInboxMappingsByAgent, getAllAgentMailInboxMappings, createAgentMailInboxMapping, deleteAgentMailInboxMapping, findTaskByAgentMailThread, insertActiveSession, deleteActiveSession, deleteActiveSessionById, getActiveSessions, heartbeatActiveSession, cleanupStaleSessions, cleanupAgentSessions, updateActiveSessionProviderSessionId, getActiveSessionForTask, reassociateSessionLogs, getStalledInProgressTasks, getStalePinnedResumes, failPendingResumeIfUnclaimed, getIdleWorkersWithCapacity, getUnassignedPoolTasks, getStaleUnassignedAffinityTasks, getRecentFailedTasks, getRecentCompletedCount, getRecentFailedCount, createWorkflow, getWorkflow, listWorkflows, updateWorkflow, deleteWorkflow, getWorkflowsByScheduleId, createWorkflowRun, getWorkflowRun, updateWorkflowRun, listWorkflowRuns, countWorkflowRuns, listWorkflowRunsPage, createWorkflowRunStep, getWorkflowRunStep, updateWorkflowRunStep, getWorkflowRunStepsByRunId, getStuckWorkflowRuns, getLastSuccessfulRun, getLastRunStart, getRetryableSteps, getCompletedStepNodeIds, getTaskByWorkflowRunStepId, detachTaskFromWorkflowRunStep, getStepByIdempotencyKey, getStepCountForNode, getLatestStepForNode, getCurrentStepForNode, createWorkflowVersion, getWorkflowVersions, getWorkflowVersion, createAppVersion, getAppVersions, getAppVersion, createPage, getPage, getPageBySlug, getLatestPageBySlug, listPagesByAgent, listAllPages, countAllPages, countPagesByAgent, updatePage, deletePage, incrementPageViewCount, createPageVersion, getPageVersions, getPageVersion, createMetric, getMetric, getMetricBySlug, listMetricsByAgent, listAllMetrics, countAllMetrics, countMetricsByAgent, updateMetric, deleteMetric, createMetricVersion, getMetricVersions, getMetricVersion, getPromptTemplates, getPromptTemplateById, upsertPromptTemplate, deletePromptTemplate, resetPromptTemplateToDefault, getPromptTemplateHistory, resolvePromptTemplate, checkoutPromptTemplate, getAllChannelActivityCursors, getChannelActivityCursor, upsertChannelActivityCursor, createApprovalRequest, getApprovalRequestById, resolveApprovalRequest, cancelApprovalRequestById, cancelPendingApprovalRequestsForRun, listCancelledApprovalRequestsForRun, listCancelledApprovalRequestsForStep, claimApprovalCancellationNotification, completeApprovalCancellationNotificationClaim, releaseApprovalCancellationNotificationClaim, updateApprovalRequestNotifications, listApprovalRequests, getStuckApprovalRuns, getApprovalRequestByStepId, getExpiredPendingApprovals, getStaleApprovalRequests, createWaitState, getWaitStateById, getWaitStateByStepId, getDueWaitStates, getPendingEventWaitNames, getPendingWaitsByEvent, resolveWaitState, getStuckWaitRuns, SKILL_FILE_LIMITS, normalizeSkillFilePath, createSkill, updateSkill, listSkillFileManifest, getSkillFiles, getSkillFile, upsertSkillFile, upsertSkillFiles, deleteSkillFile, deleteSkill, getSkillById, getSkillByName, listSkills, searchSkills, installSkill, getSystemDefaultSkills, installSystemDefaultSkillsForAgent, uninstallSkill, getAgentSkills, toggleAgentSkill, createMcpServer, emitMcpServerConnectedTelemetry, updateMcpServer, deleteMcpServer, getMcpServerById, getMcpServerByName, listMcpServers, installMcpServer, uninstallMcpServer, getAgentMcpServers, createContextSnapshot, getContextSnapshotsByTaskId, getContextSnapshotsBySessionId, getContextSummaryByTaskId, getAvailableKeyIndices, recordKeyUsage, setApiKeyPlan, markKeyRateLimited, recordKeyAuthFailure, recordKeyRateLimitWindows, setApiKeyName, clearKeyRateLimit, getKeyStatuses, getKeyCostSummary, getUserById, getAllUsers, createUser, updateUser, deleteUser, listInboxState, upsertInboxState, listFavorites, listUserFavorites, getFavoriteItemIdSet, setFavorite, setUserFavorite, withFavoriteFlags, listTaskTemplates, getRootTaskChain, listRecentSessions, countSessions, getBudget, getBudgets, upsertBudget, deleteBudget, getAllPricingRows, getPricingRows, getActivePricingRow, insertPricingRow, deletePricingRow, getDailySpendForAgent, getDailySpendGlobal, getDailySpendForUser, recordBudgetRefusalNotification, getBudgetRefusalNotification, getRecentBudgetRefusalNotifications, hasBudgetRefusalNotificationToday, setBudgetRefusalFollowUpTaskId, getLiveAgentCounts, getReadyAgentCounts, getInstanceActivity, getSwarmMetrics, hasFirstCompletedTask, getKv, sweepExpiredKv, sweepExpiredKvPrefix, upsertKv, claimKv, deleteKv, KvTypeCollisionError, incrKv, kvPrefixUpperBound, listKv, countKv, createScriptRun, recordInlineScriptRun, getScriptRun, getScriptRunByIdempotencyKey, listScriptRuns, countScriptRuns, countActiveScriptRuns, updateScriptRun, updateScriptRunIfNotTerminal, updateScriptRunIfRunning, getRunningScriptRuns, getScriptRunJournalStep, upsertScriptRunJournalStep, listScriptRunJournalSteps, countScriptRunJournalSteps, countScriptRunJournalAgentTaskSteps, exports_db, init_db2 as init_db1 };