@desplega.ai/agent-swarm 1.164.1 → 1.166.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 (328) hide show
  1. package/README.md +1 -1
  2. package/dist/acp-adapter-yzfxn8vj.js +23 -0
  3. package/dist/{actions-hp2h32dx.js → actions-qz3m692w.js} +24 -28
  4. package/dist/{amp-adapter-zfd7djyx.js → amp-adapter-j1xbmsqz.js} +7 -7
  5. package/dist/{app-w2d26h4f.js → app-43vrdmv8.js} +9 -10
  6. package/dist/{assistant-45pc4en7.js → assistant-ertffmka.js} +25 -29
  7. package/dist/{boot-reembed-k1q2s4fc.js → boot-reembed-998jtpdg.js} +12 -15
  8. package/dist/{boot-reembed-6rhcpsjf.js → boot-reembed-s7k7c6v2.js} +13 -15
  9. package/dist/boot-scrub-sweep-nepsk4t1.js +211 -0
  10. package/dist/{boot-seeds-ex93edx7.js → boot-seeds-vvzs1zhk.js} +12 -12
  11. package/dist/{claude-adapter-hcxd0szm.js → claude-adapter-2zvmekrp.js} +15 -17
  12. package/dist/{claude-managed-adapter-fz7xps2r.js → claude-managed-adapter-s49wbk8t.js} +5 -5
  13. package/dist/{claude-managed-setup-xx6f15h9.js → claude-managed-setup-cvhqq8qn.js} +4 -4
  14. package/dist/{claude-sdk-session-6nb9raem.js → claude-sdk-session-kkbxtw5q.js} +2624 -2606
  15. package/dist/{cli-etbrt8x1.js → cli-0nhdwxd5.js} +4 -4
  16. package/dist/{cli-jeefgppq.js → cli-0qjcsxgz.js} +7 -7
  17. package/dist/{cli-6behs2bt.js → cli-32bca7nr.js} +1 -1
  18. package/dist/{cli-gt8v96qx.js → cli-3ddybbbx.js} +4 -4
  19. package/dist/{acp-adapter-rxvek4ym.js → cli-3qn4r334.js} +317 -35
  20. package/dist/{cli-1d3w4xm3.js → cli-4r1sjfc4.js} +14 -6
  21. package/dist/{cli-691f2rxm.js → cli-66zh26sp.js} +68 -16
  22. package/dist/{cli-et8wdyqh.js → cli-68r1j4sg.js} +9 -9
  23. package/dist/{cli-xb7kyanp.js → cli-8kgvmkak.js} +3 -3
  24. package/dist/{cli-fdpkw8vk.js → cli-8t229cmr.js} +8 -8
  25. package/dist/{cli-gc54qc0p.js → cli-aqcey741.js} +1 -1
  26. package/dist/{cli-4q4cmr4t.js → cli-cpfmqz3n.js} +8 -8
  27. package/dist/{cli-a9bw0xxt.js → cli-df56tqdw.js} +997 -408
  28. package/dist/{cli-n7h1kqpf.js → cli-dmtrxqhg.js} +6 -1
  29. package/dist/{cli-xfb7333f.js → cli-dw2q9f7g.js} +5 -5
  30. package/dist/{cli-4drstbb9.js → cli-ecknp7p1.js} +81 -23
  31. package/dist/{cli-v0pvvhfq.js → cli-efnd2kce.js} +36 -1
  32. package/dist/{cli-1wetf34q.js → cli-f2n17zhp.js} +1 -1
  33. package/dist/{cli-2c8eky5y.js → cli-feh3dkah.js} +1 -1
  34. package/dist/cli-fn697bnt.js +126 -0
  35. package/dist/{cli-v5pr2fgt.js → cli-gt8azyet.js} +3 -3
  36. package/dist/{cli-dbszf3rw.js → cli-h3x613ze.js} +4 -4
  37. package/dist/{cli-nwhb8y2e.js → cli-hf5s9pgf.js} +1 -1
  38. package/dist/cli-j2jbr8af.js +516 -0
  39. package/dist/{cli-agjzafns.js → cli-jhm6hzjn.js} +593 -10
  40. package/dist/{cli-j0tmc908.js → cli-jvj6a0cv.js} +484 -477
  41. package/dist/{cli-xxz89c2n.js → cli-mb75wpxf.js} +1 -1
  42. package/dist/{cli-07s39g1n.js → cli-mv2520nm.js} +1 -1
  43. package/dist/{cli-v90vfwyb.js → cli-mwegs4af.js} +5 -5
  44. package/dist/{cli-bz1gbac9.js → cli-p4ztb80h.js} +2 -2
  45. package/dist/{cli-1wd1n2ya.js → cli-rfphkzh5.js} +1 -1
  46. package/dist/{cli-976r1zqx.js → cli-rggdq8wq.js} +5 -5
  47. package/dist/{cli-3ajw5v5v.js → cli-rsy933yz.js} +6 -6
  48. package/dist/{cli-yj790e19.js → cli-tadfgd0t.js} +8 -1
  49. package/dist/{cli-cn53e7vc.js → cli-ttbsse3f.js} +6 -1
  50. package/dist/{cli-dyqsrqcf.js → cli-v2a8x45d.js} +4 -4
  51. package/dist/{cli-wbvnn6tk.js → cli-v6vv7dy8.js} +91 -9
  52. package/dist/{cli-z2ap2c0c.js → cli-vzc73wet.js} +90 -55
  53. package/dist/cli-wt7ccy4r.js +2654 -0
  54. package/dist/{cli-4cn19jvn.js → cli-x7kpr72a.js} +3 -3
  55. package/dist/{cli-003785v9.js → cli-xvc3q9br.js} +1 -1
  56. package/dist/{cli-v0e7jpr5.js → cli-xvdgasgy.js} +13 -4
  57. package/dist/{cli-asqeg4ve.js → cli-y59h2pk9.js} +2 -2
  58. package/dist/{cli-0wn3ypqv.js → cli-yshaazs1.js} +14121 -3478
  59. package/dist/{cli-wg8yjqtw.js → cli-ysnyhws9.js} +16 -3
  60. package/dist/cli-zp67qg5x.js +92 -0
  61. package/dist/{cli-g3qgrzck.js → cli-zsh093hk.js} +71 -3
  62. package/dist/{cli-ma3zvh39.js → cli-zy7vwsne.js} +6066 -5829
  63. package/dist/cli.js +79 -26
  64. package/dist/{codex-adapter-pcxdn10v.js → codex-adapter-dw1wxqt8.js} +10 -10
  65. package/dist/{codex-hook-b1fb7c2k.js → codex-hook-d2rkvf39.js} +1 -1
  66. package/dist/{codex-login-059nm145.js → codex-login-terbdsqq.js} +2 -2
  67. package/dist/{codex-session-runner-xzwwddp8.js → codex-session-runner-3cgb8y1g.js} +10 -10
  68. package/dist/{commands-98at8mkn.js → commands-mhxam6z2.js} +9 -9
  69. package/dist/{cursor-adapter-dkg6qnkp.js → cursor-adapter-2qda3st7.js} +6 -6
  70. package/dist/{db-01g8wtvw.js → db-sjks418k.js} +11 -9
  71. package/dist/{devin-adapter-qmttt2fz.js → devin-adapter-bffjj5n4.js} +2 -2
  72. package/dist/{dispatcher-nn2k1wxd.js → dispatcher-1es759rn.js} +22 -26
  73. package/dist/{dsh-adapter-w4d4vwdq.js → dsh-adapter-bek4cyw9.js} +6 -6
  74. package/dist/{e2b-9e4g2hvt.js → e2b-nd50eccg.js} +1 -1
  75. package/dist/{event-bus-z7v2t26e.js → event-bus-vnfthafg.js} +2 -2
  76. package/dist/grok-adapter-ar9cw9jg.js +29 -0
  77. package/dist/{handlers-b0kqsbg8.js → handlers-1gkbhktr.js} +25 -29
  78. package/dist/{hook-sap7v1aj.js → hook-ds2zxq9v.js} +16 -18
  79. package/dist/{hook-pz50gqep.js → hook-vxa3tcsy.js} +10 -12
  80. package/dist/{http-ncr8rmd0.js → http-3h21z9md.js} +679 -227
  81. package/dist/{index-c4aqcyz1.js → index-9b65j1m5.js} +11 -11
  82. package/dist/{index-r46s01nq.js → index-bn6cy8ps.js} +22 -26
  83. package/dist/{index-38kqdt3e.js → index-dkfxpkmm.js} +23 -27
  84. package/dist/{index-630kj5vd.js → index-f8xnqrye.js} +55 -43
  85. package/dist/{index-fdk1t4d6.js → index-n0rxa4ca.js} +11962 -9900
  86. package/dist/{index-9nrj7797.js → index-n99fycq7.js} +22 -26
  87. package/dist/{keepalive-31613r2h.js → keepalive-3xspa9jw.js} +14 -11
  88. package/dist/{lead-mx59tr5s.js → lead-6qphc124.js} +43 -43
  89. package/dist/{maintenance-55ff39ca.js → maintenance-0teem1bb.js} +10 -12
  90. package/dist/{node-f0ykebbv.js → node-9sg7ajby.js} +25 -7
  91. package/dist/{oauth-refresh-sweep-anma954w.js → oauth-refresh-sweep-sh9q25xp.js} +13 -10
  92. package/dist/{onboard-b2fy8ftb.js → onboard-54qmnqxe.js} +4 -3
  93. package/dist/{opencode-adapter-p1s92tmy.js → opencode-adapter-wjfa2wvd.js} +6 -6
  94. package/dist/{otel-impl-9brvt7xv.js → otel-impl-ycqzp2a1.js} +2 -2
  95. package/dist/{pi-mono-adapter-kz4rrwvd.js → pi-mono-adapter-e77e9zst.js} +6 -6
  96. package/dist/{pricing-refresh-7w8mbmva.js → pricing-refresh-atnkngqs.js} +10 -10
  97. package/dist/{rbac-roles-ejp7qwvb.js → rbac-roles-9pjphh9q.js} +10 -10
  98. package/dist/{rbac-roles-nhk4r7bc.js → rbac-roles-j78wdksm.js} +10 -10
  99. package/dist/{render-v2-2gzt8skq.js → render-v2-pxjs49fx.js} +9 -10
  100. package/dist/{setup-5et8t412.js → setup-ymej0xtx.js} +2 -2
  101. package/dist/{work-objects-tb0er7qa.js → work-objects-3nh4ymzb.js} +26 -30
  102. package/dist/{worker-62cv075d.js → worker-qa9fkz5s.js} +43 -43
  103. package/dist/{x-vbxb31jr.js → x-ma4gnfgy.js} +2 -2
  104. package/openapi.json +457 -31
  105. package/package.json +14 -6
  106. package/plugin/commands/create-pr.md +7 -1
  107. package/plugin/pi-skills/create-pr/SKILL.md +7 -1
  108. package/src/agentmail/app.ts +5 -4
  109. package/src/be/automation-preflight.ts +11 -9
  110. package/src/be/boot-scrub-sweep.ts +302 -0
  111. package/src/be/connector-codes.ts +81 -0
  112. package/src/be/crypto/key-bootstrap.ts +1 -1
  113. package/src/be/db/approvals.ts +15 -1
  114. package/src/be/db/codex-oauth-device-flows.ts +40 -0
  115. package/src/be/db/config-secrets.ts +31 -0
  116. package/src/be/db/runtime.ts +4 -0
  117. package/src/be/db/script-runs.ts +15 -0
  118. package/src/be/db/tasks/write.ts +1 -1
  119. package/src/be/db-queries/mcp-oauth.ts +5 -0
  120. package/src/be/db-queries/oauth.ts +77 -0
  121. package/src/be/db.ts +162 -59
  122. package/src/be/events.ts +17 -1
  123. package/src/be/memory/index-content.ts +2 -2
  124. package/src/be/memory/providers/sqlite-store.ts +63 -11
  125. package/src/be/memory/types.ts +14 -0
  126. package/src/be/migrations/197_connector_codes.sql +23 -0
  127. package/src/be/migrations/198_permission_audit_guest.sql +33 -0
  128. package/src/be/migrations/200_backfill_auto_memory_expiry.sql +20 -0
  129. package/src/be/migrations/201_workflow_replay_columns.sql +10 -0
  130. package/src/be/migrations/202_codex_oauth_device_flows.sql +24 -0
  131. package/src/be/model-tier-resolution.ts +2 -1
  132. package/src/be/model-validation.ts +1 -1
  133. package/src/be/pricing-normalize.ts +3 -0
  134. package/src/be/rbac-audit.ts +2 -1
  135. package/src/be/scripts/db.ts +28 -4
  136. package/src/be/scripts/source-secrets.ts +37 -0
  137. package/src/be/scripts/typecheck.ts +23 -2
  138. package/src/be/scrub-json.ts +32 -0
  139. package/src/be/sealed-json.ts +59 -0
  140. package/src/be/secret-registry.ts +131 -0
  141. package/src/be/seed-pricing.ts +14 -0
  142. package/src/be/users.ts +7 -1
  143. package/src/be/workflow-replay.ts +77 -0
  144. package/src/cli.tsx +7 -0
  145. package/src/commands/provider-credentials.ts +46 -8
  146. package/src/commands/runner.ts +2 -10
  147. package/src/extensions/contract-types.generated.ts +1 -1
  148. package/src/github/app.ts +4 -4
  149. package/src/heartbeat/heartbeat.ts +20 -8
  150. package/src/hooks/pr-body-guard.ts +1 -1
  151. package/src/http/agents.ts +1 -0
  152. package/src/http/approval-requests.ts +1 -0
  153. package/src/http/apps.ts +3 -0
  154. package/src/http/auth.ts +4 -1
  155. package/src/http/codex-oauth-device.ts +8 -10
  156. package/src/http/codex-oauth-keep-warm.ts +2 -2
  157. package/src/http/config-values.ts +59 -0
  158. package/src/http/config.ts +5 -0
  159. package/src/http/db-query-bounded.ts +3 -0
  160. package/src/http/db-query-shared.ts +107 -15
  161. package/src/http/db-query.ts +10 -2
  162. package/src/http/extensions.ts +1 -0
  163. package/src/http/index.ts +23 -6
  164. package/src/http/integrations.ts +1 -38
  165. package/src/http/ip-rate-limit.ts +82 -0
  166. package/src/http/kv.ts +38 -4
  167. package/src/http/mcp-servers.ts +1 -0
  168. package/src/http/memory.ts +9 -0
  169. package/src/http/models-catalog.ts +2 -0
  170. package/src/http/operator-actor.ts +4 -0
  171. package/src/http/page-proxy.ts +22 -0
  172. package/src/http/pages.ts +4 -2
  173. package/src/http/realtime.ts +1 -1
  174. package/src/http/request-principal.ts +14 -1
  175. package/src/http/script-connections.ts +8 -0
  176. package/src/http/script-runs.ts +12 -4
  177. package/src/http/scripts.ts +15 -0
  178. package/src/http/session-cost-recompute.ts +3 -2
  179. package/src/http/tasks.ts +9 -0
  180. package/src/http/users.ts +226 -0
  181. package/src/http/workflows.ts +3 -2
  182. package/src/http.ts +1 -0
  183. package/src/integrations/kapso/client.ts +3 -1
  184. package/src/jira/app.ts +2 -2
  185. package/src/kv-view.ts +324 -0
  186. package/src/linear/app.ts +2 -2
  187. package/src/oauth/mcp-wrapper.ts +1 -1
  188. package/src/prompts/memories.ts +42 -1
  189. package/src/providers/acp-adapter.ts +85 -24
  190. package/src/providers/acp-target-catalog.ts +54 -1
  191. package/src/providers/acp-targets.ts +358 -4
  192. package/src/providers/amp-adapter.ts +1 -1
  193. package/src/providers/cursor-adapter.ts +1 -1
  194. package/src/providers/grok-adapter.ts +186 -0
  195. package/src/providers/index.ts +5 -1
  196. package/src/providers/pricing-sources.md +6 -0
  197. package/src/providers/reasoning-effort.ts +17 -1
  198. package/src/providers/types.ts +2 -1
  199. package/src/rbac/can.ts +4 -3
  200. package/src/rbac/legacy-policy.ts +3 -3
  201. package/src/rbac/types.ts +6 -0
  202. package/src/script-workflows/supervisor.ts +11 -2
  203. package/src/scripts-runtime/eval-harness.ts +2 -12
  204. package/src/scripts-runtime/executors/quickjs-bundle.ts +152 -0
  205. package/src/scripts-runtime/executors/quickjs-prelude.ts +285 -0
  206. package/src/scripts-runtime/executors/quickjs-runner.ts +580 -0
  207. package/src/scripts-runtime/executors/quickjs-worker.ts +81 -0
  208. package/src/scripts-runtime/executors/quickjs.ts +196 -0
  209. package/src/scripts-runtime/executors/registry.ts +2 -0
  210. package/src/scripts-runtime/executors/sourcemap.ts +79 -0
  211. package/src/scripts-runtime/script-error-hints.ts +14 -0
  212. package/src/scripts-runtime/swarm-sdk.ts +9 -2
  213. package/src/scripts-runtime/types/stdlib.d.ts +27 -8
  214. package/src/scripts-runtime/types/swarm-extension.d.ts +3 -0
  215. package/src/scripts-runtime/types/swarm-sdk.d.ts +27 -8
  216. package/src/server-user.ts +2 -20
  217. package/src/server.ts +3 -1
  218. package/src/slack/app.ts +4 -0
  219. package/src/slack/config.ts +3 -1
  220. package/src/slack/egress-scrub.ts +87 -0
  221. package/src/tests/acp-adapter.test.ts +191 -2
  222. package/src/tests/boot-scrub-sweep.test.ts +390 -0
  223. package/src/tests/budget-user-scope.test.ts +7 -21
  224. package/src/tests/check-pr-body.test.ts +149 -6
  225. package/src/tests/check-text-columns.test.ts +145 -0
  226. package/src/tests/claude-adapter-binary.test.ts +1 -1
  227. package/src/tests/claude-sdk-process.fixture.ts +13 -2
  228. package/src/tests/codex-oauth-device.test.ts +23 -37
  229. package/src/tests/codex-oauth-keep-warm.test.ts +29 -0
  230. package/src/tests/console-scrub.test.ts +141 -0
  231. package/src/tests/credential-check.test.ts +90 -0
  232. package/src/tests/db-query-denylist.test.ts +202 -0
  233. package/src/tests/db-task-read-contract.test.ts +1 -0
  234. package/src/tests/db-task-write-contract.test.ts +1 -0
  235. package/src/tests/docs-index-footprint.test.js +3 -3
  236. package/src/tests/entrypoint-acp-target-binary.test.ts +44 -1
  237. package/src/tests/events-scrub.test.ts +88 -0
  238. package/src/tests/explicit-model-validation.test.ts +81 -0
  239. package/src/tests/extensions-pre-task.test.ts +33 -1
  240. package/src/tests/fixtures/grok/acp-updates-recorded.jsonl +53 -0
  241. package/src/tests/fixtures/grok/prompt-response-meta.json +36 -0
  242. package/src/tests/fixtures/secret-corpus.ts +320 -0
  243. package/src/tests/grok-adapter.test.ts +647 -0
  244. package/src/tests/heartbeat-checklist.test.ts +44 -0
  245. package/src/tests/integration-disable-flags.test.ts +156 -0
  246. package/src/tests/kv-http.test.ts +34 -0
  247. package/src/tests/kv-tool.test.ts +274 -1
  248. package/src/tests/kv-view.test.ts +147 -0
  249. package/src/tests/mcp-user-route.test.ts +257 -15
  250. package/src/tests/memory-injection-outcome.test.ts +143 -0
  251. package/src/tests/model-tier-resolution.test.ts +76 -3
  252. package/src/tests/page-guest-session.test.ts +424 -0
  253. package/src/tests/page-proxy.test.ts +1 -1
  254. package/src/tests/page-viewer-auth.test.ts +22 -1
  255. package/src/tests/pr-body-leaks.test.ts +157 -2
  256. package/src/tests/preload.ts +10 -0
  257. package/src/tests/provider-registration.test.ts +3 -1
  258. package/src/tests/rbac-audit.test.ts +32 -0
  259. package/src/tests/rbac-mcp-admission-e2e.test.ts +4 -62
  260. package/src/tests/script-connections.test.ts +9 -0
  261. package/src/tests/script-executor-conformance.test.ts +3 -0
  262. package/src/tests/script-executor-quickjs.test.ts +442 -0
  263. package/src/tests/script-executor-registry.test.ts +6 -1
  264. package/src/tests/script-runs-http.test.ts +126 -1
  265. package/src/tests/script-runs-scrub.test.ts +275 -0
  266. package/src/tests/scripts-http.test.ts +82 -1
  267. package/src/tests/scripts-mcp-e2e.test.ts +42 -6
  268. package/src/tests/scripts-runtime.test.ts +37 -0
  269. package/src/tests/scrubbed-text-12e.test.ts +289 -0
  270. package/src/tests/sealed-key-guard.test.ts +166 -0
  271. package/src/tests/secret-canary-sweep.test.ts +958 -0
  272. package/src/tests/secret-registry.test.ts +355 -0
  273. package/src/tests/secret-rules.test.ts +230 -0
  274. package/src/tests/secret-scrubber.test.ts +317 -1
  275. package/src/tests/session-costs-golden.test.ts +17 -0
  276. package/src/tests/slack-egress-scrub.test.ts +216 -0
  277. package/src/tests/swarm-tool-result-gate.test.ts +143 -30
  278. package/src/tests/task-tools-ctx.test.ts +3 -0
  279. package/src/tests/user-token-routes.test.ts +342 -3
  280. package/src/tests/workflow-replay.test.ts +518 -0
  281. package/src/tests/workflow-scrub.test.ts +242 -0
  282. package/src/tests/workflow-system-one-decision-providers.test.ts +737 -0
  283. package/src/tools/db-query.ts +1 -1
  284. package/src/tools/inject-learning.ts +1 -1
  285. package/src/tools/kv/kv-get.ts +136 -6
  286. package/src/tools/send-task.ts +61 -17
  287. package/src/tools/utils.ts +186 -43
  288. package/src/tools/workflows/get-workflow-run.ts +3 -2
  289. package/src/types.ts +16 -1
  290. package/src/utils/console-scrub-install.ts +5 -0
  291. package/src/utils/console-scrub.ts +57 -0
  292. package/src/utils/credentials.ts +8 -0
  293. package/src/utils/page-session.ts +6 -2
  294. package/src/utils/pr-body-leaks.ts +149 -10
  295. package/src/utils/request-auth-context.ts +2 -0
  296. package/src/utils/secret-rules.generated.ts +2055 -0
  297. package/src/utils/secret-scrubber.ts +662 -36
  298. package/src/workflows/engine.ts +39 -4
  299. package/src/workflows/executors/notify.ts +6 -1
  300. package/src/workflows/executors/system-one-decision.ts +31 -12
  301. package/src/workflows/executors/system-one-openai-wire.ts +168 -0
  302. package/src/workflows/executors/system-one-providers.ts +112 -11
  303. package/src/workflows/executors/system-one-wire.ts +79 -0
  304. package/src/workflows/recovery.ts +10 -1
  305. package/src/workflows/resume.ts +62 -3
  306. package/src/workflows/retry-poller.ts +3 -0
  307. package/templates/ai-toolbox.manifest.json +2 -2
  308. package/templates/skills/agent-browser/SKILL.md +5 -5
  309. package/templates/skills/agent-browser/config.json +1 -1
  310. package/templates/skills/agent-browser/content.md +4 -4
  311. package/templates/skills/artifacts/content.md +17 -7
  312. package/templates/skills/jira-interaction/config.json +1 -1
  313. package/templates/skills/jira-interaction/content.md +56 -205
  314. package/templates/skills/linear-interaction/config.json +1 -1
  315. package/templates/skills/linear-interaction/content.md +31 -50
  316. package/templates/skills/pages/content.md +8 -4
  317. package/templates/skills/qa/content.md +2 -2
  318. package/templates/skills/workflow-iterate/content.md +4 -4
  319. package/tsconfig.json +3 -3
  320. package/dist/boot-scrub-logs-t8xg7wd7.js +0 -99
  321. package/dist/cli-0a7r5331.js +0 -168
  322. package/dist/cli-93rxw9yd.js +0 -951
  323. package/dist/cli-cvk6yzw5.js +0 -40
  324. package/dist/cli-dgnj0zcc.js +0 -40
  325. package/dist/cli-qt5wzq6v.js +0 -256
  326. package/dist/cli-v7fqehqd.js +0 -9281
  327. package/dist/cli-vbr859rz.js +0 -572
  328. package/src/be/boot-scrub-logs.ts +0 -132
