@desplega.ai/agent-swarm 2.5.4 → 2.6.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 (271) hide show
  1. package/README.md +2 -2
  2. package/dist/{acp-adapter-ek38cwsv.js → acp-adapter-dgfakfpw.js} +9 -9
  3. package/dist/{actions-92mepq03.js → actions-fbqma8aa.js} +21 -21
  4. package/dist/{amp-adapter-9gaxg015.js → amp-adapter-en0jy6hs.js} +4 -4
  5. package/dist/{app-ctn8gsgx.js → app-k8a5cgpp.js} +3 -3
  6. package/dist/{assistant-zyr5kz47.js → assistant-a16433gr.js} +29 -25
  7. package/dist/{boot-reembed-dwzfttdr.js → boot-reembed-6c1sjfnr.js} +1 -1
  8. package/dist/{boot-reembed-w75maga2.js → boot-reembed-f4nn561n.js} +1 -1
  9. package/dist/{boot-scrub-sweep-e9kq43kf.js → boot-scrub-sweep-d4w9gajf.js} +4 -4
  10. package/dist/{boot-seeds-x28v3fhb.js → boot-seeds-9bmkspyw.js} +4 -4
  11. package/dist/{claude-adapter-f0afqnne.js → claude-adapter-nys1kjxa.js} +9 -9
  12. package/dist/{claude-managed-adapter-x81a7r65.js → claude-managed-adapter-55207973.js} +2 -2
  13. package/dist/{claude-managed-setup-bqzwjd9x.js → claude-managed-setup-3cm35gey.js} +10 -3
  14. package/dist/{claude-sdk-session-7b7whkaq.js → claude-sdk-session-nw5yd8cp.js} +11 -11
  15. package/dist/{cli-c61mbdds.js → cli-03gg9pd1.js} +4 -4
  16. package/dist/{cli-kxpfx2xr.js → cli-0z1xjzwa.js} +2 -2
  17. package/dist/cli-1tem6ns9.js +894 -0
  18. package/dist/{cli-jbnn4vxb.js → cli-24j1jeeb.js} +3 -3
  19. package/dist/{cli-pzatvw94.js → cli-2sjhpsns.js} +2 -2
  20. package/dist/{cli-dew6x255.js → cli-39aet655.js} +2 -2
  21. package/dist/{cli-g1cw7xtt.js → cli-39rrw8yp.js} +1 -1
  22. package/dist/{cli-x0f2v69c.js → cli-3aqd4jaa.js} +12 -7
  23. package/dist/{cli-gbfxp48k.js → cli-3fwqy71j.js} +15 -15
  24. package/dist/{cli-7p4jxgtt.js → cli-3gfvmzht.js} +6 -6
  25. package/dist/{cli-03vpq45j.js → cli-3ndmpxxv.js} +2 -2
  26. package/dist/{cli-asq5ydm4.js → cli-4hxrf0p4.js} +131 -50
  27. package/dist/{cli-mz9afxxf.js → cli-4rf0f5vg.js} +15 -3
  28. package/dist/{cli-k4tjsdx9.js → cli-5rj83bam.js} +272 -195
  29. package/dist/{cli-sbwsxvtd.js → cli-5sckpqcx.js} +2 -2
  30. package/dist/{cli-cz5nmdxt.js → cli-683y0b3a.js} +2 -2
  31. package/dist/{cli-ethgy7ha.js → cli-6y51ryva.js} +2 -2
  32. package/dist/{cli-n4c8e3s5.js → cli-708wdy32.js} +1 -1
  33. package/dist/{cli-pasyvjmm.js → cli-737pyqxr.js} +1 -1
  34. package/dist/{cli-gx4rm0qx.js → cli-7enjwya9.js} +1 -1
  35. package/dist/{cli-6x9ma5w5.js → cli-803188pb.js} +1 -1
  36. package/dist/{cli-hh5we352.js → cli-9abdgn5t.js} +7 -7
  37. package/dist/{cli-ff1tm9n9.js → cli-a2rr0fmg.js} +1 -1
  38. package/dist/{cli-c952c7ac.js → cli-a34pr3w1.js} +2 -2
  39. package/dist/{cli-s682zgqz.js → cli-abkm71vr.js} +1 -1
  40. package/dist/{cli-mmhj8vd7.js → cli-ag2yrnt5.js} +11 -2
  41. package/dist/{cli-bvpgr9ny.js → cli-aj8djyqt.js} +5 -5
  42. package/dist/{cli-gwhjmh8g.js → cli-art7c1zh.js} +5 -5
  43. package/dist/{cli-5bnsc0e1.js → cli-az25fn5f.js} +4 -4
  44. package/dist/{cli-9s05422w.js → cli-bqztfyve.js} +1 -1
  45. package/dist/{cli-bn0rewsy.js → cli-c081bj3b.js} +2 -2
  46. package/dist/{cli-1r5ad7j5.js → cli-c2habvsf.js} +12 -12
  47. package/dist/{cli-64mh9mf3.js → cli-ca6banwz.js} +69 -17
  48. package/dist/{cli-25n3mv5d.js → cli-cz37jqss.js} +5 -5
  49. package/dist/{cli-6n8axjv1.js → cli-d2dpf95n.js} +2 -2
  50. package/dist/{cli-gn5af0x5.js → cli-emhjcj2y.js} +11 -11
  51. package/dist/{cli-6a1xg1p7.js → cli-esakngh8.js} +2 -2
  52. package/dist/{cli-ha9rmwgq.js → cli-fb8m699c.js} +2 -2
  53. package/dist/{cli-4b2z6n0m.js → cli-ffvsj2qw.js} +17 -8
  54. package/dist/{cli-abs8ndtr.js → cli-g20jjwt4.js} +26 -26
  55. package/dist/{cli-jb30dzvk.js → cli-g8ka5j4j.js} +446 -164
  56. package/dist/{cli-19202kew.js → cli-gf95q3bm.js} +5 -5
  57. package/dist/{cli-eftzyh9y.js → cli-gnsb1zxa.js} +2 -2
  58. package/dist/{cli-nwyw3zhg.js → cli-gxee0bqa.js} +1 -1
  59. package/dist/{cli-e42vss7b.js → cli-hfeb68z4.js} +5 -5
  60. package/dist/{cli-g9vd9ece.js → cli-k21gx5ht.js} +14 -16
  61. package/dist/{cli-tsma7p8v.js → cli-kf4jree9.js} +2 -2
  62. package/dist/{cli-dabehxhp.js → cli-kt907da6.js} +1 -1
  63. package/dist/{cli-wx2nj19m.js → cli-m5a9m0ak.js} +6 -6
  64. package/dist/{cli-621ce7kw.js → cli-m70bajzr.js} +3 -3
  65. package/dist/{cli-9j129brq.js → cli-mtnj4fwa.js} +6 -6
  66. package/dist/{cli-xzfq4at3.js → cli-mvjz5an3.js} +15 -11
  67. package/dist/{cli-277c31dw.js → cli-n7asmce6.js} +225 -3
  68. package/dist/{cli-xtrz6bzs.js → cli-nn6vx2mq.js} +1 -1
  69. package/dist/{cli-2655k16q.js → cli-nq677csy.js} +1 -1
  70. package/dist/{cli-0shx9j93.js → cli-pfk92eqz.js} +2 -2
  71. package/dist/{cli-wghjkr0e.js → cli-sqma6vw1.js} +10 -7
  72. package/dist/{cli-nzfnt2gs.js → cli-tf1n0r0b.js} +1 -1
  73. package/dist/{cli-qqzmjxkf.js → cli-v49fkghp.js} +11 -6
  74. package/dist/{cli-x77gen2p.js → cli-w2656ka1.js} +7 -7
  75. package/dist/{cli-5kqnemen.js → cli-yvy48785.js} +1 -1
  76. package/dist/{cli-m4ecdxvz.js → cli-zqne1qcj.js} +7 -7
  77. package/dist/cli.js +17 -17
  78. package/dist/{codex-adapter-wch12q99.js → codex-adapter-d95q4qsn.js} +7 -7
  79. package/dist/{codex-login-rn7c5gxt.js → codex-login-8cg0vhf2.js} +1 -1
  80. package/dist/{codex-session-runner-41pfcr95.js → codex-session-runner-gdwd8h0c.js} +8 -8
  81. package/dist/{commands-9849dkj6.js → commands-jqmgk54b.js} +2 -2
  82. package/dist/{controller-ja0sd95p.js → controller-z3jq589f.js} +4 -4
  83. package/dist/{controllers-connect-xp05dj6x.js → controllers-connect-r2za39ef.js} +23 -23
  84. package/dist/{cursor-adapter-623qxqew.js → cursor-adapter-4mr4jgkw.js} +2 -2
  85. package/dist/{db-47vj40dy.js → db-ppv2tze7.js} +3 -3
  86. package/dist/{db-w759qmx0.js → db-w36wwb5g.js} +4 -2
  87. package/dist/{devin-adapter-4ycy4vrf.js → devin-adapter-byen2cxt.js} +1 -1
  88. package/dist/{dispatcher-7b8e4z2j.js → dispatcher-pv5h77vf.js} +20 -20
  89. package/dist/{docker-s84hjs91.js → docker-fdzyewpz.js} +2 -2
  90. package/dist/{dsh-adapter-2ezw3xea.js → dsh-adapter-d4pdpb3r.js} +2 -2
  91. package/dist/{e2b-9gkdhm3c.js → e2b-222hsajc.js} +2 -2
  92. package/dist/{e2b-cjtf8k1z.js → e2b-fn3zacvt.js} +2 -2
  93. package/dist/{easter-egg-3d-e4qv8dxj.js → easter-egg-3d-4sp4dvmc.js} +1 -1
  94. package/dist/{event-bus-3z78ep5n.js → event-bus-pghg8hqy.js} +1 -1
  95. package/dist/{execute-0xpz8950.js → execute-jev839y1.js} +1 -1
  96. package/dist/{external-channel-e2s028da.js → external-channel-y6nkzhnn.js} +2 -2
  97. package/dist/{grok-adapter-ys7gaqee.js → grok-adapter-t08b9ntm.js} +10 -10
  98. package/dist/handlers-eqsnmv95.js +41 -0
  99. package/dist/{heartbeat-w3mntghj.js → heartbeat-vn31xwdk.js} +23 -23
  100. package/dist/{hook-g7kvv6x9.js → hook-6d0zbvvt.js} +6 -6
  101. package/dist/{hook-3jjywnpb.js → hook-cpjs8q51.js} +8 -8
  102. package/dist/{http-tkp7d4kb.js → http-9c6medda.js} +856 -99
  103. package/dist/{index-xdaahthb.js → index-38t35h0n.js} +20 -20
  104. package/dist/{index-3n8m9ea2.js → index-g6k9tctj.js} +1 -1
  105. package/dist/{index-1ef1myq2.js → index-k0yt1tvq.js} +20 -20
  106. package/dist/{index-31ceyf42.js → index-pkma1yf8.js} +1 -1
  107. package/dist/{index-q7m26kvs.js → index-qhjf2htm.js} +13 -10
  108. package/dist/index-yqgbfgaj.js +43 -0
  109. package/dist/{keepalive-v4ta8wgg.js → keepalive-em0117bp.js} +4 -4
  110. package/dist/lead-23e7z59t.js +79 -0
  111. package/dist/{maintenance-84n1ex21.js → maintenance-kbme3qy9.js} +1 -1
  112. package/dist/{oauth-refresh-sweep-vjnnandw.js → oauth-refresh-sweep-xysj4yse.js} +3 -3
  113. package/dist/{onboard-sfmpe4np.js → onboard-p6q0vz97.js} +3 -3
  114. package/dist/{opencode-adapter-jmpst4q4.js → opencode-adapter-esv3k9yn.js} +7 -7
  115. package/dist/{otel-impl-v6cc0zve.js → otel-impl-54qhqh1z.js} +2 -2
  116. package/dist/{pi-mono-adapter-fk8fkcf6.js → pi-mono-adapter-mymbwhj0.js} +10 -10
  117. package/dist/{pricing-refresh-fsk1e1zc.js → pricing-refresh-yb75wv33.js} +3 -3
  118. package/dist/{rbac-roles-prmkdnkw.js → rbac-roles-1vp2mw4p.js} +2 -2
  119. package/dist/{rbac-roles-zxmxqa39.js → rbac-roles-dexhc9x8.js} +1 -1
  120. package/dist/render-v2-tjay5hhf.js +16 -0
  121. package/dist/{resume-frdtgfa0.js → resume-8ayf37g5.js} +9 -9
  122. package/dist/{runtime-bt5pkpm1.js → runtime-hqe5cqcd.js} +1 -1
  123. package/dist/{session-access-fpez4y5q.js → session-access-fdhp987s.js} +4 -4
  124. package/dist/session-source-backfill-qgtc86z1.js +110 -0
  125. package/dist/{setup-mq6m3m8q.js → setup-4rrmqcq3.js} +1 -1
  126. package/dist/{virtual-modules-mnfbh5mr.js → virtual-modules-52km00d6.js} +2 -2
  127. package/dist/{work-objects-kfahhjsq.js → work-objects-p28fgd70.js} +23 -23
  128. package/dist/worker-e3w7vye1.js +79 -0
  129. package/dist/{x-pbpezr0s.js → x-wxrzvzx8.js} +2 -2
  130. package/openapi.json +1274 -32
  131. package/package.json +1 -1
  132. package/src/assets/source-key.ts +95 -0
  133. package/src/be/db/api-keys.ts +80 -0
  134. package/src/be/db/session-labels.ts +28 -0
  135. package/src/be/db/session-moves.ts +5 -6
  136. package/src/be/db/session-tree.ts +153 -14
  137. package/src/be/db/tasks/read.ts +11 -0
  138. package/src/be/db/tasks/write.ts +6 -1
  139. package/src/be/db/workflow-runs.ts +183 -1
  140. package/src/be/db-retention.ts +61 -6
  141. package/src/be/db.ts +59 -114
  142. package/src/be/memory/providers/openai-embedding.ts +5 -1
  143. package/src/be/migrations/244_api_key_validation.sql +4 -0
  144. package/src/be/onboarding.ts +4 -0
  145. package/src/be/scripts/typecheck.ts +1 -1
  146. package/src/be/session-source-backfill.ts +163 -0
  147. package/src/be/swarm-config-guard.ts +1 -0
  148. package/src/comb/review-batch.ts +28 -1
  149. package/src/comb/templates.ts +7 -2
  150. package/src/commands/claude-managed-setup.ts +7 -1
  151. package/src/commands/credential-refresh.ts +76 -1
  152. package/src/commands/credential-wait.ts +2 -2
  153. package/src/commands/provider-credentials.ts +210 -170
  154. package/src/commands/runner.ts +25 -4
  155. package/src/extensions/apply-task-create.ts +8 -1
  156. package/src/extensions/contract-types.generated.ts +1 -1
  157. package/src/extensions/contract.ts +5 -0
  158. package/src/http/all-routes.ts +2 -0
  159. package/src/http/api-keys.ts +53 -0
  160. package/src/http/assets.ts +15 -0
  161. package/src/http/codex-oauth-accounts.ts +191 -0
  162. package/src/http/comb.ts +15 -2
  163. package/src/http/config.ts +1 -1
  164. package/src/http/core.ts +6 -0
  165. package/src/http/fleet-benchmark.ts +5 -2
  166. package/src/http/index.ts +11 -0
  167. package/src/http/integrations.ts +5 -1
  168. package/src/http/kv.ts +8 -3
  169. package/src/http/onboarding.ts +6 -1
  170. package/src/http/pool-keys.ts +354 -0
  171. package/src/http/sessions.ts +37 -12
  172. package/src/http/stats.ts +1 -0
  173. package/src/http/status.ts +26 -12
  174. package/src/http/tasks.ts +3 -0
  175. package/src/http/used-by.ts +7 -2
  176. package/src/http/workflows.ts +78 -9
  177. package/src/integrations/chat-sdk/inbound.ts +27 -0
  178. package/src/kv-reserved-namespaces.ts +19 -0
  179. package/src/providers/acp-targets.ts +1 -1
  180. package/src/providers/amp-adapter.ts +1 -1
  181. package/src/providers/claude-adapter.ts +5 -1
  182. package/src/providers/claude-managed-adapter.ts +16 -9
  183. package/src/providers/codex-adapter.ts +71 -11
  184. package/src/scheduler/scheduler.ts +3 -2
  185. package/src/scripts-runtime/swarm-sdk.ts +7 -1
  186. package/src/scripts-runtime/types/stdlib.d.ts +1 -1
  187. package/src/scripts-runtime/types/swarm-extension.d.ts +17 -8
  188. package/src/scripts-runtime/types/swarm-sdk.d.ts +1 -1
  189. package/src/slack/assistant.ts +7 -0
  190. package/src/slack/channel-labels.ts +74 -0
  191. package/src/slack/handlers.ts +8 -0
  192. package/src/slack/inbound-files.ts +5 -2
  193. package/src/slack/thread-buffer.ts +4 -0
  194. package/src/tasks/sibling-awareness.ts +12 -3
  195. package/src/telemetry-context.ts +5 -6
  196. package/src/telemetry-identity.ts +3 -3
  197. package/src/tests/api-keys-validation.test.ts +170 -0
  198. package/src/tests/claude-managed-adapter.test.ts +46 -0
  199. package/src/tests/claude-routes-e2e.test.ts +7 -2
  200. package/src/tests/codex-credential-pools.test.ts +120 -0
  201. package/src/tests/codex-gateway-route.test.ts +165 -0
  202. package/src/tests/codex-oauth-accounts.test.ts +357 -0
  203. package/src/tests/comb-review-batch.test.ts +63 -2
  204. package/src/tests/config-pool-keys.test.ts +533 -0
  205. package/src/tests/credential-check.test.ts +290 -2
  206. package/src/tests/credential-refresh.test.ts +172 -1
  207. package/src/tests/db-retention.test.ts +9 -3
  208. package/src/tests/db-task-read-contract.test.ts +1 -0
  209. package/src/tests/db-task-write-contract.test.ts +1 -3
  210. package/src/tests/docs-index-footprint.test.js +3 -3
  211. package/src/tests/extensions-pre-task.test.ts +53 -1
  212. package/src/tests/fixtures/extensions/record-task-create/hooks.ts +9 -0
  213. package/src/tests/fixtures/extensions/record-task-create/manifest.json +7 -0
  214. package/src/tests/fleet-benchmark.test.ts +8 -0
  215. package/src/tests/get-workflow-run-tool.test.ts +98 -0
  216. package/src/tests/integrations-http.test.ts +32 -2
  217. package/src/tests/internal-ai/complete-structured.test.ts +37 -1
  218. package/src/tests/internal-ai/credentials.test.ts +23 -0
  219. package/src/tests/kv-http.test.ts +32 -0
  220. package/src/tests/kv-tool.test.ts +25 -0
  221. package/src/tests/multi-runtime-registration.test.ts +12 -12
  222. package/src/tests/onboarding.test.ts +108 -1
  223. package/src/tests/openai-embedding-credentials.test.ts +35 -0
  224. package/src/tests/openrouter-attribution-call-sites.test.ts +2 -2
  225. package/src/tests/org-website.test.ts +36 -0
  226. package/src/tests/provider-key-probes.test.ts +181 -0
  227. package/src/tests/rbac-e2e-helpers.test.ts +88 -1
  228. package/src/tests/rbac-e2e-helpers.ts +36 -11
  229. package/src/tests/script-connections.test.ts +2 -0
  230. package/src/tests/script-runs-retention.test.ts +212 -0
  231. package/src/tests/sdk-allowlist.test.ts +39 -0
  232. package/src/tests/session-source-backfill.test.ts +429 -0
  233. package/src/tests/session-source-keys.test.ts +236 -0
  234. package/src/tests/session-source-labels.test.ts +419 -0
  235. package/src/tests/sessions-detail-batch.test.ts +2 -0
  236. package/src/tests/sessions-move.test.ts +131 -0
  237. package/src/tests/sessions-tree.test.ts +299 -2
  238. package/src/tests/slack-inbound-files.test.ts +103 -23
  239. package/src/tests/status.test.ts +101 -18
  240. package/src/tests/tasks-workflow-run-filter.test.ts +146 -0
  241. package/src/tests/test-net.ts +31 -0
  242. package/src/tests/transcription.test.ts +8 -0
  243. package/src/tests/used-by-route.test.ts +11 -0
  244. package/src/tests/workflow-cascade-cancel.test.ts +172 -0
  245. package/src/tests/workflow-http-v2.test.ts +131 -0
  246. package/src/tests/workflow-step-order.test.ts +92 -0
  247. package/src/tests/workflow-sub-workflow.test.ts +30 -0
  248. package/src/tools/get-tasks.ts +8 -0
  249. package/src/tools/kv/kv-read-auth.ts +4 -2
  250. package/src/tools/task-action.ts +1 -1
  251. package/src/tools/workflows/get-workflow-run.ts +14 -4
  252. package/src/types.ts +24 -0
  253. package/src/utils/company-profile.ts +51 -1
  254. package/src/utils/credentials.ts +5 -2
  255. package/src/utils/internal-ai/complete-structured.ts +5 -0
  256. package/src/utils/internal-ai/credentials.ts +4 -3
  257. package/src/utils/provider-key-probes.ts +328 -0
  258. package/src/utils/transcription.ts +4 -1
  259. package/src/workflows/executors/sub-workflow.ts +8 -1
  260. package/templates/ai-toolbox.manifest.json +2 -2
  261. package/templates/skills/researching/content.md +2 -0
  262. package/templates/skills/swarm-scripts/SKILL.md +1 -0
  263. package/templates/skills/swarm-scripts/content.md +1 -0
  264. package/dist/cli-7421jzsw.js +0 -84
  265. package/dist/cli-e45e4m6b.js +0 -413
  266. package/dist/cli-zw88zjba.js +0 -307
  267. package/dist/handlers-wy1dr6ja.js +0 -41
  268. package/dist/index-nmm79qgr.js +0 -43
  269. package/dist/lead-sawnyqxk.js +0 -79
  270. package/dist/render-v2-pjwxvnkw.js +0 -12
  271. package/dist/worker-v5e5rxj3.js +0 -79
