@desplega.ai/agent-swarm 1.166.0 → 1.167.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 (194) hide show
  1. package/dist/acp-adapter-zpvy6321.js +34 -0
  2. package/dist/{actions-qz3m692w.js → actions-fq2zrwtf.js} +25 -25
  3. package/dist/{amp-adapter-j1xbmsqz.js → amp-adapter-5gbk7501.js} +4 -4
  4. package/dist/{anthropic-messages-hst62ws9.js → anthropic-messages-13yn502s.js} +4 -4
  5. package/dist/{app-43vrdmv8.js → app-nctetn1e.js} +10 -9
  6. package/dist/{assistant-ertffmka.js → assistant-0aq8gjvj.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-1ze5853n.js} +9 -8
  9. package/dist/{boot-reembed-s7k7c6v2.js → boot-reembed-fmp5ww69.js} +9 -8
  10. package/dist/{boot-scrub-sweep-nepsk4t1.js → boot-scrub-sweep-cbp8xd4e.js} +10 -9
  11. package/dist/{boot-seeds-vvzs1zhk.js → boot-seeds-22tx8a53.js} +12 -11
  12. package/dist/{claude-adapter-2zvmekrp.js → claude-adapter-0jhgeh1d.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-wh77rh83.js} +22 -22
  16. package/dist/{cli-zsh093hk.js → cli-014vns2y.js} +63 -1
  17. package/dist/{cli-qvfk83fy.js → cli-13xwcqvj.js} +2 -2
  18. package/dist/{cli-dw2q9f7g.js → cli-1yrcfa5s.js} +4 -4
  19. package/dist/{cli-jvj6a0cv.js → cli-577bxkf6.js} +27 -17
  20. package/dist/{cli-zy7vwsne.js → cli-5qkcdv8c.js} +16 -9
  21. package/dist/{cli-cwxhbf43.js → cli-5t5my0h8.js} +85 -2
  22. package/dist/{cli-y59h2pk9.js → cli-69egj654.js} +1 -1
  23. package/dist/{cli-68r1j4sg.js → cli-6bpvv8h4.js} +3 -3
  24. package/dist/{cli-cpfmqz3n.js → cli-6qxmjpem.js} +5 -5
  25. package/dist/{cli-aqcey741.js → cli-6vfz44sr.js} +1 -1
  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-a35hzdve.js +33 -0
  30. package/dist/{cli-x3x0qwky.js → cli-bxqez1p0.js} +51 -23
  31. package/dist/{cli-gt8azyet.js → cli-c2tpw9ck.js} +1 -1
  32. package/dist/{cli-ecknp7p1.js → cli-c8r99akr.js} +10 -10
  33. package/dist/{cli-3qn4r334.js → cli-cexctgn5.js} +20 -14
  34. package/dist/{cli-vzc73wet.js → cli-cf2vgn9d.js} +87 -69
  35. package/dist/{cli-ng97fjq7.js → cli-cmxkbzzs.js} +33 -7
  36. package/dist/{cli-nexwh8zg.js → cli-g7k7zbcz.js} +12 -5
  37. package/dist/{cli-nvvfd8bq.js → cli-jbzbr36n.js} +4091 -3793
  38. package/dist/{cli-3ddybbbx.js → cli-jvmtxqtc.js} +26 -14
  39. package/dist/{cli-pkke6geq.js → cli-km4x66j0.js} +83 -65
  40. package/dist/{cli-j2jbr8af.js → cli-kw0jcfje.js} +1 -1
  41. package/dist/{cli-8t229cmr.js → cli-m7vmeepg.js} +30 -17
  42. package/dist/{cli-yshaazs1.js → cli-mkdsy1nq.js} +62 -20
  43. package/dist/{cli-b0f70z24.js → cli-mn8qkd8v.js} +1 -1
  44. package/dist/{cli-0qjcsxgz.js → cli-mxry91sa.js} +30 -9
  45. package/dist/cli-nkqjj42q.js +104 -0
  46. package/dist/{cli-rggdq8wq.js → cli-p8rt8spp.js} +3 -3
  47. package/dist/{cli-v2a8x45d.js → cli-pkj1w46r.js} +10 -5
  48. package/dist/cli-q1vnz8wv.js +96 -0
  49. package/dist/{cli-fj86xr3c.js → cli-qd97v6z2.js} +2 -2
  50. package/dist/{cli-66zh26sp.js → cli-qzmzwegq.js} +57 -17
  51. package/dist/{cli-p4ztb80h.js → cli-r7eeddkq.js} +13 -8
  52. package/dist/{cli-8ssjez7e.js → cli-rhy7z1rp.js} +22 -11
  53. package/dist/{cli-4mevd1hf.js → cli-s9y81s7j.js} +5 -5
  54. package/dist/{cli-h3x613ze.js → cli-tc5zec7v.js} +6 -6
  55. package/dist/{cli-ttbsse3f.js → cli-tmhsxhb8.js} +1 -1
  56. package/dist/{cli-0nhdwxd5.js → cli-tx2zvn23.js} +3 -3
  57. package/dist/{cli-mwegs4af.js → cli-ty4bzkqr.js} +3 -3
  58. package/dist/{cli-ysnyhws9.js → cli-v1pwxreq.js} +54 -51
  59. package/dist/{cli-feh3dkah.js → cli-v1w7pbd8.js} +2 -1
  60. package/dist/{cli-10zmp1p7.js → cli-vr5avem2.js} +27 -32
  61. package/dist/{cli-bzr0ftht.js → cli-wnb9b2g3.js} +19 -0
  62. package/dist/{cli-df56tqdw.js → cli-wydz3feg.js} +108 -57
  63. package/dist/{cli-krqm5f11.js → cli-xezn9nkh.js} +16 -13
  64. package/dist/{cli-8kt0bmgx.js → cli-xf713zz0.js} +2 -2
  65. package/dist/{cli-x7kpr72a.js → cli-y0kjpfm9.js} +2 -2
  66. package/dist/{cli-6zcfw0x7.js → cli-y195hv1a.js} +1 -1
  67. package/dist/{cli-fn697bnt.js → cli-ykt8f7va.js} +21 -8
  68. package/dist/{cli-4r1sjfc4.js → cli-ymmc1zxg.js} +8 -8
  69. package/dist/{cli-8kgvmkak.js → cli-ypgba1a8.js} +1 -1
  70. package/dist/{cli-rsy933yz.js → cli-z1dqhc9y.js} +30 -19
  71. package/dist/{cli-qbksc292.js → cli-zy39d433.js} +2 -0
  72. package/dist/cli.js +26 -26
  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-cgesnjkr.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-8kd7ddhr.js} +18 -18
  77. package/dist/{commands-mhxam6z2.js → commands-h6zaaxym.js} +9 -8
  78. package/dist/{cursor-adapter-2qda3st7.js → cursor-adapter-v8mm6bp5.js} +5 -5
  79. package/dist/{db-sjks418k.js → db-qg3myn53.js} +9 -8
  80. package/dist/{dispatcher-1es759rn.js → dispatcher-7vnwj9qw.js} +24 -24
  81. package/dist/{dsh-adapter-bek4cyw9.js → dsh-adapter-tz6hfp5r.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-jdt2dz2s.js} +18 -8
  87. package/dist/{handlers-1gkbhktr.js → handlers-2qtkpncr.js} +27 -27
  88. package/dist/{hook-ds2zxq9v.js → hook-51yfcgsv.js} +42 -31
  89. package/dist/{hook-vxa3tcsy.js → hook-qnbdgwvd.js} +14 -14
  90. package/dist/{http-3h21z9md.js → http-jsmtag08.js} +320 -98
  91. package/dist/{index-9b65j1m5.js → index-2t9kesn1.js} +9 -8
  92. package/dist/{index-dkfxpkmm.js → index-bt8wkv1w.js} +25 -25
  93. package/dist/{index-f8xnqrye.js → index-cx1sb9bq.js} +33 -24
  94. package/dist/{index-bn6cy8ps.js → index-ekywyv2v.js} +24 -24
  95. package/dist/{index-n99fycq7.js → index-t4g06w93.js} +24 -24
  96. package/dist/{keepalive-3xspa9jw.js → keepalive-4aezx4bj.js} +11 -10
  97. package/dist/{lead-6qphc124.js → lead-r44bkpm5.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-grz5jrzh.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-wm4ctjfj.js} +10 -9
  103. package/dist/{onboard-54qmnqxe.js → onboard-v60zgqf0.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-ghh4dyf8.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-mjrqvnvw.js} +11 -10
  114. package/dist/{rbac-roles-j78wdksm.js → rbac-roles-axv4d74x.js} +10 -9
  115. package/dist/{rbac-roles-9pjphh9q.js → rbac-roles-fd5tskj9.js} +9 -8
  116. package/dist/{render-v2-pxjs49fx.js → render-v2-k50j33qd.js} +10 -9
  117. package/dist/{runtime-v2t1r79e.js → runtime-h9ha1mq6.js} +4 -4
  118. package/dist/{setup-ymej0xtx.js → setup-4syh0pd2.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-jcdbg8rr.js} +27 -27
  122. package/dist/{worker-qa9fkz5s.js → worker-x8j8c9sx.js} +47 -47
  123. package/openapi.json +1 -1
  124. package/package.json +8 -8
  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/seed-pricing.ts +84 -53
  129. package/src/be/swarm-config-guard.ts +13 -0
  130. package/src/commands/provider-credentials.ts +28 -5
  131. package/src/commands/runner.ts +7 -12
  132. package/src/heartbeat/heartbeat.ts +91 -19
  133. package/src/hooks/hook.ts +72 -27
  134. package/src/http/mcp.ts +5 -0
  135. package/src/http/onboarding.ts +2 -0
  136. package/src/providers/acp-targets.ts +9 -4
  137. package/src/providers/amp-adapter.ts +1 -1
  138. package/src/providers/claude-adapter.ts +26 -0
  139. package/src/providers/codex-adapter.ts +30 -3
  140. package/src/providers/codex-oauth/auth-json.ts +21 -4
  141. package/src/providers/codex-oauth/types.ts +2 -0
  142. package/src/providers/dsh-adapter.ts +10 -1
  143. package/src/providers/grok-adapter.ts +18 -2
  144. package/src/providers/opencode-adapter.ts +21 -5
  145. package/src/providers/pi-mono-extension.ts +56 -25
  146. package/src/providers/pricing-sources.md +2 -0
  147. package/src/server.ts +63 -3
  148. package/src/tests/acp-adapter.test.ts +152 -12
  149. package/src/tests/ci-unit-test-report.test.ts +73 -0
  150. package/src/tests/claude-default-route.test.ts +75 -0
  151. package/src/tests/claude-hook-output.test.ts +233 -0
  152. package/src/tests/codex-adapter-pool-auth-revalidate.test.ts +4 -2
  153. package/src/tests/codex-adapter.test.ts +166 -26
  154. package/src/tests/codex-oauth-auth-timestamps.test.ts +76 -0
  155. package/src/tests/codex-oauth.test.ts +4 -1
  156. package/src/tests/context-window.test.ts +2 -2
  157. package/src/tests/credential-check.test.ts +51 -1
  158. package/src/tests/dsh-adapter.test.ts +23 -1
  159. package/src/tests/enabled-tools.test.ts +269 -0
  160. package/src/tests/entrypoint-codex-oauth-seed.test.ts +12 -0
  161. package/src/tests/grok-adapter.test.ts +13 -0
  162. package/src/tests/haiku-5-5-pricing.test.ts +38 -0
  163. package/src/tests/heartbeat-checklist.test.ts +158 -1
  164. package/src/tests/onboarding.test.ts +44 -0
  165. package/src/tests/opencode-adapter.test.ts +66 -3
  166. package/src/tests/opencode-plugin.test.ts +37 -0
  167. package/src/tests/openrouter-attribution-call-sites.test.ts +204 -0
  168. package/src/tests/openrouter-base-url.test.ts +30 -39
  169. package/src/tests/pi-mono-extension.test.ts +161 -2
  170. package/src/tests/pricing-refresh.test.ts +70 -1
  171. package/src/tests/reasoning-effort.test.ts +3 -1
  172. package/src/tests/telemetry-trigger.test.ts +12 -1
  173. package/src/tests/workflow-llm.test.ts +14 -0
  174. package/src/tests/workflow-system-one-decision-providers.test.ts +33 -0
  175. package/src/tools/request-human-input.ts +7 -2
  176. package/src/utils/enabled-tools.ts +27 -0
  177. package/src/utils/internal-ai/complete-structured.ts +11 -3
  178. package/src/utils/openrouter-base-url.ts +23 -0
  179. package/src/workflows/executors/raw-llm.ts +1 -0
  180. package/src/workflows/executors/system-one-decision.ts +2 -0
  181. package/src/workflows/executors/validate.ts +1 -0
  182. package/src/workflows/executors/workflow-llm.ts +9 -2
  183. package/templates/skills/agent-browser/SKILL.md +2 -0
  184. package/templates/skills/agent-browser/content.md +2 -0
  185. package/templates/skills/code-quality/content.md +1 -0
  186. package/templates/skills/heartbeat-runbook/content.md +1 -1
  187. package/templates/skills/work-on-task/SKILL.md +4 -0
  188. package/templates/skills/work-on-task/content.md +4 -0
  189. package/templates/skills/workflow-iterate/content.md +9 -0
  190. package/dist/acp-adapter-yzfxn8vj.js +0 -23
  191. package/dist/cli-3dpj7atn.js +0 -11
  192. package/dist/cli-gvcgmx69.js +0 -183
  193. package/dist/{cli-jhm6hzjn.js → cli-mxvnnv5q.js} +7 -7
  194. package/dist/{codex-hook-d2rkvf39.js → codex-hook-15dgc4cb.js} +1 -1
