@desplega.ai/agent-swarm 1.173.0 → 2.0.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 (432) hide show
  1. package/README.md +1 -1
  2. package/dist/{acp-adapter-ccm9xrep.js → acp-adapter-sj2g0m84.js} +17 -16
  3. package/dist/{actions-sgeyv08k.js → actions-fegk44gr.js} +39 -34
  4. package/dist/{amp-adapter-gpxp3kc9.js → amp-adapter-ad8ft89x.js} +8 -7
  5. package/dist/{app-km9qnv2f.js → app-kfvgbvzy.js} +18 -14
  6. package/dist/{assistant-5r8tcvvd.js → assistant-z7zdy9ja.js} +40 -35
  7. package/dist/{boot-reembed-swwzdgd7.js → boot-reembed-5c2z0mbe.js} +10 -9
  8. package/dist/{boot-reembed-16rv9843.js → boot-reembed-j8xa181e.js} +10 -9
  9. package/dist/{boot-scrub-sweep-zkr6vkqb.js → boot-scrub-sweep-hnkn3rgt.js} +11 -10
  10. package/dist/{boot-seeds-d8sp49t2.js → boot-seeds-kwjq4d2z.js} +14 -13
  11. package/dist/{claude-adapter-yzzzh8jp.js → claude-adapter-9vmvpvgd.js} +19 -18
  12. package/dist/{claude-managed-adapter-xgxhqrt2.js → claude-managed-adapter-k9qae05j.js} +7 -5
  13. package/dist/{claude-managed-setup-bnmjarjc.js → claude-managed-setup-q54zx5q2.js} +6 -4
  14. package/dist/{claude-sdk-session-4whxere4.js → claude-sdk-session-9jye6cxr.js} +11881 -11472
  15. package/dist/{cli-94b48jhk.js → cli-03gedhng.js} +16 -14
  16. package/dist/{cli-1w0vj3gw.js → cli-1e4b6bzh.js} +7 -7
  17. package/dist/{cli-d603qf86.js → cli-29jc5q7w.js} +10 -8
  18. package/dist/cli-2m1ktfzz.js +17795 -0
  19. package/dist/{cli-x119kdba.js → cli-3dj8k4vy.js} +1 -1
  20. package/dist/{cli-srqq3gc5.js → cli-3fbmmawm.js} +5 -5
  21. package/dist/{cli-gmdajfw5.js → cli-4jxm2qtz.js} +4987 -1708
  22. package/dist/{cli-tadfgd0t.js → cli-5hkm7whv.js} +33 -4
  23. package/dist/{cli-42qhyvwx.js → cli-5t4f29ez.js} +3 -3
  24. package/dist/{cli-7a0sde2x.js → cli-6cagzc96.js} +9 -0
  25. package/dist/cli-6cvfxs8r.js +47 -0
  26. package/dist/{cli-0kxf81jj.js → cli-6jyj59nb.js} +2 -2
  27. package/dist/{cli-w1apjecb.js → cli-6razj6t4.js} +2 -2
  28. package/dist/{cli-anzdk0z4.js → cli-74ahz61x.js} +2 -2
  29. package/dist/{cli-m89t9jdf.js → cli-7x0g4sn1.js} +15416 -16024
  30. package/dist/{cli-yatxqynm.js → cli-9ha6hs2d.js} +1 -290
  31. package/dist/{cli-81r1wjyv.js → cli-9nfx44eh.js} +1 -1
  32. package/dist/cli-9traj3dn.js +638 -0
  33. package/dist/{cli-smcrrmhy.js → cli-agzebbd5.js} +9 -9
  34. package/dist/{cli-na2pxe4f.js → cli-apx87jne.js} +2 -2
  35. package/dist/{cli-rfz2ve55.js → cli-bzszjf2p.js} +2855 -862
  36. package/dist/{cli-c5km5znr.js → cli-c8r3kzzb.js} +1 -1
  37. package/dist/{cli-hsem16hb.js → cli-cgtksawx.js} +7 -4
  38. package/dist/{cli-db3m6zdt.js → cli-d2qr7aj4.js} +1 -1
  39. package/dist/{cli-rfs4vddv.js → cli-d5f9ed5c.js} +5 -5
  40. package/dist/cli-e3g5mbkz.js +776 -0
  41. package/dist/{cli-7jykv7ef.js → cli-e6mpjhed.js} +1 -1
  42. package/dist/{cli-7a93cv8c.js → cli-ee9gtz70.js} +98 -23
  43. package/dist/{cli-3nxdmjrc.js → cli-eejsgvm4.js} +4 -4
  44. package/dist/{cli-fmhj1ehj.js → cli-ef1hg1wv.js} +470 -51
  45. package/dist/cli-f527ce74.js +781 -0
  46. package/dist/{cli-ppy4nnnh.js → cli-f7kr7svz.js} +2 -2
  47. package/dist/cli-hjwmhcg1.js +10622 -0
  48. package/dist/{cli-2bw3w47j.js → cli-hnhtk6cj.js} +1 -1
  49. package/dist/{cli-ywm1azg9.js → cli-hnmhtzvh.js} +6 -4
  50. package/dist/{cli-h7k0xtry.js → cli-hvqbtna4.js} +4 -1256
  51. package/dist/{cli-s8z6x4b4.js → cli-j0pfptdp.js} +218 -102
  52. package/dist/cli-jta2eyzc.js +619 -0
  53. package/dist/{cli-5er5gjbm.js → cli-k382tshb.js} +10 -11
  54. package/dist/{cli-v3zhnxsb.js → cli-k3dp5tpf.js} +2 -2
  55. package/dist/{cli-wd0hz6ah.js → cli-kbrt8gqa.js} +9 -91
  56. package/dist/cli-kceah1eh.js +92 -0
  57. package/dist/{cli-ne7smj1b.js → cli-ke896fcf.js} +10 -10
  58. package/dist/{cli-xc7p7s3g.js → cli-kt6zqg0e.js} +6 -6
  59. package/dist/{cli-wrh08zjd.js → cli-m50t4309.js} +5 -18
  60. package/dist/cli-n2wq4j7m.js +6985 -0
  61. package/dist/{cli-bv2etw2y.js → cli-n3hzg89b.js} +46 -15
  62. package/dist/{cli-tmhsxhb8.js → cli-n5vwg842.js} +23 -6
  63. package/dist/{cli-qm1448f9.js → cli-ne236afy.js} +8 -8
  64. package/dist/{cli-d161g69q.js → cli-p1x85d2t.js} +50 -2
  65. package/dist/{cli-7pz3b7x5.js → cli-przpmdgr.js} +25 -0
  66. package/dist/{cli-0a7mm3zp.js → cli-q0ke1yww.js} +25 -21
  67. package/dist/{cli-e3pmyt39.js → cli-q50942rs.js} +1 -1
  68. package/dist/{cli-r44t9wqc.js → cli-r106725k.js} +2 -2
  69. package/dist/{cli-phcqp1b9.js → cli-r2pnvj8g.js} +2 -2
  70. package/dist/{cli-jpc4r224.js → cli-r62a35ea.js} +19 -3
  71. package/dist/{cli-cd0hv9nh.js → cli-ra0xzggj.js} +2 -2
  72. package/dist/cli-rhs9pz33.js +294 -0
  73. package/dist/{cli-r4fqfpwf.js → cli-s2sp957d.js} +50 -27
  74. package/dist/{cli-1x7da0de.js → cli-s4setq91.js} +8 -8
  75. package/dist/{cli-6thk4jz3.js → cli-se8w6wny.js} +6 -6
  76. package/dist/cli-skxvvpap.js +10140 -0
  77. package/dist/{cli-014vns2y.js → cli-stfs0k5s.js} +208 -525
  78. package/dist/{cli-0p3enk35.js → cli-tqaazemc.js} +9 -1
  79. package/dist/{cli-nwrdx840.js → cli-tr4sxp68.js} +3 -3
  80. package/dist/{cli-r0byd61h.js → cli-tsde1hdr.js} +15 -15
  81. package/dist/{cli-b07hr3bt.js → cli-txqb9s38.js} +2 -2
  82. package/dist/{cli-6r2f7edk.js → cli-v1yb0rqb.js} +6 -6
  83. package/dist/{cli-saqyage0.js → cli-vatyhshy.js} +179 -27
  84. package/dist/{cli-5wpw4rab.js → cli-vdach5a9.js} +5 -5
  85. package/dist/{cli-7avy4v8w.js → cli-w1q7h2r2.js} +5 -3
  86. package/dist/{cli-rcp5aqdw.js → cli-w7m81tb7.js} +1 -1
  87. package/dist/{cli-c3rk1v0x.js → cli-wayw93nt.js} +3 -3
  88. package/dist/cli-wmgrkscj.js +23254 -0
  89. package/dist/{cli-9xf7fdtp.js → cli-z5jjpaxw.js} +29 -6
  90. package/dist/{cli-451ks6aw.js → cli-zkpks3r3.js} +1 -1
  91. package/dist/cli.js +29 -45
  92. package/dist/{codex-adapter-r3dn4fp5.js → codex-adapter-y81sssk0.js} +15 -14
  93. package/dist/{codex-login-841kv5fk.js → codex-login-f2rcfpp9.js} +3 -2
  94. package/dist/{codex-session-runner-fwt793h4.js → codex-session-runner-8vx4j6a9.js} +15 -14
  95. package/dist/{commands-z8fq9qna.js → commands-kcpvpcrr.js} +11 -10
  96. package/dist/{controller-hq5ggpcp.js → controller-ywrmt6yd.js} +5 -4
  97. package/dist/{controllers-connect-3mf2btyj.js → controllers-connect-kwpvj3rf.js} +42 -37
  98. package/dist/{cursor-adapter-q8pgv5qa.js → cursor-adapter-cehv1qns.js} +7 -6
  99. package/dist/{db-yyhqqrbf.js → db-k8ankj20.js} +12 -11
  100. package/dist/{db-qfpq4bt7.js → db-ww5d7jq3.js} +28 -9
  101. package/dist/{devin-adapter-xgtj680j.js → devin-adapter-x1022qb1.js} +3 -2
  102. package/dist/{dispatcher-x0x7qfcq.js → dispatcher-e8gq5m68.js} +38 -33
  103. package/dist/{docker-f503k9p0.js → docker-ff6y1190.js} +3 -2
  104. package/dist/{dsh-adapter-34etvb5m.js → dsh-adapter-3epjm3af.js} +7 -6
  105. package/dist/{e2b-66xra4az.js → e2b-8ygwhg0f.js} +4 -3
  106. package/dist/{e2b-xwhyj8cw.js → e2b-swhnpw3n.js} +4 -3
  107. package/dist/{event-bus-vjtv82gm.js → event-bus-6axnngdj.js} +3 -2
  108. package/dist/{external-channel-h1fjecwe.js → external-channel-h3359cwn.js} +11 -10
  109. package/dist/{google-generative-ai-szdxbpqg.js → google-generative-ai-g8db7x0f.js} +4 -2
  110. package/dist/{google-vertex-qzw3p36d.js → google-vertex-r2692q0r.js} +4 -2
  111. package/dist/{grok-adapter-e7mr287e.js → grok-adapter-0d4x7gkx.js} +18 -17
  112. package/dist/{handlers-znb9n7d4.js → handlers-an1gzv21.js} +41 -36
  113. package/dist/{heartbeat-bm4qkn8d.js → heartbeat-6dakeb61.js} +43 -38
  114. package/dist/{hook-254r4mza.js → hook-6v6cv6d5.js} +11 -23
  115. package/dist/{hook-xaa3q80s.js → hook-sa5xye4y.js} +12 -11
  116. package/dist/{http-3dgrgp8y.js → http-r7f3eky0.js} +1499 -251
  117. package/dist/index-52j1aja4.js +3465 -0
  118. package/dist/{index-fx3jqq1e.js → index-7ep4gzdk.js} +38 -33
  119. package/dist/index-9gw58n4k.js +193 -0
  120. package/dist/index-9j87mcm8.js +56305 -0
  121. package/dist/index-bsmcresk.js +79424 -0
  122. package/dist/index-mh85qhec.js +475 -0
  123. package/dist/{index-g2byveez.js → index-rmpw9a8q.js} +38 -33
  124. package/dist/{index-2ybk7khy.js → index-s2wxgzr0.js} +468 -683
  125. package/dist/{index-bdsqa799.js → index-v1v6n7hg.js} +43 -38
  126. package/dist/index-we27kd31.js +12810 -0
  127. package/dist/{index-jd7sejm2.js → index-zk96aq1k.js} +10 -9
  128. package/dist/{keepalive-6ywhpja1.js → keepalive-be9vwy5h.js} +12 -11
  129. package/dist/{lead-cw45n21s.js → lead-0861cwrf.js} +61 -56
  130. package/dist/{maintenance-ss1a1ge9.js → maintenance-mzzgc8bn.js} +10 -9
  131. package/dist/{node-fkajaq96.js → node-mn1zs7an.js} +2 -1
  132. package/dist/{oauth-refresh-sweep-3c6f8vyy.js → oauth-refresh-sweep-cpdnfwdj.js} +11 -10
  133. package/dist/{onboard-8hzdhc1k.js → onboard-fh8qs4r3.js} +11 -3
  134. package/dist/{opencode-adapter-qbchbcfz.js → opencode-adapter-nm42wwj8.js} +18 -13
  135. package/dist/{otel-impl-e6mnvc4v.js → otel-impl-x6c1c9g4.js} +242 -868
  136. package/dist/{pi-mono-adapter-3c9g9snh.js → pi-mono-adapter-9n2ya240.js} +244 -106
  137. package/dist/{pricing-refresh-gedkjdw0.js → pricing-refresh-qb0rv0ap.js} +12 -11
  138. package/dist/{rbac-roles-dt4vh1yy.js → rbac-roles-1gzdwbh1.js} +11 -10
  139. package/dist/{rbac-roles-eszdg6pm.js → rbac-roles-3mraey52.js} +12 -11
  140. package/dist/{render-v2-907cy6sa.js → render-v2-agpa45zz.js} +18 -14
  141. package/dist/{resume-42stcaz0.js → resume-x0ydy9s9.js} +25 -21
  142. package/dist/{runtime-qfry88v2.js → runtime-sa2vr16g.js} +2 -2
  143. package/dist/{setup-adbc1c10.js → setup-as9ga0d6.js} +2 -2
  144. package/dist/{virtual-modules-rtmt494q.js → virtual-modules-9gkxqrap.js} +6 -5
  145. package/dist/{work-objects-wpj8ck95.js → work-objects-y5g1y7ev.js} +41 -36
  146. package/dist/{worker-bzdra9rf.js → worker-860c3e38.js} +61 -56
  147. package/dist/{x-qfmygqqv.js → x-m477fr0h.js} +3 -2
  148. package/openapi.json +523 -344
  149. package/package.json +10 -11
  150. package/src/be/config-refs.ts +60 -0
  151. package/src/be/db/page-versions.ts +15 -0
  152. package/src/be/db/runtime.ts +35 -8
  153. package/src/be/db/skill-name-resolution.ts +36 -0
  154. package/src/be/db/tasks/read.ts +230 -0
  155. package/src/be/db/tasks/write.ts +7 -0
  156. package/src/be/db.ts +52 -7
  157. package/src/be/migrations/215_swarm_config_export_to_env.sql +34 -0
  158. package/src/be/migrations/216_task_resolved_effort.sql +5 -0
  159. package/src/be/migrations/217_chat_sdk_state.sql +104 -0
  160. package/src/be/model-catalog-store.ts +5 -1
  161. package/src/be/model-tier-resolution.ts +12 -1
  162. package/src/be/model-validation.ts +5 -2
  163. package/src/be/models-catalog.ts +26 -1
  164. package/src/be/modelsdev-cache.json +198 -63
  165. package/src/be/modelsdev-cache.ts +9 -1
  166. package/src/be/script-credential-broker.ts +39 -2
  167. package/src/be/scripts/run-saved.ts +1 -0
  168. package/src/be/scripts/typecheck.ts +10 -8
  169. package/src/be/seed/runner.ts +13 -1
  170. package/src/be/seed/state-db.ts +5 -0
  171. package/src/be/seed/types.ts +6 -0
  172. package/src/be/seed-pricing.ts +19 -2
  173. package/src/be/seed-scripts/catalog/ops-catalog-audit.inline.ts +1 -1
  174. package/src/be/seed-scripts/catalog/ops-catalog-audit.ts +1 -1
  175. package/src/be/seed-skills/bundled-files.generated.json +0 -18
  176. package/src/be/seed-skills/index.ts +104 -3
  177. package/src/be/swarm-config-guard.ts +52 -0
  178. package/src/cli.tsx +0 -16
  179. package/src/commands/onboard/non-interactive.ts +4 -2
  180. package/src/commands/provider-credentials.ts +52 -6
  181. package/src/commands/runner.ts +190 -54
  182. package/src/e2b/env.ts +5 -0
  183. package/src/extensions/contract-types.generated.ts +1 -1
  184. package/src/extensions/contract.ts +45 -0
  185. package/src/extensions/dispatcher.ts +7 -0
  186. package/src/extensions/post-bridge.ts +40 -0
  187. package/src/github/handlers.ts +11 -4
  188. package/src/heartbeat/templates.ts +8 -5
  189. package/src/hooks/hook.ts +0 -26
  190. package/src/http/all-routes.ts +0 -1
  191. package/src/http/config.ts +36 -17
  192. package/src/http/core.ts +4 -0
  193. package/src/http/index.ts +14 -2
  194. package/src/http/integrations.ts +88 -1
  195. package/src/http/mcp.ts +15 -5
  196. package/src/http/page-proxy.ts +2 -4
  197. package/src/http/pages-public.ts +3 -3
  198. package/src/http/pages.ts +3 -13
  199. package/src/http/poll.ts +28 -68
  200. package/src/http/requested-by.ts +54 -0
  201. package/src/http/scripts.ts +1 -0
  202. package/src/http/stats.ts +1 -30
  203. package/src/http/tasks.ts +61 -5
  204. package/src/http/utils.ts +14 -0
  205. package/src/http/webhooks.ts +159 -1
  206. package/src/http/x.ts +1 -0
  207. package/src/integrations/chat-sdk/adapters.ts +129 -0
  208. package/src/integrations/chat-sdk/attachments.ts +232 -0
  209. package/src/integrations/chat-sdk/background.ts +36 -0
  210. package/src/integrations/chat-sdk/commands.ts +194 -0
  211. package/src/integrations/chat-sdk/config.ts +198 -0
  212. package/src/integrations/chat-sdk/discord-api.ts +63 -0
  213. package/src/integrations/chat-sdk/discord-gateway.ts +185 -0
  214. package/src/integrations/chat-sdk/handlers.ts +28 -0
  215. package/src/integrations/chat-sdk/inbound.ts +426 -0
  216. package/src/integrations/chat-sdk/limits.ts +48 -0
  217. package/src/integrations/chat-sdk/logger.ts +81 -0
  218. package/src/integrations/chat-sdk/outbound.ts +123 -0
  219. package/src/integrations/chat-sdk/relay.ts +172 -0
  220. package/src/integrations/chat-sdk/router.ts +169 -0
  221. package/src/integrations/chat-sdk/runtime.ts +351 -0
  222. package/src/integrations/chat-sdk/schema.ts +245 -0
  223. package/src/integrations/chat-sdk/state.ts +243 -0
  224. package/src/integrations/chat-sdk/status.ts +244 -0
  225. package/src/integrations/chat-sdk/steering.ts +58 -0
  226. package/src/integrations/chat-sdk/teams-origin.ts +77 -0
  227. package/src/integrations/chat-sdk/telegram-api.ts +56 -0
  228. package/src/integrations/chat-sdk/templates.ts +16 -0
  229. package/src/integrations/chat-sdk/test-hooks.ts +37 -0
  230. package/src/integrations/chat-sdk/thread-buffer.ts +100 -0
  231. package/src/integrations/chat-sdk/typing.ts +65 -0
  232. package/src/pages/version.ts +4 -5
  233. package/src/prompts/base-prompt.ts +111 -45
  234. package/src/providers/acp-target-catalog.ts +6 -0
  235. package/src/providers/acp-targets.ts +55 -2
  236. package/src/providers/amp-adapter.ts +1 -1
  237. package/src/providers/claude-adapter.ts +1 -1
  238. package/src/providers/claude-flag-settings.ts +17 -5
  239. package/src/providers/claude-managed-adapter.ts +1 -1
  240. package/src/providers/claude-session-events.ts +6 -1
  241. package/src/providers/dsh-adapter.ts +1 -1
  242. package/src/providers/opencode-adapter.ts +243 -26
  243. package/src/providers/opencode-swarm-plugin.ts +31 -0
  244. package/src/providers/pi-mono-adapter.ts +398 -153
  245. package/src/providers/pricing-sources.md +33 -2
  246. package/src/providers/reasoning-effort.ts +27 -0
  247. package/src/providers/types.ts +6 -2
  248. package/src/rbac/legacy-policy.ts +8 -2
  249. package/src/rbac/permissions.ts +21 -0
  250. package/src/scheduler/scheduler.ts +4 -2
  251. package/src/scripts-runtime/loader.ts +19 -7
  252. package/src/scripts-runtime/sdk-allowlist.ts +8 -6
  253. package/src/scripts-runtime/swarm-sdk.ts +0 -11
  254. package/src/scripts-runtime/types/stdlib.d.ts +27 -15
  255. package/src/scripts-runtime/types/swarm-extension.d.ts +63 -1
  256. package/src/scripts-runtime/types/swarm-sdk.d.ts +27 -15
  257. package/src/server.ts +52 -18
  258. package/src/slack/event-dedup.ts +1 -1
  259. package/src/tasks/additive-buffer.ts +4 -2
  260. package/src/tasks/context-key.ts +60 -1
  261. package/src/tasks/model-pin.ts +67 -0
  262. package/src/tasks/worker-follow-up.ts +4 -31
  263. package/src/tests/acp-adapter.test.ts +42 -0
  264. package/src/tests/api-drain-worker-e2e.test.ts +1 -6
  265. package/src/tests/base-prompt.test.ts +58 -54
  266. package/src/tests/chat-sdk-commands.test.ts +191 -0
  267. package/src/tests/chat-sdk-config.test.ts +334 -0
  268. package/src/tests/chat-sdk-discord-api.test.ts +68 -0
  269. package/src/tests/chat-sdk-discord-gateway.test.ts +252 -0
  270. package/src/tests/chat-sdk-discord-webhook.test.ts +126 -0
  271. package/src/tests/chat-sdk-fields-sync.test.ts +50 -0
  272. package/src/tests/chat-sdk-harness.ts +146 -0
  273. package/src/tests/chat-sdk-inbound.test.ts +363 -0
  274. package/src/tests/chat-sdk-relay.test.ts +470 -0
  275. package/src/tests/chat-sdk-reload.test.ts +128 -0
  276. package/src/tests/chat-sdk-shutdown.test.ts +220 -0
  277. package/src/tests/chat-sdk-slack.test.ts +268 -0
  278. package/src/tests/chat-sdk-state.test.ts +163 -0
  279. package/src/tests/chat-sdk-status-route.test.ts +382 -0
  280. package/src/tests/chat-sdk-teams.test.ts +277 -0
  281. package/src/tests/chat-sdk-tools.test.ts +520 -0
  282. package/src/tests/chat-sdk-typing.test.ts +120 -0
  283. package/src/tests/chat-sdk-webhook-telegram.test.ts +200 -0
  284. package/src/tests/claude-adapter-binary.test.ts +9 -4
  285. package/src/tests/claude-flag-settings.test.ts +11 -3
  286. package/src/tests/claude-managed-adapter.test.ts +1 -1
  287. package/src/tests/claude-sdk-lifecycle.test.ts +9 -3
  288. package/src/tests/claude-thinking-tokens.test.ts +57 -0
  289. package/src/tests/claude-worker-parity.test.ts +2 -7
  290. package/src/tests/config-env-export-chat-sdk.test.ts +11 -0
  291. package/src/tests/config-refs.test.ts +66 -0
  292. package/src/tests/context-key.test.ts +19 -0
  293. package/src/tests/cors-allowlist.test.ts +25 -0
  294. package/src/tests/create-page-tool.test.ts +18 -0
  295. package/src/tests/credential-check.test.ts +139 -0
  296. package/src/tests/credentials.test.ts +21 -0
  297. package/src/tests/db-runtime.test.ts +61 -0
  298. package/src/tests/db-task-read-contract.test.ts +20 -0
  299. package/src/tests/db-task-write-contract.test.ts +10 -0
  300. package/src/tests/docs-index-footprint.test.js +3 -3
  301. package/src/tests/dsh-adapter.test.ts +1 -1
  302. package/src/tests/enabled-capabilities.test.ts +20 -0
  303. package/src/tests/entrypoint-api-readiness.test.ts +14 -8
  304. package/src/tests/entrypoint-config-env-export.test.ts +5 -2
  305. package/src/tests/entrypoint-export-to-env.test.ts +78 -0
  306. package/src/tests/explicit-model-validation.test.ts +105 -1
  307. package/src/tests/extensions-example-route-chat-channel.test.ts +154 -0
  308. package/src/tests/extensions-post-bridge.test.ts +51 -0
  309. package/src/tests/fetch-resolved-env.test.ts +128 -0
  310. package/src/tests/fixtures/chat-sdk/telegram-private-text.json +10 -0
  311. package/src/tests/fixtures/extensions/route-chat-channel-to-agent/hooks.ts +27 -0
  312. package/src/tests/fixtures/extensions/route-chat-channel-to-agent/manifest.json +9 -0
  313. package/src/tests/fixtures/openai-compatible-registry-extension.child.ts +146 -0
  314. package/src/tests/fixtures/runner-legacy-resume-prompt.ts +122 -0
  315. package/src/tests/github-handlers.test.ts +35 -0
  316. package/src/tests/harness-provider-resolution.test.ts +12 -0
  317. package/src/tests/heartbeat-checklist.test.ts +3 -2
  318. package/src/tests/hook-runtime-close.test.ts +0 -2
  319. package/src/tests/http-api-integration.test.ts +0 -25
  320. package/src/tests/migration-046-budgets.test.ts +17 -16
  321. package/src/tests/migration-217-chat-sdk-state.test.ts +113 -0
  322. package/src/tests/model-tier-resolution.test.ts +93 -0
  323. package/src/tests/models-catalog.test.ts +42 -1
  324. package/src/tests/openai-compatible-providers.test.ts +134 -0
  325. package/src/tests/openai-compatible-registry-extension.test.ts +42 -0
  326. package/src/tests/opencode-adapter.test.ts +216 -2
  327. package/src/tests/opencode-helmcode-sdk.test.ts +201 -0
  328. package/src/tests/opencode-shell-env.test.ts +145 -0
  329. package/src/tests/openrouter-base-url.test.ts +101 -151
  330. package/src/tests/page-proxy.test.ts +1 -1
  331. package/src/tests/pages-browser-sdk.test.ts +76 -0
  332. package/src/tests/pages-feedback.test.ts +1 -1
  333. package/src/tests/paused-tasks-requested-by.test.ts +102 -0
  334. package/src/tests/pi-custom-provider-fake-server.test.ts +442 -0
  335. package/src/tests/pi-mono-adapter.test.ts +385 -5
  336. package/src/tests/pi-shell-env.test.ts +170 -0
  337. package/src/tests/prompt-template-remaining.test.ts +35 -0
  338. package/src/tests/rbac-engine.test.ts +11 -3
  339. package/src/tests/runner-exit-after-tasks.test.ts +0 -4
  340. package/src/tests/runner-legacy-resume-prompt.test.ts +64 -0
  341. package/src/tests/script-connections.test.ts +2 -0
  342. package/src/tests/scripts-http.test.ts +201 -1
  343. package/src/tests/scripts-only-gating.test.ts +2 -3
  344. package/src/tests/scripts-runtime.test.ts +58 -40
  345. package/src/tests/secret-scrubber.test.ts +86 -0
  346. package/src/tests/seed-skills-bundled-files.test.ts +45 -53
  347. package/src/tests/seed-skills-retire.test.ts +182 -0
  348. package/src/tests/send-task-requester-gate.test.ts +58 -0
  349. package/src/tests/session-cost-recompute-unit.test.ts +46 -0
  350. package/src/tests/skill-get-name-resolution.test.ts +137 -0
  351. package/src/tests/sonnet-5-5-registry.test.ts +9 -1
  352. package/src/tests/swarm-config-export-to-env.test.ts +267 -0
  353. package/src/tests/swarm-config-reserved-keys.test.ts +16 -0
  354. package/src/tests/swarm-diff.test.ts +1 -1
  355. package/src/tests/task-model-effort-rerun.test.ts +164 -0
  356. package/src/tests/task-session-prompts.test.ts +132 -0
  357. package/src/tests/task-tool-manifest.test.ts +14 -0
  358. package/src/tests/task-tools-ctx.test.ts +2 -0
  359. package/src/tests/tool-annotations.test.ts +6 -6
  360. package/src/tests/ui-logs-parser.test.ts +43 -0
  361. package/src/tests/used-by-route.test.ts +6 -0
  362. package/src/tests/vercel-ai-gateway.test.ts +149 -0
  363. package/src/tests/workflow-swarm-script.test.ts +38 -0
  364. package/src/tests/workflow-wait-filter.test.ts +5 -3
  365. package/src/tools/chat-access.ts +41 -0
  366. package/src/tools/chat-open-dm.ts +59 -0
  367. package/src/tools/chat-post.ts +74 -0
  368. package/src/tools/chat-read-thread.ts +100 -0
  369. package/src/tools/chat-reply.ts +75 -0
  370. package/src/tools/create-page.ts +3 -13
  371. package/src/tools/model-catalog/index.ts +2 -1
  372. package/src/tools/register-chat-channel.ts +139 -0
  373. package/src/tools/send-task.ts +24 -0
  374. package/src/tools/skills/skill-get.ts +17 -9
  375. package/src/tools/swarm-config/get-config.ts +2 -1
  376. package/src/tools/swarm-config/list-config.ts +2 -1
  377. package/src/tools/swarm-config/set-config.ts +16 -3
  378. package/src/tools/tool-config.ts +8 -6
  379. package/src/types.ts +12 -2
  380. package/src/utils/config-env-export.ts +74 -0
  381. package/src/utils/credentials.test.ts +92 -0
  382. package/src/utils/credentials.ts +52 -4
  383. package/src/utils/harness-provider.ts +15 -6
  384. package/src/utils/runtime-model-catalog.ts +11 -1
  385. package/src/utils/secret-scrubber.ts +71 -2
  386. package/src/utils/task-tool-manifest.ts +19 -2
  387. package/src/workflows/executors/swarm-script.ts +1 -0
  388. package/templates/skills/agent-browser/SKILL.md +1 -1
  389. package/templates/skills/agent-browser/content.md +1 -1
  390. package/templates/skills/apps/SKILL.md +8 -1
  391. package/templates/skills/apps/content.md +8 -1
  392. package/templates/skills/chat-sdk/config.json +14 -0
  393. package/templates/skills/chat-sdk/content.md +84 -0
  394. package/templates/skills/composio-gmail/content.md +7 -0
  395. package/templates/skills/composio-google-docs/content.md +1 -1
  396. package/templates/skills/email-domain-health/config.json +14 -0
  397. package/templates/skills/email-domain-health/content.md +131 -0
  398. package/templates/skills/kv-storage/content.md +2 -2
  399. package/templates/skills/pages/content.md +8 -10
  400. package/templates/skills/swarm-extensions/content.md +2 -0
  401. package/templates/skills/swarm-scripts/SKILL.md +4 -2
  402. package/templates/skills/swarm-scripts/config.json +1 -1
  403. package/templates/skills/swarm-scripts/content.md +4 -2
  404. package/templates/skills/workflow-iterate/content.md +38 -0
  405. package/dist/artifact-eczsknc3.js +0 -3843
  406. package/dist/cli-bd957dgb.js +0 -153
  407. package/dist/cli-q51yprfq.js +0 -1104
  408. package/dist/cli-t1ze64h3.js +0 -811
  409. package/dist/cli-tcc4wd5d.js +0 -56471
  410. package/dist/index-9ch1n761.js +0 -1102
  411. package/src/artifact-sdk/index.ts +0 -2
  412. package/src/artifact-sdk/localtunnel.d.ts +0 -20
  413. package/src/artifact-sdk/port.ts +0 -12
  414. package/src/artifact-sdk/server.ts +0 -183
  415. package/src/artifact-sdk/tunnel.ts +0 -19
  416. package/src/commands/artifact.ts +0 -249
  417. package/src/http/ecosystem.ts +0 -77
  418. package/src/tests/artifact-commands.test.ts +0 -92
  419. package/src/tests/artifact-sdk.test.ts +0 -793
  420. package/src/tests/register-service-security.test.ts +0 -194
  421. package/src/tools/list-services.ts +0 -107
  422. package/src/tools/register-service.ts +0 -177
  423. package/src/tools/unregister-service.ts +0 -73
  424. package/src/tools/update-service-status.ts +0 -96
  425. package/templates/skills/artifacts/config.json +0 -14
  426. package/templates/skills/artifacts/content.md +0 -344
  427. package/templates/skills/artifacts/files/examples/approval-flow.ts +0 -34
  428. package/templates/skills/artifacts/files/examples/hono-dashboard.ts +0 -31
  429. package/templates/skills/artifacts/files/examples/multi-artifact.ts +0 -20
  430. package/templates/skills/artifacts/files/examples/static-report.sh +0 -17
  431. /package/src/{artifact-sdk → pages}/browser-sdk.ts +0 -0
  432. /package/src/{artifact-sdk → pages}/feedback-overlay.ts +0 -0
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  ALL_TOOLS,
3
3
  init_tool_config
