@desplega.ai/agent-swarm 1.113.0 → 1.115.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 (237) hide show
  1. package/README.md +2 -2
  2. package/dist/{actions-q4n7cz6e.js → actions-17ya5wde.js} +8 -9
  3. package/dist/{app-es4nzc71.js → app-4f718yk0.js} +6 -6
  4. package/dist/{assistant-0x8ey0vs.js → assistant-ah7csnjz.js} +19 -18
  5. package/dist/{boot-reembed-69agkhv6.js → boot-reembed-4jpxhb25.js} +6 -6
  6. package/dist/{boot-reembed-p0ny05t8.js → boot-reembed-qata34xa.js} +5 -5
  7. package/dist/{boot-scrub-logs-yybrkmvr.js → boot-scrub-logs-tv48nn3z.js} +4 -4
  8. package/dist/{claude-adapter-mma9a1yr.js → claude-adapter-3csn5bks.js} +3 -3
  9. package/dist/{claude-managed-adapter-pv2nbqy4.js → claude-managed-adapter-kysmkz89.js} +2 -2
  10. package/dist/cli-0pygq9r1.js +429 -0
  11. package/dist/{cli-hsetkkd3.js → cli-12vb0xg6.js} +33 -9
  12. package/dist/{cli-ncfgsqbd.js → cli-15y7qhzp.js} +262 -33
  13. package/dist/{cli-7ga43spr.js → cli-1yjrbg1f.js} +1 -1
  14. package/dist/{cli-36ymmpmp.js → cli-3samkyap.js} +2 -2
  15. package/dist/cli-52fg7s7x.js +269 -0
  16. package/dist/{cli-hjhvekf4.js → cli-65ekje01.js} +11 -8
  17. package/dist/{cli-h3k622d0.js → cli-6aq8xhvm.js} +90 -3
  18. package/dist/{cli-f3qa069v.js → cli-7xje5amz.js} +1 -1
  19. package/dist/cli-86fdnerz.js +405 -0
  20. package/dist/{cli-9cy6nc5m.js → cli-8fjwym53.js} +1 -1
  21. package/dist/{cli-c3frqf65.js → cli-b23axgz4.js} +3 -3
  22. package/dist/{cli-a0t7vapf.js → cli-bc89my0z.js} +1 -1
  23. package/dist/{cli-bnzbn8j8.js → cli-beea4a3y.js} +73 -24
  24. package/dist/{cli-q21d49ac.js → cli-bw80ck94.js} +1 -1
  25. package/dist/{cli-pwc5e83c.js → cli-cchksf5q.js} +12 -7
  26. package/dist/{cli-30bbaveh.js → cli-cmw9rzy5.js} +2 -2
  27. package/dist/{cli-y6mrptcn.js → cli-cnwssmsr.js} +1 -1
  28. package/dist/{cli-r5g6ngtn.js → cli-dcca6j8m.js} +46 -5
  29. package/dist/{cli-tkmm5nf9.js → cli-e61fs2hp.js} +59 -2
  30. package/dist/{cli-6wscj9z0.js → cli-e7306swv.js} +14 -14
  31. package/dist/{cli-dcfyyh3t.js → cli-ftyf58xj.js} +2 -2
  32. package/dist/{cli-4xyj9jtq.js → cli-hrhye2rm.js} +1062 -478
  33. package/dist/cli-jkhwmmgg.js +136 -0
  34. package/dist/{cli-y4ycrnjc.js → cli-k3y4z3h5.js} +1 -1
  35. package/dist/{cli-6xd0bvf8.js → cli-ma04faw5.js} +1 -1
  36. package/dist/{cli-2fc97xm5.js → cli-mnbgv3w7.js} +4 -4
  37. package/dist/{cli-trmapn9k.js → cli-pet3aev6.js} +95 -10
  38. package/dist/{cli-z46pnksz.js → cli-q1rx7g0d.js} +175 -28
  39. package/dist/{cli-qwgtacd6.js → cli-r9f6ngrf.js} +1244 -336
  40. package/dist/{cli-gtkqc144.js → cli-shvaxw27.js} +13 -7
  41. package/dist/{cli-ywez6yps.js → cli-sq7f72d6.js} +1 -1
  42. package/dist/cli-t0vqevnm.js +393 -0
  43. package/dist/{cli-tbw13sx8.js → cli-tece6zgm.js} +1 -1
  44. package/dist/{cli-bgvskydy.js → cli-tffvrh6j.js} +1 -1
  45. package/dist/cli-wh91zby6.js +187222 -0
  46. package/dist/{cli-anrj584m.js → cli-xz9aq0rf.js} +1 -1
  47. package/dist/{cli-mq580e06.js → cli-zsrdty74.js} +18 -18
  48. package/dist/cli.js +32 -15
  49. package/dist/{codex-adapter-5cmy858w.js → codex-adapter-de3w0nch.js} +10 -10
  50. package/dist/{codex-session-runner-46q8mrba.js → codex-session-runner-bnw8cysk.js} +10 -10
  51. package/dist/{commands-z5dbwta3.js → commands-hch4e2k1.js} +4 -4
  52. package/dist/{db-bbgahh4z.js → db-p3h2j06x.js} +14 -4
  53. package/dist/{handlers-6b44317z.js → handlers-9er4zx9q.js} +17 -31
  54. package/dist/{hook-sbp5fmps.js → hook-4axs756z.js} +7 -7
  55. package/dist/{http-2xz43gz3.js → http-809fvtz2.js} +1934 -886
  56. package/dist/{index-wz1ea15p.js → index-2dgfj9av.js} +3 -3
  57. package/dist/{index-nhat35em.js → index-47em3d2n.js} +14 -11
  58. package/dist/{index-5ghxn8s6.js → index-9fqaktjr.js} +12 -9
  59. package/dist/{index-0gzmqj4k.js → index-9ht8gr56.js} +13 -10
  60. package/dist/{index-vfedgdw6.js → index-rm85cfdx.js} +368 -40
  61. package/dist/{index-ykvs43z4.js → index-t2snazez.js} +4 -4
  62. package/dist/{keepalive-62gfj91d.js → keepalive-3cps6e3e.js} +7 -6
  63. package/dist/{lead-ag0akn0v.js → lead-fkk95wgq.js} +36 -32
  64. package/dist/{maintenance-xxrrzk5x.js → maintenance-fweqh0yj.js} +6 -6
  65. package/dist/{mistral-conversations-26yrnbf1.js → mistral-conversations-7gqnz2wt.js} +7 -7
  66. package/dist/oauth-refresh-sweep-sycqtbph.js +114 -0
  67. package/dist/{onboard-64zyfcbs.js → onboard-cy0rkgvx.js} +2 -2
  68. package/dist/{opencode-adapter-mqsxr170.js → opencode-adapter-p6bxnbm4.js} +2 -2
  69. package/dist/{otel-zjd9zaxs.js → otel-g299k41b.js} +2 -2
  70. package/dist/{otel-impl-b86qseaa.js → otel-impl-wbns8hf7.js} +1 -1
  71. package/dist/{pi-mono-adapter-kxjxpfgy.js → pi-mono-adapter-05sck1ds.js} +17 -109
  72. package/dist/{pricing-refresh-cgtkffpa.js → pricing-refresh-0hvazmkf.js} +6 -6
  73. package/dist/rbac-roles-kfesjy9y.js +28 -0
  74. package/dist/rbac-roles-mwcwhbxc.js +283 -0
  75. package/dist/{seed-pricing-1r1y1xkq.js → seed-pricing-h2kdq4cq.js} +5 -5
  76. package/dist/{setup-mkcgkjf7.js → setup-8506q97w.js} +2 -2
  77. package/dist/{worker-351sze63.js → worker-4r5c6zyb.js} +36 -32
  78. package/openapi.json +1327 -20
  79. package/package.json +3 -3
  80. package/src/agentmail/handlers.ts +16 -6
  81. package/src/agentmail/templates.ts +25 -5
  82. package/src/be/audit-user.ts +28 -4
  83. package/src/be/db-queries/oauth.ts +42 -0
  84. package/src/be/db.ts +314 -28
  85. package/src/be/identity.ts +79 -0
  86. package/src/be/mcp-proxy.ts +132 -0
  87. package/src/be/migrations/109_rbac_roles.sql +79 -0
  88. package/src/be/migrations/111_oauth_credential_bindings.sql +6 -0
  89. package/src/be/migrations/112_script_connections_graphql.sql +96 -0
  90. package/src/be/migrations/113_task_routing_affinity.sql +9 -0
  91. package/src/be/migrations/114_backfill_gpt_5_6_pricing.sql +15 -0
  92. package/src/be/modelsdev-cache.json +135 -0
  93. package/src/be/oauth-credential-bindings.ts +35 -0
  94. package/src/be/oauth-refresh-sweep.ts +159 -0
  95. package/src/be/rbac-audit.ts +52 -13
  96. package/src/be/rbac-roles.ts +424 -0
  97. package/src/be/script-connections.ts +459 -40
  98. package/src/be/script-credential-broker.ts +29 -3
  99. package/src/be/scripts/typecheck.ts +51 -7
  100. package/src/be/seed-scripts/catalog/catalog-report.inline.ts +325 -24
  101. package/src/be/seed-scripts/catalog/catalog-report.ts +325 -24
  102. package/src/be/users.ts +24 -0
  103. package/src/cli.tsx +17 -0
  104. package/src/github/handlers.ts +10 -9
  105. package/src/github/templates.ts +45 -9
  106. package/src/gitlab/handlers.ts +20 -8
  107. package/src/gitlab/templates.ts +18 -6
  108. package/src/heartbeat/heartbeat.ts +143 -21
  109. package/src/http/all-routes.ts +3 -0
  110. package/src/http/approval-requests.ts +12 -0
  111. package/src/http/config.ts +44 -10
  112. package/src/http/core.ts +30 -3
  113. package/src/http/favorites.ts +1 -5
  114. package/src/http/index.ts +25 -1
  115. package/src/http/mcp-oauth.ts +2 -0
  116. package/src/http/mcp-servers.ts +44 -3
  117. package/src/http/oauth-generic.ts +105 -0
  118. package/src/http/poll.ts +20 -3
  119. package/src/http/script-connection-proxy.ts +116 -0
  120. package/src/http/script-connections.ts +1657 -0
  121. package/src/http/scripts.ts +27 -7
  122. package/src/http/skills.ts +11 -0
  123. package/src/http/tasks.ts +27 -13
  124. package/src/http/x.ts +6 -2
  125. package/src/integrations/kapso/inbound.ts +23 -6
  126. package/src/jira/sync.ts +111 -17
  127. package/src/jira/templates.ts +10 -2
  128. package/src/mcp-client/http-client.ts +194 -0
  129. package/src/oauth/app-validation.ts +16 -0
  130. package/src/oauth/ensure-token.ts +69 -14
  131. package/src/oauth/mcp-wrapper.ts +15 -0
  132. package/src/oauth/wrapper.ts +48 -20
  133. package/src/prompts/session-templates.ts +3 -3
  134. package/src/providers/codex-models.ts +100 -30
  135. package/src/providers/modelsdev-reasoning.json +51 -0
  136. package/src/providers/pi-mono-mcp-client.ts +2 -133
  137. package/src/providers/reasoning-effort.ts +11 -5
  138. package/src/rbac/admission.ts +68 -0
  139. package/src/rbac/index.ts +2 -0
  140. package/src/rbac/legacy-policy.ts +12 -0
  141. package/src/rbac/permissions.ts +48 -0
  142. package/src/scheduler/scheduler.ts +9 -1
  143. package/src/scripts-runtime/api-client.ts +151 -19
  144. package/src/scripts-runtime/api-types.ts +38 -6
  145. package/src/scripts-runtime/credential-broker/default-bindings.ts +1 -0
  146. package/src/scripts-runtime/credential-broker/types.ts +8 -0
  147. package/src/scripts-runtime/ctx.ts +11 -1
  148. package/src/scripts-runtime/eval-harness.ts +5 -1
  149. package/src/scripts-runtime/executors/types.ts +2 -1
  150. package/src/scripts-runtime/loader.ts +3 -1
  151. package/src/scripts-runtime/mcp-client.ts +87 -0
  152. package/src/scripts-runtime/sdk-allowlist.ts +1 -0
  153. package/src/scripts-runtime/types/stdlib.d.ts +6 -0
  154. package/src/scripts-runtime/types/swarm-sdk.d.ts +19 -0
  155. package/src/server-user.ts +114 -59
  156. package/src/server.ts +12 -0
  157. package/src/slack/assistant.ts +14 -6
  158. package/src/slack/enrich.ts +17 -0
  159. package/src/slack/handlers.ts +8 -22
  160. package/src/slack/responses.ts +91 -1
  161. package/src/slack/thread-buffer.ts +6 -3
  162. package/src/slack/watcher.ts +9 -6
  163. package/src/tasks/worker-follow-up.ts +100 -3
  164. package/src/tests/agentmail-handlers.test.ts +32 -3
  165. package/src/tests/approval-requests.test.ts +61 -0
  166. package/src/tests/audit-user.test.ts +47 -1
  167. package/src/tests/codex-adapter.test.ts +46 -23
  168. package/src/tests/credential-broker.test.ts +5 -2
  169. package/src/tests/delete-page-tool.test.ts +197 -0
  170. package/src/tests/github-handlers.test.ts +28 -2
  171. package/src/tests/gitlab-handlers.test.ts +125 -0
  172. package/src/tests/heartbeat.test.ts +48 -3
  173. package/src/tests/identity.test.ts +117 -0
  174. package/src/tests/jira-sync.test.ts +99 -1
  175. package/src/tests/kapso-inbound.test.ts +7 -0
  176. package/src/tests/mcp-tools-user.test.ts +60 -6
  177. package/src/tests/model-control.test.ts +8 -2
  178. package/src/tests/oauth-credential-bindings.test.ts +490 -0
  179. package/src/tests/oauth-refresh-sweep.test.ts +160 -0
  180. package/src/tests/pool-affinity.test.ts +401 -0
  181. package/src/tests/prompt-template-remaining.test.ts +2 -2
  182. package/src/tests/rbac-admission-e2e.test.ts +386 -0
  183. package/src/tests/rbac-admission.test.ts +492 -0
  184. package/src/tests/rbac-e2e-helpers.ts +3 -0
  185. package/src/tests/rbac-engine.test.ts +50 -0
  186. package/src/tests/rbac-mcp-admission-e2e.test.ts +362 -0
  187. package/src/tests/rbac-roles.test.ts +328 -0
  188. package/src/tests/reasoning-effort.test.ts +15 -2
  189. package/src/tests/schedule-target-type.test.ts +50 -0
  190. package/src/tests/scheduled-tasks.test.ts +40 -0
  191. package/src/tests/script-apis-mcp.test.ts +37 -13
  192. package/src/tests/script-connections-http.test.ts +1158 -0
  193. package/src/tests/script-connections-mcp.test.ts +894 -0
  194. package/src/tests/script-connections.test.ts +754 -6
  195. package/src/tests/scripts-external-api.test.ts +49 -1
  196. package/src/tests/scripts-runtime-secret-egress.test.ts +1 -0
  197. package/src/tests/scripts-runtime.test.ts +291 -0
  198. package/src/tests/seed-scripts.test.ts +36 -0
  199. package/src/tests/slack-identity-resolution.test.ts +37 -3
  200. package/src/tests/slack-inline-output.test.ts +65 -0
  201. package/src/tests/slack-thread-buffer.test.ts +28 -0
  202. package/src/tests/tool-annotations.test.ts +1 -0
  203. package/src/tests/user-token-rest-auth.test.ts +140 -1
  204. package/src/tests/workflow-swarm-script.test.ts +44 -0
  205. package/src/tests/workflow-triggers-v2.test.ts +300 -1
  206. package/src/tools/credential-bindings/tool.ts +277 -18
  207. package/src/tools/delete-page.ts +145 -0
  208. package/src/tools/mcp-servers/mcp-server-delete.ts +7 -4
  209. package/src/tools/request-human-input.ts +2 -0
  210. package/src/tools/resolve-user.ts +77 -27
  211. package/src/tools/script-apis.ts +62 -3
  212. package/src/tools/script-connections/tool.ts +275 -31
  213. package/src/tools/send-task.ts +15 -1
  214. package/src/tools/task-action.ts +34 -2
  215. package/src/tools/templates.ts +53 -1
  216. package/src/tools/tool-config.ts +2 -1
  217. package/src/tools/utils.ts +2 -0
  218. package/src/tools/workflows/create-workflow.ts +8 -1
  219. package/src/tools/workflows/update-workflow.ts +11 -2
  220. package/src/types.ts +90 -11
  221. package/src/utils/scoped-resource.ts +25 -0
  222. package/src/workflows/executors/human-in-the-loop.ts +1 -0
  223. package/src/workflows/executors/swarm-script.ts +7 -1
  224. package/src/workflows/triggers.ts +146 -18
  225. package/templates/skills/swarm-scripts/content.md +33 -8
  226. package/dist/cli-bgef578c.js +0 -771
  227. package/dist/cli-c9mtm09b.js +0 -43
  228. package/dist/cli-ceewqajw.js +0 -1698
  229. package/dist/{anthropic-messages-8nc6r2dw.js → anthropic-messages-kq3pjhbp.js} +6 -6
  230. package/dist/{azure-openai-responses-6yfzw3qw.js → azure-openai-responses-gm1ejtmn.js} +7 -7
  231. package/dist/{cli-vbraamxr.js → cli-6b4wwmm8.js} +9 -9
  232. package/dist/{cli-2r7s8jhp.js → cli-sznberje.js} +3 -3
  233. package/dist/{google-generative-ai-vfq6ymz9.js → google-generative-ai-hyrra2jm.js} +3 -3
  234. package/dist/{google-vertex-mj5y5rfj.js → google-vertex-8bs2pzgn.js} +3 -3
  235. package/dist/{openai-codex-responses-8h6kvfv8.js → openai-codex-responses-3nkvje79.js} +4 -4
  236. package/dist/{openai-completions-x6kjnqjd.js → openai-completions-0asftkwg.js} +11 -11
  237. package/dist/{openai-responses-7jwyz3ds.js → openai-responses-pmatek45.js} +10 -10
