nexus-agents 9.2.0 → 9.4.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 (145) hide show
  1. package/dist/{ast-rule-runner-DFEUIC2E.js → ast-rule-runner-5U6TE6YJ.js} +3 -3
  2. package/dist/{child-mcp-config-ALJL5I7K.js → child-mcp-config-IR7LRMIK.js} +2 -2
  3. package/dist/{chunk-M43A5MDJ.js → chunk-2AN5NGCQ.js} +4 -4
  4. package/dist/{chunk-A5D7666X.js → chunk-2AW2VHMK.js} +2 -2
  5. package/dist/{chunk-42TS2JOS.js → chunk-6H4NUU7G.js} +5 -5
  6. package/dist/{chunk-JZSKEIQF.js → chunk-6WPXQTQY.js} +2 -2
  7. package/dist/{chunk-625YPLMG.js → chunk-6Z3MAHAC.js} +2 -2
  8. package/dist/{chunk-SU47CN4Q.js → chunk-7XJZTSHW.js} +120 -64
  9. package/dist/chunk-7XJZTSHW.js.map +1 -0
  10. package/dist/{chunk-ZNXWR6V6.js → chunk-AFAM6GK3.js} +7 -7
  11. package/dist/{chunk-WDSRUC3H.js → chunk-AI6LKFGU.js} +3 -3
  12. package/dist/{chunk-4ROIBRK5.js → chunk-AYBOQE2Y.js} +3 -3
  13. package/dist/chunk-AYBOQE2Y.js.map +1 -0
  14. package/dist/{chunk-DJ7QTY5J.js → chunk-C5WECFBR.js} +5 -5
  15. package/dist/{chunk-KJ46Q24G.js → chunk-DEQRRCHK.js} +2 -2
  16. package/dist/{chunk-XBWG4BJU.js → chunk-DG2UY5QU.js} +2 -2
  17. package/dist/{chunk-DYVYV7NZ.js → chunk-DYTB2XW2.js} +5 -5
  18. package/dist/{chunk-VOJCSOVL.js → chunk-EPCR2GOE.js} +2 -2
  19. package/dist/{chunk-5IMXQQQX.js → chunk-ETGNAHY3.js} +4 -4
  20. package/dist/{chunk-KWQ5IR2A.js → chunk-FKMBZ53Y.js} +2 -2
  21. package/dist/{chunk-WDYK7OAI.js → chunk-FTUBCD52.js} +3 -3
  22. package/dist/{chunk-ZC6QDPMA.js → chunk-FWSAYHGV.js} +4 -4
  23. package/dist/{chunk-AWF35M67.js → chunk-H4ACPMJS.js} +4 -4
  24. package/dist/{chunk-GNGKWFC3.js → chunk-HESQ746B.js} +2 -2
  25. package/dist/{chunk-GAJRBRED.js → chunk-HK4LBUYY.js} +2 -2
  26. package/dist/{chunk-GTWTVDLP.js → chunk-II4XITQ6.js} +13 -13
  27. package/dist/{chunk-3JRQWWBD.js → chunk-JNRDNE26.js} +2 -2
  28. package/dist/{chunk-GNGIZJAC.js → chunk-LWLFWWA7.js} +3 -3
  29. package/dist/{chunk-VS3C3L63.js → chunk-ONWH4UGD.js} +82 -64
  30. package/dist/chunk-ONWH4UGD.js.map +1 -0
  31. package/dist/{chunk-KLDUWDNU.js → chunk-ONYCBTOH.js} +10 -9
  32. package/dist/chunk-ONYCBTOH.js.map +1 -0
  33. package/dist/{chunk-TGOZLRO7.js → chunk-P7327767.js} +2 -2
  34. package/dist/{chunk-ZVSJPKEZ.js → chunk-Q5F4OBOK.js} +2 -2
  35. package/dist/{chunk-PSZQ657B.js → chunk-Q7RFJSR5.js} +3 -3
  36. package/dist/{chunk-UNIRQWHT.js → chunk-RI4IXOZT.js} +2 -2
  37. package/dist/{chunk-PDT6QYKY.js → chunk-TFQMVUWQ.js} +6 -5
  38. package/dist/{chunk-PDT6QYKY.js.map → chunk-TFQMVUWQ.js.map} +1 -1
  39. package/dist/{chunk-TJ4VWR32.js → chunk-TMHCN5EY.js} +5 -5
  40. package/dist/{chunk-MXYKMQ53.js → chunk-TQEXRC5C.js} +250 -92
  41. package/dist/chunk-TQEXRC5C.js.map +1 -0
  42. package/dist/{chunk-ETW6QNVI.js → chunk-VQGHQVD2.js} +3 -3
  43. package/dist/{chunk-XPQ2RDMV.js → chunk-XJ65J3O5.js} +5 -5
  44. package/dist/{cli-circuit-breaker-OTFWY5A5.js → cli-circuit-breaker-AZHN2TMH.js} +3 -3
  45. package/dist/{cli-readiness-WFUMPJCU.js → cli-readiness-H4JTTKKU.js} +7 -7
  46. package/dist/cli.d.ts +1 -1
  47. package/dist/cli.js +44 -44
  48. package/dist/{composite-router-LE4SNM2X.js → composite-router-WCTNVMSX.js} +2 -2
  49. package/dist/{consensus-vote-2BEOCYGU.js → consensus-vote-RD3SME3K.js} +17 -17
  50. package/dist/{consensus-vote-types-q8io4acj.d.ts → consensus-vote-types-G7Lnj3B3.d.ts} +26 -32
  51. package/dist/{context-retriever-NKP73OSE.js → context-retriever-YM2PPNSY.js} +8 -8
  52. package/dist/{doctor-deep-FQPLASUY.js → doctor-deep-6P23G7PN.js} +3 -3
  53. package/dist/{doctor-gateway-report-3I7KQVU3.js → doctor-gateway-report-4TXHTWUM.js} +7 -7
  54. package/dist/{doctor-live-ZAMCNQGM.js → doctor-live-MYXZCBSP.js} +11 -11
  55. package/dist/{expert-bridge-3WL6X37T.js → expert-bridge-CXHYMQRL.js} +4 -4
  56. package/dist/{factory-X7XECZ3D.js → factory-3Z46455N.js} +10 -10
  57. package/dist/{factory-IAH3XPHY.js → factory-KH2MJQ5U.js} +5 -5
  58. package/dist/{improvement-review-4VHBKOME.js → improvement-review-RAISKC3W.js} +6 -6
  59. package/dist/index.d.ts +29 -19
  60. package/dist/index.js +32 -32
  61. package/dist/index.js.map +1 -1
  62. package/dist/{init-opencode-YLKVZJJA.js → init-opencode-WXRTDPFP.js} +6 -6
  63. package/dist/{issue-triage-UUD53JH3.js → issue-triage-KF47ZHU7.js} +6 -6
  64. package/dist/{model-config-helpers-KRTQLJF4.js → model-config-helpers-ZH2QAFVR.js} +2 -2
  65. package/dist/{openai-compat-adapter-YTSKOE4F.js → openai-compat-adapter-PQ3JKWPZ.js} +6 -6
  66. package/dist/{outcome-store-adapter-PSVE6YAJ.js → outcome-store-adapter-NTYEZXLH.js} +2 -2
  67. package/dist/{pr-reviewer-helpers-VP4P23TI.js → pr-reviewer-helpers-AQNGDRQT.js} +4 -4
  68. package/dist/{registry-command-S4GXEMQR.js → registry-command-6EHIJ3PJ.js} +2 -2
  69. package/dist/{repo-security-plan-66VLAFUR.js → repo-security-plan-AP3QEWJ5.js} +3 -3
  70. package/dist/{research-helpers-synthesize-RFOFNS5W.js → research-helpers-synthesize-XE3RMFQT.js} +4 -4
  71. package/dist/{routing-memory-KKBKCISC.js → routing-memory-PBZIE5NX.js} +2 -2
  72. package/dist/{session-memory-6FGTXRCN.js → session-memory-6NUK6ZAG.js} +3 -3
  73. package/dist/{setup-config-4NLQBTZH.js → setup-config-KEPU4NTT.js} +3 -3
  74. package/dist/{setup-custom-api-FLGYMLGG.js → setup-custom-api-XY455LVS.js} +3 -3
  75. package/dist/setup-data-dir-5MRGQD2G.js +36 -0
  76. package/dist/{tool-memory-5DOAHII2.js → tool-memory-MO2KOJJ7.js} +5 -5
  77. package/dist/{unified-registry-I2BUGW6I.js → unified-registry-JE22THXP.js} +11 -11
  78. package/dist/{weather-report-CTT5O7MR.js → weather-report-TQ6KM2F2.js} +2 -2
  79. package/package.json +1 -1
  80. package/dist/chunk-4ROIBRK5.js.map +0 -1
  81. package/dist/chunk-KLDUWDNU.js.map +0 -1
  82. package/dist/chunk-MXYKMQ53.js.map +0 -1
  83. package/dist/chunk-SU47CN4Q.js.map +0 -1
  84. package/dist/chunk-VS3C3L63.js.map +0 -1
  85. package/dist/setup-data-dir-VBMDTRCF.js +0 -36
  86. /package/dist/{ast-rule-runner-DFEUIC2E.js.map → ast-rule-runner-5U6TE6YJ.js.map} +0 -0
  87. /package/dist/{child-mcp-config-ALJL5I7K.js.map → child-mcp-config-IR7LRMIK.js.map} +0 -0
  88. /package/dist/{chunk-M43A5MDJ.js.map → chunk-2AN5NGCQ.js.map} +0 -0
  89. /package/dist/{chunk-A5D7666X.js.map → chunk-2AW2VHMK.js.map} +0 -0
  90. /package/dist/{chunk-42TS2JOS.js.map → chunk-6H4NUU7G.js.map} +0 -0
  91. /package/dist/{chunk-JZSKEIQF.js.map → chunk-6WPXQTQY.js.map} +0 -0
  92. /package/dist/{chunk-625YPLMG.js.map → chunk-6Z3MAHAC.js.map} +0 -0
  93. /package/dist/{chunk-ZNXWR6V6.js.map → chunk-AFAM6GK3.js.map} +0 -0
  94. /package/dist/{chunk-WDSRUC3H.js.map → chunk-AI6LKFGU.js.map} +0 -0
  95. /package/dist/{chunk-DJ7QTY5J.js.map → chunk-C5WECFBR.js.map} +0 -0
  96. /package/dist/{chunk-KJ46Q24G.js.map → chunk-DEQRRCHK.js.map} +0 -0
  97. /package/dist/{chunk-XBWG4BJU.js.map → chunk-DG2UY5QU.js.map} +0 -0
  98. /package/dist/{chunk-DYVYV7NZ.js.map → chunk-DYTB2XW2.js.map} +0 -0
  99. /package/dist/{chunk-VOJCSOVL.js.map → chunk-EPCR2GOE.js.map} +0 -0
  100. /package/dist/{chunk-5IMXQQQX.js.map → chunk-ETGNAHY3.js.map} +0 -0
  101. /package/dist/{chunk-KWQ5IR2A.js.map → chunk-FKMBZ53Y.js.map} +0 -0
  102. /package/dist/{chunk-WDYK7OAI.js.map → chunk-FTUBCD52.js.map} +0 -0
  103. /package/dist/{chunk-ZC6QDPMA.js.map → chunk-FWSAYHGV.js.map} +0 -0
  104. /package/dist/{chunk-AWF35M67.js.map → chunk-H4ACPMJS.js.map} +0 -0
  105. /package/dist/{chunk-GNGKWFC3.js.map → chunk-HESQ746B.js.map} +0 -0
  106. /package/dist/{chunk-GAJRBRED.js.map → chunk-HK4LBUYY.js.map} +0 -0
  107. /package/dist/{chunk-GTWTVDLP.js.map → chunk-II4XITQ6.js.map} +0 -0
  108. /package/dist/{chunk-3JRQWWBD.js.map → chunk-JNRDNE26.js.map} +0 -0
  109. /package/dist/{chunk-GNGIZJAC.js.map → chunk-LWLFWWA7.js.map} +0 -0
  110. /package/dist/{chunk-TGOZLRO7.js.map → chunk-P7327767.js.map} +0 -0
  111. /package/dist/{chunk-ZVSJPKEZ.js.map → chunk-Q5F4OBOK.js.map} +0 -0
  112. /package/dist/{chunk-PSZQ657B.js.map → chunk-Q7RFJSR5.js.map} +0 -0
  113. /package/dist/{chunk-UNIRQWHT.js.map → chunk-RI4IXOZT.js.map} +0 -0
  114. /package/dist/{chunk-TJ4VWR32.js.map → chunk-TMHCN5EY.js.map} +0 -0
  115. /package/dist/{chunk-ETW6QNVI.js.map → chunk-VQGHQVD2.js.map} +0 -0
  116. /package/dist/{chunk-XPQ2RDMV.js.map → chunk-XJ65J3O5.js.map} +0 -0
  117. /package/dist/{cli-circuit-breaker-OTFWY5A5.js.map → cli-circuit-breaker-AZHN2TMH.js.map} +0 -0
  118. /package/dist/{cli-readiness-WFUMPJCU.js.map → cli-readiness-H4JTTKKU.js.map} +0 -0
  119. /package/dist/{composite-router-LE4SNM2X.js.map → composite-router-WCTNVMSX.js.map} +0 -0
  120. /package/dist/{consensus-vote-2BEOCYGU.js.map → consensus-vote-RD3SME3K.js.map} +0 -0
  121. /package/dist/{context-retriever-NKP73OSE.js.map → context-retriever-YM2PPNSY.js.map} +0 -0
  122. /package/dist/{doctor-deep-FQPLASUY.js.map → doctor-deep-6P23G7PN.js.map} +0 -0
  123. /package/dist/{doctor-gateway-report-3I7KQVU3.js.map → doctor-gateway-report-4TXHTWUM.js.map} +0 -0
  124. /package/dist/{doctor-live-ZAMCNQGM.js.map → doctor-live-MYXZCBSP.js.map} +0 -0
  125. /package/dist/{expert-bridge-3WL6X37T.js.map → expert-bridge-CXHYMQRL.js.map} +0 -0
  126. /package/dist/{factory-IAH3XPHY.js.map → factory-3Z46455N.js.map} +0 -0
  127. /package/dist/{factory-X7XECZ3D.js.map → factory-KH2MJQ5U.js.map} +0 -0
  128. /package/dist/{improvement-review-4VHBKOME.js.map → improvement-review-RAISKC3W.js.map} +0 -0
  129. /package/dist/{init-opencode-YLKVZJJA.js.map → init-opencode-WXRTDPFP.js.map} +0 -0
  130. /package/dist/{issue-triage-UUD53JH3.js.map → issue-triage-KF47ZHU7.js.map} +0 -0
  131. /package/dist/{model-config-helpers-KRTQLJF4.js.map → model-config-helpers-ZH2QAFVR.js.map} +0 -0
  132. /package/dist/{openai-compat-adapter-YTSKOE4F.js.map → openai-compat-adapter-PQ3JKWPZ.js.map} +0 -0
  133. /package/dist/{outcome-store-adapter-PSVE6YAJ.js.map → outcome-store-adapter-NTYEZXLH.js.map} +0 -0
  134. /package/dist/{pr-reviewer-helpers-VP4P23TI.js.map → pr-reviewer-helpers-AQNGDRQT.js.map} +0 -0
  135. /package/dist/{registry-command-S4GXEMQR.js.map → registry-command-6EHIJ3PJ.js.map} +0 -0
  136. /package/dist/{repo-security-plan-66VLAFUR.js.map → repo-security-plan-AP3QEWJ5.js.map} +0 -0
  137. /package/dist/{research-helpers-synthesize-RFOFNS5W.js.map → research-helpers-synthesize-XE3RMFQT.js.map} +0 -0
  138. /package/dist/{routing-memory-KKBKCISC.js.map → routing-memory-PBZIE5NX.js.map} +0 -0
  139. /package/dist/{session-memory-6FGTXRCN.js.map → session-memory-6NUK6ZAG.js.map} +0 -0
  140. /package/dist/{setup-config-4NLQBTZH.js.map → setup-config-KEPU4NTT.js.map} +0 -0
  141. /package/dist/{setup-custom-api-FLGYMLGG.js.map → setup-custom-api-XY455LVS.js.map} +0 -0
  142. /package/dist/{setup-data-dir-VBMDTRCF.js.map → setup-data-dir-5MRGQD2G.js.map} +0 -0
  143. /package/dist/{tool-memory-5DOAHII2.js.map → tool-memory-MO2KOJJ7.js.map} +0 -0
  144. /package/dist/{unified-registry-I2BUGW6I.js.map → unified-registry-JE22THXP.js.map} +0 -0
  145. /package/dist/{weather-report-CTT5O7MR.js.map → weather-report-TQ6KM2F2.js.map} +0 -0
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  ensureGatewayDiscovered,
3
3
  gatewayDiscoveryGeneration
