nexus-agents 2.158.0 → 2.159.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 (121) hide show
  1. package/dist/{child-mcp-config-ODAUXUWE.js → child-mcp-config-72S4OMRK.js} +2 -2
  2. package/dist/{chunk-OOGGQ2NA.js → chunk-24PRWXLQ.js} +3 -3
  3. package/dist/{chunk-YH5U3XCP.js → chunk-3YGTLWNA.js} +2 -2
  4. package/dist/{chunk-I32MYAT5.js → chunk-6IXIKOLR.js} +2 -2
  5. package/dist/{chunk-4IXC6V6O.js → chunk-7WKSZZAX.js} +2 -2
  6. package/dist/{chunk-XLJCXM7L.js → chunk-AS6TNXKV.js} +2 -2
  7. package/dist/{chunk-RI3BFANI.js → chunk-BK2IRU3L.js} +2 -2
  8. package/dist/{chunk-YMMX6ELC.js → chunk-CY3QSLDQ.js} +3 -3
  9. package/dist/{chunk-J6OUXCR3.js → chunk-DOTCPOLE.js} +7 -7
  10. package/dist/{chunk-Q4JNYY2Y.js → chunk-FENIEDNW.js} +45 -12
  11. package/dist/chunk-FENIEDNW.js.map +1 -0
  12. package/dist/{chunk-K6HJLOPA.js → chunk-GY4XQU2V.js} +3 -3
  13. package/dist/{chunk-J2JP35S3.js → chunk-I3ROKMFF.js} +4 -4
  14. package/dist/{chunk-LSWGHIJK.js → chunk-I4SDEK6H.js} +7 -7
  15. package/dist/{chunk-CTL5HUZZ.js → chunk-IYSD4VFM.js} +4 -4
  16. package/dist/{chunk-YQRP5NST.js → chunk-JEUWM2VZ.js} +2 -2
  17. package/dist/{chunk-55ZDYUBT.js → chunk-MWTAZEHK.js} +2 -2
  18. package/dist/{chunk-S3H4VWN5.js → chunk-NTVJNSJC.js} +2 -2
  19. package/dist/{chunk-KS622JST.js → chunk-P3FNNFAW.js} +3 -3
  20. package/dist/{chunk-DSUFV2ZN.js → chunk-P7SRGOLU.js} +2 -2
  21. package/dist/{chunk-42ZSRIEX.js → chunk-RZDIYKVH.js} +2 -2
  22. package/dist/{chunk-6B5VQ2SY.js → chunk-SHKRC6Z7.js} +5 -5
  23. package/dist/{chunk-FWW5GCEH.js → chunk-SLQJ746K.js} +2 -2
  24. package/dist/{chunk-UQOJ2KGW.js → chunk-TB7GQCIH.js} +2 -2
  25. package/dist/{chunk-VKVJSPHJ.js → chunk-TMBVOQPL.js} +4 -4
  26. package/dist/{chunk-GG7MGRQ6.js → chunk-TOJFRIVM.js} +4 -4
  27. package/dist/{chunk-U5KSLUZ6.js → chunk-VCFKTNCM.js} +2 -2
  28. package/dist/{chunk-Q7TALELN.js → chunk-VCX3QMZE.js} +8 -8
  29. package/dist/{chunk-2O63LDYB.js → chunk-VOTYZUEG.js} +3 -3
  30. package/dist/{chunk-7J3AAPH5.js → chunk-VQ3ZVDSQ.js} +2 -2
  31. package/dist/{chunk-IQVHJD4O.js → chunk-WTCREQRS.js} +9 -8
  32. package/dist/{chunk-IQVHJD4O.js.map → chunk-WTCREQRS.js.map} +1 -1
  33. package/dist/{chunk-S7PFS6PX.js → chunk-XPPDWKZI.js} +7 -7
  34. package/dist/{chunk-R76LLKT2.js → chunk-Y7637JDT.js} +5 -5
  35. package/dist/{chunk-CSHFTQA7.js → chunk-YNKEHMKX.js} +3 -3
  36. package/dist/{chunk-6MCSD37T.js → chunk-ZHGCHS2D.js} +2 -2
  37. package/dist/{chunk-SPOES3DZ.js → chunk-ZQMTD74M.js} +34 -34
  38. package/dist/{cli-circuit-breaker-MLVJXLK6.js → cli-circuit-breaker-BWZXZBNW.js} +4 -4
  39. package/dist/cli.js +41 -41
  40. package/dist/{composite-router-FTECAR4U.js → composite-router-NPSNBLX7.js} +2 -2
  41. package/dist/{consensus-vote-MMZTCPL7.js → consensus-vote-ZX6NLTI4.js} +15 -15
  42. package/dist/{context-retriever-MPZ7T4VA.js → context-retriever-3QKHEA5U.js} +8 -8
  43. package/dist/{doctor-deep-KUB4HPCS.js → doctor-deep-Y2PQCE6G.js} +3 -3
  44. package/dist/{expert-bridge-EK362QGQ.js → expert-bridge-NXG4Z7U7.js} +4 -4
  45. package/dist/{factory-GOO7MH5G.js → factory-JJ4N6YPR.js} +8 -8
  46. package/dist/{factory-XBUQP3UB.js → factory-YK2QA3TU.js} +5 -5
  47. package/dist/{improvement-review-XXRDVOJT.js → improvement-review-6LSV4QFA.js} +5 -5
  48. package/dist/index.d.ts +6 -2
  49. package/dist/index.js +30 -30
  50. package/dist/{init-opencode-RNSCHZIW.js → init-opencode-AO2PEKXB.js} +6 -6
  51. package/dist/{issue-triage-7TWTN6LI.js → issue-triage-ZRRXCDAM.js} +6 -6
  52. package/dist/{pr-reviewer-helpers-VT4DR5BC.js → pr-reviewer-helpers-NEJJKQ7D.js} +4 -4
  53. package/dist/{registry-command-QVBYBBWR.js → registry-command-DKNGS752.js} +2 -2
  54. package/dist/{repo-security-plan-VSQWMONM.js → repo-security-plan-DEYYRMTB.js} +3 -3
  55. package/dist/{research-helpers-synthesize-VCUOMHPD.js → research-helpers-synthesize-54UEJ24R.js} +4 -4
  56. package/dist/{routing-memory-PP4UJVH4.js → routing-memory-QFEXYF6G.js} +2 -2
  57. package/dist/{session-memory-TVV2IOGB.js → session-memory-DYU7XMQO.js} +3 -3
  58. package/dist/{setup-command-4GOUS52A.js → setup-command-PSYJ4M7Q.js} +11 -11
  59. package/dist/{setup-config-HZHL4QMD.js → setup-config-CBV4OUOE.js} +3 -3
  60. package/dist/{setup-custom-api-H6FJ5VWL.js → setup-custom-api-IJWYWAHX.js} +3 -3
  61. package/dist/{tool-memory-YLCJZVMV.js → tool-memory-2DI34M5Z.js} +5 -5
  62. package/dist/{unified-registry-ZUPTC7OR.js → unified-registry-VQPPIL6M.js} +9 -9
  63. package/dist/{weather-report-XPDW6LGI.js → weather-report-RETBQ4VD.js} +2 -2
  64. package/package.json +1 -1
  65. package/dist/chunk-Q4JNYY2Y.js.map +0 -1
  66. /package/dist/{child-mcp-config-ODAUXUWE.js.map → child-mcp-config-72S4OMRK.js.map} +0 -0
  67. /package/dist/{chunk-OOGGQ2NA.js.map → chunk-24PRWXLQ.js.map} +0 -0
  68. /package/dist/{chunk-YH5U3XCP.js.map → chunk-3YGTLWNA.js.map} +0 -0
  69. /package/dist/{chunk-I32MYAT5.js.map → chunk-6IXIKOLR.js.map} +0 -0
  70. /package/dist/{chunk-4IXC6V6O.js.map → chunk-7WKSZZAX.js.map} +0 -0
  71. /package/dist/{chunk-XLJCXM7L.js.map → chunk-AS6TNXKV.js.map} +0 -0
  72. /package/dist/{chunk-RI3BFANI.js.map → chunk-BK2IRU3L.js.map} +0 -0
  73. /package/dist/{chunk-YMMX6ELC.js.map → chunk-CY3QSLDQ.js.map} +0 -0
  74. /package/dist/{chunk-J6OUXCR3.js.map → chunk-DOTCPOLE.js.map} +0 -0
  75. /package/dist/{chunk-K6HJLOPA.js.map → chunk-GY4XQU2V.js.map} +0 -0
  76. /package/dist/{chunk-J2JP35S3.js.map → chunk-I3ROKMFF.js.map} +0 -0
  77. /package/dist/{chunk-LSWGHIJK.js.map → chunk-I4SDEK6H.js.map} +0 -0
  78. /package/dist/{chunk-CTL5HUZZ.js.map → chunk-IYSD4VFM.js.map} +0 -0
  79. /package/dist/{chunk-YQRP5NST.js.map → chunk-JEUWM2VZ.js.map} +0 -0
  80. /package/dist/{chunk-55ZDYUBT.js.map → chunk-MWTAZEHK.js.map} +0 -0
  81. /package/dist/{chunk-S3H4VWN5.js.map → chunk-NTVJNSJC.js.map} +0 -0
  82. /package/dist/{chunk-KS622JST.js.map → chunk-P3FNNFAW.js.map} +0 -0
  83. /package/dist/{chunk-DSUFV2ZN.js.map → chunk-P7SRGOLU.js.map} +0 -0
  84. /package/dist/{chunk-42ZSRIEX.js.map → chunk-RZDIYKVH.js.map} +0 -0
  85. /package/dist/{chunk-6B5VQ2SY.js.map → chunk-SHKRC6Z7.js.map} +0 -0
  86. /package/dist/{chunk-FWW5GCEH.js.map → chunk-SLQJ746K.js.map} +0 -0
  87. /package/dist/{chunk-UQOJ2KGW.js.map → chunk-TB7GQCIH.js.map} +0 -0
  88. /package/dist/{chunk-VKVJSPHJ.js.map → chunk-TMBVOQPL.js.map} +0 -0
  89. /package/dist/{chunk-GG7MGRQ6.js.map → chunk-TOJFRIVM.js.map} +0 -0
  90. /package/dist/{chunk-U5KSLUZ6.js.map → chunk-VCFKTNCM.js.map} +0 -0
  91. /package/dist/{chunk-Q7TALELN.js.map → chunk-VCX3QMZE.js.map} +0 -0
  92. /package/dist/{chunk-2O63LDYB.js.map → chunk-VOTYZUEG.js.map} +0 -0
  93. /package/dist/{chunk-7J3AAPH5.js.map → chunk-VQ3ZVDSQ.js.map} +0 -0
  94. /package/dist/{chunk-S7PFS6PX.js.map → chunk-XPPDWKZI.js.map} +0 -0
  95. /package/dist/{chunk-R76LLKT2.js.map → chunk-Y7637JDT.js.map} +0 -0
  96. /package/dist/{chunk-CSHFTQA7.js.map → chunk-YNKEHMKX.js.map} +0 -0
  97. /package/dist/{chunk-6MCSD37T.js.map → chunk-ZHGCHS2D.js.map} +0 -0
  98. /package/dist/{chunk-SPOES3DZ.js.map → chunk-ZQMTD74M.js.map} +0 -0
  99. /package/dist/{cli-circuit-breaker-MLVJXLK6.js.map → cli-circuit-breaker-BWZXZBNW.js.map} +0 -0
  100. /package/dist/{composite-router-FTECAR4U.js.map → composite-router-NPSNBLX7.js.map} +0 -0
  101. /package/dist/{consensus-vote-MMZTCPL7.js.map → consensus-vote-ZX6NLTI4.js.map} +0 -0
  102. /package/dist/{context-retriever-MPZ7T4VA.js.map → context-retriever-3QKHEA5U.js.map} +0 -0
  103. /package/dist/{doctor-deep-KUB4HPCS.js.map → doctor-deep-Y2PQCE6G.js.map} +0 -0
  104. /package/dist/{expert-bridge-EK362QGQ.js.map → expert-bridge-NXG4Z7U7.js.map} +0 -0
  105. /package/dist/{factory-GOO7MH5G.js.map → factory-JJ4N6YPR.js.map} +0 -0
  106. /package/dist/{factory-XBUQP3UB.js.map → factory-YK2QA3TU.js.map} +0 -0
  107. /package/dist/{improvement-review-XXRDVOJT.js.map → improvement-review-6LSV4QFA.js.map} +0 -0
  108. /package/dist/{init-opencode-RNSCHZIW.js.map → init-opencode-AO2PEKXB.js.map} +0 -0
  109. /package/dist/{issue-triage-7TWTN6LI.js.map → issue-triage-ZRRXCDAM.js.map} +0 -0
  110. /package/dist/{pr-reviewer-helpers-VT4DR5BC.js.map → pr-reviewer-helpers-NEJJKQ7D.js.map} +0 -0
  111. /package/dist/{registry-command-QVBYBBWR.js.map → registry-command-DKNGS752.js.map} +0 -0
  112. /package/dist/{repo-security-plan-VSQWMONM.js.map → repo-security-plan-DEYYRMTB.js.map} +0 -0
  113. /package/dist/{research-helpers-synthesize-VCUOMHPD.js.map → research-helpers-synthesize-54UEJ24R.js.map} +0 -0
  114. /package/dist/{routing-memory-PP4UJVH4.js.map → routing-memory-QFEXYF6G.js.map} +0 -0
  115. /package/dist/{session-memory-TVV2IOGB.js.map → session-memory-DYU7XMQO.js.map} +0 -0
  116. /package/dist/{setup-command-4GOUS52A.js.map → setup-command-PSYJ4M7Q.js.map} +0 -0
  117. /package/dist/{setup-config-HZHL4QMD.js.map → setup-config-CBV4OUOE.js.map} +0 -0
  118. /package/dist/{setup-custom-api-H6FJ5VWL.js.map → setup-custom-api-IJWYWAHX.js.map} +0 -0
  119. /package/dist/{tool-memory-YLCJZVMV.js.map → tool-memory-2DI34M5Z.js.map} +0 -0
  120. /package/dist/{unified-registry-ZUPTC7OR.js.map → unified-registry-VQPPIL6M.js.map} +0 -0
  121. /package/dist/{weather-report-XPDW6LGI.js.map → weather-report-RETBQ4VD.js.map} +0 -0
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  createLogger
3
- } from "./chunk-Q4JNYY2Y.js";
3
+ } from "./chunk-FENIEDNW.js";
4
4
  import "./chunk-NL7SZQPW.js";
