nexus-agents 2.103.1 → 2.104.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 (114) hide show
  1. package/dist/{child-mcp-config-I7VKSEW2.js → child-mcp-config-XOIMNU6R.js} +2 -2
  2. package/dist/{chunk-5ZK25ZWD.js → chunk-2B7332HE.js} +4 -4
  3. package/dist/{chunk-TZ2YMIQV.js → chunk-2MM5MC45.js} +9 -9
  4. package/dist/{chunk-3VMTQCEH.js → chunk-3TZUEGNB.js} +2 -2
  5. package/dist/{chunk-7P3FALEV.js → chunk-46GXDOWQ.js} +2 -2
  6. package/dist/{chunk-RDNEALPS.js → chunk-47FQ3BU7.js} +7 -7
  7. package/dist/{chunk-ULKXWKNZ.js → chunk-4KTPDSFZ.js} +5 -5
  8. package/dist/{chunk-OMFKL3FZ.js → chunk-5YMSKNUG.js} +7 -7
  9. package/dist/{chunk-Y5D6P5JV.js → chunk-7RE2S46N.js} +3 -3
  10. package/dist/{chunk-KSMYBMM6.js → chunk-A5UJBVCQ.js} +2 -2
  11. package/dist/{chunk-U3GOPZIA.js → chunk-ABNHZEKO.js} +2 -2
  12. package/dist/{chunk-FXPDPPYR.js → chunk-BLMWODJG.js} +2 -2
  13. package/dist/{chunk-6E6MOJYY.js → chunk-E6FIVDNH.js} +2 -2
  14. package/dist/{chunk-4PWBF3NC.js → chunk-ETGNZ6H2.js} +2 -2
  15. package/dist/{chunk-MHVGM6NQ.js → chunk-FVJ2LM2G.js} +2 -2
  16. package/dist/{chunk-VPPZ45IZ.js → chunk-I5QZ3PVT.js} +2 -2
  17. package/dist/{chunk-MMZ5IKQ3.js → chunk-I7UDM43R.js} +2 -2
  18. package/dist/{chunk-N35KBA5P.js → chunk-IFO52GSQ.js} +3 -3
  19. package/dist/{chunk-4VTJA7FE.js → chunk-K7OKFTCH.js} +2 -2
  20. package/dist/{chunk-CB66XOZQ.js → chunk-LM3BH55G.js} +36 -36
  21. package/dist/{chunk-CB66XOZQ.js.map → chunk-LM3BH55G.js.map} +1 -1
  22. package/dist/{chunk-DAOUGMA5.js → chunk-M54LGBTY.js} +4 -4
  23. package/dist/{chunk-3UOFGQ2K.js → chunk-P5XUYJBO.js} +3 -3
  24. package/dist/{chunk-WORMJT4K.js → chunk-PGSXRUH5.js} +3 -3
  25. package/dist/{chunk-3GUCNISD.js → chunk-RZ4A2RRN.js} +2 -2
  26. package/dist/{chunk-XISM6YBY.js → chunk-TFRXRKU5.js} +4 -4
  27. package/dist/{chunk-QQNM4YAL.js → chunk-UFTQXDUA.js} +2 -2
  28. package/dist/{chunk-5L5REFGE.js → chunk-VCLQMXVJ.js} +3 -3
  29. package/dist/{chunk-UB5S4II3.js → chunk-VGHPMNDR.js} +2 -2
  30. package/dist/{chunk-G2FTEZDY.js → chunk-VIHUOFIT.js} +37 -10
  31. package/dist/{chunk-G2FTEZDY.js.map → chunk-VIHUOFIT.js.map} +1 -1
  32. package/dist/{chunk-GA2ZZERU.js → chunk-WDVUKSIQ.js} +38 -2
  33. package/dist/chunk-WDVUKSIQ.js.map +1 -0
  34. package/dist/{chunk-L32OQDWK.js → chunk-WT46JLBD.js} +3 -3
  35. package/dist/{chunk-RWSRBLSA.js → chunk-XWOLOXKN.js} +2 -2
  36. package/dist/{cli-circuit-breaker-M4LZW4RB.js → cli-circuit-breaker-QMCG6JGV.js} +4 -4
  37. package/dist/cli.js +41 -40
  38. package/dist/cli.js.map +1 -1
  39. package/dist/{composite-router-CYGVTMW6.js → composite-router-ZX64CEVG.js} +2 -2
  40. package/dist/{consensus-vote-2ODNLCSS.js → consensus-vote-7HEHHH5S.js} +13 -12
  41. package/dist/{context-retriever-VZ5HKPWX.js → context-retriever-J7DIPQUO.js} +6 -6
  42. package/dist/{doctor-deep-A3FHG7A7.js → doctor-deep-ITSJV2RH.js} +3 -3
  43. package/dist/{expert-bridge-GNHXRQEZ.js → expert-bridge-7R4AU4DE.js} +4 -4
  44. package/dist/{factory-6PU24HFM.js → factory-UZQ3RGFQ.js} +6 -5
  45. package/dist/{factory-7ENY4JOE.js → factory-Y2RF33UB.js} +5 -5
  46. package/dist/{improvement-review-6377XBPE.js → improvement-review-NBVWPFXR.js} +4 -4
  47. package/dist/index.d.ts +18 -1
  48. package/dist/index.js +35 -35
  49. package/dist/{init-opencode-6UJPLOHE.js → init-opencode-QPHX4KVI.js} +5 -5
  50. package/dist/{issue-triage-YOFAEUGC.js → issue-triage-D5ADEG3V.js} +5 -5
  51. package/dist/{pr-reviewer-helpers-MK2ZFEEI.js → pr-reviewer-helpers-R7U4EI2P.js} +4 -4
  52. package/dist/{registry-command-JLAE6RAW.js → registry-command-CFNNKJ5S.js} +2 -2
  53. package/dist/{repo-security-plan-IGX7AS5P.js → repo-security-plan-2AXFDREW.js} +3 -3
  54. package/dist/{research-helpers-synthesize-B5KL3S4T.js → research-helpers-synthesize-YTIDNKBF.js} +3 -3
  55. package/dist/{routing-memory-7RKYQEHM.js → routing-memory-YLX6QNY2.js} +2 -2
  56. package/dist/{session-memory-S4SBPBP4.js → session-memory-Y5MUOY56.js} +3 -3
  57. package/dist/{setup-command-KMGJM4V4.js → setup-command-AS65DYIU.js} +10 -10
  58. package/dist/{setup-config-2DS2V65J.js → setup-config-5J3R7RET.js} +3 -3
  59. package/dist/{setup-custom-api-JVYDKH6Y.js → setup-custom-api-MJ24PJA7.js} +4 -4
  60. package/dist/{tool-memory-4LVVNSVD.js → tool-memory-YNMRI3PZ.js} +5 -5
  61. package/dist/{weather-report-FUVJJPE4.js → weather-report-GZRODMYW.js} +2 -2
  62. package/package.json +1 -1
  63. package/dist/chunk-GA2ZZERU.js.map +0 -1
  64. /package/dist/{child-mcp-config-I7VKSEW2.js.map → child-mcp-config-XOIMNU6R.js.map} +0 -0
  65. /package/dist/{chunk-5ZK25ZWD.js.map → chunk-2B7332HE.js.map} +0 -0
  66. /package/dist/{chunk-TZ2YMIQV.js.map → chunk-2MM5MC45.js.map} +0 -0
  67. /package/dist/{chunk-3VMTQCEH.js.map → chunk-3TZUEGNB.js.map} +0 -0
  68. /package/dist/{chunk-7P3FALEV.js.map → chunk-46GXDOWQ.js.map} +0 -0
  69. /package/dist/{chunk-RDNEALPS.js.map → chunk-47FQ3BU7.js.map} +0 -0
  70. /package/dist/{chunk-ULKXWKNZ.js.map → chunk-4KTPDSFZ.js.map} +0 -0
  71. /package/dist/{chunk-OMFKL3FZ.js.map → chunk-5YMSKNUG.js.map} +0 -0
  72. /package/dist/{chunk-Y5D6P5JV.js.map → chunk-7RE2S46N.js.map} +0 -0
  73. /package/dist/{chunk-KSMYBMM6.js.map → chunk-A5UJBVCQ.js.map} +0 -0
  74. /package/dist/{chunk-U3GOPZIA.js.map → chunk-ABNHZEKO.js.map} +0 -0
  75. /package/dist/{chunk-FXPDPPYR.js.map → chunk-BLMWODJG.js.map} +0 -0
  76. /package/dist/{chunk-6E6MOJYY.js.map → chunk-E6FIVDNH.js.map} +0 -0
  77. /package/dist/{chunk-4PWBF3NC.js.map → chunk-ETGNZ6H2.js.map} +0 -0
  78. /package/dist/{chunk-MHVGM6NQ.js.map → chunk-FVJ2LM2G.js.map} +0 -0
  79. /package/dist/{chunk-VPPZ45IZ.js.map → chunk-I5QZ3PVT.js.map} +0 -0
  80. /package/dist/{chunk-MMZ5IKQ3.js.map → chunk-I7UDM43R.js.map} +0 -0
  81. /package/dist/{chunk-N35KBA5P.js.map → chunk-IFO52GSQ.js.map} +0 -0
  82. /package/dist/{chunk-4VTJA7FE.js.map → chunk-K7OKFTCH.js.map} +0 -0
  83. /package/dist/{chunk-DAOUGMA5.js.map → chunk-M54LGBTY.js.map} +0 -0
  84. /package/dist/{chunk-3UOFGQ2K.js.map → chunk-P5XUYJBO.js.map} +0 -0
  85. /package/dist/{chunk-WORMJT4K.js.map → chunk-PGSXRUH5.js.map} +0 -0
  86. /package/dist/{chunk-3GUCNISD.js.map → chunk-RZ4A2RRN.js.map} +0 -0
  87. /package/dist/{chunk-XISM6YBY.js.map → chunk-TFRXRKU5.js.map} +0 -0
  88. /package/dist/{chunk-QQNM4YAL.js.map → chunk-UFTQXDUA.js.map} +0 -0
  89. /package/dist/{chunk-5L5REFGE.js.map → chunk-VCLQMXVJ.js.map} +0 -0
  90. /package/dist/{chunk-UB5S4II3.js.map → chunk-VGHPMNDR.js.map} +0 -0
  91. /package/dist/{chunk-L32OQDWK.js.map → chunk-WT46JLBD.js.map} +0 -0
  92. /package/dist/{chunk-RWSRBLSA.js.map → chunk-XWOLOXKN.js.map} +0 -0
  93. /package/dist/{cli-circuit-breaker-M4LZW4RB.js.map → cli-circuit-breaker-QMCG6JGV.js.map} +0 -0
  94. /package/dist/{composite-router-CYGVTMW6.js.map → composite-router-ZX64CEVG.js.map} +0 -0
  95. /package/dist/{consensus-vote-2ODNLCSS.js.map → consensus-vote-7HEHHH5S.js.map} +0 -0
  96. /package/dist/{context-retriever-VZ5HKPWX.js.map → context-retriever-J7DIPQUO.js.map} +0 -0
  97. /package/dist/{doctor-deep-A3FHG7A7.js.map → doctor-deep-ITSJV2RH.js.map} +0 -0
  98. /package/dist/{expert-bridge-GNHXRQEZ.js.map → expert-bridge-7R4AU4DE.js.map} +0 -0
  99. /package/dist/{factory-6PU24HFM.js.map → factory-UZQ3RGFQ.js.map} +0 -0
  100. /package/dist/{factory-7ENY4JOE.js.map → factory-Y2RF33UB.js.map} +0 -0
  101. /package/dist/{improvement-review-6377XBPE.js.map → improvement-review-NBVWPFXR.js.map} +0 -0
  102. /package/dist/{init-opencode-6UJPLOHE.js.map → init-opencode-QPHX4KVI.js.map} +0 -0
  103. /package/dist/{issue-triage-YOFAEUGC.js.map → issue-triage-D5ADEG3V.js.map} +0 -0
  104. /package/dist/{pr-reviewer-helpers-MK2ZFEEI.js.map → pr-reviewer-helpers-R7U4EI2P.js.map} +0 -0
  105. /package/dist/{registry-command-JLAE6RAW.js.map → registry-command-CFNNKJ5S.js.map} +0 -0
  106. /package/dist/{repo-security-plan-IGX7AS5P.js.map → repo-security-plan-2AXFDREW.js.map} +0 -0
  107. /package/dist/{research-helpers-synthesize-B5KL3S4T.js.map → research-helpers-synthesize-YTIDNKBF.js.map} +0 -0
  108. /package/dist/{routing-memory-7RKYQEHM.js.map → routing-memory-YLX6QNY2.js.map} +0 -0
  109. /package/dist/{session-memory-S4SBPBP4.js.map → session-memory-Y5MUOY56.js.map} +0 -0
  110. /package/dist/{setup-command-KMGJM4V4.js.map → setup-command-AS65DYIU.js.map} +0 -0
  111. /package/dist/{setup-config-2DS2V65J.js.map → setup-config-5J3R7RET.js.map} +0 -0
  112. /package/dist/{setup-custom-api-JVYDKH6Y.js.map → setup-custom-api-MJ24PJA7.js.map} +0 -0
  113. /package/dist/{tool-memory-4LVVNSVD.js.map → tool-memory-YNMRI3PZ.js.map} +0 -0
  114. /package/dist/{weather-report-FUVJJPE4.js.map → weather-report-GZRODMYW.js.map} +0 -0
