@desplega.ai/agent-swarm 2.4.3 → 2.4.5

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 (270) hide show
  1. package/dist/{acp-adapter-1885dpr7.js → acp-adapter-2wdkktv6.js} +1 -2
  2. package/dist/{actions-pn76n32q.js → actions-c40ebcm4.js} +18 -18
  3. package/dist/{amp-adapter-af84rx1d.js → amp-adapter-wb67m95z.js} +2 -2
  4. package/dist/{app-6sv8mhzm.js → app-353vre8g.js} +3 -3
  5. package/dist/{assistant-sc2tf825.js → assistant-sj1njh23.js} +21 -21
  6. package/dist/{boot-reembed-y3m0ydzj.js → boot-reembed-b9c3az3c.js} +1 -1
  7. package/dist/{boot-reembed-gvxjs2py.js → boot-reembed-qdkvxeem.js} +1 -1
  8. package/dist/{boot-scrub-sweep-1j9mk05f.js → boot-scrub-sweep-m3wh8eks.js} +2 -2
  9. package/dist/{boot-seeds-37sp626b.js → boot-seeds-j2273s54.js} +4 -4
  10. package/dist/{claude-adapter-rp0jtnwr.js → claude-adapter-m7q0a085.js} +2 -2
  11. package/dist/{claude-managed-adapter-h2y889ge.js → claude-managed-adapter-5ptb6tzs.js} +2 -2
  12. package/dist/{claude-managed-setup-rdt248k7.js → claude-managed-setup-smrqk5j5.js} +3 -3
  13. package/dist/{claude-sdk-session-53rcw5we.js → claude-sdk-session-38xnz21e.js} +8284 -8267
  14. package/dist/{cli-6eyncg0y.js → cli-018r4jq6.js} +34 -6
  15. package/dist/{cli-sds5zzs8.js → cli-1f3qzw6y.js} +78 -12
  16. package/dist/{cli-f0p0f6ja.js → cli-1sp861s4.js} +7 -7
  17. package/dist/{cli-dm8p2dpf.js → cli-1syn2xy1.js} +10 -10
  18. package/dist/{cli-tkf4x6ha.js → cli-37j04k05.js} +11 -11
  19. package/dist/{cli-v87dr6e3.js → cli-3a45zcgm.js} +1 -1
  20. package/dist/{cli-1n9gdg56.js → cli-43x64hv3.js} +4 -4
  21. package/dist/{cli-p0qerd2r.js → cli-4zfqgjc5.js} +2 -2
  22. package/dist/{cli-aa3tb29r.js → cli-7c9qs530.js} +1 -1
  23. package/dist/{cli-9qtjfd60.js → cli-848hxdwj.js} +1 -1
  24. package/dist/{cli-1xsraagq.js → cli-94gwyg7m.js} +8 -8
  25. package/dist/{cli-0dxxwfkt.js → cli-9hstj09h.js} +17 -14
  26. package/dist/{cli-1012xb7j.js → cli-9yqgm9nd.js} +22 -22
  27. package/dist/{cli-pygdsgh8.js → cli-a92r1127.js} +1 -1
  28. package/dist/{cli-8vverzf7.js → cli-ba8ne1es.js} +5 -0
  29. package/dist/{cli-bxrqvpg5.js → cli-be2161h1.js} +7 -7
  30. package/dist/{cli-npfe9t1s.js → cli-bnes4z6b.js} +2 -2
  31. package/dist/{cli-aypbg9r2.js → cli-cxxe61f6.js} +1 -1
  32. package/dist/{cli-vq9gqarq.js → cli-dk44dxec.js} +1 -1
  33. package/dist/{cli-836ehxmt.js → cli-eww120g8.js} +3 -2
  34. package/dist/{cli-a0kcty51.js → cli-f01h25yt.js} +1 -1
  35. package/dist/{cli-mzkwkbdy.js → cli-f0g3pgvf.js} +1 -1
  36. package/dist/{cli-1ma335fz.js → cli-ftc1g5tj.js} +2 -2
  37. package/dist/{cli-4yef8ghv.js → cli-fv5hepyy.js} +3 -3
  38. package/dist/{cli-58vwn100.js → cli-g35m2xwm.js} +4 -4
  39. package/dist/{cli-qje9k2nh.js → cli-g9ypd5en.js} +12 -2
  40. package/dist/{cli-gx0j2khs.js → cli-j99azg3g.js} +3 -3
  41. package/dist/{cli-er83cjbn.js → cli-k8g16gz3.js} +416 -116
  42. package/dist/{cli-qp2m4btv.js → cli-kpw04va0.js} +2 -2
  43. package/dist/{cli-8y99kfey.js → cli-ms85309d.js} +33 -15
  44. package/dist/{cli-kgnkyabk.js → cli-n72rg53p.js} +1555 -645
  45. package/dist/{cli-e4d78xsv.js → cli-p14m2cnp.js} +1 -1
  46. package/dist/{cli-1eszr343.js → cli-qfxc84gh.js} +1 -1
  47. package/dist/{cli-wk28hzqn.js → cli-qwhy2qma.js} +1 -1
  48. package/dist/{cli-73ezfhha.js → cli-st8aw1m6.js} +228 -11
  49. package/dist/{cli-zvbb4n0e.js → cli-tw4p90jb.js} +92 -192
  50. package/dist/{cli-038fga5k.js → cli-v0yrfmdh.js} +148 -183
  51. package/dist/{cli-6aen3ezb.js → cli-v8fjakwf.js} +1 -1
  52. package/dist/{cli-99jez72r.js → cli-w9etnnxk.js} +6 -1
  53. package/dist/{cli-vcgscaan.js → cli-wt0jf9hm.js} +217 -80
  54. package/dist/{cli-s9rr4gr2.js → cli-xpa64rek.js} +1065 -305
  55. package/dist/{cli-h0mgxann.js → cli-z7d29rw9.js} +2 -2
  56. package/dist/cli.js +45 -20
  57. package/dist/{codex-adapter-2zrmab9b.js → codex-adapter-tn6k5mkg.js} +1 -1
  58. package/dist/{codex-session-runner-kbkz62vc.js → codex-session-runner-7vjt7jbw.js} +1 -1
  59. package/dist/{commands-hd574th6.js → commands-t7rz9146.js} +2 -2
  60. package/dist/{controller-pz5mcfg4.js → controller-m2jasma5.js} +2 -2
  61. package/dist/{controllers-connect-5rgq2hfk.js → controllers-connect-9ftpex99.js} +19 -19
  62. package/dist/{cursor-adapter-mgaprq0j.js → cursor-adapter-mjv79e4z.js} +1 -1
  63. package/dist/{db-6nf1207q.js → db-6sfrn9g3.js} +1 -1
  64. package/dist/{db-h06dxp05.js → db-rn673r06.js} +3 -3
  65. package/dist/{dispatcher-zthpy4m1.js → dispatcher-c155xz0p.js} +17 -17
  66. package/dist/{dsh-adapter-64dhw0j7.js → dsh-adapter-3mmszc1x.js} +1 -1
  67. package/dist/{external-channel-x01t7ke6.js → external-channel-35k6tkv8.js} +2 -2
  68. package/dist/{grok-adapter-h21jv594.js → grok-adapter-tfrq7tg1.js} +2 -3
  69. package/dist/handlers-7gw64dxw.js +39 -0
  70. package/dist/{heartbeat-zzfksckz.js → heartbeat-dyg4npkp.js} +20 -20
  71. package/dist/{hook-z4zhzj1f.js → hook-drspbwpe.js} +1 -1
  72. package/dist/{hook-3xfqhh2s.js → hook-x26b31bg.js} +1 -1
  73. package/dist/{http-q813tmya.js → http-pk972xyw.js} +571 -294
  74. package/dist/{index-va3y63es.js → index-6srwvd5b.js} +1 -2
  75. package/dist/{index-x8xbyn1t.js → index-arytgj5q.js} +1 -1
  76. package/dist/{index-wbbs14c5.js → index-bgdyvcnv.js} +17 -17
  77. package/dist/{index-s98037v0.js → index-cbxkmfc5.js} +1 -2
  78. package/dist/{index-c4ykd0f1.js → index-dr94zbnh.js} +13348 -11611
  79. package/dist/{index-m0a4ydqj.js → index-gabbcdn2.js} +17 -17
  80. package/dist/{index-220tk9bw.js → index-jwxkkex2.js} +139 -76
  81. package/dist/index-tfb26zhy.js +41 -0
  82. package/dist/{keepalive-y5t1my7m.js → keepalive-7yrng7px.js} +3 -3
  83. package/dist/{lead-2xwtq66b.js → lead-7e02z839.js} +29 -30
  84. package/dist/{maintenance-ybfsaedv.js → maintenance-e6cemdqt.js} +1 -1
  85. package/dist/{node-3v3f08f7.js → node-de6akczr.js} +10 -9
  86. package/dist/{oauth-refresh-sweep-909jmn12.js → oauth-refresh-sweep-yw3xdbcj.js} +2 -2
  87. package/dist/{onboard-xn6fkkys.js → onboard-0a9y5yrc.js} +2 -2
  88. package/dist/{otel-impl-e6mn0z13.js → otel-impl-trjpkfb7.js} +1 -1
  89. package/dist/{pricing-refresh-ygd362ep.js → pricing-refresh-d2b5my0y.js} +3 -3
  90. package/dist/{rbac-roles-mb470p4e.js → rbac-roles-hey3yv9d.js} +2 -2
  91. package/dist/{rbac-roles-c9axvfnz.js → rbac-roles-nxh5ahwk.js} +2 -2
  92. package/dist/{registry-rxw10xzg.js → registry-ajhexe44.js} +1 -1
  93. package/dist/{render-v2-g0306nh1.js → render-v2-rr3p2atg.js} +3 -3
  94. package/dist/{resume-v315hnq6.js → resume-2efkf1s1.js} +5 -5
  95. package/dist/{session-access-2zg285a1.js → session-access-s2mttxpw.js} +6 -4
  96. package/dist/{setup-a4mtf02k.js → setup-vypma5yt.js} +1 -1
  97. package/dist/{work-objects-9fr0fgtn.js → work-objects-rvhckdkp.js} +20 -20
  98. package/dist/{worker-qae22jeb.js → worker-5snytpbd.js} +29 -30
  99. package/dist/worker-token-xf11yyds.js +136 -0
  100. package/openapi.json +303 -13
  101. package/package.json +8 -8
  102. package/src/apps/action-runner.ts +4 -0
  103. package/src/apps/catalog.generated.json +209 -4
  104. package/src/apps/page-validator.ts +21 -3
  105. package/src/be/chunking.ts +42 -9
  106. package/src/be/db/tasks/draft-text.ts +15 -0
  107. package/src/be/db/tasks/read.ts +14 -1
  108. package/src/be/db.ts +5 -1
  109. package/src/be/memory/index-content.ts +36 -17
  110. package/src/be/memory/providers/openai-embedding.ts +115 -61
  111. package/src/be/memory/providers/sqlite-store.ts +69 -23
  112. package/src/be/memory/reranker.ts +31 -1
  113. package/src/be/memory/search-candidates.ts +47 -0
  114. package/src/be/memory/types.ts +14 -0
  115. package/src/be/migrations/232_agent_session_tokens.sql +41 -0
  116. package/src/be/scripts/typecheck.ts +2 -0
  117. package/src/be/seed-scripts/catalog/heartbeat-jev-gate.ts +116 -55
  118. package/src/be/seed-scripts/index.ts +2 -2
  119. package/src/be/swarm-config-guard.ts +40 -1
  120. package/src/be/task-attachment-store.ts +30 -0
  121. package/src/be/users.ts +169 -12
  122. package/src/cli.tsx +24 -0
  123. package/src/commands/worker-token.ts +164 -0
  124. package/src/extensions/catalog.generated.json +4 -4
  125. package/src/extensions/contract-types.generated.ts +1 -1
  126. package/src/extensions/contract.ts +7 -0
  127. package/src/fs/provider.ts +13 -1
  128. package/src/heartbeat/heartbeat.ts +31 -11
  129. package/src/http/apps.ts +43 -5
  130. package/src/http/codex-oauth-keep-warm.ts +27 -9
  131. package/src/http/config.ts +5 -3
  132. package/src/http/core.ts +2 -0
  133. package/src/http/fs.ts +54 -34
  134. package/src/http/mcp-body.ts +37 -0
  135. package/src/http/mcp-user.ts +3 -5
  136. package/src/http/mcp.ts +6 -7
  137. package/src/http/memory.ts +26 -15
  138. package/src/http/page-proxy.ts +61 -5
  139. package/src/http/pages-public.ts +27 -44
  140. package/src/http/pages.ts +4 -4
  141. package/src/http/script-runs.ts +2 -0
  142. package/src/http/session-access.ts +51 -2
  143. package/src/http/sessions.ts +249 -10
  144. package/src/http/tasks.ts +4 -32
  145. package/src/http/users.ts +12 -1
  146. package/src/integrations/chat-sdk/adapters.ts +7 -3
  147. package/src/integrations/chat-sdk/attachments.ts +90 -12
  148. package/src/integrations/chat-sdk/facts.ts +120 -0
  149. package/src/integrations/chat-sdk/inbound.ts +156 -8
  150. package/src/integrations/chat-sdk/limits.ts +24 -0
  151. package/src/integrations/chat-sdk/outbound-files.ts +186 -0
  152. package/src/integrations/chat-sdk/outbound.ts +234 -4
  153. package/src/integrations/chat-sdk/relay.ts +4 -1
  154. package/src/integrations/chat-sdk/router.ts +28 -2
  155. package/src/integrations/chat-sdk/steering.ts +9 -0
  156. package/src/integrations/chat-sdk/templates.ts +14 -0
  157. package/src/integrations/chat-sdk/thread-buffer.ts +4 -0
  158. package/src/mcp-limits.ts +20 -0
  159. package/src/pages/browser-sdk.ts +8 -3
  160. package/src/pages/feedback-overlay.ts +1 -1
  161. package/src/providers/acp-adapter.ts +33 -13
  162. package/src/providers/acp-swarm-events.ts +1 -1
  163. package/src/providers/amp-adapter.ts +1 -1
  164. package/src/providers/codex-adapter.ts +106 -119
  165. package/src/providers/codex-agents-md.ts +35 -229
  166. package/src/providers/codex-oauth/storage.ts +1 -1
  167. package/src/providers/cursor-adapter.ts +1 -1
  168. package/src/rbac/legacy-policy.ts +3 -1
  169. package/src/rbac/permissions.ts +4 -0
  170. package/src/realtime/transport.ts +1 -2
  171. package/src/script-workflows/workflow-ctx.ts +1 -0
  172. package/src/scripts-runtime/types/stdlib.d.ts +2 -0
  173. package/src/scripts-runtime/types/swarm-extension.d.ts +8 -0
  174. package/src/scripts-runtime/types/swarm-sdk.d.ts +2 -0
  175. package/src/server-user.ts +2 -0
  176. package/src/server.ts +2 -0
  177. package/src/slack/assistant.ts +2 -2
  178. package/src/slack/files.ts +2 -0
  179. package/src/slack/handlers.ts +4 -4
  180. package/src/slack/inbound-files.ts +39 -6
  181. package/src/slack/thread-buffer.ts +2 -1
  182. package/src/tasks/task-terminal-effects.ts +21 -17
  183. package/src/tests/acp-adapter.test.ts +10 -23
  184. package/src/tests/acp-fake-agent.ts +36 -0
  185. package/src/tests/acp-swarm-events.test.ts +1 -1
  186. package/src/tests/agent-session-tokens.test.ts +452 -0
  187. package/src/tests/apps-action-parent-task.test.ts +295 -0
  188. package/src/tests/apps-card-grid.test.ts +197 -0
  189. package/src/tests/apps-catalog-additions.test.ts +120 -0
  190. package/src/tests/apps-tree.test.ts +129 -0
  191. package/src/tests/chat-sdk-attachments-reply.test.ts +52 -0
  192. package/src/tests/chat-sdk-config.test.ts +11 -0
  193. package/src/tests/chat-sdk-facts.test.ts +23 -0
  194. package/src/tests/chat-sdk-inbound.test.ts +558 -4
  195. package/src/tests/chat-sdk-outbound-files.test.ts +652 -0
  196. package/src/tests/codex-adapter.test.ts +167 -242
  197. package/src/tests/codex-oauth-keep-warm.test.ts +85 -1
  198. package/src/tests/config-api-only-keys.test.ts +9 -0
  199. package/src/tests/config-session-auth.test.ts +14 -0
  200. package/src/tests/cors-allowlist.test.ts +1 -1
  201. package/src/tests/docs-index-footprint.test.js +2 -2
  202. package/src/tests/extensions-example-slack-reply-gate.test.ts +262 -91
  203. package/src/tests/grok-adapter.test.ts +3 -3
  204. package/src/tests/heartbeat-checklist.test.ts +33 -0
  205. package/src/tests/heartbeat-jev-gate-credentials.test.ts +44 -0
  206. package/src/tests/heartbeat-jev-gate.test.ts +265 -1
  207. package/src/tests/kv-page-proxy.test.ts +91 -5
  208. package/src/tests/launch-password-rejection.test.ts +2 -2
  209. package/src/tests/mcp-input-caps.test.ts +294 -0
  210. package/src/tests/memory-chunked-search-starvation.test.ts +200 -0
  211. package/src/tests/memory-embedding-input-cap.test.ts +114 -0
  212. package/src/tests/memory.test.ts +14 -0
  213. package/src/tests/migration-232-agent-session-tokens.test.ts +67 -0
  214. package/src/tests/page-guest-session.test.ts +19 -8
  215. package/src/tests/page-proxy-authed.test.ts +1 -1
  216. package/src/tests/page-proxy.test.ts +17 -10
  217. package/src/tests/page-session.test.ts +102 -1
  218. package/src/tests/pages-authed-mode.test.ts +82 -12
  219. package/src/tests/pages-password-mode.test.ts +5 -5
  220. package/src/tests/rbac-engine.test.ts +1 -0
  221. package/src/tests/realtime-transport.test.ts +13 -7
  222. package/src/tests/runtime-child-token-cleanup.test.ts +3 -3
  223. package/src/tests/script-connections.test.ts +2 -0
  224. package/src/tests/script-runs-http.test.ts +84 -0
  225. package/src/tests/scripts-http.test.ts +10 -1
  226. package/src/tests/session-route-posture.test.ts +2 -0
  227. package/src/tests/swarm-config-export-to-env.test.ts +22 -3
  228. package/src/tests/task-audio-transcription.test.ts +299 -0
  229. package/src/tests/task-completion-memory-chunking.test.ts +434 -0
  230. package/src/tests/task-terminal-secret-scrub.test.ts +6 -1
  231. package/src/tests/transcription.test.ts +299 -0
  232. package/src/tests/worker-token-cli.test.ts +76 -0
  233. package/src/tests/workflow-executors.test.ts +4 -2
  234. package/src/tests/workflow-system-one-decision-providers.test.ts +98 -1
  235. package/src/tests/workflow-system-one-decision.test.ts +2 -1
  236. package/src/tests/workflow-system-one-extraction.test.ts +805 -0
  237. package/src/tools/chat-access.ts +10 -0
  238. package/src/tools/chat-post.ts +31 -11
  239. package/src/tools/chat-reply.ts +32 -10
  240. package/src/tools/memory-search.ts +3 -1
  241. package/src/tools/system-one-decide.ts +17 -4
  242. package/src/types.ts +8 -1
  243. package/src/utils/config-env-export.ts +3 -1
  244. package/src/utils/page-session.ts +133 -20
  245. package/src/utils/request-auth-context.ts +2 -1
  246. package/src/utils/transcription.ts +246 -0
  247. package/src/workflows/definition.ts +7 -1
  248. package/src/workflows/engine.ts +18 -12
  249. package/src/workflows/executors/index.ts +1 -0
  250. package/src/workflows/executors/registry.ts +2 -0
  251. package/src/workflows/executors/system-one-decision.ts +84 -262
  252. package/src/workflows/executors/system-one-extract-wire.ts +57 -0
  253. package/src/workflows/executors/system-one-extraction.ts +830 -0
  254. package/src/workflows/executors/system-one-providers.ts +316 -114
  255. package/src/workflows/executors/system-one-transport.ts +264 -0
  256. package/templates/extensions/slack-reply-gate/README.md +24 -22
  257. package/templates/extensions/slack-reply-gate/hooks.ts +146 -95
  258. package/templates/extensions/slack-reply-gate/manifest.json +2 -2
  259. package/templates/official/lead/HEARTBEAT.md +1 -1
  260. package/templates/skills/apps/SKILL.md +31 -7
  261. package/templates/skills/apps/content.md +31 -7
  262. package/templates/skills/chat-sdk/content.md +6 -2
  263. package/templates/skills/code-quality/content.md +2 -1
  264. package/templates/skills/heartbeat-runbook/content.md +8 -8
  265. package/templates/skills/pages/content.md +6 -4
  266. package/templates/skills/swarm-scripts/SKILL.md +2 -2
  267. package/templates/skills/swarm-scripts/content.md +2 -2
  268. package/dist/cli-v1sjhn52.js +0 -7
  269. package/dist/handlers-2qjw434w.js +0 -39
  270. package/dist/index-d0g18bax.js +0 -41