5
5
  import "./chunk-DHVMSIT5.js";
6
6
  import "./chunk-ZPWHCABL.js";
@@ -60,4 +60,4 @@ export {
60
60
  generateMcpConfig,
61
61
  getDefaultAllowedTools
62
62
  };
63
- //# sourceMappingURL=child-mcp-config-ODAUXUWE.js.map
63
+ //# sourceMappingURL=child-mcp-config-72S4OMRK.js.map
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  loadPapersRegistry
3
- } from "./chunk-YH5U3XCP.js";
3
+ } from "./chunk-3YGTLWNA.js";
4
4
  import {
5
5
  getErrorMessage
6
- } from "./chunk-Q4JNYY2Y.js";
6
+ } from "./chunk-FENIEDNW.js";
7
7
 
8
8
  // src/cli/research-helpers-synthesize.ts
9
9
  import { z } from "zod";
@@ -876,4 +876,4 @@ export {
876
876
  AttributedInsightSchema,
877
877
  synthesizeResearch
878
878
  };
879
- //# sourceMappingURL=chunk-OOGGQ2NA.js.map
879
+ //# sourceMappingURL=chunk-24PRWXLQ.js.map
@@ -8,7 +8,7 @@ import {
8
8
  getErrorMessage,
9
9
  ok,
10
10
  parseBoolEnv
11
- } from "./chunk-Q4JNYY2Y.js";
11
+ } from "./chunk-FENIEDNW.js";
12
12
 
