nexus-agents 8.74.0 → 8.74.2

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 (129) hide show
  1. package/dist/{ast-rule-runner-SP6GDPCV.js → ast-rule-runner-K35WYUOD.js} +3 -3
  2. package/dist/{child-mcp-config-UZ4RXW2F.js → child-mcp-config-B2CWZ2ZK.js} +2 -2
  3. package/dist/{chunk-SZV3CSSA.js → chunk-22VQMTR6.js} +2 -2
  4. package/dist/{chunk-S2ZYMPIQ.js → chunk-2KXRL4OW.js} +2 -2
  5. package/dist/{chunk-XCG6DOON.js → chunk-3PI3INR3.js} +5 -5
  6. package/dist/{chunk-KBVUK5OW.js → chunk-43RJNTUZ.js} +2 -2
  7. package/dist/{chunk-XCFR2LV4.js → chunk-47624RRN.js} +2 -2
  8. package/dist/{chunk-UNYUCKCA.js → chunk-4PWDDMLH.js} +41 -19
  9. package/dist/chunk-4PWDDMLH.js.map +1 -0
  10. package/dist/{chunk-7WGDWARC.js → chunk-5E33WGDR.js} +2 -2
  11. package/dist/{chunk-LSEQ67JW.js → chunk-5QE6DJMH.js} +5 -5
  12. package/dist/{chunk-WGKHMZEM.js → chunk-6DPQOIE7.js} +2 -2
  13. package/dist/{chunk-45XNEP23.js → chunk-6Y24JDBR.js} +37 -37
  14. package/dist/chunk-6Y24JDBR.js.map +1 -0
  15. package/dist/{chunk-VYROSDRZ.js → chunk-ADHIHFBA.js} +2 -2
  16. package/dist/{chunk-AEKVLSQ3.js → chunk-B227FYGQ.js} +4 -4
  17. package/dist/{chunk-MOF5OHBX.js → chunk-CYZ3DUQV.js} +2 -2
  18. package/dist/{chunk-FRUPNBXD.js → chunk-D5ST2Y4W.js} +3 -3
  19. package/dist/{chunk-7OIJTZNM.js → chunk-DSTEEVDR.js} +2 -2
  20. package/dist/{chunk-WPTRGYML.js → chunk-GENL3TXA.js} +2 -2
  21. package/dist/{chunk-W3T2HJS7.js → chunk-GW7SZ555.js} +2 -2
  22. package/dist/{chunk-SJT4SVUT.js → chunk-HO2UPJ7T.js} +5 -5
  23. package/dist/{chunk-NZOK67DA.js → chunk-I2KBD37Y.js} +3 -3
  24. package/dist/{chunk-VACGQIGN.js → chunk-I5DGPV2X.js} +3 -3
  25. package/dist/{chunk-E5MA4CRS.js → chunk-IQTHG5BO.js} +2 -2
  26. package/dist/{chunk-QOEW4QIY.js → chunk-M6DJ6AE3.js} +9 -9
  27. package/dist/{chunk-THA4QMT7.js → chunk-MYGTMAHW.js} +3 -3
  28. package/dist/{chunk-2Y7XYIIW.js → chunk-NC7X6WQL.js} +2 -2
  29. package/dist/{chunk-JSWX6BDQ.js → chunk-NLRIEHAY.js} +4 -4
  30. package/dist/{chunk-L7BZ4BK6.js → chunk-PWEGOADT.js} +10 -10
  31. package/dist/chunk-PWEGOADT.js.map +1 -0
  32. package/dist/{chunk-KXEPTN4C.js → chunk-QW5FSTLJ.js} +2 -2
  33. package/dist/{chunk-OXAVRTVL.js → chunk-RGEJZIOJ.js} +2 -2
  34. package/dist/{chunk-PLJRYSM3.js → chunk-ST7RKS3P.js} +2 -2
  35. package/dist/{chunk-KH4M5WF7.js → chunk-TL5NV5JH.js} +4 -4
  36. package/dist/{chunk-K3ONE7D6.js → chunk-TUTS6S2G.js} +8 -8
  37. package/dist/{chunk-3BLS7Y5G.js → chunk-Z2XB5IKO.js} +2 -2
  38. package/dist/{chunk-GLHKNSQ7.js → chunk-ZDVNHXRV.js} +2 -2
  39. package/dist/{chunk-KKVEMAJY.js → chunk-ZKEULHX6.js} +7 -7
  40. package/dist/{cli-circuit-breaker-LIGGUF62.js → cli-circuit-breaker-Q73YH6FS.js} +3 -3
  41. package/dist/cli.js +43 -43
  42. package/dist/{composite-router-3IMDHDRN.js → composite-router-XKE225G5.js} +2 -2
  43. package/dist/{consensus-vote-4HYOBUSH.js → consensus-vote-YCETKP4M.js} +16 -16
  44. package/dist/{context-retriever-42P4NR37.js → context-retriever-5BL34V6Y.js} +8 -8
  45. package/dist/{doctor-deep-6H22DGVW.js → doctor-deep-UYXLA4HG.js} +3 -3
  46. package/dist/{doctor-live-7BJ25ERV.js → doctor-live-7I6STRL7.js} +10 -10
  47. package/dist/{expert-bridge-LXOQUZGP.js → expert-bridge-PLY7MNUK.js} +4 -4
  48. package/dist/{factory-6OP35KAE.js → factory-5XIEO5EA.js} +5 -5
  49. package/dist/{factory-QCI576YH.js → factory-ZCMLOSDY.js} +9 -9
  50. package/dist/{improvement-review-3PCGWFU2.js → improvement-review-CF5SWXUB.js} +5 -5
  51. package/dist/index.js +31 -31
  52. package/dist/{init-opencode-RY7XOBEA.js → init-opencode-UTF4K2LR.js} +8 -7
  53. package/dist/init-opencode-UTF4K2LR.js.map +1 -0
  54. package/dist/issue-triage-KCRQNDYX.js +16 -0
  55. package/dist/{pr-reviewer-helpers-K3F54VSR.js → pr-reviewer-helpers-RMOEXYCO.js} +4 -4
  56. package/dist/{registry-command-MEZJBONZ.js → registry-command-XFM4XIGJ.js} +2 -2
  57. package/dist/{repo-security-plan-L2HFFULP.js → repo-security-plan-YWANNRJE.js} +3 -3
  58. package/dist/{research-helpers-synthesize-7CUSK6LU.js → research-helpers-synthesize-QFKDDHRE.js} +4 -4
  59. package/dist/{routing-memory-QOU5N3CJ.js → routing-memory-T22PQ5FF.js} +2 -2
  60. package/dist/{session-memory-2L3WJUWQ.js → session-memory-ZNIJGF7Z.js} +3 -3
  61. package/dist/{setup-config-W3LLNWXB.js → setup-config-XC5KSYGO.js} +3 -3
  62. package/dist/{setup-custom-api-33RQ4M53.js → setup-custom-api-5WL5D24S.js} +4 -4
  63. package/dist/setup-data-dir-6PEJ3YF7.js +31 -0
  64. package/dist/{tool-memory-XY5FBZHL.js → tool-memory-JNHE2VP2.js} +5 -5
  65. package/dist/{unified-registry-JHSNXTBN.js → unified-registry-5IIFYGBI.js} +10 -10
  66. package/dist/{weather-report-BHAOPRFQ.js → weather-report-3AZHFDM3.js} +2 -2
  67. package/package.json +1 -1
  68. package/dist/chunk-45XNEP23.js.map +0 -1
  69. package/dist/chunk-L7BZ4BK6.js.map +0 -1
  70. package/dist/chunk-UNYUCKCA.js.map +0 -1
  71. package/dist/init-opencode-RY7XOBEA.js.map +0 -1
  72. package/dist/issue-triage-KPAQEJGV.js +0 -16
  73. package/dist/setup-data-dir-Y7MW2XYL.js +0 -31
  74. /package/dist/{ast-rule-runner-SP6GDPCV.js.map → ast-rule-runner-K35WYUOD.js.map} +0 -0
  75. /package/dist/{child-mcp-config-UZ4RXW2F.js.map → child-mcp-config-B2CWZ2ZK.js.map} +0 -0
  76. /package/dist/{chunk-SZV3CSSA.js.map → chunk-22VQMTR6.js.map} +0 -0
  77. /package/dist/{chunk-S2ZYMPIQ.js.map → chunk-2KXRL4OW.js.map} +0 -0
  78. /package/dist/{chunk-XCG6DOON.js.map → chunk-3PI3INR3.js.map} +0 -0
  79. /package/dist/{chunk-KBVUK5OW.js.map → chunk-43RJNTUZ.js.map} +0 -0
  80. /package/dist/{chunk-XCFR2LV4.js.map → chunk-47624RRN.js.map} +0 -0
  81. /package/dist/{chunk-7WGDWARC.js.map → chunk-5E33WGDR.js.map} +0 -0
  82. /package/dist/{chunk-LSEQ67JW.js.map → chunk-5QE6DJMH.js.map} +0 -0
  83. /package/dist/{chunk-WGKHMZEM.js.map → chunk-6DPQOIE7.js.map} +0 -0
  84. /package/dist/{chunk-VYROSDRZ.js.map → chunk-ADHIHFBA.js.map} +0 -0
  85. /package/dist/{chunk-AEKVLSQ3.js.map → chunk-B227FYGQ.js.map} +0 -0
  86. /package/dist/{chunk-MOF5OHBX.js.map → chunk-CYZ3DUQV.js.map} +0 -0
  87. /package/dist/{chunk-FRUPNBXD.js.map → chunk-D5ST2Y4W.js.map} +0 -0
  88. /package/dist/{chunk-7OIJTZNM.js.map → chunk-DSTEEVDR.js.map} +0 -0
  89. /package/dist/{chunk-WPTRGYML.js.map → chunk-GENL3TXA.js.map} +0 -0
  90. /package/dist/{chunk-W3T2HJS7.js.map → chunk-GW7SZ555.js.map} +0 -0
  91. /package/dist/{chunk-SJT4SVUT.js.map → chunk-HO2UPJ7T.js.map} +0 -0
  92. /package/dist/{chunk-NZOK67DA.js.map → chunk-I2KBD37Y.js.map} +0 -0
  93. /package/dist/{chunk-VACGQIGN.js.map → chunk-I5DGPV2X.js.map} +0 -0
  94. /package/dist/{chunk-E5MA4CRS.js.map → chunk-IQTHG5BO.js.map} +0 -0
  95. /package/dist/{chunk-QOEW4QIY.js.map → chunk-M6DJ6AE3.js.map} +0 -0
  96. /package/dist/{chunk-THA4QMT7.js.map → chunk-MYGTMAHW.js.map} +0 -0
  97. /package/dist/{chunk-2Y7XYIIW.js.map → chunk-NC7X6WQL.js.map} +0 -0
  98. /package/dist/{chunk-JSWX6BDQ.js.map → chunk-NLRIEHAY.js.map} +0 -0
  99. /package/dist/{chunk-KXEPTN4C.js.map → chunk-QW5FSTLJ.js.map} +0 -0
  100. /package/dist/{chunk-OXAVRTVL.js.map → chunk-RGEJZIOJ.js.map} +0 -0
  101. /package/dist/{chunk-PLJRYSM3.js.map → chunk-ST7RKS3P.js.map} +0 -0
  102. /package/dist/{chunk-KH4M5WF7.js.map → chunk-TL5NV5JH.js.map} +0 -0
  103. /package/dist/{chunk-K3ONE7D6.js.map → chunk-TUTS6S2G.js.map} +0 -0
  104. /package/dist/{chunk-3BLS7Y5G.js.map → chunk-Z2XB5IKO.js.map} +0 -0
  105. /package/dist/{chunk-GLHKNSQ7.js.map → chunk-ZDVNHXRV.js.map} +0 -0
  106. /package/dist/{chunk-KKVEMAJY.js.map → chunk-ZKEULHX6.js.map} +0 -0
  107. /package/dist/{cli-circuit-breaker-LIGGUF62.js.map → cli-circuit-breaker-Q73YH6FS.js.map} +0 -0
  108. /package/dist/{composite-router-3IMDHDRN.js.map → composite-router-XKE225G5.js.map} +0 -0
  109. /package/dist/{consensus-vote-4HYOBUSH.js.map → consensus-vote-YCETKP4M.js.map} +0 -0
  110. /package/dist/{context-retriever-42P4NR37.js.map → context-retriever-5BL34V6Y.js.map} +0 -0
  111. /package/dist/{doctor-deep-6H22DGVW.js.map → doctor-deep-UYXLA4HG.js.map} +0 -0
  112. /package/dist/{doctor-live-7BJ25ERV.js.map → doctor-live-7I6STRL7.js.map} +0 -0
  113. /package/dist/{expert-bridge-LXOQUZGP.js.map → expert-bridge-PLY7MNUK.js.map} +0 -0
  114. /package/dist/{factory-6OP35KAE.js.map → factory-5XIEO5EA.js.map} +0 -0
  115. /package/dist/{factory-QCI576YH.js.map → factory-ZCMLOSDY.js.map} +0 -0
  116. /package/dist/{improvement-review-3PCGWFU2.js.map → improvement-review-CF5SWXUB.js.map} +0 -0
  117. /package/dist/{issue-triage-KPAQEJGV.js.map → issue-triage-KCRQNDYX.js.map} +0 -0
  118. /package/dist/{pr-reviewer-helpers-K3F54VSR.js.map → pr-reviewer-helpers-RMOEXYCO.js.map} +0 -0
  119. /package/dist/{registry-command-MEZJBONZ.js.map → registry-command-XFM4XIGJ.js.map} +0 -0
  120. /package/dist/{repo-security-plan-L2HFFULP.js.map → repo-security-plan-YWANNRJE.js.map} +0 -0
  121. /package/dist/{research-helpers-synthesize-7CUSK6LU.js.map → research-helpers-synthesize-QFKDDHRE.js.map} +0 -0
  122. /package/dist/{routing-memory-QOU5N3CJ.js.map → routing-memory-T22PQ5FF.js.map} +0 -0
  123. /package/dist/{session-memory-2L3WJUWQ.js.map → session-memory-ZNIJGF7Z.js.map} +0 -0
  124. /package/dist/{setup-config-W3LLNWXB.js.map → setup-config-XC5KSYGO.js.map} +0 -0
  125. /package/dist/{setup-custom-api-33RQ4M53.js.map → setup-custom-api-5WL5D24S.js.map} +0 -0
  126. /package/dist/{setup-data-dir-Y7MW2XYL.js.map → setup-data-dir-6PEJ3YF7.js.map} +0 -0
  127. /package/dist/{tool-memory-XY5FBZHL.js.map → tool-memory-JNHE2VP2.js.map} +0 -0
  128. /package/dist/{unified-registry-JHSNXTBN.js.map → unified-registry-5IIFYGBI.js.map} +0 -0
  129. /package/dist/{weather-report-BHAOPRFQ.js.map → weather-report-3AZHFDM3.js.map} +0 -0