@@ -20,7 +20,7 @@ import {
20
20
  renderMemoriesPrompt,
21
21
  isUnknownModelError,
22
22
  writeSkillsToFilesystem
23
- } from "./cli-6aen3ezb.js";
23
+ } from "./cli-v8fjakwf.js";
24
24
  import {
25
25
  isPollTracingEnabled,
26
26
  initOtel,
@@ -30,7 +30,7 @@ import {
30
30
  injectTraceContext2,
31
31
  initialize,
32
32
  ensure
33
- } from "./cli-tkf4x6ha.js";
33
+ } from "./cli-37j04k05.js";
34
34
  import {
35
35
  getContextWindowSize
36
36
  } from "./cli-a5ebc95n.js";
@@ -51,7 +51,7 @@ import {
51
51
  canonicalAzureDevOpsRepoUrl,
52
52
  parseAzureDevOpsRepoUrl,
53
53
  resolveScriptsOnlyMode
54
- } from "./cli-kgnkyabk.js";
54
+ } from "./cli-n72rg53p.js";
55
55
  import {
56
56
  ACP_TARGET_IDS,
57
57
  isAcpTarget
@@ -59,32 +59,32 @@ import {
59
59
  import {
60
60
  checkAmpCredentials2,
61
61
  liveTestAmpCredentials2
62
- } from "./cli-1ma335fz.js";
62
+ } from "./cli-ftc1g5tj.js";
63
63
  import {
64
64
  checkClaudeCredentials2
65
- } from "./cli-h0mgxann.js";
65
+ } from "./cli-z7d29rw9.js";
66
66
  import {
67
67
  checkClaudeManagedCredentials2
68
- } from "./cli-a0kcty51.js";
68
+ } from "./cli-f01h25yt.js";
69
69
  import {
70
70
  codexUserHome,
71
71
  checkCodexCredentials2
72
- } from "./cli-zvbb4n0e.js";
72
+ } from "./cli-tw4p90jb.js";
73
73
  import {
74
74
  checkCursorCredentials2
75
- } from "./cli-58vwn100.js";
75
+ } from "./cli-g35m2xwm.js";
76
76
  import {
77
77
  checkDevinCredentials2
78
78
  } from "./cli-s95dknxh.js";