4
- } from "./chunk-ETW6QNVI.js";
4
+ } from "./chunk-VQGHQVD2.js";
5
5
  import {
6
6
  createLogger,
7
7
  getTimeProvider,
8
8
  isRateLimitText,
9
9
  resolveCliSlot
10
- } from "./chunk-SU47CN4Q.js";
10
+ } from "./chunk-7XJZTSHW.js";
11
11
 
12
12
  // src/pipeline/expert-access-mode.ts
13
13
  var logger = createLogger({ component: "expert-bridge" });
@@ -78,7 +78,7 @@ async function dispatchWithMcpConfig(router, content, expertType, start, options
78
78
  let config;
79
79
  if (requestedAccessModeOf(options) === "default") {
80
80
  try {
81
- const { generateMcpConfig } = await import("./child-mcp-config-ALJL5I7K.js");
81
+ const { generateMcpConfig } = await import("./child-mcp-config-IR7LRMIK.js");
82
82
  config = await generateMcpConfig();
83
83
  activeMcpConfigs.add(config);
84
84
  } catch (error) {
@@ -167,8 +167,8 @@ async function getRouter() {
167
167
  }
168
168
  if (cachedRouter !== null) return cachedRouter;
169
169
  routerInitPromise ??= (async () => {
170
- const { createAllAdapters } = await import("./factory-X7XECZ3D.js");
171
- const { createCompositeRouter } = await import("./composite-router-LE4SNM2X.js");
170
+ const { createAllAdapters } = await import("./factory-3Z46455N.js");
171
+ const { createCompositeRouter } = await import("./composite-router-WCTNVMSX.js");
172
172
  const adapters = createAllAdapters();
173
173
  const superseded = generation !== routerGeneration;
174
174
  if (adapters.size === 0) {
@@ -179,7 +179,7 @@ async function getRouter() {
179
179
  if (superseded) return router;
180
180
  cachedRouter = router;
181
181
  try {
182
- const { createCliCircuitBreakerIntegration } = await import("./cli-circuit-breaker-OTFWY5A5.js");
182
+ const { createCliCircuitBreakerIntegration } = await import("./cli-circuit-breaker-AZHN2TMH.js");
183
183
  cachedCircuitBreaker = createCliCircuitBreakerIntegration([...adapters.values()]);
184
184
  } catch (error) {
185
185
  const msg = error instanceof Error ? error.message : String(error);
@@ -320,4 +320,4 @@ export {
320
320
  tokenSplitFromUsage,
321
321
  executeExpert
322
322
  };
323
- //# sourceMappingURL=chunk-ZNXWR6V6.js.map
323
+ //# sourceMappingURL=chunk-AFAM6GK3.js.map
@@ -7,7 +7,7 @@ import {
7
7
  toSdkCallback,
8
8
  toolStructuredError,
9
9
  wrapToolWithTimeout
10
- } from "./chunk-5IMXQQQX.js";
10
+ } from "./chunk-ETGNAHY3.js";
11
11
  import {
12
12
  JsonlStore,
13
13
  SECURITY_KEYWORDS,
@@ -21,7 +21,7 @@ import {
21
21
  hasMeasuredCategory,
22
22
  isDeclaredNeverDeprecate,
23
23
  isRegisteredToolName
24
- } from "./chunk-SU47CN4Q.js";
24
+ } from "./chunk-7XJZTSHW.js";
25
25
  import {
26
26
  getNexusDataDir,
27
27
  nexusDataPath
@@ -2431,4 +2431,4 @@ export {
2431
2431
  runImprovementReview,
2432
2432
  registerImprovementReviewTool
2433
2433
  };
2434
- //# sourceMappingURL=chunk-WDSRUC3H.js.map
2434
+ //# sourceMappingURL=chunk-AI6LKFGU.js.map
@@ -15,7 +15,7 @@ import {
15
15
  ok,
16
16
  resolveGatewayServedSlot,
17
17
  unenforcedAccessModeRefusal
18
- } from "./chunk-SU47CN4Q.js";
18
+ } from "./chunk-7XJZTSHW.js";
19
19
 
20
20
  // src/cli-adapters/cli-circuit-breaker.ts
21
21
  var CATEGORY_TO_FALLBACK = {
@@ -52,7 +52,7 @@ function getDefaultCliCircuitBreakerRegistry() {
52
52
  return defaultCliCircuitBreakerRegistry;
53
53
  }
54
54
  function getCliCircuitBreakerSnapshot(cliName) {
55
- return defaultCliCircuitBreakerRegistry.getAllSnapshots().get(cliName);
55
+ return defaultCliCircuitBreakerRegistry.getAllArmSnapshots().get(cliName);
56
56
  }
57
57
  var CliCircuitBreakerIntegration = class {
58
58
  registry;
@@ -224,4 +224,4 @@ export {
224
224
  CliCircuitBreakerIntegration,
225
225
  createCliCircuitBreakerIntegration
226
226
  };
227
- //# sourceMappingURL=chunk-4ROIBRK5.js.map
227
+ //# sourceMappingURL=chunk-AYBOQE2Y.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/cli-adapters/cli-circuit-breaker.ts"],"sourcesContent":["/**\n * nexus-agents/cli-adapters - CLI Circuit Breaker Integration\n *\n * Wraps CLI adapter calls with circuit breaker pattern for resilient\n * multi-CLI execution with automatic fallback on failures.\n *\n * (Source: Issue #359 - Integrate circuit breaker with CLI adapters)\n */\n\nimport type { Result, ILogger } from '../core/index.js';\nimport { ok, err, createLogger, getTimeProvider, getErrorMessage } from '../core/index.js';\nimport type { TaskCategory } from '../config/task-specialization-types.js';\nimport type { FallbackTaskType } from './task-classifier.js';\nimport { getFallbackChainForCategory } from './fallback-chains.js';\nimport type {\n ICliAdapter,\n CliName,\n CliTask,\n CliResponse,\n CliError,\n ObservedArmId,\n} from './types.js';\nimport { breakerKeys } from './breaker-key.js';\nimport { gatewayServedSlotOf, resolveGatewayServedSlot } from './gateway-slot-arm.js';\nimport {\n CircuitBreakerRegistry,\n CircuitError,\n CircuitErrorCode,\n mapCliErrorToCategory,\n type CliCircuitBreaker,\n type CircuitBreakerConfig,\n type CircuitBreakerSnapshot,\n type CircuitStateChangeListener,\n} from './circuit-breaker.js';\nimport { isCallerInputCliError } from './cli-error-helpers.js';\nimport { isCallerCancelled } from '../adapters/abort-utils.js';\nimport { unenforcedAccessModeRefusal } from './access-mode.js';\n\n/** Maps canonical TaskCategory (10 types) to FallbackTaskType (5 types). */\nconst CATEGORY_TO_FALLBACK: Record<TaskCategory, FallbackTaskType> = {\n code_generation: 'code',\n code_review: 'code',\n testing: 'code',\n research: 'research',\n exploration: 'research',\n documentation: 'documentation',\n architecture: 'analysis',\n security_review: 'analysis',\n planning: 'analysis',\n devops: 'general',\n};\n\n/** Configuration for CLI circuit breaker integration. */\nexport interface CliCircuitBreakerConfig {\n readonly perCliConfig?: Partial<Record<CliName, Partial<CircuitBreakerConfig>>>;\n readonly fallbackChain?: ReadonlyArray<CliName>;\n readonly enableFallback?: boolean;\n readonly maxFallbackAttempts?: number;\n}\n\n/** Result of a circuit-protected execution with fallback info. */\nexport interface CircuitProtectedResult {\n readonly response: CliResponse;\n readonly executedBy: CliName;\n readonly usedFallback: boolean;\n readonly fallbackAttempts?: ReadonlyArray<CliName>;\n}\n\n/** Health status for all CLIs with circuit state. */\nexport interface CliCircuitHealthStatus {\n readonly clis: ReadonlyArray<{\n readonly name: CliName;\n readonly healthy: boolean;\n readonly circuitState: 'closed' | 'open' | 'half-open';\n readonly failureCount: number;\n readonly lastFailureTime: number | null;\n }>;\n readonly systemHealthy: boolean;\n readonly healthyCount: number;\n readonly timestamp: number;\n}\n\n/** Interface for CLI circuit breaker integration. */\nexport interface ICliCircuitBreakerIntegration {\n execute(\n adapter: ICliAdapter,\n task: CliTask,\n taskCategory?: TaskCategory\n ): Promise<Result<CircuitProtectedResult, CircuitError | CliError>>;\n getHealthStatus(): CliCircuitHealthStatus;\n getCircuitSnapshots(): Map<CliName, CircuitBreakerSnapshot>;\n resetCircuit(cliName: CliName): void;\n resetAllCircuits(): void;\n addStateChangeListener(listener: CircuitStateChangeListener): void;\n}\n\nconst DEFAULT_FALLBACK_CHAIN: ReadonlyArray<CliName> = ['claude', 'gemini', 'codex', 'opencode'];\nconst DEFAULT_CONFIG: Required<CliCircuitBreakerConfig> = {\n perCliConfig: {},\n fallbackChain: DEFAULT_FALLBACK_CHAIN,\n enableFallback: true,\n maxFallbackAttempts: 2,\n};\nconst defaultCliCircuitBreakerRegistry = new CircuitBreakerRegistry();\n\n// #4330: the shared registry now gates voter-panel availability, so a CLI can\n// vanish from a panel roster because its circuit opened. Log every transition —\n// otherwise the next person debugging a \"missing voter\" has no trail, and a\n// misclassified transient error silently costs the panel its diversity.\nconst registryLogger = createLogger({ component: 'cli-circuit-breaker' });\ndefaultCliCircuitBreakerRegistry.addGlobalStateChangeListener((event) => {\n registryLogger.warn('CLI circuit state changed', {\n cli: event.cliName,\n previousState: event.previousState,\n newState: event.newState,\n failureCount: event.failureCount,\n reason: event.reason,\n });\n});\n\n/** Returns the shared CLI circuit-breaker registry used by default integrations. */\nexport function getDefaultCliCircuitBreakerRegistry(): CircuitBreakerRegistry {\n return defaultCliCircuitBreakerRegistry;\n}\n\n/**\n * Reads the current snapshot for a CLI without creating a new breaker.\n *\n * `undefined` means no circuit state is known yet, so callers should fail open.\n */\nexport function getCliCircuitBreakerSnapshot(cliName: CliName): CircuitBreakerSnapshot | undefined {\n return defaultCliCircuitBreakerRegistry.getAllArmSnapshots().get(cliName);\n}\n\n/**\n * Integrates circuit breaker pattern with CLI adapters.\n * Provides automatic fallback when a CLI's circuit opens.\n */\nexport class CliCircuitBreakerIntegration implements ICliCircuitBreakerIntegration {\n private readonly registry: CircuitBreakerRegistry;\n private readonly adapters: Map<CliName, ICliAdapter> = new Map();\n private readonly config: Required<CliCircuitBreakerConfig>;\n private readonly logger: ILogger;\n\n constructor(\n adapters: ReadonlyArray<ICliAdapter>,\n config?: CliCircuitBreakerConfig,\n logger?: ILogger\n ) {\n this.config = { ...DEFAULT_CONFIG, ...config };\n this.logger = logger ?? createLogger({ component: 'cli-circuit-breaker-integration' });\n this.registry =\n config === undefined ? defaultCliCircuitBreakerRegistry : new CircuitBreakerRegistry();\n for (const adapter of adapters) {\n this.adapters.set(adapter.name, adapter);\n this.breakerFor(adapter);\n }\n }\n\n async execute(\n adapter: ICliAdapter,\n task: CliTask,\n taskCategory?: TaskCategory\n ): Promise<Result<CircuitProtectedResult, CircuitError | CliError>> {\n const primaryCli = adapter.name;\n const fallbackAttempts: CliName[] = [];\n let lastError: CircuitError | CliError | undefined;\n\n const primaryResult = await this.executeWithBreaker(adapter, task);\n if (primaryResult.ok) {\n return ok({ response: primaryResult.value, executedBy: primaryCli, usedFallback: false });\n }\n lastError = primaryResult.error;\n\n if (!this.config.enableFallback || !(lastError instanceof CircuitError)) {\n return err(lastError);\n }\n\n for (const cli of this.getFallbackClis(primaryCli, taskCategory, task).slice(\n 0,\n this.config.maxFallbackAttempts\n )) {\n const fallbackAdapter = this.adapters.get(cli);\n if (!fallbackAdapter) continue;\n fallbackAttempts.push(cli);\n this.logger.info('Attempting fallback', { from: primaryCli, to: cli });\n const result = await this.executeWithBreaker(fallbackAdapter, task);\n if (result.ok) {\n return ok({\n response: result.value,\n executedBy: cli,\n usedFallback: true,\n fallbackAttempts,\n });\n }\n lastError = result.error;\n }\n\n this.logger.warn('All fallback attempts failed', { primaryCli, fallbackAttempts });\n return err(lastError);\n }\n\n getHealthStatus(): CliCircuitHealthStatus {\n const clis: CliCircuitHealthStatus['clis'][number][] = [];\n let healthyCount = 0;\n for (const [name, adapter] of this.adapters) {\n const snapshot = this.breakerFor(adapter).breaker.getSnapshot();\n const healthy = snapshot.state === 'closed';\n if (healthy) healthyCount++;\n clis.push({\n name,\n healthy,\n circuitState: snapshot.state,\n failureCount: snapshot.failureCount,\n lastFailureTime: snapshot.lastFailureTime,\n });\n }\n return {\n clis,\n systemHealthy: healthyCount > 0,\n healthyCount,\n timestamp: getTimeProvider().now(),\n };\n }\n\n getCircuitSnapshots(): Map<CliName, CircuitBreakerSnapshot> {\n const snapshots = new Map<CliName, CircuitBreakerSnapshot>();\n for (const [name, adapter] of this.adapters) {\n snapshots.set(name, this.breakerFor(adapter).breaker.getSnapshot());\n }\n return snapshots;\n }\n\n resetCircuit(cliName: CliName): void {\n const adapter = this.adapters.get(cliName);\n this.registry.resetArm(adapter === undefined ? cliName : this.breakerFor(adapter).key);\n this.logger.info('Circuit reset', { cliName });\n }\n\n resetAllCircuits(): void {\n this.registry.resetAll();\n this.logger.info('All circuits reset');\n }\n\n addStateChangeListener(listener: CircuitStateChangeListener): void {\n this.registry.addGlobalStateChangeListener(listener);\n }\n\n private async executeWithBreaker(\n adapter: ICliAdapter,\n task: CliTask\n ): Promise<Result<CliResponse, CircuitError | CliError>> {\n let { key, breaker } = this.breakerFor(adapter, task);\n let execResult: Result<CliResponse, CliError>;\n let targetResolved = false;\n try {\n await resolveGatewayServedSlot(adapter);\n const refusal = await this.prepareImplicitRoute(adapter, task);\n if (refusal !== undefined) return err(refusal);\n targetResolved = true;\n ({ key, breaker } = this.breakerFor(adapter, task));\n const canRun = breaker.canExecute();\n if (!canRun.ok) return canRun;\n execResult = await adapter.execute(task);\n } catch (error) {\n // A rejected availability probe has not selected a failure domain.\n // Never charge the provisional plain CLI breaker for that probe.\n if (targetResolved) breaker.recordFailure('unknown');\n return err(\n new CircuitError(`CLI execution threw unexpectedly: ${getErrorMessage(error)}`, {\n circuitErrorCode: CircuitErrorCode.EXECUTION_FAILED,\n cliName: adapter.name,\n armId: key,\n circuitState: breaker.getState(),\n cause: error instanceof Error ? error : new Error(String(error)),\n })\n );\n }\n\n return this.recordOutcome(adapter, breaker, execResult);\n }\n\n /** Resolve an implicit OpenCode route before gating, preserving access refusals. */\n private async prepareImplicitRoute(\n adapter: ICliAdapter,\n task: CliTask\n ): Promise<CliError | undefined> {\n if (adapter.name !== 'opencode' || task.model !== undefined) return undefined;\n const refusal = unenforcedAccessModeRefusal(adapter, task);\n if (refusal !== undefined) return refusal;\n // A missing/cooled configured model omits --model and runs the default.\n await adapter.initialize();\n return undefined;\n }\n\n private recordOutcome(\n adapter: ICliAdapter,\n breaker: CliCircuitBreaker,\n execResult: Result<CliResponse, CliError>\n ): Result<CliResponse, CliError> {\n const recordsOutcome = this.ownsBreakerOutcome(adapter);\n if (!execResult.ok) {\n // #6613: caller-input errors (e.g. invalid model requested) must not count\n // against the breaker or exhaust half-open probe capacity. #6691: nor\n // must a call its caller cancelled.\n if (isCallerInputCliError(execResult.error) || isCallerCancelled(execResult.error)) {\n breaker.releaseHalfOpenProbe();\n return err(execResult.error);\n }\n if (recordsOutcome) breaker.recordFailure(mapCliErrorToCategory(execResult.error.code));\n return err(execResult.error);\n }\n\n if (recordsOutcome) breaker.recordSuccess();\n return ok(execResult.value);\n }\n\n private breakerFor(\n adapter: Pick<ICliAdapter, 'name'> & Partial<Pick<ICliAdapter, 'getModelInfo'>>,\n task?: CliTask\n ): {\n key: ObservedArmId;\n breaker: CliCircuitBreaker;\n } {\n const key = breakerKeys.forArm({\n name: adapter.name,\n model: task?.model ?? adapter.getModelInfo?.().id,\n gatewayArm: gatewayServedSlotOf(adapter)?.arm,\n });\n return {\n key,\n breaker: this.registry.getArmBreaker(key, this.config.perCliConfig[adapter.name]),\n };\n }\n\n /** Marked gateway slots record in the shared registry; private registries own their records. */\n private ownsBreakerOutcome(adapter: ICliAdapter): boolean {\n return (\n this.registry !== defaultCliCircuitBreakerRegistry ||\n gatewayServedSlotOf(adapter)?.arm === undefined\n );\n }\n\n private getFallbackClis(\n excludeCli: CliName,\n taskCategory?: TaskCategory,\n task?: CliTask\n ): CliName[] {\n const chain =\n taskCategory !== undefined\n ? getFallbackChainForCategory(taskCategory, CATEGORY_TO_FALLBACK[taskCategory])\n : this.config.fallbackChain;\n return [...chain].filter((cli) => {\n const adapter = this.adapters.get(cli);\n return (\n cli !== excludeCli &&\n adapter !== undefined &&\n !this.registry.isArmOpen(this.breakerFor(adapter, task).key)\n );\n });\n }\n}\n\n/** Creates a CLI circuit breaker integration with the specified adapters. */\nexport function createCliCircuitBreakerIntegration(\n adapters: ReadonlyArray<ICliAdapter>,\n config?: CliCircuitBreakerConfig,\n logger?: ILogger\n): CliCircuitBreakerIntegration {\n return new CliCircuitBreakerIntegration(adapters, config, logger);\n}\n"],"mappings":"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","names":[]}
@@ -8,16 +8,16 @@ import {
8
8
  requireApiKey,
9
9
  validateApiKeyPresence,
10
10
  withGatewayUsageRecording
11
- } from "./chunk-GAJRBRED.js";
11
+ } from "./chunk-HK4LBUYY.js";
12
12
  import {
13
13
  assertCustomApiHostResolvesPublic,
14
14
  hostnameOf,
15
15
  redactGatewaySecrets
16
- } from "./chunk-ZVSJPKEZ.js";
16
+ } from "./chunk-Q5F4OBOK.js";
17
17
  import {
18
18
  REDACTED_KEY_PLACEHOLDER,
19
19
  sanitizeErrorDetails
20
- } from "./chunk-A5D7666X.js";
20
+ } from "./chunk-2AW2VHMK.js";
21
21
  import {
22
22
  CUSTOM_API_ALLOW_PRIVATE_ENV,
23
23
  ConfigError,
@@ -39,7 +39,7 @@ import {
39
39
  ok,
40
40
  readModelAllowlist,
41
41
  refineGatewayCatalog
42
- } from "./chunk-SU47CN4Q.js";
42
+ } from "./chunk-7XJZTSHW.js";
43
43
 
44
44
  // src/adapters/openai-compat-adapter.ts
45
45
  import OpenAI2 from "openai";
@@ -992,4 +992,4 @@ export {
992
992
  createOpenAICompatAdapter,
993
993
  buildOpenAICompatAdapters
994
994
  };
995
- //# sourceMappingURL=chunk-DJ7QTY5J.js.map
995
+ //# sourceMappingURL=chunk-C5WECFBR.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  getRandomProvider,
3
3
  getTimeProvider
4
- } from "./chunk-SU47CN4Q.js";
4
+ } from "./chunk-7XJZTSHW.js";
5
5
 
6
6
  // src/utils/id-utils.ts
7
7
  import { randomUUID } from "node:crypto";
@@ -24,4 +24,4 @@ export {
24
24
  generateHyphenId,
25
25
  generateUUID
26
26
  };
27
- //# sourceMappingURL=chunk-KJ46Q24G.js.map
27
+ //# sourceMappingURL=chunk-DEQRRCHK.js.map
@@ -7,7 +7,7 @@ import {
7
7
  getAdaptiveBonus,
8
8
  getOutcomeStore,
9
9
  hasMeasuredCategory
10
- } from "./chunk-SU47CN4Q.js";
10
+ } from "./chunk-7XJZTSHW.js";
11
11
  import {
12
12
  TASK_CATEGORIES
13
13
  } from "./chunk-4PN3UVZV.js";
@@ -150,4 +150,4 @@ export {
150
150
  runDeepDiagnostics,
151
151
  formatDeepDiagnostics
152
152
  };
153
- //# sourceMappingURL=chunk-XBWG4BJU.js.map
153
+ //# sourceMappingURL=chunk-DG2UY5QU.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  GitHubProvider,
3
3
  ScmError
4
- } from "./chunk-VOJCSOVL.js";
4
+ } from "./chunk-EPCR2GOE.js";
5
5
  import {
6
6
  ReputationCache,
7
7
  assessReputation,
@@ -9,10 +9,10 @@ import {
9
9
  resolveEnvMode,
10
10
  resolveReputationGatingMode,
11
11
  sanitizeInput
12
- } from "./chunk-3JRQWWBD.js";
12
+ } from "./chunk-JNRDNE26.js";
13
13
  import {
14
14
  hasToken
15
- } from "./chunk-UNIRQWHT.js";
15
+ } from "./chunk-RI4IXOZT.js";
16
16
  import {
17
17
  toContentTrustProvenanceRecord
18
18
  } from "./chunk-ZO6ZKR7L.js";