@@ -5,13 +5,13 @@ import {
5
5
  } from "./chunk-6T3EPABN.js";
6
6
  import {
7
7
  generateId
8
- } from "./chunk-KSMYBMM6.js";
8
+ } from "./chunk-A5UJBVCQ.js";
9
9
  import {
10
10
  getMemoryRegistry
11
11
  } from "./chunk-PQHVC4BD.js";
12
12
  import {
13
13
  SessionMemory
14
- } from "./chunk-QQNM4YAL.js";
14
+ } from "./chunk-UFTQXDUA.js";
15
15
  import {
16
16
  ErrorCode,
17
17
  NexusError,
@@ -24,7 +24,7 @@ import {
24
24
  getTimeProvider,
25
25
  ok,
26
26
  setSharedMobiMemDbPathResolver
27
- } from "./chunk-GA2ZZERU.js";
27
+ } from "./chunk-WDVUKSIQ.js";
28
28
  import {
29
29
  nexusDataPath
30
30
  } from "./chunk-CH7QIDHQ.js";
@@ -5612,4 +5612,4 @@ export {
5612
5612
  reinitializeMemoryBackends,
5613
5613
  ToolMemoryManager
5614
5614
  };
5615
- //# sourceMappingURL=chunk-DAOUGMA5.js.map
5615
+ //# sourceMappingURL=chunk-M54LGBTY.js.map
@@ -2,14 +2,14 @@ import {
2
2
  CircuitBreakerRegistry,
3
3
  CircuitError,
4
4
  mapCliErrorToCategory
5
- } from "./chunk-4PWBF3NC.js";
5
+ } from "./chunk-ETGNZ6H2.js";
6
6
  import {
7
7
  createLogger,
8
8
  err,
9
9
  getFallbackChainForCategory,
10
10
  getTimeProvider,
11
11
  ok
12
- } from "./chunk-GA2ZZERU.js";
12
+ } from "./chunk-WDVUKSIQ.js";
13
13
 
