@desplega.ai/agent-swarm 1.166.0 → 1.168.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (221) hide show
  1. package/dist/acp-adapter-zhejfecx.js +34 -0
  2. package/dist/{actions-qz3m692w.js → actions-7jg840nr.js} +25 -25
  3. package/dist/{amp-adapter-j1xbmsqz.js → amp-adapter-ye6rnetm.js} +4 -4
  4. package/dist/{anthropic-messages-hst62ws9.js → anthropic-messages-13yn502s.js} +4 -4
  5. package/dist/{app-43vrdmv8.js → app-ffes2kyf.js} +10 -9
  6. package/dist/{assistant-ertffmka.js → assistant-fhm5smyz.js} +26 -26
  7. package/dist/{azure-openai-responses-mh8tvf78.js → azure-openai-responses-9st34pfz.js} +5 -5
  8. package/dist/{boot-reembed-998jtpdg.js → boot-reembed-20q3nzvg.js} +9 -8
  9. package/dist/{boot-reembed-s7k7c6v2.js → boot-reembed-jvfadhsk.js} +9 -8
  10. package/dist/{boot-scrub-sweep-nepsk4t1.js → boot-scrub-sweep-jtfajzve.js} +10 -9
  11. package/dist/{boot-seeds-vvzs1zhk.js → boot-seeds-9qt0j8j2.js} +12 -11
  12. package/dist/{claude-adapter-2zvmekrp.js → claude-adapter-a8znhthz.js} +24 -22
  13. package/dist/{claude-managed-adapter-s49wbk8t.js → claude-managed-adapter-tzwxy803.js} +4 -4
  14. package/dist/{claude-managed-setup-cvhqq8qn.js → claude-managed-setup-nrhfx5b0.js} +3 -3
  15. package/dist/{claude-sdk-session-kkbxtw5q.js → claude-sdk-session-7x7chdrs.js} +7608 -7596
  16. package/dist/{cli-zsh093hk.js → cli-014vns2y.js} +63 -1
  17. package/dist/{cli-8kgvmkak.js → cli-0jngabtb.js} +1 -1
  18. package/dist/{cli-qvfk83fy.js → cli-13xwcqvj.js} +2 -2
  19. package/dist/{cli-0nhdwxd5.js → cli-43jg9xdw.js} +3 -3
  20. package/dist/{cli-cpfmqz3n.js → cli-47zfzshm.js} +5 -5
  21. package/dist/{cli-zy7vwsne.js → cli-5qkcdv8c.js} +16 -9
  22. package/dist/{cli-cwxhbf43.js → cli-5t5my0h8.js} +85 -2
  23. package/dist/{cli-y59h2pk9.js → cli-69egj654.js} +1 -1
  24. package/dist/{cli-68r1j4sg.js → cli-6bpvv8h4.js} +3 -3
  25. package/dist/{cli-yshaazs1.js → cli-74ez9b66.js} +63 -20
  26. package/dist/{cli-32bca7nr.js → cli-7avy4v8w.js} +1 -1
  27. package/dist/{cli-f2n17zhp.js → cli-7mhy3ths.js} +21 -18
  28. package/dist/{cli-q38n4bq0.js → cli-95zs84qw.js} +3 -3
  29. package/dist/{cli-fn697bnt.js → cli-9q0bh411.js} +21 -8
  30. package/dist/{cli-rggdq8wq.js → cli-9q24yyvs.js} +3 -3
  31. package/dist/cli-a35hzdve.js +33 -0
  32. package/dist/{cli-3qn4r334.js → cli-aj1e0h0d.js} +20 -14
  33. package/dist/{cli-rsy933yz.js → cli-bcspch6h.js} +30 -19
  34. package/dist/{cli-x3x0qwky.js → cli-bxqez1p0.js} +51 -23
  35. package/dist/{cli-ng97fjq7.js → cli-cmxkbzzs.js} +33 -7
  36. package/dist/{cli-df56tqdw.js → cli-ee0402n1.js} +198 -70
  37. package/dist/{cli-mwegs4af.js → cli-ew0c3a1j.js} +3 -3
  38. package/dist/{cli-ysnyhws9.js → cli-ewhwpyrb.js} +54 -51
  39. package/dist/{cli-j2jbr8af.js → cli-fhj4y16f.js} +1 -1
  40. package/dist/{cli-8t229cmr.js → cli-fqq06kkb.js} +30 -17
  41. package/dist/{cli-jvj6a0cv.js → cli-g6gx2dn1.js} +54 -19
  42. package/dist/{cli-nexwh8zg.js → cli-g7k7zbcz.js} +12 -5
  43. package/dist/{cli-ecknp7p1.js → cli-j05x7pnb.js} +10 -10
  44. package/dist/{cli-gt8azyet.js → cli-jb931ba2.js} +1 -1
  45. package/dist/{cli-nvvfd8bq.js → cli-jbzbr36n.js} +4091 -3793
  46. package/dist/{cli-3ddybbbx.js → cli-jvmtxqtc.js} +26 -14
  47. package/dist/{cli-pkke6geq.js → cli-km4x66j0.js} +83 -65
  48. package/dist/{cli-b0f70z24.js → cli-mn8qkd8v.js} +1 -1
  49. package/dist/{cli-0qjcsxgz.js → cli-nctfv2yy.js} +99 -9
  50. package/dist/{cli-4r1sjfc4.js → cli-ng1pmdx6.js} +10 -10
  51. package/dist/cli-nkqjj42q.js +104 -0
  52. package/dist/{cli-aqcey741.js → cli-p5jqk8fr.js} +1 -1
  53. package/dist/{cli-66zh26sp.js → cli-pgehz8e1.js} +57 -17
  54. package/dist/cli-q1vnz8wv.js +96 -0
  55. package/dist/{cli-fj86xr3c.js → cli-qd97v6z2.js} +2 -2
  56. package/dist/{cli-p4ztb80h.js → cli-r7eeddkq.js} +13 -8
  57. package/dist/{cli-8ssjez7e.js → cli-rhy7z1rp.js} +22 -11
  58. package/dist/{cli-vzc73wet.js → cli-rr5z1j4p.js} +87 -69
  59. package/dist/{cli-4mevd1hf.js → cli-s9y81s7j.js} +5 -5
  60. package/dist/{cli-dw2q9f7g.js → cli-svah6b6w.js} +4 -4
  61. package/dist/{cli-h3x613ze.js → cli-tc5zec7v.js} +6 -6
  62. package/dist/{cli-ttbsse3f.js → cli-tmhsxhb8.js} +1 -1
  63. package/dist/{cli-feh3dkah.js → cli-v1w7pbd8.js} +2 -1
  64. package/dist/{cli-10zmp1p7.js → cli-vr5avem2.js} +27 -32
  65. package/dist/{cli-bzr0ftht.js → cli-wnb9b2g3.js} +19 -0
  66. package/dist/{cli-krqm5f11.js → cli-xezn9nkh.js} +16 -13
  67. package/dist/{cli-8kt0bmgx.js → cli-xf713zz0.js} +2 -2
  68. package/dist/{cli-6zcfw0x7.js → cli-y195hv1a.js} +1 -1
  69. package/dist/{cli-x7kpr72a.js → cli-ytmmyj7f.js} +2 -2
  70. package/dist/{cli-v2a8x45d.js → cli-z48ggfyq.js} +11 -6
  71. package/dist/{cli-qbksc292.js → cli-zy39d433.js} +2 -0
  72. package/dist/cli.js +28 -28
  73. package/dist/{cloudflare-workers-ai-system-one-tt484t61.js → cloudflare-workers-ai-system-one-sta45jf9.js} +7 -5
  74. package/dist/{codex-adapter-dw1wxqt8.js → codex-adapter-n63k33d3.js} +18 -18
  75. package/dist/{codex-login-terbdsqq.js → codex-login-g1cyt5zm.js} +1 -1
  76. package/dist/{codex-session-runner-3cgb8y1g.js → codex-session-runner-xkxfd81a.js} +18 -18
  77. package/dist/{commands-mhxam6z2.js → commands-q4mfhn51.js} +9 -8
  78. package/dist/{cursor-adapter-2qda3st7.js → cursor-adapter-v8mm6bp5.js} +5 -5
  79. package/dist/{db-sjks418k.js → db-1t0bj3pc.js} +9 -8
  80. package/dist/{dispatcher-1es759rn.js → dispatcher-k1fhavcf.js} +24 -24
  81. package/dist/{dsh-adapter-bek4cyw9.js → dsh-adapter-5423p70m.js} +5 -5
  82. package/dist/{easter-egg-3d-mtpnw06s.js → easter-egg-3d-66zxervv.js} +2 -2
  83. package/dist/{execute-s4ccjq3n.js → execute-h4jgevyw.js} +61 -11
  84. package/dist/{google-generative-ai-d6nphg3q.js → google-generative-ai-b8zxrpax.js} +5 -5
  85. package/dist/{google-vertex-cpshkref.js → google-vertex-nrdd697t.js} +5 -5
  86. package/dist/{grok-adapter-ar9cw9jg.js → grok-adapter-phrndeb8.js} +18 -8
  87. package/dist/{handlers-1gkbhktr.js → handlers-59ywqwzh.js} +27 -27
  88. package/dist/{hook-vxa3tcsy.js → hook-atj0swc2.js} +14 -14
  89. package/dist/{hook-ds2zxq9v.js → hook-mew1chq9.js} +42 -31
  90. package/dist/{http-3h21z9md.js → http-ef2fnn9v.js} +953 -98
  91. package/dist/{index-n99fycq7.js → index-48pb9erw.js} +24 -24
  92. package/dist/{index-bn6cy8ps.js → index-9fc2h7ww.js} +24 -24
  93. package/dist/{index-9b65j1m5.js → index-gr69c43q.js} +9 -8
  94. package/dist/{index-f8xnqrye.js → index-h26wjcfy.js} +43 -24
  95. package/dist/{index-dkfxpkmm.js → index-w2yhye23.js} +25 -25
  96. package/dist/{keepalive-3xspa9jw.js → keepalive-qhcqz56v.js} +11 -10
  97. package/dist/{lead-6qphc124.js → lead-hpk5r3b1.js} +47 -47
  98. package/dist/{llama-cpp-classify-tgj35k8d.js → llama-cpp-classify-6erb7wwv.js} +3 -1
  99. package/dist/{maintenance-0teem1bb.js → maintenance-nvkyp2xe.js} +9 -8
  100. package/dist/{mistral-conversations-8445ddjn.js → mistral-conversations-059y51zt.js} +4 -4
  101. package/dist/{node-9sg7ajby.js → node-qm9eb6z0.js} +1 -1
  102. package/dist/{oauth-refresh-sweep-sh9q25xp.js → oauth-refresh-sweep-ngskthwh.js} +10 -9
  103. package/dist/{onboard-54qmnqxe.js → onboard-yfnkqhxc.js} +2 -2
  104. package/dist/{openai-codex-responses-9ynm88zy.js → openai-codex-responses-jzxkta9b.js} +8 -7
  105. package/dist/{openai-completions-nhqwjmaw.js → openai-completions-663yncfq.js} +4 -4
  106. package/dist/openai-decisions-vj9nkpf8.js +162 -0
  107. package/dist/{openai-responses-xx1c4kgm.js → openai-responses-m3g43rrt.js} +5 -5
  108. package/dist/{opencode-adapter-wjfa2wvd.js → opencode-adapter-yjyqynzf.js} +7 -7
  109. package/dist/{openrouter-images-8yx3487g.js → openrouter-images-kr60n6b9.js} +1 -1
  110. package/dist/{otel-impl-ycqzp2a1.js → otel-impl-hhm64r6m.js} +1 -1
  111. package/dist/{pi-messages-vxdt8v7j.js → pi-messages-xszk613n.js} +1 -1
  112. package/dist/{pi-mono-adapter-e77e9zst.js → pi-mono-adapter-0eg8kw2c.js} +68 -51
  113. package/dist/{pricing-refresh-atnkngqs.js → pricing-refresh-35f91nx2.js} +11 -10
  114. package/dist/{rbac-roles-j78wdksm.js → rbac-roles-97w370qj.js} +10 -9
  115. package/dist/{rbac-roles-9pjphh9q.js → rbac-roles-z6sje3gy.js} +9 -8
  116. package/dist/{render-v2-pxjs49fx.js → render-v2-n4v66bj3.js} +10 -9
  117. package/dist/{runtime-v2t1r79e.js → runtime-h9ha1mq6.js} +4 -4
  118. package/dist/{setup-ymej0xtx.js → setup-m3hhyv5f.js} +2 -2
  119. package/dist/{typesafe-system-one-datfr82p.js → typesafe-system-one-e988vty7.js} +7 -5
  120. package/dist/{virtual-modules-wm8mxdxx.js → virtual-modules-ftr9kwe8.js} +11 -11
  121. package/dist/{work-objects-3nh4ymzb.js → work-objects-mxf2c842.js} +27 -27
  122. package/dist/{worker-qa9fkz5s.js → worker-9t07z1gq.js} +47 -47
  123. package/openapi.json +72 -1
  124. package/package.json +10 -10
  125. package/src/be/memory/providers/openai-embedding.ts +7 -2
  126. package/src/be/memory/raters/llm-summarizer.ts +7 -2
  127. package/src/be/modelsdev-cache.json +61 -0
  128. package/src/be/script-connections.ts +40 -6
  129. package/src/be/seed-pricing.ts +84 -53
  130. package/src/be/swarm-config-guard.ts +14 -0
  131. package/src/commands/provider-credentials.ts +28 -5
  132. package/src/commands/runner.ts +7 -12
  133. package/src/extensions/catalog.generated.json +17 -0
  134. package/src/heartbeat/heartbeat.ts +91 -19
  135. package/src/hooks/hook.ts +72 -27
  136. package/src/http/mcp.ts +5 -0
  137. package/src/http/onboarding.ts +2 -0
  138. package/src/http/script-connections.ts +35 -0
  139. package/src/providers/acp-targets.ts +10 -5
  140. package/src/providers/amp-adapter.ts +1 -1
  141. package/src/providers/claude-adapter.ts +32 -0
  142. package/src/providers/claude-background-keepalive.ts +100 -0
  143. package/src/providers/claude-sdk-session.ts +6 -0
  144. package/src/providers/codex-adapter.ts +30 -3
  145. package/src/providers/codex-oauth/auth-json.ts +21 -4
  146. package/src/providers/codex-oauth/types.ts +2 -0
  147. package/src/providers/dsh-adapter.ts +11 -2
  148. package/src/providers/grok-adapter.ts +18 -2
  149. package/src/providers/opencode-adapter.ts +21 -5
  150. package/src/providers/pi-mono-extension.ts +56 -25
  151. package/src/providers/pricing-sources.md +2 -0
  152. package/src/scheduler/scheduler.ts +82 -13
  153. package/src/scripts-runtime/executors/registry.ts +1 -1
  154. package/src/server.ts +63 -3
  155. package/src/tests/acp-adapter.test.ts +152 -12
  156. package/src/tests/ci-unit-test-report.test.ts +73 -0
  157. package/src/tests/claude-background-keepalive-wiring.test.ts +220 -0
  158. package/src/tests/claude-background-keepalive.fixture.ts +162 -0
  159. package/src/tests/claude-background-keepalive.test.ts +139 -0
  160. package/src/tests/claude-default-route.test.ts +75 -0
  161. package/src/tests/claude-hook-output.test.ts +233 -0
  162. package/src/tests/codex-adapter-pool-auth-revalidate.test.ts +4 -2
  163. package/src/tests/codex-adapter.test.ts +166 -26
  164. package/src/tests/codex-oauth-auth-timestamps.test.ts +76 -0
  165. package/src/tests/codex-oauth.test.ts +4 -1
  166. package/src/tests/connection-embedded-auth.test.ts +51 -0
  167. package/src/tests/context-window.test.ts +2 -2
  168. package/src/tests/credential-check.test.ts +51 -1
  169. package/src/tests/docs-index-footprint.test.js +3 -3
  170. package/src/tests/dsh-adapter.test.ts +24 -2
  171. package/src/tests/enabled-tools.test.ts +269 -0
  172. package/src/tests/entrypoint-codex-oauth-seed.test.ts +12 -0
  173. package/src/tests/extensions-catalog.test.ts +1 -0
  174. package/src/tests/extensions-example-slack-reply-gate.test.ts +756 -0
  175. package/src/tests/grok-adapter.test.ts +13 -0
  176. package/src/tests/haiku-5-5-pricing.test.ts +38 -0
  177. package/src/tests/heartbeat-checklist.test.ts +158 -1
  178. package/src/tests/onboarding.test.ts +44 -0
  179. package/src/tests/opencode-adapter.test.ts +66 -3
  180. package/src/tests/opencode-plugin.test.ts +37 -0
  181. package/src/tests/openrouter-attribution-call-sites.test.ts +204 -0
  182. package/src/tests/openrouter-base-url.test.ts +30 -39
  183. package/src/tests/pi-mono-extension.test.ts +161 -2
  184. package/src/tests/pricing-refresh.test.ts +70 -1
  185. package/src/tests/reasoning-effort.test.ts +3 -1
  186. package/src/tests/schedule-target-type.test.ts +136 -0
  187. package/src/tests/script-connections-http.test.ts +45 -0
  188. package/src/tests/script-connections-mcp.test.ts +41 -0
  189. package/src/tests/script-executor-registry.test.ts +18 -0
  190. package/src/tests/send-task-self-send.test.ts +107 -0
  191. package/src/tests/telemetry-trigger.test.ts +12 -1
  192. package/src/tests/workflow-llm.test.ts +14 -0
  193. package/src/tests/workflow-system-one-decision-providers.test.ts +33 -0
  194. package/src/tools/request-human-input.ts +7 -2
  195. package/src/tools/script-connections/tool.ts +35 -3
  196. package/src/tools/send-task.ts +9 -1
  197. package/src/utils/enabled-tools.ts +27 -0
  198. package/src/utils/internal-ai/complete-structured.ts +11 -3
  199. package/src/utils/openrouter-base-url.ts +23 -0
  200. package/src/workflows/executors/raw-llm.ts +1 -0
  201. package/src/workflows/executors/system-one-decision.ts +2 -0
  202. package/src/workflows/executors/validate.ts +1 -0
  203. package/src/workflows/executors/workflow-llm.ts +9 -2
  204. package/templates/extensions/README.md +1 -0
  205. package/templates/extensions/slack-reply-gate/README.md +98 -0
  206. package/templates/extensions/slack-reply-gate/hooks.ts +582 -0
  207. package/templates/extensions/slack-reply-gate/manifest.json +8 -0
  208. package/templates/skills/agent-browser/SKILL.md +2 -0
  209. package/templates/skills/agent-browser/content.md +2 -0
  210. package/templates/skills/code-quality/content.md +1 -0
  211. package/templates/skills/heartbeat-runbook/content.md +1 -1
  212. package/templates/skills/swarm-scripts/SKILL.md +10 -0
  213. package/templates/skills/swarm-scripts/content.md +10 -0
  214. package/templates/skills/work-on-task/SKILL.md +4 -0
  215. package/templates/skills/work-on-task/content.md +4 -0
  216. package/templates/skills/workflow-iterate/content.md +9 -0
  217. package/dist/acp-adapter-yzfxn8vj.js +0 -23
  218. package/dist/cli-3dpj7atn.js +0 -11
  219. package/dist/cli-gvcgmx69.js +0 -183
  220. package/dist/{cli-jhm6hzjn.js → cli-mxvnnv5q.js} +7 -7
  221. package/dist/{codex-hook-d2rkvf39.js → codex-hook-15dgc4cb.js} +1 -1
