nexus-agents 2.129.2 → 2.130.1

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 (119) hide show
  1. package/dist/{child-mcp-config-TQIZEHVP.js → child-mcp-config-M7WR4XBB.js} +2 -2
  2. package/dist/{chunk-SDLDZL4K.js → chunk-233PA3DF.js} +90 -129
  3. package/dist/chunk-233PA3DF.js.map +1 -0
  4. package/dist/{chunk-6RXP55DL.js → chunk-2GTW7RSB.js} +7 -7
  5. package/dist/{chunk-FJREQSFG.js → chunk-2Z4V5THE.js} +2 -2
  6. package/dist/{chunk-GO7JE2MA.js → chunk-3N7TSFKQ.js} +2 -2
  7. package/dist/{chunk-4FFWDTUE.js → chunk-3UXCVSLJ.js} +2 -2
  8. package/dist/{chunk-GZFECWWZ.js → chunk-4A6MSCNJ.js} +2 -2
  9. package/dist/{chunk-JAKYPFLI.js → chunk-5CADWTFO.js} +3 -3
  10. package/dist/{chunk-TP3VZUQL.js → chunk-5GQMP7QN.js} +3 -3
  11. package/dist/{chunk-RFXBV3A2.js → chunk-6GGHPZB5.js} +4 -4
  12. package/dist/{chunk-MXEUDSWT.js → chunk-6LNLTWHE.js} +5 -5
  13. package/dist/{chunk-ZJPKYTH5.js → chunk-7IMI64LW.js} +3 -3
  14. package/dist/{chunk-6RXWD3HT.js → chunk-A4MPCXZ7.js} +2 -2
  15. package/dist/{chunk-BKZ5YD66.js → chunk-ACARS7NG.js} +2 -2
  16. package/dist/{chunk-IASJVOVO.js → chunk-ADIJIYFA.js} +2 -2
  17. package/dist/{chunk-5QJTUA7Y.js → chunk-AVRE45DO.js} +3 -3
  18. package/dist/{chunk-YVJFUOHY.js → chunk-CMRQR57K.js} +3 -3
  19. package/dist/{chunk-KYLVH42N.js → chunk-E4LAXVQE.js} +2 -2
  20. package/dist/{chunk-QJ52FRQX.js → chunk-FDY6YOFG.js} +2 -2
  21. package/dist/{chunk-V2E74WBI.js → chunk-FFJEERPZ.js} +2 -2
  22. package/dist/{chunk-EORN73QB.js → chunk-IZO437XR.js} +7 -7
  23. package/dist/{chunk-4IBBMLNR.js → chunk-OGOE3NW5.js} +4 -4
  24. package/dist/{chunk-JQHZS7GU.js → chunk-PM4MZHQK.js} +4 -4
  25. package/dist/{chunk-NKAPCKHN.js → chunk-TA5HYM3H.js} +4 -4
  26. package/dist/{chunk-VLL4L5TK.js → chunk-TGDWL7FG.js} +2 -2
  27. package/dist/{chunk-U7HHO4UI.js → chunk-ULIAUMQD.js} +2 -2
  28. package/dist/{chunk-U3FNIYWH.js → chunk-VTTPYENR.js} +2 -2
  29. package/dist/{chunk-VBAGMX5I.js → chunk-VY5WEC2D.js} +124 -10
  30. package/dist/chunk-VY5WEC2D.js.map +1 -0
  31. package/dist/{chunk-47M2C4SO.js → chunk-YEK3ZHO6.js} +5 -5
  32. package/dist/{chunk-XMQ3EC2B.js → chunk-YHBVFTRG.js} +2 -2
  33. package/dist/{chunk-RAAMLWMY.js → chunk-YXFQ3L56.js} +7 -7
  34. package/dist/{chunk-GZTPQMD5.js → chunk-ZM3S6PTN.js} +3 -3
  35. package/dist/{chunk-HMOPW3XC.js → chunk-ZQ5K3PG4.js} +7 -7
  36. package/dist/{cli-circuit-breaker-3CWRA7DZ.js → cli-circuit-breaker-XRXLO2V6.js} +4 -4
  37. package/dist/cli.js +39 -39
  38. package/dist/{composite-router-MN6W5CEQ.js → composite-router-V36PBE7B.js} +2 -2
  39. package/dist/{consensus-vote-3EMLBZ25.js → consensus-vote-3REPKLK4.js} +13 -13
  40. package/dist/{context-retriever-OLWFVOJG.js → context-retriever-KCSSXI6X.js} +8 -8
  41. package/dist/{doctor-deep-W3QB24SM.js → doctor-deep-WID6FQ2F.js} +3 -3
  42. package/dist/{expert-bridge-LAB2W5ET.js → expert-bridge-F4UMZFWS.js} +4 -4
  43. package/dist/factory-B3SPS47O.js +21 -0
  44. package/dist/{factory-7ZKKQDCI.js → factory-YVHULPTE.js} +5 -5
  45. package/dist/{improvement-review-ATYDIHSF.js → improvement-review-AMVJW3SI.js} +4 -4
  46. package/dist/index.d.ts +3030 -2943
  47. package/dist/index.js +28 -28
  48. package/dist/{init-opencode-4O2R5S72.js → init-opencode-3UPZL2UQ.js} +5 -5
  49. package/dist/{issue-triage-G2AKATE4.js → issue-triage-KMDQN2UU.js} +5 -5
  50. package/dist/{pr-reviewer-helpers-Y6LEGX2P.js → pr-reviewer-helpers-2WBM5GL7.js} +4 -4
  51. package/dist/{registry-command-X6A27TNG.js → registry-command-AXNA2H35.js} +2 -2
  52. package/dist/{repo-security-plan-356NFHOZ.js → repo-security-plan-P2KJ4FDT.js} +3 -3
  53. package/dist/{research-helpers-synthesize-7XWIAM5D.js → research-helpers-synthesize-UHWT62F2.js} +4 -4
  54. package/dist/{routing-memory-YTLUUXXX.js → routing-memory-7RNR6A45.js} +2 -2
  55. package/dist/{session-memory-IHQCJWBK.js → session-memory-2J2UBZJA.js} +3 -3
  56. package/dist/{setup-command-Q4RVDZOO.js → setup-command-22IVI4T6.js} +11 -11
  57. package/dist/{setup-config-UA4M5OQ4.js → setup-config-Y3S2L4RD.js} +3 -3
  58. package/dist/{setup-custom-api-UXFN75SS.js → setup-custom-api-AZMHKIHE.js} +3 -3
  59. package/dist/{tool-memory-SJ57ZJ5F.js → tool-memory-MIZVB4ZT.js} +5 -5
  60. package/dist/{unified-registry-WMJQUA43.js → unified-registry-V4AZ6UYA.js} +9 -9
  61. package/dist/{weather-report-WSATZR44.js → weather-report-WZKEEAC7.js} +2 -2
  62. package/package.json +1 -1
  63. package/dist/chunk-SDLDZL4K.js.map +0 -1
  64. package/dist/chunk-VBAGMX5I.js.map +0 -1
  65. package/dist/factory-JNLNQ67U.js +0 -21
  66. /package/dist/{child-mcp-config-TQIZEHVP.js.map → child-mcp-config-M7WR4XBB.js.map} +0 -0
  67. /package/dist/{chunk-6RXP55DL.js.map → chunk-2GTW7RSB.js.map} +0 -0
  68. /package/dist/{chunk-FJREQSFG.js.map → chunk-2Z4V5THE.js.map} +0 -0
  69. /package/dist/{chunk-GO7JE2MA.js.map → chunk-3N7TSFKQ.js.map} +0 -0
  70. /package/dist/{chunk-4FFWDTUE.js.map → chunk-3UXCVSLJ.js.map} +0 -0
  71. /package/dist/{chunk-GZFECWWZ.js.map → chunk-4A6MSCNJ.js.map} +0 -0
  72. /package/dist/{chunk-JAKYPFLI.js.map → chunk-5CADWTFO.js.map} +0 -0
  73. /package/dist/{chunk-TP3VZUQL.js.map → chunk-5GQMP7QN.js.map} +0 -0
  74. /package/dist/{chunk-RFXBV3A2.js.map → chunk-6GGHPZB5.js.map} +0 -0
  75. /package/dist/{chunk-MXEUDSWT.js.map → chunk-6LNLTWHE.js.map} +0 -0
  76. /package/dist/{chunk-ZJPKYTH5.js.map → chunk-7IMI64LW.js.map} +0 -0
  77. /package/dist/{chunk-6RXWD3HT.js.map → chunk-A4MPCXZ7.js.map} +0 -0
  78. /package/dist/{chunk-BKZ5YD66.js.map → chunk-ACARS7NG.js.map} +0 -0
  79. /package/dist/{chunk-IASJVOVO.js.map → chunk-ADIJIYFA.js.map} +0 -0
  80. /package/dist/{chunk-5QJTUA7Y.js.map → chunk-AVRE45DO.js.map} +0 -0
  81. /package/dist/{chunk-YVJFUOHY.js.map → chunk-CMRQR57K.js.map} +0 -0
  82. /package/dist/{chunk-KYLVH42N.js.map → chunk-E4LAXVQE.js.map} +0 -0
  83. /package/dist/{chunk-QJ52FRQX.js.map → chunk-FDY6YOFG.js.map} +0 -0
  84. /package/dist/{chunk-V2E74WBI.js.map → chunk-FFJEERPZ.js.map} +0 -0
  85. /package/dist/{chunk-EORN73QB.js.map → chunk-IZO437XR.js.map} +0 -0
  86. /package/dist/{chunk-4IBBMLNR.js.map → chunk-OGOE3NW5.js.map} +0 -0
  87. /package/dist/{chunk-JQHZS7GU.js.map → chunk-PM4MZHQK.js.map} +0 -0
  88. /package/dist/{chunk-NKAPCKHN.js.map → chunk-TA5HYM3H.js.map} +0 -0
  89. /package/dist/{chunk-VLL4L5TK.js.map → chunk-TGDWL7FG.js.map} +0 -0
  90. /package/dist/{chunk-U7HHO4UI.js.map → chunk-ULIAUMQD.js.map} +0 -0
  91. /package/dist/{chunk-U3FNIYWH.js.map → chunk-VTTPYENR.js.map} +0 -0
  92. /package/dist/{chunk-47M2C4SO.js.map → chunk-YEK3ZHO6.js.map} +0 -0
  93. /package/dist/{chunk-XMQ3EC2B.js.map → chunk-YHBVFTRG.js.map} +0 -0
  94. /package/dist/{chunk-RAAMLWMY.js.map → chunk-YXFQ3L56.js.map} +0 -0
  95. /package/dist/{chunk-GZTPQMD5.js.map → chunk-ZM3S6PTN.js.map} +0 -0
  96. /package/dist/{chunk-HMOPW3XC.js.map → chunk-ZQ5K3PG4.js.map} +0 -0
  97. /package/dist/{cli-circuit-breaker-3CWRA7DZ.js.map → cli-circuit-breaker-XRXLO2V6.js.map} +0 -0
  98. /package/dist/{composite-router-MN6W5CEQ.js.map → composite-router-V36PBE7B.js.map} +0 -0
  99. /package/dist/{consensus-vote-3EMLBZ25.js.map → consensus-vote-3REPKLK4.js.map} +0 -0
  100. /package/dist/{context-retriever-OLWFVOJG.js.map → context-retriever-KCSSXI6X.js.map} +0 -0
  101. /package/dist/{doctor-deep-W3QB24SM.js.map → doctor-deep-WID6FQ2F.js.map} +0 -0
  102. /package/dist/{expert-bridge-LAB2W5ET.js.map → expert-bridge-F4UMZFWS.js.map} +0 -0
  103. /package/dist/{factory-7ZKKQDCI.js.map → factory-B3SPS47O.js.map} +0 -0
  104. /package/dist/{factory-JNLNQ67U.js.map → factory-YVHULPTE.js.map} +0 -0
  105. /package/dist/{improvement-review-ATYDIHSF.js.map → improvement-review-AMVJW3SI.js.map} +0 -0
  106. /package/dist/{init-opencode-4O2R5S72.js.map → init-opencode-3UPZL2UQ.js.map} +0 -0
  107. /package/dist/{issue-triage-G2AKATE4.js.map → issue-triage-KMDQN2UU.js.map} +0 -0
  108. /package/dist/{pr-reviewer-helpers-Y6LEGX2P.js.map → pr-reviewer-helpers-2WBM5GL7.js.map} +0 -0
  109. /package/dist/{registry-command-X6A27TNG.js.map → registry-command-AXNA2H35.js.map} +0 -0
  110. /package/dist/{repo-security-plan-356NFHOZ.js.map → repo-security-plan-P2KJ4FDT.js.map} +0 -0
  111. /package/dist/{research-helpers-synthesize-7XWIAM5D.js.map → research-helpers-synthesize-UHWT62F2.js.map} +0 -0
  112. /package/dist/{routing-memory-YTLUUXXX.js.map → routing-memory-7RNR6A45.js.map} +0 -0
  113. /package/dist/{session-memory-IHQCJWBK.js.map → session-memory-2J2UBZJA.js.map} +0 -0
  114. /package/dist/{setup-command-Q4RVDZOO.js.map → setup-command-22IVI4T6.js.map} +0 -0
  115. /package/dist/{setup-config-UA4M5OQ4.js.map → setup-config-Y3S2L4RD.js.map} +0 -0
  116. /package/dist/{setup-custom-api-UXFN75SS.js.map → setup-custom-api-AZMHKIHE.js.map} +0 -0
  117. /package/dist/{tool-memory-SJ57ZJ5F.js.map → tool-memory-MIZVB4ZT.js.map} +0 -0
  118. /package/dist/{unified-registry-WMJQUA43.js.map → unified-registry-V4AZ6UYA.js.map} +0 -0
  119. /package/dist/{weather-report-WSATZR44.js.map → weather-report-WZKEEAC7.js.map} +0 -0