@@ -27,7 +27,7 @@ import {
27
27
  getErrorMessage,
28
28
  getTimeProvider,
29
29
  ok
30
- } from "./chunk-SU47CN4Q.js";
30
+ } from "./chunk-7XJZTSHW.js";
31
31
  import {
32
32
  CLI_SUBPROCESS_TIMEOUTS
33
33
  } from "./chunk-4PN3UVZV.js";
@@ -2645,4 +2645,4 @@ export {
2645
2645
  IssueTriage,
2646
2646
  createIssueTriage
2647
2647
  };
2648
- //# sourceMappingURL=chunk-DYVYV7NZ.js.map
2648
+ //# sourceMappingURL=chunk-DYTB2XW2.js.map
@@ -3,7 +3,7 @@ import {
3
3
  err,
4
4
  getErrorMessage,
5
5
  ok
6
- } from "./chunk-SU47CN4Q.js";
6
+ } from "./chunk-7XJZTSHW.js";
7
7
  import {
8
8
  CLI_SUBPROCESS_TIMEOUTS
9
9
  } from "./chunk-4PN3UVZV.js";
@@ -283,4 +283,4 @@ export {
283
283
  ScmError,
284
284
  GitHubProvider
285
285
  };
286
- //# sourceMappingURL=chunk-VOJCSOVL.js.map
286
+ //# sourceMappingURL=chunk-EPCR2GOE.js.map
@@ -5,14 +5,14 @@ import {
5
5
  getCurrentRequestContext,
6
6
  runWithRequestContext,
7
7
  serverCallerInfo
8
- } from "./chunk-GNGIZJAC.js";
8
+ } from "./chunk-LWLFWWA7.js";
9
9
  import {
10
10
  DEFAULT_EXECUTION_MODE
11
11
  } from "./chunk-ECJ52NSK.js";
