@desplega.ai/agent-swarm 1.131.0 → 1.133.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 (265) hide show
  1. package/README.md +2 -2
  2. package/dist/{actions-w53mbns9.js → actions-cskpayd7.js} +11 -9
  3. package/dist/{anthropic-messages-rjmd2e7n.js → anthropic-messages-tpxtbx7b.js} +28 -12
  4. package/dist/{app-m9gwqsqv.js → app-ang77nbb.js} +8 -6
  5. package/dist/{assistant-bp65m6f3.js → assistant-b4exebdw.js} +16 -13
  6. package/dist/{azure-openai-responses-c0yjmbfd.js → azure-openai-responses-m3921t4y.js} +8 -8
  7. package/dist/{boot-reembed-62p0at2k.js → boot-reembed-ps2aftpb.js} +9 -7
  8. package/dist/{boot-reembed-xmfp6wdh.js → boot-reembed-znyk3nxb.js} +10 -8
  9. package/dist/{boot-scrub-logs-rr8q2dms.js → boot-scrub-logs-2ax3xgz1.js} +7 -5
  10. package/dist/{claude-adapter-2y47mrkd.js → claude-adapter-3ct8kgxw.js} +13 -9
  11. package/dist/{claude-managed-adapter-gv19tdew.js → claude-managed-adapter-akx4ntf2.js} +2 -2
  12. package/dist/{cli-t1xze5qh.js → cli-13w2hwkh.js} +1 -1
  13. package/dist/{cli-efxfnq6q.js → cli-1532szb1.js} +8 -6
  14. package/dist/{cli-d2tfkcga.js → cli-23d3rseb.js} +33 -17
  15. package/dist/{cli-nm5gtp1x.js → cli-2a75z9c5.js} +196 -7
  16. package/dist/{cli-fywms69x.js → cli-2t30rj0d.js} +1 -1
  17. package/dist/{cli-cvgjwnh1.js → cli-3c3tdgab.js} +10 -10
  18. package/dist/{cli-pm6xbh84.js → cli-3zzxa9jz.js} +46 -16
  19. package/dist/{cli-cdeg08wx.js → cli-4k6233gc.js} +1 -1
  20. package/dist/{cli-t55yw3a1.js → cli-5p2tz05r.js} +2 -2
  21. package/dist/{cli-0rcyq6d9.js → cli-5z2yhzvd.js} +125 -47
  22. package/dist/{cli-3kf51j15.js → cli-6zfq31nj.js} +9 -3
  23. package/dist/{cli-er3a4bb0.js → cli-8m9de10a.js} +6 -1
  24. package/dist/{cli-gm9cbhbq.js → cli-8t14vg9w.js} +27 -8
  25. package/dist/{cli-72q8m8gk.js → cli-9nfc2es8.js} +6 -6
  26. package/dist/{cli-5ze9rv97.js → cli-9ta3pwms.js} +11 -4
  27. package/dist/{cli-78xwvkhj.js → cli-avr0ns7z.js} +2 -2
  28. package/dist/{cli-n6h8qt8n.js → cli-c897wyhw.js} +12 -7
  29. package/dist/{cli-2q72qz2s.js → cli-dgk20ft7.js} +15 -6
  30. package/dist/cli-et1bbwqf.js +13 -0
  31. package/dist/{cli-bqw0mt1n.js → cli-f5w27pj3.js} +3 -3
  32. package/dist/{cli-2wadx7p2.js → cli-f8dre4bz.js} +2 -2
  33. package/dist/{cli-e7ckcg4v.js → cli-ftwpv451.js} +170 -387
  34. package/dist/{cli-g6b8x1h8.js → cli-g854s2dw.js} +1 -1
  35. package/dist/{cli-5kx36evn.js → cli-ggmdxeqa.js} +13 -8
  36. package/dist/cli-hkwfe3qj.js +530 -0
  37. package/dist/{cli-5dsbcjjw.js → cli-jqwnqx9m.js} +1 -1
  38. package/dist/{cli-9dr5qzc0.js → cli-ny122vh4.js} +21 -10
  39. package/dist/{cli-5v4rw6yd.js → cli-pvzqhbs9.js} +2 -2
  40. package/dist/cli-pzq5rjym.js +15 -0
  41. package/dist/{cli-xpxde7rm.js → cli-qes8ef67.js} +48 -30
  42. package/dist/{cli-sajgpkqg.js → cli-qs9hhsvb.js} +1723 -325
  43. package/dist/cli-qys3rhhz.js +27 -0
  44. package/dist/{cli-rzbpmxdr.js → cli-r6tpm37h.js} +2 -2
  45. package/dist/{cli-qv61hp37.js → cli-rch80c76.js} +2 -2
  46. package/dist/{cli-0258203w.js → cli-rpp0x4zy.js} +137 -17
  47. package/dist/{cli-5n6e5yfn.js → cli-s1k0wxhe.js} +12 -7
  48. package/dist/{cli-psh3c4va.js → cli-sfd9v7sj.js} +1 -1
  49. package/dist/{cli-70xqj0z3.js → cli-sh3ytsyj.js} +49 -39
  50. package/dist/{cli-zsspvvm2.js → cli-w1mp9jy7.js} +1 -1
  51. package/dist/{cli-d3x3x1c9.js → cli-xdb4mpnp.js} +2 -2
  52. package/dist/{cli-57khth04.js → cli-xmyqv00z.js} +120 -4
  53. package/dist/{cli-yw8vghx2.js → cli-xv8t8p3c.js} +65 -32
  54. package/dist/{cli-f1am9szv.js → cli-xxv5pn4f.js} +1 -1
  55. package/dist/{cli-t76vw5db.js → cli-y08jvxzx.js} +601 -140
  56. package/dist/{cli-a4jzdpa3.js → cli-zfbf3srj.js} +650 -245
  57. package/dist/{cli-a40rnf71.js → cli-zmq89k34.js} +6 -6
  58. package/dist/{cli-qmdnhpej.js → cli-zr9q011v.js} +23 -13
  59. package/dist/cli.js +22 -22
  60. package/dist/{codex-adapter-d24q75wk.js → codex-adapter-bef93pq4.js} +9 -7
  61. package/dist/{codex-hook-hq54t9ft.js → codex-hook-e8dba65p.js} +3 -2
  62. package/dist/{codex-session-runner-g50vcsex.js → codex-session-runner-5pkxys7x.js} +9 -7
  63. package/dist/{commands-c3nrc5hg.js → commands-e23s1bff.js} +9 -7
  64. package/dist/{db-nt7fg3tw.js → db-m3nabatn.js} +17 -5
  65. package/dist/{google-generative-ai-hysrd8qx.js → google-generative-ai-8maw55xh.js} +11 -8
  66. package/dist/{google-vertex-p5arrga0.js → google-vertex-8vjqmx8g.js} +11 -8
  67. package/dist/{handlers-fkr6swat.js → handlers-akazedvr.js} +16 -13
  68. package/dist/{hook-77wpvnjc.js → hook-ze4cpf0v.js} +55 -41
  69. package/dist/{hook-g019yehy.js → hook-zfqyyenw.js} +10 -7
  70. package/dist/{http-jewj0syk.js → http-sja0n6kw.js} +730 -150
  71. package/dist/index-0gr8vd6k.js +39 -0
  72. package/dist/{index-7n2xpbd4.js → index-354vkhdv.js} +154 -74
  73. package/dist/{index-070v4eyb.js → index-5qthek5t.js} +2 -3
  74. package/dist/{index-hfvggd0z.js → index-95t3cqq5.js} +16 -14
  75. package/dist/{index-9znhar3x.js → index-sea66619.js} +3 -4
  76. package/dist/{index-6gm5he8h.js → index-vpn36mma.js} +15 -13
  77. package/dist/{keepalive-j0fjvqfd.js → keepalive-3sp3meqj.js} +16 -10
  78. package/dist/{lead-1n8x30xe.js → lead-mefeewkf.js} +39 -36
  79. package/dist/{maintenance-gvev11sa.js → maintenance-8tbrbjfg.js} +10 -8
  80. package/dist/mistral-conversations-00zrp7g4.js +717 -0
  81. package/dist/{oauth-refresh-sweep-s9ecsvh0.js → oauth-refresh-sweep-srjwjz6m.js} +8 -6
  82. package/dist/{onboard-pvm5b38w.js → onboard-mt2tgyjg.js} +7 -7
  83. package/dist/{openai-codex-responses-5g27pd6f.js → openai-codex-responses-map32h2s.js} +18 -18
  84. package/dist/{openai-completions-3vkmfz2a.js → openai-completions-w871b1cq.js} +12 -11
  85. package/dist/{openai-responses-dg4t7j7a.js → openai-responses-b0j7xnw8.js} +15 -12
  86. package/dist/{opencode-adapter-1gm38aba.js → opencode-adapter-b39jefcj.js} +5 -3
  87. package/dist/{openrouter-images-g3gm8931.js → openrouter-images-srfkywy0.js} +4 -4
  88. package/dist/{otel-impl-p6jvgd9c.js → otel-impl-z6pxt3j9.js} +224 -9
  89. package/dist/{pi-mono-adapter-t091s27g.js → pi-mono-adapter-btvqmj58.js} +1138 -408
  90. package/dist/{pricing-refresh-k49rcyed.js → pricing-refresh-kyq8cezh.js} +9 -7
  91. package/dist/{rbac-roles-cr80g96t.js → rbac-roles-3ryfrfna.js} +8 -6
  92. package/dist/{rbac-roles-30pspvy7.js → rbac-roles-6qfvbee1.js} +9 -7
  93. package/dist/{render-v2-xm457ng1.js → render-v2-p61ppjey.js} +8 -6
  94. package/dist/{seed-pricing-yhpv35fr.js → seed-pricing-j56bbj4y.js} +8 -6
  95. package/dist/{setup-nytnmwwr.js → setup-tpr6c1kn.js} +2 -2
  96. package/dist/{worker-msytr2cw.js → worker-9w1v0mbb.js} +39 -36
  97. package/openapi.json +542 -16
  98. package/package.json +6 -6
  99. package/src/be/budget-refusal-notify.ts +14 -7
  100. package/src/be/db-queries/task-artifacts.ts +182 -0
  101. package/src/be/db.ts +783 -169
  102. package/src/be/events.ts +5 -0
  103. package/src/be/migrations/130_scratch_script_retention_grace.sql +6 -0
  104. package/src/be/migrations/131_session_logs_created_at_index.sql +2 -0
  105. package/src/be/migrations/132_multi_runtime_instances.sql +44 -0
  106. package/src/be/migrations/133_workflow_run_trigger_type.sql +12 -0
  107. package/src/be/migrations/135_backfill_task_pull_request_attachments.sql +228 -0
  108. package/src/be/migrations/136_task_requester_provenance.sql +37 -0
  109. package/src/be/migrations/137_memory_retrieval_composite_index.sql +1 -0
  110. package/src/be/multi-runtime.ts +430 -0
  111. package/src/be/scripts/db.ts +43 -1
  112. package/src/be/scripts/extract-schema.ts +3 -1
  113. package/src/be/scripts/retention.ts +164 -0
  114. package/src/be/scripts/run-saved.ts +16 -1
  115. package/src/be/scripts/typecheck.ts +3 -2
  116. package/src/be/seed-skills/index.ts +7 -0
  117. package/src/be/steering.ts +1 -1
  118. package/src/be/swarm-config-guard.ts +18 -0
  119. package/src/commands/credential-wait.ts +54 -0
  120. package/src/commands/onboard/steps/core-credentials.tsx +1 -1
  121. package/src/commands/onboard/steps/custom-templates.tsx +1 -1
  122. package/src/commands/onboard/steps/harness-credentials.tsx +1 -1
  123. package/src/commands/onboard/steps/health-check.tsx +1 -1
  124. package/src/commands/onboard/steps/start.tsx +1 -1
  125. package/src/commands/profile-sync-audit.ts +56 -0
  126. package/src/commands/profile-sync.ts +287 -15
  127. package/src/commands/provider-credentials.ts +46 -19
  128. package/src/commands/runner.ts +196 -33
  129. package/src/commands/templates.ts +22 -0
  130. package/src/github/handlers.ts +55 -9
  131. package/src/heartbeat/heartbeat.ts +71 -12
  132. package/src/hooks/hook.ts +49 -33
  133. package/src/http/active-sessions.ts +11 -1
  134. package/src/http/agents.ts +261 -30
  135. package/src/http/all-routes.ts +1 -0
  136. package/src/http/config.ts +13 -2
  137. package/src/http/core.ts +102 -4
  138. package/src/http/db-query-bounded.ts +313 -0
  139. package/src/http/db-query-shared.ts +249 -0
  140. package/src/http/db-query.ts +54 -42
  141. package/src/http/events.ts +2 -0
  142. package/src/http/index.ts +27 -2
  143. package/src/http/mcp-bridge.ts +37 -3
  144. package/src/http/mcp.ts +12 -0
  145. package/src/http/memory.ts +13 -2
  146. package/src/http/openapi.ts +1 -0
  147. package/src/http/poll.ts +70 -27
  148. package/src/http/route-def.ts +43 -9
  149. package/src/http/schedules.ts +2 -2
  150. package/src/http/scripts.ts +31 -4
  151. package/src/http/session-data.ts +44 -0
  152. package/src/http/tasks.ts +2 -2
  153. package/src/http/users.ts +74 -52
  154. package/src/http/webhooks.ts +5 -2
  155. package/src/http/workflows.ts +1 -4
  156. package/src/http/x.ts +14 -0
  157. package/src/integrations/kapso/inbound.ts +1 -1
  158. package/src/jira/outbound.ts +39 -8
  159. package/src/jira/webhook-lifecycle.ts +13 -2
  160. package/src/linear/outbound.ts +43 -10
  161. package/src/oauth/keepalive.ts +13 -2
  162. package/src/prompts/base-prompt.ts +1 -1
  163. package/src/prompts/session-templates.ts +45 -7
  164. package/src/providers/claude-adapter.ts +6 -0
  165. package/src/providers/claude-managed-models.ts +34 -10
  166. package/src/providers/codex-adapter.ts +6 -0
  167. package/src/providers/opencode-adapter.ts +6 -0
  168. package/src/providers/pi-mono-adapter.ts +8 -0
  169. package/src/providers/pricing-sources.md +24 -0
  170. package/src/queue-stall-alarm.ts +216 -0
  171. package/src/scheduler/scheduler.ts +7 -0
  172. package/src/script-workflows/executor.ts +2 -1
  173. package/src/scripts-runtime/executors/native.ts +2 -1
  174. package/src/scripts-runtime/executors/types.ts +5 -0
  175. package/src/scripts-runtime/loader.ts +5 -0
  176. package/src/scripts-runtime/swarm-config.ts +8 -0
  177. package/src/scripts-runtime/swarm-sdk.ts +7 -0
  178. package/src/scripts-runtime/types/stdlib.d.ts +1 -0
  179. package/src/scripts-runtime/types/swarm-sdk.d.ts +1 -0
  180. package/src/tests/budget-claim-gate.test.ts +20 -0
  181. package/src/tests/claude-adapter.test.ts +32 -0
  182. package/src/tests/claude-managed-adapter.test.ts +38 -7
  183. package/src/tests/codex-adapter.test.ts +30 -0
  184. package/src/tests/create-task-validation.test.ts +128 -0
  185. package/src/tests/credential-wait.test.ts +67 -1
  186. package/src/tests/db-query.test.ts +711 -2
  187. package/src/tests/http-api-integration.test.ts +81 -0
  188. package/src/tests/http-users.test.ts +166 -1
  189. package/src/tests/identity-field-budget.test.ts +176 -0
  190. package/src/tests/mcp-tools-user.test.ts +34 -0
  191. package/src/tests/mcp-user-route.test.ts +17 -0
  192. package/src/tests/metrics-http.test.ts +44 -0
  193. package/src/tests/multi-runtime-registration.test.ts +2703 -0
  194. package/src/tests/openapi-response-contract.test.ts +24 -0
  195. package/src/tests/openapi-route-headers.test.ts +83 -0
  196. package/src/tests/opencode-adapter.test.ts +40 -0
  197. package/src/tests/outbound-listener-rejection.test.ts +138 -0
  198. package/src/tests/pi-mono-adapter.test.ts +98 -0
  199. package/src/tests/profile-sync-warning.test.ts +277 -0
  200. package/src/tests/profile-sync.test.ts +232 -6
  201. package/src/tests/prompt-template-session.test.ts +32 -3
  202. package/src/tests/queue-stall-alarm.test.ts +226 -0
  203. package/src/tests/requester-comms.test.ts +32 -0
  204. package/src/tests/runner-requester-profile.test.ts +38 -0
  205. package/src/tests/sandboxed-process.test.ts +45 -0
  206. package/src/tests/schedule-target-type.test.ts +38 -0
  207. package/src/tests/script-connections.test.ts +16 -3
  208. package/src/tests/scripts-external-api.test.ts +8 -3
  209. package/src/tests/scripts-http.test.ts +12 -0
  210. package/src/tests/scripts-retention.test.ts +384 -0
  211. package/src/tests/scripts-runtime-identity.test.ts +375 -0
  212. package/src/tests/scripts-runtime.test.ts +4 -3
  213. package/src/tests/sdk-allowlist.test.ts +47 -0
  214. package/src/tests/send-task-requested-by.test.ts +9 -0
  215. package/src/tests/session-costs.test.ts +506 -1
  216. package/src/tests/shutdown-error-scrubbing.test.ts +92 -0
  217. package/src/tests/steering-core.test.ts +28 -0
  218. package/src/tests/task-artifacts.test.ts +386 -0
  219. package/src/tests/task-attachments-schema.test.ts +17 -1
  220. package/src/tests/task-completion-idempotency.test.ts +57 -0
  221. package/src/tests/task-pull-request-backfill-migration.test.ts +321 -0
  222. package/src/tests/update-profile-api.test.ts +67 -39
  223. package/src/tests/update-profile-auth.test.ts +48 -4
  224. package/src/tests/user-attribution-migration.test.ts +54 -0
  225. package/src/tests/user-identity.test.ts +72 -0
  226. package/src/tests/workflow-async-v2.test.ts +39 -1
  227. package/src/tests/workflow-http-v2.test.ts +3 -2
  228. package/src/tests/workflow-mcp-trigger-schema.test.ts +52 -3
  229. package/src/tests/workflow-retry-v2.test.ts +45 -1
  230. package/src/tests/workflow-swarm-script.test.ts +14 -5
  231. package/src/tools/db-query.ts +18 -8
  232. package/src/tools/get-task-details.ts +24 -3
  233. package/src/tools/manage-user.ts +36 -3
  234. package/src/tools/poll-task.ts +93 -14
  235. package/src/tools/script-common.ts +5 -0
  236. package/src/tools/send-task.ts +1 -4
  237. package/src/tools/store-progress.ts +13 -2
  238. package/src/tools/swarm-config/delete-config.ts +9 -0
  239. package/src/tools/swarm-config/set-config.ts +3 -2
  240. package/src/tools/task-action.ts +30 -0
  241. package/src/tools/task-tool-ctx.ts +8 -1
  242. package/src/tools/update-profile.ts +16 -21
  243. package/src/tools/utils.ts +5 -0
  244. package/src/tools/workflows/trigger-workflow.ts +7 -1
  245. package/src/types.ts +165 -1
  246. package/src/utils/github-pull-request.ts +76 -0
  247. package/src/utils/identity-field-budget.ts +73 -0
  248. package/src/utils/multi-runtime.ts +20 -0
  249. package/src/utils/requester-comms.ts +24 -0
  250. package/src/utils/sandboxed-process.ts +40 -14
  251. package/src/workflows/engine.ts +22 -2
  252. package/src/workflows/executors/swarm-script.ts +24 -1
  253. package/src/workflows/resume.ts +19 -11
  254. package/src/workflows/retry-poller.ts +1 -0
  255. package/src/workflows/triggers.ts +4 -0
  256. package/templates/schedules/daily-compounding-reflection/content.md +12 -3
  257. package/templates/skills/db-query-guidance/config.json +14 -0
  258. package/templates/skills/db-query-guidance/content.md +57 -0
  259. package/dist/cli-3te4jdkm.js +0 -225
  260. package/dist/cli-bmze986d.js +0 -7
  261. package/dist/cli-kh3ba2zf.js +0 -607
  262. package/dist/index-hp1kdbjj.js +0 -36
  263. package/dist/mistral-conversations-81fwav0j.js +0 -30578
  264. package/dist/otel-nqa12wf3.js +0 -3149
  265. package/dist/{pi-messages-tqj8q6b9.js → pi-messages-sssy32x4.js} +3 -3
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  runStopHookSessionSummarySubprocess
3
- } from "./cli-70xqj0z3.js";
3
+ } from "./cli-sh3ytsyj.js";
4
4
  import {
5
5
  SessionErrorTracker,
6
6
  buildOtelTraceparentEnv,
@@ -23,6 +23,9 @@ import {
23
23
  import {
24
24
  applyReasoningEffort
25
25
  } from "./cli-8whqavk2.js";
26
+ import {
27
+ swarmRuntimeInstanceId
28
+ } from "./cli-pzq5rjym.js";
26
29
  import {
27
30
  require_src
28
31
  } from "./cli-7zd05xb4.js";
@@ -179,7 +182,7 @@ async function preseedClaudeTrustDialog(cwd, homeDir = process.env.HOME ?? homed
179
182
  `);
180
183
  console.log(`\x1B[2m[claude]\x1B[0m Pre-seeded trust dialog acceptance for ${cwd} in ${claudeJsonPath}`);
181
184
  }
182
- function mergeMcpConfig(baseConfig, installedServers, taskId, contextKey) {
185
+ function mergeMcpConfig(baseConfig, installedServers, taskId, contextKey, runtimeInstanceId) {
183
186
  const config = {
184
187
  mcpServers: { ...baseConfig?.mcpServers ?? {} }
185
188
  };
@@ -197,6 +200,9 @@ function mergeMcpConfig(baseConfig, installedServers, taskId, contextKey) {
197
200
  if (contextKey) {
198
201
  server.headers["X-Context-Key"] = contextKey;
199
202
  }
203
+ if (runtimeInstanceId) {
204
+ server.headers["X-Runtime-Instance-ID"] = runtimeInstanceId;
205
+ }
200
206
  }
201
207
  return config;
202
208
  }
@@ -231,7 +237,7 @@ async function createSessionMcpConfig(cwd, taskId, installedServers, contextKey)
231
237
  mergedServers["plugin_context-mode_context-mode"] = { command: "context-mode" };
232
238
  }
233
239
  try {
234
- const config = mergeMcpConfig({ mcpServers: mergedServers }, installedServers ?? null, taskId, contextKey);
240
+ const config = mergeMcpConfig({ mcpServers: mergedServers }, installedServers ?? null, taskId, contextKey, swarmRuntimeInstanceId());
235
241
  const sessionConfigPath = `/tmp/mcp-${taskId}.json`;
236
242
  await writeFile(sessionConfigPath, JSON.stringify(config, null, 2));
237
243
  return sessionConfigPath;
@@ -2,9 +2,14 @@ import {
2
2
  ZodFirstPartyTypeKind
3
3
  } from "./cli-fad8m16k.js";
4
4
  import {
5
+ init_external,
5
6
  safeParseAsync1 as safeParseAsync,
6
7
  toJSONSchema
7
- } from "./cli-5dsbcjjw.js";
8
+ } from "./cli-jqwnqx9m.js";
9
+
10
+ // node_modules/zod/v4/classic/index.js
11
+ init_external();
12
+ init_external();
8
13
 
9
14
  // node_modules/@ai-sdk/provider/dist/index.mjs
10
15
  var marker = "vercel.ai.error";
@@ -7,10 +7,11 @@ import {
7
7
  import {
8
8
  appendGrammarToolInputJsonDelta,
9
9
  getGrammarToolInput,
10
+ getJsonSchemaToolParameters,
10
11
  resolveGrammarConstrainedSampling,
11
12
  resolveJsonSchemaStrictSampling,
12
13
  transformMessages
13
- } from "./cli-57khth04.js";
14
+ } from "./cli-xmyqv00z.js";
14
15
  import {
15
16
  sanitizeSurrogates
16
17
  } from "./cli-y2apkfe2.js";
@@ -130,7 +131,9 @@ function convertResponsesMessages(model, context, allowedToolCallProviders, opti
130
131
  } else if (msg.role === "assistant") {
131
132
  const output = [];
132
133
  const assistantMsg = msg;
133
- const isDifferentModel = assistantMsg.model !== model.id && assistantMsg.provider === model.provider && assistantMsg.api === model.api;
134
+ const isSameProviderAndApi = assistantMsg.provider === model.provider && assistantMsg.api === model.api;
135
+ const isSameModel = isSameProviderAndApi && assistantMsg.model === model.id;
136
+ const isDifferentModel = isSameProviderAndApi && assistantMsg.model !== model.id;
134
137
  let textBlockIndex = 0;
135
138
  for (const block of msg.content) {
136
139
  if (block.type === "thinking") {
@@ -165,13 +168,15 @@ function convertResponsesMessages(model, context, allowedToolCallProviders, opti
165
168
  if (isDifferentModel && itemId?.startsWith("fc_") || customInputProperty === undefined && !itemId?.startsWith("fc_")) {
166
169
  itemId = undefined;
167
170
  }
171
+ const canReplayNamespace = isSameModel || options?.deferredTools?.has(toolCall.name) === true;
168
172
  if (customInputProperty !== undefined) {
169
173
  output.push({
170
174
  type: "custom_tool_call",
171
175
  id: itemId,
172
176
  call_id: callId,
173
177
  name: toolCall.name,
174
- input: sanitizeSurrogates(getGrammarToolInput(toolCall.name, toolCall.arguments, customInputProperty))
178
+ input: sanitizeSurrogates(getGrammarToolInput(toolCall.name, toolCall.arguments, customInputProperty)),
179
+ ...canReplayNamespace && toolCall.namespace !== undefined ? { namespace: toolCall.namespace } : {}
175
180
  });
176
181
  } else {
177
182
  output.push({
@@ -179,7 +184,8 @@ function convertResponsesMessages(model, context, allowedToolCallProviders, opti
179
184
  id: itemId,
180
185
  call_id: callId,
181
186
  name: toolCall.name,
182
- arguments: JSON.stringify(toolCall.arguments)
187
+ arguments: JSON.stringify(toolCall.arguments),
188
+ ...canReplayNamespace && toolCall.namespace !== undefined ? { namespace: toolCall.namespace } : {}
183
189
  });
184
190
  }
185
191
  }
@@ -211,7 +217,13 @@ function convertResponsesMessages(model, context, allowedToolCallProviders, opti
211
217
  loadedToolNames.add(name);
212
218
  deferredTools.push(tool);
213
219
  }
214
- if (deferredTools.length > 0) {
220
+ if (deferredTools.length > 0 && options?.deferredToolsMode === "additional-tools") {
221
+ messages.push({
222
+ type: "additional_tools",
223
+ role: "developer",
224
+ tools: convertResponsesTools(deferredTools, options.toolOptions)
225
+ });
226
+ } else if (deferredTools.length > 0 && options?.deferredToolsMode === "tool-search") {
215
227
  const names = deferredTools.map((tool) => tool.name);
216
228
  const searchCallId = `pi_tool_load_${shortHash(`${msg.toolCallId}:${names.join(",")}`)}`;
217
229
  messages.push({
@@ -227,7 +239,7 @@ function convertResponsesMessages(model, context, allowedToolCallProviders, opti
227
239
  execution: "client",
228
240
  status: "completed",
229
241
  tools: convertResponsesTools(deferredTools, {
230
- ...options?.toolOptions,
242
+ ...options.toolOptions,
231
243
  deferLoading: true
232
244
  })
233
245
  });
@@ -257,15 +269,16 @@ function convertResponsesTools(tools, options) {
257
269
  };
258
270
  }
259
271
  const constrainedStrict = resolveJsonSchemaStrictSampling(tool, supportsStrictMode);
272
+ const strict = constrainedStrict ?? defaultStrict;
260
273
  const functionTool = {
261
274
  type: "function",
262
275
  name: tool.name,
263
276
  description: tool.description,
264
- parameters: tool.parameters,
277
+ parameters: getJsonSchemaToolParameters(tool, strict === true),
265
278
  ...options?.deferLoading ? { defer_loading: true } : {}
266
279
  };
267
280
  if (supportsStrictMode) {
268
- functionTool.strict = constrainedStrict ?? defaultStrict;
281
+ functionTool.strict = strict;
269
282
  }
270
283
  return functionTool;
271
284
  });
@@ -336,6 +349,7 @@ async function processResponsesStream(openaiStream, output, stream, model, optio
336
349
  id: `${item.call_id}|${item.id}`,
337
350
  name: item.name,
338
351
  arguments: {},
352
+ ...item.namespace !== undefined ? { namespace: item.namespace } : {},
339
353
  partialJson: item.arguments || ""
340
354
  };
341
355
  output.content.push(block);
@@ -356,6 +370,7 @@ async function processResponsesStream(openaiStream, output, stream, model, optio
356
370
  id: `${item.call_id}|${item.id}`,
357
371
  name: item.name,
358
372
  arguments: { [inputProperty]: input },
373
+ ...item.namespace !== undefined ? { namespace: item.namespace } : {},
359
374
  customInput: {
360
375
  property: inputProperty,
361
376
  jsonBuffer: { input: "", started: false, closed: false }
@@ -554,6 +569,8 @@ async function processResponsesStream(openaiStream, output, stream, model, optio
554
569
  outputSlots.delete(event.output_index);
555
570
  } else if (item.type === "function_call" && slot?.type === "toolCall" && slot.block.partialJson !== undefined) {
556
571
  slot.block.arguments = parseStreamingJson(item.arguments || slot.block.partialJson || "{}");
572
+ if (item.namespace !== undefined)
573
+ slot.block.namespace = item.namespace;
557
574
  delete slot.block.partialJson;
558
575
  stream.push({
559
576
  type: "toolcall_end",
@@ -564,6 +581,8 @@ async function processResponsesStream(openaiStream, output, stream, model, optio
564
581
  outputSlots.delete(event.output_index);
565
582
  } else if (item.type === "custom_tool_call" && slot?.type === "toolCall" && slot.block.customInput) {
566
583
  pushToolCallDelta(slot, appendCustomToolCallInput(slot.block, item.input ?? getCustomToolCallInput(slot.block), true));
584
+ if (item.namespace !== undefined)
585
+ slot.block.namespace = item.namespace;
567
586
  delete slot.block.customInput;
568
587
  stream.push({
569
588
  type: "toolcall_end",
@@ -7,7 +7,7 @@ var package_default;
7
7
  var init_package = __esm(() => {
8
8
  package_default = {
9
9
  name: "@desplega.ai/agent-swarm",
10
- version: "1.131.0",
10
+ version: "1.133.1",
11
11
  description: "agent-swarm.dev — an open-source operating system for AI work: a lead agent breaks goals into tasks, routes them to specialized workers such as Claude Code or Codex, runs each worker in an isolated container, and preserves shared memory, tools, schedules, and review gates so delegated work compounds across sessions.",
12
12
  keywords: [
13
13
  "agent-swarm.dev",
@@ -176,14 +176,14 @@ var init_package = __esm(() => {
176
176
  "@aws-sdk/client-bedrock": "3.1048.0",
177
177
  "@desplega.ai/business-use": "^0.4.2",
178
178
  "@desplega.ai/localtunnel": "^2.2.0",
179
- "@earendil-works/pi-agent-core": "^0.84.1",
180
- "@earendil-works/pi-ai": "^0.84.1",
181
- "@earendil-works/pi-coding-agent": "^0.84.1",
179
+ "@earendil-works/pi-agent-core": "^0.84.2",
180
+ "@earendil-works/pi-ai": "^0.84.2",
181
+ "@earendil-works/pi-coding-agent": "^0.84.2",
182
182
  "@inkjs/ui": "^2.0.0",
183
183
  "@linear/sdk": "^77.0.0",
184
184
  "@modelcontextprotocol/sdk": "^1.25.1",
185
- "@openai/codex-sdk": "^0.147.0",
186
- "@opencode-ai/sdk": "^1.18.15",
185
+ "@openai/codex-sdk": "^0.148.0",
186
+ "@opencode-ai/sdk": "^1.18.18",
187
187
  "@openfort/openfort-node": "^0.9.1",
188
188
  "@opentelemetry/api": "^1.9.1",
189
189
  "@opentelemetry/exporter-metrics-otlp-http": "^0.218.0",
@@ -2,21 +2,22 @@ import {
2
2
  getExecutorRegistry,
3
3
  handleScheduleTrigger,
4
4
  startWorkflowExecution
5
- } from "./cli-yw8vghx2.js";
5
+ } from "./cli-xv8t8p3c.js";
6
6
  import {
7
7
  buildScriptCredentialBindings,
8
8
  getScript,
9
9
  getScriptApiConnectionDescriptors,
10
10
  getScriptMcpConnectionDescriptors,
11
11
  runScript
12
- } from "./cli-pm6xbh84.js";
12
+ } from "./cli-3zzxa9jz.js";
13
13
  import {
14
14
  createTaskWithSiblingAwareness
15
- } from "./cli-cdeg08wx.js";
15
+ } from "./cli-4k6233gc.js";
16
16
  import {
17
17
  getDb,
18
18
  getDueScheduledTasks,
19
19
  getScheduledTaskById,
20
+ getUserById,
20
21
  getWorkflow,
21
22
  init_context_key,
22
23
  init_db,
@@ -24,7 +25,7 @@ import {
24
25
  scheduleContextKey,
25
26
  telemetry,
26
27
  updateScheduledTask
27
- } from "./cli-a4jzdpa3.js";
28
+ } from "./cli-zfbf3srj.js";
28
29
  import {
29
30
  __commonJS,
30
31
  __require,
@@ -6902,7 +6903,13 @@ async function executeScheduleScript(schedule) {
6902
6903
  throw new Error(output.stderr || `Script '${schedule.scriptName}' exited with code ${output.exitCode}${output.error ? ` (${output.error})` : ""}`);
6903
6904
  }
6904
6905
  }
6906
+ function withoutDeletedRequester(schedule) {
6907
+ if (!schedule.createdBy || getUserById(schedule.createdBy))
6908
+ return schedule;
6909
+ return { ...schedule, createdBy: undefined };
6910
+ }
6905
6911
  async function dispatchScheduleTarget(schedule, extraTags = []) {
6912
+ schedule = withoutDeletedRequester(schedule);
6906
6913
  switch (schedule.targetType) {
6907
6914
  case "workflow": {
6908
6915
  if (!schedule.workflowId) {
@@ -4,12 +4,12 @@ import {
4
4
  linkIdentity,
5
5
  recordUnmappedIdentity,
6
6
  resolveIdentity
7
- } from "./cli-psh3c4va.js";
7
+ } from "./cli-sfd9v7sj.js";
8
8
  import {
9
9
  getKv,
10
10
  init_db,
11
11
  upsertKv
12
- } from "./cli-a4jzdpa3.js";
12
+ } from "./cli-zfbf3srj.js";
13
13
 
14
14
  // src/slack/enrich.ts
15
15
  init_db();
@@ -1,12 +1,6 @@
1
- import {
2
- require_cross_spawn
3
- } from "./cli-yazx6hap.js";
4
1
  import {
5
2
  resolveSlashSkillPrompt
6
3
  } from "./cli-r94z9p1z.js";
7
- import {
8
- readPkgVersion
9
- } from "./cli-d6n0thxw.js";
10
4
  import {
11
5
  fetchInstalledMcpServers
12
6
  } from "./cli-tng3131n.js";
@@ -18,9 +12,18 @@ import {
18
12
  clampContextPercent,
19
13
  getContextWindowSize
20
14
  } from "./cli-cw70hymf.js";
15
+ import {
16
+ require_cross_spawn
17
+ } from "./cli-yazx6hap.js";
18
+ import {
19
+ readPkgVersion
20
+ } from "./cli-d6n0thxw.js";
21
21
  import {
22
22
  applyReasoningEffort
23
23
  } from "./cli-8whqavk2.js";
24
+ import {
25
+ swarmRuntimeInstanceId
26
+ } from "./cli-pzq5rjym.js";
24
27
  import {
25
28
  DEFAULT_OPENROUTER_BASE_URL,
26
29
  getOpenRouterBaseUrl
@@ -2068,13 +2071,15 @@ class OpencodeAdapter {
2068
2071
  await Bun.write(agentFilePath, config.systemPrompt ?? "");
2069
2072
  } catch {}
2070
2073
  const installedMcp = await fetchInstalledMcpServers(config.apiUrl, config.apiKey, config.agentId, "opencode") ?? {};
2074
+ const runtimeInstanceId = swarmRuntimeInstanceId();
2071
2075
  const mcpConfig = {
2072
2076
  swarm: {
2073
2077
  type: "remote",
2074
2078
  url: `${config.apiUrl}/mcp`,
2075
2079
  headers: {
2076
2080
  Authorization: `Bearer ${config.apiKey}`,
2077
- "X-Agent-ID": config.agentId
2081
+ "X-Agent-ID": config.agentId,
2082
+ ...runtimeInstanceId ? { "X-Runtime-Instance-ID": runtimeInstanceId } : {}
2078
2083
  }
2079
2084
  },
2080
2085
  ...installedMcp
@@ -4,18 +4,20 @@ import {
4
4
  getScriptById,
5
5
  getScriptMcpConnectionDescriptors,
6
6
  listScriptConnections,
7
- runScript
8
- } from "./cli-pm6xbh84.js";
7
+ restoreScratchScriptLastUsedIfUnchanged,
8
+ runScript,
9
+ touchScratchScriptLastUsed
10
+ } from "./cli-3zzxa9jz.js";
9
11
  import {
10
12
  defaultAssetKey,
11
13
  getDb,
12
14
  getLeadAgent,
13
15
  init_db,
14
16
  init_key
15
- } from "./cli-a4jzdpa3.js";
17
+ } from "./cli-zfbf3srj.js";
16
18
  import {
17
19
  init_zod
18
- } from "./cli-zsspvvm2.js";
20
+ } from "./cli-w1mp9jy7.js";
19
21
  import {
20
22
  _enum,
21
23
  array,
@@ -29,17 +31,18 @@ import {
29
31
  string,
30
32
  union,
31
33
  unknown
32
- } from "./cli-5dsbcjjw.js";
34
+ } from "./cli-jqwnqx9m.js";
33
35
 
34
36
  // src/be/scripts/run-saved.ts
35
37
  function getSavedScriptOwnerAgentId(script) {
36
38
  return script.scopeId ?? script.createdByAgentId;
37
39
  }
38
40
  async function runSavedScriptAsAgent(args) {
41
+ const runStartTouch = args.script.isScratch ? touchScratchScriptLastUsed(args.script.id) : null;
39
42
  const credentials = await buildScriptCredentialBindingsWithFailures({
40
43
  agentId: args.agentId
41
44
  });
42
- return runScript({
45
+ const output = await runScript({
43
46
  source: args.script.source,
44
47
  args: args.input,
45
48
  fsMode: args.script.fsMode,
@@ -49,6 +52,12 @@ async function runSavedScriptAsAgent(args) {
49
52
  apiConnections: getScriptApiConnectionDescriptors({ agentId: args.agentId }),
50
53
  mcpConnections: getScriptMcpConnectionDescriptors({ agentId: args.agentId })
51
54
  });
55
+ if (output.exitCode === 0 && !output.error && !output.runtimeError) {
56
+ touchScratchScriptLastUsed(args.script.id);
57
+ } else if (runStartTouch) {
58
+ restoreScratchScriptLastUsedIfUnchanged(args.script.id, args.script.updatedAt, runStartTouch);
59
+ }
60
+ return output;
52
61
  }
53
62
 
54
63
  // src/apps/definition.ts
@@ -0,0 +1,13 @@
1
+ // node_modules/@earendil-works/pi-ai/dist/utils/pi-user-agent.js
2
+ function loadNodeOs() {
3
+ if (typeof process === "undefined" || !(process.versions?.node || process.versions?.bun)) {
4
+ return null;
5
+ }
6
+ return process.getBuiltinModule?.("node:os") ?? null;
7
+ }
8
+ var nodeOs = loadNodeOs();
9
+ function getPiUserAgent() {
10
+ return nodeOs ? `pi (${nodeOs.platform()} ${nodeOs.release()}; ${nodeOs.arch()})` : "pi (browser)";
11
+ }
12
+
13
+ export { getPiUserAgent };
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  init_env_flag,
3
3
  isEnvFlagEnabled
4
- } from "./cli-xpxde7rm.js";
4
+ } from "./cli-qys3rhhz.js";
5
5
  import {
6
6
  init_zod
7
- } from "./cli-zsspvvm2.js";
7
+ } from "./cli-w1mp9jy7.js";
8
8
  import {
9
9
  _enum
10
- } from "./cli-5dsbcjjw.js";
10
+ } from "./cli-jqwnqx9m.js";
11
11
 
12
12
  // src/rbac/permissions.ts
13
13
  init_zod();
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  init_zod
3
- } from "./cli-zsspvvm2.js";
3
+ } from "./cli-w1mp9jy7.js";
4
4
  import {
5
5
  exports_external
6
- } from "./cli-5dsbcjjw.js";
6
+ } from "./cli-jqwnqx9m.js";
7
7
 
8
8
  // src/be/memory/raters/llm.ts
9
9
  init_zod();