@desplega.ai/agent-swarm 2.3.0 → 2.4.1

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 (332) hide show
  1. package/README.md +1 -0
  2. package/dist/{acp-adapter-v85a2bqy.js → acp-adapter-zvzr538d.js} +9 -9
  3. package/dist/{actions-zgcxfspj.js → actions-jhtqdw69.js} +21 -19
  4. package/dist/{amp-adapter-jw9xfz42.js → amp-adapter-bd84rhs2.js} +4 -4
  5. package/dist/{app-4e1s4675.js → app-kreq1gwg.js} +3 -3
  6. package/dist/{assistant-v238n9dk.js → assistant-3k22sbsq.js} +23 -21
  7. package/dist/{boot-reembed-p666cw5n.js → boot-reembed-e53x6b9v.js} +1 -1
  8. package/dist/{boot-reembed-w6pm64j4.js → boot-reembed-f6z923ny.js} +1 -1
  9. package/dist/{boot-scrub-sweep-jcyjagn3.js → boot-scrub-sweep-0538vsb7.js} +4 -4
  10. package/dist/{boot-seeds-gbedmamp.js → boot-seeds-6wxqkfk2.js} +4 -4
  11. package/dist/{claude-adapter-q7wspzt8.js → claude-adapter-gfts5044.js} +9 -9
  12. package/dist/{claude-managed-adapter-n7ahjyx6.js → claude-managed-adapter-h2y889ge.js} +3 -3
  13. package/dist/{claude-managed-setup-wza784fb.js → claude-managed-setup-h00hsgtz.js} +2 -2
  14. package/dist/{claude-sdk-session-yf400ptr.js → claude-sdk-session-56besmfz.js} +13 -13
  15. package/dist/{cli-65q70v2v.js → cli-0bh477zn.js} +33 -6
  16. package/dist/{cli-4ync7m60.js → cli-0ebey9hg.js} +1 -1
  17. package/dist/{cli-665j3feb.js → cli-0xk505e8.js} +1 -1
  18. package/dist/{cli-7gh7020n.js → cli-1dmcq2eh.js} +1 -1
  19. package/dist/{cli-gzvb3d4a.js → cli-1jx0srjt.js} +3 -3
  20. package/dist/{cli-zj4d6afs.js → cli-1pa3rz69.js} +21 -6
  21. package/dist/{cli-7ayprxp7.js → cli-2dfbv8qr.js} +8 -0
  22. package/dist/{cli-30m5q8mc.js → cli-3kh4kpqy.js} +6 -6
  23. package/dist/{cli-qrwp40st.js → cli-3p8fqcnh.js} +2 -2
  24. package/dist/{cli-y3dvz6ge.js → cli-3r448dqn.js} +3 -3
  25. package/dist/{cli-a17tzmn0.js → cli-3tnpj2bh.js} +7 -7
  26. package/dist/{cli-ea7chd26.js → cli-471qk6s2.js} +93 -46
  27. package/dist/{cli-a49vpbf3.js → cli-5kqnemen.js} +1 -1
  28. package/dist/{cli-0rh20bp3.js → cli-6ncjvx55.js} +3 -3
  29. package/dist/{cli-fb6t92v8.js → cli-6x9ma5w5.js} +1 -1
  30. package/dist/{cli-k28p6xh7.js → cli-7225gwj7.js} +2 -2
  31. package/dist/{cli-8cvvytad.js → cli-8nyhf7za.js} +3 -3
  32. package/dist/{cli-e09hj50q.js → cli-8wkb09q5.js} +11 -11
  33. package/dist/{cli-j0v75y13.js → cli-a0kcty51.js} +4 -4
  34. package/dist/{cli-zes4tsbb.js → cli-a4gvwttf.js} +4 -4
  35. package/dist/{cli-jhp7w1fy.js → cli-a5ebc95n.js} +2 -2
  36. package/dist/{cli-5d1m1qca.js → cli-ash6xxk7.js} +2 -2
  37. package/dist/{cli-fp4xbw07.js → cli-axh29tyr.js} +14 -12
  38. package/dist/{cli-p22zdvnt.js → cli-bn0rewsy.js} +3 -3
  39. package/dist/{cli-hz64bcnj.js → cli-bn5kevnf.js} +11 -373
  40. package/dist/{cli-8jtrekpy.js → cli-d2mb5s8a.js} +7 -7
  41. package/dist/{cli-c5sbmw1v.js → cli-d82btycs.js} +94 -15
  42. package/dist/{cli-vjfpshn3.js → cli-ejs3m1sx.js} +1 -1
  43. package/dist/{cli-yv0vgscc.js → cli-fpmsqq59.js} +18 -2
  44. package/dist/cli-fz9kewbh.js +382 -0
  45. package/dist/{cli-4s1kqrqg.js → cli-g0hgtz4p.js} +6 -6
  46. package/dist/{cli-hn3pftj2.js → cli-gf0kfg81.js} +7 -7
  47. package/dist/{cli-d43xqzbe.js → cli-hqhzg1qq.js} +2 -2
  48. package/dist/{cli-azs9bhc5.js → cli-j4rqdf2n.js} +2 -2
  49. package/dist/{cli-wtg6edvd.js → cli-jh0qcrga.js} +1 -1
  50. package/dist/{cli-kqypty34.js → cli-k9z4zd4p.js} +6 -5
  51. package/dist/{cli-jhmjwqcg.js → cli-kmqgmcnb.js} +47 -14
  52. package/dist/{cli-8qsx817b.js → cli-kr2pmfqx.js} +583 -769
  53. package/dist/{cli-4g629sgr.js → cli-m2qgh5sv.js} +20 -1
  54. package/dist/{cli-9e9kjqsj.js → cli-mfe7f7b5.js} +2 -2
  55. package/dist/{cli-x3en6ct3.js → cli-nwyw3zhg.js} +1 -1
  56. package/dist/{cli-6vcyw6v7.js → cli-nx462e4v.js} +5 -3
  57. package/dist/{cli-tr24eeny.js → cli-p0rakbrk.js} +9 -9
  58. package/dist/{cli-4hmaheb6.js → cli-p6argxh9.js} +9 -9
  59. package/dist/{cli-3avfh5az.js → cli-pemywhfq.js} +2 -2
  60. package/dist/{cli-etvn5ej2.js → cli-pnp2j5zg.js} +2 -2
  61. package/dist/{cli-wk8ccrz6.js → cli-pw7v69vp.js} +2 -2
  62. package/dist/{cli-ka01m5rb.js → cli-rdq7tzwm.js} +17 -14
  63. package/dist/{cli-re4wkbzx.js → cli-rqqsfz30.js} +677 -104
  64. package/dist/{cli-xgn4rwyv.js → cli-s48yvzb8.js} +4 -4
  65. package/dist/{cli-zv4vy2b0.js → cli-s95dknxh.js} +1 -1
  66. package/dist/{cli-g6p7c2my.js → cli-sjyetj21.js} +2 -2
  67. package/dist/{cli-rdr166ht.js → cli-smvcw9z5.js} +1 -1
  68. package/dist/{cli-fhvqt2fp.js → cli-sv5gb0yb.js} +1 -1
  69. package/dist/{cli-yv3n83x8.js → cli-syhq378v.js} +2 -2
  70. package/dist/{cli-q1812jbw.js → cli-tbhwrxpt.js} +9 -9
  71. package/dist/{cli-w7z94e6c.js → cli-tx00c0h6.js} +4 -2
  72. package/dist/{cli-dxwh4j32.js → cli-vy0fay6k.js} +46 -37
  73. package/dist/{cli-ptkpaqfy.js → cli-wt645v7q.js} +1 -1
  74. package/dist/{cli-ppapy34w.js → cli-wxbn3yfx.js} +2 -2
  75. package/dist/{cli-cby329ny.js → cli-x5mq1fyq.js} +3 -3
  76. package/dist/{cli-rc3r0bnh.js → cli-xbzvet96.js} +6 -6
  77. package/dist/{cli-4mkvwgzr.js → cli-xf234ws8.js} +1 -1
  78. package/dist/{cli-6p7ddg72.js → cli-xftrvxag.js} +5 -5
  79. package/dist/cli-z071fb95.js +848 -0
  80. package/dist/{cli-1v8w782f.js → cli-z1ew8vbq.js} +14 -7
  81. package/dist/{cli-9td5ss65.js → cli-zfg9enh9.js} +3 -3
  82. package/dist/{cli-yxqag76b.js → cli-zw88zjba.js} +1 -1
  83. package/dist/cli.js +19 -19
  84. package/dist/{codex-adapter-nhjj2veb.js → codex-adapter-p6rmm7vv.js} +6 -6
  85. package/dist/{codex-hook-x6tm6y5m.js → codex-hook-x7nejyrr.js} +8 -5
  86. package/dist/{codex-login-35p4sk85.js → codex-login-m819c41r.js} +1 -1
  87. package/dist/{codex-session-runner-6hggrjbx.js → codex-session-runner-8vd5t9t0.js} +7 -7
  88. package/dist/{commands-mrw1ph2w.js → commands-7ems2p13.js} +2 -2
  89. package/dist/{controller-pt1zam5w.js → controller-m263fg43.js} +4 -4
  90. package/dist/{controllers-connect-ymw5541d.js → controllers-connect-bg33ae53.js} +28 -24
  91. package/dist/{cursor-adapter-cf4zh5x0.js → cursor-adapter-cz6nm6mj.js} +3 -3
  92. package/dist/{db-hy80219q.js → db-w505dwa8.js} +2 -2
  93. package/dist/{db-hhpy6m4x.js → db-ys2rbdft.js} +3 -2
  94. package/dist/{devin-adapter-7egzmt0k.js → devin-adapter-zgqadvnm.js} +1 -1
  95. package/dist/{dispatcher-6pdjtkr1.js → dispatcher-0s0mckqr.js} +20 -18
  96. package/dist/{docker-njavd3fb.js → docker-fkgtr75t.js} +2 -2
  97. package/dist/{dsh-adapter-fbx06re2.js → dsh-adapter-3n3net33.js} +3 -3
  98. package/dist/{e2b-5r6a5jeb.js → e2b-7am6tmq6.js} +2 -2
  99. package/dist/{e2b-pw1nvtmh.js → e2b-thdcxtjd.js} +2 -2
  100. package/dist/{easter-egg-3d-6hg2r942.js → easter-egg-3d-5cgynaja.js} +1 -1
  101. package/dist/{event-bus-101fenkh.js → event-bus-9vpk8gmq.js} +1 -1
  102. package/dist/{execute-bcqc69a5.js → execute-t4e6m3rw.js} +1 -1
  103. package/dist/{external-channel-j6vb6ya1.js → external-channel-5b23fv8z.js} +2 -2
  104. package/dist/{google-generative-ai-phpmwxvg.js → google-generative-ai-bmq8gkf3.js} +1 -1
  105. package/dist/{google-vertex-es9ybgdy.js → google-vertex-b1rvp52s.js} +1 -1
  106. package/dist/{grok-adapter-1193sprp.js → grok-adapter-q9fghe5q.js} +10 -10
  107. package/dist/handlers-mqrym347.js +39 -0
  108. package/dist/{heartbeat-h1w1ktce.js → heartbeat-tww6yx1w.js} +23 -21
  109. package/dist/{hook-ejja4bpe.js → hook-dx0pkvar.js} +16 -9
  110. package/dist/{hook-skrbja18.js → hook-pvmh9b6m.js} +6 -6
  111. package/dist/{http-mzh41mfj.js → http-k2ejbt05.js} +975 -292
  112. package/dist/{index-6rmnn89d.js → index-2z710v4x.js} +10 -10
  113. package/dist/{index-xmmkyx82.js → index-dgz61nff.js} +20 -18
  114. package/dist/{index-wgsw9xcz.js → index-g6tbb6ve.js} +1 -1
  115. package/dist/index-h2ek08d6.js +40 -0
  116. package/dist/index-pqfwh9nn.js +41 -0
  117. package/dist/{index-epr2gnbw.js → index-x5aktmp8.js} +1 -1
  118. package/dist/{index-x0q2a4f9.js → index-ysd45kgc.js} +1 -1
  119. package/dist/{index-g909y089.js → index-zgvqzjsw.js} +8 -8
  120. package/dist/{keepalive-4djvbm2j.js → keepalive-nhvpw10z.js} +4 -4
  121. package/dist/lead-jb6sf69z.js +78 -0
  122. package/dist/{maintenance-f3xhnjsm.js → maintenance-agakc519.js} +1 -1
  123. package/dist/{oauth-refresh-sweep-fpd6x6rw.js → oauth-refresh-sweep-4dcbhtn0.js} +3 -3
  124. package/dist/{onboard-196tjgyn.js → onboard-4n2kwa4v.js} +3 -3
  125. package/dist/{opencode-adapter-eeesgfqk.js → opencode-adapter-3s7ax02e.js} +7 -7
  126. package/dist/{otel-impl-g8fh4c21.js → otel-impl-tfa12080.js} +2 -2
  127. package/dist/{pi-mono-adapter-zasp3ze3.js → pi-mono-adapter-ytp7gz8b.js} +24 -13
  128. package/dist/{pricing-refresh-sdcf5yaz.js → pricing-refresh-3cqx3f3x.js} +3 -3
  129. package/dist/{rbac-roles-bsp5657v.js → rbac-roles-9fae5rnv.js} +5 -3
  130. package/dist/{rbac-roles-2x4g1wb5.js → rbac-roles-y6zbfzve.js} +2 -2
  131. package/dist/{render-v2-0pyb39bb.js → render-v2-emawjvc4.js} +3 -3
  132. package/dist/{resume-a86tkj6r.js → resume-zhgts7h7.js} +10 -8
  133. package/dist/{runtime-ar8310ba.js → runtime-xe3aqy4x.js} +1 -1
  134. package/dist/session-access-cm823e06.js +25 -0
  135. package/dist/{setup-ypbzcapd.js → setup-tkp99w1e.js} +1 -1
  136. package/dist/{virtual-modules-wzk6jf3a.js → virtual-modules-4r3zkc20.js} +2 -2
  137. package/dist/{work-objects-yjp8de12.js → work-objects-f722h263.js} +23 -21
  138. package/dist/worker-p7f336rq.js +78 -0
  139. package/dist/{x-8ewt8gxn.js → x-y45mthwn.js} +2 -2
  140. package/openapi.json +1086 -305
  141. package/package.json +2 -2
  142. package/src/apps/action-caller.ts +6 -0
  143. package/src/apps/action-runner.ts +146 -0
  144. package/src/apps/row-store.ts +4 -2
  145. package/src/apps/script-types.ts +17 -4
  146. package/src/be/db/active-sessions.ts +5 -0
  147. package/src/be/db/session-visibility.ts +29 -0
  148. package/src/be/db/tasks/read.ts +61 -3
  149. package/src/be/db/tasks/write.ts +15 -6
  150. package/src/be/db.ts +106 -37
  151. package/src/be/events.ts +11 -0
  152. package/src/be/fleet-benchmark-stats.ts +10 -5
  153. package/src/be/migrations/230_session_shares.sql +23 -0
  154. package/src/be/models-catalog.ts +4 -0
  155. package/src/be/onboarding.ts +6 -0
  156. package/src/be/rbac-roles.ts +2 -0
  157. package/src/be/scripts/typecheck.ts +13 -0
  158. package/src/be/session-shares.ts +244 -0
  159. package/src/be/swarm-config-guard.ts +33 -3
  160. package/src/be/telemetry-enable.ts +1 -1
  161. package/src/commands/provider-credentials.ts +12 -2
  162. package/src/commands/runner.ts +14 -0
  163. package/src/heartbeat/heartbeat.ts +2 -2
  164. package/src/hooks/codex-hook.ts +6 -2
  165. package/src/hooks/hook.ts +7 -0
  166. package/src/hooks/pr-body-guard.ts +38 -11
  167. package/src/hooks/pr-room-guard.ts +88 -0
  168. package/src/http/active-sessions.ts +13 -2
  169. package/src/http/agents.ts +11 -3
  170. package/src/http/all-routes.ts +1 -0
  171. package/src/http/api-keys.ts +3 -1
  172. package/src/http/approval-requests.ts +2 -1
  173. package/src/http/apps.ts +118 -190
  174. package/src/http/config.ts +3 -0
  175. package/src/http/context.ts +2 -0
  176. package/src/http/core.ts +39 -2
  177. package/src/http/events.ts +6 -2
  178. package/src/http/favorite-owner.ts +1 -1
  179. package/src/http/fleet-benchmark.ts +79 -30
  180. package/src/http/fs.ts +38 -3
  181. package/src/http/global-config.ts +7 -0
  182. package/src/http/index.ts +3 -1
  183. package/src/http/memory.ts +3 -1
  184. package/src/http/ranking.ts +351 -0
  185. package/src/http/realtime.ts +26 -21
  186. package/src/http/route-def.ts +77 -11
  187. package/src/http/script-runs.ts +2 -1
  188. package/src/http/scripts.ts +8 -0
  189. package/src/http/session-access.ts +179 -0
  190. package/src/http/session-data.ts +10 -2
  191. package/src/http/sessions.ts +212 -12
  192. package/src/http/stats.ts +7 -3
  193. package/src/http/tasks.ts +85 -8
  194. package/src/http/telemetry-ui.ts +1 -1
  195. package/src/http/used-by.ts +64 -20
  196. package/src/http/users.ts +2 -2
  197. package/src/prompts/session-templates.ts +3 -1
  198. package/src/providers/amp-adapter.ts +1 -1
  199. package/src/providers/pi-mono-adapter.ts +15 -0
  200. package/src/providers/reasoning-effort.ts +2 -1
  201. package/src/providers/types.ts +2 -0
  202. package/src/ranking/telemetry-ranking.ts +119 -0
  203. package/src/ranking/usage.ts +57 -0
  204. package/src/rbac/admission.ts +22 -7
  205. package/src/rbac/legacy-policy.ts +2 -0
  206. package/src/rbac/permissions.ts +9 -0
  207. package/src/realtime/auth.ts +69 -0
  208. package/src/realtime/tickets.ts +4 -1
  209. package/src/realtime/transport.ts +77 -9
  210. package/src/scripts-runtime/sdk-allowlist.ts +7 -0
  211. package/src/scripts-runtime/types/stdlib.d.ts +31 -0
  212. package/src/scripts-runtime/types/swarm-sdk.d.ts +31 -0
  213. package/src/server.ts +4 -0
  214. package/src/slack/blocks.ts +18 -0
  215. package/src/slack/dm.ts +29 -0
  216. package/src/telemetry-context.ts +19 -1
  217. package/src/telemetry-contract/EVENTS.md +45 -8
  218. package/src/telemetry-contract/SOURCE.json +38 -4
  219. package/src/telemetry-contract/catalog.json +294 -5
  220. package/src/telemetry-contract/ranking/fixtures/expected.json +30 -0
  221. package/src/telemetry-contract/ranking/fixtures/invalid/bad-category.json +11 -0
  222. package/src/telemetry-contract/ranking/fixtures/invalid/bad-claim.json +11 -0
  223. package/src/telemetry-contract/ranking/fixtures/invalid/blank-description.json +11 -0
  224. package/src/telemetry-contract/ranking/fixtures/invalid/blank-name.json +11 -0
  225. package/src/telemetry-contract/ranking/fixtures/invalid/description-too-long.json +11 -0
  226. package/src/telemetry-contract/ranking/fixtures/invalid/domain-uppercase.json +11 -0
  227. package/src/telemetry-contract/ranking/fixtures/invalid/domain-with-scheme.json +11 -0
  228. package/src/telemetry-contract/ranking/fixtures/invalid/domain-with-www.json +11 -0
  229. package/src/telemetry-contract/ranking/fixtures/invalid/http-source-url.json +11 -0
  230. package/src/telemetry-contract/ranking/fixtures/invalid/missing-description.json +10 -0
  231. package/src/telemetry-contract/ranking/fixtures/invalid/missing-version.json +10 -0
  232. package/src/telemetry-contract/ranking/fixtures/invalid/name-not-string.json +11 -0
  233. package/src/telemetry-contract/ranking/fixtures/invalid/name-too-long.json +11 -0
  234. package/src/telemetry-contract/ranking/fixtures/invalid/not-object.json +1 -0
  235. package/src/telemetry-contract/ranking/fixtures/invalid/null.json +1 -0
  236. package/src/telemetry-contract/ranking/fixtures/invalid/other-with-subcategory.json +11 -0
  237. package/src/telemetry-contract/ranking/fixtures/invalid/oversize.json +1 -0
  238. package/src/telemetry-contract/ranking/fixtures/invalid/short-claim.json +11 -0
  239. package/src/telemetry-contract/ranking/fixtures/invalid/subcategory-other-category.json +11 -0
  240. package/src/telemetry-contract/ranking/fixtures/invalid/trailing-data.json +1 -0
  241. package/src/telemetry-contract/ranking/fixtures/invalid/unknown-field.json +12 -0
  242. package/src/telemetry-contract/ranking/fixtures/invalid/unsupported-version.json +11 -0
  243. package/src/telemetry-contract/ranking/fixtures/invalid/updated-at-not-date.json +11 -0
  244. package/src/telemetry-contract/ranking/fixtures/invalid/updated-at-offset.json +11 -0
  245. package/src/telemetry-contract/ranking/fixtures/invalid/wrong-case-field.json +11 -0
  246. package/src/telemetry-contract/ranking/fixtures/valid/category-without-subcategory.json +11 -0
  247. package/src/telemetry-contract/ranking/fixtures/valid/full.json +11 -0
  248. package/src/telemetry-contract/ranking/fixtures/valid/minimal.json +11 -0
  249. package/src/telemetry-contract/ranking/fixtures/valid/no-claim.json +10 -0
  250. package/src/telemetry-contract/ranking/fixtures/valid/padded-text.json +11 -0
  251. package/src/telemetry-contract/ranking/fixtures/valid/unicode-name.json +11 -0
  252. package/src/telemetry-contract/ranking/listing.v1.schema.json +61 -0
  253. package/src/telemetry-contract/ranking/taxonomy.json +8 -0
  254. package/src/telemetry-contract/ranking-taxonomy.gen.ts +11 -0
  255. package/src/telemetry-contract/types.gen.ts +963 -58
  256. package/src/telemetry-identity.ts +47 -9
  257. package/src/telemetry-snapshot.ts +9 -1
  258. package/src/telemetry-ui-events.ts +9 -2
  259. package/src/telemetry.ts +40 -5
  260. package/src/tests/app-action-run-tool.test.ts +178 -0
  261. package/src/tests/app-row-tools.test.ts +360 -0
  262. package/src/tests/apps-rbac.test.ts +189 -2
  263. package/src/tests/apps-script-types.test.ts +16 -3
  264. package/src/tests/credential-check.test.ts +38 -0
  265. package/src/tests/db-extraction-contract.test.ts +1 -0
  266. package/src/tests/db-task-read-contract.test.ts +1 -0
  267. package/src/tests/docs-index-footprint.test.js +2 -2
  268. package/src/tests/fleet-benchmark.test.ts +122 -2
  269. package/src/tests/http-users.test.ts +62 -1
  270. package/src/tests/model-catalog-table.test.ts +63 -0
  271. package/src/tests/model-profiles-api.test.ts +19 -7
  272. package/src/tests/models-catalog.test.ts +50 -0
  273. package/src/tests/onboarding.test.ts +21 -0
  274. package/src/tests/org-identity.test.ts +44 -0
  275. package/src/tests/org-website.test.ts +62 -0
  276. package/src/tests/pi-mono-adapter.test.ts +23 -0
  277. package/src/tests/pr-body-leaks.test.ts +4 -0
  278. package/src/tests/pr-room-guard.test.ts +242 -0
  279. package/src/tests/ranking-listing.test.ts +97 -0
  280. package/src/tests/ranking-route.test.ts +321 -0
  281. package/src/tests/ranking-usage.test.ts +50 -0
  282. package/src/tests/rbac-admission-e2e.test.ts +8 -0
  283. package/src/tests/rbac-admission.test.ts +38 -0
  284. package/src/tests/rbac-charact-http.test.ts +4 -3
  285. package/src/tests/rbac-engine.test.ts +2 -0
  286. package/src/tests/rbac-roles.test.ts +2 -0
  287. package/src/tests/realtime-room-surfaces.test.ts +3 -1
  288. package/src/tests/realtime-session-join-race.test.ts +142 -0
  289. package/src/tests/realtime-tickets.test.ts +24 -17
  290. package/src/tests/realtime-transport.test.ts +91 -0
  291. package/src/tests/reasoning-effort.test.ts +39 -3
  292. package/src/tests/runner-harness-telemetry-env.test.ts +56 -1
  293. package/src/tests/session-route-posture.test.ts +639 -0
  294. package/src/tests/session-sharing-routes.test.ts +282 -0
  295. package/src/tests/session-sharing.test.ts +526 -0
  296. package/src/tests/sessions-detail-batch.test.ts +7 -1
  297. package/src/tests/slack-tool-blocks.test.ts +101 -0
  298. package/src/tests/slack-update.test.ts +55 -0
  299. package/src/tests/slack-user-dm.test.ts +177 -0
  300. package/src/tests/swarm-tool-result-gate.test.ts +2 -4
  301. package/src/tests/telemetry-context.test.ts +128 -2
  302. package/src/tests/telemetry-ui-route.test.ts +123 -0
  303. package/src/tests/tool-annotations.test.ts +3 -2
  304. package/src/tests/used-by-route.test.ts +153 -9
  305. package/src/tests/workflow-agent-task-retry.test.ts +130 -4
  306. package/src/tests/workflow-wait-recovery.test.ts +116 -4
  307. package/src/tools/app-action-run.ts +63 -0
  308. package/src/tools/app-rows.ts +234 -0
  309. package/src/tools/model-catalog/index.ts +1 -1
  310. package/src/tools/slack-post.ts +18 -12
  311. package/src/tools/slack-read.ts +13 -1
  312. package/src/tools/slack-reply.ts +7 -10
  313. package/src/tools/slack-start-thread.ts +18 -11
  314. package/src/tools/slack-update.ts +2 -9
  315. package/src/tools/tool-config.ts +8 -0
  316. package/src/tools/utils.ts +1 -1
  317. package/src/tools/workflows/retry-workflow-run.ts +1 -1
  318. package/src/types.ts +52 -0
  319. package/src/utils/company-profile.ts +24 -0
  320. package/src/utils/org-identity.ts +33 -0
  321. package/src/utils/org-website.ts +58 -21
  322. package/src/workflows/recovery.ts +10 -22
  323. package/src/workflows/resume.ts +16 -0
  324. package/src/workflows/task-step-routing.ts +47 -7
  325. package/templates/skills/apps/SKILL.md +58 -2
  326. package/templates/skills/apps/content.md +58 -2
  327. package/dist/handlers-tb3xgjnm.js +0 -37
  328. package/dist/index-nyfcdpky.js +0 -39
  329. package/dist/index-vjn3wbzf.js +0 -38
  330. package/dist/lead-61kqp604.js +0 -76
  331. package/dist/worker-4ptnn1ge.js +0 -76
  332. package/dist/{cli-n5mrsg0f.js → cli-60cgh1rv.js} +3 -3