12
12
  import {
13
13
  sanitizeErrorDetails,
14
14
  sanitizeStringLeaves
15
- } from "./chunk-A5D7666X.js";
15
+ } from "./chunk-2AW2VHMK.js";
16
16
  import {
17
17
  SecurityError,
18
18
  TOOL_MANIFEST,
@@ -26,7 +26,7 @@ import {
26
26
  getTimeProvider,
27
27
  ok,
28
28
  resolveInsideRoot
29
- } from "./chunk-SU47CN4Q.js";
29
+ } from "./chunk-7XJZTSHW.js";
30
30
  import {
31
31
  getNexusDataDir,
32
32
  parseBoolValue
@@ -2343,4 +2343,4 @@ export {
2343
2343
  DEFAULT_CONSENSUS_CONFIG,
2344
2344
  ConsensusMetricsSchema
2345
2345
  };
2346
- //# sourceMappingURL=chunk-5IMXQQQX.js.map
2346
+ //# sourceMappingURL=chunk-ETGNAHY3.js.map
@@ -7,7 +7,7 @@ import {
7
7
  getErrorMessage,
8
8
  getTimeProvider,
9
9
  ok
10
- } from "./chunk-SU47CN4Q.js";
10
+ } from "./chunk-7XJZTSHW.js";
11
11
 