4
- } from "./cli-ywm1azg9.js";
4
+ } from "./cli-hnmhtzvh.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-hsem16hb.js";
25
+ } from "./cli-cgtksawx.js";
26
26
  import {
27
27
  IdentityFieldBudgetError,
28
28
  checkIdentityFieldBudget,
@@ -36,22 +36,22 @@ import {
36
36
  init_profile_sync,
37
37
  matchesDefaultClaudeMd,
38
38
  matchesDefaultIdentityMd
39
- } from "./cli-r4fqfpwf.js";
40
- import {
41
- init_steering_enabled,
42
- isSteeringEnabled
43
- } from "./cli-7mm2r1kp.js";
39
+ } from "./cli-s2sp957d.js";
44
40
  import {
45
41
  init_config,
46
42
  isSlackConfigured
47
43
  } from "./cli-dmtrxqhg.js";
48
44
  import {
49
- init_templates
50
- } from "./cli-mvzyxwg3.js";
45
+ init_steering_enabled,
46
+ isSteeringEnabled
47
+ } from "./cli-7mm2r1kp.js";
51
48
  import {
52
49
  deriveProviderFromKeyType,
53
50
  init_credentials
54
- } from "./cli-tadfgd0t.js";
51
+ } from "./cli-5hkm7whv.js";
52
+ import {
53
+ init_templates
54
+ } from "./cli-mvzyxwg3.js";
55
55
  import {
56
56
  configureDbResolver,
57
57
  getAllTemplateDefinitions,
@@ -75,13 +75,9 @@ import {
75
75
  init_openrouter_base_url
76
76
  } from "./cli-a35hzdve.js";
77
77
  import {
78
- harnessModelMismatch,
79
78
  init_runtime_model_catalog,
80
- init_src,
81
- isAlias,
82
- parseAlias,
83
79
  runtimeHarnessSections
84
- } from "./cli-014vns2y.js";
80
+ } from "./cli-stfs0k5s.js";
85
81
  import {
86
82
  init_zod
87
83
  } from "./cli-sd0mxa3c.js";