package/README.md CHANGED
@@ -118,6 +118,7 @@ AgentMail archives verified inbound deliveries before acknowledging them and ret
118
118
  - [Getting started](https://docs.agent-swarm.dev/docs/getting-started) · [Architecture](https://docs.agent-swarm.dev/docs/architecture/overview) · [Playbooks](https://docs.agent-swarm.dev/docs/playbooks) · [CLI](https://docs.agent-swarm.dev/docs/reference/cli) · [API reference](https://docs.agent-swarm.dev/docs/api-reference)
119
119
  - [Orchestration patterns](./docs/orchestration-patterns.md) — Five patterns for delegating, fanning out, gating on humans, retrying, and persisting multi-step agent work
120
120
  - [Agent templates](https://templates.agent-swarm.dev)
121
+ - [Public ranking](https://docs.agent-swarm.dev/docs/reference/telemetry#public-ranking): opt in with **Get ranked** (Settings → Configuration → Branding) to rank your install by tokens used on [agent-swarm.dev/ranking](https://agent-swarm.dev/ranking). It shows at the next hourly refresh. Token totals are public and exact; telemetry, the organization name and website must be set.
121
122
  - Help: [contact@desplega.sh](mailto:contact@desplega.sh) · [Discord](https://discord.gg/KZgfyyDVZa)
122
123
 
123
124
  ## Contributing
@@ -1,21 +1,21 @@
1
1
  import {
2
2
  ACPAdapter2
3
- } from "./cli-a17tzmn0.js";
4
- import"./cli-rc3r0bnh.js";
5
- import"./cli-9td5ss65.js";
6
- import"./cli-a49vpbf3.js";
3
+ } from "./cli-3tnpj2bh.js";
4
+ import"./cli-xbzvet96.js";
5
+ import"./cli-zfg9enh9.js";
7
6
  import"./cli-4bd1rck6.js";
8
7
  import"./cli-jc1g9ndz.js";
9
- import"./cli-etvn5ej2.js";
10
- import"./cli-jhp7w1fy.js";
8
+ import"./cli-a5ebc95n.js";
9
+ import"./cli-pnp2j5zg.js";
11
10
  import"./cli-0726awxw.js";
12
- import"./cli-p22zdvnt.js";
11
+ import"./cli-5kqnemen.js";
12
+ import"./cli-bn0rewsy.js";
13
13
  import"./cli-v1sjhn52.js";
14
14
  import"./cli-3h26v7yj.js";
15
15
  import"./cli-7a91w22y.js";
16
16
  import"./cli-3ggwdtb0.js";
17
- import"./cli-8cvvytad.js";
18
- import"./cli-vjfpshn3.js";
17
+ import"./cli-8nyhf7za.js";
18
+ import"./cli-ejs3m1sx.js";
19
19
  import"./cli-13p25grh.js";
20
20
  import"./cli-0adyhvq2.js";
21
21
  import"./cli-445c1vp7.js";
@@ -6,16 +6,16 @@ import {
6
6
  getTaskById2,
7
7
  cancelTask2,
8
8
  init_db3
9
- } from "./cli-re4wkbzx.js";
10
- import"./cli-fhvqt2fp.js";
11
- import"./cli-qrwp40st.js";
12
- import"./cli-kqypty34.js";
9
+ } from "./cli-rqqsfz30.js";
10
+ import"./cli-sv5gb0yb.js";
11
+ import"./cli-3p8fqcnh.js";
12
+ import"./cli-k9z4zd4p.js";
13
13
  import {
14
14
  createTaskWithSiblingAwareness
15
- } from "./cli-8qsx817b.js";
16
- import"./cli-jhmjwqcg.js";
17
- import"./cli-65q70v2v.js";
18
- import"./cli-g6p7c2my.js";
15
+ } from "./cli-kr2pmfqx.js";
16
+ import"./cli-kmqgmcnb.js";
17
+ import"./cli-0bh477zn.js";
18
+ import"./cli-sjyetj21.js";
19
19
  import"./cli-3ggwdtb0.js";
20
20
  import {
21
21
  noteSlackInboundSideEffect,
@@ -26,30 +26,32 @@ import {
26
26
  getAgentEmoji,
27
27
  isSlackRenderV2Enabled2,
28
28
  ensureSlackThreadTree2
29
- } from "./cli-dxwh4j32.js";
29
+ } from "./cli-vy0fay6k.js";
30
30
  import {
31
31
  EXTERNAL_CHANNEL_BLOCKED_REPLY2,
32
32
  shouldBlockChannel2
33
- } from "./cli-9e9kjqsj.js";
34
- import"./cli-q1812jbw.js";
35
- import"./cli-8cvvytad.js";
33
+ } from "./cli-mfe7f7b5.js";
34
+ import"./cli-tbhwrxpt.js";
35
+ import"./cli-8nyhf7za.js";
36
36
  import"./cli-kvzgak7c.js";