@@ -9,8 +9,8 @@ import {
9
9
  getBuiltInAstRulesPath,
10
10
  loadRules,
11
11
  runAstQaRules
12
- } from "./chunk-3BLS7Y5G.js";
13
- import "./chunk-UNYUCKCA.js";
12
+ } from "./chunk-Z2XB5IKO.js";
13
+ import "./chunk-4PWDDMLH.js";
14
14
  import "./chunk-4UHDDCRB.js";
15
15
  import "./chunk-RNDHNRSX.js";
16
16
  import "./chunk-PX6F3LHL.js";
@@ -26,4 +26,4 @@ export {
26
26
  loadRules,
27
27
  runAstQaRules
28
28
  };
29
- //# sourceMappingURL=ast-rule-runner-SP6GDPCV.js.map
29
+ //# sourceMappingURL=ast-rule-runner-K35WYUOD.js.map
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-HERI7LXN.js";
4
4
  import {
5
5
  createLogger
6
- } from "./chunk-UNYUCKCA.js";
6
+ } from "./chunk-4PWDDMLH.js";
7
7
  import "./chunk-4UHDDCRB.js";
8
8
  import "./chunk-RNDHNRSX.js";
9
9
  import "./chunk-PX6F3LHL.js";
@@ -60,4 +60,4 @@ export {
60
60
  generateMcpConfig,
61
61
  getDefaultAllowedTools
62
62
  };
