nexus-agents 12.5.0 → 12.6.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 (137) hide show
  1. package/dist/{ast-rule-runner-6QQRHBNT.js → ast-rule-runner-XEQ5VAVV.js} +5 -5
  2. package/dist/{child-mcp-config-XGSBBDPD.js → child-mcp-config-I2OAUNME.js} +4 -4
  3. package/dist/{chunk-7G6I4ZFK.js → chunk-2MF4NNPO.js} +8 -8
  4. package/dist/{chunk-ZKWBLGZN.js → chunk-3BSLRRPJ.js} +235 -144
  5. package/dist/chunk-3BSLRRPJ.js.map +1 -0
  6. package/dist/{chunk-D5CIBGPB.js → chunk-6WWR6LYI.js} +3 -3
  7. package/dist/{chunk-XYDGLMOO.js → chunk-7DTZMHL7.js} +3 -3
  8. package/dist/{chunk-53EH3IYI.js → chunk-BI7LI47F.js} +9 -6
  9. package/dist/chunk-BI7LI47F.js.map +1 -0
  10. package/dist/{chunk-3TETLWLB.js → chunk-CQX276YP.js} +4 -4
  11. package/dist/{chunk-2RC6VK33.js → chunk-GIQWYFPY.js} +56 -36
  12. package/dist/chunk-GIQWYFPY.js.map +1 -0
  13. package/dist/{chunk-623SVONB.js → chunk-I3J4CPNU.js} +4 -4
  14. package/dist/{chunk-5KVV2YOI.js → chunk-IIU4MHGC.js} +40 -14
  15. package/dist/chunk-IIU4MHGC.js.map +1 -0
  16. package/dist/{chunk-47X2J6KX.js → chunk-J72TWH3S.js} +2 -2
  17. package/dist/{chunk-F7EWO7SS.js → chunk-JRWSE2MH.js} +2 -2
  18. package/dist/{chunk-MOLTWE32.js → chunk-KSJ43GHQ.js} +4 -3
  19. package/dist/chunk-KSJ43GHQ.js.map +1 -0
  20. package/dist/{chunk-XIKYDLXZ.js → chunk-KW5INM6Y.js} +2 -2
  21. package/dist/{chunk-C76RWFYD.js → chunk-L2YUWHLO.js} +10 -10
  22. package/dist/{chunk-2QFRLPVG.js → chunk-L73EN5BY.js} +7 -7
  23. package/dist/{chunk-DBPWDYNB.js → chunk-LLYA4RZQ.js} +2 -2
  24. package/dist/{chunk-5FBYXUO2.js → chunk-LUQ5DQZF.js} +2 -2
  25. package/dist/{chunk-DVFIL66Y.js → chunk-MTW6GDCJ.js} +4 -4
  26. package/dist/{chunk-7GAUB763.js → chunk-NMIAGVWS.js} +2 -2
  27. package/dist/{chunk-L2XP2P6Q.js → chunk-OOJD457B.js} +2 -2
  28. package/dist/{chunk-HDPHH44Y.js → chunk-OZ4MJ37G.js} +3 -3
  29. package/dist/{chunk-AYRH643O.js → chunk-PE42IZWH.js} +5 -5
  30. package/dist/{chunk-OFNVIVCB.js → chunk-PPGUFPJQ.js} +5 -5
  31. package/dist/{chunk-GADIDZYS.js → chunk-R432XO4C.js} +2 -2
  32. package/dist/{chunk-26TQL4RG.js → chunk-R7Y7BBG5.js} +3 -3
  33. package/dist/{chunk-WPIFGEHN.js → chunk-SET4R6QZ.js} +4 -4
  34. package/dist/{chunk-HYEOHMFY.js → chunk-SGHPOXYZ.js} +2 -2
  35. package/dist/{chunk-LLO7ZOAY.js → chunk-UJKT5T3J.js} +2 -2
  36. package/dist/{chunk-LXN76GF5.js → chunk-VVPF6HHD.js} +4 -4
  37. package/dist/{chunk-EPQRMZ4Y.js → chunk-WDOWAWVR.js} +4 -4
  38. package/dist/{chunk-VKOHRN67.js → chunk-WMEV4263.js} +36 -36
  39. package/dist/{chunk-UTE2PCOS.js → chunk-YTXSARQ3.js} +2 -2
  40. package/dist/{chunk-VF6BUZLS.js → chunk-ZWWPRNNJ.js} +2 -2
  41. package/dist/{cli-circuit-breaker-YMNSN2GN.js → cli-circuit-breaker-AH7J5ASH.js} +5 -5
  42. package/dist/{cli-readiness-G4JHCTUS.js → cli-readiness-4XOIA7HB.js} +9 -9
  43. package/dist/{cli-server-gateway-BXUM3I6Z.js → cli-server-gateway-CZKAGL44.js} +14 -14
  44. package/dist/cli.js +45 -45
  45. package/dist/{composite-router-AH4SEXFC.js → composite-router-OJIITGKG.js} +4 -4
  46. package/dist/{consensus-vote-VGC7J2FP.js → consensus-vote-MNPLBGXT.js} +17 -17
  47. package/dist/{context-retriever-TLEEMPE5.js → context-retriever-P4WAQWKW.js} +10 -10
  48. package/dist/{doctor-deep-7YFZ2DR6.js → doctor-deep-WZXW4DLJ.js} +5 -5
  49. package/dist/{doctor-gateway-report-M6TEEHQ6.js → doctor-gateway-report-IF2LA3UW.js} +7 -7
  50. package/dist/{doctor-live-LQZWL5NA.js → doctor-live-BKDDUXO7.js} +14 -14
  51. package/dist/{expert-bridge-ALRWVSSI.js → expert-bridge-OW4PM4ZT.js} +6 -6
  52. package/dist/{factory-ERJ5N6KH.js → factory-6YIROBGX.js} +7 -7
  53. package/dist/{factory-4HF6KCS2.js → factory-JJIJMMSM.js} +13 -13
  54. package/dist/{gemini-adapter-SYJ672KC.js → gemini-adapter-QOKHQPOE.js} +8 -8
  55. package/dist/{improvement-review-DYFME4BU.js → improvement-review-6NRVWYAE.js} +6 -6
  56. package/dist/index.d.ts +17 -6
  57. package/dist/index.js +27 -27
  58. package/dist/{init-opencode-AACQCIWB.js → init-opencode-LJ7257CE.js} +6 -6
  59. package/dist/{issue-triage-L43RYWHF.js → issue-triage-OKLIMR7X.js} +7 -7
  60. package/dist/{model-config-helpers-XSFPSIU4.js → model-config-helpers-76F52NYN.js} +3 -3
  61. package/dist/{openai-compat-adapter-3GXAUQHR.js → openai-compat-adapter-V76U3PUN.js} +6 -6
  62. package/dist/{pr-reviewer-helpers-AGQQ4TQR.js → pr-reviewer-helpers-IOPD6IFE.js} +5 -5
  63. package/dist/{registry-command-DX3QYFW2.js → registry-command-BIA6EFOS.js} +2 -2
  64. package/dist/{repo-security-plan-K63AG6CZ.js → repo-security-plan-O6V5DZXV.js} +4 -4
  65. package/dist/{research-helpers-synthesize-IBLF6E3G.js → research-helpers-synthesize-3PT4X3BX.js} +6 -6
  66. package/dist/{routing-memory-VABGC4UO.js → routing-memory-A6HRDTWW.js} +4 -4
  67. package/dist/{session-memory-IOCGYRWZ.js → session-memory-WPVNRUJX.js} +5 -5
  68. package/dist/{setup-config-NYWUM63T.js → setup-config-74NQ2KYK.js} +5 -5
  69. package/dist/{setup-custom-api-UHKMPXR4.js → setup-custom-api-22PDSWHY.js} +5 -5
  70. package/dist/{tool-memory-VY5WCDXL.js → tool-memory-G2Z5TEOY.js} +7 -7
  71. package/dist/{unified-registry-PMXXPV6Z.js → unified-registry-BQXEZKHW.js} +13 -13
  72. package/dist/{weather-report-KFSIUHPD.js → weather-report-DROJA42L.js} +4 -4
  73. package/package.json +1 -1
  74. package/dist/chunk-2RC6VK33.js.map +0 -1
  75. package/dist/chunk-53EH3IYI.js.map +0 -1
  76. package/dist/chunk-5KVV2YOI.js.map +0 -1
  77. package/dist/chunk-MOLTWE32.js.map +0 -1
  78. package/dist/chunk-ZKWBLGZN.js.map +0 -1
  79. /package/dist/{ast-rule-runner-6QQRHBNT.js.map → ast-rule-runner-XEQ5VAVV.js.map} +0 -0
  80. /package/dist/{child-mcp-config-XGSBBDPD.js.map → child-mcp-config-I2OAUNME.js.map} +0 -0
  81. /package/dist/{chunk-7G6I4ZFK.js.map → chunk-2MF4NNPO.js.map} +0 -0
  82. /package/dist/{chunk-D5CIBGPB.js.map → chunk-6WWR6LYI.js.map} +0 -0
  83. /package/dist/{chunk-XYDGLMOO.js.map → chunk-7DTZMHL7.js.map} +0 -0
  84. /package/dist/{chunk-3TETLWLB.js.map → chunk-CQX276YP.js.map} +0 -0
  85. /package/dist/{chunk-623SVONB.js.map → chunk-I3J4CPNU.js.map} +0 -0
  86. /package/dist/{chunk-47X2J6KX.js.map → chunk-J72TWH3S.js.map} +0 -0
  87. /package/dist/{chunk-F7EWO7SS.js.map → chunk-JRWSE2MH.js.map} +0 -0
  88. /package/dist/{chunk-XIKYDLXZ.js.map → chunk-KW5INM6Y.js.map} +0 -0
  89. /package/dist/{chunk-C76RWFYD.js.map → chunk-L2YUWHLO.js.map} +0 -0
  90. /package/dist/{chunk-2QFRLPVG.js.map → chunk-L73EN5BY.js.map} +0 -0
  91. /package/dist/{chunk-DBPWDYNB.js.map → chunk-LLYA4RZQ.js.map} +0 -0
  92. /package/dist/{chunk-5FBYXUO2.js.map → chunk-LUQ5DQZF.js.map} +0 -0
  93. /package/dist/{chunk-DVFIL66Y.js.map → chunk-MTW6GDCJ.js.map} +0 -0
  94. /package/dist/{chunk-7GAUB763.js.map → chunk-NMIAGVWS.js.map} +0 -0
  95. /package/dist/{chunk-L2XP2P6Q.js.map → chunk-OOJD457B.js.map} +0 -0
  96. /package/dist/{chunk-HDPHH44Y.js.map → chunk-OZ4MJ37G.js.map} +0 -0
  97. /package/dist/{chunk-AYRH643O.js.map → chunk-PE42IZWH.js.map} +0 -0
  98. /package/dist/{chunk-OFNVIVCB.js.map → chunk-PPGUFPJQ.js.map} +0 -0
  99. /package/dist/{chunk-GADIDZYS.js.map → chunk-R432XO4C.js.map} +0 -0
  100. /package/dist/{chunk-26TQL4RG.js.map → chunk-R7Y7BBG5.js.map} +0 -0
  101. /package/dist/{chunk-WPIFGEHN.js.map → chunk-SET4R6QZ.js.map} +0 -0
  102. /package/dist/{chunk-HYEOHMFY.js.map → chunk-SGHPOXYZ.js.map} +0 -0
  103. /package/dist/{chunk-LLO7ZOAY.js.map → chunk-UJKT5T3J.js.map} +0 -0
  104. /package/dist/{chunk-LXN76GF5.js.map → chunk-VVPF6HHD.js.map} +0 -0
  105. /package/dist/{chunk-EPQRMZ4Y.js.map → chunk-WDOWAWVR.js.map} +0 -0
  106. /package/dist/{chunk-VKOHRN67.js.map → chunk-WMEV4263.js.map} +0 -0
  107. /package/dist/{chunk-UTE2PCOS.js.map → chunk-YTXSARQ3.js.map} +0 -0
  108. /package/dist/{chunk-VF6BUZLS.js.map → chunk-ZWWPRNNJ.js.map} +0 -0
  109. /package/dist/{cli-circuit-breaker-YMNSN2GN.js.map → cli-circuit-breaker-AH7J5ASH.js.map} +0 -0
  110. /package/dist/{cli-readiness-G4JHCTUS.js.map → cli-readiness-4XOIA7HB.js.map} +0 -0
  111. /package/dist/{cli-server-gateway-BXUM3I6Z.js.map → cli-server-gateway-CZKAGL44.js.map} +0 -0
  112. /package/dist/{composite-router-AH4SEXFC.js.map → composite-router-OJIITGKG.js.map} +0 -0
  113. /package/dist/{consensus-vote-VGC7J2FP.js.map → consensus-vote-MNPLBGXT.js.map} +0 -0
  114. /package/dist/{context-retriever-TLEEMPE5.js.map → context-retriever-P4WAQWKW.js.map} +0 -0
  115. /package/dist/{doctor-deep-7YFZ2DR6.js.map → doctor-deep-WZXW4DLJ.js.map} +0 -0
  116. /package/dist/{doctor-gateway-report-M6TEEHQ6.js.map → doctor-gateway-report-IF2LA3UW.js.map} +0 -0
  117. /package/dist/{doctor-live-LQZWL5NA.js.map → doctor-live-BKDDUXO7.js.map} +0 -0
  118. /package/dist/{expert-bridge-ALRWVSSI.js.map → expert-bridge-OW4PM4ZT.js.map} +0 -0
  119. /package/dist/{factory-4HF6KCS2.js.map → factory-6YIROBGX.js.map} +0 -0
  120. /package/dist/{factory-ERJ5N6KH.js.map → factory-JJIJMMSM.js.map} +0 -0
  121. /package/dist/{gemini-adapter-SYJ672KC.js.map → gemini-adapter-QOKHQPOE.js.map} +0 -0
  122. /package/dist/{improvement-review-DYFME4BU.js.map → improvement-review-6NRVWYAE.js.map} +0 -0
  123. /package/dist/{init-opencode-AACQCIWB.js.map → init-opencode-LJ7257CE.js.map} +0 -0
  124. /package/dist/{issue-triage-L43RYWHF.js.map → issue-triage-OKLIMR7X.js.map} +0 -0
  125. /package/dist/{model-config-helpers-XSFPSIU4.js.map → model-config-helpers-76F52NYN.js.map} +0 -0
  126. /package/dist/{openai-compat-adapter-3GXAUQHR.js.map → openai-compat-adapter-V76U3PUN.js.map} +0 -0
  127. /package/dist/{pr-reviewer-helpers-AGQQ4TQR.js.map → pr-reviewer-helpers-IOPD6IFE.js.map} +0 -0
  128. /package/dist/{registry-command-DX3QYFW2.js.map → registry-command-BIA6EFOS.js.map} +0 -0
  129. /package/dist/{repo-security-plan-K63AG6CZ.js.map → repo-security-plan-O6V5DZXV.js.map} +0 -0
  130. /package/dist/{research-helpers-synthesize-IBLF6E3G.js.map → research-helpers-synthesize-3PT4X3BX.js.map} +0 -0
  131. /package/dist/{routing-memory-VABGC4UO.js.map → routing-memory-A6HRDTWW.js.map} +0 -0
  132. /package/dist/{session-memory-IOCGYRWZ.js.map → session-memory-WPVNRUJX.js.map} +0 -0
  133. /package/dist/{setup-config-NYWUM63T.js.map → setup-config-74NQ2KYK.js.map} +0 -0
  134. /package/dist/{setup-custom-api-UHKMPXR4.js.map → setup-custom-api-22PDSWHY.js.map} +0 -0
  135. /package/dist/{tool-memory-VY5WCDXL.js.map → tool-memory-G2Z5TEOY.js.map} +0 -0
  136. /package/dist/{unified-registry-PMXXPV6Z.js.map → unified-registry-BQXEZKHW.js.map} +0 -0
  137. /package/dist/{weather-report-KFSIUHPD.js.map → weather-report-DROJA42L.js.map} +0 -0