@@ -101,7 +97,7 @@ import {
101
97
  import {
102
98
  init_package,
103
99
  package_default
104
- } from "./cli-5er5gjbm.js";
100
+ } from "./cli-k382tshb.js";
105
101
  import {
106
102
  init_bus,
107
103
  realtimeBus
@@ -116,7 +112,13 @@ import {
116
112
  registerVolatileSecret,
117
113
  scrubObject,
118
114
  scrubSecrets
119
- } from "./cli-d161g69q.js";
115
+ } from "./cli-p1x85d2t.js";
116
+ import {
117
+ harnessModelMismatch,
118
+ init_src,
119
+ isAlias,
120
+ parseAlias
121
+ } from "./cli-e3g5mbkz.js";
120
122
  import {
121
123
  __commonJS,
122
124
  __esm,
@@ -8294,6 +8296,26 @@ function slackContextKey(input) {
8294
8296
  const threadTs = assertSafePart(input.threadTs, "threadTs");
8295
8297
  return ["task", "slack", channelId, threadTs].join(SEPARATOR);
8296
8298
  }
8299
+ function chatSdkContextKey(threadId) {
8300
+ const raw = typeof threadId === "string" ? threadId : "";
8301
+ const separatorIndex = raw.indexOf(SEPARATOR);
8302
+ if (separatorIndex <= 0 || separatorIndex === raw.length - 1) {
8303
+ throw new Error(`context-key: chat-sdk thread id must be "<adapter>:<id>" (got ${JSON.stringify(threadId)})`);
8304
+ }
8305
+ const adapter = assertSafePart(raw.slice(0, separatorIndex), "adapter");
8306
+ const rest = encodeURIComponent(raw.slice(separatorIndex + 1));
8307
+ return ["task", "chat-sdk", adapter, rest].join(SEPARATOR);
8308
+ }
8309
+ function chatThreadOfContextKey(key) {
8310
+ if (!key)
8311
+ return null;
8312
+ try {
8313
+ const parsed = parseContextKey(key);
8314
+ return parsed.family === "chat-sdk" ? parsed.parts : null;
8315
+ } catch {
8316
+ return null;
8317
+ }
8318
+ }
8297
8319
  function agentmailContextKey(input) {
8298
8320
  const threadId = assertSafePart(input.threadId, "threadId");
8299
8321
  return ["task", "agentmail", threadId].join(SEPARATOR);
@@ -8388,6 +8410,19 @@ function parseContextKey(key) {
8388
8410
  }
8389
8411
  return { family: "agentmail", parts: { threadId: parts[2] } };
8390
8412
  }
8413
+ case "chat-sdk": {
8414
+ if (parts.length !== 4 || !parts[2] || !parts[3]) {
8415
+ throw new Error(`context-key: malformed chat-sdk key: ${JSON.stringify(key)}`);
8416
+ }
8417
+ const adapter = parts[2];
8418
+ let rest;
8419
+ try {
8420
+ rest = decodeURIComponent(parts[3]);
8421
+ } catch {
8422
+ throw new Error(`context-key: malformed chat-sdk key: ${JSON.stringify(key)}`);
8423
+ }
8424
+ return { family: "chat-sdk", parts: { adapter, threadId: `${adapter}:${rest}` } };
8425
+ }
8391
8426
  case "schedule": {
8392
8427
  if (parts.length !== 3) {
8393
8428
  throw new Error(`context-key: malformed schedule key: ${JSON.stringify(key)}`);
@@ -12222,7 +12257,20 @@ function initDb(dbPath = "./agent-swarm-db.sqlite") {
12222
12257
  }
12223
12258
  db = new Database(dbPath, { create: true });
12224
12259
  console.log(`Database initialized at ${dbPath}`);
12225
- const database = db;
12260
+ const opened = db;
12261
+ try {
12262
+ return bootOpenedDb(opened, dbPath, resolvePromptTemplate, autoEncryptLegacyPlaintextSecrets);
12263
+ } catch (error2) {
12264
+ if (db === opened) {
12265
+ db = null;
12266
+ try {
12267
+ opened.close();
12268
+ } catch {}
12269
+ }
12270
+ throw error2;
12271
+ }
12272
+ }
12273
+ function bootOpenedDb(database, dbPath, resolvePromptTemplate, autoEncryptLegacyPlaintextSecrets) {
12226
12274
  database.run("PRAGMA journal_mode = WAL;");
12227
12275
  database.run("PRAGMA busy_timeout = 5000;");
12228
12276
  database.run("PRAGMA foreign_keys = ON;");
@@ -12244,20 +12292,20 @@ function initDb(dbPath = "./agent-swarm-db.sqlite") {
12244
12292
  }
12245
12293
  ensureAgentProfileColumns(database);
12246
12294
  try {
12247
- const taskSchemaInfo = db.prepare("SELECT sql FROM sqlite_master WHERE type = 'table' AND name = 'agent_tasks'").get();
12295
+ const taskSchemaInfo = database.prepare("SELECT sql FROM sqlite_master WHERE type = 'table' AND name = 'agent_tasks'").get();
12248
12296
  const schemaSql = taskSchemaInfo?.sql ?? "";
12249
12297
  const hasStatusCheck = /status\s+TEXT\b[^,]*\bCHECK\s*\(\s*status\s+IN\s*\(/i.test(schemaSql);
12250
12298
  const statusAllowsCancelled = /status\s+IN\s*\([^)]*'cancelled'/i.test(schemaSql);
12251
12299
  const needsStatusMigration = hasStatusCheck && !statusAllowsCancelled;
12252
12300
  if (needsStatusMigration) {
12253
12301
  console.log("[Migration] Removing restrictive CHECK constraint on agent_tasks.status");
12254
- db.run("PRAGMA foreign_keys=off");
12302
+ database.run("PRAGMA foreign_keys=off");
12255
12303
  const rebuiltSchemaSql = schemaSql.replace(/^(CREATE TABLE\s+(?:IF NOT EXISTS\s+)?)(?:"agent_tasks"|agent_tasks)/i, "$1agent_tasks_new").replace(/\s+CHECK\s*\(\s*status\s+IN\s*\([^)]*\)\s*\)/i, "");
12256
12304
  if (rebuiltSchemaSql === schemaSql || !/agent_tasks_new/i.test(rebuiltSchemaSql)) {
12257
12305
  throw new Error("Could not derive agent_tasks schema without legacy status CHECK");
12258
12306
  }
12259
- const columns = db.prepare('PRAGMA table_info("agent_tasks")').all().map((column) => `"${column.name.replaceAll('"', '""')}"`).join(", ");
12260
- const schemaObjects = db.prepare(`SELECT sql FROM sqlite_master
12307
+ const columns = database.prepare('PRAGMA table_info("agent_tasks")').all().map((column) => `"${column.name.replaceAll('"', '""')}"`).join(", ");
12308
+ const schemaObjects = database.prepare(`SELECT sql FROM sqlite_master
12261
12309
  WHERE tbl_name = 'agent_tasks'
12262
12310
  AND type IN ('index', 'trigger')
12263
12311
  AND sql IS NOT NULL
@@ -12271,13 +12319,13 @@ function initDb(dbPath = "./agent-swarm-db.sqlite") {
12271
12319
  for (const sql of schemaObjects)
12272
12320
  database.run(sql);
12273
12321
  })();
12274
- db.run("PRAGMA foreign_keys=on");
12322
+ database.run("PRAGMA foreign_keys=on");
12275
12323
  console.log("[Migration] Successfully removed CHECK constraint on agent_tasks.status");
12276
12324
  }
12277
12325
  } catch (e) {
12278
12326
  console.error("[Migration] Failed to update agent_tasks CHECK constraint:", e);
12279
12327
  try {
12280
- db.run("PRAGMA foreign_keys=on");
12328
+ database.run("PRAGMA foreign_keys=on");
12281
12329
  } catch (cleanupError) {
12282
12330
  console.error("[Migration] Failed to re-enable SQLite foreign_keys pragma:", cleanupError);
12283
12331
  }
@@ -12318,7 +12366,7 @@ function initDb(dbPath = "./agent-swarm-db.sqlite") {
12318
12366
  console.error(`[credential-bindings] FATAL: failed to migrate legacy credential binding blob: ${err.message}`);
12319
12367
  throw err;
12320
12368
  }
12321
- return db;
12369
+ return database;
12322
12370
  }
12323
12371
  function getDb(path3) {
12324
12372
  if (!db) {
@@ -12394,7 +12442,7 @@ var init_runtime = __esm(() => {
12394
12442
  // src/telemetry-identity.ts
12395
12443
  async function loadUserRole(userId) {
12396
12444
  try {
12397
- const { getUserGrant } = await import("./rbac-roles-eszdg6pm.js");
12445
+ const { getUserGrant } = await import("./rbac-roles-3mraey52.js");
12398
12446
  const grant = await getUserGrant(userId);
12399
12447
  const role = grant.grantsAll ? "admin" : "member";
12400
12448
  if (roleCache.size >= ROLE_CACHE_LIMIT) {
@@ -12554,6 +12602,47 @@ var init_codex_auth_failure = __esm(() => {
12554
12602
  ];
12555
12603
  });
12556
12604
 
12605
+ // src/utils/config-env-export.ts
12606
+ function isEnvExportRestrictedKey(key) {
12607
+ return ENV_EXPORT_RESTRICTED_KEYS.has(key.toUpperCase()) || CONNECTION_SECRET_KEY.test(key);
12608
+ }
12609
+ function defaultExportToEnv(key) {
12610
+ const upper = key.toUpperCase();
12611
+ return !isEnvExportRestrictedKey(key) && !ENV_EXPORT_DEFAULT_OFF_KEYS.has(upper) && !ENV_EXPORT_DEFAULT_OFF_PREFIXES.some((prefix) => upper.startsWith(prefix));
12612
+ }
12613
+ function envExportRestrictedError(key) {
12614
+ return `Key '${key}' is read only by the API server and can never be exported to agent env; store it with exportToEnv: false.`;
12615
+ }
12616
+ function effectiveExportToEnv(key, stored) {
12617
+ return stored && !isEnvExportRestrictedKey(key);
12618
+ }
12619
+ var ENV_EXPORT_RESTRICTED_KEYS, ENV_EXPORT_DEFAULT_OFF_KEYS, CONNECTION_SECRET_KEY, ENV_EXPORT_DEFAULT_OFF_PREFIXES;
12620
+ var init_config_env_export = __esm(() => {
12621
+ ENV_EXPORT_RESTRICTED_KEYS = new Set([
12622
+ "SLACK_APP_TOKEN",
12623
+ "SLACK_SIGNING_SECRET",
12624
+ "GITHUB_APP_PRIVATE_KEY",
12625
+ "GITHUB_WEBHOOK_SECRET",
12626
+ "GITLAB_WEBHOOK_SECRET",
12627
+ "LINEAR_CLIENT_SECRET",
12628
+ "LINEAR_SIGNING_SECRET",
12629
+ "JIRA_CLIENT_SECRET",
12630
+ "JIRA_WEBHOOK_TOKEN",
12631
+ "AZURE_DEVOPS_WEBHOOK_SECRET",
12632
+ "AGENTMAIL_WEBHOOK_SECRET",
12633
+ "API_AGENT_FS_API_KEY"
12634
+ ]);
12635
+ ENV_EXPORT_DEFAULT_OFF_KEYS = new Set([
12636
+ "KAPSO_WEBHOOK_HMAC_SECRET",
12637
+ "SENTRY_TEST_APP_WEBHOOK_SECRET",
12638
+ "TELEMETRY_CH_AUTH",
12639
+ "HACK_AGENT_FS_ADMIN_KEY",
12640
+ "X_CLIENT_SECRET"
12641
+ ]);
12642
+ CONNECTION_SECRET_KEY = /^connection\..+\.secret$/;
12643
+ ENV_EXPORT_DEFAULT_OFF_PREFIXES = ["CHAT_SDK_"];
12644
+ });
12645
+
12557
12646
  // src/utils/config-secrets.ts
12558
12647
  var MASKED_SECRET_VALUE = "********";
12559
12648
  var init_config_secrets = () => {};
@@ -13436,6 +13525,7 @@ function rowToAgentTask(row) {
13436
13525
  modelSource: row.modelSource ?? undefined,
13437
13526
  modelAlias: row.modelAlias ?? undefined,
13438
13527
  effort: ReasoningEffortSchema.safeParse(row.effort).success ? row.effort : undefined,
13528
+ resolvedEffort: ReasoningEffortSchema.safeParse(row.resolvedEffort).success ? row.resolvedEffort : undefined,
13439
13529
  scheduleId: row.scheduleId ?? undefined,
13440
13530
  workflowRunId: row.workflowRunId ?? undefined,
13441
13531
  workflowRunStepId: row.workflowRunStepId ?? undefined,
@@ -13492,6 +13582,7 @@ function rowToAgentTaskSummary(row) {
13492
13582
  modelSource: row.modelSource ?? undefined,
13493
13583
  modelAlias: row.modelAlias ?? undefined,
13494
13584
  effort: ReasoningEffortSchema.safeParse(row.effort).success ? row.effort : undefined,
13585
+ resolvedEffort: ReasoningEffortSchema.safeParse(row.resolvedEffort).success ? row.resolvedEffort : undefined,
13495
13586
  provider: row.provider ?? undefined,
13496
13587
  requestedByUserId: row.requestedByUserId ?? undefined,
13497
13588
  progress: row.progress ?? undefined,
@@ -13864,6 +13955,78 @@ async function markFinalizedSlackRelaysDelivered() {
13864
13955
  )`, [now, now]);
13865
13956
  return result.changes;
13866
13957
  }
13958
+ async function getPendingChatRelayTasks(now = Date.now(), limit2 = 200, adapters = []) {
13959
+ if (adapters.length === 0)
13960
+ return [];
13961
+ for (const adapter of adapters) {
13962
+ if (!/^[a-z]+$/.test(adapter))
13963
+ throw new Error(`invalid chat adapter name: ${adapter}`);
13964
+ }
13965
+ const adapterFilter = adapters.map(() => "task.contextKey GLOB ?").join(" OR ");
13966
+ const rows = await getDbClient().query(`SELECT task.*,
13967
+ obligation.created_at AS relay_created_at,
13968
+ obligation.last_error AS relay_last_error
13969
+ FROM chat_relay_obligations obligation
13970
+ JOIN agent_tasks task ON task.id = obligation.task_id
13971
+ WHERE obligation.delivered_at IS NULL
13972
+ AND obligation.given_up_at IS NULL
13973
+ AND task.status IN ('completed', 'failed', 'cancelled')
13974
+ AND (${adapterFilter})
13975
+ AND ${CHAT_RELAY_ELIGIBLE_SQL}
13976
+ ORDER BY obligation.last_attempt_at IS NOT NULL,
13977
+ obligation.last_attempt_at ASC,
13978
+ obligation.created_at ASC
13979
+ LIMIT ?`, [
13980
+ ...adapters.map((adapter) => `task:chat-sdk:${adapter}:*`),
13981
+ new Date(now).toISOString(),
13982
+ limit2
13983
+ ]);
13984
+ return rows.map((row) => ({
13985
+ task: rowToAgentTask(row),
13986
+ createdAt: row.relay_created_at,
13987
+ lastError: row.relay_last_error
13988
+ }));
13989
+ }
13990
+ async function giveUpStaleChatRelays(now, olderThanMs) {
13991
+ const at = new Date(now).toISOString();
13992
+ const cutoff = new Date(now - olderThanMs).toISOString();
13993
+ const result = await getDbClient().run(`UPDATE chat_relay_obligations
13994
+ SET given_up_at = ?, last_error = 'gave up: older than 24h', updated_at = ?
13995
+ WHERE delivered_at IS NULL AND given_up_at IS NULL AND created_at < ?`, [at, at, cutoff]);
13996
+ return result.changes;
13997
+ }
13998
+ async function markChatRelayAttempted(taskId, now = Date.now()) {
13999
+ const at = new Date(now).toISOString();
14000
+ const result = await getDbClient().run(`UPDATE chat_relay_obligations AS obligation
14001
+ SET attempt_count = attempt_count + 1,
14002
+ last_attempt_at = ?,
14003
+ updated_at = ?
14004
+ WHERE task_id = ?
14005
+ AND delivered_at IS NULL
14006
+ AND given_up_at IS NULL
14007
+ AND ${CHAT_RELAY_ELIGIBLE_SQL}`, [at, at, taskId, at]);
14008
+ return result.changes > 0;
14009
+ }
14010
+ async function recordChatRelayError(taskId, error2, now = Date.now()) {
14011
+ const result = await getDbClient().run(`UPDATE chat_relay_obligations
14012
+ SET last_error = ?, updated_at = ?
14013
+ WHERE task_id = ? AND delivered_at IS NULL`, [scrubSecrets(error2), new Date(now).toISOString(), taskId]);
14014
+ return result.changes > 0;
14015
+ }
14016
+ async function markChatRelayDelivered(taskId, now = Date.now()) {
14017
+ const at = new Date(now).toISOString();
14018
+ const result = await getDbClient().run(`UPDATE chat_relay_obligations
14019
+ SET delivered_at = ?, updated_at = ?
14020
+ WHERE task_id = ? AND delivered_at IS NULL`, [at, at, taskId]);
14021
+ return result.changes > 0;
14022
+ }
14023
+ async function markChatRelayGivenUp(taskId, error2, now = Date.now()) {
14024
+ const at = new Date(now).toISOString();
14025
+ const result = await getDbClient().run(`UPDATE chat_relay_obligations
14026
+ SET given_up_at = ?, last_error = ?, updated_at = ?
14027
+ WHERE task_id = ? AND delivered_at IS NULL AND given_up_at IS NULL`, [at, scrubSecrets(error2), at, taskId]);
14028
+ return result.changes > 0;
14029
+ }
13867
14030
  async function getRecentlyFinishedWorkerTasks() {
13868
14031
  const rows = await getDbClient().query(`SELECT t.* FROM agent_tasks t
13869
14032
  LEFT JOIN agents a ON t.agentId = a.id
@@ -14035,6 +14198,36 @@ async function getLatestLeadTaskInThread(channelId, threadTs) {
14035
14198
  LIMIT 1`, [channelId, threadTs]);
14036
14199
  return row ? rowToAgentTask(row) : null;
14037
14200
  }
14201
+ async function getAgentWorkingOnContextKey(contextKey, source2) {
14202
+ const taskRow = await getDbClient().get(`SELECT agentId FROM agent_tasks
14203
+ WHERE contextKey = ?
14204
+ AND (? IS NULL OR source = ?)
14205
+ ORDER BY createdAt DESC, rowid DESC
14206
+ LIMIT 1`, [contextKey, source2 ?? null, source2 ?? null]);
14207
+ if (taskRow?.agentId)
14208
+ return getAgentById(taskRow.agentId);
14209
+ return null;
14210
+ }
14211
+ async function getLatestActiveTaskByContextKey(contextKey, source2) {
14212
+ const row = await getDbClient().get(`SELECT * FROM agent_tasks
14213
+ WHERE contextKey = ?
14214
+ AND (? IS NULL OR source = ?)
14215
+ AND status IN ('in_progress', 'pending')
14216
+ ORDER BY createdAt DESC, rowid DESC
14217
+ LIMIT 1`, [contextKey, source2 ?? null, source2 ?? null]);
14218
+ return row ? rowToAgentTask(row) : null;
14219
+ }
14220
+ async function getLatestLeadTaskByContextKey(contextKey, source2) {
14221
+ const row = await getDbClient().get(`SELECT t.*
14222
+ FROM agent_tasks t
14223
+ JOIN agents a ON a.id = t.agentId
14224
+ WHERE t.contextKey = ?
14225
+ AND (? IS NULL OR t.source = ?)
14226
+ AND a.isLead = 1
14227
+ ORDER BY t.createdAt DESC, t.rowid DESC
14228
+ LIMIT 1`, [contextKey, source2 ?? null, source2 ?? null]);
14229
+ return row ? rowToAgentTask(row) : null;
14230
+ }
14038
14231
  async function getMostRecentTaskInThread(channelId, threadTs) {
14039
14232
  const row = await getDbClient().get(`SELECT * FROM agent_tasks
14040
14233
  WHERE slackChannelId = ?
@@ -14076,11 +14269,15 @@ async function findRecentCancelledTaskInThread(channelId, threadTs, windowMinute
14076
14269
  LIMIT 1`, [channelId, threadTs, since]);
14077
14270
  return row ? rowToAgentTask(row) : null;
14078
14271
  }
14079
- var dependencies2, TASK_PREVIEW_LENGTH = 300, TASK_PREVIEW_BYTES, TASK_PREVIEW_SQL, taskPreviewDecoder, LIST_COLUMNS, NEVER_STARTED_TASK_STATUSES, findTaskByGitHub, LINEAR_TRACKER_CONTEXT_KEY_PREFIX = "task:trackers:linear:";
14272
+ var dependencies2, TASK_PREVIEW_LENGTH = 300, TASK_PREVIEW_BYTES, TASK_PREVIEW_SQL, taskPreviewDecoder, LIST_COLUMNS, NEVER_STARTED_TASK_STATUSES, findTaskByGitHub, CHAT_RELAY_ELIGIBLE_SQL = `(obligation.last_attempt_at IS NULL
14273
+ OR (julianday(?) - julianday(obligation.last_attempt_at)) * 86400000.0 >=
14274
+ CASE WHEN obligation.attempt_count >= 8 THEN 600000
14275
+ ELSE 3000 * (1 << obligation.attempt_count) END)`, LINEAR_TRACKER_CONTEXT_KEY_PREFIX = "task:trackers:linear:";
14080
14276
  var init_read = __esm(() => {
14081
14277
  init_key();
14082
14278
  init_types();
14083
14279
  init_provider_metadata();
14280
+ init_secret_scrubber();
14084
14281
  init_agents();
14085
14282
  init_runtime();
14086
14283
  TASK_PREVIEW_BYTES = 4 * (TASK_PREVIEW_LENGTH + 1);
@@ -14094,6 +14291,7 @@ var init_read = __esm(() => {
14094
14291
  agent_tasks.offeredTo, agent_tasks.acceptedAt, agent_tasks.parentTaskId,
14095
14292
  agent_tasks.scheduleId, agent_tasks.model, agent_tasks.modelTier,
14096
14293
  agent_tasks.resolvedModel, agent_tasks.modelSource, agent_tasks.modelAlias, agent_tasks.effort,
14294
+ agent_tasks.resolvedEffort,
14097
14295
  agent_tasks.provider, agent_tasks.requestedByUserId, agent_tasks.progress,
14098
14296
  agent_tasks.createdAt, agent_tasks.lastUpdatedAt, agent_tasks.finishedAt,
14099
14297
  agent_tasks.peakContextPercent`,
@@ -14334,7 +14532,7 @@ async function startTask(taskId) {
14334
14532
  }
14335
14533
  return result;
14336
14534
  }
14337
- async function updateTaskClaudeSessionId(taskId, claudeSessionId, provider, providerMeta, model, harnessVariant, harnessVariantMeta) {
14535
+ async function updateTaskClaudeSessionId(taskId, claudeSessionId, provider, providerMeta, model, harnessVariant, harnessVariantMeta, resolvedEffort) {
14338
14536
  const setClauses = ["claudeSessionId = ?", "lastUpdatedAt = ?"];
14339
14537
  const params = [claudeSessionId, new Date().toISOString()];
14340
14538
  if (provider !== undefined) {
@@ -14357,6 +14555,10 @@ async function updateTaskClaudeSessionId(taskId, claudeSessionId, provider, prov
14357
14555
  setClauses.push("harnessVariantMeta = ?");
14358
14556
  params.push(JSON.stringify(harnessVariantMeta));
14359
14557
  }
14558
+ if (resolvedEffort !== undefined) {
14559
+ setClauses.push("resolvedEffort = ?");
14560
+ params.push(resolvedEffort);
14561
+ }
14360
14562
  params.push(taskId);
14361
14563
  const row = await getDbClient().get(`UPDATE agent_tasks SET ${setClauses.join(", ")} WHERE id = ? RETURNING *`, params);
14362
14564
  return row ? rowToAgentTask(row) : null;
@@ -14430,7 +14632,7 @@ async function completeTask(id, output, options) {
14430
14632
  });
14431
14633
  } catch {}
14432
14634
  getDbClient().afterCommit(() => {
14433
- import("./event-bus-vjtv82gm.js").then(({ workflowEventBus }) => {
14635
+ import("./event-bus-6axnngdj.js").then(({ workflowEventBus }) => {
14434
14636
  workflowEventBus.emit("task.completed", {
14435
14637
  taskId: id,
14436
14638
  output: scrubbedOutput,
@@ -14485,7 +14687,7 @@ async function failTask(id, reason, opts = {}) {
14485
14687
  });
14486
14688
  } catch {}
14487
14689
  getDbClient().afterCommit(() => {
14488
- import("./event-bus-vjtv82gm.js").then(({ workflowEventBus }) => {
14690
+ import("./event-bus-6axnngdj.js").then(({ workflowEventBus }) => {
14489
14691
  workflowEventBus.emit("task.failed", {
14490
14692
  taskId: id,
14491
14693
  failureReason: scrubbedReason,
@@ -14567,7 +14769,7 @@ async function cancelTask(id, reason) {
14567
14769
  });
14568
14770
  } catch {}
14569
14771
  getDbClient().afterCommit(() => {
14570
- import("./event-bus-vjtv82gm.js").then(({ workflowEventBus }) => {
14772
+ import("./event-bus-6axnngdj.js").then(({ workflowEventBus }) => {
14571
14773
  workflowEventBus.emit("task.cancelled", {
14572
14774
  taskId: id,
14573
14775
  agentId: row.agentId,
@@ -14624,7 +14826,7 @@ async function supersedeTask(id, args) {
14624
14826
  });
14625
14827
  } catch {}
14626
14828
  getDbClient().afterCommit(() => {
14627
- import("./event-bus-vjtv82gm.js").then(({ workflowEventBus }) => {
14829
+ import("./event-bus-6axnngdj.js").then(({ workflowEventBus }) => {
14628
14830
  workflowEventBus.emit("task.superseded", {
14629
14831
  taskId: id,
14630
14832
  reason: args.reason,
@@ -14836,7 +15038,7 @@ async function updateTaskProgress(id, progress) {
14836
15038
  });
14837
15039
  } catch {}
14838
15040
  getDbClient().afterCommit(() => {
14839
- import("./event-bus-vjtv82gm.js").then(({ workflowEventBus }) => {
15041
+ import("./event-bus-6axnngdj.js").then(({ workflowEventBus }) => {
14840
15042
  workflowEventBus.emit("task.progress", {
14841
15043
  taskId: id,
14842
15044
  progress: scrubbedProgress,
@@ -14907,7 +15109,7 @@ function emitChildRunFinished(childRunId, parentStepId, status) {
14907
15109
  }
14908
15110
  function emitAfterCommit(childRunId, parentStepId) {
14909
15111
  getDbClient().afterCommit(() => {
14910
- import("./event-bus-vjtv82gm.js").then(({ workflowEventBus }) => {
15112
+ import("./event-bus-6axnngdj.js").then(({ workflowEventBus }) => {
14911
15113
  workflowEventBus.emit("workflow.child.finished", { childRunId, parentStepId });
14912
15114
  }).catch((err) => console.error("[db] workflow.child.finished event not emitted:", scrubSecrets(err instanceof Error ? err.message : String(err))));
14913
15115
  });
@@ -14924,6 +15126,164 @@ var init_workflow_runs = __esm(() => {
14924
15126
  ]);
14925
15127
  });
14926
15128
 
15129
+ // src/integrations/chat-sdk/schema.ts
15130
+ function forbiddenKeyIssues(value, ctx) {
15131
+ for (const key of FORBIDDEN_ADAPTER_KEYS) {
15132
+ if (key in value) {
15133
+ ctx.addIssue({
15134
+ code: "custom",
15135
+ path: [key],
15136
+ message: `${key} is not allowed in CHAT_SDK_ADAPTERS`
15137
+ });
15138
+ }
15139
+ }
15140
+ }
15141
+ function adapterSchema(shape) {
15142
+ return exports_external.looseObject({ ...shape, ...COMMON_SHAPE }).superRefine(forbiddenKeyIssues);
15143
+ }
15144
+ function draftShape(shape) {
15145
+ return Object.fromEntries(Object.entries(shape).map(([key, field]) => [key, field.optional()]));
15146
+ }
15147
+ function discordPublicKeyIssue(value, ctx) {
15148
+ if (typeof value.publicKey === "string" && !DISCORD_PUBLIC_KEY_PATTERN.test(value.publicKey)) {
15149
+ ctx.addIssue({
15150
+ code: "custom",
15151
+ path: ["publicKey"],
15152
+ message: "publicKey must be 64 hex characters (the application's Ed25519 public key)"
15153
+ });
15154
+ }
15155
+ }
15156
+ function valueAt(input, path3) {
15157
+ let current = input;
15158
+ for (const key of path3) {
15159
+ if (current === null || typeof current !== "object")
15160
+ return;
15161
+ current = current[key];
15162
+ }
15163
+ return current;
15164
+ }
15165
+ function firstIssueText(error2, prefix = "CHAT_SDK_ADAPTERS", input) {
15166
+ const issue = error2.issues[0];
15167
+ if (!issue)
15168
+ return `${prefix} is invalid`;
15169
+ const path3 = issue.path.length > 0 ? issue.path.join(".") : "(root)";
15170
+ const missing = input !== undefined && issue.path.length > 0 && valueAt(input, issue.path) === undefined;
15171
+ return `${prefix}.${path3}: ${missing ? "required" : issue.message}`;
15172
+ }
15173
+ function formFields(shape) {
15174
+ return Object.keys(shape).filter((key) => key !== "enabled");
15175
+ }
15176
+ function isAdapterEntryEnabled(entry) {
15177
+ return entry !== undefined && entry.enabled !== false;
15178
+ }
15179
+ function validateChatSdkAdaptersValue(value) {
15180
+ if (typeof value !== "string")
15181
+ return "CHAT_SDK_ADAPTERS must be a JSON string";
15182
+ let parsed;
15183
+ try {
15184
+ parsed = JSON.parse(value);
15185
+ } catch (error2) {
15186
+ return `CHAT_SDK_ADAPTERS is not valid JSON: ${error2 instanceof Error ? error2.message : String(error2)}`;
15187
+ }
15188
+ const result = ChatSdkAdaptersDraftSchema.safeParse(parsed);
15189
+ return result.success ? null : firstIssueText(result.error);
15190
+ }
15191
+ var CHAT_SDK_ADAPTER_NAMES, ConfigRefSchema, Str, FORBIDDEN_ADAPTER_KEYS, COMMON_SHAPE, TELEGRAM_SHAPE, SLACK_SHAPE, TelegramAdapterSchema, SlackAdapterSchema, DISCORD_PUBLIC_KEY_PATTERN, DISCORD_SHAPE, DiscordAdapterSchema, TEAMS_SHAPE, TeamsAdapterSchema, ChatSdkAdaptersSchema, CHAT_SDK_ADAPTER_SCHEMAS, ChatSdkAdaptersDraftSchema, CHAT_SDK_ADAPTER_FIELDS;
15192
+ var init_schema = __esm(() => {
15193
+ init_zod();
15194
+ CHAT_SDK_ADAPTER_NAMES = ["telegram", "slack", "discord", "teams"];
15195
+ ConfigRefSchema = exports_external.strictObject({ $config: exports_external.string().min(1) });
15196
+ Str = exports_external.union([exports_external.string().trim().min(1), ConfigRefSchema]);
15197
+ FORBIDDEN_ADAPTER_KEYS = [
15198
+ "apiUrl",
15199
+ "apiBaseUrl",
15200
+ "webhookVerifier",
15201
+ "allowUnverifiedWebhooks"
15202
+ ];
15203
+ COMMON_SHAPE = {
15204
+ userName: exports_external.string().min(1).optional(),
15205
+ enabled: exports_external.boolean().optional()
15206
+ };
15207
+ TELEGRAM_SHAPE = {
15208
+ botToken: Str,
15209
+ secretToken: Str.optional(),
15210
+ mode: exports_external.enum(["webhook", "polling"]).default("webhook"),
15211
+ allowedUserIds: exports_external.array(exports_external.union([exports_external.string(), exports_external.number()])).optional()
15212
+ };
15213
+ SLACK_SHAPE = {
15214
+ botToken: Str,
15215
+ signingSecret: Str.optional(),
15216
+ appToken: Str.optional(),
15217
+ mode: exports_external.enum(["webhook", "socket"]).default("webhook")
15218
+ };
15219
+ TelegramAdapterSchema = adapterSchema(TELEGRAM_SHAPE);
15220
+ SlackAdapterSchema = adapterSchema(SLACK_SHAPE).superRefine((value, ctx) => {
15221
+ if (value.mode === "webhook" && value.signingSecret === undefined) {
15222
+ ctx.addIssue({
15223
+ code: "custom",
15224
+ path: ["signingSecret"],
15225
+ message: "signingSecret is required in webhook mode"
15226
+ });
15227
+ }
15228
+ if (value.mode === "socket" && value.appToken === undefined) {
15229
+ ctx.addIssue({
15230
+ code: "custom",
15231
+ path: ["appToken"],
15232
+ message: "appToken is required in socket mode"
15233
+ });
15234
+ }
15235
+ });
15236
+ DISCORD_PUBLIC_KEY_PATTERN = /^[0-9a-fA-F]{64}$/;
15237
+ DISCORD_SHAPE = {
15238
+ botToken: Str,
15239
+ publicKey: Str,
15240
+ applicationId: Str,
15241
+ respondToChannelIds: exports_external.array(exports_external.string()).optional(),
15242
+ respondToGlobalMentions: exports_external.boolean().optional(),
15243
+ mentionRoleIds: exports_external.array(exports_external.string()).optional()
15244
+ };
15245
+ DiscordAdapterSchema = adapterSchema(DISCORD_SHAPE).superRefine(discordPublicKeyIssue);
15246
+ TEAMS_SHAPE = {
15247
+ appId: Str,
15248
+ appPassword: Str,
15249
+ appTenantId: Str.optional(),
15250
+ appType: exports_external.enum(["MultiTenant", "SingleTenant"]).default("MultiTenant")
15251
+ };
15252
+ TeamsAdapterSchema = adapterSchema(TEAMS_SHAPE).superRefine((value, ctx) => {
15253
+ if (value.appType === "SingleTenant" && value.appTenantId === undefined) {
15254
+ ctx.addIssue({
15255
+ code: "custom",
15256
+ path: ["appTenantId"],
15257
+ message: "appTenantId is required for a SingleTenant app"
15258
+ });
15259
+ }
15260
+ });
15261
+ ChatSdkAdaptersSchema = exports_external.strictObject({
15262
+ telegram: TelegramAdapterSchema,
15263
+ slack: SlackAdapterSchema,
15264
+ discord: DiscordAdapterSchema,
15265
+ teams: TeamsAdapterSchema
15266
+ }).partial();
15267
+ CHAT_SDK_ADAPTER_SCHEMAS = {
15268
+ telegram: TelegramAdapterSchema,
15269
+ slack: SlackAdapterSchema,
15270
+ discord: DiscordAdapterSchema,
15271
+ teams: TeamsAdapterSchema
15272
+ };
15273
+ ChatSdkAdaptersDraftSchema = exports_external.strictObject({
15274
+ telegram: adapterSchema(draftShape(TELEGRAM_SHAPE)),
15275
+ slack: adapterSchema(draftShape(SLACK_SHAPE)),
15276
+ discord: adapterSchema(draftShape(DISCORD_SHAPE)).superRefine(discordPublicKeyIssue),
15277
+ teams: adapterSchema(draftShape(TEAMS_SHAPE))
15278
+ }).partial();
15279
+ CHAT_SDK_ADAPTER_FIELDS = {
15280
+ telegram: formFields(TelegramAdapterSchema.shape),
15281
+ slack: formFields(SlackAdapterSchema.shape),
15282
+ discord: formFields(DiscordAdapterSchema.shape),
15283
+ teams: formFields(TeamsAdapterSchema.shape)
15284
+ };
15285
+ });
15286
+
14927
15287
  // src/scripts-runtime/executors/quickjs-pool-config.ts
14928
15288
  function validateQuickJSPoolSize(value) {
14929
15289
  const error2 = `Invalid SCRIPT_QUICKJS_POOL_SIZE (must be an integer between 1 and ${MAX_QUICKJS_POOL_SIZE})`;
@@ -15015,20 +15375,26 @@ var init_enabled_tools = () => {};
15015
15375
  function parseTaskToolManifest(value) {
15016
15376
  return taskToolManifestSchema.parse(JSON.parse(value));
15017
15377
  }
15378
+ function isChatSdkTask(task) {
15379
+ return chatThreadOfContextKey(task.contextKey) !== null;
15380
+ }
15018
15381
  function selectTaskTools(manifest, task) {
15019
15382
  const fromSchedule = task.scheduleId && Object.hasOwn(manifest.schedules ?? {}, task.scheduleId) ? manifest.schedules?.[task.scheduleId] : undefined;
15020
15383
  const fromType = task.taskType && Object.hasOwn(manifest.taskTypes ?? {}, task.taskType) ? manifest.taskTypes?.[task.taskType] : undefined;
15021
- return [...new Set(fromSchedule ?? fromType ?? [])].filter((name) => !name.startsWith("slack-") || Boolean(task.slackChannelId));
15384
+ const chatTask = isChatSdkTask(task);
15385
+ return [...new Set(fromSchedule ?? fromType ?? [])].filter((name) => (!name.startsWith("slack-") || Boolean(task.slackChannelId)) && (chatTask || !CHAT_TASK_ONLY_TOOLS.includes(name)));
15022
15386
  }
15023
- var toolNames, taskToolManifestSchema;
15387
+ var toolNames, taskToolManifestSchema, CHAT_TASK_ONLY_TOOLS;
15024
15388
  var init_task_tool_manifest = __esm(() => {
15025
15389
  init_zod();
15390
+ init_context_key();
15026
15391
  init_tool_config();
15027
15392
  toolNames = exports_external.array(exports_external.string().refine((name) => ALL_TOOLS.has(name), "Unknown swarm tool")).max(16);
15028
15393
  taskToolManifestSchema = exports_external.strictObject({
15029
15394
  taskTypes: exports_external.record(exports_external.string().min(1).max(50), toolNames).optional(),
15030
15395
  schedules: exports_external.record(exports_external.uuid(), toolNames).optional()
15031
15396
  });
15397
+ CHAT_TASK_ONLY_TOOLS = ["chat-reply"];
15032
15398
  });
15033
15399
 
15034
15400
  // src/be/model-tier-keys.ts
@@ -15068,6 +15434,12 @@ var init_model_tier_keys = __esm(() => {
15068
15434
  });
15069
15435
 
15070
15436
  // src/be/swarm-config-guard.ts
15437
+ function teamsSdkEnvKeysSql() {
15438
+ return TEAMS_SDK_ENV_KEYS.map((key) => `'${key}'`).join(", ");
15439
+ }
15440
+ function isApiOnlyConfigKey(key) {
15441
+ return API_ONLY_CONFIG_KEYS.has(key);
15442
+ }
15071
15443
  function isInternalConfigKey(key) {
15072
15444
  return INTERNAL_CONFIG_KEYS.has(key.toLowerCase());
15073
15445
  }
@@ -15175,22 +15547,37 @@ function validateConfigValue(key, value) {
15175
15547
  const validator = VALIDATED_KEYS[key.toUpperCase()];
15176
15548
  return validator ? validator(value) : null;
15177
15549
  }
15178
- var RESERVED_KEYS, INTERNAL_CONFIG_KEYS, BOOLEAN_LITERALS, MAX_DB_RETENTION_DAYS = 1e6, DB_RETENTION_TUNING_BOUNDS, validateControllerTokenTtlDays, validateControllerGraceSec, VALIDATED_KEYS;
15550
+ function validateExportToEnv(key, exportToEnv) {
15551
+ return exportToEnv === true && isEnvExportRestrictedKey(key) ? envExportRestrictedError(key) : null;
15552
+ }
15553
+ var TEAMS_SDK_ENV_KEYS, RESERVED_KEYS, API_ONLY_CONFIG_KEYS, INTERNAL_CONFIG_KEYS, BOOLEAN_LITERALS, MAX_DB_RETENTION_DAYS = 1e6, DB_RETENTION_TUNING_BOUNDS, validateControllerTokenTtlDays, validateControllerGraceSec, VALIDATED_KEYS;
15179
15554
  var init_swarm_config_guard = __esm(() => {
15555
+ init_schema();
15180
15556
  init_quickjs_pool_config();
15181
15557
  init_reaction_shortcode();
15182
15558
  init_types();
15183
15559
  init_api_drain();
15560
+ init_config_env_export();
15184
15561
  init_enabled_tools();
15185
15562
  init_org_website();
15186
15563
  init_task_tool_manifest();
15187
15564
  init_model_tier_keys();
15565
+ TEAMS_SDK_ENV_KEYS = [
15566
+ "SERVICE_URL",
15567
+ "TENANT_ID",
15568
+ "CLIENT_ID",
15569
+ "CLIENT_SECRET",
15570
+ "MANAGED_IDENTITY_CLIENT_ID",
15571
+ "CLOUD"
15572
+ ];
15188
15573
  RESERVED_KEYS = new Set([
15189
15574
  "API_KEY",
15190
15575
  "SECRETS_ENCRYPTION_KEY",
15191
15576
  "CORS_ALLOW_ANY_ORIGIN",
15192
- "EXTENSION_ALLOW_LEAD_ACTIVATION"
15577
+ "EXTENSION_ALLOW_LEAD_ACTIVATION",
15578
+ "CHAT_SDK_API_URL_OVERRIDES"
15193
15579
  ]);
15580
+ API_ONLY_CONFIG_KEYS = new Set(["API_AGENT_FS_API_KEY", "SLACK_SIGNING_SECRET"]);
15194
15581
  INTERNAL_CONFIG_KEYS = new Set(["onboarding_state", "runtime_owner_id"]);
15195
15582
  BOOLEAN_LITERALS = ["true", "false", "1", "0"];
15196
15583
  DB_RETENTION_TUNING_BOUNDS = {
@@ -15222,6 +15609,7 @@ var init_swarm_config_guard = __esm(() => {
15222
15609
  ], 1),
15223
15610
  ...integerValidators(["RUNTIME_SOCKET_GRACE_SEC"], 0),
15224
15611
  ...integerValidators(["RUNTIME_WAKE_GRACE_SEC", "RUNTIME_WAKE_REROUTE_SEC", "RUNTIME_ROUTING_INTERVAL_MS"], 0),
15612
+ CHAT_SDK_ADAPTERS: validateChatSdkAdaptersValue,
15225
15613
  TASK_TOOL_MANIFESTS: (value) => {
15226
15614
  try {
15227
15615
  if (typeof value !== "string")
@@ -15319,6 +15707,7 @@ var init_swarm_config_guard = __esm(() => {
15319
15707
  "OPENROUTER_APP_ATTRIBUTION",
15320
15708
  "CURSOR_NATIVE_SYSTEM_PROMPT",
15321
15709
  "SLACK_DISABLE",
15710
+ "CHAT_SDK_ENABLED",
15322
15711
  "SLACK_RENDER_V2",
15323
15712
  "SLACK_RENDER_V2_DELEGATION",
15324
15713
  "SLACK_BLOCK_EXTERNAL_CHANNELS",
@@ -15393,6 +15782,7 @@ var init_swarm_config_guard = __esm(() => {
15393
15782
  ...integerValidators(["MODEL_LATEST_SOAK_DAYS"], 0),
15394
15783
  ...integerValidators(["APPROVAL_REQUEST_AUTO_CANCELLATION_DAYS"], 0),
15395
15784
  ...boundedIntegerValidators(["API_DRAIN_MAX_MS"], 0, API_DRAIN_MAX_MS_LIMIT),
15785
+ ...boundedIntegerValidators(["CHAT_SDK_BUFFER_MS"], 1, 600000),
15396
15786
  ...boundedIntegerValidators(["CONTEXT_PREAMBLE_MAX_TOKENS"], 100, 20000),
15397
15787
  MEMORY_MIN_SIMILARITY: (value) => validateFloatRange("MEMORY_MIN_SIMILARITY", value, 0, 1, "between 0 and 1 inclusive"),
15398
15788
  MEMORY_ACCESS_BOOST_MAX: (value) => validateFloatRange("MEMORY_ACCESS_BOOST_MAX", value, 1, Number.POSITIVE_INFINITY, "a number >= 1")
@@ -16605,7 +16995,7 @@ async function loadSecretRegistry() {
16605
16995
  result.failed += 1;
16606
16996
  }
16607
16997
  try {
16608
- const { loadRuntimeControllerSecrets } = await import("./db-yyhqqrbf.js");
16998
+ const { loadRuntimeControllerSecrets } = await import("./db-k8ankj20.js");
16609
16999
  const loaded = await loadRuntimeControllerSecrets();
16610
17000
  result.runtimeController = loaded.count;
16611
17001
  result.failed += loaded.failed;
@@ -17028,6 +17418,7 @@ __export(exports_db, {
17028
17418
  getAgentSkills: () => getAgentSkills,
17029
17419
  getAgentStatusCounts: () => getAgentStatusCounts,
17030
17420
  getAgentWithTasks: () => getAgentWithTasks,
17421
+ getAgentWorkingOnContextKey: () => getAgentWorkingOnContextKey,
17031
17422
  getAgentWorkingOnThread: () => getAgentWorkingOnThread,
17032
17423
  getAllAgentMailInboxMappings: () => getAllAgentMailInboxMappings,
17033
17424
  getAllAgents: () => getAllAgents,
@@ -17089,8 +17480,10 @@ __export(exports_db, {
17089
17480
  getLastReadAt: () => getLastReadAt,
17090
17481
  getLastRunStart: () => getLastRunStart,
17091
17482
  getLastSuccessfulRun: () => getLastSuccessfulRun,
17483
+ getLatestActiveTaskByContextKey: () => getLatestActiveTaskByContextKey,
17092
17484
  getLatestActiveTaskInThread: () => getLatestActiveTaskInThread,
17093
17485
  getLatestContextVersion: () => getLatestContextVersion,
17486
+ getLatestLeadTaskByContextKey: () => getLatestLeadTaskByContextKey,
17094
17487
  getLatestLeadTaskInThread: () => getLatestLeadTaskInThread,
17095
17488
  getLatestPageBySlug: () => getLatestPageBySlug,
17096
17489
  getLatestScriptRunStepTaskByContextKey: () => getLatestScriptRunStepTaskByContextKey,
@@ -17120,6 +17513,7 @@ __export(exports_db, {
17120
17513
  getPageVersions: () => getPageVersions,
17121
17514
  getPausedTasksForAgent: () => getPausedTasksForAgent,
17122
17515
  getPendingApprovalVoteState: () => getPendingApprovalVoteState,
17516
+ getPendingChatRelayTasks: () => getPendingChatRelayTasks,
17123
17517
  getPendingEventWaitNames: () => getPendingEventWaitNames,
17124
17518
  getPendingSlackRelayTasks: () => getPendingSlackRelayTasks,
17125
17519
  getPendingSteeringForAgent: () => getPendingSteeringForAgent,
@@ -17217,6 +17611,7 @@ __export(exports_db, {
17217
17611
  getWorkflowVersion: () => getWorkflowVersion,
17218
17612
  getWorkflowVersions: () => getWorkflowVersions,
17219
17613
  getWorkflowsByScheduleId: () => getWorkflowsByScheduleId,
17614
+ giveUpStaleChatRelays: () => giveUpStaleChatRelays,
17220
17615
  hasBudgetRefusalNotificationToday: () => hasBudgetRefusalNotificationToday,
17221
17616
  hasCapacity: () => hasCapacity,
17222
17617
  hasFirstCompletedTask: () => hasFirstCompletedTask,
@@ -17268,6 +17663,9 @@ __export(exports_db, {
17268
17663
  listWorkflowRuns: () => listWorkflowRuns,
17269
17664
  listWorkflowRunsPage: () => listWorkflowRunsPage,
17270
17665
  listWorkflows: () => listWorkflows,
17666
+ markChatRelayAttempted: () => markChatRelayAttempted,
17667
+ markChatRelayDelivered: () => markChatRelayDelivered,
17668
+ markChatRelayGivenUp: () => markChatRelayGivenUp,
17271
17669
  markFinalizedSlackRelaysDelivered: () => markFinalizedSlackRelaysDelivered,
17272
17670
  markInboxMessageDelegated: () => markInboxMessageDelegated,
17273
17671
  markInboxMessageRead: () => markInboxMessageRead,
@@ -17296,6 +17694,7 @@ __export(exports_db, {
17296
17694
  reassociateSessionLogs: () => reassociateSessionLogs,
17297
17695
  recordApprovalVotes: () => recordApprovalVotes,
17298
17696
  recordBudgetRefusalNotification: () => recordBudgetRefusalNotification,
17697
+ recordChatRelayError: () => recordChatRelayError,
17299
17698
  recordInlineScriptRun: () => recordInlineScriptRun,
17300
17699
  recordKeyAuthFailure: () => recordKeyAuthFailure,
17301
17700
  recordKeyRateLimitWindows: () => recordKeyRateLimitWindows,
@@ -18903,7 +19302,7 @@ async function createTaskExtended(task, options) {
18903
19302
  priority: row.priority
18904
19303
  }, (task2) => task2 !== null, row.requestedByUserId);
18905
19304
  getDbClient().afterCommit(() => {
18906
- import("./event-bus-vjtv82gm.js").then(({ workflowEventBus }) => {
19305
+ import("./event-bus-6axnngdj.js").then(({ workflowEventBus }) => {
18907
19306
  workflowEventBus.emit("task.created", {
18908
19307
  taskId: row.id,
18909
19308
  task: row.task,
@@ -18985,7 +19384,7 @@ async function releaseTask(taskId, wakeSnapshot) {
18985
19384
  } catch {}
18986
19385
  if (isRuntimePoolsEnabled() && !wakeSnapshot)
18987
19386
  getDbClient().afterCommit(() => {
18988
- import("./event-bus-vjtv82gm.js").then(({ workflowEventBus }) => workflowEventBus.emit("task.unassigned", { taskId })).catch((error2) => console.error("[db] Routing event failed:", scrubSecrets(String(error2))));
19387
+ import("./event-bus-6axnngdj.js").then(({ workflowEventBus }) => workflowEventBus.emit("task.unassigned", { taskId })).catch((error2) => console.error("[db] Routing event failed:", scrubSecrets(String(error2))));
18989
19388
  });
18990
19389
  }
18991
19390
  return row ? rowToAgentTask(row) : null;
@@ -19055,7 +19454,7 @@ async function rejectTask(taskId, agentId, reason) {
19055
19454
  } catch {}
19056
19455
  if (isRuntimePoolsEnabled())
19057
19456
  getDbClient().afterCommit(() => {
19058
- import("./event-bus-vjtv82gm.js").then(({ workflowEventBus }) => workflowEventBus.emit("task.unassigned", { taskId })).catch((error2) => console.error("[db] Routing event failed:", scrubSecrets(String(error2))));
19457
+ import("./event-bus-6axnngdj.js").then(({ workflowEventBus }) => workflowEventBus.emit("task.unassigned", { taskId })).catch((error2) => console.error("[db] Routing event failed:", scrubSecrets(String(error2))));
19059
19458
  });
19060
19459
  }
19061
19460
  return row ? rowToAgentTask(row) : null;
@@ -20733,7 +21132,8 @@ function rowToSwarmConfig(row) {
20733
21132
  description: row.description ?? null,
20734
21133
  createdAt: row.createdAt,
20735
21134
  lastUpdatedAt: row.lastUpdatedAt,
20736
- encrypted: isEncrypted
21135
+ encrypted: isEncrypted,
21136
+ exportToEnv: effectiveExportToEnv(row.key, row.exportToEnv !== 0)
20737
21137
  };
20738
21138
  }
20739
21139
  let value = row.value;
@@ -20755,7 +21155,8 @@ function rowToSwarmConfig(row) {
20755
21155
  description: row.description ?? null,
20756
21156
  createdAt: row.createdAt,
20757
21157
  lastUpdatedAt: row.lastUpdatedAt,
20758
- encrypted: isEncrypted
21158
+ encrypted: isEncrypted,
21159
+ exportToEnv: effectiveExportToEnv(row.key, row.exportToEnv !== 0)
20759
21160
  };
20760
21161
  }
20761
21162
  function autoEncryptLegacyPlaintextSecrets(database, dbPath, options = {}) {
@@ -20856,7 +21257,7 @@ async function getSwarmConfigs(filters) {
20856
21257
  async function getInjectableGlobalConfigs() {
20857
21258
  const rows = await getDbClient().query(`SELECT * FROM swarm_config
20858
21259
  WHERE scope = 'global'
20859
- AND UPPER(key) NOT IN ('API_KEY', 'SECRETS_ENCRYPTION_KEY', 'CORS_ALLOW_ANY_ORIGIN', 'EXTENSION_ALLOW_LEAD_ACTIVATION')
21260
+ AND UPPER(key) NOT IN ('API_KEY', 'SECRETS_ENCRYPTION_KEY', 'CORS_ALLOW_ANY_ORIGIN', 'EXTENSION_ALLOW_LEAD_ACTIVATION', 'CHAT_SDK_API_URL_OVERRIDES', ${teamsSdkEnvKeysSql()})
20860
21261
  ORDER BY key ASC`);
20861
21262
  return rows.filter((row) => !isInternalConfigKey(row.key)).map(rowToSwarmConfig);
20862
21263
  }
@@ -20883,6 +21284,10 @@ async function upsertSwarmConfig(data) {
20883
21284
  if (isReservedConfigKey(data.key)) {
20884
21285
  throw reservedKeyError(data.key);
20885
21286
  }
21287
+ if (data.exportToEnv === true && isEnvExportRestrictedKey(data.key)) {
21288
+ throw new Error(envExportRestrictedError(data.key));
21289
+ }
21290
+ const restricted = isEnvExportRestrictedKey(data.key);
20886
21291
  const now = new Date().toISOString();
20887
21292
  const scopeId = data.scope === "global" ? null : data.scopeId ?? null;
20888
21293
  const isSecret = data.isSecret ? 1 : 0;
@@ -20893,12 +21298,24 @@ async function upsertSwarmConfig(data) {
20893
21298
  const row = await getDbClient().transaction(async () => {
20894
21299
  const existing = scopeId === null ? await getDbClient().get("SELECT id FROM swarm_config WHERE scope = ? AND scopeId IS NULL AND key = ?", [data.scope, data.key]) : await getDbClient().get("SELECT id FROM swarm_config WHERE scope = ? AND scopeId = ? AND key = ?", [data.scope, scopeId, data.key]);
20895
21300
  if (existing) {
20896
- return await getDbClient().get(`UPDATE swarm_config SET value = ?, isSecret = ?, envPath = ?, description = ?, encrypted = ?, lastUpdatedAt = ?
20897
- WHERE id = ? RETURNING *`, [storedValue, isSecret, envPath, description, encryptedFlag, now, existing.id]);
21301
+ return await getDbClient().get(`UPDATE swarm_config SET value = ?, isSecret = ?, envPath = ?, description = ?, encrypted = ?, lastUpdatedAt = ?,
21302
+ exportToEnv = CASE WHEN ? THEN 0 ELSE COALESCE(?, exportToEnv) END
21303
+ WHERE id = ? RETURNING *`, [
21304
+ storedValue,
21305
+ isSecret,
21306
+ envPath,
21307
+ description,
21308
+ encryptedFlag,
21309
+ now,
21310
+ restricted ? 1 : 0,
21311
+ data.exportToEnv === undefined ? null : data.exportToEnv ? 1 : 0,
21312
+ existing.id
21313
+ ]);
20898
21314
  }
20899
21315
  const id = crypto.randomUUID();
20900
- return await getDbClient().get(`INSERT INTO swarm_config (id, scope, scopeId, key, value, isSecret, envPath, description, createdAt, lastUpdatedAt, encrypted)
20901
- VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) RETURNING *`, [
21316
+ const exportToEnv = restricted ? 0 : data.exportToEnv ?? defaultExportToEnv(data.key) ? 1 : 0;
21317
+ return await getDbClient().get(`INSERT INTO swarm_config (id, scope, scopeId, key, value, isSecret, envPath, description, createdAt, lastUpdatedAt, encrypted, exportToEnv)
21318
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) RETURNING *`, [
20902
21319
  id,
20903
21320
  data.scope,
20904
21321
  scopeId,
@@ -20909,7 +21326,8 @@ async function upsertSwarmConfig(data) {
20909
21326
  description,
20910
21327
  now,
20911
21328
  now,
20912
- encryptedFlag
21329
+ encryptedFlag,
21330
+ exportToEnv
20913
21331
  ]);
20914
21332
  });
20915
21333
  if (!row)
@@ -24982,6 +25400,7 @@ var init_db2 = __esm(() => {
24982
25400
  init_telemetry_trigger();
24983
25401
  init_types();
24984
25402
  init_codex_auth_failure();
25403
+ init_config_env_export();
24985
25404
  init_config_secrets();
24986
25405
  init_credentials();
24987
25406
  init_github_pull_request();
@@ -26191,4 +26610,4 @@ function getMemoryStore() {
26191
26610
  var embeddingProvider2 = null, memoryStore = null;
26192
26611
  var init_memory = () => {};
26193
26612
 
26194
- export { slackContextKey, agentmailContextKey, githubContextKey, gitlabContextKey, azureDevOpsContextKey, azureDevOpsWorkItemContextKey, 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 };
26613
+ export { slackContextKey, chatSdkContextKey, chatThreadOfContextKey, agentmailContextKey, githubContextKey, gitlabContextKey, azureDevOpsContextKey, azureDevOpsWorkItemContextKey, 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, isEnvExportRestrictedKey, init_config_env_export, 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, getPendingChatRelayTasks, giveUpStaleChatRelays, markChatRelayAttempted, recordChatRelayError, markChatRelayDelivered, markChatRelayGivenUp, getRecentlyFinishedWorkerTasks, markTasksNotified, resetTasksNotified, getInProgressSlackTasks, getSlackTasksMissingTree, getInProgressTasksByContextKey, isLinearTrackerContextKey, findExistingLinearTrackerContextWork, getLatestTaskByContextKey, getLatestScriptRunStepTaskByContextKey, getAgentWorkingOnThread, getLatestActiveTaskInThread, getLatestLeadTaskInThread, getAgentWorkingOnContextKey, getLatestActiveTaskByContextKey, getLatestLeadTaskByContextKey, 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, CHAT_SDK_ADAPTER_NAMES, CHAT_SDK_ADAPTER_SCHEMAS, ChatSdkAdaptersDraftSchema, firstIssueText, isAdapterEntryEnabled, init_schema, 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, CHAT_TASK_ONLY_TOOLS, isChatSdkTask, selectTaskTools, init_task_tool_manifest, tierConfigKey, init_model_tier_keys, isApiOnlyConfigKey, isInternalConfigKey, internalConfigKeyError, isReservedConfigKey, reservedKeyError, MAX_DB_RETENTION_DAYS, DB_RETENTION_TUNING_BOUNDS, validateRuntimeTokenTtlHours, validateControllerTokenTtlDays, validateControllerGraceSec, validateConfigValue, validateExportToEnv, 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 };