63
- //# sourceMappingURL=child-mcp-config-UZ4RXW2F.js.map
63
+ //# sourceMappingURL=child-mcp-config-B2CWZ2ZK.js.map
@@ -2,7 +2,7 @@ import {
2
2
  createLogger,
3
3
  err,
4
4
  ok
5
- } from "./chunk-UNYUCKCA.js";
5
+ } from "./chunk-4PWDDMLH.js";
6
6
 
7
7
  // src/scm/token-resolver.ts
8
8
  import { execFile } from "node:child_process";
@@ -87,4 +87,4 @@ export {
87
87
  hasToken,
88
88
  getTokenEnvVars
89
89
  };
90
- //# sourceMappingURL=chunk-SZV3CSSA.js.map
90
+ //# sourceMappingURL=chunk-22VQMTR6.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getErrorMessage
3
- } from "./chunk-UNYUCKCA.js";
3
+ } from "./chunk-4PWDDMLH.js";
4
4
 
5
5
  // src/cli/setup-config.ts
6
6
  import { copyFileSync, existsSync, mkdirSync, writeFileSync } from "node:fs";
@@ -77,4 +77,4 @@ function ensureBackup(outputPath) {
77
77
  export {
78
78
  runConfigInitSync
79
79
  };
80
- //# sourceMappingURL=chunk-S2ZYMPIQ.js.map
80
+ //# sourceMappingURL=chunk-2KXRL4OW.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  GitHubProvider,
3
3
  ScmError
4
- } from "./chunk-2Y7XYIIW.js";
4
+ } from "./chunk-NC7X6WQL.js";
5
5
  import {
6
6
  ROLE_DEFAULT_TRUST,
7
7
  ReputationCache,
@@ -12,10 +12,10 @@ import {
12
12
  resolveEnvMode,
13
13
  resolveReputationGatingMode,
14
14
  sanitizeInput
15
- } from "./chunk-VYROSDRZ.js";
15
+ } from "./chunk-ADHIHFBA.js";
16
16
  import {
17
17
  hasToken
18
- } from "./chunk-SZV3CSSA.js";
18
+ } from "./chunk-22VQMTR6.js";
19
19
  import {
20
20
  CLI_SUBPROCESS_TIMEOUTS,
21
21
  createLogger,
@@ -23,7 +23,7 @@ import {
23
23
  getErrorMessage,
24
24
  getTimeProvider,
25
25
  ok
26
- } from "./chunk-UNYUCKCA.js";
26
+ } from "./chunk-4PWDDMLH.js";
27
27
 