@@ -9,11 +9,11 @@ import {
9
9
  getBuiltInAstRulesPath,
10
10
  loadRules,
11
11
  runAstQaRules
12
- } from "./chunk-XIKYDLXZ.js";
13
- import "./chunk-ZKWBLGZN.js";
12
+ } from "./chunk-KW5INM6Y.js";
13
+ import "./chunk-3BSLRRPJ.js";
14
14
  import "./chunk-XBEKMUTO.js";
15
- import "./chunk-7GAUB763.js";
16
- import "./chunk-VF6BUZLS.js";
15
+ import "./chunk-NMIAGVWS.js";
16
+ import "./chunk-ZWWPRNNJ.js";
17
17
  import "./chunk-G3M3UVAW.js";
18
18
  import "./chunk-POLWDIVY.js";
19
19
  import "./chunk-RM3RFAKU.js";
@@ -34,4 +34,4 @@ export {
34
34
  loadRules,
35
35
  runAstQaRules
36
36
  };
37
- //# sourceMappingURL=ast-rule-runner-6QQRHBNT.js.map
37
+ //# sourceMappingURL=ast-rule-runner-XEQ5VAVV.js.map
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  nexusMkdtempSync
3
3
  } from "./chunk-EBKVMMWA.js";
4
- import "./chunk-ZKWBLGZN.js";
4
+ import "./chunk-3BSLRRPJ.js";
5
5
  import "./chunk-XBEKMUTO.js";