13
13
  // src/cli/research-helpers-io.ts
14
14
  import * as fs2 from "fs/promises";
@@ -146,4 +146,4 @@ export {
146
146
  loadPapersRegistry,
147
147
  savePapersRegistry
148
148
  };
149
- //# sourceMappingURL=chunk-YH5U3XCP.js.map
149
+ //# sourceMappingURL=chunk-3YGTLWNA.js.map
@@ -15,7 +15,7 @@ import {
15
15
  createLogger,
16
16
  err,
17
17
  ok
18
- } from "./chunk-Q4JNYY2Y.js";
18
+ } from "./chunk-FENIEDNW.js";
19
19
 
20
20
  // src/adapters/sdk/types.ts
21
21
  var PROVIDER_ENV_KEYS = {
@@ -396,4 +396,4 @@ export {
396
396
  CUSTOM_API_DEFAULT_MODEL,
397
397
  DEFAULTS
398
398
  };
399
- //# sourceMappingURL=chunk-I32MYAT5.js.map
399
+ //# sourceMappingURL=chunk-6IXIKOLR.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getErrorMessage
3
- } from "./chunk-Q4JNYY2Y.js";
3
+ } from "./chunk-FENIEDNW.js";
4
4
 
5
5
  // src/cli/setup-config.ts