14
14
  // src/cli-adapters/cli-circuit-breaker.ts
15
15
  var CATEGORY_TO_FALLBACK = {
@@ -152,4 +152,4 @@ export {
152
152
  CliCircuitBreakerIntegration,
153
153
  createCliCircuitBreakerIntegration
154
154
  };
155
- //# sourceMappingURL=chunk-3UOFGQ2K.js.map
155
+ //# sourceMappingURL=chunk-P5XUYJBO.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  OpenAIAdapter
3
- } from "./chunk-Y5D6P5JV.js";
3
+ } from "./chunk-7RE2S46N.js";
4
4
  import {
5
5
  ConfigError,
6
6
  createLogger,
@@ -9,7 +9,7 @@ import {
9
9
  getTimeProvider,
10
10
  lookupInTreeCapability,
11
11
  ok
12
- } from "./chunk-GA2ZZERU.js";
12
+ } from "./chunk-WDVUKSIQ.js";
13
13
  import {
14
14
  getNexusDataDir
15
15
  } from "./chunk-CH7QIDHQ.js";
@@ -307,4 +307,4 @@ export {
307
307
  discoverModels,
308
308
  buildOpenAICompatAdapters
309
309
  };
310
- //# sourceMappingURL=chunk-WORMJT4K.js.map
310
+ //# sourceMappingURL=chunk-PGSXRUH5.js.map
@@ -3,7 +3,7 @@ import {
3
3
  MODEL_IDS,
4
4
  getTimeProvider,
5
5
  resolveModelIdentitySync
6
- } from "./chunk-GA2ZZERU.js";
6
+ } from "./chunk-WDVUKSIQ.js";
7
7
 