37
37
  import"./cli-445c1vp7.js";
38
- import"./cli-vjfpshn3.js";
39
- import"./cli-ptkpaqfy.js";
38
+ import"./cli-ejs3m1sx.js";
39
+ import"./cli-wt645v7q.js";
40
40
  import"./cli-qz93y3x5.js";
41
- import"./cli-6vcyw6v7.js";
42
- import"./cli-xgn4rwyv.js";
41
+ import"./cli-nx462e4v.js";
42
+ import"./cli-s48yvzb8.js";
43
43
  import"./cli-7a91w22y.js";
44
44
  import"./cli-qje9k2nh.js";
45
- import"./cli-hz64bcnj.js";
45
+ import"./cli-bn5kevnf.js";
46
+ import"./cli-z071fb95.js";
46
47
  import"./cli-3h26v7yj.js";
47
- import"./cli-rdr166ht.js";
48
+ import"./cli-smvcw9z5.js";
48
49
  import {
49
50
  resolveSlackUserId
50
- } from "./cli-y3dvz6ge.js";
51
+ } from "./cli-3r448dqn.js";
51
52
  import"./cli-13p25grh.js";
52
53
  import"./cli-0adyhvq2.js";
54
+ import"./cli-fz9kewbh.js";
53
55
 
54
56
  // src/slack/actions.ts