@@ -20,7 +20,7 @@ import {
20
20
  import {
21
21
  ensurePricingSeeded,
22
22
  ensureRbacSeeded
23
- } from "./cli-0nhdwxd5.js";
23
+ } from "./cli-43jg9xdw.js";
24
24
  import {
25
25
  buildCatalogEntries,
26
26
  getCatalogGeneration,
@@ -30,10 +30,10 @@ import {
30
30
  requestModelCatalogRefresh,
31
31
  startPricingRefreshLoop,
32
32
  upsertModelCatalogOverlay
33
- } from "./cli-rggdq8wq.js";
33
+ } from "./cli-9q24yyvs.js";
34
34
  import {
35
35
  loadModelsDevCache
36
- } from "./cli-ysnyhws9.js";
36
+ } from "./cli-ewhwpyrb.js";
37
37
  import {
38
38
  AppDefinitionSchema,
39
39
  AppElementsSchema,
@@ -64,6 +64,7 @@ import {
64
64
  decodeAppDefinition,
65
65
  definitionNodeIds,
66
66
  deleteApp,
67
+ deleteScriptConnection,
67
68
  disableCredentialBinding,
68
69
  extractArgsJsonSchema,
69
70
  extractScriptSignature,
@@ -106,7 +107,7 @@ import {
106
107
  validateDefinition,
107
108
  validateScriptImports,
108
109
  writeBareImportShim
109
- } from "./cli-jvj6a0cv.js";
110
+ } from "./cli-g6gx2dn1.js";
110
111
  import {
111
112
  getApiKey
112
113
  } from "./cli-f14fvzag.js";
@@ -115,18 +116,18 @@ import {
115
116
  registerProcessGroup,
116
117
  terminateProcessGroup
117
118
  } from "./cli-zt3w1cn1.js";
118
- import {
119
- AgentFsProvider,
120
- getFileStorageProvider,
121
- providerPath
122
- } from "./cli-mzfth0bp.js";
123
119
  import {
124
120
  buildAuthorizationUrl,
125
121
  ensureAuthorizationTokenOrThrow,
126
122
  ensureToken,
127
123
  ensureTokenOrThrow,
128
124
  onAuthorizationRefreshed
129
- } from "./cli-j2jbr8af.js";
125
+ } from "./cli-fhj4y16f.js";
126
+ import {
127
+ AgentFsProvider,
128
+ getFileStorageProvider,
129
+ providerPath
130
+ } from "./cli-mzfth0bp.js";
130
131
  import {
131
132
  ZodFirstPartyTypeKind,
132
133
  objectType
@@ -156,11 +157,11 @@ import {
156
157
  taskCitationWarnings,
157
158
  upsertTaskCitations,
158
159
  withSpan
159
- } from "./cli-ecknp7p1.js";
160
+ } from "./cli-j05x7pnb.js";
160
161
  import {
161
162
  getUserGrant,
162
163
  init_rbac_roles
163
- } from "./cli-8kgvmkak.js";
164
+ } from "./cli-0jngabtb.js";
164
165
  import {
165
166
  can,
166
167
  decideAdmission,
@@ -374,6 +375,7 @@ import {
374
375
  init_db1 as init_db2,
375
376
  init_db_client,
376
377
  init_embeddings,
378
+ init_enabled_tools,
377
379
  init_key_paths,
378
380
  init_memory,
379
381
  init_model_tier_keys,
@@ -424,11 +426,13 @@ import {
424
426
  onTaskStarted,
425
427
  overwriteTerminalTaskResultText,
426
428
  pageContextKey,
429
+ parseEnabledTools,
427
430
  placeholderForConfigKey,
428
431
  postMessage,
429
432
  promoteDraftTask,
430
433
  reassociateSessionLogs,
431
434
  recordBudgetRefusalNotification,
435
+ recordInlineScriptRun,
432
436
  recordSlackMessage,
433
437
  refreshDraftTaskLease,
434
438
  rejectTask,
@@ -486,7 +490,7 @@ import {
486
490
  upsertSwarmConfig,
487
491
  validateConfigValue,
488
492
  workflowContextKey
489
- } from "./cli-yshaazs1.js";
493
+ } from "./cli-74ez9b66.js";
490
494
  import {
491
495
  $OpenAPIRegistry,
492
496
  $OpenApiGeneratorV31,
@@ -555,12 +559,23 @@ import {
555
559
  init_task_attachment_links,
556
560
  taskAttachmentDisplayUrl,
557
561
  taskAttachmentFetchCommand
558
- } from "./cli-jhm6hzjn.js";
562
+ } from "./cli-mxvnnv5q.js";
559
563
  import {
560
564
  getSlackConfiguration,
561
565
  init_config,
562
566
  isSlackConfigured
563
567
  } from "./cli-dmtrxqhg.js";
568
+ import {
569
+ deepInterpolate,
570
+ findInterpolationTokens,
571
+ getTemplateDefinition,
572
+ init_registry,
573
+ init_resolver,
574
+ init_template,
575
+ interpolate,
576
+ registerTemplate,
577
+ resolveTemplate
578
+ } from "./cli-5c2j5yvx.js";
564
579
  import {
565
580
  MAX_PROFILE_FILE_LENGTH,
566
581
  getAgentFsDefaultDriveId,
@@ -573,17 +588,6 @@ import {
573
588
  init_constants,
574
589
  isCombEnabled
575
590
  } from "./cli-gd4favx9.js";
576
- import {
577
- deepInterpolate,
578
- findInterpolationTokens,
579
- getTemplateDefinition,
580
- init_registry,
581
- init_resolver,
582
- init_template,
583
- interpolate,
584
- registerTemplate,
585
- resolveTemplate
586
- } from "./cli-5c2j5yvx.js";
587
591
  import {
588
592
  init_env_flag,
589
593
  isEnvFlagEnabled,
@@ -601,7 +605,7 @@ import {
601
605
  modelFamilyKey,
602
606
  parseAlias,
603
607
  resolveAlias
604
- } from "./cli-zsh093hk.js";
608
+ } from "./cli-014vns2y.js";
605
609
  import {
606
610
  exports_zod,
607
611
  init_zod
@@ -650,7 +654,7 @@ import {
650
654
  import {
651
655
  init_package,
652
656
  package_default
653
- } from "./cli-4r1sjfc4.js";
657
+ } from "./cli-ng1pmdx6.js";
654
658
  import {
655
659
  init_event_bus,
656
660
  workflowEventBus
@@ -14390,7 +14394,7 @@ async function notifyAutomationPreflightFailure(preflight) {
14390
14394
  return;
14391
14395
  }
14392
14396
  try {
14393
- const { getSlackApp: getSlackApp2 } = await import("./app-43vrdmv8.js");
14397
+ const { getSlackApp: getSlackApp2 } = await import("./app-ffes2kyf.js");
14394
14398
  const app = getSlackApp2();
14395
14399
  if (!app) {
14396
14400
  console.warn("[Automation Preflight] Slack not available, cannot send notification");
@@ -18072,6 +18076,7 @@ var import_cron_parser = __toESM(require_dist2(), 1);
18072
18076
  init_db2();
18073
18077
  init_db();
18074
18078
  init_telemetry();
18079
+ init_secret_scrubber();
18075
18080
 
18076
18081
  // src/scheduler/deferred-task-waits.ts
18077
18082
  init_db2();
@@ -18498,18 +18503,64 @@ async function executeScheduleScript(schedule) {
18498
18503
  throw new Error(`Script '${schedule.scriptName}' not found`);
18499
18504
  }
18500
18505
  const agentId = schedule.createdByAgentId ?? "schedule";
18501
- const output = await runScript({
18502
- source: script.source,
18503
- args: schedule.scriptArgs ?? {},
18504
- fsMode: "none",
18506
+ const args = schedule.scriptArgs ?? {};
18507
+ const record2 = {
18505
18508
  agentId,
18506
- egressSecrets: await buildScriptCredentialBindings({ agentId }),
18507
- apiConnections: getScriptApiConnectionDescriptors({ agentId }),
18508
- mcpConnections: getScriptMcpConnectionDescriptors({ agentId }),
18509
- timeoutMs: 60000
18510
- });
18509
+ scriptName: schedule.scriptName,
18510
+ source: `// Scheduled run of '${script.name}' v${script.version} (global, contentHash ${script.contentHash}) by schedule '${schedule.name}'.
18511
+ // Full source: script_versions row for this version.
18512
+ `,
18513
+ args,
18514
+ startedAt: new Date().toISOString()
18515
+ };
18516
+ let output;
18517
+ try {
18518
+ output = await runScript({
18519
+ source: script.source,
18520
+ args,
18521
+ fsMode: "none",
18522
+ agentId,
18523
+ egressSecrets: await buildScriptCredentialBindings({ agentId }),
18524
+ apiConnections: getScriptApiConnectionDescriptors({ agentId }),
18525
+ mcpConnections: getScriptMcpConnectionDescriptors({ agentId }),
18526
+ timeoutMs: 60000
18527
+ });
18528
+ } catch (err) {
18529
+ await recordScheduleScriptRun({
18530
+ ...record2,
18531
+ status: "failed",
18532
+ error: err instanceof Error ? err.message : String(err)
18533
+ });
18534
+ throw err;
18535
+ }
18511
18536
  if (output.exitCode !== 0 || output.error) {
18512
- throw new Error(output.stderr || `Script '${schedule.scriptName}' exited with code ${output.exitCode}${output.error ? ` (${output.error})` : ""}`);
18537
+ const message = output.stderr || `Script '${schedule.scriptName}' exited with code ${output.exitCode}${output.error ? ` (${output.error})` : ""}`;
18538
+ await recordScheduleScriptRun({
18539
+ ...record2,
18540
+ status: "failed",
18541
+ output: output.result,
18542
+ error: message
18543
+ });
18544
+ throw new Error(message);
18545
+ }
18546
+ await recordScheduleScriptRun({ ...record2, status: "completed", output: output.result });
18547
+ }
18548
+ async function recordScheduleScriptRun(run) {
18549
+ try {
18550
+ await recordInlineScriptRun({
18551
+ id: crypto.randomUUID(),
18552
+ agentId: run.agentId,
18553
+ scriptName: run.scriptName,
18554
+ source: run.source,
18555
+ args: scrubObject(run.args),
18556
+ status: run.status,
18557
+ output: scrubObject(run.output),
18558
+ error: run.error === undefined ? undefined : scrubSecrets(run.error),
18559
+ startedAt: run.startedAt,
18560
+ finishedAt: new Date().toISOString()
18561
+ });
18562
+ } catch (err) {
18563
+ console.warn(`[scheduler] could not record script run for '${run.scriptName}': ${scrubSecrets(err instanceof Error ? err.message : String(err))}`);
18513
18564
  }
18514
18565
  }
18515
18566
 
@@ -19971,17 +20022,34 @@ function normalizeObjectSchema(schema) {
19971
20022
  }
19972
20023
  return;
19973
20024
  }
20025
+ function getDotPath(path) {
20026
+ if (path.length === 0) {
20027
+ return "object root";
20028
+ }
20029
+ return path.reduce((acc, seg, index) => {
20030
+ if (index === 0) {
20031
+ return String(seg);
20032
+ }
20033
+ if (typeof seg === "number") {
20034
+ return `${acc}[${seg}]`;
20035
+ }
20036
+ return `${acc}.${seg}`;
20037
+ }, "");
20038
+ }
19974
20039
  function getParseErrorMessage(error) {
19975
20040
  if (error && typeof error === "object") {
20041
+ if ("issues" in error && Array.isArray(error.issues) && error.issues.length > 0) {
20042
+ return error.issues.map((i) => {
20043
+ if (!i.path?.length) {
20044
+ return i.message;
20045
+ }
20046
+ return `${i.message} at ${getDotPath(i.path)}`;
20047
+ }).join(`
20048
+ `);
20049
+ }
19976
20050
  if ("message" in error && typeof error.message === "string") {
19977
20051
  return error.message;
19978
20052
  }
19979
- if ("issues" in error && Array.isArray(error.issues) && error.issues.length > 0) {
19980
- const firstIssue = error.issues[0];
19981
- if (firstIssue && typeof firstIssue === "object" && "message" in firstIssue) {
19982
- return String(firstIssue.message);
19983
- }
19984
- }
19985
20053
  try {
19986
20054
  return JSON.stringify(error);
19987
20055
  } catch {
@@ -23206,16 +23274,7 @@ class Server extends Protocol {
23206
23274
  if (!methodSchema) {
23207
23275
  throw new Error("Schema is missing a method literal");
23208
23276
  }
23209
- let methodValue;
23210
- if (isZ4Schema(methodSchema)) {
23211
- const v4Schema = methodSchema;
23212
- const v4Def = v4Schema._zod?.def;
23213
- methodValue = v4Def?.value ?? v4Schema.value;
23214
- } else {
23215
- const v3Schema = methodSchema;
23216
- const legacyDef = v3Schema._def;
23217
- methodValue = legacyDef?.value ?? v3Schema.value;
23218
- }
23277
+ const methodValue = getLiteralValue(methodSchema);
23219
23278
  if (typeof methodValue !== "string") {
23220
23279
  throw new Error("Schema method literal must be a string");
23221
23280
  }
@@ -29170,7 +29229,7 @@ async function notifySlack(text) {
29170
29229
  return;
29171
29230
  }
29172
29231
  try {
29173
- const { getSlackApp: getSlackApp2 } = await import("./app-43vrdmv8.js");
29232
+ const { getSlackApp: getSlackApp2 } = await import("./app-ffes2kyf.js");
29174
29233
  const app = getSlackApp2();
29175
29234
  if (!app) {
29176
29235
  console.warn("[Jira webhook keepalive] Slack not available, cannot send notification");
@@ -29241,7 +29300,7 @@ async function deleteJiraWebhook(webhookId) {
29241
29300
  console.log(`[Jira webhook keepalive] Deleted webhook id=${webhookId}`);
29242
29301
  }
29243
29302
  async function overwriteWebhookIds(next) {
29244
- const { getDbClient: getDbClient2 } = await import("./db-sjks418k.js");
29303
+ const { getDbClient: getDbClient2 } = await import("./db-1t0bj3pc.js");
29245
29304
  await getDbClient2().transaction(async (tx) => {
29246
29305
  const row = await tx.get("SELECT metadata FROM oauth_apps WHERE provider = 'jira'");
29247
29306
  if (!row) {
@@ -103046,7 +103105,7 @@ async function reloadGlobalConfigsAndIntegrations() {
103046
103105
  return runWithoutRequestAuth(() => reloadGlobalConfigsAndIntegrationsInner());
103047
103106
  }
103048
103107
  async function reloadGlobalConfigsAndIntegrationsInner() {
103049
- const { getEmbeddingProvider: getEmbeddingProvider2, resetEmbeddingProvider } = await import("./index-9b65j1m5.js");
103108
+ const { getEmbeddingProvider: getEmbeddingProvider2, resetEmbeddingProvider } = await import("./index-gr69c43q.js");
103050
103109
  const wasEmbeddingsConfigured = getEmbeddingProvider2().isConfigured();
103051
103110
  const updated = await loadGlobalConfigsIntoEnv(true);
103052
103111
  await stopSlackApp();
@@ -103059,10 +103118,10 @@ async function reloadGlobalConfigsAndIntegrationsInner() {
103059
103118
  integrations.push("embeddings");
103060
103119
  }
103061
103120
  if (!wasEmbeddingsConfigured && isEmbeddingsConfigured) {
103062
- import("./boot-reembed-s7k7c6v2.js").then(({ runBootReembed }) => runBootReembed()).catch((err) => {
103121
+ import("./boot-reembed-jvfadhsk.js").then(({ runBootReembed }) => runBootReembed()).catch((err) => {
103063
103122
  console.error("[config-reload] memory backfill failed (non-fatal):", err);
103064
103123
  });
103065
- import("./boot-reembed-998jtpdg.js").then(({ runBootReembedScripts }) => runBootReembedScripts()).catch((err) => {
103124
+ import("./boot-reembed-20q3nzvg.js").then(({ runBootReembedScripts }) => runBootReembedScripts()).catch((err) => {
103066
103125
  console.error("[config-reload] script backfill failed (non-fatal):", err);
103067
103126
  });
103068
103127
  }
@@ -104180,7 +104239,7 @@ function setPreloadedTools(server, names) {
104180
104239
  async function applyPreToolCall(name, args, requestInfo, inputSchema) {
104181
104240
  if (requestInfo.callOrigin !== "mcp")
104182
104241
  return { args };
104183
- const dispatcher = await import("./dispatcher-1es759rn.js");
104242
+ const dispatcher = await import("./dispatcher-k1fhavcf.js");
104184
104243
  const result = await dispatcher.dispatchPre("pre.tool.call", { tool: name, args, requestInfo }, inputSchema ? {
104185
104244
  validateModify: async (data) => {
104186
104245
  const schema = normalizeObjectSchema(inputSchema) ?? inputSchema;
@@ -117024,7 +117083,7 @@ var QuestionSchema = object({
117024
117083
  type: _enum(["approval", "text", "single-select", "multi-select", "boolean"]).describe("Question type"),
117025
117084
  label: string().describe("The question text displayed to the user"),
117026
117085
  required: boolean().optional().describe("Whether this question is required (default: true)"),
117027
- description: string().optional().describe("Optional help text"),
117086
+ description: string().optional().describe("Optional help text, rendered as markdown (code fences, images)"),
117028
117087
  placeholder: string().optional().describe("Placeholder text (for text type)"),
117029
117088
  multiline: boolean().optional().describe("Use textarea instead of input (for text type)"),
117030
117089
  options: array(object({
@@ -117040,7 +117099,7 @@ var registerRequestHumanInputTool = (server) => {
117040
117099
  createToolRegistrar(server)("request-human-input", {
117041
117100
  title: "Request human input",
117042
117101
  annotations: { destructiveHint: false },
117043
- description: "Create an approval request and return at once with the request id and URL. The answer arrives later as a hitl-follow-up task. " + "Supports multiple question types: approval (yes/no), text, single-select, " + "multi-select, and boolean. Returns the request ID and URL for the human to respond.",
117102
+ description: "Create an approval request and return at once with the request id and URL. The answer arrives later as a hitl-follow-up task. " + "Supports multiple question types: approval (yes/no), text, single-select, " + "multi-select, and boolean. Returns the request ID and URL for the human to respond. " + "The dashboard renders each label and description as markdown: put long content in description, fence code with a language, and put an image URL alone on its own line to show it. " + "No Slack message is sent; share the URL yourself.",
117044
117103
  inputSchema: object({
117045
117104
  title: string().min(1).describe("Title of the approval request"),
117046
117105
  questions: array(QuestionSchema).min(1).describe("Questions to ask the human"),
@@ -125151,8 +125210,16 @@ init_zod();
125151
125210
  init_db2();
125152
125211
  init_rbac();
125153
125212
  var scriptConnectionsInputSchema = object({
125154
- action: _enum(["list", "upsert-openapi", "upsert-mcp", "upsert-graphql", "refresh", "disable"]).describe("List, create/update, refresh, or disable a script connection."),
125155
- id: string().uuid().optional().describe("Existing connection ID for update, refresh, or disable."),
125213
+ action: _enum([
125214
+ "list",
125215
+ "upsert-openapi",
125216
+ "upsert-mcp",
125217
+ "upsert-graphql",
125218
+ "refresh",
125219
+ "disable",
125220
+ "delete"
125221
+ ]).describe("List, create/update, refresh, disable, or delete a script connection. delete is permanent: it removes the connection, its managed credential binding, and any inline secret it owns."),
125222
+ id: string().uuid().optional().describe("Existing connection ID for update, refresh, disable, or delete."),
125156
125223
  slug: string().min(1).max(80).optional().describe("Stable script namespace slug exposed under ctx.api or ctx.mcp."),
125157
125224
  displayName: string().max(160).optional().describe("Human-readable connection name."),
125158
125225
  scope: _enum(["global", "agent", "repo"]).optional().describe("Connection visibility scope."),
@@ -125241,6 +125308,26 @@ var registerScriptConnectionsTool = (server) => {
125241
125308
  data: { yourAgentId: requestInfo.agentId, connections: connections2 }
125242
125309
  });
125243
125310
  }
125311
+ if (args2.action === "delete") {
125312
+ if (!args2.id) {
125313
+ return toolErr("id is required for delete.", {
125314
+ data: {
125315
+ yourAgentId: requestInfo.agentId,
125316
+ connections: listScriptConnections({ includeDisabled: true, allScopes: true })
125317
+ }
125318
+ });
125319
+ }
125320
+ const deleted = await deleteScriptConnection(args2.id);
125321
+ const connections2 = listScriptConnections({ includeDisabled: true, allScopes: true });
125322
+ if (!deleted) {
125323
+ return toolErr(`Script connection ${args2.id} not found.`, {
125324
+ data: { yourAgentId: requestInfo.agentId, connections: connections2 }
125325
+ });
125326
+ }
125327
+ return toolOk(`Script connection ${deleted.slug} deleted.`, {
125328
+ data: { yourAgentId: requestInfo.agentId, connections: connections2 }
125329
+ });
125330
+ }
125244
125331
  if (args2.action === "refresh") {
125245
125332
  if (!args2.id) {
125246
125333
  return toolErr("id is required for refresh.", {
@@ -125936,7 +126023,7 @@ async function sendTaskHandler(ctx, {
125936
126023
  data: { yourAgentId: creatorAgentId }
125937
126024
  });
125938
126025
  }
125939
- if (ctx.kind === "owner" && requestedAgentId === ctx.agentId) {
126026
+ if (ctx.kind === "owner" && requestedAgentId === ctx.agentId && ctx.requestInfo?.callOrigin !== "script-sdk") {
125940
126027
  return toolErr("Cannot send a task to yourself, are you drunk?", {
125941
126028
  data: { yourAgentId: ctx.agentId }
125942
126029
  });
@@ -131695,6 +131782,9 @@ var registerUpdateWorkflowTool = (server) => {
131695
131782
  }
131696
131783
  });
131697
131784
  };
131785
+ // src/server.ts
131786
+ init_enabled_tools();
131787
+
131698
131788
  // src/utils/scripts-only-mode.ts
131699
131789
  init_env_flag();
131700
131790
  function resolveScriptsOnlyMode(opts) {
@@ -131759,9 +131849,43 @@ function getEnabledCapabilities() {
131759
131849
  function isScriptsOnlyMcp() {
131760
131850
  return resolveScriptsOnlyMode({ env: process.env.SCRIPTS_ONLY_MCP });
131761
131851
  }
131852
+ var loggedToolAllowlistWarnings = new Set;
131853
+ function warnToolAllowlistOnce(message) {
131854
+ if (loggedToolAllowlistWarnings.has(message))
131855
+ return;
131856
+ loggedToolAllowlistWarnings.add(message);
131857
+ console.warn(message);
131858
+ }
131859
+ function resolveToolAllowlist(value) {
131860
+ if (value === undefined)
131861
+ return;
131862
+ try {
131863
+ const tools = parseEnabledTools(value);
131864
+ if (!tools) {
131865
+ warnToolAllowlistOnce("[MCP] SWARM_ENABLED_TOOLS is set but lists no tools; ignoring it");
131866
+ }
131867
+ return tools;
131868
+ } catch {
131869
+ warnToolAllowlistOnce("[MCP] Invalid SWARM_ENABLED_TOOLS; ignoring it");
131870
+ return;
131871
+ }
131872
+ }
131873
+ function applyToolAllowlist(server, allowlist) {
131874
+ const tools = server._registeredTools;
131875
+ const allowed = new Set(allowlist);
131876
+ for (const [name, tool] of Object.entries(tools)) {
131877
+ if (!allowed.has(name))
131878
+ tool.remove();
131879
+ }
131880
+ const unknown3 = allowlist.filter((name) => !Object.hasOwn(tools, name));
131881
+ if (unknown3.length > 0) {
131882
+ warnToolAllowlistOnce(`[MCP] SWARM_ENABLED_TOOLS names unknown tools, ignoring them: ${unknown3.join(", ")}`);
131883
+ }
131884
+ }
131762
131885
  async function createServer(opts = {}) {
131763
131886
  await loadGlobalConfigsIntoEnv(true);
131764
- const hasCapability2 = (cap) => opts.fullSurface === true || getCapabilities().has(cap);
131887
+ const toolAllowlist = opts.fullSurface === true ? undefined : resolveToolAllowlist(opts.enabledTools ?? process.env.SWARM_ENABLED_TOOLS);
131888
+ const hasCapability2 = (cap) => opts.fullSurface === true || toolAllowlist !== undefined || getCapabilities().has(cap);
131765
131889
  initDb(process.env.DATABASE_PATH);
131766
131890
  ensurePricingSeeded();
131767
131891
  startPricingRefreshLoop();
@@ -131785,7 +131909,7 @@ async function createServer(opts = {}) {
131785
131909
  });
131786
131910
  if (opts.preloadedTools?.length)
131787
131911
  setPreloadedTools(server, opts.preloadedTools);
131788
- if (opts.scriptsOnly ?? isScriptsOnlyMcp()) {
131912
+ if (toolAllowlist === undefined && (opts.scriptsOnly ?? isScriptsOnlyMcp())) {
131789
131913
  registerScriptSearchTool(server);
131790
131914
  registerScriptRunTool(server);
131791
131915
  registerScriptUpsertTool(server);
@@ -131996,6 +132120,8 @@ async function createServer(opts = {}) {
131996
132120
  registerListServicesTool(server);
131997
132121
  registerUpdateServiceStatusTool(server);
131998
132122
  }
132123
+ if (toolAllowlist)
132124
+ applyToolAllowlist(server, toolAllowlist);
131999
132125
  return server;
132000
132126
  }
132001
132127
 
@@ -134561,7 +134687,7 @@ class NotifyExecutor extends BaseExecutor {
134561
134687
  }
134562
134688
  }
134563
134689
  case "slack": {
134564
- const { getSlackApp: getSlackApp2 } = await import("./app-43vrdmv8.js");
134690
+ const { getSlackApp: getSlackApp2 } = await import("./app-ffes2kyf.js");
134565
134691
  const app = getSlackApp2();
134566
134692
  if (!app) {
134567
134693
  return {
@@ -134691,7 +134817,8 @@ async function executeRawLlm(config) {
134691
134817
  modelName = llmConfig.model;
134692
134818
  const provider = createOpenAI({
134693
134819
  baseURL: llmConfig.baseURL,
134694
- apiKey: llmConfig.apiKey
134820
+ apiKey: llmConfig.apiKey,
134821
+ headers: llmConfig.headers
134695
134822
  });
134696
134823
  const model = provider(llmConfig.model);
134697
134824
  if (config.schema) {
@@ -135152,7 +135279,8 @@ class ValidateExecutor extends BaseExecutor {
135152
135279
  const llmConfig = await resolveWorkflowLlmConfig();
135153
135280
  const provider = createOpenAI({
135154
135281
  baseURL: llmConfig.baseURL,
135155
- apiKey: llmConfig.apiKey
135282
+ apiKey: llmConfig.apiKey,
135283
+ headers: llmConfig.headers
135156
135284
  });
135157
135285
  const { object: object4 } = await generateObject({
135158
135286
  model: provider(llmConfig.model),
@@ -5,10 +5,10 @@ import {
5
5
  CONTEXT_FORMULA,
6
6
  clampContextPercent,
7
7
  computeContextUsedUnified
8
- } from "./cli-32bca7nr.js";
8
+ } from "./cli-7avy4v8w.js";
9
9
  import {
10
10
  applyReasoningEffort
11
- } from "./cli-ttbsse3f.js";
11
+ } from "./cli-tmhsxhb8.js";
12
12
  import {
13
13
  ampBillsCacheWrites,
14
14
  resolveAmpModel
@@ -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.1791403257-g05ffa9";
39
+ var AMP_PACKAGE = "@ampcode/cli@0.0.1791547250-gb79b2a";
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;