28
28
  // src/security/firewall/firewall-policy-mode.ts
29
29
  import { z } from "zod";
@@ -2448,4 +2448,4 @@ export {
2448
2448
  IssueTriage,
2449
2449
  createIssueTriage
2450
2450
  };
2451
- //# sourceMappingURL=chunk-XCG6DOON.js.map
2451
+ //# sourceMappingURL=chunk-3PI3INR3.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  resolveClassGuardMs
3
- } from "./chunk-UNYUCKCA.js";
3
+ } from "./chunk-4PWDDMLH.js";
4
4
 
5
5
  // src/cli/cli-readiness.ts
6
6
  var READINESS_LEVELS = ["installed", "authenticated", "serves"];
@@ -90,4 +90,4 @@ export {
90
90
  SERVES_PROBE_PROMPT,
91
91
  probeServes
92
92
  };
93
- //# sourceMappingURL=chunk-KBVUK5OW.js.map
93
+ //# sourceMappingURL=chunk-43RJNTUZ.js.map
@@ -3,7 +3,7 @@ import {
3
3
  createLogger,
4
4
  getDefaultRegistry,
5
5
  roundToMicroUsd
6
- } from "./chunk-UNYUCKCA.js";
6
+ } from "./chunk-4PWDDMLH.js";
7
7
  import {
8
8
  getNexusDataDir
9
9
  } from "./chunk-RNDHNRSX.js";