8
8
  // src/config/model-availability.ts
9
9
  var DEFAULT_TTL_MS = 6e4;
@@ -150,4 +150,4 @@ export {
150
150
  resetAvailabilityCache,
151
151
  filterAvailableModels
152
152
  };
153
- //# sourceMappingURL=chunk-3GUCNISD.js.map
153
+ //# sourceMappingURL=chunk-RZ4A2RRN.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  GitHubProvider,
3
3
  ScmError
4
- } from "./chunk-3VMTQCEH.js";
4
+ } from "./chunk-3TZUEGNB.js";
5
5
  import {
6
6
  ROLE_DEFAULT_TRUST,
7
7
  ReputationCache,
@@ -11,13 +11,13 @@ import {
11
11
  gateWithReputation,
12
12
  resolveReputationGatingMode,
13
13
  sanitizeInput
14
- } from "./chunk-VPPZ45IZ.js";
14
+ } from "./chunk-I5QZ3PVT.js";
15
15
  import {
16
16
  createLogger,
17
17
  err,
18
18
  getTimeProvider,
19
19
  ok
20
- } from "./chunk-GA2ZZERU.js";
20
+ } from "./chunk-WDVUKSIQ.js";
21
21
 
22
22
  // src/security/trust-classifier.ts
23
23
  function mapAuthorAssociation(association) {
@@ -1390,4 +1390,4 @@ export {
1390
1390
  IssueTriage,
1391
1391
  createIssueTriage
1392
1392
  };
1393
- //# sourceMappingURL=chunk-XISM6YBY.js.map
1393
+ //# sourceMappingURL=chunk-TFRXRKU5.js.map
@@ -4,7 +4,7 @@ import {
4
4
  getErrorMessage,
5
5
  getTimeProvider,
6
6
  ok
7
- } from "./chunk-GA2ZZERU.js";
7
+ } from "./chunk-WDVUKSIQ.js";
8
8
 