@@ -1,3 +1,7 @@
1
+ import {
2
+ init_env_flag,
3
+ isEnvFlagEnabled
4
+ } from "./cli-ej6gbxfb.js";
1
5
  import {
2
6
  __esm
3
7
  } from "./cli-bc05qbss.js";
@@ -12,7 +16,7 @@ function getSlackConfiguration(env = process.env) {
12
16
  if (mode === "http")
13
17
  missingCredentials.push("SLACK_SIGNING_SECRET");
14
18
  return {
15
- disabled: env.SLACK_DISABLE === "true" || env.SLACK_DISABLE === "1",
19
+ disabled: isEnvFlagEnabled("SLACK_DISABLE", false, env),
16
20
  mode,
17
21
  missingCredentials: missingCredentials.filter((key) => !env[key]?.trim())
18
22
  };
@@ -23,6 +27,7 @@ function isSlackConfigured(env = process.env) {
23
27
  }
24
28
  var SLACK_MODES;
25
29
  var init_config = __esm(() => {
30
+ init_env_flag();
26
31
  SLACK_MODES = ["socket", "http"];
27
32
  });
28
33
 
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  resolveSlackUserId,
3
3
  rewriteSlackMentions
4
- } from "./cli-4cn19jvn.js";
4
+ } from "./cli-x7kpr72a.js";
5
5
  import {
6
6
  bufferedFileFailures,
7
7
  buildEffectiveText,
@@ -11,7 +11,7 @@ import {
11
11
  fetchSlackFiles,
12
12
  findUserByExternalId,
13
13
  notifySlackFileFailures
14
- } from "./cli-a9bw0xxt.js";
14
+ } from "./cli-df56tqdw.js";
15
15
  import {
16
16
  buildBufferFlushBlocks,
17
17
  ensureSlackThreadTree,
@@ -20,7 +20,7 @@ import {
20
20
  getSlackApp,
21
21
  isSlackRenderV2Enabled,
22
22
  registerTreeMessage
23
- } from "./cli-4drstbb9.js";
23
+ } from "./cli-ecknp7p1.js";
24
24
  import {
25
25
  createLogEntry,
26
26
  getAgentById,
@@ -29,11 +29,11 @@ import {
29
29
  getLeadAgent,
30
30
  getMostRecentTaskInThread,
31
31
  init_context_key,
32
- init_db,
32
+ init_db1 as init_db,
33
33
  init_steering,
34
34
  requestSteering,
35
35
  slackContextKey
36
- } from "./cli-0wn3ypqv.js";
36
+ } from "./cli-yshaazs1.js";
37
37
  import {
38
38
  init_steering_enabled,
39
39
  isSteeringEnabled
@@ -4,10 +4,6 @@ import {
4
4
  import {
5
5
  require_semver
6
6
  } from "./cli-3er6gcsn.js";
7
- import {
8
- init_task_attachment_links,
9
- taskAttachmentDisplayUrl
10
- } from "./cli-cvk6yzw5.js";
11
7
  import {
12
8
  require_jws,
13
9
  require_p_retry
@@ -55,7 +51,7 @@ import {
55
51
  getTaskAttachments,
56
52
  getTaskById,
57
53
  init_context_key,
58
- init_db,
54
+ init_db1 as init_db,
59
55
  init_reaction_shortcode,
60
56
  isPendingSlackMessage,
61
57
  isSettledSlackMessage,
@@ -73,15 +69,19 @@ import {
73
69
  setSlackMessageTracking,
74
70
  slackContextKey,
75
71
  updateSlackMessageRecord
76
- } from "./cli-0wn3ypqv.js";
72
+ } from "./cli-yshaazs1.js";
77
73
  import {
78
74
  init_types,
79
75
  isTerminalTaskStatus
80
- } from "./cli-v0e7jpr5.js";
76
+ } from "./cli-xvdgasgy.js";
77
+ import {
78
+ init_task_attachment_links,
79
+ taskAttachmentDisplayUrl
80
+ } from "./cli-jhm6hzjn.js";
81
81
  import {
82
82
  getSlackConfiguration,
83
83
  init_config
84
- } from "./cli-n7h1kqpf.js";
84
+ } from "./cli-dmtrxqhg.js";
85
85
  import {
86
86
  getAppUrl,
87
87
  init_constants
@@ -104,7 +104,7 @@ import {
104
104
  init_secret_scrubber,
105
105
  scrubObject,
106
106
  scrubSecrets
107
- } from "./cli-qt5wzq6v.js";
107
+ } from "./cli-wt7ccy4r.js";
108
108
  import {
109
109
  __commonJS,
110
110
  __require,
@@ -52915,7 +52915,7 @@ async function initOtel(serviceRole = process.env.AGENT_ROLE || "api") {
52915
52915
  return;
52916
52916
  initialized = true;
52917
52917
  try {
52918
- const impl = await import("./otel-impl-9brvt7xv.js");
52918
+ const impl = await import("./otel-impl-ycqzp2a1.js");
52919
52919
  await impl.boot(serviceRole, {
52920
52920
  exportConsoleLogs: serviceRole === "api" && isApiLogExportEnabled()
52921
52921
  });
@@ -52992,7 +52992,7 @@ init_secret_scrubber();
52992
52992
  // src/slack/app.ts
52993
52993
  init_db();
52994
52994
  init_config();
52995
- var import_bolt = __toESM(require_dist7(), 1);
52995
+ var import_bolt2 = __toESM(require_dist7(), 1);
52996
52996
 
52997
52997
  // src/slack/connection-state.ts
52998
52998
  var state = "disconnected";
@@ -53003,6 +53003,63 @@ function setSlackConnectionState(next) {
53003
53003
  state = next;
53004
53004
  }
53005
53005
 
53006
+ // src/slack/egress-scrub.ts
53007
+ init_secret_scrubber();
53008
+ var import_bolt = __toESM(require_dist7(), 1);
53009
+ var WRITE_METHODS = new Set([
53010
+ "chat.postMessage",
53011
+ "chat.postEphemeral",
53012
+ "chat.update",
53013
+ "chat.scheduleMessage",
53014
+ "chat.meMessage",
53015
+ "files.completeUploadExternal"
53016
+ ]);
53017
+ var TEXT_FIELDS = ["text", "blocks", "attachments", "initial_comment", "title", "files"];
53018
+ function scrubFields(args, fields) {
53019
+ const out = { ...args };
53020
+ for (const field of fields) {
53021
+ if (out[field] !== undefined)
53022
+ out[field] = scrubObject(out[field]);
53023
+ }
53024
+ return out;
53025
+ }
53026
+ function scrubSlackWriteArgs(method, args) {
53027
+ if (!args || !WRITE_METHODS.has(method))
53028
+ return args;
53029
+ return scrubFields(args, TEXT_FIELDS);
53030
+ }
53031
+ function scrubSlackUploadArgs(options) {
53032
+ const out = scrubFields(options, ["initial_comment", "title", "alt_text"]);
53033
+ if (typeof out.content === "string")
53034
+ out.content = scrubSecrets(out.content);
53035
+ if (Array.isArray(out.file_uploads)) {
53036
+ out.file_uploads = out.file_uploads.map((upload) => {
53037
+ if (!upload || typeof upload !== "object")
53038
+ return upload;
53039
+ const entry = scrubFields(upload, ["title", "alt_text"]);
53040
+ if (typeof entry.content === "string")
53041
+ entry.content = scrubSecrets(entry.content);
53042
+ return entry;
53043
+ });
53044
+ }
53045
+ return out;
53046
+ }
53047
+ var INSTALLED = Symbol.for("agent-swarm.slack-egress-scrub");
53048
+ function installSlackEgressScrub() {
53049
+ const proto = import_bolt.webApi.WebClient.prototype;
53050
+ if (proto[INSTALLED])
53051
+ return;
53052
+ const originalApiCall = proto.apiCall;
53053
+ const originalUpload = proto.filesUploadV2;
53054
+ proto.apiCall = function(method, options) {
53055
+ return originalApiCall.call(this, method, scrubSlackWriteArgs(method, options));
53056
+ };
53057
+ proto.filesUploadV2 = function(options) {
53058
+ return originalUpload.call(this, scrubSlackUploadArgs(options));
53059
+ };
53060
+ proto[INSTALLED] = true;
53061
+ }
53062
+
53006
53063
  // src/slack/socket-mode-guard.ts
53007
53064
  init_env_flag();
53008
53065
  var SLACK_DEV_SOCKET_MODE_OPT_IN = "SLACK_ALLOW_DEV_SOCKET_MODE";
@@ -54335,16 +54392,17 @@ async function initSlackApp() {
54335
54392
  console.error(`[Slack] SOCKET MODE BLOCKED: ${socketModeBlockReason}. Set ${SLACK_DEV_SOCKET_MODE_OPT_IN}=true to opt in explicitly.`);
54336
54393
  return null;
54337
54394
  }
54395
+ installSlackEgressScrub();
54338
54396
  const slackApiUrl = process.env.SLACK_API_URL;
54339
54397
  const clientOptions = slackApiUrl ? { slackApiUrl } : undefined;
54340
- const logLevel = import_bolt.LogLevel.DEBUG;
54341
- receiver = new import_bolt.SocketModeReceiver({
54398
+ const logLevel = import_bolt2.LogLevel.DEBUG;
54399
+ receiver = new import_bolt2.SocketModeReceiver({
54342
54400
  appToken,
54343
54401
  logLevel,
54344
54402
  installerOptions: clientOptions ? { clientOptions } : {}
54345
54403
  });
54346
54404
  trackConnectionState(receiver);
54347
- app = new import_bolt.App({
54405
+ app = new import_bolt2.App({
54348
54406
  token: botToken,
54349
54407
  receiver,
54350
54408
  socketMode: true,
@@ -54352,15 +54410,15 @@ async function initSlackApp() {
54352
54410
  ...clientOptions ? { clientOptions } : {}
54353
54411
  });
54354
54412
  initialized2 = true;
54355
- const { registerMessageHandler } = await import("./handlers-b0kqsbg8.js");
54356
- const { registerCommandHandler } = await import("./commands-98at8mkn.js");
54357
- const { registerActionHandlers } = await import("./actions-hp2h32dx.js");
54358
- const { registerWorkObjectHandlers } = await import("./work-objects-tb0er7qa.js");
54413
+ const { registerMessageHandler } = await import("./handlers-1gkbhktr.js");
54414
+ const { registerCommandHandler } = await import("./commands-mhxam6z2.js");
54415
+ const { registerActionHandlers } = await import("./actions-qz3m692w.js");
54416
+ const { registerWorkObjectHandlers } = await import("./work-objects-3nh4ymzb.js");
54359
54417
  registerMessageHandler(app);
54360
54418
  registerCommandHandler(app);
54361
54419
  registerActionHandlers(app);
54362
54420
  registerWorkObjectHandlers(app);
54363
- const { createAssistant } = await import("./assistant-45pc4en7.js");
54421
+ const { createAssistant } = await import("./assistant-ertffmka.js");
54364
54422
  app.assistant(createAssistant());
54365
54423
  return app;
54366
54424
  }
@@ -54369,7 +54427,7 @@ async function startSlackApp() {
54369
54427
  await initSlackApp();
54370
54428
  }
54371
54429
  if (app) {
54372
- const { isSlackRenderV2Enabled: isSlackRenderV2Enabled2 } = await import("./render-v2-2gzt8skq.js");
54430
+ const { isSlackRenderV2Enabled: isSlackRenderV2Enabled2 } = await import("./render-v2-pxjs49fx.js");
54373
54431
  if (isSlackRenderV2Enabled2())
54374
54432
  await ensureSlackRenderV2Activation();
54375
54433
  await app.start();
@@ -54556,7 +54614,7 @@ init_reaction_shortcode();
54556
54614
  init_db();
54557
54615
  init_types();
54558
54616
  init_secret_scrubber();
54559
- var import_bolt2 = __toESM(require_dist7(), 1);
54617
+ var import_bolt3 = __toESM(require_dist7(), 1);
54560
54618
  var REFRESH_MS = 30 * 60000;
54561
54619
  var DEFAULT_CALL_TIMEOUT_MS = 8000;
54562
54620
  var TRANSPORT_MARGIN_MS = 500;
@@ -54630,12 +54688,12 @@ function withTimeout(promise, ms) {
54630
54688
  }
54631
54689
  var transports = new WeakMap;
54632
54690
  function statusTransport(client) {
54633
- if (!(client instanceof import_bolt2.webApi.WebClient))
54691
+ if (!(client instanceof import_bolt3.webApi.WebClient))
54634
54692
  return client;
54635
54693
  let transport = transports.get(client);
54636
54694
  if (!transport) {
54637
54695
  const timeout = Math.max(callTimeoutMs - TRANSPORT_MARGIN_MS, 1);
54638
- transport = new import_bolt2.webApi.WebClient(client.token ?? process.env.SLACK_BOT_TOKEN, {
54696
+ transport = new import_bolt3.webApi.WebClient(client.token ?? process.env.SLACK_BOT_TOKEN, {
54639
54697
  slackApiUrl: client.slackApiUrl,
54640
54698
  retryConfig: { retries: 0 },
54641
54699
  rejectRateLimitedCalls: true,
@@ -3,6 +3,41 @@ import {
3
3
  } from "./cli-w0bwte75.js";
4
4
 
5
5
  // src/prompts/memories.ts
6
+ var SNIPPET_CHARS = 300;
7
+ var OUTPUT_MARKER = `
8
+
9
+ Output:
10
+ `;
11
+ var FAILURE_MARKER = `
12
+
13
+ Failure reason:
14
+ `;
15
+ var FAILURE_SUFFIX = `
16
+
17
+ This task failed. Learn from this to avoid repeating the mistake.`;
18
+ function memorySnippet(memory) {
19
+ const summary = memory.summary?.trim();
20
+ if (summary)
21
+ return summary;
22
+ const { content } = memory;
23
+ if (memory.source !== "task_completion")
24
+ return content;
25
+ const outputAt = content.lastIndexOf(OUTPUT_MARKER);
26
+ const failureAt = content.lastIndexOf(FAILURE_MARKER);
27
+ if (outputAt === -1 && failureAt === -1)
28
+ return content;
29
+ if (outputAt > failureAt)
30
+ return content.slice(outputAt + OUTPUT_MARKER.length).trim();
31
+ let reason = content.slice(failureAt + FAILURE_MARKER.length);
32
+ if (reason.endsWith(FAILURE_SUFFIX))
33
+ reason = reason.slice(0, -FAILURE_SUFFIX.length);
34
+ return `FAILED: ${reason.trim()}`;
35
+ }
36
+ function memoryLinePrefix(memory) {
37
+ const date = /^\d{4}-\d{2}-\d{2}/.exec(memory.createdAt ?? "")?.[0];
38
+ const parts = [date, memory.source].filter(Boolean);
39
+ return parts.length > 0 ? `[${parts.join(", ")}] ` : "";
40
+ }
6
41
  var SIMILARITY_THRESHOLD = 0.55;
7
42
  function memoryRelevance(memory) {
8
43
  return memory.rawSimilarity ?? memory.similarity;
@@ -17,7 +52,7 @@ function renderMemoriesPrompt(memories) {
17
52
  const useful = memories.filter((m) => memoryRelevance(m) > SIMILARITY_THRESHOLD);
18
53
  if (useful.length === 0)
19
54
  return null;
20
- const memoryContext = useful.map((m) => `- **${m.name}** (id: ${m.id}): ${m.content.substring(0, 300)}`).join(`
55
+ const memoryContext = useful.map((m) => `- ${memoryLinePrefix(m)}**${m.name}** (id: ${m.id}): ${memorySnippet(m).substring(0, SNIPPET_CHARS)}`).join(`
21
56
  `);
22
57
  let prompt = `
23
58
 
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  getValidCodexOAuth,
3
3
  persistCodexOAuth
4
- } from "./cli-2c8eky5y.js";
4
+ } from "./cli-feh3dkah.js";
5
5
  import {
6
6
  oauthErrorHtml,
7
7
  oauthSuccessHtml
@@ -5,7 +5,7 @@ import {
5
5
  import {
6
6
  init_secret_scrubber,
7
7
  scrubSecrets
8
- } from "./cli-qt5wzq6v.js";
8
+ } from "./cli-wt7ccy4r.js";
9
9
 
10
10
  // src/providers/codex-oauth/flow.ts
11
11
  init_secret_scrubber();
@@ -0,0 +1,126 @@
1
+ import {
2
+ ACPAdapter,
3
+ grokTargetProfile,
4
+ isGrokOpenRouterModel
5
+ } from "./cli-3qn4r334.js";
6
+ import {
7
+ getOpenRouterBaseUrl
8
+ } from "./cli-3dpj7atn.js";
9
+ import {
10
+ init_src,
11
+ normalizeGrokModel
12
+ } from "./cli-zsh093hk.js";
13
+ import {
14
+ init_secret_scrubber,
15
+ registerVolatileSecret
16
+ } from "./cli-wt7ccy4r.js";
17
+
18
+ // src/providers/grok-adapter.ts
19
+ init_src();
20
+ import { mkdtemp, rm } from "node:fs/promises";
21
+ import { tmpdir } from "node:os";
22
+ import { join } from "node:path";
23
+ init_secret_scrubber();
24
+ function checkGrokCredentials(env) {
25
+ return env.XAI_API_KEY?.trim() || env.OPENROUTER_API_KEY?.trim() ? { ready: true, missing: [], satisfiedBy: "env" } : {
26
+ ready: false,
27
+ missing: ["XAI_API_KEY", "OPENROUTER_API_KEY"],
28
+ hint: "Set XAI_API_KEY (console.x.ai) or OPENROUTER_API_KEY (openrouter/<id> models) for grok."
29
+ };
30
+ }
31
+ async function installedClaudePluginNames(home) {
32
+ if (!home)
33
+ return [];
34
+ try {
35
+ const parsed = await Bun.file(join(home, ".claude", "plugins", "installed_plugins.json")).json();
36
+ const ids = Object.keys(parsed.plugins ?? {});
37
+ return [...new Set(ids.map((id) => id.split("@")[0] ?? "").filter(Boolean))];
38
+ } catch {
39
+ return [];
40
+ }
41
+ }
42
+ function grokOpenRouterModel(model, env) {
43
+ const id = model.trim();
44
+ if (!isGrokOpenRouterModel(id))
45
+ return null;
46
+ return {
47
+ id,
48
+ model: id.slice("openrouter/".length),
49
+ baseUrl: getOpenRouterBaseUrl(env),
50
+ envKey: "OPENROUTER_API_KEY"
51
+ };
52
+ }
53
+ function buildGrokConfigToml(disabledPlugins, customModel = null) {
54
+ const list = disabledPlugins.map((name) => JSON.stringify(name)).join(", ");
55
+ const modelBlock = customModel ? [
56
+ "",
57
+ `[model.${JSON.stringify(customModel.id)}]`,
58
+ `model = ${JSON.stringify(customModel.model)}`,
59
+ `base_url = ${JSON.stringify(customModel.baseUrl)}`,
60
+ `env_key = ${JSON.stringify(customModel.envKey)}`,
61
+ `api_backend = "chat_completions"`
62
+ ] : [];
63
+ return [
64
+ "[cli]",
65
+ "auto_update = false",
66
+ "",
67
+ "[compat.codex]",
68
+ "hooks = false",
69
+ "skills = false",
70
+ "",
71
+ "[plugins]",
72
+ `disabled = [${list}]`,
73
+ ...modelBlock,
74
+ ""
75
+ ].join(`
76
+ `);
77
+ }
78
+ var GROK_REQUIREMENTS_TOML = `allow_managed_hooks_only = true
79
+ `;
80
+
81
+ class GrokAdapter {
82
+ name = "grok";
83
+ traits = {
84
+ hasMcp: true,
85
+ hasToolSearch: false,
86
+ nativeSkillDiscovery: true,
87
+ hasLocalEnvironment: true,
88
+ steerModes: []
89
+ };
90
+ acp = new ACPAdapter({ providerName: "grok", target: grokTargetProfile });
91
+ async createSession(sessionConfig) {
92
+ const config = { ...sessionConfig, model: normalizeGrokModel(sessionConfig.model) };
93
+ const env = { ...process.env, ...config.env };
94
+ const customModel = grokOpenRouterModel(config.model, env);
95
+ const keyName = customModel ? "OPENROUTER_API_KEY" : "XAI_API_KEY";
96
+ const apiKey = env[keyName]?.trim();
97
+ if (!apiKey) {
98
+ throw new Error(customModel ? `grok requires OPENROUTER_API_KEY for ${customModel.id}` : "grok requires XAI_API_KEY");
99
+ }
100
+ registerVolatileSecret(apiKey, keyName);
101
+ const grokHome = await mkdtemp(join(tmpdir(), "swarm-grok-"));
102
+ try {
103
+ await Bun.write(join(grokHome, "config.toml"), buildGrokConfigToml(await installedClaudePluginNames(env.HOME), customModel), { mode: 384 });
104
+ await Bun.write(join(grokHome, "requirements.toml"), GROK_REQUIREMENTS_TOML, {
105
+ mode: 384
106
+ });
107
+ const session = await this.acp.createSession({
108
+ ...config,
109
+ env: { ...config.env, [keyName]: apiKey, GROK_HOME: grokHome }
110
+ });
111
+ session.waitForCompletion().finally(() => rm(grokHome, { recursive: true, force: true }));
112
+ return session;
113
+ } catch (error) {
114
+ await rm(grokHome, { recursive: true, force: true });
115
+ throw error;
116
+ }
117
+ }
118
+ async canResume(_sessionId) {
119
+ return false;
120
+ }
121
+ formatCommand(commandName) {
122
+ return `/${commandName}`;
123
+ }
124
+ }
125
+
126
+ export { checkGrokCredentials, installedClaudePluginNames, grokOpenRouterModel, buildGrokConfigToml, GROK_REQUIREMENTS_TOML, GrokAdapter };
@@ -4,13 +4,13 @@ import {
4
4
  getAllUsers,
5
5
  getResolvedConfig,
6
6
  getSwarmConfigs,
7
- init_db,
7
+ init_db1 as init_db,
8
8
  upsertSwarmConfig
9
- } from "./cli-0wn3ypqv.js";
9
+ } from "./cli-yshaazs1.js";
10
10
  import {
11
11
  init_secret_scrubber,
12
12
  scrubSecrets
13
- } from "./cli-qt5wzq6v.js";
13
+ } from "./cli-wt7ccy4r.js";
14
14
  import {
15
15
  __require
16
16
  } from "./cli-bc05qbss.js";
@@ -9,22 +9,22 @@ import {
9
9
  clampContextPercent,
10
10
  computeContextUsedUnified,
11
11
  getContextWindowSize
12
- } from "./cli-6behs2bt.js";
12
+ } from "./cli-32bca7nr.js";
13
13
  import {
14
14
  checkToolLoop
15
15
  } from "./cli-hp1n6zq3.js";
16
16
  import {
17
17
  Anthropic
18
- } from "./cli-ma3zvh39.js";
18
+ } from "./cli-zy7vwsne.js";
19
19
  import {
20
20
  init_runtime_model_catalog,
21
21
  init_src,
22
22
  runtimeCatalogModel
23
- } from "./cli-g3qgrzck.js";
23
+ } from "./cli-zsh093hk.js";
24
24
  import {
25
25
  init_secret_scrubber,
26
26
  scrubSecrets
27
- } from "./cli-qt5wzq6v.js";
27
+ } from "./cli-wt7ccy4r.js";
28
28
 
29
29
  // src/providers/claude-managed-adapter.ts
30
30
  init_secret_scrubber();
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  init_secret_scrubber,
3
3
  scrubSecrets
4
- } from "./cli-qt5wzq6v.js";
4
+ } from "./cli-wt7ccy4r.js";
5
5
 
6
6
  // src/providers/devin-adapter.ts
7
7
  init_secret_scrubber();