@@ -196,4 +196,4 @@ export {
196
196
  loadUsageEvents,
197
197
  rollupByModel
198
198
  };
199
- //# sourceMappingURL=chunk-XCFR2LV4.js.map
199
+ //# sourceMappingURL=chunk-47624RRN.js.map
@@ -2627,7 +2627,7 @@ function setDefaultRegistry(registry) {
2627
2627
  }
2628
2628
  async function reloadDefaultRegistry() {
2629
2629
  globalRegistry = buildDefaultRegistry();
2630
- const { resetGlobalRegistry } = await import("./unified-registry-JHSNXTBN.js");
2630
+ const { resetGlobalRegistry } = await import("./unified-registry-5IIFYGBI.js");
2631
2631
  resetGlobalRegistry();
2632
2632
  return globalRegistry;
2633
2633
  }
@@ -6095,7 +6095,7 @@ function warnIfGatewayCostUndeclared(arm, logger14, env = process.env) {
6095
6095
  const gap = gatewayCostGap(arm, env);
6096
6096
  if (gap === void 0) return;
6097
6097
  logger14.warn(
6098
- `Gateway cost for ${arm} is ${gap}: set ${GATEWAY_COST_ENV}=free|local|priced[:<in>,<out>] (or ${arm.slice("api:".length)}=<decl>); the task-class cost ceiling excludes this gateway until declared`,
6098
+ `Gateway cost for ${arm} is ${gap}: set ${GATEWAY_COST_ENV}=free|local|priced[:<in>,<out>] (or ${arm.slice("api:".length)}=<decl>); the task-class cost ceiling and the per-task budget exclude this gateway until declared`,
6099
6099
  { arm, env: GATEWAY_COST_ENV, gap }
6100
6100
  );
6101
6101
  }