12
12
  // src/context/session-memory.ts
13
13
  import * as fs from "node:fs";
@@ -374,4 +374,4 @@ export {
374
374
  SessionMemory,
375
375
  createSessionMemory
376
376
  };
377
- //# sourceMappingURL=chunk-KWQ5IR2A.js.map
377
+ //# sourceMappingURL=chunk-FKMBZ53Y.js.map
@@ -4,7 +4,7 @@ import {
4
4
  import {
5
5
  assessReputation,
6
6
  sanitizeInput
7
- } from "./chunk-3JRQWWBD.js";
7
+ } from "./chunk-JNRDNE26.js";
8
8
  import {
9
9
  allOf
10
10
  } from "./chunk-EZNIYU5T.js";
@@ -13,7 +13,7 @@ import {
13
13
  err,
14
14
  getTimeProvider,
15
15
  ok
16
- } from "./chunk-SU47CN4Q.js";
16
+ } from "./chunk-7XJZTSHW.js";
17
17
 
18
18
  // src/dogfooding/pr-reviewer-helpers.ts
19
19
  import { randomUUID } from "node:crypto";
@@ -477,4 +477,4 @@ export {
477
477
  createFailedReview,
478
478
  reviewPostingBlock
479
479
  };
480
- //# sourceMappingURL=chunk-WDYK7OAI.js.map
480
+ //# sourceMappingURL=chunk-FTUBCD52.js.map
@@ -1,14 +1,14 @@
1
1
  import {
2
2
  IN_FAMILY_FALLBACK_OPTION
3
- } from "./chunk-TJ4VWR32.js";
3
+ } from "./chunk-TMHCN5EY.js";
4
4
  import {
5
5
  sanitizeErrorDetails
6
- } from "./chunk-A5D7666X.js";
6
+ } from "./chunk-2AW2VHMK.js";
7
7
  import {
8
8
  classifyExtractedError,
9
9
  getTimeProvider,
10
10
  isTimeoutText
11
- } from "./chunk-SU47CN4Q.js";
11
+ } from "./chunk-7XJZTSHW.js";
12
12
  import {
13
13
  resolveClassGuardMs
14
14
  } from "./chunk-4PN3UVZV.js";