@@ -2153,6 +2153,11 @@ import { existsSync as existsSync3, readFileSync as readFileSync3 } from "fs";
2153
2153
  import { dirname as dirname2, join as join2 } from "path";
2154
2154
  import { fileURLToPath as fileURLToPath2 } from "url";
2155
2155
  function defaultGeneratedPath() {
2156
+ try {
2157
+ const dataPath = nexusDataPath("model-registry.generated.json");
2158
+ if (existsSync3(dataPath)) return dataPath;
2159
+ } catch {
2160
+ }
2156
2161
  const here = dirname2(fileURLToPath2(import.meta.url));
2157
2162
  return join2(here, "model-registry.generated.json");
2158
2163
  }
@@ -2330,7 +2335,7 @@ function setDefaultRegistry(registry) {
2330
2335
  }
2331
2336
  async function reloadDefaultRegistry() {
2332
2337
  globalRegistry = buildDefaultRegistry();
2333
- const { resetGlobalRegistry } = await import("./unified-registry-WMJQUA43.js");
2338
+ const { resetGlobalRegistry } = await import("./unified-registry-V4AZ6UYA.js");
2334
2339
  resetGlobalRegistry();
2335
2340
  return globalRegistry;
2336
2341
  }
@@ -12757,7 +12762,7 @@ var CompositeRouter = class _CompositeRouter {
12757
12762
  */
12758
12763
  async consultUnifiedContext(task) {
12759
12764
  try {
12760
- const { getContextForTask, inferTaskCategory } = await import("./context-retriever-OLWFVOJG.js");
12765
+ const { getContextForTask, inferTaskCategory } = await import("./context-retriever-KCSSXI6X.js");
12761
12766
  const ctx = await getContextForTask({
12762
12767
  task: task.content,
12763
12768
  category: inferTaskCategory(task.content),
@@ -13480,6 +13485,10 @@ var ExperienceMemoryImpl = class {
13480
13485
  (p) => p.successRate >= this.config.minExperienceSuccessRate && p.attemptCount >= 3
13481
13486
  );
13482
13487
  }
13488
+ /** #3234: all recorded entries across task types — for the research-maturity measurement surface. */
13489
+ getAllPatterns() {
13490
+ return [...this.patterns.values()];
13491
+ }
13483
13492
  getBestPattern(taskType, contextSignature) {
13484
13493
  let best = null;
13485
13494
  let bestScore = -1;
@@ -13726,6 +13735,96 @@ function defaultSharedDbPath() {
13726
13735
  return `${root}/memory/mobimem.db`;
13727
13736
  }
13728
13737
 
13738
+ // src/pipeline/research-context.ts
13739
+ var MAX_RENDERED_ITEMS = 8;
13740
+ function sanitizeExternal(value, maxLen = 160) {
13741
+ const collapsed = value.replace(/`/g, "").replace(/[-]/g, " ").replace(/\s+/g, " ").trim();
13742
+ return collapsed.length > maxLen ? `${collapsed.slice(0, maxLen - 1)}\u2026` : collapsed;
13743
+ }
13744
+ function buildResearchContextMetadata(discover, analyze) {
13745
+ const discoveredItems = discover.items.map((item) => ({
13746
+ title: item.title,
13747
+ url: item.url,
13748
+ ...item.relevanceScore !== void 0 ? { relevanceScore: item.relevanceScore } : {},
13749
+ alreadyInRegistry: item.alreadyInRegistry
13750
+ })).sort((a, b) => (b.relevanceScore ?? 0) - (a.relevanceScore ?? 0));
13751
+ return {
13752
+ discoveredItems,
13753
+ recommendations: analyze?.recommendations ?? [],
13754
+ qualitySignals: {
13755
+ totalFound: discover.totalFound,
13756
+ newItems: discover.newItems,
13757
+ alreadyInRegistry: discover.alreadyInRegistry
13758
+ }
13759
+ };
13760
+ }
13761
+ function renderResearchText(metadata, topic) {
13762
+ const { discoveredItems, recommendations, qualitySignals } = metadata;
13763
+ const lines = [];
13764
+ lines.push(`[Research] ${sanitizeExternal(topic, 120)}`);
13765
+ lines.push(
13766
+ `Maturity: ${String(qualitySignals.totalFound)} found, ${String(qualitySignals.newItems)} new, ${String(qualitySignals.alreadyInRegistry)} already in registry.`
13767
+ );
13768
+ if (discoveredItems.length > 0) {
13769
+ lines.push("Top discoveries (by relevance):");
13770
+ for (const item of discoveredItems.slice(0, MAX_RENDERED_ITEMS)) {
13771
+ const score = item.relevanceScore !== void 0 ? item.relevanceScore.toFixed(2) : "n/a";
13772
+ const known = item.alreadyInRegistry ? " [in registry]" : "";
13773
+ lines.push(`- ${sanitizeExternal(item.title)} (relevance ${score})${known}`);
13774
+ }
13775
+ } else {
13776
+ lines.push("Top discoveries (by relevance): none.");
13777
+ }
13778
+ if (recommendations.length > 0) {
13779
+ lines.push("Gap recommendations:");
13780
+ for (const rec of recommendations) lines.push(`- ${sanitizeExternal(rec)}`);
13781
+ }
13782
+ return lines.join("\n");
13783
+ }
13784
+ function buildResearchContext(discover, analyze, topic = discover.topic) {
13785
+ const metadata = buildResearchContextMetadata(discover, analyze);
13786
+ return { text: renderResearchText(metadata, topic), metadata };
13787
+ }
13788
+ var RESEARCH_MATURITY_SATURATION = 8;
13789
+ function deriveResearchMaturity(metadata) {
13790
+ const found = metadata.qualitySignals.totalFound;
13791
+ if (found <= 0) return 0;
13792
+ return Math.min(1, found / RESEARCH_MATURITY_SATURATION);
13793
+ }
13794
+ function researchMaturityBucket(score) {
13795
+ if (score <= 0) return "none";
13796
+ return score < 0.5 ? "low" : "high";
13797
+ }
13798
+ function computeResearchMaturityReport(records) {
13799
+ const acc = {
13800
+ none: { count: 0, succ: 0, att: 0 },
13801
+ low: { count: 0, succ: 0, att: 0 },
13802
+ high: { count: 0, succ: 0, att: 0 }
13803
+ };
13804
+ for (const r of records) {
13805
+ const b = acc[researchMaturityBucket(r.researchMaturity ?? 0)];
13806
+ b.count += 1;
13807
+ b.succ += r.successCount;
13808
+ b.att += r.attemptCount;
13809
+ }
13810
+ const rate = (b) => b.att > 0 ? b.succ / b.att : 0;
13811
+ const byBucket = {
13812
+ none: { count: acc.none.count, attempts: acc.none.att, successRate: rate(acc.none) },
13813
+ low: { count: acc.low.count, attempts: acc.low.att, successRate: rate(acc.low) },
13814
+ high: { count: acc.high.count, attempts: acc.high.att, successRate: rate(acc.high) }
13815
+ };
13816
+ const delta = byBucket.high.count > 0 && byBucket.none.count > 0 ? byBucket.high.successRate - byBucket.none.successRate : 0;
13817
+ return { byBucket, highVsNoneDelta: delta, totalRecords: records.length };
13818
+ }
13819
+ var EMPTY_RESEARCH_METADATA = {
13820
+ discoveredItems: [],
13821
+ recommendations: [],
13822
+ qualitySignals: { totalFound: 0, newItems: 0, alreadyInRegistry: 0 }
13823
+ };
13824
+ function researchContextFromText(text) {
13825
+ return { text, metadata: EMPTY_RESEARCH_METADATA };
13826
+ }
13827
+
13729
13828
  // src/context/routing-memory.ts
13730
13829
  var DEFAULT_ROUTING_MEMORY_CONFIG = {
13731
13830
  minObservations: 5,
@@ -13816,15 +13915,13 @@ var RoutingMemory = class {
13816
13915
  durationMs: Math.floor(metrics2.durationMs / models.length),
13817
13916
  success
13818
13917
  }));
13819
- const outcome = metrics2.qualityScore !== void 0 ? {
13918
+ const outcome = {
13820
13919
  success,
13821
- qualityScore: metrics2.qualityScore,
13822
13920
  totalDurationMs: metrics2.durationMs,
13823
- tokensUsed: metrics2.tokensUsed
13824
- } : {
13825
- success,
13826
- totalDurationMs: metrics2.durationMs,
13827
- tokensUsed: metrics2.tokensUsed
13921
+ tokensUsed: metrics2.tokensUsed,
13922
+ ...metrics2.qualityScore !== void 0 ? { qualityScore: metrics2.qualityScore } : {},
13923
+ // #3234: record research-maturity for the measurement surface (#3815 gates use).
13924
+ ...metrics2.researchMaturity !== void 0 ? { researchMaturity: metrics2.researchMaturity } : {}
13828
13925
  };
13829
13926
  this.mobimem.experience.recordExecution(workflow, actionSequence, outcome, contextSignature);
13830
13927
  this.logger.debug("Recorded routing experience", {
@@ -13838,6 +13935,20 @@ var RoutingMemory = class {
13838
13935
  const experiences = this.mobimem.experience.findPatterns(workflow);
13839
13936
  return experiences.filter((exp) => exp.successRate >= this.config.successRateThreshold).map((exp) => this.mapExperienceToPattern(exp));
13840
13937
  }
13938
+ /**
13939
+ * #3234 measurement surface: bucket ALL recorded experience by the run's
13940
+ * research-maturity and report the attempt-weighted success rate per bucket.
13941
+ * This is the read-only consumer of {@link ExecutionOutcome.researchMaturity} —
13942
+ * it does NOT influence routing (live weighting is gated on a measured lift, #3815).
13943
+ */
13944
+ getResearchMaturityReport() {
13945
+ const records = this.mobimem.experience.getAllPatterns().map((exp) => ({
13946
+ successCount: exp.successCount,
13947
+ attemptCount: exp.attemptCount,
13948
+ researchMaturity: exp.outcome.researchMaturity
13949
+ }));
13950
+ return computeResearchMaturityReport(records);
13951
+ }
13841
13952
  cacheAction(action, model, result, durationMs2) {
13842
13953
  const input = { actionSignature: action, model };
13843
13954
  this.mobimem.action.cache(input, result, durationMs2);
@@ -14104,6 +14215,9 @@ export {
14104
14215
  DEFAULT_ZERO_ROUTER_CONFIG,
14105
14216
  getSharedMobiMem,
14106
14217
  setSharedMobiMemDbPathResolver,
14218
+ buildResearchContext,
14219
+ deriveResearchMaturity,
14220
+ researchContextFromText,
14107
14221
  DEFAULT_ROUTING_MEMORY_CONFIG,
14108
14222
  RoutingMemory,
14109
14223
  createRoutingMemory,
@@ -14143,4 +14257,4 @@ export {
14143
14257
  AgentCapability,
14144
14258
  OrchestratorError
14145
14259
  };
14146
- //# sourceMappingURL=chunk-VBAGMX5I.js.map
14260
+ //# sourceMappingURL=chunk-VY5WEC2D.js.map