@@ -6121,6 +6121,15 @@ function estimateArmCostUsd(arm, inputTokens, outputTokens, env = process.env) {
6121
6121
  }
6122
6122
  return computeTokenCost({ input: inputTokens, output: outputTokens }, rates).costUsd;
6123
6123
  }
6124
+ function estimateBudgetArmCostUsd(arm, inputTokens, outputTokens, env = process.env) {
6125
+ if (isGatewayArmId(arm)) return estimateArmCostUsd(arm, inputTokens, outputTokens, env);
6126
+ return estimateCost(routingArmDisplaySlot(arm), inputTokens, outputTokens);
6127
+ }
6128
+ function describeUnpricedArm(arm, env = process.env) {
6129
+ const gap = gatewayCostGap(arm, env);
6130
+ if (gap !== void 0) return `gateway cost ${gap}`;
6131
+ return `gateway cost priced at registry rates, but ${routingArmDisplaySlot(arm)} has no registry pricing`;
6132
+ }
6124
6133
 
6125
6134
  // src/cli-adapters/budget-router.ts
6126
6135
  var logger4 = createLogger({ component: "budget-router" });
@@ -6258,11 +6267,13 @@ var BudgetRouter = class {
6258
6267
  const estimatedInputTokens = estimateTokens2(task.content);
6259
6268
  const estimatedOutputTokens = task.maxTokens ?? estimatedInputTokens * 2;
6260
6269
  const estimatedTokens = estimatedInputTokens + estimatedOutputTokens;
6261
- const adapter = this.selectAdapterWithinBudget(budget, estimatedTokens);
6262
- const estimatedCostUsd = adapter ? estimateCost(adapter.name, estimatedInputTokens, estimatedOutputTokens) : 0;
6263
- const estimatedLatencyMs = adapter === null ? void 0 : latencyOf(routingArmDisplaySlot(adapter.name));
6270
+ const { selected, unpricedArms } = this.selectAdapterWithinBudget(budget, estimatedTokens);
6271
+ const adapter = selected === null ? null : selected.adapter;
6272
+ const armCostUsd = selected === null ? void 0 : estimateBudgetArmCostUsd(selected.arm, estimatedInputTokens, estimatedOutputTokens);
6273
+ const estimatedCostUsd = armCostUsd ?? 0;
6274
+ const estimatedLatencyMs = selected === null ? void 0 : latencyOf(routingArmDisplaySlot(selected.arm));
6264
6275
  const currentBudget = this.getSessionBudget();
6265
- const withinBudget = adapter !== null && this.checkConstraints(budget, estimatedTokens, estimatedCostUsd);
6276
+ const withinBudget = armCostUsd !== void 0 && this.checkConstraints(budget, estimatedTokens, estimatedCostUsd);
6266
6277
  const warnings = generateBudgetWarnings(
6267
6278
  currentBudget,
6268
6279
  estimatedTokens,
@@ -6276,6 +6287,7 @@ var BudgetRouter = class {
6276
6287
  estimatedCostUsd,
6277
6288
  estimatedTokens,
6278
6289
  ...estimatedLatencyMs !== void 0 ? { estimatedLatencyMs } : {},
6290
+ ...unpricedArms.length > 0 ? { unpricedArms } : {},
6279
6291
  warnings,
6280
6292
  projectedBudget
6281
6293
  };
@@ -6442,19 +6454,29 @@ var BudgetRouter = class {
6442
6454
  const capB = DEFAULT_CAPABILITIES[routingArmDisplaySlot(b[0])];
6443
6455
  return capB.cost - capA.cost;
6444
6456
  });
6445
- for (const [name, adapter] of sortedAdapters) {
6446
- const slot = routingArmDisplaySlot(name);
6447
- const estimatedCost = estimateCost(slot, estimatedTokens / 2, estimatedTokens / 2);
6448
- const caps = DEFAULT_CAPABILITIES[slot];
6449
- const withinTokenBudget = budget.maxTokens === void 0 || estimatedTokens <= budget.maxTokens;
6450
- const withinCostBudget = budget.maxCostUsd === void 0 || estimatedCost <= budget.maxCostUsd;
6451
- const withinContextWindow = estimatedTokens <= caps.contextWindow;
6452
- const withinLatencyBudget = budget.maxLatencyMs === void 0 || latencyOf(slot) === void 0 || latencyOf(slot) <= budget.maxLatencyMs;
6453
- if (withinTokenBudget && withinCostBudget && withinContextWindow && withinLatencyBudget) {
6454
- return adapter;
6457
+ const unpricedArms = [];
6458
+ for (const [arm, adapter] of sortedAdapters) {
6459
+ const estimatedCost = estimateBudgetArmCostUsd(arm, estimatedTokens / 2, estimatedTokens / 2);
6460
+ if (estimatedCost === void 0) {
6461
+ const reason = describeUnpricedArm(arm);
6462
+ logger4.warn(`Budget: ${reason} \u2014 not admitting ${arm} (fail-closed)`, { arm, reason });
6463
+ unpricedArms.push({ arm, reason });
6464
+ continue;
6465
+ }
6466
+ if (this.admitsCandidate(budget, estimatedTokens, routingArmDisplaySlot(arm), estimatedCost)) {
6467
+ return { selected: { arm, adapter }, unpricedArms };
6455
6468
  }
6456
6469
  }
6457
- return null;
6470
+ return { selected: null, unpricedArms };
6471
+ }
6472
+ /** The four per-candidate admission checks of `selectAdapterWithinBudget`. */
6473
+ admitsCandidate(budget, estimatedTokens, slot, estimatedCost) {
6474
+ const caps = DEFAULT_CAPABILITIES[slot];
6475
+ const withinTokenBudget = budget.maxTokens === void 0 || estimatedTokens <= budget.maxTokens;
6476
+ const withinCostBudget = budget.maxCostUsd === void 0 || estimatedCost <= budget.maxCostUsd;
6477
+ const withinContextWindow = estimatedTokens <= caps.contextWindow;
6478
+ const withinLatencyBudget = budget.maxLatencyMs === void 0 || latencyOf(slot) === void 0 || latencyOf(slot) <= budget.maxLatencyMs;
6479
+ return withinTokenBudget && withinCostBudget && withinContextWindow && withinLatencyBudget;
6458
6480
  }
6459
6481
  checkConstraints(budget, estimatedTokens, estimatedCostUsd) {
6460
6482
  const currentBudget = this.getSessionBudget();
@@ -15627,7 +15649,7 @@ var CompositeRouter = class _CompositeRouter {
15627
15649
  */
15628
15650
  async consultUnifiedContext(task) {
15629
15651
  try {
15630
- const { getContextForTask, inferTaskCategory } = await import("./context-retriever-42P4NR37.js");
15652
+ const { getContextForTask, inferTaskCategory } = await import("./context-retriever-5BL34V6Y.js");
15631
15653
  const ctx = await getContextForTask({
15632
15654
  task: task.content,
15633
15655
  category: inferTaskCategory(task.content),
@@ -17242,4 +17264,4 @@ export {
17242
17264
  AgentCapability,
17243
17265
  OrchestratorError
17244
17266
  };
17245
- //# sourceMappingURL=chunk-UNYUCKCA.js.map
17267
+ //# sourceMappingURL=chunk-4PWDDMLH.js.map