@@ -1,307 +0,0 @@
1
- import {
2
- modelFamilyOf,
3
- windowForModelFamily,
4
- init_model_rate_limit_windows
5
- } from "./cli-7421jzsw.js";
6
- import {
7
- routeCredentialStatus,
8
- deriveDefaultRoute,
9
- init_src
10
- } from "./cli-e45e4m6b.js";
11
- import {
12
- openAICompatibleProviders,
13
- providerKeyVars,
14
- providerForModel,
15
- providerForKeyVar,
16
- init_src2
17
- } from "./cli-nwyw3zhg.js";
18
- import {
19
- __esm
20
- } from "./cli-242037k3.js";
21
-
22
- // src/utils/credentials.ts
23
- import { existsSync } from "node:fs";
24
- function normalizeProviderKeyAliases(env) {
25
- for (const provider of openAICompatibleProviders()) {
26
- if (env[provider.envVar]?.trim())
27
- continue;
28
- const alias = provider.aliasEnvVars.find((name) => env[name]?.trim());
29
- if (alias)
30
- env[provider.envVar] = env[alias];
31
- }
32
- }
33
- function getModelAwareCredentialVars(provider, model) {
34
- const base = PROVIDER_CREDENTIAL_VARS[provider];
35
- if (!base)
36
- return CREDENTIAL_POOL_VARS;
37
- if (provider === "dsh" && model) {
38
- return model.startsWith("openrouter/") ? ["OPENROUTER_API_KEY"] : ["DEEPSEEK_API_KEY"];
39
- }
40
- if (provider === "grok" && model) {
41
- return model.startsWith("openrouter/") ? ["OPENROUTER_API_KEY"] : ["XAI_API_KEY"];
42
- }
43
- if (!SLASH_MODEL_PROVIDERS.has(provider) || !model)
44
- return base;
45
- const direct = providerForModel(model);
46
- if (direct)
47
- return [direct.envVar];
48
- if (model.includes("/")) {
49
- return base.filter((v) => v !== "OPENAI_API_KEY");
50
- }
51
- return base;
52
- }
53
- function deriveProviderFromKeyType(keyType) {
54
- if (providerForKeyVar(keyType))
55
- return "pi";
56
- switch (keyType) {
57
- case "CLAUDE_CODE_OAUTH_TOKEN":
58
- case "ANTHROPIC_API_KEY":
59
- return "claude";
60
- case "OPENROUTER_API_KEY":
61
- return "pi";
62
- case "OPENAI_API_KEY":
63
- case "CODEX_OAUTH":
64
- return "codex";
65
- case "DEEPSEEK_API_KEY":
66
- return "dsh";
67
- case "AMP_API_KEY":
68
- return "amp";
69
- case "CURSOR_API_KEY":
70
- return "cursor";
71
- case "XAI_API_KEY":
72
- return "grok";
73
- case "DEVIN_API_KEY":
74
- return "devin";
75
- default:
76
- return "claude";
77
- }
78
- }
79
- function isJsonObject(value) {
80
- const trimmed = value.trim();
81
- if (!trimmed.startsWith("{") || !trimmed.endsWith("}"))
82
- return false;
83
- try {
84
- const parsed = JSON.parse(trimmed);
85
- return typeof parsed === "object" && parsed !== null && !Array.isArray(parsed);
86
- } catch {
87
- return false;
88
- }
89
- }
90
- function splitCredentialPool(value) {
91
- return isJsonObject(value) ? [value.trim()] : value.split(",").map((s) => s.trim()).filter(Boolean);
92
- }
93
- function selectCredential(value, availableIndices, keyType = "ANTHROPIC_API_KEY") {
94
- const credentials = splitCredentialPool(value);
95
- if (credentials.length <= 1) {
96
- const selected = value.trim();
97
- const isRateLimitFallback = availableIndices !== undefined && availableIndices.length === 0;
98
- return {
99
- selected,
100
- index: 0,
101
- total: 1,
102
- keySuffix: selected.slice(-5),
103
- keyType,
104
- isRateLimitFallback
105
- };
106
- }
107
- let index;
108
- let isRateLimitFallback = false;
109
- if (availableIndices && availableIndices.length > 0) {
110
- const validIndices = availableIndices.filter((i) => i >= 0 && i < credentials.length);
111
- if (validIndices.length > 0) {
112
- index = validIndices[Math.floor(Math.random() * validIndices.length)];
113
- } else {
114
- index = Math.floor(Math.random() * credentials.length);
115
- isRateLimitFallback = true;
116
- }
117
- } else if (availableIndices && availableIndices.length === 0) {
118
- index = Math.floor(Math.random() * credentials.length);
119
- isRateLimitFallback = true;
120
- } else {
121
- index = Math.floor(Math.random() * credentials.length);
122
- }
123
- const selected = credentials[index];
124
- return {
125
- selected,
126
- index,
127
- total: credentials.length,
128
- keySuffix: selected.slice(-5),
129
- keyType,
130
- isRateLimitFallback
131
- };
132
- }
133
- function validateClaudeCredentials(env) {
134
- const route = deriveDefaultRoute("claude", env);
135
- if (!route)
136
- throw new Error(`No Claude credentials found. ${CLAUDE_CREDENTIALS_HINT}`);
137
- const status = routeCredentialStatus(route, env);
138
- if (!status.ready)
139
- throw new Error(`No Claude credentials found. ${status.hint}`);
140
- return CLAUDE_CREDENTIAL_TYPE_BY_PROVIDER[route.provider] ?? route.provider;
141
- }
142
- function openAICompatibleKeyLabels() {
143
- return openAICompatibleProviders().map((p) => p.aliasEnvVars.length > 0 ? `${p.envVar} (or ${p.aliasEnvVars.join(" or ")})` : p.envVar);
144
- }
145
- function validateOpencodeCredentials(env) {
146
- if (env.OPENROUTER_API_KEY)
147
- return "openrouter_api_key";
148
- if (env.ANTHROPIC_API_KEY)
149
- return "anthropic_api_key";
150
- if (env.OPENAI_API_KEY)
151
- return "openai_api_key";
152
- const direct = openAICompatibleProviders().find((p) => providerKeyVars(p).some((n) => env[n]));
153
- if (direct)
154
- return direct.envVar.toLowerCase();
155
- const authFile = `${process.env.HOME ?? "/root"}/.local/share/opencode/auth.json`;
156
- if (existsSync(authFile))
157
- return "auth_file";
158
- throw new Error(`No opencode credentials found. Set OPENROUTER_API_KEY, ANTHROPIC_API_KEY, OPENAI_API_KEY, ${openAICompatibleKeyLabels().map((label) => `${label}, `).join("")}or provide ~/.local/share/opencode/auth.json.`);
159
- }
160
- async function fetchAvailableIndices(env, apiUrl, apiKey, poolVars = CREDENTIAL_POOL_VARS, modelFamily) {
161
- const availableIndicesMap = {};
162
- const window = modelFamily ? windowForModelFamily(modelFamily) : undefined;
163
- const modelParam = window ? `&model=${encodeURIComponent(modelFamily)}` : "";
164
- for (const envVar of poolVars) {
165
- const val = env[envVar];
166
- if (val) {
167
- const totalKeys = val.includes(",") ? val.split(",").filter((s) => s.trim()).length : 1;
168
- try {
169
- const resp = await fetch(`${apiUrl}/api/keys/available?keyType=${encodeURIComponent(envVar)}&totalKeys=${totalKeys}${modelParam}`, { headers: { Authorization: `Bearer ${apiKey}` } });
170
- if (resp.ok) {
171
- const data = await resp.json();
172
- availableIndicesMap[envVar] = {
173
- availableIndices: data.availableIndices,
174
- modelBlockedIndices: data.modelBlockedIndices,
175
- earliestModelResetAt: data.earliestModelResetAt,
176
- seatBlockedIndices: data.seatBlockedIndices
177
- };
178
- if (data.availableIndices.length < totalKeys) {
179
- console.log(`[credentials] ${envVar}: ${data.availableIndices.length}/${totalKeys} keys available (${totalKeys - data.availableIndices.length} rate-limited)`);
180
- }
181
- }
182
- } catch {}
183
- }
184
- }
185
- return availableIndicesMap;
186
- }
187
- async function resolveCredentialPools(env, opts) {
188
- const providerVars = opts?.provider ? getModelAwareCredentialVars(opts.provider, opts.model) : CREDENTIAL_POOL_VARS;
189
- const modelFamily = modelFamilyOf(opts?.model);
190
- const window = modelFamily ? windowForModelFamily(modelFamily) : undefined;
191
- const availableIndicesMap = opts?.availableIndicesMap ?? (opts?.apiUrl && opts?.apiKey ? await fetchAvailableIndices(env, opts.apiUrl, opts.apiKey, providerVars, modelFamily) : undefined);
192
- const nowMs = Date.now();
193
- const selections = [];
194
- for (const envVar of providerVars) {
195
- const val = env[envVar];
196
- if (val) {
197
- const info = availableIndicesMap?.[envVar];
198
- let available = info?.availableIndices;
199
- let modelBlockedCount = info?.modelBlockedIndices?.length ?? 0;
200
- if (available && window && opts?.localBlocks) {
201
- const beforeCount = available.length;
202
- available = available.filter((i) => {
203
- const blockedUntilMs = opts.localBlocks?.get(`${envVar}:${i}:${window}`);
204
- return blockedUntilMs === undefined || blockedUntilMs <= nowMs;
205
- });
206
- modelBlockedCount += beforeCount - available.length;
207
- }
208
- const seatBlockedIndices = info?.seatBlockedIndices ?? [];
209
- const seatBlockedCount = seatBlockedIndices.length;
210
- let seatFallbackIndices;
211
- if (opts?.enforceModelCapacity && modelFamily && available && available.length === 0) {
212
- const policy = (env.MODEL_WINDOW_EXHAUSTED_POLICY ?? "fail").trim().toLowerCase();
213
- const windowExhausted = window !== undefined && modelBlockedCount > 0 && policy !== "fallback";
214
- if (seatBlockedCount > 0) {
215
- seatFallbackIndices = splitCredentialPool(val).map((_, i) => i).filter((i) => !seatBlockedIndices.includes(i));
216
- }
217
- if (windowExhausted || seatFallbackIndices?.length === 0) {
218
- throw new ModelWindowExhaustedError({
219
- model: modelFamily,
220
- window: window ?? "",
221
- earliestResetAt: info?.earliestModelResetAt ?? null,
222
- keyType: envVar,
223
- seatBlockedCount,
224
- modelBlockedCount
225
- });
226
- }
227
- }
228
- const result = seatFallbackIndices ? { ...selectCredential(val, seatFallbackIndices, envVar), isRateLimitFallback: true } : selectCredential(val, available, envVar);
229
- env[envVar] = result.selected;
230
- const availInfo = available ? ` (${available.length} available of ${result.total})` : "";
231
- console.log(`[credentials] Selected ${envVar} credential ${result.index + 1}/${result.total}${availInfo} [...${result.keySuffix}]`);
232
- selections.push({
233
- ...result,
234
- modelBlockedIndices: info?.modelBlockedIndices,
235
- earliestModelResetAt: info?.earliestModelResetAt,
236
- seatBlockedIndices: info?.seatBlockedIndices
237
- });
238
- }
239
- }
240
- return selections;
241
- }
242
- var CREDENTIAL_POOL_VARS, PROVIDER_CREDENTIAL_VARS, SLASH_MODEL_PROVIDERS, MODEL_LABELS, ModelWindowExhaustedError, CLAUDE_CREDENTIALS_HINT = "Set CLAUDE_CODE_OAUTH_TOKEN or ANTHROPIC_API_KEY, or route Claude Code through a gateway (ANTHROPIC_BASE_URL + ANTHROPIC_AUTH_TOKEN or ANTHROPIC_API_KEY), Microsoft Foundry (CLAUDE_CODE_USE_FOUNDRY), Amazon Bedrock (CLAUDE_CODE_USE_BEDROCK), or Google Vertex AI (CLAUDE_CODE_USE_VERTEX).", CLAUDE_CREDENTIAL_TYPE_BY_PROVIDER;
243
- var init_credentials = __esm(() => {
244
- init_src2();
245
- init_src();
246
- init_model_rate_limit_windows();
247
- CREDENTIAL_POOL_VARS = [
248
- "CLAUDE_CODE_OAUTH_TOKEN",
249
- "ANTHROPIC_API_KEY",
250
- "OPENROUTER_API_KEY",
251
- "OPENAI_API_KEY",
252
- "CODEX_OAUTH",
253
- "DEVIN_API_KEY",
254
- "DEEPSEEK_API_KEY",
255
- "AMP_API_KEY",
256
- "CURSOR_API_KEY",
257
- "XAI_API_KEY",
258
- ...openAICompatibleProviders().map((p) => p.envVar)
259
- ];
260
- PROVIDER_CREDENTIAL_VARS = {
261
- claude: ["CLAUDE_CODE_OAUTH_TOKEN", "ANTHROPIC_API_KEY"],
262
- pi: ["OPENROUTER_API_KEY", "ANTHROPIC_API_KEY", "OPENAI_API_KEY"],
263
- codex: ["OPENAI_API_KEY", "CODEX_OAUTH"],
264
- devin: ["DEVIN_API_KEY"],
265
- dsh: ["OPENROUTER_API_KEY", "DEEPSEEK_API_KEY"],
266
- amp: ["AMP_API_KEY"],
267
- cursor: ["CURSOR_API_KEY"],
268
- grok: ["XAI_API_KEY", "OPENROUTER_API_KEY"],
269
- opencode: ["OPENROUTER_API_KEY", "ANTHROPIC_API_KEY", "OPENAI_API_KEY"]
270
- };
271
- SLASH_MODEL_PROVIDERS = new Set(["opencode", "pi"]);
272
- MODEL_LABELS = {
273
- fable: "Fable",
274
- opus: "Opus",
275
- sonnet: "Sonnet",
276
- haiku: "Haiku"
277
- };
278
- ModelWindowExhaustedError = class ModelWindowExhaustedError extends Error {
279
- model;
280
- window;
281
- earliestResetAt;
282
- keyType;
283
- seatBlockedCount;
284
- modelBlockedCount;
285
- constructor(opts) {
286
- const modelLabel = MODEL_LABELS[opts.model];
287
- const seatBlockedCount = opts.seatBlockedCount ?? 0;
288
- const modelBlockedCount = opts.modelBlockedCount ?? 0;
289
- const windowClause = modelBlockedCount > 0 && opts.earliestResetAt ? `${modelBlockedCount} keys have the ${modelLabel} window exhausted until ${opts.earliestResetAt}` : `${modelBlockedCount} keys have the ${modelLabel} window exhausted`;
290
- super(seatBlockedCount > 0 ? `No ${opts.keyType} key can run ${modelLabel}: ${seatBlockedCount} keys are on a seat without ${modelLabel}, ${windowClause}. Re-dispatch with another model or modelTier.` : `No ${opts.keyType} key has ${modelLabel} capacity until ${opts.earliestResetAt ?? "unknown"}. Re-dispatch with another model or modelTier.`);
291
- this.name = "ModelWindowExhaustedError";
292
- this.model = opts.model;
293
- this.window = opts.window;
294
- this.earliestResetAt = opts.earliestResetAt;
295
- this.keyType = opts.keyType;
296
- this.seatBlockedCount = seatBlockedCount;
297
- this.modelBlockedCount = modelBlockedCount;
298
- }
299
- };
300
- CLAUDE_CREDENTIAL_TYPE_BY_PROVIDER = {
301
- "claude-subscription": "oauth",
302
- anthropic: "api_key",
303
- "anthropic-gateway": "gateway"
304
- };
305
- });
306
-
307
- export { normalizeProviderKeyAliases, deriveProviderFromKeyType, ModelWindowExhaustedError, splitCredentialPool, selectCredential, CLAUDE_CREDENTIALS_HINT, validateClaudeCredentials, openAICompatibleKeyLabels, validateOpencodeCredentials, resolveCredentialPools, init_credentials };
@@ -1,41 +0,0 @@
1
- import {
2
- isUserAllowed2,
3
- registerMessageHandler2
4
- } from "./cli-xzfq4at3.js";
5
- import"./cli-wghjkr0e.js";
6
- import"./cli-jbnn4vxb.js";
7
- import"./cli-asq5ydm4.js";
8
- import"./cli-pasyvjmm.js";
9
- import"./cli-9s05422w.js";
10
- import"./cli-qz93y3x5.js";
11
- import"./cli-3h26v7yj.js";
12
- import"./cli-bvpgr9ny.js";
13
- import"./cli-7p4jxgtt.js";
14
- import"./cli-3ggwdtb0.js";
15
- import"./cli-tsma7p8v.js";
16
- import"./cli-c61mbdds.js";
17
- import"./cli-sbwsxvtd.js";
18
- import"./cli-g9ypd5en.js";
19
- import"./cli-x0f2v69c.js";
20
- import"./cli-gbfxp48k.js";
21
- import"./cli-qqzmjxkf.js";
22
- import"./cli-kxpfx2xr.js";
23
- import"./cli-e8xyjvfc.js";
24
- import"./cli-gwhjmh8g.js";
25
- import"./cli-13p25grh.js";
26
- import"./cli-0adyhvq2.js";
27
- import"./cli-abs8ndtr.js";
28
- import"./cli-eftzyh9y.js";
29
- import"./cli-19202kew.js";
30
- import"./cli-6a1xg1p7.js";
31
- import"./cli-rycdaj0a.js";
32
- import"./cli-445c1vp7.js";
33
- import"./cli-kvzgak7c.js";
34
- import"./cli-2nf3b08t.js";
35
- import"./cli-ff1tm9n9.js";
36
- import"./cli-jb30dzvk.js";
37
- import"./cli-dabehxhp.js";
38
- export {
39
- isUserAllowed2 as isUserAllowed,
40
- registerMessageHandler2 as registerMessageHandler
41
- };
@@ -1,43 +0,0 @@
1
- import"./cli-ns59dc6r.js";
2
- import {
3
- startHeartbeat2,
4
- stopHeartbeat2
5
- } from "./cli-gn5af0x5.js";
6
- import"./cli-1r5ad7j5.js";
7
- import"./cli-6n8axjv1.js";
8
- import"./cli-asq5ydm4.js";
9
- import"./cli-pasyvjmm.js";
10
- import"./cli-9s05422w.js";
11
- import"./cli-qz93y3x5.js";
12
- import"./cli-3h26v7yj.js";
13
- import"./cli-bvpgr9ny.js";
14
- import"./cli-7p4jxgtt.js";
15
- import"./cli-3ggwdtb0.js";
16
- import"./cli-tsma7p8v.js";
17
- import"./cli-c61mbdds.js";
18
- import"./cli-sbwsxvtd.js";
19
- import"./cli-g9ypd5en.js";
20
- import"./cli-x0f2v69c.js";
21
- import"./cli-gbfxp48k.js";
22
- import"./cli-qqzmjxkf.js";
23
- import"./cli-kxpfx2xr.js";
24
- import"./cli-e8xyjvfc.js";
25
- import"./cli-gwhjmh8g.js";
26
- import"./cli-13p25grh.js";
27
- import"./cli-0adyhvq2.js";
28
- import"./cli-abs8ndtr.js";
29
- import"./cli-eftzyh9y.js";
30
- import"./cli-19202kew.js";
31
- import"./cli-6a1xg1p7.js";
32
- import"./cli-rycdaj0a.js";
33
- import"./cli-445c1vp7.js";
34
- import"./cli-kvzgak7c.js";
35
- import"./cli-2nf3b08t.js";
36
- import"./cli-b2mz5mjc.js";
37
- import"./cli-ff1tm9n9.js";
38
- import"./cli-jb30dzvk.js";
39
- import"./cli-dabehxhp.js";
40
- export {
41
- startHeartbeat2 as startHeartbeat,
42
- stopHeartbeat2 as stopHeartbeat
43
- };
@@ -1,79 +0,0 @@
1
- import"./cli-qz93y3x5.js";
2
- import {
3
- getEnabledCapabilities
4
- } from "./cli-asq5ydm4.js";
5
- import"./cli-jb30dzvk.js";
6
- import"./cli-ff1tm9n9.js";
7
- import"./cli-c61mbdds.js";
8
- import"./cli-sbwsxvtd.js";
9
- import"./cli-bvpgr9ny.js";
10
- import"./cli-9s05422w.js";
11
- import"./cli-dabehxhp.js";
12
- import"./cli-gbfxp48k.js";
13
- import"./cli-7p4jxgtt.js";
14
- import"./cli-tsma7p8v.js";
15
- import"./cli-3ggwdtb0.js";
16
- import"./cli-e8xyjvfc.js";
17
- import"./cli-abs8ndtr.js";
18
- import"./cli-eftzyh9y.js";
19
- import"./cli-qqzmjxkf.js";
20
- import"./cli-2nf3b08t.js";
21
- import"./cli-kvzgak7c.js";
22
- import"./cli-445c1vp7.js";
23
- import"./cli-kxpfx2xr.js";
24
- import"./cli-x0f2v69c.js";
25
- import"./cli-gwhjmh8g.js";
26
- import"./cli-g9ypd5en.js";
27
- import"./cli-19202kew.js";
28
- import"./cli-3h26v7yj.js";
29
- import"./cli-pasyvjmm.js";
30
- import"./cli-sxgtf5fw.js";
31
- import"./cli-bn0rewsy.js";
32
- import"./cli-77cd6gy8.js";
33
- import"./cli-277c31dw.js";
34
- import {
35
- runAgent
36
- } from "./cli-k4tjsdx9.js";
37
- import"./cli-gx4rm0qx.js";
38
- import"./cli-5kqnemen.js";
39
- import"./cli-2655k16q.js";
40
- import"./cli-jc1g9ndz.js";
41
- import"./cli-wx2nj19m.js";
42
- import"./cli-pzatvw94.js";
43
- import"./cli-mmhj8vd7.js";
44
- import"./cli-d82btycs.js";
45
- import"./cli-0726awxw.js";
46
- import"./cli-9j129brq.js";
47
- import"./cli-g9vd9ece.js";
48
- import"./cli-4bd1rck6.js";
49
- import"./cli-vbhgkw9h.js";
50
- import"./cli-rr7zx19j.js";
51
- import"./cli-4b2z6n0m.js";
52
- import"./cli-kr5tjjtz.js";
53
- import"./cli-64mh9mf3.js";
54
- import"./cli-25n3mv5d.js";
55
- import"./cli-g1cw7xtt.js";
56
- import"./cli-5bnsc0e1.js";
57
- import"./cli-m4ecdxvz.js";
58
- import"./cli-c952c7ac.js";
59
- import"./cli-hh5we352.js";
60
- import"./cli-621ce7kw.js";
61
- import"./cli-4zsenjhy.js";
62
- import"./cli-13p25grh.js";
63
- import"./cli-0adyhvq2.js";
64
- import"./cli-6a1xg1p7.js";
65
- import"./cli-rycdaj0a.js";
66
-
67
- // src/commands/lead.ts
68
- var leadConfig = {
69
- role: "lead",
70
- defaultPrompt: "/start-leader",
71
- metadataType: "lead_metadata",
72
- capabilities: getEnabledCapabilities()
73
- };
74
- async function runLead(opts) {
75
- return runAgent(leadConfig, opts);
76
- }
77
- export {
78
- runLead
79
- };
@@ -1,12 +0,0 @@
1
- import {
2
- isSlackRenderV2Enabled2,
3
- ensureSlackThreadTree2,
4
- processSlackRenderV22
5
- } from "./cli-abs8ndtr.js";
6
- import"./cli-eftzyh9y.js";
7
- import"./cli-jb30dzvk.js";
8
- export {
9
- ensureSlackThreadTree2 as ensureSlackThreadTree,
10
- isSlackRenderV2Enabled2 as isSlackRenderV2Enabled,
11
- processSlackRenderV22 as processSlackRenderV2
12
- };
@@ -1,79 +0,0 @@
1
- import"./cli-qz93y3x5.js";
2
- import {
3
- getEnabledCapabilities
4
- } from "./cli-asq5ydm4.js";
5
- import"./cli-jb30dzvk.js";
6
- import"./cli-ff1tm9n9.js";
7
- import"./cli-c61mbdds.js";
8
- import"./cli-sbwsxvtd.js";
9
- import"./cli-bvpgr9ny.js";
10
- import"./cli-9s05422w.js";
11
- import"./cli-dabehxhp.js";
12
- import"./cli-gbfxp48k.js";
13
- import"./cli-7p4jxgtt.js";
14
- import"./cli-tsma7p8v.js";
15
- import"./cli-3ggwdtb0.js";
16
- import"./cli-e8xyjvfc.js";
17
- import"./cli-abs8ndtr.js";
18
- import"./cli-eftzyh9y.js";
19
- import"./cli-qqzmjxkf.js";
20
- import"./cli-2nf3b08t.js";
21
- import"./cli-kvzgak7c.js";
22
- import"./cli-445c1vp7.js";
23
- import"./cli-kxpfx2xr.js";
24
- import"./cli-x0f2v69c.js";
25
- import"./cli-gwhjmh8g.js";
26
- import"./cli-g9ypd5en.js";
27
- import"./cli-19202kew.js";
28
- import"./cli-3h26v7yj.js";
29
- import"./cli-pasyvjmm.js";
30
- import"./cli-sxgtf5fw.js";
31
- import"./cli-bn0rewsy.js";
32
- import"./cli-77cd6gy8.js";
33
- import"./cli-277c31dw.js";
34
- import {
35
- runAgent
36
- } from "./cli-k4tjsdx9.js";
37
- import"./cli-gx4rm0qx.js";
38
- import"./cli-5kqnemen.js";
39
- import"./cli-2655k16q.js";
40
- import"./cli-jc1g9ndz.js";
41
- import"./cli-wx2nj19m.js";
42
- import"./cli-pzatvw94.js";
43
- import"./cli-mmhj8vd7.js";
44
- import"./cli-d82btycs.js";
45
- import"./cli-0726awxw.js";
46
- import"./cli-9j129brq.js";
47
- import"./cli-g9vd9ece.js";
48
- import"./cli-4bd1rck6.js";
49
- import"./cli-vbhgkw9h.js";
50
- import"./cli-rr7zx19j.js";
51
- import"./cli-4b2z6n0m.js";
52
- import"./cli-kr5tjjtz.js";
53
- import"./cli-64mh9mf3.js";
54
- import"./cli-25n3mv5d.js";
55
- import"./cli-g1cw7xtt.js";
56
- import"./cli-5bnsc0e1.js";
57
- import"./cli-m4ecdxvz.js";
58
- import"./cli-c952c7ac.js";
59
- import"./cli-hh5we352.js";
60
- import"./cli-621ce7kw.js";
61
- import"./cli-4zsenjhy.js";
62
- import"./cli-13p25grh.js";
63
- import"./cli-0adyhvq2.js";
64
- import"./cli-6a1xg1p7.js";
65
- import"./cli-rycdaj0a.js";
66
-
67
- // src/commands/worker.ts
68
- var workerConfig = {
69
- role: "worker",
70
- defaultPrompt: "/start-worker",
71
- metadataType: "worker_metadata",
72
- capabilities: getEnabledCapabilities()
73
- };
74
- async function runWorker(opts) {
75
- return runAgent(workerConfig, opts);
76
- }
77
- export {
78
- runWorker
79
- };