79
79
  import {
80
80
  checkDshCredentials2
81
- } from "./cli-wk28hzqn.js";
81
+ } from "./cli-qwhy2qma.js";
82
82
  import {
83
83
  checkOpencodeCredentials2
84
84
  } from "./cli-36ckw0wx.js";
85
85
  import {
86
86
  checkGrokCredentials2
87
- } from "./cli-aypbg9r2.js";
87
+ } from "./cli-cxxe61f6.js";
88
88
  import {
89
89
  CODEX_OAUTH_POOL_SLOTS_ENV,
90
90
  isCodexOAuthConfigKey,
@@ -93,7 +93,7 @@ import {
93
93
  } from "./cli-j4bwnpkm.js";
94
94
  import {
95
95
  validateJsonSchema
96
- } from "./cli-0dxxwfkt.js";
96
+ } from "./cli-9hstj09h.js";
97
97
  import {
98
98
  mapTriggerSurface,
99
99
  init_telemetry_context,
@@ -111,7 +111,7 @@ import {
111
111
  init_vcs_repo_match,
112
112
  isApiDrainingResponse,
113
113
  init_api_drain
114
- } from "./cli-vcgscaan.js";
114
+ } from "./cli-wt0jf9hm.js";
115
115
  import {
116
116
  parseWorkerModelTierOverrides,
117
117
  resolveTaskModelSelection,
@@ -119,7 +119,7 @@ import {
119
119
  ProviderNameSchema,
120
120
  WorkerNudgeSchema,
121
121
  init_types
122
- } from "./cli-836ehxmt.js";
122
+ } from "./cli-eww120g8.js";
123
123
  import {
124
124
  generateDefaultClaudeMd2,
125
125
  generateDefaultSoulMd2,
@@ -246,7 +246,7 @@ async function materializeCodexAuthJson(_slot, creds, deps = {}) {
246
246
  async function createProviderAdapter(provider) {
247
247
  switch (provider) {
248
248
  case "claude": {
249
- const { ClaudeAdapter } = await import("./claude-adapter-rp0jtnwr.js");
249
+ const { ClaudeAdapter } = await import("./claude-adapter-m7q0a085.js");
250
250
  return new ClaudeAdapter;
251
251
  }
252
252
  case "pi": {
@@ -254,11 +254,11 @@ async function createProviderAdapter(provider) {
254
254
  return new PiMonoAdapter;
255
255
  }
256
256
  case "codex": {
257
- const { CodexAdapter } = await import("./codex-adapter-2zrmab9b.js");
257
+ const { CodexAdapter } = await import("./codex-adapter-tn6k5mkg.js");
258
258
  return new CodexAdapter;
259
259
  }
260
260
  case "claude-managed": {
261
- const { ClaudeManagedAdapter } = await import("./claude-managed-adapter-h2y889ge.js");
261
+ const { ClaudeManagedAdapter } = await import("./claude-managed-adapter-5ptb6tzs.js");
262
262
  return new ClaudeManagedAdapter;
263
263
  }
264
264
  case "devin": {
@@ -270,23 +270,23 @@ async function createProviderAdapter(provider) {
270
270
  return new OpencodeAdapter;
271
271
  }
272
272
  case "dsh": {
273
- const { DshAdapter } = await import("./dsh-adapter-64dhw0j7.js");
273
+ const { DshAdapter } = await import("./dsh-adapter-3mmszc1x.js");
274
274
  return new DshAdapter;
275
275
  }
276
276
  case "amp": {
277
- const { AmpAdapter } = await import("./amp-adapter-af84rx1d.js");
277
+ const { AmpAdapter } = await import("./amp-adapter-wb67m95z.js");
278
278
  return new AmpAdapter;
279
279
  }
280
280
  case "cursor": {
281
- const { CursorAdapter } = await import("./cursor-adapter-mgaprq0j.js");
281
+ const { CursorAdapter } = await import("./cursor-adapter-mjv79e4z.js");
282
282
  return new CursorAdapter;
283
283
  }
284
284
  case "grok": {
285
- const { GrokAdapter } = await import("./grok-adapter-h21jv594.js");
285
+ const { GrokAdapter } = await import("./grok-adapter-tfrq7tg1.js");
286
286
  return new GrokAdapter;
287
287
  }
288
288
  case "acp": {
289
- const { ACPAdapter } = await import("./acp-adapter-1885dpr7.js");
289
+ const { ACPAdapter } = await import("./acp-adapter-2wdkktv6.js");
290
290
  return new ACPAdapter;
291
291
  }
292
292
  default:
@@ -1477,7 +1477,7 @@ async function validateProviderCredentials(provider, env = process.env, presence
1477
1477
  latency_ms: Date.now() - startedAt
1478
1478
  };
1479
1479
  }
1480
- const { liveTestCursorKey } = await import("./cursor-adapter-mgaprq0j.js");
1480
+ const { liveTestCursorKey } = await import("./cursor-adapter-mjv79e4z.js");
1481
1481
  const result = await liveTestCursorKey(apiKey);
1482
1482
  return result.ok ? { ok: true, latency_ms: Date.now() - startedAt } : { ok: false, error: result.error, latency_ms: Date.now() - startedAt };
1483
1483
  }
@@ -9,7 +9,7 @@ import {
9
9
  acquireOAuthRefreshLock,
10
10
  releaseOAuthRefreshLock,
11
11
  init_oauth
12
- } from "./cli-vcgscaan.js";
12
+ } from "./cli-wt0jf9hm.js";
13
13
  import {
14
14
  scrubSecrets,
15
15
  registerVolatileSecret,
@@ -320,6 +320,7 @@ var init_legacy_policy = __esm(() => {
320
320
  "runtime_pool.write": operatorOrUser,
321
321
  "runtime_pool.bind": leadOrOperatorOrUser,
322
322
  "runtime_controller.write": operatorOrUser,
323
+ "agent.token.manage": operatorOrUser,
323
324
  "extension.write": extensionWrite,
324
325
  "extension.activate": extensionActivation,
325
326
  "extension.install.inline": leadOrOperatorOrUser
@@ -369,6 +370,10 @@ var init_permissions = __esm(() => {
369
370
  description: "View or diff another agent's context history.",
370
371
  namespace: "agent"
371
372
  },
373
+ "agent.token.manage": {
374
+ description: "Mint, rotate, or revoke an agent-bound worker token.",
375
+ namespace: "agent"
376
+ },
372
377
  "task.cancel.any": {
373
378
  description: "Cancel any task (beyond tasks the caller created).",
374
379
  namespace: "task"
@@ -10,7 +10,7 @@ import {
10
10
  init_steering,
11
11
  createLogEntry2,
12
12
  init_db3
13
- } from "./cli-vcgscaan.js";
13
+ } from "./cli-wt0jf9hm.js";
14
14
  import {
15
15
  ackSlackMessage,
16
16
  buildBufferFlushBlocks,
@@ -20,7 +20,7 @@ import {
20
20
  ensureSlackThreadTree2,
21
21
  registerTreeMessage,
22
22
  getSlackApp2
23
- } from "./cli-tkf4x6ha.js";
23
+ } from "./cli-37j04k05.js";
24
24
  import {
25
25
  createAdditiveBuffer,
26
26
  TaskCreationBlockedError,
@@ -30,15 +30,15 @@ import {
30
30
  createSlackTaskWithFiles,
31
31
  notifySlackFileFailures,
32
32
  extractSlackMessageText
33
- } from "./cli-kgnkyabk.js";
33
+ } from "./cli-n72rg53p.js";
34
34
  import {
35
35
  resolveSlackUserId,
36
36
  rewriteSlackMentions
37
- } from "./cli-4yef8ghv.js";
37
+ } from "./cli-fv5hepyy.js";
38
38
  import {
39
39
  findUserByExternalId,
40
40
  init_users
41
- } from "./cli-sds5zzs8.js";
41
+ } from "./cli-1f3qzw6y.js";
42
42
  import {
43
43
  isSteeringEnabled2,
44
44
  init_steering_enabled
@@ -230,14 +230,14 @@ async function slackFlush(items, key, immediate) {
230
230
  console.log(`[Slack] Flushing buffer: ${key} (${items.length} messages, immediate=${immediate})`);
231
231
  const app = getSlackApp2();
232
232
  const files = items.flatMap((item) => item.files ?? []);
233
- const inbound = __using(__stack, app ? await fetchSlackFiles(app.client, files) : {
233
+ const inbound = __using(__stack, app ? await fetchSlackFiles(app.client, files, { transcribe: true }) : {
234
234
  files,
235
235
  fetched: [],
236
236
  failed: bufferedFileFailures(files),
237
237
  async[Symbol.asyncDispose]() {}
238
238
  }, 1);
239
239
  const resolvedFiles = new Map(inbound.files.map((file) => [file.id, file]));
240
- const combinedText = await rewriteSlackMentions(items.map((item) => buildEffectiveText(item.text, item.files?.map((file) => resolvedFiles.get(file.id) ?? file), inbound.failed)).join(`
240
+ const combinedText = await rewriteSlackMentions(items.map((item) => buildEffectiveText(item.text, item.files?.map((file) => resolvedFiles.get(file.id) ?? file), inbound.failed, inbound.notes)).join(`
241
241
  ---
242
242
  `), botUserId);
243
243
  const description = `[Thread follow-up — ${items.length} message(s) buffered]
@@ -4,11 +4,11 @@ import {
4
4
  getActivePricingRow2,
5
5
  insertPricingRow2,
6
6
  init_db3
7
- } from "./cli-vcgscaan.js";
7
+ } from "./cli-wt0jf9hm.js";
8
8
  import {
9
9
  loadModelsDevCache,
10
10
  buildModelsDevSeedRows
11
- } from "./cli-vq9gqarq.js";
11
+ } from "./cli-dk44dxec.js";
12
12
  import {
13
13
  setRuntimeModelCatalog,
14
14
  init_runtime_model_catalog
@@ -2,7 +2,7 @@ import {
2
2
  isGrokOpenRouterModel,
3
3
  grokTargetProfile,
4
4
  ACPAdapter2
5
- } from "./cli-038fga5k.js";
5
+ } from "./cli-v0yrfmdh.js";
6
6
  import {
7
7
  getOpenRouterBaseUrl,
8
8
  getOpenRouterAttributionHeaders,
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  getDb2,
3
3
  init_db3
4
- } from "./cli-vcgscaan.js";
4
+ } from "./cli-wt0jf9hm.js";
5
5
  import {
6
6
  openAICompatibleProviderIds,
7
7
  withRegistryCatalogSections,
@@ -2057,6 +2057,7 @@ var init_types = __esm(() => {
2057
2057
  sourceTaskId: string2().optional(),
2058
2058
  outputSchema: record2(string2(), unknown()).optional(),
2059
2059
  inheritParentOutputSchema: boolean().optional(),
2060
+ inheritParentRequester: boolean().optional(),
2060
2061
  inheritParentRoutingAffinity: boolean().optional(),
2061
2062
  inheritParentFollowUpConfig: boolean().optional(),
2062
2063
  followUpConfig: FollowUpConfigSchema.optional(),
@@ -2833,9 +2834,9 @@ var init_types = __esm(() => {
2833
2834
  }).openapi("SwarmScriptNodeConfig");
2834
2835
  WorkflowNodeSchema = object2({
2835
2836
  id: string2().describe("Unique node identifier, used in 'next' and 'inputs' mappings"),
2836
- type: string2().describe("Executor type: 'agent-task', 'script', 'swarm-script', 'raw-llm', 'system-one-decision', 'validate', 'property-match'"),
2837
+ type: string2().describe("Executor type: 'agent-task', 'script', 'swarm-script', 'raw-llm', 'system-one-decision', 'system-one-extraction', 'validate', 'property-match'"),
2837
2838
  label: string2().optional().describe("Human-readable label for UI display"),
2838
- config: record2(string2(), unknown()).describe("Executor-specific config. For agent-task: { template, outputSchema?, agentId?, routingReason?, routingNote?, tags?, priority?, dir?, vcsRepo?, model? }; configured agentId defaults routingReason to human_pinned. " + "For script: { runtime, script, args?, timeout? }. " + "For swarm-script: { scriptName, scope?, pinHash?, args?, fsMode?, timeoutMs? (1000-300000) }. " + "For system-one-decision (typed decisions, Jev by default): { provider? ('typesafe' default | 'openrouter' | 'laya'; a literal, never a {{token}}), state, questions: { <id>: { type: 'noul'|'choice'|'score', instructions, criteria? } }, returns: { <id>: { type } }, model? (provider-specific; unset = the provider's default, and laya has none so it sends no model and picks its own checkpoint), timeoutMs?, maxRetries? (0-3), humanReview? { band: { min, max } (0-1, inclusive), approvers: { users?, roles?, policy }, title?, timeout?, notifications? } }; each provider needs its own global secret (TYPESAFE_API_KEY, OPENROUTER_API_KEY, or LAYA_API_KEY; laya also needs the global config LAYA_URL), and a save warns and a run fails before any node executes when one is missing; system-one-decision nodes must not set retry or validation.retry. With humanReview, an answer whose confidence is inside the band waits for a person (human-in-the-loop approval), and next must map ports { approved, rejected?, timeout? }. " + "Agent-task templates and ordinary config values support {{interpolation}} from the node's inputs context, including trigger and declared upstream aliases. " + "SECURITY: executable source for script/swarm-script nodes does not interpolate trigger.* or upstream node outputs; only input/workflow/swarm/run values are allowed in inline script source, and named swarm-script source is not workflow-interpolated. " + 'Pass dynamic values through config.args instead (inline script receives them as argv, with runtime: "bash" running bash -c <script> ...args so args[0] is $0 and args[1] is $1; swarm-script receives its args object). ' + "NOTE: config.outputSchema on agent-task nodes validates the AGENT's raw JSON output, " + "while node-level outputSchema validates the EXECUTOR's return value ({taskId, taskOutput})."),
2839
+ config: record2(string2(), unknown()).describe("Executor-specific config. For agent-task: { template, outputSchema?, agentId?, routingReason?, routingNote?, tags?, priority?, dir?, vcsRepo?, model? }; configured agentId defaults routingReason to human_pinned. " + "For script: { runtime, script, args?, timeout? }. " + "For swarm-script: { scriptName, scope?, pinHash?, args?, fsMode?, timeoutMs? (1000-300000) }. " + "For system-one-decision (typed decisions, Jev by default): { provider? ('typesafe' default | 'openrouter' | 'laya'; a literal, never a {{token}}), state, questions: { <id>: { type: 'noul'|'choice'|'score', instructions, criteria? } }, returns: { <id>: { type } }, model? (provider-specific; unset = the provider's default, and laya has none so it sends no model and picks its own checkpoint), timeoutMs?, maxRetries? (0-3), humanReview? { band: { min, max } (0-1, inclusive), approvers: { users?, roles?, policy }, title?, timeout?, notifications? } }; each provider needs its own global secret (TYPESAFE_API_KEY, OPENROUTER_API_KEY, or LAYA_API_KEY; laya also needs the global config LAYA_URL), and a save warns and a run fails before any node executes when one is missing; system-one-decision nodes must not set retry or validation.retry. With humanReview, an answer whose confidence is inside the band waits for a person (human-in-the-loop approval), and next must map ports { approved, rejected?, timeout? }. " + "For system-one-extraction (typed extraction, Cloudflare Clairic by default): { provider? ('cloudflare'; a literal), state (text to read; may be empty when images are sent), fields: { <id>: { type: 'text'|'number'|'date'|'time'|'datetime'|'duration'|'list'|'estimate'|'forecast', instructions?, ...type options (number: unit?, integer?, decimals?; duration: unit? (seconds..years), integer?, decimals?; list: items ('text'|'number'|'date'); estimate: min, max, step?, scale?, unit?; forecast: min, max, horizon?, interval?, scale?, unit?; text/number/date/time/datetime/duration: null_threshold?) } }, images? (max 4 base64 data: URLs or { content_type, base64 }), referenceDate? (YYYY-MM-DD), model?, timeoutMs?, maxRetries? (0-3) }; output answers.<id> carries value (null when the input does not say), guess, p_null, confidence, span/spans, and for estimate/forecast median/p10/p90. Needs the global secret CLOUDFLARE_API_TOKEN (or CLOUDFLARE_API_KEY) and the global config CLOUDFLARE_ACCOUNT_ID; must not set retry or validation.retry. " + "Agent-task templates and ordinary config values support {{interpolation}} from the node's inputs context, including trigger and declared upstream aliases. " + "SECURITY: executable source for script/swarm-script nodes does not interpolate trigger.* or upstream node outputs; only input/workflow/swarm/run values are allowed in inline script source, and named swarm-script source is not workflow-interpolated. " + 'Pass dynamic values through config.args instead (inline script receives them as argv, with runtime: "bash" running bash -c <script> ...args so args[0] is $0 and args[1] is $1; swarm-script receives its args object). ' + "NOTE: config.outputSchema on agent-task nodes validates the AGENT's raw JSON output, " + "while node-level outputSchema validates the EXECUTOR's return value ({taskId, taskOutput})."),
2839
2840
  next: union2([string2(), array2(string2()), record2(string2(), string2())]).optional().describe("Next node(s): string for simple chaining, string[] for fan-out to parallel nodes, or record for port-based routing ({pass: 'a', fail: 'b'})"),
2840
2841
  validation: StepValidationConfigSchema.optional(),
2841
2842
  retry: RetryPolicySchema.optional(),
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  Anthropic
3
- } from "./cli-er83cjbn.js";
3
+ } from "./cli-k8g16gz3.js";
4
4
  import {
5
5
  checkToolLoop
6
6
  } from "./cli-0726awxw.js";
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  RuntimeProviderKindSchema,
3
3
  init_types
4
- } from "./cli-836ehxmt.js";
4
+ } from "./cli-eww120g8.js";
5
5
  import {
6
6
  init_zod
7
7
  } from "./cli-4chz1hye.js";
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  ampBillsCacheWrites,
3
3
  resolveAmpModel
4
- } from "./cli-1eszr343.js";
4
+ } from "./cli-qfxc84gh.js";
5
5
  import {
6
6
  CONTEXT_FORMULA,
7
7
  computeContextUsedUnified,
@@ -36,7 +36,7 @@ import { mkdir, mkdtemp, rm, writeFile } from "node:fs/promises";
36
36
  import { tmpdir } from "node:os";
37
37
  import { join } from "node:path";
38
38
  init_secret_scrubber();
39
- var AMP_PACKAGE = "@ampcode/cli@0.0.1792470027-g8c393d";
39
+ var AMP_PACKAGE = "@ampcode/cli@0.0.1792584044-g15483c";
40
40
  var AMP_MCP_SERVER_NAME = "agent-swarm";
41
41
  var AMP_PLUGIN_MODE_KEY = "agent-swarm";
42
42
  var AMP_LIVE_TEST_TIMEOUT_MS = 5000;
@@ -2,17 +2,17 @@ import {
2
2
  getKv2,
3
3
  upsertKv2,
4
4
  init_db3
5
- } from "./cli-vcgscaan.js";
5
+ } from "./cli-wt0jf9hm.js";
6
6
  import {
7
7
  resolveIdentity,
8
8
  recordUnmappedIdentity
9
- } from "./cli-kgnkyabk.js";
9
+ } from "./cli-n72rg53p.js";
10
10
  import {
11
11
  findUserByExternalId,
12
12
  findOrCreateUserByEmail,
13
13
  linkIdentity,
14
14
  init_users
15
- } from "./cli-sds5zzs8.js";
15
+ } from "./cli-1f3qzw6y.js";
16
16
 
17
17
  // src/slack/enrich.ts
18
18
  init_db3();
@@ -14,7 +14,7 @@ import {
14
14
  import {
15
15
  DEFAULT_MODEL_TIER_MAP,
16
16
  init_types
17
- } from "./cli-836ehxmt.js";
17
+ } from "./cli-eww120g8.js";
18
18
  import {
19
19
  resolveTemplateFromCode,
20
20
  resolveTemplateAsync,
@@ -52,7 +52,7 @@ function checkCursorCredentials2(env) {
52
52
  return env.CURSOR_API_KEY?.trim() ? { ready: true, missing: [], satisfiedBy: "env" } : { ready: false, missing: ["CURSOR_API_KEY"], hint: "Set CURSOR_API_KEY for cursor." };
53
53
  }
54
54
  async function liveTestCursorKey2(apiKey) {
55
- const { Cursor } = await import("./index-c4ykd0f1.js");
55
+ const { Cursor } = await import("./index-dr94zbnh.js");
56
56
  try {
57
57
  await Cursor.me({ apiKey });
58
58
  return { ok: true };
@@ -72,7 +72,7 @@ async function listCursorModels(apiKey) {
72
72
  if (modelListCache?.key === apiKey && Date.now() - modelListCache.at < MODEL_LIST_TTL_MS) {
73
73
  return modelListCache.models;
74
74
  }
75
- const { Cursor } = await import("./index-c4ykd0f1.js");
75
+ const { Cursor } = await import("./index-dr94zbnh.js");
76
76
  const models = await Cursor.models.list({ apiKey });
77
77
  modelListCache = { key: apiKey, at: Date.now(), models };
78
78
  return models;
@@ -446,7 +446,7 @@ class CursorAdapter2 {
446
446
  if (!apiKey)
447
447
  throw new Error("cursor requires CURSOR_API_KEY");
448
448
  registerVolatileSecret(apiKey, "CURSOR_API_KEY");
449
- const { Agent, JsonlLocalAgentStore } = await import("./index-c4ykd0f1.js");
449
+ const { Agent, JsonlLocalAgentStore } = await import("./index-dr94zbnh.js");
450
450
  const modelId = config.model || DEFAULT_MODEL_TIER_MAP.cursor.regular;
451
451
  const effort = applyReasoningEffort("cursor", modelId, config.reasoningEffort);
452
452
  const requested = effort.kind === "cursor-effort" ? effort.reasoningEffort : undefined;
@@ -23,11 +23,21 @@ function normalizeStoredKey(key) {
23
23
  if (!trimmed || trimmed.includes("\x00")) {
24
24
  throw new FilesError("Provider", "Stored file key must be a non-empty path");
25
25
  }
26
- if (trimmed.split("/").some((part) => part === "..")) {
26
+ if (trimmed.split("/").some(isParentSegment)) {
27
27
  throw new FilesError("Provider", "Stored file key must not contain parent path segments");
28
28
  }
29
29
  return trimmed;
30
30
  }
31
+ function isParentSegment(part) {
32
+ if (part === "..")
33
+ return true;
34
+ try {
35
+ const decoded = decodeURIComponent(part);
36
+ return decoded === ".." || decoded.includes("/");
37
+ } catch {
38
+ return false;
39
+ }
40
+ }
31
41
  function normalizeName(name) {
32
42
  const trimmed = name.trim().replace(/^\/+/, "");
33
43
  if (!trimmed || trimmed === "." || trimmed.includes("\x00")) {
@@ -518,4 +528,4 @@ function selectProvider() {
518
528
  function resetFileStorageProvider2() {
519
529
  memoizedProvider = null;
520
530
  }
521
- export { FilesError, providerPath, normalizeFilesError, agentFsRequestTimeoutMs, AgentFsProvider, getFileStorageProvider2, resetFileStorageProvider2 };
531
+ export { FilesError, providerPath, normalizeStoredKey, normalizeFilesError, agentFsRequestTimeoutMs, AgentFsProvider, getFileStorageProvider2, resetFileStorageProvider2 };
@@ -15,7 +15,7 @@ import {
15
15
  init_secret_registry,
16
16
  upsertSwarmConfig2,
17
17
  init_db3
18
- } from "./cli-vcgscaan.js";
18
+ } from "./cli-wt0jf9hm.js";
19
19
  import {
20
20
  createRuntimeProvider,
21
21
  init_runtime_providers
@@ -25,7 +25,7 @@ import {
25
25
  init_session_token_connections,
26
26
  insertSessionToken,
27
27
  init_users
28
- } from "./cli-sds5zzs8.js";
28
+ } from "./cli-1f3qzw6y.js";
29
29
  import {
30
30
  RuntimeControllerCreateSchema,
31
31
  RuntimeControllerUpdateSchema,
@@ -33,7 +33,7 @@ import {
33
33
  RuntimePoolUpdateSchema,
34
34
  RuntimePoolCreateAgentSchema,
35
35
  init_types
36
- } from "./cli-836ehxmt.js";
36
+ } from "./cli-eww120g8.js";
37
37
  import {
38
38
  scrubSecrets,
39
39
  registerVolatileSecret,