55
57
  init_db3();
@@ -2,11 +2,11 @@ import {
2
2
  checkAmpCredentials2,
3
3
  liveTestAmpCredentials2,
4
4
  AmpAdapter2
5
- } from "./cli-6p7ddg72.js";
5
+ } from "./cli-xftrvxag.js";
6
6
  import"./cli-jc1g9ndz.js";
7
- import"./cli-jhp7w1fy.js";
8
- import"./cli-p22zdvnt.js";
9
- import"./cli-fhvqt2fp.js";
7
+ import"./cli-a5ebc95n.js";
8
+ import"./cli-bn0rewsy.js";
9
+ import"./cli-sv5gb0yb.js";
10
10
  import"./cli-7a91w22y.js";
11
11
  import"./cli-3ggwdtb0.js";
12
12
  export {
@@ -3,9 +3,9 @@ import {
3
3
  initSlackApp2,
4
4
  startSlackApp2,
5
5
  stopSlackApp2
6
- } from "./cli-dxwh4j32.js";
7
- import"./cli-9e9kjqsj.js";
8
- import"./cli-re4wkbzx.js";
6
+ } from "./cli-vy0fay6k.js";
7
+ import"./cli-mfe7f7b5.js";
8
+ import"./cli-rqqsfz30.js";
9
9
  export {
10
10
  getSlackApp2 as getSlackApp,
11
11
  initSlackApp2 as initSlackApp,
@@ -6,7 +6,7 @@ import {
6
6
  getMostRecentTaskInThread2,
7
7
  reactionName,
8
8
  init_db3
9
- } from "./cli-re4wkbzx.js";
9
+ } from "./cli-rqqsfz30.js";
10
10
  import {
11
11
  require_dist4,
12
12
  noteSlackInboundSideEffect,
@@ -17,53 +17,55 @@ import {
17
17
  markSlackSessionProcessing,
18
18
  isSlackRenderV2Enabled2,
19
19
  ensureSlackThreadTree2
20
- } from "./cli-dxwh4j32.js";
20
+ } from "./cli-vy0fay6k.js";
21
21
  import {
22
22
  shouldBlockChannel2
23
- } from "./cli-9e9kjqsj.js";
23
+ } from "./cli-mfe7f7b5.js";
24
24
  import {
25
25
  buildEffectiveText,
26
26
  fetchSlackFiles,
27
27
  createSlackTaskWithFiles,
28
28
  notifySlackFileFailures,
29
29
  hasOtherUserMention
30
- } from "./cli-8qsx817b.js";
30
+ } from "./cli-kr2pmfqx.js";
31
31
  import {
32
32
  resolveSlackUserId,
33
33
  rewriteSlackMentions
34
- } from "./cli-y3dvz6ge.js";
34
+ } from "./cli-3r448dqn.js";
35
35
  import {
36
36
  wasEventSeen,
37
37
  bufferThreadMessage,
38
38
  getBufferMessageCount
39
- } from "./cli-30m5q8mc.js";
39
+ } from "./cli-3kh4kpqy.js";
40
40
  import"./cli-qje9k2nh.js";
