@desplega.ai/agent-swarm 2.5.4 → 2.7.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 (354) hide show
  1. package/README.md +4 -2
  2. package/dist/{acp-adapter-ek38cwsv.js → acp-adapter-ma1js5n7.js} +9 -9
  3. package/dist/{actions-92mepq03.js → actions-1vhmtvg9.js} +21 -21
  4. package/dist/{amp-adapter-9gaxg015.js → amp-adapter-sxqqvmdk.js} +4 -4
  5. package/dist/{app-ctn8gsgx.js → app-mwx1d5a9.js} +3 -3
  6. package/dist/{assistant-zyr5kz47.js → assistant-yx1p6g82.js} +30 -26
  7. package/dist/{boot-reembed-w75maga2.js → boot-reembed-5h37a2c2.js} +1 -1
  8. package/dist/{boot-reembed-dwzfttdr.js → boot-reembed-7h78vmvv.js} +2 -1
  9. package/dist/{boot-scrub-sweep-e9kq43kf.js → boot-scrub-sweep-8mawd4gw.js} +4 -4
  10. package/dist/{boot-seeds-x28v3fhb.js → boot-seeds-ca84dhnn.js} +4 -4
  11. package/dist/{claude-adapter-f0afqnne.js → claude-adapter-wqt4hfkq.js} +9 -9
  12. package/dist/{claude-managed-adapter-x81a7r65.js → claude-managed-adapter-6fjqtr2z.js} +2 -2
  13. package/dist/{claude-managed-setup-bqzwjd9x.js → claude-managed-setup-rqv98sea.js} +10 -3
  14. package/dist/{claude-sdk-session-7b7whkaq.js → claude-sdk-session-f29f3b2x.js} +11 -11
  15. package/dist/{cli-sxgtf5fw.js → cli-07q03xm2.js} +1 -1
  16. package/dist/{cli-kxpfx2xr.js → cli-0z1xjzwa.js} +2 -2
  17. package/dist/{cli-g9vd9ece.js → cli-1hhbzkbb.js} +14 -16
  18. package/dist/{cli-qqzmjxkf.js → cli-1m9x8dr5.js} +11 -6
  19. package/dist/{cli-jbnn4vxb.js → cli-2pvzmas1.js} +3 -3
  20. package/dist/{cli-x77gen2p.js → cli-2y7v133v.js} +7 -7
  21. package/dist/{cli-dew6x255.js → cli-39aet655.js} +2 -2
  22. package/dist/{cli-g1cw7xtt.js → cli-39rrw8yp.js} +1 -1
  23. package/dist/{cli-jb30dzvk.js → cli-48gxjmcz.js} +530 -190
  24. package/dist/{cli-pzatvw94.js → cli-54sj64fc.js} +2 -2
  25. package/dist/{cli-bvpgr9ny.js → cli-60sty27p.js} +5 -5
  26. package/dist/{cli-asq5ydm4.js → cli-6a9qfa8b.js} +411 -69
  27. package/dist/{cli-277c31dw.js → cli-6mgdba42.js} +225 -3
  28. package/dist/{cli-19202kew.js → cli-6srv653c.js} +5 -5
  29. package/dist/{cli-n4c8e3s5.js → cli-708wdy32.js} +1 -1
  30. package/dist/{cli-pasyvjmm.js → cli-737pyqxr.js} +1 -1
  31. package/dist/{cli-6x9ma5w5.js → cli-803188pb.js} +1 -1
  32. package/dist/{cli-hh5we352.js → cli-86ehn4s5.js} +7 -7
  33. package/dist/{cli-9s05422w.js → cli-8mbc9za9.js} +1 -1
  34. package/dist/{cli-ff1tm9n9.js → cli-8wmj18cz.js} +1 -1
  35. package/dist/{cli-1r5ad7j5.js → cli-9gsm2rzp.js} +12 -12
  36. package/dist/{cli-mz9afxxf.js → cli-9pshx6rd.js} +17 -3
  37. package/dist/{cli-s682zgqz.js → cli-a6ds2epe.js} +1 -1
  38. package/dist/{cli-6a1xg1p7.js → cli-a89zdqz9.js} +2 -2
  39. package/dist/{cli-03vpq45j.js → cli-ay40dnj3.js} +2 -2
  40. package/dist/{cli-tsma7p8v.js → cli-aypd09nf.js} +2 -2
  41. package/dist/{cli-ethgy7ha.js → cli-b3yzyc57.js} +2 -2
  42. package/dist/{cli-bn0rewsy.js → cli-c081bj3b.js} +2 -2
  43. package/dist/{cli-mmhj8vd7.js → cli-c668vvcf.js} +11 -2
  44. package/dist/{cli-sbwsxvtd.js → cli-d20qvpr2.js} +2 -2
  45. package/dist/{cli-c952c7ac.js → cli-e1595bgx.js} +3 -3
  46. package/dist/{cli-621ce7kw.js → cli-f12mr20z.js} +3 -3
  47. package/dist/{cli-dqygeeh5.js → cli-f1e0ptjj.js} +10 -1
  48. package/dist/{cli-xzfq4at3.js → cli-f4dbh7a5.js} +16 -12
  49. package/dist/{cli-ha9rmwgq.js → cli-fb8m699c.js} +2 -2
  50. package/dist/{cli-5bnsc0e1.js → cli-gsfk58nw.js} +5 -5
  51. package/dist/cli-gt4h8cxw.js +895 -0
  52. package/dist/{cli-nwyw3zhg.js → cli-gxee0bqa.js} +1 -1
  53. package/dist/{cli-25n3mv5d.js → cli-h5jeg46p.js} +6 -6
  54. package/dist/{cli-gn5af0x5.js → cli-he9gbdx0.js} +62 -12
  55. package/dist/{cli-gbfxp48k.js → cli-j0ppywdr.js} +42 -35
  56. package/dist/{cli-k4tjsdx9.js → cli-j3y0x2n4.js} +277 -199
  57. package/dist/{cli-7p4jxgtt.js → cli-j9bpmykh.js} +75 -27
  58. package/dist/{cli-dabehxhp.js → cli-kt907da6.js} +1 -1
  59. package/dist/{cli-wx2nj19m.js → cli-kv7sbc2c.js} +6 -6
  60. package/dist/{cli-abs8ndtr.js → cli-m30k9777.js} +26 -26
  61. package/dist/{cli-cz5nmdxt.js → cli-m5e802r7.js} +2 -2
  62. package/dist/{cli-0shx9j93.js → cli-pfk92eqz.js} +2 -2
  63. package/dist/{cli-xtrz6bzs.js → cli-ptfq202x.js} +5 -3
  64. package/dist/{cli-6n8axjv1.js → cli-qj442fws.js} +2 -2
  65. package/dist/{cli-c61mbdds.js → cli-rd5m70gj.js} +4 -4
  66. package/dist/{cli-eftzyh9y.js → cli-s09j9vp5.js} +2 -2
  67. package/dist/{cli-m4ecdxvz.js → cli-s0mgx214.js} +7 -7
  68. package/dist/{cli-wghjkr0e.js → cli-sgqm2582.js} +10 -7
  69. package/dist/{cli-2655k16q.js → cli-sjctjr48.js} +2 -2
  70. package/dist/{cli-nzfnt2gs.js → cli-tf1n0r0b.js} +1 -1
  71. package/dist/{cli-x0f2v69c.js → cli-twctnkng.js} +12 -7
  72. package/dist/{cli-j6rktc91.js → cli-v6shg7na.js} +1 -1
  73. package/dist/{cli-gx4rm0qx.js → cli-vz78s5wm.js} +1 -1
  74. package/dist/{cli-gwhjmh8g.js → cli-wqr7cea4.js} +5 -5
  75. package/dist/{cli-e42vss7b.js → cli-x37r7qwf.js} +16 -8
  76. package/dist/{cli-4b2z6n0m.js → cli-yd2nreqw.js} +17 -8
  77. package/dist/{cli-64mh9mf3.js → cli-ymjpkxgn.js} +69 -17
  78. package/dist/{cli-5kqnemen.js → cli-yvy48785.js} +1 -1
  79. package/dist/{cli-9j129brq.js → cli-yxbsmx56.js} +6 -6
  80. package/dist/cli.js +22 -20
  81. package/dist/{codex-adapter-wch12q99.js → codex-adapter-zk59x2zh.js} +7 -7
  82. package/dist/{codex-hook-brpnycn5.js → codex-hook-xyjhvxwd.js} +1 -1
  83. package/dist/{codex-login-rn7c5gxt.js → codex-login-8cg0vhf2.js} +1 -1
  84. package/dist/{codex-session-runner-41pfcr95.js → codex-session-runner-kh6s4j3n.js} +8 -8
  85. package/dist/{commands-9849dkj6.js → commands-68et1qv2.js} +2 -2
  86. package/dist/{controller-ja0sd95p.js → controller-fyrbnzg4.js} +4 -4
  87. package/dist/{controllers-connect-xp05dj6x.js → controllers-connect-nep9h2xv.js} +23 -23
  88. package/dist/{cursor-adapter-623qxqew.js → cursor-adapter-yss3pg7t.js} +2 -2
  89. package/dist/{db-w759qmx0.js → db-28gjyvxj.js} +4 -2
  90. package/dist/{db-47vj40dy.js → db-8ftwvzba.js} +3 -3
  91. package/dist/{devin-adapter-4ycy4vrf.js → devin-adapter-byen2cxt.js} +1 -1
  92. package/dist/{dispatcher-7b8e4z2j.js → dispatcher-hayexmkr.js} +20 -20
  93. package/dist/{docker-s84hjs91.js → docker-fdzyewpz.js} +2 -2
  94. package/dist/{dsh-adapter-2ezw3xea.js → dsh-adapter-46wawff9.js} +2 -2
  95. package/dist/{e2b-9gkdhm3c.js → e2b-222hsajc.js} +2 -2
  96. package/dist/{e2b-cjtf8k1z.js → e2b-fn3zacvt.js} +2 -2
  97. package/dist/{easter-egg-3d-e4qv8dxj.js → easter-egg-3d-8d1e0h4m.js} +1 -1
  98. package/dist/{event-bus-3z78ep5n.js → event-bus-pghg8hqy.js} +1 -1
  99. package/dist/{execute-0xpz8950.js → execute-cjrfxfnm.js} +1 -1
  100. package/dist/{external-channel-e2s028da.js → external-channel-xbmxcg09.js} +2 -2
  101. package/dist/{grok-adapter-ys7gaqee.js → grok-adapter-ag4wks2a.js} +10 -10
  102. package/dist/handlers-tzmevqb5.js +41 -0
  103. package/dist/{heartbeat-w3mntghj.js → heartbeat-psfvcgwp.js} +23 -23
  104. package/dist/{hook-g7kvv6x9.js → hook-8pz04697.js} +6 -6
  105. package/dist/{hook-3jjywnpb.js → hook-cyq4mryn.js} +8 -8
  106. package/dist/{http-tkp7d4kb.js → http-haj1nd6k.js} +921 -169
  107. package/dist/{index-q7m26kvs.js → index-jwt2bj6f.js} +265 -97
  108. package/dist/{index-3n8m9ea2.js → index-q52f47pe.js} +1 -1
  109. package/dist/{index-31ceyf42.js → index-syvhnvtw.js} +1 -1
  110. package/dist/index-y1ajx04a.js +43 -0
  111. package/dist/{index-1ef1myq2.js → index-z5h22pes.js} +20 -20
  112. package/dist/{index-xdaahthb.js → index-zyq8ct52.js} +20 -20
  113. package/dist/{keepalive-v4ta8wgg.js → keepalive-xdvsamvj.js} +4 -4
  114. package/dist/lead-hqg57kdp.js +79 -0
  115. package/dist/{maintenance-84n1ex21.js → maintenance-4y2xzh3a.js} +1 -1
  116. package/dist/{oauth-refresh-sweep-vjnnandw.js → oauth-refresh-sweep-jd4r7zbs.js} +9 -4
  117. package/dist/{onboard-sfmpe4np.js → onboard-18447q9q.js} +6 -6
  118. package/dist/{opencode-adapter-jmpst4q4.js → opencode-adapter-26b2frdf.js} +7 -7
  119. package/dist/{otel-impl-v6cc0zve.js → otel-impl-f9tgr8yw.js} +2 -2
  120. package/dist/{pi-mono-adapter-fk8fkcf6.js → pi-mono-adapter-qn6qbga1.js} +38 -17
  121. package/dist/{pricing-refresh-fsk1e1zc.js → pricing-refresh-dw2tgb53.js} +3 -3
  122. package/dist/{rbac-roles-prmkdnkw.js → rbac-roles-aygm2760.js} +2 -2
  123. package/dist/{rbac-roles-zxmxqa39.js → rbac-roles-s4nwj2m3.js} +1 -1
  124. package/dist/render-v2-yfvdfr0x.js +16 -0
  125. package/dist/{resume-frdtgfa0.js → resume-1bmvjbf3.js} +9 -9
  126. package/dist/{runtime-bt5pkpm1.js → runtime-f7tpzedy.js} +1 -1
  127. package/dist/{session-access-fpez4y5q.js → session-access-r5garej6.js} +4 -4
  128. package/dist/session-source-backfill-424wzv0r.js +110 -0
  129. package/dist/{setup-mq6m3m8q.js → setup-8tygvxkq.js} +1 -1
  130. package/dist/{virtual-modules-mnfbh5mr.js → virtual-modules-xsw323b3.js} +2 -2
  131. package/dist/{work-objects-kfahhjsq.js → work-objects-ggnghpgf.js} +23 -23
  132. package/dist/worker-sqjd1nqf.js +79 -0
  133. package/dist/{x-pbpezr0s.js → x-wxrzvzx8.js} +2 -2
  134. package/openapi.json +1324 -14
  135. package/package.json +5 -3
  136. package/src/assets/source-key.ts +95 -0
  137. package/src/be/automation-preflight.ts +2 -0
  138. package/src/be/db/api-keys.ts +89 -0
  139. package/src/be/db/session-labels.ts +28 -0
  140. package/src/be/db/session-moves.ts +5 -6
  141. package/src/be/db/session-tree.ts +153 -14
  142. package/src/be/db/tasks/read.ts +11 -0
  143. package/src/be/db/tasks/write.ts +6 -1
  144. package/src/be/db/workflow-runs.ts +219 -6
  145. package/src/be/db-retention.ts +61 -6
  146. package/src/be/db.ts +135 -132
  147. package/src/be/memory/providers/openai-embedding.ts +5 -1
  148. package/src/be/memory/task-learning.ts +155 -0
  149. package/src/be/migrations/244_api_key_validation.sql +4 -0
  150. package/src/be/migrations/245_script_executor.sql +3 -0
  151. package/src/be/oauth-refresh-sweep.ts +2 -1
  152. package/src/be/onboarding.ts +4 -0
  153. package/src/be/scripts/boot-reembed.ts +2 -0
  154. package/src/be/scripts/db.ts +14 -4
  155. package/src/be/scripts/embeddings.ts +2 -0
  156. package/src/be/scripts/run-saved.ts +1 -0
  157. package/src/be/scripts/typecheck.ts +10 -4
  158. package/src/be/seed-skills/index.ts +7 -0
  159. package/src/be/session-source-backfill.ts +163 -0
  160. package/src/be/swarm-config-guard.ts +1 -0
  161. package/src/comb/review-batch.ts +28 -1
  162. package/src/comb/templates.ts +7 -2
  163. package/src/commands/claude-managed-setup.ts +7 -1
  164. package/src/commands/credential-refresh.ts +76 -1
  165. package/src/commands/credential-wait.ts +2 -2
  166. package/src/commands/onboard/compose-generator.ts +5 -3
  167. package/src/commands/provider-credentials.ts +212 -171
  168. package/src/commands/runner.ts +25 -4
  169. package/src/extensions/apply-task-create.ts +8 -1
  170. package/src/extensions/contract-types.generated.ts +1 -1
  171. package/src/extensions/contract.ts +5 -0
  172. package/src/heartbeat/heartbeat.ts +14 -1
  173. package/src/heartbeat/script-runner-probe.ts +47 -0
  174. package/src/http/all-routes.ts +2 -0
  175. package/src/http/api-keys.ts +77 -9
  176. package/src/http/assets.ts +15 -0
  177. package/src/http/codex-oauth-accounts.ts +191 -0
  178. package/src/http/comb.ts +15 -2
  179. package/src/http/config.ts +1 -1
  180. package/src/http/core.ts +6 -0
  181. package/src/http/fleet-benchmark.ts +5 -2
  182. package/src/http/idempotency-key.ts +1 -1
  183. package/src/http/index.ts +14 -3
  184. package/src/http/integrations.ts +5 -1
  185. package/src/http/kv.ts +8 -3
  186. package/src/http/onboarding.ts +6 -1
  187. package/src/http/pages-public.ts +38 -5
  188. package/src/http/pool-keys.ts +354 -0
  189. package/src/http/scripts.ts +27 -0
  190. package/src/http/sessions.ts +37 -12
  191. package/src/http/stats.ts +1 -0
  192. package/src/http/status.ts +26 -12
  193. package/src/http/tasks.ts +3 -0
  194. package/src/http/used-by.ts +7 -2
  195. package/src/http/workflows.ts +88 -9
  196. package/src/http/x.ts +5 -0
  197. package/src/integrations/chat-sdk/inbound.ts +27 -0
  198. package/src/kv-reserved-namespaces.ts +19 -0
  199. package/src/prompts/base-prompt.ts +21 -1
  200. package/src/prompts/session-templates.ts +17 -3
  201. package/src/providers/acp-targets.ts +1 -1
  202. package/src/providers/amp-adapter.ts +1 -1
  203. package/src/providers/claude-adapter.ts +5 -1
  204. package/src/providers/claude-managed-adapter.ts +16 -9
  205. package/src/providers/codex-adapter.ts +71 -11
  206. package/src/providers/dsh-adapter.ts +1 -1
  207. package/src/providers/pi-mono-adapter.ts +41 -11
  208. package/src/scheduler/scheduler.ts +5 -3
  209. package/src/scripts-runtime/eval-harness.ts +8 -1
  210. package/src/scripts-runtime/executors/native.ts +22 -16
  211. package/src/scripts-runtime/executors/quickjs-prelude.ts +103 -1
  212. package/src/scripts-runtime/executors/quickjs-runner.ts +2 -1
  213. package/src/scripts-runtime/executors/quickjs.ts +7 -0
  214. package/src/scripts-runtime/executors/registry.ts +32 -0
  215. package/src/scripts-runtime/executors/types.ts +7 -0
  216. package/src/scripts-runtime/host-validated-args.ts +133 -0
  217. package/src/scripts-runtime/loader.ts +30 -3
  218. package/src/scripts-runtime/swarm-sdk.ts +16 -3
  219. package/src/scripts-runtime/types/stdlib.d.ts +10 -2
  220. package/src/scripts-runtime/types/swarm-extension.d.ts +17 -8
  221. package/src/scripts-runtime/types/swarm-sdk.d.ts +10 -2
  222. package/src/slack/assistant.ts +7 -0
  223. package/src/slack/channel-labels.ts +74 -0
  224. package/src/slack/handlers.ts +8 -0
  225. package/src/slack/inbound-files.ts +5 -2
  226. package/src/slack/thread-buffer.ts +4 -0
  227. package/src/tasks/sibling-awareness.ts +12 -3
  228. package/src/telemetry-context.ts +5 -6
  229. package/src/telemetry-identity.ts +3 -3
  230. package/src/tests/api-key-status-by-suffix.test.ts +242 -0
  231. package/src/tests/api-keys-validation.test.ts +170 -0
  232. package/src/tests/base-prompt.test.ts +70 -2
  233. package/src/tests/claude-managed-adapter.test.ts +46 -0
  234. package/src/tests/claude-routes-e2e.test.ts +7 -2
  235. package/src/tests/codex-credential-pools.test.ts +120 -0
  236. package/src/tests/codex-gateway-route.test.ts +165 -0
  237. package/src/tests/codex-oauth-accounts.test.ts +357 -0
  238. package/src/tests/comb-review-batch.test.ts +63 -2
  239. package/src/tests/community-linear-delivery-loop.test.ts +2099 -0
  240. package/src/tests/config-pool-keys.test.ts +533 -0
  241. package/src/tests/credential-check.test.ts +294 -4
  242. package/src/tests/credential-refresh.test.ts +172 -1
  243. package/src/tests/db-retention.test.ts +9 -3
  244. package/src/tests/db-task-read-contract.test.ts +1 -0
  245. package/src/tests/db-task-write-contract.test.ts +1 -3
  246. package/src/tests/docs-index-footprint.test.js +3 -3
  247. package/src/tests/docs-index.test.ts +135 -0
  248. package/src/tests/dsh-adapter.test.ts +1 -1
  249. package/src/tests/extensions-pre-task.test.ts +53 -1
  250. package/src/tests/fetch-resolved-env.test.ts +16 -2
  251. package/src/tests/fixtures/extensions/record-task-create/hooks.ts +9 -0
  252. package/src/tests/fixtures/extensions/record-task-create/manifest.json +7 -0
  253. package/src/tests/fleet-benchmark.test.ts +8 -0
  254. package/src/tests/get-workflow-run-tool.test.ts +98 -0
  255. package/src/tests/heartbeat-checklist.test.ts +89 -0
  256. package/src/tests/heartbeat-script-runner-probe.test.ts +83 -0
  257. package/src/tests/integrations-http.test.ts +32 -2
  258. package/src/tests/internal-ai/complete-structured.test.ts +37 -1
  259. package/src/tests/internal-ai/credentials.test.ts +23 -0
  260. package/src/tests/kv-http.test.ts +32 -0
  261. package/src/tests/kv-tool.test.ts +25 -0
  262. package/src/tests/multi-runtime-registration.test.ts +12 -12
  263. package/src/tests/oauth-refresh-sweep.test.ts +34 -1
  264. package/src/tests/onboard-compose.test.ts +20 -0
  265. package/src/tests/onboarding.test.ts +108 -1
  266. package/src/tests/openai-embedding-credentials.test.ts +35 -0
  267. package/src/tests/opencode-adapter.test.ts +2 -1
  268. package/src/tests/openrouter-attribution-call-sites.test.ts +2 -2
  269. package/src/tests/org-website.test.ts +36 -0
  270. package/src/tests/pages-frame-ancestors.test.ts +162 -0
  271. package/src/tests/pi-codemode.test.ts +2 -1
  272. package/src/tests/pi-mono-adapter.test.ts +54 -0
  273. package/src/tests/pi-native-mcp.test.ts +13 -1
  274. package/src/tests/pi-tool-exposure.test.ts +8 -8
  275. package/src/tests/probe-tool-schema-tokens.test.ts +144 -0
  276. package/src/tests/prompt-template-session.test.ts +4 -3
  277. package/src/tests/provider-key-probes.test.ts +181 -0
  278. package/src/tests/rbac-e2e-helpers.test.ts +88 -1
  279. package/src/tests/rbac-e2e-helpers.ts +36 -11
  280. package/src/tests/request-composition-derive.test.ts +329 -0
  281. package/src/tests/script-connections.test.ts +4 -0
  282. package/src/tests/script-executor-conformance.test.ts +36 -1
  283. package/src/tests/script-executor-quickjs-pool.test.ts +50 -0
  284. package/src/tests/script-executor-quickjs.test.ts +140 -0
  285. package/src/tests/script-host-validated-args-native.test.ts +196 -0
  286. package/src/tests/script-per-script-executor.test.ts +415 -0
  287. package/src/tests/script-runs-retention.test.ts +212 -0
  288. package/src/tests/scripts-external-api.test.ts +45 -0
  289. package/src/tests/sdk-allowlist.test.ts +42 -2
  290. package/src/tests/self-improvement.test.ts +4 -4
  291. package/src/tests/session-source-backfill.test.ts +429 -0
  292. package/src/tests/session-source-keys.test.ts +236 -0
  293. package/src/tests/session-source-labels.test.ts +419 -0
  294. package/src/tests/sessions-detail-batch.test.ts +2 -0
  295. package/src/tests/sessions-move.test.ts +131 -0
  296. package/src/tests/sessions-tree.test.ts +299 -2
  297. package/src/tests/slack-inbound-files.test.ts +103 -23
  298. package/src/tests/status.test.ts +101 -18
  299. package/src/tests/store-progress-learning.test.ts +288 -0
  300. package/src/tests/tasks-workflow-run-filter.test.ts +146 -0
  301. package/src/tests/test-net.ts +31 -0
  302. package/src/tests/transcription.test.ts +8 -0
  303. package/src/tests/ui-logs-parser.test.ts +180 -0
  304. package/src/tests/used-by-route.test.ts +11 -0
  305. package/src/tests/workflow-cascade-cancel.test.ts +172 -0
  306. package/src/tests/workflow-engine-v2.test.ts +116 -1
  307. package/src/tests/workflow-http-v2.test.ts +131 -0
  308. package/src/tests/workflow-mcp-trigger-schema.test.ts +209 -0
  309. package/src/tests/workflow-run-finished-event.test.ts +263 -0
  310. package/src/tests/workflow-step-order.test.ts +92 -0
  311. package/src/tests/workflow-sub-workflow.test.ts +30 -0
  312. package/src/tests/workflow-swarm-script.test.ts +34 -0
  313. package/src/tools/get-tasks.ts +8 -0
  314. package/src/tools/kv/kv-read-auth.ts +4 -2
  315. package/src/tools/script-common.ts +1 -0
  316. package/src/tools/script-run.ts +7 -0
  317. package/src/tools/script-upsert.ts +7 -0
  318. package/src/tools/store-progress.ts +67 -1
  319. package/src/tools/task-action.ts +1 -1
  320. package/src/tools/workflows/get-workflow-run.ts +14 -4
  321. package/src/tools/workflows/trigger-workflow.ts +104 -10
  322. package/src/types.ts +36 -1
  323. package/src/utils/company-profile.ts +51 -1
  324. package/src/utils/credentials.ts +10 -4
  325. package/src/utils/internal-ai/complete-structured.ts +5 -0
  326. package/src/utils/internal-ai/credentials.ts +4 -3
  327. package/src/utils/provider-key-probes.ts +328 -0
  328. package/src/utils/transcription.ts +4 -1
  329. package/src/workflows/engine.ts +18 -16
  330. package/src/workflows/executors/sub-workflow.ts +8 -1
  331. package/src/workflows/executors/swarm-script.ts +5 -0
  332. package/src/workflows/foreach-driver.ts +5 -11
  333. package/src/workflows/node-timeout.ts +30 -0
  334. package/templates/ai-toolbox.manifest.json +2 -2
  335. package/templates/community/linear-delivery-loop/PLAYBOOK.md +323 -0
  336. package/templates/community/linear-delivery-loop/README.md +38 -0
  337. package/templates/community/linear-delivery-loop/config.example.json +31 -0
  338. package/templates/community/linear-delivery-loop/lead-prompt.md +34 -0
  339. package/templates/community/linear-delivery-loop/schedule.json +10 -0
  340. package/templates/community/linear-delivery-loop/scripts/linear-delivery-setup.ts +148 -0
  341. package/templates/community/linear-delivery-loop/scripts/linear-delivery-tick.ts +1781 -0
  342. package/templates/skills/researching/content.md +2 -0
  343. package/templates/skills/swarm-docs/config.json +14 -0
  344. package/templates/skills/swarm-docs/content.md +144 -0
  345. package/templates/skills/swarm-scripts/SKILL.md +1 -0
  346. package/templates/skills/swarm-scripts/content.md +1 -0
  347. package/dist/cli-7421jzsw.js +0 -84
  348. package/dist/cli-e45e4m6b.js +0 -413
  349. package/dist/cli-zw88zjba.js +0 -307
  350. package/dist/handlers-wy1dr6ja.js +0 -41
  351. package/dist/index-nmm79qgr.js +0 -43
  352. package/dist/lead-sawnyqxk.js +0 -79
  353. package/dist/render-v2-pjwxvnkw.js +0 -12
  354. package/dist/worker-v5e5rxj3.js +0 -79