6
- import "./chunk-7GAUB763.js";
7
- import "./chunk-VF6BUZLS.js";
6
+ import "./chunk-NMIAGVWS.js";
7
+ import "./chunk-ZWWPRNNJ.js";
8
8
  import "./chunk-G3M3UVAW.js";
9
9
  import "./chunk-POLWDIVY.js";
10
10
  import {
@@ -81,4 +81,4 @@ async function generateMcpConfig(options) {
81
81
  export {
82
82
  generateMcpConfig
83
83
  };
84
- //# sourceMappingURL=child-mcp-config-XGSBBDPD.js.map
84
+ //# sourceMappingURL=child-mcp-config-I2OAUNME.js.map
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  ensureGatewayDiscovered,
3
3
  gatewayDiscoveryGeneration
4
- } from "./chunk-623SVONB.js";
4
+ } from "./chunk-I3J4CPNU.js";
5
5
  import {
6
6
  isRateLimitText
7
- } from "./chunk-ZKWBLGZN.js";
7
+ } from "./chunk-3BSLRRPJ.js";
8
8
  import {
9
9
  resolveCliSlot
10
- } from "./chunk-7GAUB763.js";
10
+ } from "./chunk-NMIAGVWS.js";
11
11
  import {
12
12
  createLogger,
13
13
  getTimeProvider
@@ -82,7 +82,7 @@ async function dispatchWithMcpConfig(router, content, expertType, start, options
82
82
  let config;
83
83
  if (requestedAccessModeOf(options) === "default") {
84
84
  try {
85
- const { generateMcpConfig } = await import("./child-mcp-config-XGSBBDPD.js");
85
+ const { generateMcpConfig } = await import("./child-mcp-config-I2OAUNME.js");
86
86
  config = await generateMcpConfig();
87
87
  activeMcpConfigs.add(config);
88
88
  } catch (error) {
@@ -171,8 +171,8 @@ async function getRouter() {
171
171
  }
172
172
  if (cachedRouter !== null) return cachedRouter;
173
173
  routerInitPromise ??= (async () => {
174
- const { createAllAdapters } = await import("./factory-4HF6KCS2.js");
175
- const { createCompositeRouter } = await import("./composite-router-AH4SEXFC.js");
174
+ const { createAllAdapters } = await import("./factory-JJIJMMSM.js");
175
+ const { createCompositeRouter } = await import("./composite-router-OJIITGKG.js");
176
176
  const adapters = createAllAdapters();
177
177
  const superseded = generation !== routerGeneration;
178
178
  if (adapters.size === 0) {
@@ -183,7 +183,7 @@ async function getRouter() {
183
183
  if (superseded) return router;
184
184
  cachedRouter = router;
185
185
  try {
186
- const { createCliCircuitBreakerIntegration } = await import("./cli-circuit-breaker-YMNSN2GN.js");
186
+ const { createCliCircuitBreakerIntegration } = await import("./cli-circuit-breaker-AH7J5ASH.js");
187
187
  cachedCircuitBreaker = createCliCircuitBreakerIntegration([...adapters.values()]);
188
188
  } catch (error) {
189
189
  const msg = error instanceof Error ? error.message : String(error);
@@ -324,4 +324,4 @@ export {
324
324
  tokenSplitFromUsage,
325
325
  executeExpert
326
326
  };
327
- //# sourceMappingURL=chunk-7G6I4ZFK.js.map
327
+ //# sourceMappingURL=chunk-2MF4NNPO.js.map
@@ -15,7 +15,7 @@ import {
15
15
  lookupInTreeCapability,
16
16
  resolveCliCostPer1M,
17
17
  resolveCliModelName
18
- } from "./chunk-7GAUB763.js";
18
+ } from "./chunk-NMIAGVWS.js";
19
19
  import {
20
20
  DEFAULT_MODEL_PER_CLI,
21
21
  buildInTreeEntries,
@@ -26,7 +26,7 @@ import {
26
26
  pricingSourceOf,
27
27
  resolveModelIdentitySync,
28
28
  unpricedCliCostPer1M
29
- } from "./chunk-VF6BUZLS.js";
29
+ } from "./chunk-ZWWPRNNJ.js";
30
30
  import {
31
31
  ensureLearningDir,
32
32
  getDecisionCostFile,
@@ -3584,93 +3584,41 @@ function estimateTokens(text) {
3584
3584
  return getTokenEstimator().estimateText(text);
3585
3585
  }
3586
3586
 
3587
- // src/cli-adapters/types-capability.ts
3588
- var CLI_VERSION_REQUIREMENTS = {
3589
- claude: {
3590
- minimum: "2.0.0",
3591
- recommended: "2.0.76",
3592
- breaking: []
3593
- },
3594
- // #4346: the `gemini` arm now runs the Antigravity CLI (`agy`), which
3595
- // replaced the retired standalone gemini CLI. Versions are agy's, not
3596
- // gemini's — an installed gemini 0.5x would fail the minimum, which is
3597
- // correct: it cannot serve.
3598
- gemini: {
3599
- minimum: "1.0.0",
3600
- recommended: "1.1.9",
3601
- breaking: []
3602
- },
3603
- codex: {
3604
- minimum: "0.70.0",
3605
- recommended: "0.77.0",
3606
- breaking: []
3607
- },
3608
- opencode: {
3609
- minimum: "0.1.0",
3610
- recommended: "0.1.0",
3611
- breaking: []
3587
+ // src/adapters/abort-utils.ts
3588
+ var AbortError = class extends Error {
3589
+ name = "AbortError";
3590
+ constructor(message = "Operation aborted") {
3591
+ super(message);
3612
3592
  }
3613
3593
  };
3614
- var DEFAULT_CAPABILITIES = buildCliCapabilityProfiles();
3615
-
3616
- // src/learning/routing-decision-mappers.ts
3617
- function recordedArm(armId) {
3618
- return routingArmCliSlot(armId) ?? armId;
3594
+ function throwIfAborted(signal, message) {
3595
+ if (signal?.aborted === true) throw new AbortError(message);
3619
3596
  }
3620
- function mapFeedbackRoutingDecision(decision, context) {
3621
- return {
3622
- id: context.id,
3623
- traceId: context.traceId,
3624
- timestamp: context.timestamp,
3625
- routerType: context.routerType,
3626
- routerTypeMeasured: context.routerTypeMeasured,
3627
- query: context.query ?? "",
3628
- selectedModel: recordedArm(decision.cliName),
3629
- confidence: decision.confidence,
3630
- selectedTier: routingArmCliSlot(decision.cliName) === void 0 ? void 0 : decision.preferenceTier
3631
- };
3597
+ function isCallerCancelled(error) {
3598
+ return error.cause instanceof AbortError;
3632
3599
  }
3633
- function mapObserverRoutingDecision(decision, context) {
3634
- return {
3635
- timestamp: context.timestamp,
3636
- taskId: context.taskId,
3637
- taskDescription: context.query.length > 100 ? context.query.substring(0, 100) + "..." : context.query,
3638
- selectedCli: recordedArm(decision.cliName),
3639
- confidence: decision.confidence,
3640
- reason: decision.reason,
3641
- alternatives: decision.alternatives.map(recordedArm),
3642
- stagesExecuted: decision.stagesExecuted,
3643
- decisionTimeMs: decision.decisionTimeMs,
3644
- withinBudget: decision.withinBudget,
3645
- topsisScore: decision.topsisScore,
3646
- ucbScore: decision.ucbScore
3647
- };
3600
+ function isTimeoutAbortReason(reason) {
3601
+ return typeof reason === "object" && reason !== null && reason.name === "TimeoutError";
3648
3602
  }
3649
- function mapStoredRoutingDecision(decision, context) {
3650
- const profile = decision.taskProfile;
3651
- return {
3652
- id: context.id,
3653
- traceId: context.traceId,
3654
- timestamp: context.timestamp,
3655
- routerType: context.routerType,
3656
- routerTypeMeasured: context.routerTypeMeasured,
3657
- selectedModel: recordedArm(decision.cliName),
3658
- alternativeModels: decision.alternatives.map(recordedArm),
3659
- confidence: decision.confidence,
3660
- reason: decision.reason,
3661
- taskProfile: {
3662
- contextRequired: profile.contextRequired,
3663
- reasoningComplexity: profile.reasoningComplexity,
3664
- codeGeneration: profile.codeGeneration,
3665
- multimodal: profile.multimodal,
3666
- parallelizable: profile.parallelizable,
3667
- budgetSensitive: profile.budgetSensitive,
3668
- taskType: profile.taskType,
3669
- ...profile.detectedProductType !== void 0 && {
3670
- detectedProductType: profile.detectedProductType
3603
+ function raceAbort(promise, signal) {
3604
+ if (signal === void 0) return promise;
3605
+ if (signal.aborted) return Promise.reject(new AbortError());
3606
+ return new Promise((resolve4, reject) => {
3607
+ const onAbort = () => {
3608
+ reject(new AbortError());
3609
+ };
3610
+ signal.addEventListener("abort", onAbort, { once: true });
3611
+ promise.then(
3612
+ (value) => {
3613
+ signal.removeEventListener("abort", onAbort);
3614
+ resolve4(value);
3615
+ },
3616
+ (error) => {
3617
+ signal.removeEventListener("abort", onAbort);
3618
+ reject(error instanceof Error ? error : new Error(String(error)));
3671
3619
  }
3672
- }
3673
- };
3620
+ );
3621
+ });
3674
3622
  }
3675
3623
 
3676
3624
  // src/cli-adapters/cli-error-helpers.ts
@@ -3831,43 +3779,6 @@ function getRateLimitStats() {
3831
3779
  return stats;
3832
3780
  }
3833
3781
 
3834
- // src/adapters/abort-utils.ts
3835
- var AbortError = class extends Error {
3836
- name = "AbortError";
3837
- constructor(message = "Operation aborted") {
3838
- super(message);
3839
- }
3840
- };
3841
- function throwIfAborted(signal, message) {
3842
- if (signal?.aborted === true) throw new AbortError(message);
3843
- }
3844
- function isCallerCancelled(error) {
3845
- return error.cause instanceof AbortError;
3846
- }
3847
- function isTimeoutAbortReason(reason) {
3848
- return typeof reason === "object" && reason !== null && reason.name === "TimeoutError";
3849
- }
3850
- function raceAbort(promise, signal) {
3851
- if (signal === void 0) return promise;
3852
- if (signal.aborted) return Promise.reject(new AbortError());
3853
- return new Promise((resolve4, reject) => {
3854
- const onAbort = () => {
3855
- reject(new AbortError());
3856
- };
3857
- signal.addEventListener("abort", onAbort, { once: true });
3858
- promise.then(
3859
- (value) => {
3860
- signal.removeEventListener("abort", onAbort);
3861
- resolve4(value);
3862
- },
3863
- (error) => {
3864
- signal.removeEventListener("abort", onAbort);
3865
- reject(error instanceof Error ? error : new Error(String(error)));
3866
- }
3867
- );
3868
- });
3869
- }
3870
-
3871
3782
  // src/cli-adapters/cli-error-helpers.ts
3872
3783
  var RETRYABLE_ERROR_CODES = /* @__PURE__ */ new Set([
3873
3784
  "TIMEOUT",
@@ -3909,6 +3820,34 @@ function createHostUnavailableCliError(message, cli) {
3909
3820
  function isHostUnavailableCliError(error) {
3910
3821
  return error.cause instanceof HostUnavailableError;
3911
3822
  }
3823
+ function boundedPreSpawnReason(reason) {
3824
+ switch (reason) {
3825
+ case "invalid-policy":
3826
+ case "invalid-deadline":
3827
+ case "expired-before-spawn":
3828
+ case "permit-consumed":
3829
+ return reason;
3830
+ default:
3831
+ return "invalid-policy";
3832
+ }
3833
+ }
3834
+ var NativePreSpawnRefusal = class extends Error {
3835
+ reason;
3836
+ constructor(reason) {
3837
+ const bounded = boundedPreSpawnReason(reason);
3838
+ super(`Native completion refused before spawn (${bounded})`);
3839
+ this.name = "NativePreSpawnRefusal";
3840
+ this.reason = bounded;
3841
+ Object.freeze(this);
3842
+ }
3843
+ };
3844
+ function createNativePreSpawnRefusal(reason, cli) {
3845
+ const cause = new NativePreSpawnRefusal(reason);
3846
+ return createCliError("EXECUTION_ERROR", cause.message, cli, cause);
3847
+ }
3848
+ function isNativePreSpawnRefusal(error) {
3849
+ return error.cause instanceof NativePreSpawnRefusal;
3850
+ }
3912
3851
  var CallerDeadlineAbortError = class extends Error {
3913
3852
  };
3914
3853
  function isCallerAbortCause(cause) {
@@ -3934,6 +3873,151 @@ function isCallerInputCliError(error) {
3934
3873
  return error.cause instanceof ValidationError;
3935
3874
  }
3936
3875
 
3876
+ // src/cli-adapters/native-execution-policy.ts
3877
+ var NATIVE_EXECUTION_POLICY = /* @__PURE__ */ Symbol("native-execution-policy");
3878
+ var issued = /* @__PURE__ */ new WeakMap();
3879
+ function hasIssuedNativeExecutionPolicy(options) {
3880
+ const policy = options[NATIVE_EXECUTION_POLICY];
3881
+ return policy !== void 0 && issued.has(policy);
3882
+ }
3883
+ function nativeExecutionBudget(policy, signal) {
3884
+ const state = typeof policy === "object" && policy !== null ? issued.get(policy) : void 0;
3885
+ if (state === void 0) return err({ reason: "invalid-policy" });
3886
+ const remaining = state.deadlineAt - getTimeProvider().now();
3887
+ if (remaining <= 0) return err({ reason: "expired-before-spawn" });
3888
+ const combined = signal === void 0 ? state.signal : AbortSignal.any([state.signal, signal]);
3889
+ if (combined.aborted) {
3890
+ return err({
3891
+ reason: isTimeoutAbortReason(combined.reason) ? "expired-before-spawn" : "cancelled-before-spawn"
3892
+ });
3893
+ }
3894
+ return ok({ timeoutMs: Math.ceil(remaining), signal: combined });
3895
+ }
3896
+ function nativeExecutionOptions(policy, signal) {
3897
+ const budget = nativeExecutionBudget(policy, signal);
3898
+ if (!budget.ok) return budget;
3899
+ return ok({
3900
+ ...budget.value,
3901
+ allowRetry: false,
3902
+ maxRetries: 0,
3903
+ [NATIVE_EXECUTION_POLICY]: policy
3904
+ });
3905
+ }
3906
+ function consumeNativeSpawnPermit(policy, signal) {
3907
+ const budget = nativeExecutionBudget(policy, signal);
3908
+ if (!budget.ok) return budget;
3909
+ const state = issued.get(policy);
3910
+ if (state === void 0) return err({ reason: "invalid-policy" });
3911
+ if (state.attempted) return err({ reason: "permit-consumed" });
3912
+ state.attempted = true;
3913
+ return budget;
3914
+ }
3915
+ function nativePolicyRefusalError(refusal, cli) {
3916
+ return refusal.reason === "cancelled-before-spawn" ? createCallerAbortCliError(void 0, "Caller cancelled before native spawn", cli) : createNativePreSpawnRefusal(refusal.reason, cli);
3917
+ }
3918
+ function resolveNativeSpawnOptions(options, cli, consume) {
3919
+ const policy = options[NATIVE_EXECUTION_POLICY];
3920
+ if (policy === void 0) {
3921
+ return options.signal?.aborted === true ? err(createCallerAbortCliError(options.signal.reason, "Aborted before spawn", cli)) : ok(options);
3922
+ }
3923
+ const budget = consume ? consumeNativeSpawnPermit(policy, options.signal) : nativeExecutionBudget(policy, options.signal);
3924
+ if (!budget.ok) return err(nativePolicyRefusalError(budget.error, cli));
3925
+ return ok({
3926
+ ...options,
3927
+ signal: budget.value.signal,
3928
+ timeoutMs: Math.min(options.timeoutMs, budget.value.timeoutMs)
3929
+ });
3930
+ }
3931
+
3932
+ // src/cli-adapters/types-capability.ts
3933
+ var CLI_VERSION_REQUIREMENTS = {
3934
+ claude: {
3935
+ minimum: "2.0.0",
3936
+ recommended: "2.0.76",
3937
+ breaking: []
3938
+ },
3939
+ // #4346: the `gemini` arm now runs the Antigravity CLI (`agy`), which
3940
+ // replaced the retired standalone gemini CLI. Versions are agy's, not
3941
+ // gemini's — an installed gemini 0.5x would fail the minimum, which is
3942
+ // correct: it cannot serve.
3943
+ gemini: {
3944
+ minimum: "1.0.0",
3945
+ recommended: "1.1.9",
3946
+ breaking: []
3947
+ },
3948
+ codex: {
3949
+ minimum: "0.70.0",
3950
+ recommended: "0.77.0",
3951
+ breaking: []
3952
+ },
3953
+ opencode: {
3954
+ minimum: "0.1.0",
3955
+ recommended: "0.1.0",
3956
+ breaking: []
3957
+ }
3958
+ };
3959
+ var DEFAULT_CAPABILITIES = buildCliCapabilityProfiles();
3960
+
3961
+ // src/learning/routing-decision-mappers.ts
3962
+ function recordedArm(armId) {
3963
+ return routingArmCliSlot(armId) ?? armId;
3964
+ }
3965
+ function mapFeedbackRoutingDecision(decision, context) {
3966
+ return {
3967
+ id: context.id,
3968
+ traceId: context.traceId,
3969
+ timestamp: context.timestamp,
3970
+ routerType: context.routerType,
3971
+ routerTypeMeasured: context.routerTypeMeasured,
3972
+ query: context.query ?? "",
3973
+ selectedModel: recordedArm(decision.cliName),
3974
+ confidence: decision.confidence,
3975
+ selectedTier: routingArmCliSlot(decision.cliName) === void 0 ? void 0 : decision.preferenceTier
3976
+ };
3977
+ }
3978
+ function mapObserverRoutingDecision(decision, context) {
3979
+ return {
3980
+ timestamp: context.timestamp,
3981
+ taskId: context.taskId,
3982
+ taskDescription: context.query.length > 100 ? context.query.substring(0, 100) + "..." : context.query,
3983
+ selectedCli: recordedArm(decision.cliName),
3984
+ confidence: decision.confidence,
3985
+ reason: decision.reason,
3986
+ alternatives: decision.alternatives.map(recordedArm),
3987
+ stagesExecuted: decision.stagesExecuted,
3988
+ decisionTimeMs: decision.decisionTimeMs,
3989
+ withinBudget: decision.withinBudget,
3990
+ topsisScore: decision.topsisScore,
3991
+ ucbScore: decision.ucbScore
3992
+ };
3993
+ }
3994
+ function mapStoredRoutingDecision(decision, context) {
3995
+ const profile = decision.taskProfile;
3996
+ return {
3997
+ id: context.id,
3998
+ traceId: context.traceId,
3999
+ timestamp: context.timestamp,
4000
+ routerType: context.routerType,
4001
+ routerTypeMeasured: context.routerTypeMeasured,
4002
+ selectedModel: recordedArm(decision.cliName),
4003
+ alternativeModels: decision.alternatives.map(recordedArm),
4004
+ confidence: decision.confidence,
4005
+ reason: decision.reason,
4006
+ taskProfile: {
4007
+ contextRequired: profile.contextRequired,
4008
+ reasoningComplexity: profile.reasoningComplexity,
4009
+ codeGeneration: profile.codeGeneration,
4010
+ multimodal: profile.multimodal,
4011
+ parallelizable: profile.parallelizable,
4012
+ budgetSensitive: profile.budgetSensitive,
4013
+ taskType: profile.taskType,
4014
+ ...profile.detectedProductType !== void 0 && {
4015
+ detectedProductType: profile.detectedProductType
4016
+ }
4017
+ }
4018
+ };
4019
+ }
4020
+
3937
4021
  // src/cli-adapters/access-mode.ts
3938
4022
  var RESTRICTED_MODES = {
3939
4023
  "read-only-analysis": { label: "read-only analysis", declaredBy: "enforcesReadOnlyAnalysis" },
@@ -4170,7 +4254,7 @@ function adapterReadiness(adapter, options) {
4170
4254
  const ceiling = resolveClassGuardMs("interactive");
4171
4255
  const requested = options.timeoutMs ?? ceiling;
4172
4256
  const timeoutMs = Number.isFinite(requested) && requested > 0 ? Math.min(requested, ceiling) : ceiling;
4173
- const flight = import("./cli-readiness-G4JHCTUS.js").then(({ probeServes }) => probeServes(adapter, timeoutMs)).finally(() => readinessFlights.delete(adapter));
4257
+ const flight = import("./cli-readiness-4XOIA7HB.js").then(({ probeServes }) => probeServes(adapter, timeoutMs)).finally(() => readinessFlights.delete(adapter));
4174
4258
  readinessFlights.set(adapter, flight);
4175
4259
  return flight;
4176
4260
  }
@@ -4180,7 +4264,7 @@ async function servesListedModel(adapter, modelId, cli) {
4180
4264
  const models = await adapter.listModels();
4181
4265
  if (models.length === 0) return "unknown";
4182
4266
  const requestedKey = canonicalModelKey(modelId);
4183
- const findCanonicalModel2 = cli === "codex" ? (await import("./model-config-helpers-XSFPSIU4.js")).findCanonicalModel : void 0;
4267
+ const findCanonicalModel2 = cli === "codex" ? (await import("./model-config-helpers-76F52NYN.js")).findCanonicalModel : void 0;
4184
4268
  const requestedEntry = requestedKey === null ? findCanonicalModel2?.("codex", modelId) : void 0;
4185
4269
  const listed = models.some((model) => {
4186
4270
  const listedEntry = findCanonicalModel2?.("codex", model.id);
@@ -5730,7 +5814,7 @@ var ModelToCliAdapter = class {
5730
5814
  }
5731
5815
  async execute(task, options) {
5732
5816
  const gatewayArm = this.gatewayArmField().gatewayArm;
5733
- const breaker = gatewayArm !== void 0 && this.modelAdapter.providerId === `cli-${this.name}` ? (await import("./cli-circuit-breaker-YMNSN2GN.js")).getDefaultCliCircuitBreakerRegistry().getArmBreaker(breakerKeys.forArm({ name: this.name, gatewayArm })) : void 0;
5817
+ const breaker = gatewayArm !== void 0 && this.modelAdapter.providerId === `cli-${this.name}` ? (await import("./cli-circuit-breaker-AH7J5ASH.js")).getDefaultCliCircuitBreakerRegistry().getArmBreaker(breakerKeys.forArm({ name: this.name, gatewayArm })) : void 0;
5734
5818
  const result = await this.modelAdapter.complete(this.toCompletionRequest(task, options));
5735
5819
  if (!result.ok) {
5736
5820
  const cliError = this.toCliError(result.error);
@@ -18081,7 +18165,7 @@ function applyDistillationSwitch(config) {
18081
18165
  }
18082
18166
  async function nativeAgyTierOptions(arm, adapter) {
18083
18167
  if (arm !== "gemini" || gatewayServedSlotOf(adapter) !== void 0) return {};
18084
- const { GeminiCliAdapter } = await import("./gemini-adapter-SYJ672KC.js");
18168
+ const { GeminiCliAdapter } = await import("./gemini-adapter-QOKHQPOE.js");
18085
18169
  if (!(cliBinaryAdapterOf(adapter) instanceof GeminiCliAdapter)) return {};
18086
18170
  return {
18087
18171
  liveModelIds: new Set(
@@ -18318,7 +18402,7 @@ var CompositeRouter = class _CompositeRouter {
18318
18402
  */
18319
18403
  async consultUnifiedContext(task) {
18320
18404
  try {
18321
- const { getContextForTask, inferTaskCategory } = await import("./context-retriever-TLEEMPE5.js");
18405
+ const { getContextForTask, inferTaskCategory } = await import("./context-retriever-P4WAQWKW.js");
18322
18406
  const ctx = await getContextForTask({
18323
18407
  task: task.content,
18324
18408
  category: inferTaskCategory(task.content),
@@ -19817,14 +19901,11 @@ export {
19817
19901
  toError,
19818
19902
  getErrorMessage,
19819
19903
  getFallbackChainForCategory,
19820
- CLI_VERSION_REQUIREMENTS,
19821
- DEFAULT_CAPABILITIES,
19822
- breakerKeys,
19823
- resolveAuthEvidence,
19824
- canonicalModelKey,
19825
- countDistinctModels,
19826
- UNRESOLVED_MODEL_ID,
19827
- assessPanelIndependence,
19904
+ AbortError,
19905
+ throwIfAborted,
19906
+ isCallerCancelled,
19907
+ isTimeoutAbortReason,
19908
+ raceAbort,
19828
19909
  isRateLimitText,
19829
19910
  isDurableCapacityText,
19830
19911
  isDurableCapacityError,
@@ -19833,25 +19914,35 @@ export {
19833
19914
  resolveRetryAfterMs,
19834
19915
  toRateLimitError,
19835
19916
  recordRateLimitEvent,
19836
- GEMINI_CLI_COMMAND,
19837
- isAuthFailureText,
19838
- authRemediation,
19839
- classifyExtractedError,
19840
- parseCliErrorEnvelope,
19841
- AbortError,
19842
- throwIfAborted,
19843
- isCallerCancelled,
19844
- isTimeoutAbortReason,
19845
- raceAbort,
19846
19917
  RETRYABLE_ERROR_CODES,
19847
19918
  isTimeoutText,
19848
19919
  createCliError,
19849
19920
  createCallerInputCliError,
19850
19921
  createHostUnavailableCliError,
19851
19922
  isHostUnavailableCliError,
19923
+ createNativePreSpawnRefusal,
19924
+ isNativePreSpawnRefusal,
19852
19925
  isCallerAbortError,
19853
19926
  createCallerAbortCliError,
19854
19927
  isCallerInputCliError,
19928
+ NATIVE_EXECUTION_POLICY,
19929
+ hasIssuedNativeExecutionPolicy,
19930
+ nativeExecutionOptions,
19931
+ nativePolicyRefusalError,
19932
+ resolveNativeSpawnOptions,
19933
+ CLI_VERSION_REQUIREMENTS,
19934
+ DEFAULT_CAPABILITIES,
19935
+ breakerKeys,
19936
+ resolveAuthEvidence,
19937
+ canonicalModelKey,
19938
+ countDistinctModels,
19939
+ UNRESOLVED_MODEL_ID,
19940
+ assessPanelIndependence,
19941
+ GEMINI_CLI_COMMAND,
19942
+ isAuthFailureText,
19943
+ authRemediation,
19944
+ classifyExtractedError,
19945
+ parseCliErrorEnvelope,
19855
19946
  OutcomeStore,
19856
19947
  getOutcomeStore,
19857
19948
  resetOutcomeStore,
@@ -20114,4 +20205,4 @@ export {
20114
20205
  AgentCapability,
20115
20206
  OrchestratorError
20116
20207
  };
20117
- //# sourceMappingURL=chunk-ZKWBLGZN.js.map
20208
+ //# sourceMappingURL=chunk-3BSLRRPJ.js.map