41
- import"./cli-fhvqt2fp.js";
42
- import"./cli-qrwp40st.js";
43
- import"./cli-kqypty34.js";
44
- import"./cli-jhmjwqcg.js";
45
- import"./cli-65q70v2v.js";
46
- import"./cli-g6p7c2my.js";
41
+ import"./cli-sv5gb0yb.js";
42
+ import"./cli-3p8fqcnh.js";
43
+ import"./cli-k9z4zd4p.js";
44
+ import"./cli-kmqgmcnb.js";
45
+ import"./cli-0bh477zn.js";
46
+ import"./cli-sjyetj21.js";
47
47
  import"./cli-3ggwdtb0.js";
48
- import"./cli-q1812jbw.js";
49
- import"./cli-8cvvytad.js";
48
+ import"./cli-tbhwrxpt.js";
49
+ import"./cli-8nyhf7za.js";
50
50
  import"./cli-kvzgak7c.js";
51
51
  import"./cli-445c1vp7.js";
52
- import"./cli-vjfpshn3.js";
53
- import"./cli-ptkpaqfy.js";
52
+ import"./cli-ejs3m1sx.js";
53
+ import"./cli-wt645v7q.js";
54
54
  import"./cli-qz93y3x5.js";
55
- import"./cli-6vcyw6v7.js";
56
- import"./cli-xgn4rwyv.js";
55
+ import"./cli-nx462e4v.js";
56
+ import"./cli-s48yvzb8.js";
57
57
  import"./cli-7a91w22y.js";
58
- import"./cli-hz64bcnj.js";
58
+ import"./cli-bn5kevnf.js";
59
+ import"./cli-z071fb95.js";
59
60
  import"./cli-3h26v7yj.js";