@@ -13727,4 +13727,4 @@ var init_external = __esm(() => {
13727
13727
  config(en_default());
13728
13728
  });
13729
13729
 
13730
- export { NEVER, $constructor, clone, exports_util, $ZodError, prettifyError, parse, parseAsync, safeParse, safeParseAsync, $ZodType, $ZodObject, init_locales, toJSONSchema, init_json_schema_processors, init_core2 as init_core, exports_iso, safeParseAsync2 as safeParseAsync1, string2 as string, uuid2 as uuid, number2 as number, int, boolean2 as boolean, _null3 as _null, any, unknown, _void2 as _void, date3 as date, array, object, looseObject, union, discriminatedUnion, intersection, record, _enum2 as _enum, literal, ZodOptional, optional, nullable, lazy, custom, preprocess, exports_coerce, exports_external, init_external };
13730
+ export { NEVER, $constructor, clone, exports_util, $ZodError, prettifyError, parse, parseAsync, safeParse, safeParseAsync, $ZodType, $ZodObject, init_locales, toJSONSchema, init_json_schema_processors, init_core2 as init_core, exports_iso, safeParseAsync2 as safeParseAsync1, string2 as string, uuid2 as uuid, number2 as number, int, boolean2 as boolean, _null3 as _null, any, unknown, _void2 as _void, date3 as date, array, object, looseObject, union, discriminatedUnion, intersection, record, _enum2 as _enum, literal, ZodOptional, optional, nullable, lazy, custom, preprocess, ZodIssueCode, exports_coerce, exports_external, init_external };
@@ -1,15 +1,15 @@
1
- import {
2
- checkCodexCredentials
3
- } from "./cli-ceewqajw.js";
4
- import {
5
- checkClaudeManagedCredentials
6
- } from "./cli-2r7s8jhp.js";
7
1
  import {
8
2
  checkDevinCredentials
9
3
  } from "./cli-tyfxrrdd.js";