@@ -156,4 +156,4 @@ export {
156
156
  SERVES_PROBE_PROMPT,
157
157
  probeServes
158
158
  };
159
- //# sourceMappingURL=chunk-ZC6QDPMA.js.map
159
+ //# sourceMappingURL=chunk-FWSAYHGV.js.map
@@ -1,14 +1,14 @@
1
1
  import {
2
2
  GitHubProvider,
3
3
  ScmError
4
- } from "./chunk-VOJCSOVL.js";
4
+ } from "./chunk-EPCR2GOE.js";
5
5
  import {
6
6
  resolveToken
7
- } from "./chunk-UNIRQWHT.js";
7
+ } from "./chunk-RI4IXOZT.js";
8
8
  import {
9
9
  err,
10
10
  ok
11
- } from "./chunk-SU47CN4Q.js";
11
+ } from "./chunk-7XJZTSHW.js";
12
12
 
13
13
  // src/scm/factory.ts
14
14
  async function createScmProvider(config) {
@@ -41,4 +41,4 @@ export {
41
41
  createScmProvider,
42
42
  createGitHubProvider
43
43
  };
44
- //# sourceMappingURL=chunk-AWF35M67.js.map
44
+ //# sourceMappingURL=chunk-H4ACPMJS.js.map
@@ -6,7 +6,7 @@ import {
6
6
  getErrorMessage,
7
7
  ok,
8
8
  resolveInsideRoot
9
- } from "./chunk-SU47CN4Q.js";
9
+ } from "./chunk-7XJZTSHW.js";
10
10
  import {
11
11
  findRepoRoot,
12
12
  getActiveWorkspaceRoot,
@@ -211,4 +211,4 @@ export {
211
211
  loadPapersRegistry,
212
212
  savePapersRegistry
213
213
  };
214
- //# sourceMappingURL=chunk-GNGKWFC3.js.map
214
+ //# sourceMappingURL=chunk-HESQ746B.js.map
@@ -16,7 +16,7 @@ import {
16
16
  ok,
17
17
  recordUsageEvent,
18
18
  resolveRetryAfterMs
19
- } from "./chunk-SU47CN4Q.js";
19
+ } from "./chunk-7XJZTSHW.js";
20
20
 