60
- import"./cli-rdr166ht.js";
61
+ import"./cli-smvcw9z5.js";
61
62
  import"./cli-13p25grh.js";
62
63
  import"./cli-0adyhvq2.js";
64
+ import"./cli-fz9kewbh.js";
63
65
  import {
64
66
  resolveTemplate,
65
67
  init_resolver
66
- } from "./cli-w7z94e6c.js";
68
+ } from "./cli-tx00c0h6.js";
67
69
  import {
68
70
  isEnvFlagEnabled,
69
71
  init_env_flag
@@ -6,7 +6,7 @@ import {
6
6
  getMemoryStore2,
7
7
  init_memory,
8
8
  init_db3
9
- } from "./cli-re4wkbzx.js";
9
+ } from "./cli-rqqsfz30.js";
10
10
 
11
11
  // src/be/memory/boot-reembed.ts
12
12
  init_db3();
@@ -4,7 +4,7 @@ import {
4
4
  embedScript,
5
5
  init_embeddings,
6
6
  init_db3
7
- } from "./cli-re4wkbzx.js";
7
+ } from "./cli-rqqsfz30.js";
8
8
 
9
9
  // src/be/scripts/boot-reembed.ts
10
10
  init_db3();
@@ -7,16 +7,16 @@ import {
7
7
  getMemoryStore2,
8
8
  init_memory,
9
9
  init_db3
10
- } from "./cli-re4wkbzx.js";
10
+ } from "./cli-rqqsfz30.js";
11
11
  import {
12
12
  contentSha256,
13
13
  init_profile_sync
14
- } from "./cli-cby329ny.js";
14
+ } from "./cli-x5mq1fyq.js";
15
15
  import {
16
16
  SCRUBBER_RULES_VERSION,
17
17
  scrubSecrets,
18
18
  init_secret_scrubber
19
- } from "./cli-4mkvwgzr.js";
19
+ } from "./cli-xf234ws8.js";
20
20
 
21
21
  // src/be/boot-scrub-sweep.ts
22
22
  init_profile_sync();
@@ -79,7 +79,7 @@ async function runBootScrubSweep(opts = {}) {
79
79
  console.log(`[${tag}] complete`);
80
80
  const memoryChanged = stats.find((s) => s.table === "agent_memory")?.changed ?? 0;
81
81
  if (memoryChanged > 0 && opts.reembed !== false) {
82
- const { runBootReembed } = await import("./boot-reembed-p666cw5n.js");
82
+ const { runBootReembed } = await import("./boot-reembed-e53x6b9v.js");
83
83
  await runBootReembed();
84
84
  }
85
85
  return stats;
@@ -2,10 +2,10 @@ import {
2
2
  ensurePricingSeeded2,
3
3
  ensureRbacSeeded2,
4
4
  ensureModelProfilesSeeded2
5
- } from "./cli-xgn4rwyv.js";
6
- import"./cli-qrwp40st.js";
7
- import"./cli-6vcyw6v7.js";
8
- import"./cli-re4wkbzx.js";
5
+ } from "./cli-s48yvzb8.js";
6
+ import"./cli-3p8fqcnh.js";
7
+ import"./cli-nx462e4v.js";
8
+ import"./cli-rqqsfz30.js";
9
9
  export {
10
10
  ensureModelProfilesSeeded2 as ensureModelProfilesSeeded,
11
11
  ensurePricingSeeded2 as ensurePricingSeeded,
@@ -4,23 +4,23 @@ import {
4
4
  buildClaudeSessionEnvironment2,
5
5
  runClaudeSessionSummary2,
6
6
  ClaudeAdapter2
7
- } from "./cli-hn3pftj2.js";
8
- import"./cli-1v8w782f.js";
9
- import"./cli-k28p6xh7.js";
10
- import"./cli-c5sbmw1v.js";
7
+ } from "./cli-gf0kfg81.js";
8
+ import"./cli-z1ew8vbq.js";
9
+ import"./cli-7225gwj7.js";
10
+ import"./cli-d82btycs.js";
11
11
  import"./cli-vbhgkw9h.js";
12
12
  import"./cli-4bd1rck6.js";
13
13
  import"./cli-jc1g9ndz.js";
14
- import"./cli-etvn5ej2.js";
15
- import"./cli-jhp7w1fy.js";
14
+ import"./cli-a5ebc95n.js";
15
+ import"./cli-pnp2j5zg.js";
16
16
  import"./cli-0726awxw.js";
17
17
  import"./cli-gx4rm0qx.js";
18
- import"./cli-p22zdvnt.js";
18
+ import"./cli-bn0rewsy.js";
19
19
  import"./cli-3h26v7yj.js";
20
20
  import"./cli-7a91w22y.js";
21
21
  import"./cli-3ggwdtb0.js";
22
- import"./cli-8cvvytad.js";
23
- import"./cli-vjfpshn3.js";
22
+ import"./cli-8nyhf7za.js";
23
+ import"./cli-ejs3m1sx.js";
24
24
  import"./cli-13p25grh.js";
25
25
  import"./cli-0adyhvq2.js";
26
26
  import"./cli-445c1vp7.js";
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  checkClaudeManagedCredentials2,
3
3
  ClaudeManagedAdapter2
4
- } from "./cli-j0v75y13.js";
4
+ } from "./cli-a0kcty51.js";
5
5
  import"./cli-4zsenjhy.js";
6
6
  import"./cli-kr5tjjtz.js";
7
- import"./cli-er83cjbn.js";
8
- import"./cli-jhp7w1fy.js";
7
+ import"./cli-a5ebc95n.js";
9
8
  import"./cli-0726awxw.js";
9
+ import"./cli-er83cjbn.js";
10
10
  export {
11
11
  ClaudeManagedAdapter2 as ClaudeManagedAdapter,
12
12
  checkClaudeManagedCredentials2 as checkClaudeManagedCredentials
@@ -2,7 +2,7 @@ import {
2
2
  toFile,
3
3
  Anthropic
4
4
  } from "./cli-er83cjbn.js";
5
- import"./cli-vjfpshn3.js";
5
+ import"./cli-ejs3m1sx.js";
6
6
  import {
7
7
  buildSkillContent
8
8
  } from "./cli-691vz9mk.js";
@@ -12,7 +12,7 @@ import {
12
12
  import {
13
13
  DEFAULT_MODEL_TIER_MAP,
14
14
  init_types
15
- } from "./cli-yv0vgscc.js";
15
+ } from "./cli-fpmsqq59.js";
16
16
  import {
17
17
  getApiKey,
18
18
  init_api_key
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getContextWindowSize
3
- } from "./cli-jhp7w1fy.js";
3
+ } from "./cli-a5ebc95n.js";
4
4
  import {
5
5
  redactRateLimitEvent,
6
6
  SessionErrorTracker,
@@ -14,15 +14,15 @@ import {
14
14
  terminateProcessGroup
15
15
  } from "./cli-3ggwdtb0.js";
16
16
  import"./cli-3h26v7yj.js";
17
- import"./cli-k28p6xh7.js";
17
+ import"./cli-7225gwj7.js";
18
18
  import"./cli-445c1vp7.js";
19
- import"./cli-8cvvytad.js";
19
+ import"./cli-8nyhf7za.js";
20
20
  import"./cli-kvzgak7c.js";
21
- import"./cli-vjfpshn3.js";
22
- import"./cli-etvn5ej2.js";
23
- import"./cli-c5sbmw1v.js";
21
+ import"./cli-ejs3m1sx.js";
22
+ import"./cli-pnp2j5zg.js";
23
+ import"./cli-d82btycs.js";
24
24
  import"./cli-0726awxw.js";
25
- import"./cli-1v8w782f.js";
25
+ import"./cli-z1ew8vbq.js";
26
26
  import"./cli-7a91w22y.js";
27
27
  import {
28
28
  ClaudeBackgroundKeepalive,
@@ -30,17 +30,17 @@ import {
30
30
  cleanupTaskFile2,
31
31
  buildClaudeSessionEnvironment2,
32
32
  runClaudeSessionSummary2
33
- } from "./cli-hn3pftj2.js";
33
+ } from "./cli-gf0kfg81.js";
34
34
  import"./cli-jc1g9ndz.js";
35
35
  import"./cli-4bd1rck6.js";
36
36
  import"./cli-vbhgkw9h.js";
37
- import"./cli-p22zdvnt.js";
37
+ import"./cli-bn0rewsy.js";
38
38
  import"./cli-13p25grh.js";
39
39
  import"./cli-0adyhvq2.js";
40
40
  import {
41
41
  scrubSecrets,
42
42
  init_secret_scrubber
43
- } from "./cli-4mkvwgzr.js";
43
+ } from "./cli-xf234ws8.js";
44
44
 