@@ -9,7 +9,7 @@ import {
9
9
  markAuthorizationRefreshFailed,
10
10
  releaseOAuthRefreshLock,
11
11
  updateAuthorizationTokens
12
- } from "./cli-yshaazs1.js";
12
+ } from "./cli-mkdsy1nq.js";
13
13
  import {
14
14
  init_secret_scrubber,
15
15
  registerVolatileSecret,
@@ -4,9 +4,15 @@ import {
4
4
  import {
5
5
  readPkgVersion
6
6
  } from "./cli-gt4hxb8p.js";
7
+ import {
8
+ hasCodexOAuthPoolSlots
9
+ } from "./cli-bqjfjex4.js";
7
10
  import {
8
11
  buildOtelTraceparentEnv
9
12
  } from "./cli-q2j38vre.js";
13
+ import {
14
+ summarizeSession
15
+ } from "./cli-r7eeddkq.js";
10
16
  import {
11
17
  CTX_MODE_NUDGE_EVERY
12
18
  } from "./cli-zm7njwzd.js";
@@ -17,19 +23,13 @@ import {
17
23
  CONTEXT_FORMULA,
18
24
  clampContextPercent,
19
25
  computeContextUsedUnified
20
- } from "./cli-32bca7nr.js";
21
- import {
22
- summarizeSession
23
- } from "./cli-p4ztb80h.js";
24
- import {
25
- hasCodexOAuthPoolSlots
26
- } from "./cli-bqjfjex4.js";
26
+ } from "./cli-7avy4v8w.js";
27
27
  import {
28
28
  SessionErrorTracker
29
29
  } from "./cli-2pdaysab.js";
30
30
  import {
31
31
  applyReasoningEffort
32
- } from "./cli-ttbsse3f.js";
32
+ } from "./cli-tmhsxhb8.js";
33
33
  import {
34
34
  buildRatingsFromLlm,
35
35
  fetchRetrievalsForTask,
@@ -42,16 +42,16 @@ import {
42
42
  import {
43
43
  getApiKey
44
44
  } from "./cli-f14fvzag.js";
45
+ import {
46
+ CodexOAuthRefreshError,
47
+ credentialsToAuthJson,
48
+ getValidCodexOAuth
49
+ } from "./cli-v1w7pbd8.js";
45
50
  import {
46
51
  detachedProcessGroup,
47
52
  registerProcessGroup,
48
53
  terminateProcessGroup
49
54
  } from "./cli-zt3w1cn1.js";
50
- import {
51
- CodexOAuthRefreshError,
52
- credentialsToAuthJson,
53
- getValidCodexOAuth
54
- } from "./cli-feh3dkah.js";
55
55
  import {
56
56
  DEFAULT_MODEL_TIER_MAP,
57
57
  init_types
@@ -60,11 +60,11 @@ import {
60
60
  init_runtime_model_catalog,
61
61
  init_src,
62
62
  runtimeCatalogModel
63
- } from "./cli-zsh093hk.js";
63
+ } from "./cli-014vns2y.js";
64
64
  import {
65
65
  init_package,
66
66
  package_default
67
- } from "./cli-4r1sjfc4.js";
67
+ } from "./cli-ymmc1zxg.js";
68
68
  import {
69
69
  init_secret_scrubber,
70
70
  scrubSecrets
@@ -1042,6 +1042,14 @@ class AppServerCodexThread {
1042
1042
  case "thread/tokenUsage/updated": {
1043
1043
  const tokenUsage = params.tokenUsage;
1044
1044
  this.latestTotalUsage = normalizeUsage(tokenUsage?.total);
1045
+ const last = normalizeUsage(tokenUsage?.last);
1046
+ if (last) {
1047
+ push({
1048
+ type: "context.updated",
1049
+ usage: last,
1050
+ contextWindow: typeof tokenUsage?.modelContextWindow === "number" && tokenUsage.modelContextWindow > 0 ? tokenUsage.modelContextWindow : undefined
1051
+ });
1052
+ }
1045
1053
  break;
1046
1054
  }
1047
1055
  case "error": {
@@ -1435,6 +1443,9 @@ class CodexSession {
1435
1443
  case "turn.interrupted":
1436
1444
  this.accountUsage(event.usage);
1437
1445
  break;
1446
+ case "context.updated":
1447
+ this.emitContextUsage(event.usage, event.contextWindow ?? this.contextWindow);
1448
+ break;
1438
1449
  case "error": {
1439
1450
  const { message } = this.formatTerminalError(event.message, event.codexErrorInfo);
1440
1451
  if (event.willRetry === true) {
@@ -1457,6 +1468,8 @@ class CodexSession {
1457
1468
  output_tokens: this.accumulatedUsage.output_tokens + usage.output_tokens,
1458
1469
  reasoning_output_tokens: this.accumulatedUsage.reasoning_output_tokens + usage.reasoning_output_tokens
1459
1470
  } : usage;
1471
+ }
1472
+ emitContextUsage(usage, contextWindow) {
1460
1473
  const contextUsed = computeContextUsedUnified({
1461
1474
  inputTokens: usage.input_tokens,
1462
1475
  cacheReadTokens: 0,
@@ -1466,8 +1479,8 @@ class CodexSession {
1466
1479
  this.emit({
1467
1480
  type: "context_usage",
1468
1481
  contextUsedTokens: contextUsed,
1469
- contextTotalTokens: this.contextWindow,
1470
- contextPercent: clampContextPercent(contextUsed, this.contextWindow) ?? 0,
1482
+ contextTotalTokens: contextWindow,
1483
+ contextPercent: clampContextPercent(contextUsed, contextWindow) ?? 0,
1471
1484
  outputTokens: usage.output_tokens,
1472
1485
  contextFormula: CONTEXT_FORMULA
1473
1486
  });
@@ -1,3 +1,7 @@
1
+ import {
2
+ ALL_TOOLS,
3
+ init_tool_config
4
+ } from "./cli-3qhyh31j.js";
1
5
  import {
2
6
  AgentAvatarSchema,
3
7
  CreateTaskOptionsSchema,
@@ -19,10 +23,6 @@ import {
19
23
  parseAssetKey,
20
24
  parseModelTier
21
25
  } from "./cli-xvdgasgy.js";
22
- import {
23
- ALL_TOOLS,
24
- init_tool_config
25
- } from "./cli-3qhyh31j.js";
26
26
  import {
27
27
  IdentityFieldBudgetError,
28
28
  checkIdentityFieldBudget,
@@ -36,7 +36,7 @@ import {
36
36
  init_profile_sync,
37
37
  matchesDefaultClaudeMd,
38
38
  matchesDefaultIdentityMd
39
- } from "./cli-jhm6hzjn.js";
39
+ } from "./cli-mxvnnv5q.js";
40
40
  import {
41
41
  init_steering_enabled,
42
42
  isSteeringEnabled
@@ -48,14 +48,6 @@ import {
48
48
  init_config,
49
49
  isSlackConfigured
50
50
  } from "./cli-dmtrxqhg.js";
51
- import {
52
- deriveProviderFromKeyType,
53
- init_credentials
54
- } from "./cli-tadfgd0t.js";
55
- import {
56
- activeModelBlock,
57
- init_model_rate_limit_windows
58
- } from "./cli-ywybs5as.js";
59
51
  import {
60
52
  init_templates
61
53
  } from "./cli-agamgm0p.js";
@@ -72,6 +64,18 @@ import {
72
64
  init_subscription_plans,
73
65
  planAllowsModelFamily
74
66
  } from "./cli-1a2j50m0.js";
67
+ import {
68
+ deriveProviderFromKeyType,
69
+ init_credentials
70
+ } from "./cli-tadfgd0t.js";
71
+ import {
72
+ activeModelBlock,
73
+ init_model_rate_limit_windows
74
+ } from "./cli-ywybs5as.js";
75
+ import {
76
+ getOpenRouterAttributionHeaders,
77
+ init_openrouter_base_url
78
+ } from "./cli-a35hzdve.js";
75
79
  import {
76
80
  init_env_flag,
77
81
  isEnvFlagEnabled
@@ -83,7 +87,7 @@ import {
83
87
  isAlias,
84
88
  parseAlias,
85
89
  runtimeHarnessSections
86
- } from "./cli-zsh093hk.js";
90
+ } from "./cli-014vns2y.js";
87
91
  import {
88
92
  init_zod
89
93
  } from "./cli-sd0mxa3c.js";
@@ -99,7 +103,7 @@ import {
99
103
  import {
100
104
  init_package,
101
105
  package_default
102
- } from "./cli-4r1sjfc4.js";
106
+ } from "./cli-ymmc1zxg.js";
103
107
  import {
104
108
  init_bus,
105
109
  realtimeBus
@@ -8186,11 +8190,14 @@ class OpenAIEmbeddingProvider {
8186
8190
  getClient() {
8187
8191
  if (!this.apiKey)
8188
8192
  return null;
8189
- if (!this.client)
8193
+ if (!this.client) {
8194
+ const baseURL = process.env.EMBEDDING_API_BASE_URL;
8190
8195
  this.client = new OpenAI({
8191
- baseURL: process.env.EMBEDDING_API_BASE_URL,
8192
- apiKey: this.apiKey
8196
+ baseURL,
8197
+ apiKey: this.apiKey,
8198
+ defaultHeaders: getOpenRouterAttributionHeaders(baseURL ?? "")
8193
8199
  });
8200
+ }
8194
8201
  return this.client;
8195
8202
  }
8196
8203
  async embed(text) {
@@ -8262,6 +8269,7 @@ class OpenAIEmbeddingProvider {
8262
8269
  }
8263
8270
  var init_openai_embedding = __esm(() => {
8264
8271
  init_openai();
8272
+ init_openrouter_base_url();
8265
8273
  init_constants();
8266
8274
  });
8267
8275
 
@@ -12110,7 +12118,7 @@ var init_runtime = __esm(() => {
12110
12118
  // src/telemetry-identity.ts
12111
12119
  async function loadUserRole(userId) {
12112
12120
  try {
12113
- const { getUserGrant } = await import("./rbac-roles-j78wdksm.js");
12121
+ const { getUserGrant } = await import("./rbac-roles-axv4d74x.js");
12114
12122
  const grant = await getUserGrant(userId);
12115
12123
  const role = grant.grantsAll ? "admin" : "member";
12116
12124
  if (roleCache.size >= ROLE_CACHE_LIMIT) {
@@ -14536,6 +14544,28 @@ function isApiDrainingResponse(response) {
14536
14544
  var API_DRAINING_HEADER = "X-Swarm-Draining", API_DRAIN_MAX_MS_LIMIT = 120000;
14537
14545
  var init_api_drain = () => {};
14538
14546
 
14547
+ // src/utils/enabled-tools.ts
14548
+ function parseEnabledTools(value) {
14549
+ if (value === undefined)
14550
+ return;
14551
+ const trimmed = value.trim();
14552
+ if (!trimmed)
14553
+ return;
14554
+ let entries;
14555
+ if (trimmed.startsWith("[")) {
14556
+ const parsed = JSON.parse(trimmed);
14557
+ if (!Array.isArray(parsed) || !parsed.every((entry) => typeof entry === "string")) {
14558
+ throw new Error("Expected a JSON array of tool names");
14559
+ }
14560
+ entries = parsed;
14561
+ } else {
14562
+ entries = trimmed.split(",");
14563
+ }
14564
+ const tools = [...new Set(entries.map((entry) => entry.trim()).filter(Boolean))];
14565
+ return tools.length > 0 ? tools : undefined;
14566
+ }
14567
+ var init_enabled_tools = () => {};
14568
+
14539
14569
  // src/utils/task-tool-manifest.ts
14540
14570
  function parseTaskToolManifest(value) {
14541
14571
  return taskToolManifestSchema.parse(JSON.parse(value));
@@ -14700,6 +14730,7 @@ var init_swarm_config_guard = __esm(() => {
14700
14730
  init_reaction_shortcode();
14701
14731
  init_types();
14702
14732
  init_api_drain();
14733
+ init_enabled_tools();
14703
14734
  init_task_tool_manifest();
14704
14735
  init_model_tier_keys();
14705
14736
  RESERVED_KEYS = new Set([
@@ -14726,6 +14757,16 @@ var init_swarm_config_guard = __esm(() => {
14726
14757
  return "Invalid TASK_TOOL_MANIFESTS (expected JSON with taskTypes and/or schedules maps, each selecting at most 16 known swarm tools)";
14727
14758
  }
14728
14759
  },
14760
+ SWARM_ENABLED_TOOLS: (value) => {
14761
+ try {
14762
+ if (typeof value !== "string")
14763
+ throw new Error("Expected string");
14764
+ parseEnabledTools(value);
14765
+ return null;
14766
+ } catch {
14767
+ return "Invalid SWARM_ENABLED_TOOLS (expected comma-separated tool names or a JSON array of strings)";
14768
+ }
14769
+ },
14729
14770
  FEEDBACK_ENDPOINT: (value) => {
14730
14771
  if (typeof value !== "string") {
14731
14772
  return "Invalid FEEDBACK_ENDPOINT (must use HTTPS, or HTTP on a loopback host)";
@@ -14792,6 +14833,7 @@ var init_swarm_config_guard = __esm(() => {
14792
14833
  "PI_TOOL_DEFERRAL",
14793
14834
  "PI_CODEMODE",
14794
14835
  "PI_CODEMODE_MODELS",
14836
+ "OPENROUTER_APP_ATTRIBUTION",
14795
14837
  "CURSOR_NATIVE_SYSTEM_PROMPT",
14796
14838
  "SLACK_DISABLE",
14797
14839
  "SLACK_RENDER_V2",
@@ -25601,4 +25643,4 @@ function getMemoryStore() {
25601
25643
  var embeddingProvider2 = null, memoryStore = null;
25602
25644
  var init_memory = () => {};
25603
25645
 
25604
- export { slackContextKey, agentmailContextKey, githubContextKey, gitlabContextKey, azureDevOpsContextKey, linearContextKey, buildJiraContextKey, scheduleContextKey, workflowContextKey, agentContextKey, pageContextKey, init_context_key, checkSlackRoutingCoherence, init_slack_routing, mapTriggerSurface, init_telemetry_context, beginRequestAuthScope, setRequestAuth, getRequestAuth, getCurrentRequestAuth, runWithoutRequestAuth, getCurrentRequestUserId, init_request_auth_context, isTelemetryEnabled, _resolveIntegrationType, _resolveIntegrationProvider, initTelemetry, setTelemetryRoleResolver, isTelemetryReady, telemetry, emitIntegrationConnected, init_telemetry, auditAssetKeys, init_asset_key_audit, CredentialBindingSchema, placeholderForConfigKey, CredentialBroker, DEFAULT_CREDENTIAL_BINDINGS, init_credential_broker, encryptSecret, decryptSecret, getEncryptionKey, init_crypto, isInTransaction, init_db_client, breaksJsonValidity, scrubJsonValue, init_scrub_json, sealJson, init_sealed_json, getPromptTemplateDefaultDrift, init_default_drift, init_templates2 as init_templates, init_templates3 as init_templates1, isSqliteVecAvailable, resolveSqliteVecExtensionPath, __resetSqliteVecExtensionPathCacheForTests, initDb, getDb, closeDb, getDbClient, init_runtime, cachedUserRole, configureOrgDomainPersistence, recomputeOrgDomain, scheduleOrgDomainRecompute, init_telemetry_identity, resolveTriggerSurface, emitTaskTelemetry, init_telemetry_trigger, CODEX_AUTH_WATCH_NAMESPACE, codexAuthBenchMarkerKey, isCodexAuthFailureReason, init_codex_auth_failure, HeartbeatExpiryError, init_heartbeat_expiry, normalizeDate, normalizeDateRequired, init_date_utils, updateAgentCredentialState, updateAgentCredentialMissing, createAgent, getAgentById, EXTENSION_AGENT_ROLE, NOT_EXTENSION_AGENT_SQL, isExtensionAgent, extensionAgentAssignmentError, ReservedAgentRoleError, reservedRoleViolation, ExtensionAgentAssignmentError, getAllAgents, getAgentStatusCounts, getLeadAgent, updateAgentStatus, updateAgentMaxTasks, updateAgentProvider, setAgentHarnessProvider, updateAgentCredStatus, listAgentsWithCredStatusByProvider, getAgentHarnessProviders, updateAgentActivity, MAX_EMPTY_POLLS, incrementEmptyPollCount, resetEmptyPollCount, shouldBlockPolling, deleteAgent, getActiveTaskCount, hasCapacity, getRemainingCapacity, updateAgentStatusFromCapacity, isPoolAffinityEnforcementEnabled, buildRoutingAffinityFromAgent, isAgentEligibleForTask, getAgentDailyTaskCounts, listApprovalRequestSummaries, getPendingApprovalVoteState, recordApprovalVotes, computeContentHash, createContextVersion, getLatestContextVersion, getContextVersion, getContextVersionHistory, setHumanFreeQueueListener, drainHumanFreeReclassifyQueue, init_human_free, getTaskById, getChildTasks, hasNonTerminalResumeChild, getSupersededTasksWithoutResume, getSupersededTasksWithUnsettledDependents, hasNonTerminalRerouteDecisionChild, getTasksByAgentId, getAgentCurrentTask, getTasksByStatus, findTaskByVcs, findTaskByGitHub, getAllTasks, getTasksCount, getTaskStats, getCompletedSlackTasks, getPendingSlackRelayTasks, markSlackRelayAttempted, markSlackRelayDelivered, markFinalizedSlackRelaysDelivered, getRecentlyFinishedWorkerTasks, markTasksNotified, resetTasksNotified, getInProgressSlackTasks, getSlackTasksMissingTree, getInProgressTasksByContextKey, isLinearTrackerContextKey, findExistingLinearTrackerContextWork, getLatestTaskByContextKey, getLatestScriptRunStepTaskByContextKey, getAgentWorkingOnThread, getLatestActiveTaskInThread, getLatestLeadTaskInThread, getMostRecentTaskInThread, findCompletedTaskInThread, findRecentCancelledTaskInThread, onTaskStarted, init_task_lifecycle_events, createTask, getPendingTaskForAgent, assignUnassignedTaskPending, startTask, updateTaskClaudeSessionId, recordTaskProviderIfUnset, updateTaskTitle, completeTask, failTask, overwriteTerminalTaskResultText, cancelTask, supersedeTask, settleSupersededTaskDependents, backfillSupersedeTaskResumeTaskId, pauseTask, resumeTask, getPausedTasksForAgent, getOrphanedInProgressTasksForAgent, resetOrphanedInProgressTasksForAgent, getRecentlyCancelledTasksForAgent, deleteTask, updateTaskProgress, SLACK_REACTION_DEFAULTS, SLACK_REACTION_CONFIG_KEYS, reactionName, init_reaction_shortcode, API_DRAINING_HEADER, API_DRAIN_MAX_MS_LIMIT, isApiDrainingResponse, init_api_drain, parseTaskToolManifest, selectTaskTools, init_task_tool_manifest, tierConfigKey, init_model_tier_keys, isInternalConfigKey, internalConfigKeyError, isReservedConfigKey, reservedKeyError, MAX_DB_RETENTION_DAYS, DB_RETENTION_TUNING_BOUNDS, validateConfigValue, init_swarm_config_guard, getDefaultAuthorizationIdForProvider, getOAuthApp, getOAuthAppById, getOAuthAppIdByProvider, createOAuthApp, updateOAuthAppById, upsertOAuthApp, listAuthorizationsForApp, getAuthorizationById, upsertAuthorization, updateAuthorizationTokens, updateAuthorizationIdentity, deleteAuthorizationById, deleteAuthorizationsForApp, createOAuthPending, consumeOAuthPending, gcOAuthPending, markAuthorizationRefreshFailed, getOAuthTokens, listAuthorizationSweepRows, listKeepAliveAuthorizations, deleteOAuthTokens, acquireOAuthRefreshLock, releaseOAuthRefreshLock, init_oauth, OpenAI, init_openai, CANDIDATE_SET_MULTIPLIER, isGraphExpansionEnabled, EMBEDDING_DIMENSIONS, init_constants, LONGTERM_ROOT, MEMORY_KEY_PATTERN, MEMORY_KEY_PATTERN_MESSAGE, MEMORY_KEY_MAX_LENGTH, isLongtermKey, longtermKeyError, isConsolidatedKey, consolidatedKeyMessage, resolveStoreKey, init_key_paths, computeScore, rerank, init_reranker, rowToCandidate, init_sqlite_store, getEmbeddingProvider, resetEmbeddingProvider, getMemoryStore, init_memory, embeddingProvider, embedScript, searchScripts, reembedAllScripts, init_embeddings2 as init_embeddings, upsertScriptByName, getScript, getScriptById, getScriptVersion, listScripts, listScriptVersions, deleteScript, touchScratchScriptLastUsed, restoreScratchScriptLastUsedIfUnchanged, createScriptApi, listScriptApisForScript, getScriptApiById, getScriptApiSecret, updateScriptApi, rotateScriptApiSecret, deleteScriptApi, recordScriptApiUsage, init_db, oauthSecretName, registerStoredSecret, loadSecretRegistry, init_secret_registry, SteeringRequestError, isSteeringEnabled2 as isSteeringEnabled, getTaskSteeringFields, getTaskSteeringFieldsForTasks, promotePendingSteeringForTask, markSteeringUndeliverable, requestSteering, init_steering, WorkflowReplayStateError, init_workflow_replay, SESSION_ACTIVITY_REFRESH_MIN_INTERVAL_MS, refreshActiveSessionOnActivity, recordKeySeatMismatch, getScriptRunExecutionArgs, getSlackRenderV2ActivatedAt, ensureSlackRenderV2Activation, getSlackDelegationActivatedAt, ensureSlackDelegationActivation, isPendingSlackMessage, isSettledSlackMessage, recordSlackMessage, reserveSlackMessage, bindSlackMessageTimestamp, updateSlackMessageRecord, markSlackTreeRendered, deleteSlackMessageRecord, getSlackTreeMessage, getSlackTreeMessageByThread, getSlackOutcomeMessage, getResolvableDeferralOutcomes, markSlackDeferralResolved, noteSlackOutcomeDeliveryFailure, abandonSlackOutcomeDelivery, getSlackTreeMessages, getSlackMessageByChannelTs, getSlackTasksInThread, listSlackThreadsAwaitingHuman, isSlackThreadAwaitingHuman, markTaskSlackReplySent, setSlackMessageTracking, updateTaskVcs, insertTaskAttachment, recordTaskPullRequestAttachments, getAssetKeyMappingByProvider, upsertAssetKeyMapping, getAssetKeyMapping, listAssetSummaries, moveAssetKey, deleteTaskAttachment, replaceTaskAttachment, getTaskAttachments, createSteeringMessage, getSteeringMessagesForTask, getSteeringMessageById, getPendingSteeringForTask, getPendingSteeringForAgent, markSteeringDelivered, markSteeringHandled, markSteeringPromoted, cancelPendingSteeringForTask, hasPendingSteering, getAgentWithTasks, getAllAgentsWithTasks, createLogEntry, getLogsByAgentId, getLogsByTaskId, getLogsByTaskIdAndEventType, getLogsByTaskIdChronological, getLogsByEventType, getAllLogs, findRecentSimilarTasks, createTaskExtended, claimTask, releaseTask, acceptTask, rejectTask, moveTaskToBacklog, moveTaskFromBacklog, promoteDraftTask, refreshDraftTaskLease, promoteAbandonedDraftTasks, releaseStaleReviewingTasks, releaseStaleOfferedTasksForOfflineAgents, getOfferedTasksForAgent, claimOfferedTask, getUnassignedTasksCount, getUnassignedTaskIds, getUnassignedTaskIdsForAgent, checkDependencies, getDependentTasks, cascadeFailDependents, updateAgentProfile, updateAgentName, createChannel, getMessageById, getChannelById, getChannelByName, getAllChannels, deleteChannel, postMessage, getChannelMessages, updateReadState, getLastReadAt, getUnreadMessages, getMentionsForAgent, getInboxSummary, claimMentions, releaseMentionProcessing, releaseStaleMentionProcessing, createService, getServiceById, getServiceByAgentAndName, getServicesByAgentId, getAllServices, updateServiceStatus, deleteService, upsertService, deleteServicesByAgentId, createSessionLogs, getSessionLogsByTaskId, getSessionLogsBySession, createSessionCost, getSessionCostsByTaskId, getSessionCostsByAgentId, getAllSessionCosts, getSessionCostsFiltered, UNATTRIBUTED_USER_ID, getSessionCostSummary, getAttributionByPerson, getDashboardCostSummary, createInboxMessage, getInboxMessageById, getUnreadInboxMessages, claimInboxMessages, markInboxMessageRead, markInboxMessageResponded, markInboxMessageDelegated, releaseStaleProcessingInbox, getConcurrentContext, getScheduledTasks, getScheduledTaskById, getScheduledTaskByName, createScheduledTask, updateScheduledTask, deleteScheduledTask, getDueScheduledTasks, autoEncryptLegacyPlaintextSecrets, maskSecrets, getSwarmConfigs, getInjectableGlobalConfigs, getSwarmConfigById, getSwarmConfigLookupById, upsertSwarmConfig, emitBuiltInIntegrationConnectedOnce, deleteSwarmConfig, deleteSwarmConfigByKey, getResolvedConfig, getSwarmRepos, getSwarmRepoById, getSwarmRepoByName, getSwarmRepoByUrl, createSwarmRepo, updateSwarmRepo, deleteSwarmRepo, getAgentMailInboxMapping, getAgentMailInboxMappingsByAgent, getAllAgentMailInboxMappings, createAgentMailInboxMapping, deleteAgentMailInboxMapping, findTaskByAgentMailThread, insertActiveSession, deleteActiveSession, deleteActiveSessionById, getActiveSessions, heartbeatActiveSession, cleanupStaleSessions, cleanupAgentSessions, updateActiveSessionProviderSessionId, getActiveSessionForTask, reassociateSessionLogs, getStalledInProgressTasks, getStalePinnedResumes, failPendingResumeIfUnclaimed, getIdleWorkersWithCapacity, getUnassignedPoolTasks, getStaleUnassignedAffinityTasks, getRecentFailedTasks, getRecentCompletedCount, getRecentFailedCount, createWorkflow, getWorkflow, listWorkflows, updateWorkflow, deleteWorkflow, getWorkflowsByScheduleId, createWorkflowRun, getWorkflowRun, updateWorkflowRun, listWorkflowRuns, countWorkflowRuns, listWorkflowRunsPage, createWorkflowRunStep, getWorkflowRunStep, updateWorkflowRunStep, getWorkflowRunStepsByRunId, getStuckWorkflowRuns, getLastSuccessfulRun, getLastRunStart, getRetryableSteps, getCompletedStepNodeIds, getTaskByWorkflowRunStepId, detachTaskFromWorkflowRunStep, getStepByIdempotencyKey, getStepCountForNode, getLatestStepForNode, getCurrentStepForNode, createWorkflowVersion, getWorkflowVersions, getWorkflowVersion, createAppVersion, getAppVersions, getAppVersion, createPage, getPage, getPageBySlug, getLatestPageBySlug, listPagesByAgent, listAllPages, countAllPages, countPagesByAgent, updatePage, deletePage, incrementPageViewCount, createPageVersion, getPageVersions, getPageVersion, createMetric, getMetric, getMetricBySlug, listMetricsByAgent, listAllMetrics, countAllMetrics, countMetricsByAgent, updateMetric, deleteMetric, createMetricVersion, getMetricVersions, getMetricVersion, getPromptTemplates, getPromptTemplateById, upsertPromptTemplate, deletePromptTemplate, resetPromptTemplateToDefault, getPromptTemplateHistory, resolvePromptTemplate, checkoutPromptTemplate, getAllChannelActivityCursors, getChannelActivityCursor, upsertChannelActivityCursor, createApprovalRequest, getApprovalRequestById, resolveApprovalRequest, cancelApprovalRequestById, cancelPendingApprovalRequestsForRun, listCancelledApprovalRequestsForRun, listCancelledApprovalRequestsForStep, claimApprovalCancellationNotification, completeApprovalCancellationNotificationClaim, releaseApprovalCancellationNotificationClaim, updateApprovalRequestNotifications, listApprovalRequests, getStuckApprovalRuns, getApprovalRequestByStepId, getExpiredPendingApprovals, getStaleApprovalRequests, createWaitState, getWaitStateById, getWaitStateByStepId, getDueWaitStates, getPendingEventWaitNames, getPendingWaitsByEvent, resolveWaitState, getStuckWaitRuns, SKILL_FILE_LIMITS, normalizeSkillFilePath, createSkill, updateSkill, listSkillFileManifest, getSkillFiles, getSkillFile, upsertSkillFile, upsertSkillFiles, deleteSkillFile, deleteSkill, getSkillById, getSkillByName, listSkills, searchSkills, installSkill, getSystemDefaultSkills, installSystemDefaultSkillsForAgent, uninstallSkill, getAgentSkills, toggleAgentSkill, createMcpServer, emitMcpServerConnectedTelemetry, updateMcpServer, deleteMcpServer, getMcpServerById, getMcpServerByName, listMcpServers, installMcpServer, uninstallMcpServer, getAgentMcpServers, createContextSnapshot, getContextSnapshotsByTaskId, getContextSnapshotsBySessionId, getContextSummaryByTaskId, getAvailableKeyIndices, recordKeyUsage, setApiKeyPlan, markKeyRateLimited, recordKeyAuthFailure, recordKeyRateLimitWindows, setApiKeyName, clearKeyRateLimit, getKeyStatuses, getKeyCostSummary, getUserById, getAllUsers, createUser, updateUser, deleteUser, listInboxState, upsertInboxState, listFavorites, listUserFavorites, getFavoriteItemIdSet, setFavorite, setUserFavorite, withFavoriteFlags, listTaskTemplates, getRootTaskChain, listRecentSessions, countSessions, getBudget, getBudgets, upsertBudget, deleteBudget, getAllPricingRows, getPricingRows, getActivePricingRow, insertPricingRow, deletePricingRow, getDailySpendForAgent, getDailySpendGlobal, getDailySpendForUser, recordBudgetRefusalNotification, getBudgetRefusalNotification, getRecentBudgetRefusalNotifications, hasBudgetRefusalNotificationToday, setBudgetRefusalFollowUpTaskId, getLiveAgentCounts, getReadyAgentCounts, getInstanceActivity, getSwarmMetrics, hasFirstCompletedTask, getKv, sweepExpiredKv, sweepExpiredKvPrefix, upsertKv, claimKv, deleteKv, KvTypeCollisionError, incrKv, kvPrefixUpperBound, listKv, countKv, createScriptRun, recordInlineScriptRun, getScriptRun, getScriptRunByIdempotencyKey, listScriptRuns, countScriptRuns, countActiveScriptRuns, updateScriptRun, updateScriptRunIfNotTerminal, updateScriptRunIfRunning, getRunningScriptRuns, getScriptRunJournalStep, upsertScriptRunJournalStep, listScriptRunJournalSteps, countScriptRunJournalSteps, countScriptRunJournalAgentTaskSteps, exports_db, init_db2 as init_db1 };
25646
+ export { slackContextKey, agentmailContextKey, githubContextKey, gitlabContextKey, azureDevOpsContextKey, linearContextKey, buildJiraContextKey, scheduleContextKey, workflowContextKey, agentContextKey, pageContextKey, init_context_key, checkSlackRoutingCoherence, init_slack_routing, mapTriggerSurface, init_telemetry_context, beginRequestAuthScope, setRequestAuth, getRequestAuth, getCurrentRequestAuth, runWithoutRequestAuth, getCurrentRequestUserId, init_request_auth_context, isTelemetryEnabled, _resolveIntegrationType, _resolveIntegrationProvider, initTelemetry, setTelemetryRoleResolver, isTelemetryReady, telemetry, emitIntegrationConnected, init_telemetry, auditAssetKeys, init_asset_key_audit, CredentialBindingSchema, placeholderForConfigKey, CredentialBroker, DEFAULT_CREDENTIAL_BINDINGS, init_credential_broker, encryptSecret, decryptSecret, getEncryptionKey, init_crypto, isInTransaction, init_db_client, breaksJsonValidity, scrubJsonValue, init_scrub_json, sealJson, init_sealed_json, getPromptTemplateDefaultDrift, init_default_drift, init_templates2 as init_templates, init_templates3 as init_templates1, isSqliteVecAvailable, resolveSqliteVecExtensionPath, __resetSqliteVecExtensionPathCacheForTests, initDb, getDb, closeDb, getDbClient, init_runtime, cachedUserRole, configureOrgDomainPersistence, recomputeOrgDomain, scheduleOrgDomainRecompute, init_telemetry_identity, resolveTriggerSurface, emitTaskTelemetry, init_telemetry_trigger, CODEX_AUTH_WATCH_NAMESPACE, codexAuthBenchMarkerKey, isCodexAuthFailureReason, init_codex_auth_failure, HeartbeatExpiryError, init_heartbeat_expiry, normalizeDate, normalizeDateRequired, init_date_utils, updateAgentCredentialState, updateAgentCredentialMissing, createAgent, getAgentById, EXTENSION_AGENT_ROLE, NOT_EXTENSION_AGENT_SQL, isExtensionAgent, extensionAgentAssignmentError, ReservedAgentRoleError, reservedRoleViolation, ExtensionAgentAssignmentError, getAllAgents, getAgentStatusCounts, getLeadAgent, updateAgentStatus, updateAgentMaxTasks, updateAgentProvider, setAgentHarnessProvider, updateAgentCredStatus, listAgentsWithCredStatusByProvider, getAgentHarnessProviders, updateAgentActivity, MAX_EMPTY_POLLS, incrementEmptyPollCount, resetEmptyPollCount, shouldBlockPolling, deleteAgent, getActiveTaskCount, hasCapacity, getRemainingCapacity, updateAgentStatusFromCapacity, isPoolAffinityEnforcementEnabled, buildRoutingAffinityFromAgent, isAgentEligibleForTask, getAgentDailyTaskCounts, listApprovalRequestSummaries, getPendingApprovalVoteState, recordApprovalVotes, computeContentHash, createContextVersion, getLatestContextVersion, getContextVersion, getContextVersionHistory, setHumanFreeQueueListener, drainHumanFreeReclassifyQueue, init_human_free, getTaskById, getChildTasks, hasNonTerminalResumeChild, getSupersededTasksWithoutResume, getSupersededTasksWithUnsettledDependents, hasNonTerminalRerouteDecisionChild, getTasksByAgentId, getAgentCurrentTask, getTasksByStatus, findTaskByVcs, findTaskByGitHub, getAllTasks, getTasksCount, getTaskStats, getCompletedSlackTasks, getPendingSlackRelayTasks, markSlackRelayAttempted, markSlackRelayDelivered, markFinalizedSlackRelaysDelivered, getRecentlyFinishedWorkerTasks, markTasksNotified, resetTasksNotified, getInProgressSlackTasks, getSlackTasksMissingTree, getInProgressTasksByContextKey, isLinearTrackerContextKey, findExistingLinearTrackerContextWork, getLatestTaskByContextKey, getLatestScriptRunStepTaskByContextKey, getAgentWorkingOnThread, getLatestActiveTaskInThread, getLatestLeadTaskInThread, getMostRecentTaskInThread, findCompletedTaskInThread, findRecentCancelledTaskInThread, onTaskStarted, init_task_lifecycle_events, createTask, getPendingTaskForAgent, assignUnassignedTaskPending, startTask, updateTaskClaudeSessionId, recordTaskProviderIfUnset, updateTaskTitle, completeTask, failTask, overwriteTerminalTaskResultText, cancelTask, supersedeTask, settleSupersededTaskDependents, backfillSupersedeTaskResumeTaskId, pauseTask, resumeTask, getPausedTasksForAgent, getOrphanedInProgressTasksForAgent, resetOrphanedInProgressTasksForAgent, getRecentlyCancelledTasksForAgent, deleteTask, updateTaskProgress, SLACK_REACTION_DEFAULTS, SLACK_REACTION_CONFIG_KEYS, reactionName, init_reaction_shortcode, API_DRAINING_HEADER, API_DRAIN_MAX_MS_LIMIT, isApiDrainingResponse, init_api_drain, parseEnabledTools, init_enabled_tools, parseTaskToolManifest, selectTaskTools, init_task_tool_manifest, tierConfigKey, init_model_tier_keys, isInternalConfigKey, internalConfigKeyError, isReservedConfigKey, reservedKeyError, MAX_DB_RETENTION_DAYS, DB_RETENTION_TUNING_BOUNDS, validateConfigValue, init_swarm_config_guard, getDefaultAuthorizationIdForProvider, getOAuthApp, getOAuthAppById, getOAuthAppIdByProvider, createOAuthApp, updateOAuthAppById, upsertOAuthApp, listAuthorizationsForApp, getAuthorizationById, upsertAuthorization, updateAuthorizationTokens, updateAuthorizationIdentity, deleteAuthorizationById, deleteAuthorizationsForApp, createOAuthPending, consumeOAuthPending, gcOAuthPending, markAuthorizationRefreshFailed, getOAuthTokens, listAuthorizationSweepRows, listKeepAliveAuthorizations, deleteOAuthTokens, acquireOAuthRefreshLock, releaseOAuthRefreshLock, init_oauth, OpenAI, init_openai, CANDIDATE_SET_MULTIPLIER, isGraphExpansionEnabled, EMBEDDING_DIMENSIONS, init_constants, LONGTERM_ROOT, MEMORY_KEY_PATTERN, MEMORY_KEY_PATTERN_MESSAGE, MEMORY_KEY_MAX_LENGTH, isLongtermKey, longtermKeyError, isConsolidatedKey, consolidatedKeyMessage, resolveStoreKey, init_key_paths, computeScore, rerank, init_reranker, rowToCandidate, init_sqlite_store, getEmbeddingProvider, resetEmbeddingProvider, getMemoryStore, init_memory, embeddingProvider, embedScript, searchScripts, reembedAllScripts, init_embeddings2 as init_embeddings, upsertScriptByName, getScript, getScriptById, getScriptVersion, listScripts, listScriptVersions, deleteScript, touchScratchScriptLastUsed, restoreScratchScriptLastUsedIfUnchanged, createScriptApi, listScriptApisForScript, getScriptApiById, getScriptApiSecret, updateScriptApi, rotateScriptApiSecret, deleteScriptApi, recordScriptApiUsage, init_db, oauthSecretName, registerStoredSecret, loadSecretRegistry, init_secret_registry, SteeringRequestError, isSteeringEnabled2 as isSteeringEnabled, getTaskSteeringFields, getTaskSteeringFieldsForTasks, promotePendingSteeringForTask, markSteeringUndeliverable, requestSteering, init_steering, WorkflowReplayStateError, init_workflow_replay, SESSION_ACTIVITY_REFRESH_MIN_INTERVAL_MS, refreshActiveSessionOnActivity, recordKeySeatMismatch, getScriptRunExecutionArgs, getSlackRenderV2ActivatedAt, ensureSlackRenderV2Activation, getSlackDelegationActivatedAt, ensureSlackDelegationActivation, isPendingSlackMessage, isSettledSlackMessage, recordSlackMessage, reserveSlackMessage, bindSlackMessageTimestamp, updateSlackMessageRecord, markSlackTreeRendered, deleteSlackMessageRecord, getSlackTreeMessage, getSlackTreeMessageByThread, getSlackOutcomeMessage, getResolvableDeferralOutcomes, markSlackDeferralResolved, noteSlackOutcomeDeliveryFailure, abandonSlackOutcomeDelivery, getSlackTreeMessages, getSlackMessageByChannelTs, getSlackTasksInThread, listSlackThreadsAwaitingHuman, isSlackThreadAwaitingHuman, markTaskSlackReplySent, setSlackMessageTracking, updateTaskVcs, insertTaskAttachment, recordTaskPullRequestAttachments, getAssetKeyMappingByProvider, upsertAssetKeyMapping, getAssetKeyMapping, listAssetSummaries, moveAssetKey, deleteTaskAttachment, replaceTaskAttachment, getTaskAttachments, createSteeringMessage, getSteeringMessagesForTask, getSteeringMessageById, getPendingSteeringForTask, getPendingSteeringForAgent, markSteeringDelivered, markSteeringHandled, markSteeringPromoted, cancelPendingSteeringForTask, hasPendingSteering, getAgentWithTasks, getAllAgentsWithTasks, createLogEntry, getLogsByAgentId, getLogsByTaskId, getLogsByTaskIdAndEventType, getLogsByTaskIdChronological, getLogsByEventType, getAllLogs, findRecentSimilarTasks, createTaskExtended, claimTask, releaseTask, acceptTask, rejectTask, moveTaskToBacklog, moveTaskFromBacklog, promoteDraftTask, refreshDraftTaskLease, promoteAbandonedDraftTasks, releaseStaleReviewingTasks, releaseStaleOfferedTasksForOfflineAgents, getOfferedTasksForAgent, claimOfferedTask, getUnassignedTasksCount, getUnassignedTaskIds, getUnassignedTaskIdsForAgent, checkDependencies, getDependentTasks, cascadeFailDependents, updateAgentProfile, updateAgentName, createChannel, getMessageById, getChannelById, getChannelByName, getAllChannels, deleteChannel, postMessage, getChannelMessages, updateReadState, getLastReadAt, getUnreadMessages, getMentionsForAgent, getInboxSummary, claimMentions, releaseMentionProcessing, releaseStaleMentionProcessing, createService, getServiceById, getServiceByAgentAndName, getServicesByAgentId, getAllServices, updateServiceStatus, deleteService, upsertService, deleteServicesByAgentId, createSessionLogs, getSessionLogsByTaskId, getSessionLogsBySession, createSessionCost, getSessionCostsByTaskId, getSessionCostsByAgentId, getAllSessionCosts, getSessionCostsFiltered, UNATTRIBUTED_USER_ID, getSessionCostSummary, getAttributionByPerson, getDashboardCostSummary, createInboxMessage, getInboxMessageById, getUnreadInboxMessages, claimInboxMessages, markInboxMessageRead, markInboxMessageResponded, markInboxMessageDelegated, releaseStaleProcessingInbox, getConcurrentContext, getScheduledTasks, getScheduledTaskById, getScheduledTaskByName, createScheduledTask, updateScheduledTask, deleteScheduledTask, getDueScheduledTasks, autoEncryptLegacyPlaintextSecrets, maskSecrets, getSwarmConfigs, getInjectableGlobalConfigs, getSwarmConfigById, getSwarmConfigLookupById, upsertSwarmConfig, emitBuiltInIntegrationConnectedOnce, deleteSwarmConfig, deleteSwarmConfigByKey, getResolvedConfig, getSwarmRepos, getSwarmRepoById, getSwarmRepoByName, getSwarmRepoByUrl, createSwarmRepo, updateSwarmRepo, deleteSwarmRepo, getAgentMailInboxMapping, getAgentMailInboxMappingsByAgent, getAllAgentMailInboxMappings, createAgentMailInboxMapping, deleteAgentMailInboxMapping, findTaskByAgentMailThread, insertActiveSession, deleteActiveSession, deleteActiveSessionById, getActiveSessions, heartbeatActiveSession, cleanupStaleSessions, cleanupAgentSessions, updateActiveSessionProviderSessionId, getActiveSessionForTask, reassociateSessionLogs, getStalledInProgressTasks, getStalePinnedResumes, failPendingResumeIfUnclaimed, getIdleWorkersWithCapacity, getUnassignedPoolTasks, getStaleUnassignedAffinityTasks, getRecentFailedTasks, getRecentCompletedCount, getRecentFailedCount, createWorkflow, getWorkflow, listWorkflows, updateWorkflow, deleteWorkflow, getWorkflowsByScheduleId, createWorkflowRun, getWorkflowRun, updateWorkflowRun, listWorkflowRuns, countWorkflowRuns, listWorkflowRunsPage, createWorkflowRunStep, getWorkflowRunStep, updateWorkflowRunStep, getWorkflowRunStepsByRunId, getStuckWorkflowRuns, getLastSuccessfulRun, getLastRunStart, getRetryableSteps, getCompletedStepNodeIds, getTaskByWorkflowRunStepId, detachTaskFromWorkflowRunStep, getStepByIdempotencyKey, getStepCountForNode, getLatestStepForNode, getCurrentStepForNode, createWorkflowVersion, getWorkflowVersions, getWorkflowVersion, createAppVersion, getAppVersions, getAppVersion, createPage, getPage, getPageBySlug, getLatestPageBySlug, listPagesByAgent, listAllPages, countAllPages, countPagesByAgent, updatePage, deletePage, incrementPageViewCount, createPageVersion, getPageVersions, getPageVersion, createMetric, getMetric, getMetricBySlug, listMetricsByAgent, listAllMetrics, countAllMetrics, countMetricsByAgent, updateMetric, deleteMetric, createMetricVersion, getMetricVersions, getMetricVersion, getPromptTemplates, getPromptTemplateById, upsertPromptTemplate, deletePromptTemplate, resetPromptTemplateToDefault, getPromptTemplateHistory, resolvePromptTemplate, checkoutPromptTemplate, getAllChannelActivityCursors, getChannelActivityCursor, upsertChannelActivityCursor, createApprovalRequest, getApprovalRequestById, resolveApprovalRequest, cancelApprovalRequestById, cancelPendingApprovalRequestsForRun, listCancelledApprovalRequestsForRun, listCancelledApprovalRequestsForStep, claimApprovalCancellationNotification, completeApprovalCancellationNotificationClaim, releaseApprovalCancellationNotificationClaim, updateApprovalRequestNotifications, listApprovalRequests, getStuckApprovalRuns, getApprovalRequestByStepId, getExpiredPendingApprovals, getStaleApprovalRequests, createWaitState, getWaitStateById, getWaitStateByStepId, getDueWaitStates, getPendingEventWaitNames, getPendingWaitsByEvent, resolveWaitState, getStuckWaitRuns, SKILL_FILE_LIMITS, normalizeSkillFilePath, createSkill, updateSkill, listSkillFileManifest, getSkillFiles, getSkillFile, upsertSkillFile, upsertSkillFiles, deleteSkillFile, deleteSkill, getSkillById, getSkillByName, listSkills, searchSkills, installSkill, getSystemDefaultSkills, installSystemDefaultSkillsForAgent, uninstallSkill, getAgentSkills, toggleAgentSkill, createMcpServer, emitMcpServerConnectedTelemetry, updateMcpServer, deleteMcpServer, getMcpServerById, getMcpServerByName, listMcpServers, installMcpServer, uninstallMcpServer, getAgentMcpServers, createContextSnapshot, getContextSnapshotsByTaskId, getContextSnapshotsBySessionId, getContextSummaryByTaskId, getAvailableKeyIndices, recordKeyUsage, setApiKeyPlan, markKeyRateLimited, recordKeyAuthFailure, recordKeyRateLimitWindows, setApiKeyName, clearKeyRateLimit, getKeyStatuses, getKeyCostSummary, getUserById, getAllUsers, createUser, updateUser, deleteUser, listInboxState, upsertInboxState, listFavorites, listUserFavorites, getFavoriteItemIdSet, setFavorite, setUserFavorite, withFavoriteFlags, listTaskTemplates, getRootTaskChain, listRecentSessions, countSessions, getBudget, getBudgets, upsertBudget, deleteBudget, getAllPricingRows, getPricingRows, getActivePricingRow, insertPricingRow, deletePricingRow, getDailySpendForAgent, getDailySpendGlobal, getDailySpendForUser, recordBudgetRefusalNotification, getBudgetRefusalNotification, getRecentBudgetRefusalNotifications, hasBudgetRefusalNotificationToday, setBudgetRefusalFollowUpTaskId, getLiveAgentCounts, getReadyAgentCounts, getInstanceActivity, getSwarmMetrics, hasFirstCompletedTask, getKv, sweepExpiredKv, sweepExpiredKvPrefix, upsertKv, claimKv, deleteKv, KvTypeCollisionError, incrKv, kvPrefixUpperBound, listKv, countKv, createScriptRun, recordInlineScriptRun, getScriptRun, getScriptRunByIdempotencyKey, listScriptRuns, countScriptRuns, countActiveScriptRuns, updateScriptRun, updateScriptRunIfNotTerminal, updateScriptRunIfRunning, getRunningScriptRuns, getScriptRunJournalStep, upsertScriptRunJournalStep, listScriptRunJournalSteps, countScriptRunJournalSteps, countScriptRunJournalAgentTaskSteps, exports_db, init_db2 as init_db1 };
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  lazyApi
3
- } from "./cli-nexwh8zg.js";
3
+ } from "./cli-g7k7zbcz.js";
4
4
 
5
5
  // node_modules/@earendil-works/pi-ai/dist/api/bedrock-converse-stream.lazy.js
6
6
  var __rewriteRelativeImportExtension = function(path, preserveJsx) {
@@ -1,10 +1,13 @@
1
1
  import {
2
2
  runStopHookSessionSummarySubprocess
3
- } from "./cli-rsy933yz.js";
3
+ } from "./cli-z1dqhc9y.js";
4
4
  import {
5
5
  buildOtelTraceparentEnv,
6
6
  isHarnessOtelEnabled
7
7
  } from "./cli-q2j38vre.js";
8
+ import {
9
+ fetchInstalledMcpServers
10
+ } from "./cli-tng3131n.js";
8
11
  import {
9
12
  CTX_MODE_NUDGE_EVERY
10
13
  } from "./cli-zm7njwzd.js";
@@ -16,10 +19,7 @@ import {
16
19
  clampContextPercent,
17
20
  computeContextUsedUnified,
18
21
  getContextWindowSize
19
- } from "./cli-32bca7nr.js";
20
- import {
21
- fetchInstalledMcpServers
22
- } from "./cli-tng3131n.js";
22
+ } from "./cli-7avy4v8w.js";
23
23
  import {
24
24
  isClaudeBridgeEffective,
25
25
  resolveClaudeTransport
@@ -32,7 +32,7 @@ import {
32
32
  } from "./cli-2pdaysab.js";
33
33
  import {
34
34
  applyReasoningEffort
35
- } from "./cli-ttbsse3f.js";
35
+ } from "./cli-tmhsxhb8.js";
36
36
  import {
37
37
  swarmRuntimeInstanceId
38
38
  } from "./cli-re8z5p8p.js";
@@ -44,7 +44,7 @@ import {
44
44
  import {
45
45
  init_file_lock,
46
46
  withFileLock
47
- } from "./cli-jhm6hzjn.js";
47
+ } from "./cli-mxvnnv5q.js";
48
48
  import {
49
49
  CLAUDE_CREDENTIALS_HINT,
50
50
  init_credentials,
@@ -56,6 +56,10 @@ import {
56
56
  routeCredentialStatus,
57
57
  routeUnsetEnv
58
58
  } from "./cli-f9w1semm.js";
59
+ import {
60
+ getOpenRouterAttributionHeaders,
61
+ init_openrouter_base_url
62
+ } from "./cli-a35hzdve.js";
59
63
  import {
60
64
  init_env_flag,
61
65
  isEnvFlagEnabled
@@ -95,6 +99,7 @@ import { promisify } from "node:util";
95
99
  init_credentials();
96
100
  init_env_flag();
97
101
  init_file_lock();
102
+ init_openrouter_base_url();
98
103
  init_secret_scrubber();
99
104
 
100
105
  // src/providers/claude-session-events.ts
@@ -628,6 +633,21 @@ function buildClaudeCodeRuntimeEnv(_sourceEnv) {
628
633
  DISABLE_BUG_COMMAND: "1"
629
634
  };
630
635
  }
636
+ function claudeOpenRouterAttributionEnv(env) {
637
+ const headers = getOpenRouterAttributionHeaders(env.ANTHROPIC_BASE_URL ?? "", env);
638
+ const names = new Set(Object.keys(headers).map((name) => name.toLowerCase()));
639
+ if (names.size === 0)
640
+ return {};
641
+ const kept = (env.ANTHROPIC_CUSTOM_HEADERS ?? "").split(`
642
+ `).filter((line) => {
643
+ const colon = line.indexOf(":");
644
+ const name = colon === -1 ? "" : line.slice(0, colon).trim().toLowerCase();
645
+ return line.trim() !== "" && !names.has(name);
646
+ });
647
+ const ours = Object.entries(headers).map(([name, value]) => `${name}: ${value}`);
648
+ return { ANTHROPIC_CUSTOM_HEADERS: [...kept, ...ours].join(`
649
+ `) };
650
+ }
631
651
  function buildClaudeSessionEnvironment(config, model, taskFilePath) {
632
652
  const sourceEnv = { ...withClaudeRouteEnv(config.env || process.env) };
633
653
  delete sourceEnv.AGENT_SWARM_CLAUDE_OAUTH_TOKEN;
@@ -636,6 +656,7 @@ function buildClaudeSessionEnvironment(config, model, taskFilePath) {
636
656
  env: {
637
657
  ENABLE_PROMPT_CACHING_1H: "1",
638
658
  ...sourceEnv,
659
+ ...claudeOpenRouterAttributionEnv(sourceEnv),
639
660
  ...buildClaudeCodeRuntimeEnv(sourceEnv),
640
661
  ...buildClaudeCodeOtelEnv(sourceEnv),
641
662
  ...reasoningApplication.kind === "claude-env" ? reasoningApplication.env : {},
@@ -1026,7 +1047,7 @@ class ClaudeAdapter {
1026
1047
  if (transport === "sdk" && isClaudeBridgeEffective(sourceEnv)) {
1027
1048
  throw new Error("CLAUDE_TRANSPORT=sdk cannot run with an effective Claude Bridge configuration. Select CLI transport or disable the bridge.");
1028
1049
  }
1029
- const claudeSdk = transport === "sdk" ? await import("./claude-sdk-session-kkbxtw5q.js") : undefined;
1050
+ const claudeSdk = transport === "sdk" ? await import("./claude-sdk-session-wh77rh83.js") : undefined;
1030
1051
  claudeSdk?.validateClaudeSdkAdditionalArgs([
1031
1052
  ...claudeBinaryArgv.slice(1),
1032
1053
  ...config.additionalArgs ?? []
@@ -1133,4 +1154,4 @@ ${stderr}`.trim();
1133
1154
  }
1134
1155
  }
1135
1156
 
1136
- export { normalizeClaudeMessage, checkClaudeCredentials, withClaudeRouteEnv, getTaskFilePath, cleanupTaskFile, parseClaudeBinary, resolveClaudeQueueSteeringOverride, resolveClaudeBinary, parseClaudeBridgeEnabled, resolveClaudeBridgeEnabled, resolveClaudeBinaryArgv, preseedClaudeTrustDialog, resolveClaudeTrustDirs, mergeMcpConfig, createSessionMcpConfig, buildClaudeCodeOtelEnv, buildClaudeCodeRuntimeEnv, buildClaudeSessionEnvironment, runClaudeSessionSummary, getSystemPromptFilePath, resolveClaudePrompt, ClaudeAdapter };
1157
+ export { normalizeClaudeMessage, checkClaudeCredentials, withClaudeRouteEnv, getTaskFilePath, cleanupTaskFile, parseClaudeBinary, resolveClaudeQueueSteeringOverride, resolveClaudeBinary, parseClaudeBridgeEnabled, resolveClaudeBridgeEnabled, resolveClaudeBinaryArgv, preseedClaudeTrustDialog, resolveClaudeTrustDirs, mergeMcpConfig, createSessionMcpConfig, buildClaudeCodeOtelEnv, buildClaudeCodeRuntimeEnv, claudeOpenRouterAttributionEnv, buildClaudeSessionEnvironment, runClaudeSessionSummary, getSystemPromptFilePath, resolveClaudePrompt, ClaudeAdapter };
@@ -0,0 +1,104 @@
1
+ import {
2
+ isRecord,
3
+ parseClassifierUsage,
4
+ postClassifierRequest,
5
+ requiredNumber
6
+ } from "./cli-q1vnz8wv.js";
7
+ import {
8
+ formatProviderError,
9
+ normalizeProviderError
10
+ } from "./cli-6map995v.js";
11
+
12
+ // node_modules/@earendil-works/pi-ai/dist/api/system-one-shared.js
13
+ function probabilities(label, value, id) {
14
+ if (!isRecord(value))
15
+ throw new Error(`${label} returned invalid probabilities for ${id}`);
16
+ return Object.fromEntries(Object.entries(value).map(([key, probability]) => [
17
+ key,
18
+ requiredNumber(label, probability, `probability for ${id}.${key}`)
19
+ ]));
20
+ }
21
+ function parseAnswers(label, value, context) {
22
+ if (!isRecord(value))
23
+ throw new Error(`${label} returned an unexpected response`);
24
+ const answers = [];
25
+ for (const [id, question] of Object.entries(context.questions)) {
26
+ const answer = value[id];
27
+ if (!isRecord(answer))
28
+ throw new Error(`${label} did not return an answer for ${id}`);
29
+ if (question.type === "choice") {
30
+ if (answer.type !== "choice" || typeof answer.choice !== "string") {
31
+ throw new Error(`${label} did not return a choice answer for ${id}`);
32
+ }
33
+ answers.push([
34
+ id,
35
+ {
36
+ type: "choice",
37
+ choice: answer.choice,
38
+ probabilities: probabilities(label, answer.probabilities, id),
39
+ confidence: requiredNumber(label, answer.confidence, `confidence for ${id}`)
40
+ }
41
+ ]);
42
+ } else if (question.type === "score") {
43
+ if (answer.type !== "score")
44
+ throw new Error(`${label} did not return a score answer for ${id}`);
45
+ answers.push([
46
+ id,
47
+ {
48
+ type: "score",
49
+ score: requiredNumber(label, answer.score, `score for ${id}`),
50
+ confidence: requiredNumber(label, answer.confidence, `confidence for ${id}`)
51
+ }
52
+ ]);
53
+ } else {
54
+ if (answer.type !== "noul")
55
+ throw new Error(`${label} did not return a bool answer for ${id}`);
56
+ answers.push([
57
+ id,
58
+ {
59
+ type: "bool",
60
+ probability: requiredNumber(label, answer.noul, `probability for ${id}`)
61
+ }
62
+ ]);
63
+ }
64
+ }
65
+ return Object.fromEntries(answers);
66
+ }
67
+ function wireRequest(context) {
68
+ return {
69
+ state: context.state,
70
+ questions: Object.fromEntries(Object.entries(context.questions).map(([id, question]) => [
71
+ id,
72
+ question.type === "bool" ? { ...question, type: "noul" } : question
73
+ ]))
74
+ };
75
+ }
76
+ async function classifySystemOne(transport, model, context, options) {
77
+ const output = {
78
+ api: model.api,
79
+ provider: model.provider,
80
+ model: model.id,
81
+ answers: {},
82
+ stopReason: "stop",
83
+ timestamp: Date.now()
84
+ };
85
+ try {
86
+ if (model.api !== transport.api)
87
+ throw new Error(`Unsupported classifier API: ${model.api}`);
88
+ if (context.images?.length)
89
+ throw new Error(`${transport.label} does not support image input`);
90
+ const body = await postClassifierRequest(transport.label, transport.url(model), model, transport.payload(model, wireRequest(context)), options);
91
+ const result = transport.output(body);
92
+ const usage = parseClassifierUsage(result.usage, model);
93
+ if (usage)
94
+ output.usage = usage;
95
+ output.answers = parseAnswers(transport.label, result.answers, context);
96
+ return output;
97
+ } catch (error) {
98
+ output.stopReason = options?.signal?.aborted ? "aborted" : "error";
99
+ output.errorMessage = formatProviderError(normalizeProviderError(error), `${transport.label} error`);
100
+ return output;
101
+ }
102
+ }
103
+
104
+ export { classifySystemOne };
@@ -1,18 +1,18 @@
1
1
  import {
2
2
  buildModelsDevSeedRows,
3
3
  loadModelsDevCache
4
- } from "./cli-ysnyhws9.js";
4
+ } from "./cli-v1pwxreq.js";
5
5
  import {
6
6
  createLogEntry,
7
7
  getActivePricingRow,
8
8
  getDbClient,
9
9
  init_db1 as init_db,
10
10
  insertPricingRow
11
- } from "./cli-yshaazs1.js";
11
+ } from "./cli-mkdsy1nq.js";
12
12
  import {
13
13
  init_runtime_model_catalog,
14
14
  setRuntimeModelCatalog
15
- } from "./cli-zsh093hk.js";
15
+ } from "./cli-014vns2y.js";
16
16
  import {
17
17
  init_secret_scrubber,
18
18
  scrubSecrets
@@ -5,11 +5,11 @@ import {
5
5
  CONTEXT_FORMULA,
6
6
  clampContextPercent,
7
7
  getContextWindowSize
8
- } from "./cli-32bca7nr.js";
8
+ } from "./cli-7avy4v8w.js";
9
9
  import {
10
10
  applyReasoningEffort,
11
11
  reasoningCapability
12
- } from "./cli-ttbsse3f.js";
12
+ } from "./cli-tmhsxhb8.js";
13
13
  import {
14
14
  swarmRuntimeInstanceId
15
15
  } from "./cli-re8z5p8p.js";
@@ -18,13 +18,15 @@ import {
18
18
  registerProcessGroup,
19
19
  terminateProcessGroup
20
20
  } from "./cli-zt3w1cn1.js";
21
- import {
22
- getOpenRouterBaseUrl
23
- } from "./cli-3dpj7atn.js";
24
21
  import {
25
22
  DEFAULT_MODEL_TIER_MAP,
26
23
  init_types
27
24
  } from "./cli-xvdgasgy.js";
25
+ import {
26
+ getOpenRouterAttributionHeaders,
27
+ getOpenRouterBaseUrl,
28
+ init_openrouter_base_url
29
+ } from "./cli-a35hzdve.js";
28
30
  import {
29
31
  init_secret_scrubber,
30
32
  registerVolatileSecret,
@@ -62,6 +64,7 @@ function addDshStepUsage(acc, step) {
62
64
  }
63
65
 
64
66
  // src/providers/dsh-adapter.ts
67
+ init_openrouter_base_url();
65
68
  init_secret_scrubber();
66
69
  var DSH_PACKAGE = "@deepseek-ai/dsh@0.2.1-alpha.1";
67
70
  function checkDshCredentials(env) {
@@ -323,6 +326,7 @@ class DshAdapter {
323
326
  const directory = await mkdtemp(join(tmpdir(), "swarm-dsh-"));
324
327
  try {
325
328
  const patchPath = join(directory, "patch.json");
329
+ const openRouterHeaders = openrouter ? getOpenRouterAttributionHeaders(getOpenRouterBaseUrl(env), env) : {};
326
330
  const runtimeInstanceId = swarmRuntimeInstanceId();
327
331
  await writeFile(patchPath, JSON.stringify([
328
332
  {
@@ -341,6 +345,7 @@ class DshAdapter {
341
345
  openrouter: {
342
346
  apiKeyEnv: keyEnv,
343
347
  baseURL: getOpenRouterBaseUrl(env),
348
+ ...Object.keys(openRouterHeaders).length > 0 ? { headers: openRouterHeaders } : {},
344
349
  api: "openai-completions",
345
350
  models: [
346
351
  reasoningEffort ? { id: modelId, reasoningEfforts: openRouterEfforts(model) } : { id: modelId }