9
9
  // src/context/session-memory.ts
10
10
  import * as fs from "fs";
@@ -351,4 +351,4 @@ export {
351
351
  SessionMemory,
352
352
  createSessionMemory
353
353
  };
354
- //# sourceMappingURL=chunk-QQNM4YAL.js.map
354
+ //# sourceMappingURL=chunk-UFTQXDUA.js.map
@@ -6,7 +6,7 @@ import {
6
6
  toolStructuredError,
7
7
  toolSuccessStructured,
8
8
  wrapToolWithTimeout
9
- } from "./chunk-RWSRBLSA.js";
9
+ } from "./chunk-XWOLOXKN.js";
10
10
  import {
11
11
  createLogger,
12
12
  formatZodError,
@@ -14,7 +14,7 @@ import {
14
14
  getOutcomeStore,
15
15
  getPipelineEventBus,
16
16
  getTimeProvider
17
- } from "./chunk-GA2ZZERU.js";
17
+ } from "./chunk-WDVUKSIQ.js";
18
18
  import {
19
19
  getNexusDataDir
20
20
  } from "./chunk-CH7QIDHQ.js";
@@ -1092,4 +1092,4 @@ export {
1092
1092
  runImprovementReview,
1093
1093
  registerImprovementReviewTool
1094
1094
  };
1095
- //# sourceMappingURL=chunk-5L5REFGE.js.map
1095
+ //# sourceMappingURL=chunk-VCLQMXVJ.js.map
@@ -8,7 +8,7 @@ import {
8
8
  getErrorMessage,
9
9
  ok,
10
10
  parseBoolEnv
11
- } from "./chunk-GA2ZZERU.js";
11
+ } from "./chunk-WDVUKSIQ.js";
12
12
 
13
13
  // src/cli/research-helpers-synthesize.ts
14
14
  import { z } from "zod";
@@ -1015,4 +1015,4 @@ export {
1015
1015
  AttributedInsightSchema,
1016
1016
  synthesizeResearch
1017
1017
  };
1018
- //# sourceMappingURL=chunk-UB5S4II3.js.map
1018
+ //# sourceMappingURL=chunk-VGHPMNDR.js.map
@@ -1,10 +1,13 @@
1
1
  import {
2
2
  CliCircuitBreaker,
3
3
  DEFAULT_CIRCUIT_BREAKER_CONFIG
4
- } from "./chunk-4PWBF3NC.js";
4
+ } from "./chunk-ETGNZ6H2.js";
5
+ import {
6
+ getAvailabilityCache
7
+ } from "./chunk-RZ4A2RRN.js";
5
8
  import {
6
9
  generateHyphenId
7
- } from "./chunk-KSMYBMM6.js";
10
+ } from "./chunk-A5UJBVCQ.js";
8
11
  import {
9
12
  CLI_SUBPROCESS_TIMEOUTS,
10
13
  CLI_TIMEOUTS,
@@ -29,7 +32,7 @@ import {
29
32
  isRateLimitText,
30
33
  loadModelsDevSnapshot,
31
34
  ok
32
- } from "./chunk-GA2ZZERU.js";
35
+ } from "./chunk-WDVUKSIQ.js";
33
36
 