21
21
  // src/adapters/base-adapter.ts
22
22
  var AdapterModelError = class extends ModelError {
@@ -1113,4 +1113,4 @@ export {
1113
1113
  gatewayAiSdkOptions,
1114
1114
  withGatewayUsageRecording
1115
1115
  };
1116
- //# sourceMappingURL=chunk-GAJRBRED.js.map
1116
+ //# sourceMappingURL=chunk-HK4LBUYY.js.map
@@ -7,7 +7,7 @@ import {
7
7
  VERSION,
8
8
  isNodeVersionSupported,
9
9
  recordServerTransport
10
- } from "./chunk-GNGIZJAC.js";
10
+ } from "./chunk-LWLFWWA7.js";
11
11
  import {
12
12
  checkGatewayHealth,
13
13
  cliFailsVerdict,
@@ -17,14 +17,14 @@ import {
17
17
  gatewaySlotServing,
18
18
  gatewayVerdict,
19
19
  printVoterTransportCheck
20
- } from "./chunk-42TS2JOS.js";
20
+ } from "./chunk-6H4NUU7G.js";
21
21
  import {
22
22
  readOpenAICompatEndpoint,
23
23
  readOpenAICompatEnv
24
- } from "./chunk-DJ7QTY5J.js";
24
+ } from "./chunk-C5WECFBR.js";
25
25
  import {
26
26
  claimGlobalRegistry
27
- } from "./chunk-PDT6QYKY.js";
27
+ } from "./chunk-TFQMVUWQ.js";
28
28
  import {
29
29
  CODEX_LEGACY_LANDLOCK_CONFIG,
30
30
  CODEX_MCP_SERVER_UNAVAILABLE_REASON,
@@ -32,23 +32,23 @@ import {
32
32
  codexSandboxPreflight,
33
33
  createAllAdapters,
34
34
  createCliAdapter
35
- } from "./chunk-KLDUWDNU.js";
35
+ } from "./chunk-ONYCBTOH.js";
36
36
  import {
37
37
  getNexusTmpDir
38
38
  } from "./chunk-JPFRRNRR.js";