45
45
  // src/providers/claude-sdk-session.ts
46
46
  import { EventEmitter } from "node:events";
@@ -29346,7 +29346,7 @@ class cy {
29346
29346
  try {
29347
29347
  if (await this.sdkMcpServers.get(p)?.connection, n)
29348
29348
  return;
29349
- let m = await this.handleMcpControlRequest(p, { server_name: p, message: { jsonrpc: "2.0", id: ly + "initialize", method: "initialize", params: { protocolVersion: Y4, capabilities: V4, clientInfo: { ...q4, version: "0.3.302" } } } }, f);
29349
+ let m = await this.handleMcpControlRequest(p, { server_name: p, message: { jsonrpc: "2.0", id: ly + "initialize", method: "initialize", params: { protocolVersion: Y4, capabilities: V4, clientInfo: { ...q4, version: "0.3.303" } } } }, f);
29350
29350
  if (n)
29351
29351
  return;
29352
29352
  if (!("result" in m)) {
@@ -30634,7 +30634,7 @@ function Zx(e, t) {
30634
30634
  p = s.prompt, g = s.snapshot;
30635
30635
  else if (s.type === "preset")
30636
30636
  f = s.append, m = s.excludeDynamicSections, g = s.snapshot;
30637
- process.env.CLAUDE_AGENT_SDK_VERSION = "0.3.302";
30637
+ process.env.CLAUDE_AGENT_SDK_VERSION = "0.3.303";
30638
30638
  let { abortController: _ = kp(), additionalDirectories: S = [], projectConfigRoot: y, agent: b, agents: E, allowedTools: C = [], betas: A, canUseTool: w, continue: L, cwd: U, debug: F, debugFile: ue, disallowedTools: O = [], tools: T, env: v, executable: D = nl() ? "bun" : "node", executableArgs: K = [], extraArgs: X = {}, fallbackModel: pe, enableFileCheckpointing: H, toolConfig: W, forkSession: Ot, hooks: ln, includeHookEvents: mt, includePartialMessages: Dt, forwardSubagentText: wt, verbatimPrompts: Zt = false, onElicitation: Je, onUserDialog: he, supportedDialogKinds: Yt, perTaskStopAffordance: cn, rapidFollowupPreempt: ts, workspaceTrust: ga, persistSession: ns, sessionStore: wn, sessionStoreFlush: my, thinking: qe, effort: _r, maxThinkingTokens: Bn, maxTurns: Si, maxBudgetUsd: ha, taskBudget: $p, mcpServers: _a, model: zp, outputFormat: Qx, permissionMode: eJ, allowDangerouslySkipPermissions: tJ = false, permissionPromptToolName: nJ, permissionPrompts: rJ, plugins: Hp, pluginDelivery: gy = "argv", getOAuthToken: ev, getHostAuthToken: tv, workload: nv, resume: rv, resumeSessionAt: oJ, resumeDropsTurn: sJ, sessionId: iJ, skills: ov, stderr: aJ, strictMcpConfig: lJ } = d, sv = eJ;
30639
30639
  if (wn && ns === false)
30640
30640
  throw Error("sessionStore cannot be used with persistSession: false -- the storage adapter requires local writes to mirror from. Use CLAUDE_CONFIG_DIR=/tmp for ephemeral local writes with external mirroring.");
@@ -30660,7 +30660,7 @@ function Zx(e, t) {
30660
30660
  if (!Ct.CLAUDE_CODE_ENTRYPOINT)
30661
30661
  Ct.CLAUDE_CODE_ENTRYPOINT = "sdk-ts";
30662
30662
  if (!Ct.CLAUDE_AGENT_SDK_VERSION)
30663
- Ct.CLAUDE_AGENT_SDK_VERSION = "0.3.302";
30663
+ Ct.CLAUDE_AGENT_SDK_VERSION = "0.3.303";
30664
30664
  if (H)
30665
30665
  Ct.CLAUDE_CODE_ENABLE_SDK_FILE_CHECKPOINTING = "true";
30666
30666
  if (!Object.keys(Ct).some((Jt) => Jt.toUpperCase() === "CLAUDE_CODE_SDK_READS_SESSION_STATE"))
@@ -38,14 +38,14 @@ import {
38
38
  getResolvedConfig2,
39
39
  getMcpServerById2,
40
40
  init_db3
41
- } from "./cli-re4wkbzx.js";
41
+ } from "./cli-rqqsfz30.js";
42
42
  import {
43
43
  generateRandomCodeVerifier,
44
44
  generateRandomState,
45
45
  calculatePKCECodeChallenge,
46
46
  oauthAppRowToProviderConfig,
47
47
  ensureAuthorizationTokenOrThrow
48
- } from "./cli-g6p7c2my.js";
48
+ } from "./cli-sjyetj21.js";
49
49
  import {
50
50
  detachedProcessGroup,
51
51
  registerProcessGroup,
@@ -57,7 +57,7 @@ import {
57
57
  import {
58
58
  defaultAssetKey,
59
59
  init_key
60
- } from "./cli-yv0vgscc.js";
60
+ } from "./cli-fpmsqq59.js";
61
61
  import {
62
62
  init_zod
63
63
  } from "./cli-4chz1hye.js";
@@ -98,7 +98,7 @@ import {
98
98
  refreshSecretScrubberCache,
99
99
  registerVolatileSecret,
100
100
  init_secret_scrubber
101
- } from "./cli-4mkvwgzr.js";
101
+ } from "./cli-xf234ws8.js";
102
102
  import {
103
103
  __toESM,
104
104
  __commonJS,
@@ -183434,6 +183434,13 @@ var APP_TYPES_PREAMBLE = `// ── Swarm Apps: generated per-app types (source:
183434
183434
  // Rows are the app's declared columns plus the 5 system columns. Query
183435
183435
  // overloads narrow only when appId AND query are string literals.
183436
183436
 
183437
+ export type AppActionCaller = {
183438
+ kind: "user" | "agent" | "operator" | "guest";
183439
+ id: string | null;
183440
+ name?: string;
183441
+ pageId?: string;
183442
+ };
183443
+
183437
183444
  export interface SwarmAppQueryResult<Row> {
183438
183445
  success: boolean;
183439
183446
  status: number;
@@ -183553,7 +183560,7 @@ function renderQuery(app, namespace, queryName, query, modelInterfaceName) {
183553
183560
  }): Promise<SwarmAppQueryResult<${namespace}.${modelInterfaceName}>>;`;
183554
183561
  }
183555
183562
  function renderApp(app, namespace) {
183556
- const modelNames = new Set(["ActionName"]);
183563
+ const modelNames = new Set(["ActionName", "ActionArgs", "AppActionCaller"]);
183557
183564
  const renderedModels = Object.entries(app.definition.models).map(([modelName, model]) => renderModel(modelName, model, modelNames));
183558
183565
  const modelInterfaces = new Map(Object.keys(app.definition.models).map((modelName, index) => [
183559
183566
  modelName,
@@ -183569,8 +183576,15 @@ ${renderedModels.map((model) => model.source).join(`
183569
183576
 
183570
183577
  `)}
183571
183578
 
183572
- /** Declared actions. Invocation is REST-only: POST /api/apps/<id>/actions/<name>. */
183579
+ /** Scripts can write rows. Declared actions are callable through REST or MCP only. */
183573
183580
  export type ActionName = ${actionType};
183581
+
183582
+ /** Script action arguments include server-stamped app and caller context. */
183583
+ export interface ActionArgs {
183584
+ app: { id: ${JSON.stringify(app.id)} };
183585
+ caller: AppActionCaller;
183586
+ [key: string]: unknown;
183587
+ }
183574
183588
  }
183575
183589
 
183576
183590
  export interface SwarmSdk {
@@ -184033,6 +184047,19 @@ export interface SwarmSdk {
184033
184047
  query: string;
184034
184048
  params?: Record<string, string | number | boolean>;
184035
184049
  }): Promise<unknown>;
184050
+ app_rows_list(args: {
184051
+ appId: string;
184052
+ model: string;
184053
+ equals?: Record<string, string | number | boolean>;
184054
+ sort?: \`\${string}:asc\` | \`\${string}:desc\`;
184055
+ limit?: number;
184056
+ }): Promise<unknown>;
184057
+ app_row_get(args: { appId: string; model: string; rowId: string }): Promise<unknown>;
184058
+ app_row_create(args: { appId: string; model: string; values: Record<string, unknown> }): Promise<unknown>;
184059
+ app_rows_create(args: { appId: string; model: string; rows: Record<string, unknown>[] }): Promise<unknown>;
184060
+ app_row_patch(args: { appId: string; model: string; rowId: string; values: Record<string, unknown> }): Promise<unknown>;
184061
+ app_row_delete(args: { appId: string; model: string; rowId: string }): Promise<unknown>;
184062
+ app_rows_delete(args: { appId: string; model: string; equals: Record<string, string | number | boolean>; limit?: number }): Promise<unknown>;
184036
184063
  app_rollback(args: {
184037
184064
  appId: string;
184038
184065
  version: number;
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  registerTemplate,
3
3
  init_registry
4
- } from "./cli-w7z94e6c.js";
4
+ } from "./cli-tx00c0h6.js";
5
5
  import {
6
6
  __esm
7
7
  } from "./cli-242037k3.js";
@@ -2,7 +2,7 @@ import {
2
2
  resolveTemplateAsync,
3
3
  init_resolver,
4
4
  init_session_templates
5
- } from "./cli-w7z94e6c.js";
5
+ } from "./cli-tx00c0h6.js";
6
6
 
7
7
  // src/prompts/steering-delivery.ts
8
8
  init_session_templates();
@@ -2,7 +2,7 @@ import {
2
2
  DEFAULT_E2B_API_BASE,
3
3
  redactWithEnv,
4
4
  init_env
5
- } from "./cli-3avfh5az.js";
5
+ } from "./cli-pemywhfq.js";
6
6
  import {
7
7
  __toESM,
8
8
  __esm
@@ -1037,7 +1037,7 @@ var require_jsonwebtoken = __commonJS(function(exports, module) {
1037
1037
  });
1038
1038
 
1039
1039
  // node_modules/path-to-regexp/dist/index.js
1040
- var require_dist5 = __commonJS(function(exports) {
1040
+ var require_dist9 = __commonJS(function(exports) {
1041
1041
  Object.defineProperty(exports, "__esModule", { value: true });
1042
1042
  exports.PathError = exports.TokenData = undefined;
1043
1043
  exports.parse = parse;
@@ -19820,7 +19820,7 @@ var require_layer = __commonJS(function(exports, module) {
19820
19820
  * MIT Licensed
19821
19821
  */
19822
19822
  var isPromise = require_is_promise();
19823
- var pathRegexp = require_dist5();
19823
+ var pathRegexp = require_dist9();
19824
19824
  var debug = require_src3()("router:layer");
19825
19825
  var deprecate = require_depd()("router");
19826
19826
  var TRAILING_SLASH_REGEXP = /\/+$/;
@@ -23251,4 +23251,4 @@ var require_express = __commonJS(function(exports, module) {
23251
23251
  exports.urlencoded = bodyParser.urlencoded;
23252
23252
  });
23253
23253
 
23254
- export { require_jsonwebtoken, require_dist5, require_raw_body, require_content_type, require_lib, require_vary, require_express };
23254
+ export { require_jsonwebtoken, require_dist9, require_raw_body, require_content_type, require_lib, require_vary, require_express };
@@ -13,6 +13,9 @@ import {
13
13
  } from "./cli-242037k3.js";
14
14
 
15
15
  // src/rbac/admission.ts
16
+ function grantedVerb(rbac, grant) {
17
+ return [rbac.permission, ...rbac.alsoAdmits ?? []].find((verb) => grant.verbs.has(verb));
18
+ }
16
19
  function isRbacEnabled() {
17
20
  return isEnvFlagEnabled("RBAC_ENABLED", true);
18
21
  }
@@ -21,10 +24,11 @@ function decideAdmission(input) {
21
24
  return { allow: true };
22
25
  }
23
26
  if (input.rbac && "permission" in input.rbac) {
24
- const verb = input.rbac.permission;
25
- if (input.grant.verbs.has(verb)) {
26
- return { allow: true, verb };
27
+ const granted = grantedVerb(input.rbac, input.grant);
28
+ if (granted) {
29
+ return { allow: true, verb: granted };
27
30
  }
31
+ const verb = input.rbac.permission;
28
32
  return { allow: false, reason: `admission: missing permission '${verb}'`, verb };
29
33
  }
30
34
  const method = input.method.toUpperCase();
@@ -38,10 +42,11 @@ function decideToolAdmission(input) {
38
42
  return { allow: true };
39
43
  }
40
44
  if (input.rbac && "permission" in input.rbac) {
41
- const verb = input.rbac.permission;
42
- if (input.grant.verbs.has(verb)) {
43
- return { allow: true, verb };
45
+ const granted = grantedVerb(input.rbac, input.grant);
46
+ if (granted) {
47
+ return { allow: true, verb: granted };
44
48
  }
49
+ const verb = input.rbac.permission;
45
50
  return { allow: false, reason: `admission: missing permission '${verb}'`, verb };
46
51
  }
47
52
  if (input.readOnly) {
@@ -248,6 +253,8 @@ var init_legacy_policy = __esm(() => {
248
253
  "task.action.own": requesterOwnsTask,
249
254
  "task.fs.mutate": taskFsMutate,
250
255
  "task.parent.attach": taskFsMutate,
256
+ "session.share": operatorOrUser,
257
+ "session.presence": operatorOrUser,
251
258
  "task.progress.write": taskProgressWrite,
252
259
  "favorite.write.own": anyAuthenticated,
253
260
  "memory.learning.inject": leadOnly,
@@ -414,6 +421,14 @@ var init_permissions = __esm(() => {
414
421
  description: "Write a task's progress, status, or output (its assignee, a lead, a human, or anyone while unassigned).",
415
422
  namespace: "task"
416
423
  },
424
+ "session.share": {
425
+ description: "Change who can view or edit a session the principal owns (the owner check runs in the handler).",
426
+ namespace: "task"
427
+ },
428
+ "session.presence": {
429
+ description: "Join the presence room of a session the principal can view.",
430
+ namespace: "task"
431
+ },
417
432
  "favorite.write.own": {
418
433
  description: "Set a favorite the caller owns.",
419
434
  namespace: "favorite"