34
37
  // src/cli-adapters/subprocess-adapter.ts
35
38
  import { spawn } from "child_process";
@@ -2898,29 +2901,53 @@ var OpenCodeCliAdapter = class extends SubprocessCliAdapter {
2898
2901
  if (this.availableModels === void 0 || this.availableModels.size === 0) return false;
2899
2902
  return this.availableModels.has(cliModel);
2900
2903
  }
2901
- /** Appends --model if the resolved model is available (#1402, #3407). */
2904
+ /** #3408: true if the model is in rate-limit cooldown (recent 429). Opt-in. */
2905
+ isCooled(cliModel) {
2906
+ return isDynamicModelsEnabled() && getAvailabilityCache().isKnownUnavailable(cliModel);
2907
+ }
2908
+ /** Usable = offered by the OpenCode install AND not in rate-limit cooldown. */
2909
+ isModelUsable(cliModel) {
2910
+ return this.isModelAvailable(cliModel) && !this.isCooled(cliModel);
2911
+ }
2912
+ /** Appends --model if the resolved model is usable (#1402, #3407, #3408). */
2902
2913
  appendModelArg(args, task) {
2903
2914
  const internalModel = task.model ?? this.model;
2904
2915
  let cliModel = resolveOpenCodeModel(internalModel);
2905
- if (!this.isModelAvailable(cliModel) && isDynamicModelsEnabled() && this.availableModels !== void 0) {
2906
- const resolved = resolveLiveModelId(cliModel, this.availableModels);
2916
+ if (!this.isModelUsable(cliModel) && isDynamicModelsEnabled() && this.availableModels !== void 0) {
2917
+ const usable = new Set([...this.availableModels].filter((m) => !this.isCooled(m)));
2918
+ const resolved = resolveLiveModelId(cliModel, usable);
2907
2919
  if (resolved !== cliModel) {
2908
- logger5.debug("Resolved stale model to live alias (#3407)", {
2920
+ logger5.debug("Resolved to live/non-cooled model (#3407/#3408)", {
2909
2921
  from: cliModel,
2910
2922
  to: resolved
2911
2923
  });
2912
2924
  cliModel = resolved;
2913
2925
  }
2914
2926
  }
2915
- if (this.isModelAvailable(cliModel)) {
2927
+ if (this.isModelUsable(cliModel)) {
2916
2928
  args.push("--model", cliModel);
2917
2929
  } else {
2918
- logger5.debug("Model not available, using OpenCode default", {
2930
+ logger5.debug("Model not usable (unavailable or cooled), using OpenCode default", {
2919
2931
  requested: cliModel,
2920
2932
  available: this.availableModels?.size ?? 0
2921
2933
  });
2922
2934
  }
2923
2935
  }
2936
+ /**
2937
+ * #3408: mark a model in rate-limit cooldown when a call returns RATE_LIMITED,
2938
+ * so subsequent selections skip it until the AvailabilityCache TTL recovers.
2939
+ * Wraps the base executeTask; opt-in + fail-open (no-op when discovery is off).
2940
+ * Advisory: a cooled model is still usable via an explicit, available --model.
2941
+ */
2942
+ async executeTask(task, options) {
2943
+ const result = await super.executeTask(task, options);
2944
+ if (isDynamicModelsEnabled() && !result.ok && result.error.code === "RATE_LIMITED") {
2945
+ const cliModel = resolveOpenCodeModel(task.model ?? this.model);
2946
+ getAvailabilityCache().markUnavailable(cliModel, "rate-limited (429)");
2947
+ logger5.debug("Cooldown: marked model rate-limited (#3408)", { model: cliModel });
2948
+ }
2949
+ return result;
2950
+ }
2924
2951
  /** Appends optional task flags (workDir, variant, thinking). */
2925
2952
  appendTaskFlags(args, task) {
2926
2953
  const workDir = task.options?.["workDir"];
@@ -3418,4 +3445,4 @@ export {
3418
3445
  isCliAvailable,
3419
3446
  getAvailableClis
3420
3447
  };
3421
- //# sourceMappingURL=chunk-G2FTEZDY.js.map
3448
+ //# sourceMappingURL=chunk-VIHUOFIT.js.map