10
4
  import {
11
5
  checkOpencodeCredentials
12
- } from "./cli-a0t7vapf.js";
6
+ } from "./cli-bc89my0z.js";
7
+ import {
8
+ checkCodexCredentials
9
+ } from "./cli-wh91zby6.js";
10
+ import {
11
+ checkClaudeManagedCredentials
12
+ } from "./cli-sznberje.js";
13
13
  import {
14
14
  initOtel,
15
15
  injectTraceContext,
@@ -18,7 +18,7 @@ import {
18
18
  withSpan,
19
19
  withSpanContext,
20
20
  writeSkillsToFilesystem
21
- } from "./cli-4xyj9jtq.js";
21
+ } from "./cli-hrhye2rm.js";
22
22
  import {
23
23
  authJsonToCredentialSelection,
24
24
  credentialsToAuthJson,
@@ -26,7 +26,7 @@ import {
26
26
  } from "./cli-tk9vyqzh.js";
27
27
  import {
28
28
  checkClaudeCredentials
29
- } from "./cli-2fc97xm5.js";
29
+ } from "./cli-mnbgv3w7.js";
30
30
  import {
31
31
  MAX_RATE_LIMIT_RESET_MS,
32
32
  isCodexCreditsExhaustedMessage,
@@ -40,10 +40,10 @@ import {
40
40
  import {
41
41
  ensure,
42
42
  initialize
43
- } from "./cli-gtkqc144.js";
43
+ } from "./cli-shvaxw27.js";
44
44
  import {
45
45
  validateJsonSchema
46
- } from "./cli-z46pnksz.js";
46
+ } from "./cli-q1rx7g0d.js";
47
47
  import {
48
48
  getApiKey
49
49
  } from "./cli-f14fvzag.js";