6
6
  import { copyFileSync, existsSync, mkdirSync, writeFileSync } from "fs";
@@ -77,4 +77,4 @@ function ensureBackup(outputPath) {
77
77
  export {
78
78
  runConfigInitSync
79
79
  };
80
- //# sourceMappingURL=chunk-4IXC6V6O.js.map
80
+ //# sourceMappingURL=chunk-7WKSZZAX.js.map
@@ -2,7 +2,7 @@ import {
2
2
  createLogger,
3
3
  err,
4
4
  ok
5
- } from "./chunk-Q4JNYY2Y.js";
5
+ } from "./chunk-FENIEDNW.js";
6
6
 
7
7
  // src/scm/token-resolver.ts
8
8
  import { execFile } from "child_process";
@@ -87,4 +87,4 @@ export {
87
87
  hasToken,
88
88
  getTokenEnvVars
89
89
  };
90
- //# sourceMappingURL=chunk-XLJCXM7L.js.map
90
+ //# sourceMappingURL=chunk-AS6TNXKV.js.map
@@ -3,7 +3,7 @@ import {
3
3
  MODEL_IDS,
4
4
  getTimeProvider,
5
5
  resolveModelIdentitySync
6
- } from "./chunk-Q4JNYY2Y.js";
6
+ } from "./chunk-FENIEDNW.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-RI3BFANI.js.map
153
+ //# sourceMappingURL=chunk-BK2IRU3L.js.map
@@ -2,14 +2,14 @@ import {
2
2
  CircuitBreakerRegistry,
3
3
  CircuitError,
4
4
  mapCliErrorToCategory
5
- } from "./chunk-YQRP5NST.js";
5
+ } from "./chunk-JEUWM2VZ.js";
6
6
  import {
7
7
  createLogger,
8
8
  err,
9
9
  getFallbackChainForCategory,
10
10
  getTimeProvider,
11
11
  ok
12
- } from "./chunk-Q4JNYY2Y.js";
12
+ } from "./chunk-FENIEDNW.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-YMMX6ELC.js.map
155
+ //# sourceMappingURL=chunk-CY3QSLDQ.js.map
@@ -7,10 +7,10 @@ import {
7
7
  import {
8
8
  createAllAdapters,
9
9
  probeCli
10
- } from "./chunk-S7PFS6PX.js";
10
+ } from "./chunk-XPPDWKZI.js";
11
11
  import {
12
12
  DEFAULTS
13
- } from "./chunk-I32MYAT5.js";
13
+ } from "./chunk-6IXIKOLR.js";
14
14
  import {
15
15
  CliNameSchema,
16
16
  DEFAULT_CAPABILITIES,
@@ -26,7 +26,7 @@ import {
26
26
  ok,
27
27
  symbols,
28
28
  writeLine
29
- } from "./chunk-Q4JNYY2Y.js";
29
+ } from "./chunk-FENIEDNW.js";
30
30
  import {
31
31
  getLearningDir,
32
32
  getOutcomesFile,
@@ -42,7 +42,7 @@ import {
42
42
  } from "./chunk-DHVMSIT5.js";
43
43
 
44
44
  // src/version.ts
45
- var VERSION = true ? "2.158.0" : "dev";
45
+ var VERSION = true ? "2.159.0" : "dev";
46
46
 
47
47
  // src/config/schemas-core.ts
48
48
  import { z } from "zod";
@@ -2135,7 +2135,7 @@ async function runDoctorFix(result) {
2135
2135
  writeLine2("\u2500".repeat(40));
2136
2136
  let fixCount = 0;
2137
2137
  if (!result.dataDirectory.rootExists || result.dataDirectory.subdirectories.some((d) => !d.exists || !d.writable)) {
2138
- const { runSetup } = await import("./setup-command-4GOUS52A.js");
2138
+ const { runSetup } = await import("./setup-command-PSYJ4M7Q.js");
2139
2139
  const setupResult = runSetup({
2140
2140
  skipMcp: true,
2141
2141
  skipRules: true,
@@ -2149,7 +2149,7 @@ async function runDoctorFix(result) {
2149
2149
  }
2150
2150
  }
2151
2151
  if (!result.configFile.found) {
2152
- const { runConfigInitSync } = await import("./setup-config-HZHL4QMD.js");
2152
+ const { runConfigInitSync } = await import("./setup-config-CBV4OUOE.js");
2153
2153
  const configResult = runConfigInitSync(process.cwd(), false, false);
2154
2154
  if (configResult.success && configResult.created) {
2155
2155
  writeLine2(`\u2713 Generated config: ${configResult.path}`);
@@ -2248,4 +2248,4 @@ export {
2248
2248
  startStdioServer,
2249
2249
  closeServer
2250
2250
  };
2251
- //# sourceMappingURL=chunk-J6OUXCR3.js.map
2251
+ //# sourceMappingURL=chunk-DOTCPOLE.js.map
@@ -1841,6 +1841,35 @@ function selectIdentityCandidate(candidates) {
1841
1841
  if (authoritative.length > 0) return uniqueCandidate(authoritative);
1842
1842
  return uniqueCandidate(ranked.filter((e) => BREADTH_SOURCES.has(e.source)));
1843
1843
  }
1844
+ var TRAILING_DATE_SEGMENT = /-\d{6,8}$/;
1845
+ var DATE_SEGMENT = /(?:^|-)(?:\d{6,8}|\d{4}-\d{2}(?:-\d{2})?)(?:-|$)/;
1846
+ var SIZE_TIER_QUIRKS = /* @__PURE__ */ new Set(["small", "large", "sized-suffix"]);
1847
+ function matchIdentityCandidate(index, identity) {
1848
+ const key = identityKeyFor(identity);
1849
+ if (key === void 0 || identity.version === void 0) return void 0;
1850
+ const matched = selectIdentityCandidate(index.get(key)) ?? selectDateStripped(index, identity, identity.version);
1851
+ if (matched === void 0) return void 0;
1852
+ return blockedBySizeQuirk(identity, matched) ? void 0 : matched;
1853
+ }
1854
+ function selectDateStripped(index, identity, version) {
1855
+ const vk = versionKey(version);
1856
+ if (!TRAILING_DATE_SEGMENT.test(vk)) return void 0;
1857
+ const stripped = vk.replace(TRAILING_DATE_SEGMENT, "");
1858
+ if (stripped.length === 0 || DATE_SEGMENT.test(stripped)) return void 0;
1859
+ const strippedKey = identityKeyFor({
1860
+ vendor: identity.vendor,
1861
+ family: identity.family,
1862
+ version: stripped
1863
+ });
1864
+ if (strippedKey === void 0) return void 0;
1865
+ return selectIdentityCandidate(index.get(strippedKey));
1866
+ }
1867
+ function blockedBySizeQuirk(identity, matched) {
1868
+ const sizeQuirks = identity.quirks.filter((q) => SIZE_TIER_QUIRKS.has(q));
1869
+ if (sizeQuirks.length === 0) return false;
1870
+ const canonicalQuirks = resolveModelIdentitySync(matched.id).quirks;
1871
+ return sizeQuirks.some((q) => !canonicalQuirks.includes(q));
1872
+ }
1844
1873
 
1845
1874
  // src/config/manifest-overlay.ts
1846
1875
  import { existsSync, readFileSync, statSync } from "fs";
@@ -2348,15 +2377,17 @@ var ModelRegistry = class {
2348
2377
  return direct;
2349
2378
  }
2350
2379
  if (direct === void 0) {
2351
- const fuzzy = this.lookupFuzzy(modelId, hints);
2380
+ const identity2 = resolveModelIdentitySync(modelId, hints);
2381
+ const fuzzy = this.lookupFuzzy(modelId, identity2, hints);
2352
2382
  if (fuzzy !== void 0) return fuzzy;
2383
+ return deriveEntry(modelId, identity2);
2353
2384
  }
2354
2385
  const identity = resolveModelIdentitySync(modelId, augmentHints(hints, direct));
2355
2386
  const derived = deriveEntry(modelId, identity);
2356
- if (direct !== void 0 && identity.vendor !== "unknown") {
2387
+ if (identity.vendor !== "unknown") {
2357
2388
  return mergeSnapshotWithDerived(direct, derived);
2358
2389
  }
2359
- return direct ?? derived;
2390
+ return direct;
2360
2391
  }
2361
2392
  /**
2362
2393
  * Has the registry got an authoritative entry for this id?
@@ -2390,21 +2421,23 @@ var ModelRegistry = class {
2390
2421
  * (a) retry `lookupExact` with the `normaliseModelId`-normalized id so
2391
2422
  * aliases + alias-shadow (#3293) keep working;
2392
2423
  * (b) identity-match {vendor, family, version} against the load-time
2393
- * index — version required on both sides, tier-ordered uniqueness,
2394
- * fail closed on ambiguity (see model-fuzzy-resolution.ts).
2424
+ * index — version required on both sides (ONE trailing date segment
2425
+ * tolerated on the decorated side, #4183), tier-ordered uniqueness,
2426
+ * fail closed on ambiguity and on sub-SKU size markers (see
2427
+ * model-fuzzy-resolution.ts).
2395
2428
  * Over-long ids skip the tier entirely (straight to derivation).
2429
+ * `identity` is the caller's already-resolved identity for `modelId`
2430
+ * (#4183 perf: resolved once per getEntry call).
2396
2431
  */
2397
- lookupFuzzy(modelId, hints) {
2432
+ lookupFuzzy(modelId, identity, hints) {
2398
2433
  if (modelId.length > MAX_FUZZY_ID_LENGTH) return void 0;
2399
2434
  const normalized = normaliseModelId(modelId);
2400
2435
  const byNormalized = normalized === modelId ? void 0 : this.lookupExact(normalized);
2401
2436
  if (byNormalized !== void 0) {
2402
2437
  return this.resolveMatched(byNormalized, modelId, hints, "normalized");
2403
2438
  }
2404
- const key = identityKeyFor(resolveModelIdentitySync(modelId, hints));
2405
- if (key === void 0) return void 0;
2406
2439
  this.identityIndex ??= buildIdentityIndex(this.byId.values());
2407
- const matched = selectIdentityCandidate(this.identityIndex.get(key));
2440
+ const matched = matchIdentityCandidate(this.identityIndex, identity);
2408
2441
  if (matched === void 0) return void 0;
2409
2442
  return this.resolveMatched(matched, modelId, hints, "identity");
2410
2443
  }
@@ -2501,7 +2534,7 @@ function setDefaultRegistry(registry) {
2501
2534
  }
2502
2535
  async function reloadDefaultRegistry() {
2503
2536
  globalRegistry = buildDefaultRegistry();
2504
- const { resetGlobalRegistry } = await import("./unified-registry-ZUPTC7OR.js");
2537
+ const { resetGlobalRegistry } = await import("./unified-registry-VQPPIL6M.js");
2505
2538
  resetGlobalRegistry();
2506
2539
  return globalRegistry;
2507
2540
  }
@@ -13785,7 +13818,7 @@ var CompositeRouter = class _CompositeRouter {
13785
13818
  */
13786
13819
  async consultUnifiedContext(task) {
13787
13820
  try {
13788
- const { getContextForTask, inferTaskCategory } = await import("./context-retriever-MPZ7T4VA.js");
13821
+ const { getContextForTask, inferTaskCategory } = await import("./context-retriever-3QKHEA5U.js");
13789
13822
  const ctx = await getContextForTask({
13790
13823
  task: task.content,
13791
13824
  category: inferTaskCategory(task.content),
@@ -15288,4 +15321,4 @@ export {
15288
15321
  AgentCapability,
15289
15322
  OrchestratorError
15290
15323
  };
15291
- //# sourceMappingURL=chunk-Q4JNYY2Y.js.map
15324
+ //# sourceMappingURL=chunk-FENIEDNW.js.map