@@ -40,14 +40,14 @@ import {
40
40
  getResolvedConfig2,
41
41
  getMcpServerById2,
42
42
  init_db3
43
- } from "./cli-jb30dzvk.js";
43
+ } from "./cli-48gxjmcz.js";
44
44
  import {
45
45
  generateRandomCodeVerifier,
46
46
  generateRandomState,
47
47
  calculatePKCECodeChallenge,
48
48
  oauthAppRowToProviderConfig,
49
49
  ensureAuthorizationTokenOrThrow
50
- } from "./cli-tsma7p8v.js";
50
+ } from "./cli-aypd09nf.js";
51
51
  import {
52
52
  detachedProcessGroup,
53
53
  registerProcessGroup,
@@ -60,11 +60,11 @@ import {
60
60
  mintScriptRunToken,
61
61
  revokeSessionToken,
62
62
  init_users
63
- } from "./cli-6a1xg1p7.js";
63
+ } from "./cli-a89zdqz9.js";
64
64
  import {
65
65
  defaultAssetKey,
66
66
  init_key
67
- } from "./cli-mz9afxxf.js";
67
+ } from "./cli-9pshx6rd.js";
68
68
  import {
69
69
  init_zod
70
70
  } from "./cli-4chz1hye.js";
@@ -105,7 +105,7 @@ import {
105
105
  refreshSecretScrubberCache,
106
106
  registerVolatileSecret,
107
107
  init_secret_scrubber
108
- } from "./cli-n4c8e3s5.js";
108
+ } from "./cli-708wdy32.js";
109
109
  import {
110
110
  __toESM,
111
111
  __commonJS,
@@ -177950,21 +177950,18 @@ class NativeScriptExecutor {
177950
177950
  let killed = input.signal?.aborted ?? false;
177951
177951
  let removeAbortListener;
177952
177952
  let proc;
177953
+ const killedOutput = () => ({
177954
+ result: undefined,
177955
+ stdout: "",
177956
+ stderr: "",
177957
+ truncated: { stdout: false, stderr: false },
177958
+ durationMs: Date.now() - start,
177959
+ exitCode: 1,
177960
+ error: "killed"
177961
+ });
177953
177962
  try {
177954
- if (killed) {
177955
- return {
177956
- result: undefined,
177957
- stdout: "",
177958
- stderr: "",
177959
- truncated: { stdout: false, stderr: false },
177960
- durationMs: Date.now() - start,
177961
- exitCode: 1,
177962
- error: "killed"
177963
- };
177964
- }
177965
- await Bun.write(argsFile, JSON.stringify(input.args ?? null));
177966
- await Bun.write(sourceFile, input.source);
177967
- await writeBareImportShims(tmpdir);
177963
+ if (killed)
177964
+ return killedOutput();
177968
177965
  const onExternalAbort = () => {
177969
177966
  killed = true;
177970
177967
  if (proc)
@@ -177972,6 +177969,11 @@ class NativeScriptExecutor {
177972
177969
  };
177973
177970
  input.signal?.addEventListener("abort", onExternalAbort, { once: true });
177974
177971
  removeAbortListener = () => input.signal?.removeEventListener("abort", onExternalAbort);
177972
+ await Bun.write(argsFile, JSON.stringify(input.args ?? null));
177973
+ await Bun.write(sourceFile, input.source);
177974
+ await writeBareImportShims(tmpdir);
177975
+ if (killed)
177976
+ return killedOutput();
177975
177977
  const timeout = setTimeout(() => {
177976
177978
  timedOut = true;
177977
177979
  if (proc)
@@ -177988,7 +177990,8 @@ class NativeScriptExecutor {
177988
177990
  SWARM_SCRIPT_SOURCE_FILE: sourceFile,
177989
177991
  SWARM_SCRIPT_RESULT_FILE: resultFile,
177990
177992
  SWARM_SCRIPT_ERROR_FILE: errorFile,
177991
- SWARM_SCRIPT_STARTED_FILE: startedFile
177993
+ SWARM_SCRIPT_STARTED_FILE: startedFile,
177994
+ ...input.hostValidatedArgs ? { SWARM_SCRIPT_HOST_VALIDATED_ARGS: "1" } : {}
177992
177995
  };
177993
177996
  proc = registerProcessGroup(Bun.spawn(harnessCommand(harnessPath, input, harnessEnv), {
177994
177997
  env: sandboxSpawnEnv(harnessEnv),
@@ -178145,6 +178148,10 @@ class QuickJSScriptExecutor {
178145
178148
  pool.discard(slot);
178146
178149
  return emptyOutput("executor_error", `quickjs worker failed to start: ${error instanceof Error ? error.message : String(error)}`);
178147
178150
  }
178151
+ if (input.signal?.aborted) {
178152
+ pool.release(slot);
178153
+ return emptyOutput("killed");
178154
+ }
178148
178155
  const id = ++requestSeq;
178149
178156
  const start = performance.now();
178150
178157
  return await new Promise((resolve) => {
@@ -178186,6 +178193,7 @@ class QuickJSScriptExecutor {
178186
178193
  job: {
178187
178194
  source: input.source,
178188
178195
  args: input.args,
178196
+ ...input.hostValidatedArgs ? { hostValidatedArgs: true } : {},
178189
178197
  configPayload: input.configPayload,
178190
178198
  resources: input.resources,
178191
178199
  network: input.network
@@ -178200,6 +178208,17 @@ var EXECUTORS = {
178200
178208
  native: () => new NativeScriptExecutor,
178201
178209
  quickjs: () => new QuickJSScriptExecutor
178202
178210
  };
178211
+ function getDeploymentScriptExecutorName(env = process.env) {
178212
+ return (env.SCRIPT_EXECUTOR ?? "native").trim();
178213
+ }
178214
+ function isExecutorAllowedByDeployment(requested, env = process.env) {
178215
+ if (!requested)
178216
+ return true;
178217
+ if (getDeploymentScriptExecutorName(env) === "quickjs" && requested.trim() === "native") {
178218
+ return false;
178219
+ }
178220
+ return true;
178221
+ }
178203
178222
  function getScriptExecutor(name = process.env.SCRIPT_EXECUTOR ?? "native") {
178204
178223
  const factory = EXECUTORS[name.trim()];
178205
178224
  if (!factory) {
@@ -178207,6 +178226,13 @@ function getScriptExecutor(name = process.env.SCRIPT_EXECUTOR ?? "native") {
178207
178226
  }
178208
178227
  return factory();
178209
178228
  }
178229
+ function resolveScriptExecutor(requested, env = process.env) {
178230
+ if (!isExecutorAllowedByDeployment(requested, env)) {
178231
+ throw new Error('Executor "native" is not permitted when deployment SCRIPT_EXECUTOR="quickjs"');
178232
+ }
178233
+ const effective = requested ?? env.SCRIPT_EXECUTOR ?? "native";
178234
+ return getScriptExecutor(effective);
178235
+ }
178210
178236
 
178211
178237
  // src/scripts-runtime/executors/types.ts
178212
178238
  var MIN_SCRIPT_WALL_CLOCK_MS = 1000;
@@ -178222,6 +178248,9 @@ var DEFAULT_SCRIPT_RESOURCES = {
178222
178248
  maxStdoutBytes: 1048576
178223
178249
  };
178224
178250
 
178251
+ // src/scripts-runtime/host-validated-args.ts
178252
+ var HOST_VALIDATED_ARGS = Symbol("swarm.hostValidatedArgs");
178253
+
178225
178254
  // src/scripts-runtime/import-allowlist.ts
178226
178255
  var import_typescript = __toESM(require_typescript2(), 1);
178227
178256
  var SCRIPT_ALLOWED_BARE_IMPORTS = ["swarm-sdk", "stdlib", "zod", "zod/mini"];
@@ -178365,6 +178394,17 @@ async function runScript(input) {
178365
178394
  error: "executor_error"
178366
178395
  };
178367
178396
  }
178397
+ if (!isExecutorAllowedByDeployment(input.executor)) {
178398
+ return {
178399
+ result: undefined,
178400
+ stdout: "",
178401
+ stderr: 'Executor "native" is not permitted when deployment SCRIPT_EXECUTOR="quickjs"',
178402
+ truncated: { stdout: false, stderr: false },
178403
+ durationMs: 0,
178404
+ exitCode: 1,
178405
+ error: "executor_error"
178406
+ };
178407
+ }
178368
178408
  const runSecrets = createValueScrubber(Object.entries(input.userConfig ?? {}).filter(([, entry]) => entry.isSecret).map(([key, entry]) => ({ value: entry.value, name: `config:${key}` })));
178369
178409
  const imports = validateScriptImports(input.source);
178370
178410
  if (!imports.ok) {
@@ -178387,18 +178427,19 @@ async function runScript(input) {
178387
178427
  const executorInput = {
178388
178428
  source: input.source,
178389
178429
  args: input.args ?? null,
178430
+ ...input[HOST_VALIDATED_ARGS] === true ? { hostValidatedArgs: true } : {},
178390
178431
  configPayload,
178391
178432
  resources,
178392
178433
  fsMode: input.fsMode ?? "none",
178393
178434
  network: scriptEgressPolicy(),
178394
178435
  signal: input.signal
178395
178436
  };
178396
- let output = await getScriptExecutor().run(executorInput);
178437
+ let output = await resolveScriptExecutor(input.executor).run(executorInput);
178397
178438
  for (const delayMs of CAPACITY_EXCEEDED_RETRY_DELAYS_MS) {
178398
178439
  if (output.error !== "capacity_exceeded" || input.signal?.aborted)
178399
178440
  break;
178400
178441
  await Bun.sleep(delayMs);
178401
- output = await getScriptExecutor().run(executorInput);
178442
+ output = await resolveScriptExecutor(input.executor).run(executorInput);
178402
178443
  }
178403
178444
  return {
178404
178445
  ...output,
@@ -178571,6 +178612,7 @@ async function runSavedScriptAsAgent(args, deps = {}) {
178571
178612
  source: args.script.source,
178572
178613
  args: args.input,
178573
178614
  fsMode: args.script.fsMode,
178615
+ executor: args.script.executor,
178574
178616
  agentId: args.agentId,
178575
178617
  egressSecrets: credentials.egressSecrets,
178576
178618
  failedBindings: credentials.failedBindings,
@@ -184019,6 +184061,7 @@ var SCRIPT_SDK_TYPES = `
184019
184061
  export type JsonValue = null | boolean | number | string | JsonValue[] | { [key: string]: JsonValue };
184020
184062
  export type ScriptScope = "agent" | "global";
184021
184063
  export type ScriptFsMode = "none" | "workspace-rw";
184064
+ export type ScriptExecutorName = "native" | "quickjs";
184022
184065
  export type ScriptApiRawOptions = { raw: true };
184023
184066
  export type ScriptApiDefaultOptions = { raw?: false };
184024
184067
  export type RoutingReason = "skill" | "continuity" | "overflow" | "human_pinned" | "reroute_fault";
@@ -184210,7 +184253,7 @@ export interface SwarmSdk {
184210
184253
  schedule_list(args?: { enabled?: boolean; name?: string; scheduleType?: "recurring" | "one_time"; targetType?: "agent-task" | "workflow" | "script"; workflowId?: string; scriptName?: string; hideCompleted?: boolean; consecutiveErrorsMin?: number; lastRunStatus?: "failed" | "succeeded"; includeFull?: boolean }): Promise<unknown>;
184211
184254
  // --- scripts ---
184212
184255
  script_search(args: { query?: string; scope?: ScriptScope; limit?: number }): Promise<unknown>;
184213
- script_run(args: { name?: string; source?: string; args?: unknown; intent?: string; scope?: ScriptScope; fsMode?: ScriptFsMode; idempotencyKey?: string }): Promise<unknown>;
184256
+ script_run(args: { name?: string; source?: string; args?: unknown; intent?: string; scope?: ScriptScope; fsMode?: ScriptFsMode; executor?: ScriptExecutorName | null; idempotencyKey?: string }): Promise<unknown>;
184214
184257
  // --- swarm / agent ---
184215
184258
  swarm_get(args?: { includeFull?: boolean }): Promise<unknown>;
184216
184259
  agent_info(args?: Record<string, unknown>): Promise<unknown>;
@@ -184236,7 +184279,7 @@ export interface SwarmSdk {
184236
184279
  workflow_list(args?: { enabled?: boolean; includeFull?: boolean; consecutiveErrorsMin?: number; lastRunStatus?: "running" | "waiting" | "completed" | "failed" | "skipped" | "cancelled" }): Promise<unknown>;
184237
184280
  workflow_get(args: { id: string }): Promise<unknown>;
184238
184281
  workflow_listRuns(args: { workflowId: string; status?: "running" | "waiting" | "completed" | "failed" | "skipped" | "cancelled"; limit?: number; offset?: number }): Promise<unknown>;
184239
- workflow_getRun(args: { id: string }): Promise<unknown>;
184282
+ workflow_getRun(args: { id: string; fields?: "full" | "slim" }): Promise<unknown>;
184240
184283
  // --- prompt templates ---
184241
184284
  prompt_list(args?: { eventType?: string; scope?: "global" | "agent" | "repo"; scopeId?: string; isDefault?: boolean }): Promise<unknown>;
184242
184285
  prompt_get(args: { id: string }): Promise<unknown>;
@@ -184327,7 +184370,12 @@ export interface SwarmSdk {
184327
184370
  workflow_patch(args: Record<string, unknown>): Promise<unknown>;
184328
184371
  workflow_patchNode(args: Record<string, unknown>): Promise<unknown>;
184329
184372
  workflow_delete(args: { id: string }): Promise<unknown>;
184330
- workflow_trigger(args: { id: string; triggerData?: Record<string, unknown> }): Promise<unknown>;
184373
+ workflow_trigger(args: {
184374
+ id: string;
184375
+ triggerData?: Record<string, unknown>;
184376
+ wait?: boolean;
184377
+ idempotencyKey?: string;
184378
+ }): Promise<unknown>;
184331
184379
  workflow_retryRun(args: { id: string }): Promise<unknown>;
184332
184380
  workflow_cancelRun(args: { id: string }): Promise<unknown>;
184333
184381
 
@@ -184337,7 +184385,7 @@ export interface SwarmSdk {
184337
184385
  prompt_preview(args: Record<string, unknown>): Promise<unknown>;
184338
184386
 
184339
184387
  // --- write: scripts ---
184340
- script_upsert(args: { name: string; source: string; description?: string; intent?: string; scope?: ScriptScope; fsMode?: ScriptFsMode }): Promise<unknown>;
184388
+ script_upsert(args: { name: string; source: string; description?: string; intent?: string; scope?: ScriptScope; fsMode?: ScriptFsMode; executor?: ScriptExecutorName | null }): Promise<unknown>;
184341
184389
  script_delete(args: { name: string; scope?: ScriptScope }): Promise<unknown>;
184342
184390
  script_queryTypes(args: { name: string; scope?: ScriptScope }): Promise<unknown>;
184343
184391
  script_launchRun(args: { source: string; args?: unknown; idempotencyKey?: string; scriptName?: string; requestedByUserId?: string }): Promise<unknown>;
@@ -185178,4 +185226,4 @@ function parseSkillContent(content) {
185178
185226
  };
185179
185227
  }
185180
185228
 
185181
- export { require_dist2, isInvalidClientError, publicEndpointSsrfOptions, mcpOAuthSsrfOptions, discoverProtectedResourceMetadata, discoverAuthorizationServerMetadata, normalizeTokenEndpointAuthMethod, resolveAdvertisedTokenEndpointAuthMethod, authMethodForStoredClient, selectDcrTokenEndpointAuthMethod, registerClient, buildAuthorizeUrl, exchangeCodeForTokens, refreshMcpToken, revokeMcpToken, computeExpiresAt, getMcpOAuthToken, findReusableMcpOAuthClient, invalidateMcpOAuthClient, upsertMcpOAuthToken, applyMcpOAuthRefresh, markMcpOAuthTokenStatus, deleteMcpOAuthToken, insertMcpOAuthPending, consumeMcpOAuthPending, gcMcpOAuthPending, setMcpServerAuthMethod, ensureMcpToken, callMcpServerTool, resolveSqlDsn, runReadOnlyQuery, listVendoredOpenapiEntries, ConnectionAuthInputSchema, SqlDsnInputSchema, connectionAuthSummary, listRelationalCredentialBindings, getCredentialBindingById, findCredentialBindingByIdentity, upsertCredentialBinding, disableCredentialBinding, listScriptConnections, listScriptConnectionsAsync, getScriptConnectionById, ScriptConnectionConflictError, connectionAuthInputFromFlat, upsertScriptConnection, refreshScriptConnection, setScriptConnectionEnabled, deleteScriptConnection, getScriptApiConnectionDescriptors, getScriptMcpConnectionDescriptors, getScriptApiTypes, getScriptMcpTypes, oauthAppToProviderConfig, getOAuthProviderConfig, getOAuthBindingTokenStatus, buildScriptCredentialBindingsWithFailures, buildSandboxedCommand, sandboxSpawnEnv, createCappedStreamState, snapshotCapped, readStreamCapped, writeBareImportShim, MIN_SCRIPT_WALL_CLOCK_MS, SCRIPT_LONG_TIMEOUT_HINT_MS, MAX_SCRIPT_WALL_CLOCK_MS, DEFAULT_SCRIPT_RESOURCES, require_typescript2, checkImportAllowlist, validateScriptImports, runScriptWithRunCredential, extractScriptSignature, extractArgsJsonSchema, getSavedScriptOwnerAgentId, runSavedScriptAsAgent, checkQuickJSCompat, quickJSCompatWarnings, resolveSyncRunAs, AppNameSchema, ScalarColumnKindSchema, isIso8601Date, jsonColumnSizeLabel, jsonColumnValueIssue, isValidColumnValue, SYSTEM_COLUMN_KINDS, SORTABLE_SYSTEM_DATE_COLUMNS, AppElementsSchema, AppDefinitionSchema, collectScriptReferences, scriptCompatWarnings, parseAppDefinition, applyAppDefinitionPatch, upgradeAppDefinition, decodeAppDefinition, appDefinitionNeedsRepair, createApp, getApp, listApps, listAppRecords, updateApp, deleteApp, getScriptAppTypes, SCRIPT_SDK_TYPES, scriptSdkTypesWithGeneratedApis, SCRIPT_STDLIB_MODULE_TYPES, scriptStdlibTypesWithGeneratedApis, typecheckWithAmbient, typecheckScript, parseSkillContent };
185229
+ export { require_dist2, isInvalidClientError, publicEndpointSsrfOptions, mcpOAuthSsrfOptions, discoverProtectedResourceMetadata, discoverAuthorizationServerMetadata, normalizeTokenEndpointAuthMethod, resolveAdvertisedTokenEndpointAuthMethod, authMethodForStoredClient, selectDcrTokenEndpointAuthMethod, registerClient, buildAuthorizeUrl, exchangeCodeForTokens, refreshMcpToken, revokeMcpToken, computeExpiresAt, getMcpOAuthToken, findReusableMcpOAuthClient, invalidateMcpOAuthClient, upsertMcpOAuthToken, applyMcpOAuthRefresh, markMcpOAuthTokenStatus, deleteMcpOAuthToken, insertMcpOAuthPending, consumeMcpOAuthPending, gcMcpOAuthPending, setMcpServerAuthMethod, ensureMcpToken, callMcpServerTool, resolveSqlDsn, runReadOnlyQuery, listVendoredOpenapiEntries, ConnectionAuthInputSchema, SqlDsnInputSchema, connectionAuthSummary, listRelationalCredentialBindings, getCredentialBindingById, findCredentialBindingByIdentity, upsertCredentialBinding, disableCredentialBinding, listScriptConnections, listScriptConnectionsAsync, getScriptConnectionById, ScriptConnectionConflictError, connectionAuthInputFromFlat, upsertScriptConnection, refreshScriptConnection, setScriptConnectionEnabled, deleteScriptConnection, getScriptApiConnectionDescriptors, getScriptMcpConnectionDescriptors, getScriptApiTypes, getScriptMcpTypes, oauthAppToProviderConfig, getOAuthProviderConfig, getOAuthBindingTokenStatus, buildScriptCredentialBindingsWithFailures, buildSandboxedCommand, sandboxSpawnEnv, createCappedStreamState, snapshotCapped, readStreamCapped, writeBareImportShim, isExecutorAllowedByDeployment, MIN_SCRIPT_WALL_CLOCK_MS, SCRIPT_LONG_TIMEOUT_HINT_MS, MAX_SCRIPT_WALL_CLOCK_MS, DEFAULT_SCRIPT_RESOURCES, HOST_VALIDATED_ARGS, require_typescript2, checkImportAllowlist, validateScriptImports, runScriptWithRunCredential, extractScriptSignature, extractArgsJsonSchema, getSavedScriptOwnerAgentId, runSavedScriptAsAgent, checkQuickJSCompat, quickJSCompatWarnings, resolveSyncRunAs, AppNameSchema, ScalarColumnKindSchema, isIso8601Date, jsonColumnSizeLabel, jsonColumnValueIssue, isValidColumnValue, SYSTEM_COLUMN_KINDS, SORTABLE_SYSTEM_DATE_COLUMNS, AppElementsSchema, AppDefinitionSchema, collectScriptReferences, scriptCompatWarnings, parseAppDefinition, applyAppDefinitionPatch, upgradeAppDefinition, decodeAppDefinition, appDefinitionNeedsRepair, createApp, getApp, listApps, listAppRecords, updateApp, deleteApp, getScriptAppTypes, SCRIPT_SDK_TYPES, scriptSdkTypesWithGeneratedApis, SCRIPT_STDLIB_MODULE_TYPES, scriptStdlibTypesWithGeneratedApis, typecheckWithAmbient, typecheckScript, parseSkillContent };
@@ -6,7 +6,7 @@ import {
6
6
  import {
7
7
  scrubSecrets,
8
8
  init_secret_scrubber
9
- } from "./cli-n4c8e3s5.js";
9
+ } from "./cli-708wdy32.js";
10
10
  import {
11
11
  __esm
12
12
  } from "./cli-242037k3.js";
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  contextBoundNoteThreshold,
3
3
  createContextBoundNote
4
- } from "./cli-2655k16q.js";
4
+ } from "./cli-sjctjr48.js";
5
5
  import {
6
6
  ampBillsCacheWrites,
7
7
  resolveAmpModel
8
- } from "./cli-9s05422w.js";
8
+ } from "./cli-8mbc9za9.js";
9
9
  import {
10
10
  swarmRuntimeInstanceId
11
11
  } from "./cli-e8xyjvfc.js";
@@ -22,18 +22,18 @@ import {
22
22
  } from "./cli-jc1g9ndz.js";
23
23
  import {
24
24
  applyReasoningEffort
25
- } from "./cli-bn0rewsy.js";
25
+ } from "./cli-c081bj3b.js";
26
26
  import {
27
27
  CONTEXT_FORMULA,
28
28
  computeContextUsedUnified,
29
29
  clampContextPercent,
30
30
  init_context_window
31
- } from "./cli-0shx9j93.js";
31
+ } from "./cli-pfk92eqz.js";
32
32
  import {
33
33
  scrubSecrets,
34
34
  registerVolatileSecret,
35
35
  init_secret_scrubber
36
- } from "./cli-n4c8e3s5.js";
36
+ } from "./cli-708wdy32.js";
37
37
 
38
38
  // src/providers/amp-adapter.ts
39
39
  import { existsSync, readFileSync, renameSync, rmSync, writeFileSync } from "node:fs";
@@ -42,7 +42,7 @@ import { tmpdir } from "node:os";
42
42
  import { join } from "node:path";
43
43
  init_context_window();
44
44
  init_secret_scrubber();
45
- var AMP_PACKAGE = "@ampcode/cli@0.0.1792844927-g360c96";
45
+ var AMP_PACKAGE = "@ampcode/cli@0.0.1793025586-g9211b5";
46
46
  var AMP_MCP_SERVER_NAME = "agent-swarm";
47
47
  var AMP_PLUGIN_MODE_KEY = "agent-swarm";
48
48
  var AMP_LIVE_TEST_TIMEOUT_MS = 5000;
@@ -47,10 +47,10 @@ import {
47
47
  checkDependencies2,
48
48
  emitBuiltInIntegrationConnectedOnce2,
49
49
  init_db3
50
- } from "./cli-jb30dzvk.js";
50
+ } from "./cli-48gxjmcz.js";
51
51
  import {
52
52
  getChannelBlockReason2
53
- } from "./cli-eftzyh9y.js";
53
+ } from "./cli-s09j9vp5.js";
54
54
  import {
55
55
  require_dist5,
56
56
  require_axios,
@@ -67,11 +67,11 @@ import {
67
67
  import {
68
68
  isTerminalTaskStatus,
69
69
  init_types
70
- } from "./cli-mz9afxxf.js";
70
+ } from "./cli-9pshx6rd.js";
71
71
  import {
72
72
  taskAttachmentDisplayUrl,
73
73
  init_task_attachment_links
74
- } from "./cli-e42vss7b.js";
74
+ } from "./cli-x37r7qwf.js";
75
75
  import {
76
76
  getSlackConfiguration,
77
77
  init_config
@@ -102,7 +102,7 @@ import {
102
102
  scrubSecrets,
103
103
  scrubObject,
104
104
  init_secret_scrubber
105
- } from "./cli-n4c8e3s5.js";
105
+ } from "./cli-708wdy32.js";
106
106
  import {
107
107
  __toESM,
108
108
  __commonJS,
@@ -6240,7 +6240,7 @@ async function initOtel(serviceRole = process.env.AGENT_ROLE || "api") {
6240
6240
  return;
6241
6241
  initialized = true;
6242
6242
  try {
6243
- const impl = await import("./otel-impl-v6cc0zve.js");
6243
+ const impl = await import("./otel-impl-f9tgr8yw.js");
6244
6244
  await impl.boot(serviceRole, {
6245
6245
  exportConsoleLogs: serviceRole === "api" && isApiLogExportEnabled()
6246
6246
  });
@@ -8240,7 +8240,7 @@ function retryDelayMs(error, attempt) {
8240
8240
  const seconds = candidate.retryAfter ?? candidate.data?.retry_after ?? 2 ** attempt;
8241
8241
  return Math.min(Math.max(seconds * 1000, 0), MAX_RETRY_DELAY_MS);
8242
8242
  }
8243
- async function callSlackWithRetry(client, method, payload) {
8243
+ async function callSlackWithRetry2(client, method, payload) {
8244
8244
  for (let attempt = 0;; attempt++) {
8245
8245
  try {
8246
8246
  return await client.apiCall(method, payload);
@@ -8526,7 +8526,7 @@ function treeBlocks(text) {
8526
8526
  }));
8527
8527
  }
8528
8528
  async function resolvePermalink(client, channelId, ts) {
8529
- const result = await callSlackWithRetry(client, "chat.getPermalink", {
8529
+ const result = await callSlackWithRetry2(client, "chat.getPermalink", {
8530
8530
  channel: channelId,
8531
8531
  message_ts: ts
8532
8532
  });
@@ -8551,7 +8551,7 @@ async function findReservedSlackMessage(client, reservation, outcomeMarker) {
8551
8551
  let cursor;
8552
8552
  const oldest = Math.max(0, new Date(reservation.createdAt).getTime() / 1000 - 5);
8553
8553
  do {
8554
- const response = await callSlackWithRetry(client, "conversations.replies", {
8554
+ const response = await callSlackWithRetry2(client, "conversations.replies", {
8555
8555
  channel: reservation.channelId,
8556
8556
  ts: reservation.threadTs,
8557
8557
  include_all_metadata: true,
@@ -8613,7 +8613,7 @@ async function createThreadTree(task) {
8613
8613
  const reconciled = reserved.created ? undefined : await findReservedSlackMessage(app.client, reservation);
8614
8614
  let remote = reconciled;
8615
8615
  if (!remote) {
8616
- remote = await callSlackWithRetry(app.client, "chat.postMessage", {
8616
+ remote = await callSlackWithRetry2(app.client, "chat.postMessage", {
8617
8617
  channel: task.slackChannelId,
8618
8618
  thread_ts: task.slackThreadTs,
8619
8619
  text,
@@ -8631,7 +8631,7 @@ async function createThreadTree(task) {
8631
8631
  throw new Error("Slack did not return a timestamp for the thread tree");
8632
8632
  }
8633
8633
  if (reconciled) {
8634
- await callSlackWithRetry(app.client, "chat.update", {
8634
+ await callSlackWithRetry2(app.client, "chat.update", {
8635
8635
  channel: task.slackChannelId,
8636
8636
  ts: remote.ts,
8637
8637
  text,
@@ -8745,7 +8745,7 @@ async function updateThreadTree(tree, bypassThrottle = false, statusBudget) {
8745
8745
  return "throttled";
8746
8746
  }
8747
8747
  try {
8748
- await callSlackWithRetry(app.client, "chat.update", {
8748
+ await callSlackWithRetry2(app.client, "chat.update", {
8749
8749
  channel: current.channelId,
8750
8750
  ts: current.ts,
8751
8751
  text,
@@ -8988,7 +8988,7 @@ function isStreamAlreadyStopped(error) {
8988
8988
  async function slackTeamId(client) {
8989
8989
  if (cachedTeamId)
8990
8990
  return cachedTeamId;
8991
- const auth = await callSlackWithRetry(client, "auth.test", {});
8991
+ const auth = await callSlackWithRetry2(client, "auth.test", {});
8992
8992
  const teamId = auth.team_id;
8993
8993
  if (typeof teamId === "string" && teamId)
8994
8994
  cachedTeamId = teamId;
@@ -9073,10 +9073,10 @@ async function streamOutcomeCard(task, tree, options) {
9073
9073
  let started = reconciled;
9074
9074
  if (!started) {
9075
9075
  try {
9076
- started = await callSlackWithRetry(app.client, "chat.startStream", startPayload);
9076
+ started = await callSlackWithRetry2(app.client, "chat.startStream", startPayload);
9077
9077
  } catch (error) {
9078
9078
  console.error(`[Slack] chat.startStream failed for task ${task.id}; falling back to chat.postMessage:`, error);
9079
- started = await callSlackWithRetry(app.client, "chat.postMessage", {
9079
+ started = await callSlackWithRetry2(app.client, "chat.postMessage", {
9080
9080
  channel: task.slackChannelId,
9081
9081
  thread_ts: task.slackThreadTs,
9082
9082
  text: presentation,
@@ -9099,7 +9099,7 @@ async function streamOutcomeCard(task, tree, options) {
9099
9099
  }
9100
9100
  if (!deliveredViaFallback) {
9101
9101
  try {
9102
- await callSlackWithRetry(app.client, "chat.stopStream", {
9102
+ await callSlackWithRetry2(app.client, "chat.stopStream", {
9103
9103
  channel: task.slackChannelId,
9104
9104
  ts: outcome.ts,
9105
9105
  blocks: captions
@@ -9109,7 +9109,7 @@ async function streamOutcomeCard(task, tree, options) {
9109
9109
  throw error;
9110
9110
  }
9111
9111
  if (!streamedFreshContent) {
9112
- await callSlackWithRetry(app.client, "chat.update", {
9112
+ await callSlackWithRetry2(app.client, "chat.update", {
9113
9113
  channel: task.slackChannelId,
9114
9114
  ts: outcome.ts,
9115
9115
  text: presentation,
@@ -9191,7 +9191,7 @@ async function refreshResolvedDeferralCards() {
9191
9191
  if (!wake)
9192
9192
  continue;
9193
9193
  const content = await resolvedDeferralContent(wake);
9194
- await callSlackWithRetry(app.client, "chat.update", {
9194
+ await callSlackWithRetry2(app.client, "chat.update", {
9195
9195
  channel: card.channelId,
9196
9196
  ts: card.ts,
9197
9197
  ...content
@@ -10085,17 +10085,17 @@ async function initSlackApp2() {
10085
10085
  });
10086
10086
  initialized2 = true;
10087
10087
  app.use(slackInboundOutcomeMiddleware());
10088
- const { registerMessageHandler } = await import("./handlers-wy1dr6ja.js");
10089
- const { registerCommandHandler } = await import("./commands-9849dkj6.js");
10090
- const { registerActionHandlers } = await import("./actions-92mepq03.js");
10091
- const { registerWorkObjectHandlers } = await import("./work-objects-kfahhjsq.js");
10088
+ const { registerMessageHandler } = await import("./handlers-tzmevqb5.js");
10089
+ const { registerCommandHandler } = await import("./commands-68et1qv2.js");
10090
+ const { registerActionHandlers } = await import("./actions-1vhmtvg9.js");
10091
+ const { registerWorkObjectHandlers } = await import("./work-objects-ggnghpgf.js");
10092
10092
  registerMessageHandler(app);
10093
10093
  registerCommandHandler(app);
10094
10094
  registerActionHandlers(app);
10095
10095
  registerWorkObjectHandlers(app);
10096
- const { createAssistant } = await import("./assistant-zyr5kz47.js");
10096
+ const { createAssistant } = await import("./assistant-yx1p6g82.js");
10097
10097
  app.assistant(createAssistant());
10098
- const { isBlockExternalEnabled, scanExternalChannelsOnBoot } = await import("./external-channel-e2s028da.js");
10098
+ const { isBlockExternalEnabled, scanExternalChannelsOnBoot } = await import("./external-channel-xbmxcg09.js");
10099
10099
  if (isBlockExternalEnabled()) {
10100
10100
  scanExternalChannelsOnBoot(app.client).catch((error) => {
10101
10101
  console.error("[Slack] External channel boot scan failed:", error);
@@ -10108,7 +10108,7 @@ async function startSlackApp2() {
10108
10108
  await initSlackApp2();
10109
10109
  }
10110
10110
  if (app) {
10111
- const { isSlackRenderV2Enabled } = await import("./render-v2-pjwxvnkw.js");
10111
+ const { isSlackRenderV2Enabled } = await import("./render-v2-yfvdfr0x.js");
10112
10112
  if (isSlackRenderV2Enabled())
10113
10113
  await ensureSlackRenderV2Activation2();
10114
10114
  await app.start();
@@ -10131,4 +10131,4 @@ async function stopSlackApp2() {
10131
10131
  initialized2 = false;
10132
10132
  }
10133
10133
 
10134
- export { require_dist4, getSlackConnectionState, noteSlackInboundSideEffect, ignoreSlackInbound, reportSlackInboundFailure, isAdmittedSlackDelivery, getSlackInboundDiagnostics, terminalReactionEvent, isPollTracingEnabled, initOtel, withSpan2, startSpan2, withSpanContext2, withRemoteContext2, injectTraceContext2, recordSessionCost2, recordDbRetentionSweep2, recordDbRetentionStatement2, slackTaskOutput, ackSlackMessage, getTaskLink, getTaskUrl, markdownToSlack, buildMrkdwnSectionBlocks, buildCaptionBlock, buildCancelledBlocks, buildBufferFlushBlocks, buildTreeBlocks, taskCitationIssues, stripInvalidTaskCitations, taskCitationSourceGroups, renderTaskCitations, taskCitationWarnings, MAX_TASK_CITATIONS, CitationInputSchema, TaskCitationSchema, upsertTaskCitations, getTaskCitations, getTaskCitationsForTasks, hasTaskCitationCheckRefusal, initialize, ensure, getAgentDisplayName, getAgentEmoji, markSlackSessionProcessing, isSlackRenderV2Enabled2, ensureSlackThreadTree2, processSlackRenderV22, registerTreeMessage, getSlackApp2, initSlackApp2, startSlackApp2, stopSlackApp2 };
10134
+ export { require_dist4, getSlackConnectionState, noteSlackInboundSideEffect, ignoreSlackInbound, reportSlackInboundFailure, isAdmittedSlackDelivery, getSlackInboundDiagnostics, terminalReactionEvent, isPollTracingEnabled, initOtel, withSpan2, startSpan2, withSpanContext2, withRemoteContext2, injectTraceContext2, recordSessionCost2, recordDbRetentionSweep2, recordDbRetentionStatement2, slackTaskOutput, ackSlackMessage, getTaskLink, getTaskUrl, markdownToSlack, buildMrkdwnSectionBlocks, buildCaptionBlock, buildCancelledBlocks, buildBufferFlushBlocks, buildTreeBlocks, taskCitationIssues, stripInvalidTaskCitations, taskCitationSourceGroups, renderTaskCitations, taskCitationWarnings, MAX_TASK_CITATIONS, CitationInputSchema, TaskCitationSchema, upsertTaskCitations, getTaskCitations, getTaskCitationsForTasks, hasTaskCitationCheckRefusal, initialize, ensure, getAgentDisplayName, getAgentEmoji, markSlackSessionProcessing, isSlackRenderV2Enabled2, callSlackWithRetry2, ensureSlackThreadTree2, slackErrorCode2, processSlackRenderV22, registerTreeMessage, getSlackApp2, initSlackApp2, startSlackApp2, stopSlackApp2 };
@@ -8,11 +8,11 @@ import {
8
8
  resolveConfigValueOrThrow,
9
9
  resolveHeadersOrThrow,
10
10
  FileAuthStorageBackend
11
- } from "./cli-x77gen2p.js";
11
+ } from "./cli-2y7v133v.js";
12
12
  import {
13
13
  oauthSuccessHtml,
14
14
  oauthErrorHtml
15
- } from "./cli-qqzmjxkf.js";
15
+ } from "./cli-1m9x8dr5.js";
16
16
  import {
17
17
  __toESM
18
18
  } from "./cli-242037k3.js";
@@ -2,11 +2,11 @@ import {
2
2
  runtimeCatalogSection,
3
3
  runtimeCatalogModel,
4
4
  init_runtime_model_catalog
5
- } from "./cli-6x9ma5w5.js";
5
+ } from "./cli-803188pb.js";
6
6
  import {
7
7
  buildClaudeShortnameMap,
8
8
  init_src2
9
- } from "./cli-nwyw3zhg.js";
9
+ } from "./cli-gxee0bqa.js";
10
10
  import {
11
11
  __esm
12
12
  } from "./cli-242037k3.js";
@@ -7,7 +7,7 @@ var package_default;
7
7
  var init_package = __esm(() => {
8
8
  package_default = {
9
9
  name: "@desplega.ai/agent-swarm",
10
- version: "2.5.4",
10
+ version: "2.7.0",
11
11
  description: "agent-swarm.dev — an open-source operating system for AI work: a lead agent breaks goals into tasks, routes them to specialized workers such as Claude Code or Codex, runs each worker in an isolated container, and preserves shared memory, tools, schedules, and review gates so delegated work compounds across sessions.",
12
12
  keywords: [
13
13
  "agent-swarm.dev",
@@ -87,6 +87,8 @@ var init_package = __esm(() => {
87
87
  "sync:ai-toolbox-skills": "bun scripts/sync-ai-toolbox-skills.ts",
88
88
  "check:ai-toolbox-skills": "bun scripts/sync-ai-toolbox-skills.ts --check",
89
89
  "check:skill-sources": "bun scripts/check-skill-sources.ts",
90
+ "build:docs-index": "bun scripts/build-docs-index.ts",
91
+ "check:docs-index": "bun scripts/build-docs-index.ts --check",
90
92
  "check:operator-skill": "bun scripts/check-operator-skill.ts",
91
93
  "sync:telemetry-contract": "bun scripts/sync-telemetry-contract.ts",
92
94
  "check:telemetry-contract": "bun scripts/sync-telemetry-contract.ts --check",
@@ -192,7 +194,7 @@ var init_package = __esm(() => {
192
194
  "@oxlint/plugins": "1.78.0",
193
195
  "@types/bun": "latest",
194
196
  "dependency-cruiser": "^18.0.0",
195
- "happy-dom": "^20.14.5",
197
+ "happy-dom": "^21.0.4",
196
198
  konsistent: "1.0.0-beta.1",
197
199
  "openapi-typescript": "^7",
198
200
  oxlint: "1.78.0",
@@ -217,7 +219,7 @@ var init_package = __esm(() => {
217
219
  "@chat-adapter/teams": "4.41.1",
218
220
  "@chat-adapter/telegram": "4.41.1",
219
221
  "@cursor/sdk": "1.0.40",
220
- "@desplega.ai/agent-fs-just-bash": "0.18.5",
222
+ "@desplega.ai/agent-fs-just-bash": "0.18.9",
221
223
  "@desplega.ai/business-use": "^0.4.2",
222
224
  "@earendil-works/pi-agent-core": "^1.4.0",
223
225
  "@earendil-works/pi-ai": "^1.4.0",
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  RuntimeProviderKindSchema,
3
3
  init_types
4
- } from "./cli-mz9afxxf.js";
4
+ } from "./cli-9pshx6rd.js";
5
5
  import {
6
6
  init_zod
7
7
  } from "./cli-4chz1hye.js";
@@ -21,7 +21,7 @@ import {
21
21
  import {
22
22
  scrubSecrets,
23
23
  init_secret_scrubber
24
- } from "./cli-n4c8e3s5.js";
24
+ } from "./cli-708wdy32.js";
25
25
 
26
26
  // src/runtime-providers/controller.ts
27
27
  init_secret_scrubber();
@@ -7,20 +7,20 @@ import {
7
7
  tierConfigKey,
8
8
  init_model_tier_keys,
9
9
  init_db3
10
- } from "./cli-jb30dzvk.js";
10
+ } from "./cli-48gxjmcz.js";
11
11
  import {
12
12
  ensureRbacSeedsSynced2,
13
13
  init_rbac_roles
14
- } from "./cli-ff1tm9n9.js";
14
+ } from "./cli-8wmj18cz.js";
15
15
  import {
16
16
  seedPricingFromModelsDev
17
- } from "./cli-sbwsxvtd.js";
17
+ } from "./cli-d20qvpr2.js";
18
18
  import {
19
19
  MODEL_TIERS,
20
20
  DEFAULT_MODEL_TIER_MAP,
21
21
  ProviderNameSchema,
22
22
  init_types
23
- } from "./cli-mz9afxxf.js";
23
+ } from "./cli-9pshx6rd.js";
24
24
 
25
25
  // src/be/boot-seeds.ts
26
26
  init_db3();
@@ -4,7 +4,7 @@ import {
4
4
  claimKv2,
5
5
  deleteKv2,
6
6
  init_db3
7
- } from "./cli-jb30dzvk.js";
7
+ } from "./cli-48gxjmcz.js";
8
8
  import {
9
9
  isEnvFlagEnabled,
10
10
  init_env_flag
@@ -12,7 +12,7 @@ import {
12
12
  import {
13
13
  scrubSecrets,
14
14
  init_secret_scrubber
15
- } from "./cli-n4c8e3s5.js";
15
+ } from "./cli-708wdy32.js";
16
16
 
17
17
  // src/slack/external-channel.ts
18
18
  init_db3();