@@ -79,7 +79,7 @@ import {
79
79
  resolveTaskModelSelection,
80
80
  resolveTemplateAsync,
81
81
  telemetry
82
- } from "./cli-ncfgsqbd.js";
82
+ } from "./cli-15y7qhzp.js";
83
83
  import {
84
84
  init_credentials,
85
85
  resolveCredentialPools
@@ -441,19 +441,19 @@ async function materializeCodexAuthJson(_slot, creds, deps = {}) {
441
441
  async function createProviderAdapter(provider) {
442
442
  switch (provider) {
443
443
  case "claude": {
444
- const { ClaudeAdapter } = await import("./claude-adapter-mma9a1yr.js");
444
+ const { ClaudeAdapter } = await import("./claude-adapter-3csn5bks.js");
445
445
  return new ClaudeAdapter;
446
446
  }
447
447
  case "pi": {
448
- const { PiMonoAdapter } = await import("./pi-mono-adapter-kxjxpfgy.js");
448
+ const { PiMonoAdapter } = await import("./pi-mono-adapter-05sck1ds.js");
449
449
  return new PiMonoAdapter;
450
450
  }
451
451
  case "codex": {
452
- const { CodexAdapter } = await import("./codex-adapter-5cmy858w.js");
452
+ const { CodexAdapter } = await import("./codex-adapter-de3w0nch.js");
453
453
  return new CodexAdapter;
454
454
  }
455
455
  case "claude-managed": {
456
- const { ClaudeManagedAdapter } = await import("./claude-managed-adapter-pv2nbqy4.js");
456
+ const { ClaudeManagedAdapter } = await import("./claude-managed-adapter-kysmkz89.js");
457
457
  return new ClaudeManagedAdapter;
458
458
  }
459
459
  case "devin": {
@@ -461,7 +461,7 @@ async function createProviderAdapter(provider) {
461
461
  return new DevinAdapter;
462
462
  }
463
463
  case "opencode": {
464
- const { OpencodeAdapter } = await import("./opencode-adapter-mqsxr170.js");
464
+ const { OpencodeAdapter } = await import("./opencode-adapter-p6bxnbm4.js");
465
465
  return new OpencodeAdapter;
466
466
  }
467
467
  default:
@@ -1109,7 +1109,7 @@ async function checkProviderCredentials(provider, env, opts) {
1109
1109
  case "opencode":
1110
1110
  return checkOpencodeCredentials(env, opts);
1111
1111
  case "pi": {
1112
- const { checkPiMonoCredentials } = await import("./pi-mono-adapter-kxjxpfgy.js");
1112
+ const { checkPiMonoCredentials } = await import("./pi-mono-adapter-05sck1ds.js");
1113
1113
  return checkPiMonoCredentials(env, opts);
1114
1114
  }
1115
1115
  default:
package/dist/cli.js CHANGED
@@ -13,18 +13,18 @@ import"./cli-ap1czx8f.js";
13
13
  import"./cli-v69vk5h0.js";
14
14
  import {
15
15
  bedrockProviderModule
16
- } from "./cli-vbraamxr.js";
16
+ } from "./cli-6b4wwmm8.js";
17
+ import"./cli-cwy5hqbq.js";
17
18
  import"./cli-jvv0g8bh.js";
18
19
  import {
19
20
  setBedrockProviderModule
20
21
  } from "./cli-xw7p4wkq.js";
21
22
  import"./cli-hv2fndhm.js";
22
- import"./cli-cwy5hqbq.js";
23
23
  import"./cli-pscrc6tw.js";
24
- import"./cli-4wgngmwv.js";
25
- import"./cli-vapyk8sw.js";
26
24
  import"./cli-zyxs93y9.js";
25
+ import"./cli-4wgngmwv.js";
27
26
  import"./cli-bsyka9ta.js";
27
+ import"./cli-vapyk8sw.js";
28
28
  import"./cli-y2apkfe2.js";
29
29
  import"./cli-m6pzzhqr.js";
30
30
  import"./cli-7wmybrt5.js";
@@ -64,7 +64,7 @@ var import_react = __toESM(require_react(), 1);
64
64
  // package.json
65
65
  var package_default = {
66
66
  name: "@desplega.ai/agent-swarm",
67
- version: "1.113.0",
67
+ version: "1.115.0",
68
68
  description: "Multi-agent orchestration for Claude Code, Codex, Gemini CLI, and other AI coding assistants",
69
69
  license: "MIT",
70
70
  author: "desplega.sh <contact@desplega.sh>",
@@ -147,9 +147,9 @@ var package_default = {
147
147
  lead: "bun src/cli.tsx lead",
148
148
  "lead:yolo": "bun src/cli.tsx lead --yolo",
149
149
  dev: "bun --hot src/stdio.ts",
150
- "dev:http": "portless api.swarm bun --hot src/http.ts",
150
+ "dev:http": "NODE_ENV=development portless api.swarm bun --hot src/http.ts",
151
151
  start: "bun src/stdio.ts",
152
- "start:http": "bun --expose-gc src/http.ts",
152
+ "start:http": "NODE_ENV=development bun --expose-gc src/http.ts",
153
153
  "start:portless": "portless api.swarm bun --expose-gc src/http.ts",
154
154
  inspector: "bunx @modelcontextprotocol/inspector --transport stdio bun src/stdio.ts",
155
155
  "inspector:http": "bunx @modelcontextprotocol/inspector --transport http https://api.swarm.localhost:1355/mcp",
@@ -500,6 +500,13 @@ Used internally by the agent-swarm hooks system.`,
500
500
  options: " -h, --help Show this help",
501
501
  examples: ` ${binName} scripts reembed`
502
502
  },
503
+ rbac: {
504
+ usage: `${binName} rbac bootstrap`,
505
+ description: `RBAC role management.
506
+ Bootstraps built-in RBAC roles and attaches the default role to users with zero roles.`,
507
+ options: " -h, --help Show this help",
508
+ examples: ` ${binName} rbac bootstrap`
509
+ },
503
510
  "codex-login": {
504
511
  usage: `${binName} codex-login [options]`,
505
512
  description: `Authenticate Codex via ChatGPT OAuth (browser or manual paste).
@@ -623,6 +630,7 @@ ${binName} v${package_default.version}`);
623
630
  ["artifact", "Manage agent artifacts"],
624
631
  ["x", "Execute external command routes"],
625
632
  ["scripts", "Reusable scripts maintenance"],
633
+ ["rbac", "RBAC role management (bootstrap)"],
626
634
  ["docs", "Open documentation (--open to launch in browser)"],
627
635
  ["codex-login", "Authenticate Codex via ChatGPT OAuth"],
628
636
  ["claude-managed-setup", "Bootstrap Anthropic Managed Agents (agent + env + skills)"],
@@ -646,7 +654,7 @@ function McpServer({ port, apiKey, dbPath }) {
646
654
  if (dbPath) {
647
655
  process.env.DATABASE_PATH = dbPath;
648
656
  }
649
- import("./http-2xz43gz3.js").then(() => {
657
+ import("./http-809fvtz2.js").then(() => {
650
658
  setStatus("running");
651
659
  }).catch((err) => {
652
660
  setStatus("error");
@@ -732,7 +740,7 @@ function WorkerRunner({
732
740
  }) {
733
741
  const { exit } = use_app_default();
734
742
  import_react.useEffect(() => {
735
- import("./worker-351sze63.js").then(({ runWorker }) => runWorker({
743
+ import("./worker-4r5c6zyb.js").then(({ runWorker }) => runWorker({
736
744
  prompt: prompt || undefined,
737
745
  yolo,
738
746
  systemPrompt: systemPrompt || undefined,
@@ -749,7 +757,7 @@ function WorkerRunner({
749
757
  function LeadRunner({ prompt, yolo, systemPrompt, systemPromptFile, additionalArgs }) {
750
758
  const { exit } = use_app_default();
751
759
  import_react.useEffect(() => {
752
- import("./lead-ag0akn0v.js").then(({ runLead }) => runLead({
760
+ import("./lead-fkk95wgq.js").then(({ runLead }) => runLead({
753
761
  prompt: prompt || undefined,
754
762
  yolo,
755
763
  systemPrompt: systemPrompt || undefined,
@@ -789,8 +797,8 @@ function LazyComponent({
789
797
  }
790
798
  return import_react.createElement(Component, props);
791
799
  }
792
- var loadOnboard = () => import("./onboard-64zyfcbs.js").then(({ Onboard }) => Onboard);
793
- var loadConnect = () => import("./setup-mkcgkjf7.js").then(({ Setup }) => Setup);
800
+ var loadOnboard = () => import("./onboard-cy0rkgvx.js").then(({ Onboard }) => Onboard);
801
+ var loadConnect = () => import("./setup-8506q97w.js").then(({ Setup }) => Setup);
794
802
  function UnknownCommand({ command }) {
795
803
  const { exit } = use_app_default();
796
804
  import_react.useEffect(() => {
@@ -903,7 +911,7 @@ ${binName} docs \u2014 v${package_default.version}
903
911
  }
904
912
  process.exit(0);
905
913
  } else if (args.command === "hook") {
906
- const { runHook } = await import("./hook-sbp5fmps.js");
914
+ const { runHook } = await import("./hook-4axs756z.js");
907
915
  await runHook();
908
916
  } else if (args.command === "artifact") {
909
917
  const artifactArgs = process.argv.slice(process.argv.indexOf("artifact") + 1);
@@ -923,15 +931,24 @@ ${binName} docs \u2014 v${package_default.version}
923
931
  printHelp("scripts");
924
932
  process.exit(scriptsArgs[0] === "reembed" || args.showHelp ? 0 : 1);
925
933
  }
926
- const { runScriptsMaintenanceCommand } = await import("./maintenance-xxrrzk5x.js");
934
+ const { runScriptsMaintenanceCommand } = await import("./maintenance-fweqh0yj.js");
927
935
  await runScriptsMaintenanceCommand(scriptsArgs);
928
936
  console.log("Scripts re-embedded.");
937
+ } else if (args.command === "rbac") {
938
+ const rbacArgs = process.argv.slice(process.argv.indexOf("rbac") + 1);
939
+ const isValidRbacCommand = rbacArgs.length === 1 && rbacArgs[0] === "bootstrap";
940
+ if (args.showHelp || !isValidRbacCommand) {
941
+ printHelp("rbac");
942
+ process.exit(args.showHelp ? 0 : 1);
943
+ }
944
+ const { runRbacCliCommand } = await import("./rbac-roles-mwcwhbxc.js");
945
+ await runRbacCliCommand(rbacArgs);
929
946
  } else if (args.command === "codex-login") {
930
947
  const { runCodexLogin } = await import("./codex-login-0h18cy3e.js");
931
948
  const codexLoginArgs = process.argv.slice(process.argv.indexOf("codex-login") + 1);
932
949
  await runCodexLogin(codexLoginArgs);
933
950
  } else if (args.command === "codex-session-runner") {
934
- const { runCodexSessionRunner } = await import("./codex-session-runner-46q8mrba.js");
951
+ const { runCodexSessionRunner } = await import("./codex-session-runner-bnw8cysk.js");
935
952
  await runCodexSessionRunner();
936
953
  } else if (args.command === "claude-managed-setup") {
937
954
  const { runClaudeManagedSetup } = await import("./claude-managed-setup-cm05wtek.js");
@@ -6,27 +6,27 @@ import {
6
6
  createInProcessCodexSession,
7
7
  resolveCodexAuthMode,
8
8
  resolveCodexRunnerArgv
9
- } from "./cli-ceewqajw.js";
10
- import"./cli-6wscj9z0.js";
11
- import"./cli-07er7wrs.js";
12
- import"./cli-yv9dttkh.js";
9
+ } from "./cli-wh91zby6.js";
13
10
  import"./cli-r94z9p1z.js";
14
- import"./cli-d6n0thxw.js";
11
+ import"./cli-e7306swv.js";
15
12
  import"./cli-hx1dcevq.js";
16
- import"./cli-dcfyyh3t.js";
13
+ import"./cli-07er7wrs.js";
14
+ import"./cli-d6n0thxw.js";
15
+ import"./cli-yv9dttkh.js";
16
+ import"./cli-ftyf58xj.js";
17
17
  import"./cli-tk9vyqzh.js";
18
18
  import"./cli-psrqtw2m.js";
19
19
  import"./cli-zm7njwzd.js";
20
20
  import"./cli-tghre7g6.js";
21
- import"./cli-tkmm5nf9.js";
21
+ import"./cli-e61fs2hp.js";
22
22
  import"./cli-f14fvzag.js";
23
- import"./cli-q21d49ac.js";
24
- import"./cli-anrj584m.js";
23
+ import"./cli-bw80ck94.js";
24
+ import"./cli-xz9aq0rf.js";
25
25
  import"./cli-4j2mrzag.js";
26
26
  import"./cli-7zd05xb4.js";
27
27
  import"./cli-xw7p4wkq.js";
28
- import"./cli-4wgngmwv.js";
29
28
  import"./cli-zyxs93y9.js";
29
+ import"./cli-4wgngmwv.js";
30
30
  import"./cli-m6pzzhqr.js";
31
31
  import"./cli-p9swy5t3.js";
32
32
  export {
@@ -1,26 +1,26 @@
1
1
  import {
2
2
  createInProcessCodexSession
3
- } from "./cli-ceewqajw.js";
4
- import"./cli-6wscj9z0.js";
5
- import"./cli-07er7wrs.js";
6
- import"./cli-yv9dttkh.js";
3
+ } from "./cli-wh91zby6.js";
7
4
  import"./cli-r94z9p1z.js";
8
- import"./cli-d6n0thxw.js";
5
+ import"./cli-e7306swv.js";
9
6
  import"./cli-hx1dcevq.js";
10
- import"./cli-dcfyyh3t.js";
7
+ import"./cli-07er7wrs.js";
8
+ import"./cli-d6n0thxw.js";
9
+ import"./cli-yv9dttkh.js";
10
+ import"./cli-ftyf58xj.js";
11
11
  import"./cli-tk9vyqzh.js";
12
12
  import"./cli-psrqtw2m.js";
13
13
  import"./cli-zm7njwzd.js";
14
14
  import"./cli-tghre7g6.js";
15
- import"./cli-tkmm5nf9.js";
15
+ import"./cli-e61fs2hp.js";
16
16
  import"./cli-f14fvzag.js";
17
- import"./cli-q21d49ac.js";
18
- import"./cli-anrj584m.js";
17
+ import"./cli-bw80ck94.js";
18
+ import"./cli-xz9aq0rf.js";
19
19
  import"./cli-4j2mrzag.js";
20
20
  import"./cli-7zd05xb4.js";
21
21
  import"./cli-xw7p4wkq.js";
22
- import"./cli-4wgngmwv.js";
23
22
  import"./cli-zyxs93y9.js";
23
+ import"./cli-4wgngmwv.js";
24
24
  import"./cli-m6pzzhqr.js";
25
25
  import"./cli-p9swy5t3.js";
26
26
 
@@ -2,11 +2,11 @@ import {
2
2
  getAllAgents,
3
3
  getAllTasks,
4
4
  init_db
5
- } from "./cli-ncfgsqbd.js";
5
+ } from "./cli-15y7qhzp.js";
6
6
  import"./cli-z2zcxes1.js";
7
- import"./cli-q21d49ac.js";
8
- import"./cli-anrj584m.js";
9
- import"./cli-c3frqf65.js";
7
+ import"./cli-bw80ck94.js";
8
+ import"./cli-xz9aq0rf.js";
9
+ import"./cli-b23axgz4.js";
10
10
  import"./cli-4j2mrzag.js";
11
11
  import"./cli-p9swy5t3.js";
12
12
 
@@ -7,6 +7,7 @@ import {
7
7
  assignUnassignedTaskPending,
8
8
  autoEncryptLegacyPlaintextSecrets,
9
9
  backfillSupersedeTaskResumeTaskId,
10
+ buildRoutingAffinityFromAgent,
10
11
  cancelTask,
11
12
  cascadeFailDependents,
12
13
  checkDependencies,
@@ -227,6 +228,7 @@ import {
227
228
  getSkillFile,
228
229
  getSkillFiles,
229
230
  getStalePinnedResumes,
231
+ getStaleUnassignedAffinityTasks,
230
232
  getStalledInProgressTasks,
231
233
  getStepByIdempotencyKey,
232
234
  getStepCountForNode,
@@ -251,6 +253,7 @@ import {
251
253
  getTasksCount,
252
254
  getUnassignedPoolTasks,
253
255
  getUnassignedTaskIds,
256
+ getUnassignedTaskIdsForAgent,
254
257
  getUnassignedTasksCount,
255
258
  getUnreadInboxMessages,
256
259
  getUnreadMessages,
@@ -281,6 +284,8 @@ import {
281
284
  installMcpServer,
282
285
  installSkill,
283
286
  installSystemDefaultSkillsForAgent,
287
+ isAgentEligibleForTask,
288
+ isPoolAffinityEnforcementEnabled,
284
289
  isSqliteVecAvailable,
285
290
  listAgentsWithCredStatusByProvider,
286
291
  listAllMetrics,
@@ -385,11 +390,11 @@ import {
385
390
  upsertSkillFiles,
386
391
  upsertSwarmConfig,
387
392
  withFavoriteFlags
388
- } from "./cli-ncfgsqbd.js";
393
+ } from "./cli-15y7qhzp.js";
389
394
  import"./cli-z2zcxes1.js";
390
- import"./cli-q21d49ac.js";
391
- import"./cli-anrj584m.js";
392
- import"./cli-c3frqf65.js";
395
+ import"./cli-bw80ck94.js";
396
+ import"./cli-xz9aq0rf.js";
397
+ import"./cli-b23axgz4.js";
393
398
  import"./cli-4j2mrzag.js";
394
399
  import"./cli-p9swy5t3.js";
395
400
  init_db();
@@ -499,6 +504,8 @@ export {
499
504
  listAllMetrics,
500
505
  listAgentsWithCredStatusByProvider,
501
506
  isSqliteVecAvailable,
507
+ isPoolAffinityEnforcementEnabled,
508
+ isAgentEligibleForTask,
502
509
  installSystemDefaultSkillsForAgent,
503
510
  installSkill,
504
511
  installMcpServer,
@@ -528,6 +535,7 @@ export {
528
535
  getUnreadMessages,
529
536
  getUnreadInboxMessages,
530
537
  getUnassignedTasksCount,
538
+ getUnassignedTaskIdsForAgent,
531
539
  getUnassignedTaskIds,
532
540
  getUnassignedPoolTasks,
533
541
  getTasksCount,
@@ -552,6 +560,7 @@ export {
552
560
  getStepCountForNode,
553
561
  getStepByIdempotencyKey,
554
562
  getStalledInProgressTasks,
563
+ getStaleUnassignedAffinityTasks,
555
564
  getStalePinnedResumes,
556
565
  getSkillFiles,
557
566
  getSkillFile,
@@ -772,6 +781,7 @@ export {
772
781
  checkDependencies,
773
782
  cascadeFailDependents,
774
783
  cancelTask,
784
+ buildRoutingAffinityFromAgent,
775
785
  backfillSupersedeTaskResumeTaskId,
776
786
  autoEncryptLegacyPlaintextSecrets,
777
787
  assignUnassignedTaskPending,
@@ -3,32 +3,32 @@ import {
3
3
  getBufferMessageCount,
4
4
  instantFlush,
5
5
  wasEventSeen
6
- } from "./cli-hjhvekf4.js";
6
+ } from "./cli-65ekje01.js";
7
7
  import {
8
8
  extractSlackMessageText,
9
9
  extractTaskFromMessage,
10
10
  hasOtherUserMention,
11
11
  routeMessage
12
- } from "./cli-bgvskydy.js";
12
+ } from "./cli-tffvrh6j.js";
13
13
  import {
14
14
  registerTreeMessage
15
- } from "./cli-trmapn9k.js";
15
+ } from "./cli-pet3aev6.js";
16
16
  import"./cli-rkndnn90.js";
17
17
  import"./cli-b0p7rfnd.js";
18
18
  import {
19
19
  enrichSlackUserEmail,
20
- resolveSlackUserId
21
- } from "./cli-pwc5e83c.js";
22
- import"./cli-c9mtm09b.js";
23
- import"./cli-h3k622d0.js";
20
+ resolveSlackUserId,
21
+ rewriteSlackMentions
22
+ } from "./cli-cchksf5q.js";
23
+ import"./cli-6aq8xhvm.js";
24
24
  import {
25
25
  buildTreeBlocks
26
- } from "./cli-6xd0bvf8.js";
26
+ } from "./cli-ma04faw5.js";
27
27
  import"./cli-wspgs9bt.js";
28
28
  import {
29
29
  createTaskWithSiblingAwareness,
30
30
  slackContextKey
31
- } from "./cli-y4ycrnjc.js";
31
+ } from "./cli-k3y4z3h5.js";
32
32
  import"./cli-dh55d5fg.js";
33
33
  import {
34
34
  getAgentById,
@@ -39,11 +39,11 @@ import {
39
39
  init_db,
40
40
  init_resolver,
41
41
  resolveTemplate
42
- } from "./cli-ncfgsqbd.js";
42
+ } from "./cli-15y7qhzp.js";
43
43
  import"./cli-z2zcxes1.js";
44
- import"./cli-q21d49ac.js";
45
- import"./cli-anrj584m.js";
46
- import"./cli-c3frqf65.js";
44
+ import"./cli-bw80ck94.js";
45
+ import"./cli-xz9aq0rf.js";
46
+ import"./cli-b23axgz4.js";
47
47
  import"./cli-4j2mrzag.js";
48
48
  import"./cli-e15jhafb.js";
49
49
  import {
@@ -154,20 +154,6 @@ async function wasThreadStartedBySwarm(client, channelId, threadTs) {
154
154
  swarmThreadRootCache.set(key, startedBySwarm);
155
155
  return startedBySwarm;
156
156
  }
157
- var userNameCache = new Map;
158
- async function getUserDisplayName(client, userId) {
159
- if (userNameCache.has(userId)) {
160
- return userNameCache.get(userId);
161
- }
162
- try {
163
- const result = await client.users.info({ user: userId });
164
- const name = result.user?.profile?.display_name || result.user?.real_name || userId;
165
- userNameCache.set(userId, name);
166
- return name;
167
- } catch {
168
- return userId;
169
- }
170
- }
171
157
  async function getThreadContext(client, channel, threadTs, currentTs, botUserId) {
172
158
  if (!threadTs)
173
159
  return "";
@@ -193,12 +179,12 @@ async function getThreadContext(client, channel, threadTs, currentTs, botUserId)
193
179
  const truncatedText = text.length > 500 ? `${text.slice(0, 500)}...` : text;
194
180
  formattedMessages.push(`[Agent]: ${truncatedText}`);
195
181
  } else {
196
- const userName = m.user ? await getUserDisplayName(client, m.user) : "Unknown";
197
- formattedMessages.push(`${userName}: ${text}`);
182
+ const authorTag = m.user ? `<@${m.user}>` : "Unknown";
183
+ formattedMessages.push(`${authorTag}: ${text}`);
198
184
  }
199
185
  }
200
- return formattedMessages.join(`
201
- `);
186
+ return rewriteSlackMentions(formattedMessages.join(`
187
+ `));
202
188
  } catch (error) {
203
189
  console.error("[Slack] Failed to fetch thread context:", error);
204
190
  return "";
@@ -1,18 +1,18 @@
1
1
  import {
2
2
  summarizeSession
3
- } from "./cli-6wscj9z0.js";
3
+ } from "./cli-e7306swv.js";
4
+ import"./cli-hx1dcevq.js";
4
5
  import {
5
6
  checkToolLoop,
6
7
  clearToolHistory
7
8
  } from "./cli-yv9dttkh.js";
8
- import"./cli-hx1dcevq.js";
9
9
  import {
10
10
  buildRatingsFromLlm,
11
11
  dedupeRetrievalsForRater,
12
12
  fetchRetrievalsForTask,
13
13
  isLlmRaterEnabled,
14
14
  postRatings
15
- } from "./cli-dcfyyh3t.js";
15
+ } from "./cli-ftyf58xj.js";
16
16
  import"./cli-tk9vyqzh.js";
17
17
  import {
18
18
  getApiKey
@@ -25,16 +25,16 @@ import {
25
25
  import {
26
26
  getMcpBaseUrl
27
27
  } from "./cli-dh55d5fg.js";
28
- import"./cli-q21d49ac.js";
29
- import"./cli-anrj584m.js";
28
+ import"./cli-bw80ck94.js";
29
+ import"./cli-xz9aq0rf.js";
30
30
  import {
31
31
  init_package,
32
32
  package_default
33
- } from "./cli-c3frqf65.js";
33
+ } from "./cli-b23axgz4.js";
34
34
  import"./cli-4j2mrzag.js";
35
35
  import"./cli-xw7p4wkq.js";
36
- import"./cli-4wgngmwv.js";
37
36
  import"./cli-zyxs93y9.js";
37
+ import"./cli-4wgngmwv.js";
38
38
  import"./cli-m6pzzhqr.js";
39
39
  import"./cli-p9swy5t3.js";
40
40