39
39
  import {
40
40
  resolveGatewayEnv
41
- } from "./chunk-ZVSJPKEZ.js";
41
+ } from "./chunk-Q5F4OBOK.js";
42
42
  import {
43
43
  probeCli
44
44
  } from "./chunk-TW6PJYTP.js";
45
45
  import {
46
46
  SERVES_PROBE_PROMPT
47
- } from "./chunk-ZC6QDPMA.js";
47
+ } from "./chunk-FWSAYHGV.js";
48
48
  import {
49
49
  ClaudeCliAdapter,
50
50
  IN_FAMILY_FALLBACK_OPTION
51
- } from "./chunk-TJ4VWR32.js";
51
+ } from "./chunk-TMHCN5EY.js";
52
52
  import {
53
53
  DEFAULT_CAPABILITIES,
54
54
  capitalize,
@@ -73,7 +73,7 @@ import {
73
73
  resolveGatewayCostDeclaration,
74
74
  symbols,
75
75
  writeLine
76
- } from "./chunk-SU47CN4Q.js";
76
+ } from "./chunk-7XJZTSHW.js";
77
77
  import {
78
78
  getLearningDir,
79
79
  getOutcomesFile,
@@ -1556,7 +1556,7 @@ async function doctorCommand(options = {}) {
1556
1556
  options.onResult?.(result);
1557
1557
  printDoctorResults(result, void 0, options.deferSummary === true);
1558
1558
  if (options.gateway === true || options.probe === true) {
1559
- const { formatGatewayReport } = await import("./doctor-gateway-report-3I7KQVU3.js");
1559
+ const { formatGatewayReport } = await import("./doctor-gateway-report-4TXHTWUM.js");
1560
1560
  for (const line of formatGatewayReport(result.gateway, result.clis)) {
1561
1561
  process.stdout.write(line + "\n");
1562
1562
  }
@@ -1575,13 +1575,13 @@ async function runDoctorFix(result) {
1575
1575
  writeLine2("\u2500".repeat(40));
1576
1576
  let fixCount = 0;
1577
1577
  if (!result.dataDirectory.rootExists || result.dataDirectory.subdirectories.some((d) => !d.exists || !d.writable)) {
1578
- const { initDataDirectories: initDataDirectories2, describeDataDirFix: describeDataDirFix2 } = await import("./setup-data-dir-VBMDTRCF.js");
1578
+ const { initDataDirectories: initDataDirectories2, describeDataDirFix: describeDataDirFix2 } = await import("./setup-data-dir-5MRGQD2G.js");
1579
1579
  const outcome = describeDataDirFix2(initDataDirectories2());
1580
1580
  writeLine2(outcome.line);
1581
1581
  if (outcome.counted) fixCount++;
1582
1582
  }
1583
1583
  if (!result.configFile.found) {
1584
- const { runConfigInitSync } = await import("./setup-config-4NLQBTZH.js");
1584
+ const { runConfigInitSync } = await import("./setup-config-KEPU4NTT.js");
1585
1585
  const configResult = runConfigInitSync(process.cwd(), false, false);
1586
1586
  if (configResult.success && configResult.created) {
1587
1587
  writeLine2(`\u2713 Generated config: ${configResult.path}`);
@@ -1680,4 +1680,4 @@ export {
1680
1680
  startStdioServer,
1681
1681
  closeServer
1682
1682
  };
1683
- //# sourceMappingURL=chunk-GTWTVDLP.js.map
1683
+ //# sourceMappingURL=chunk-II4XITQ6.js.map
@@ -6,7 +6,7 @@ import {
6
6
  import {
7
7
  createLogger,
8
8
  getTimeProvider
9
- } from "./chunk-SU47CN4Q.js";
9
+ } from "./chunk-7XJZTSHW.js";
10
10
  import {
11
11
  CACHE_TIMEOUTS
12
12
  } from "./chunk-4PN3UVZV.js";
@@ -511,4 +511,4 @@ export {
511
511
  resolveReputationGatingMode,
512
512
  gateWithReputation
513
513
  };
514
- //# sourceMappingURL=chunk-3JRQWWBD.js.map
514
+ //# sourceMappingURL=chunk-JNRDNE26.js.map
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  getTimeProvider
3
- } from "./chunk-SU47CN4Q.js";
3
+ } from "./chunk-7XJZTSHW.js";
4
4
 
5
5
  // src/version.ts
6
6
  import semver from "semver";
7
- var VERSION = true ? "9.2.0" : "dev";
7
+ var VERSION = true ? "9.4.0" : "dev";
8
8
  var NODE_ENGINE_RANGE = ">=24";
9
9
  function isNodeVersionSupported(version) {
10
10
  return semver.satisfies(version, NODE_ENGINE_RANGE);
@@ -106,4 +106,4 @@ export {
106
106
  contextForLogging,
107
107
  measuredTrustTier
108
108
  };
109
- //# sourceMappingURL=chunk-GNGIZJAC.js.map
109
+ //# sourceMappingURL=chunk-LWLFWWA7.js.map