nexus-agents 8.131.4 → 8.131.5

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 (135) hide show
  1. package/dist/{ast-rule-runner-SMEE7RYS.js → ast-rule-runner-OK5SP2SI.js} +3 -3
  2. package/dist/{child-mcp-config-EGYYY7H5.js → child-mcp-config-Y3IZNZDM.js} +2 -2
  3. package/dist/{chunk-Z6O7SWLZ.js → chunk-2L3IWNNW.js} +9 -9
  4. package/dist/{chunk-OPIP264O.js → chunk-2LLIATHO.js} +3 -3
  5. package/dist/{chunk-4I3GJWP7.js → chunk-2TZENGN3.js} +5 -5
  6. package/dist/{chunk-EIKL76VP.js → chunk-3EFUVKRE.js} +2 -2
  7. package/dist/{chunk-45LK6KOK.js → chunk-6BGTOBJV.js} +12 -12
  8. package/dist/{chunk-IX4T2OZK.js → chunk-6C4D4MOD.js} +3 -3
  9. package/dist/{chunk-FHOAHIYC.js → chunk-72DJDZNB.js} +2 -2
  10. package/dist/{chunk-TK7GELG7.js → chunk-7GFZNDCZ.js} +4 -4
  11. package/dist/{chunk-WG3R5JFJ.js → chunk-ABYYNREH.js} +5 -5
  12. package/dist/{chunk-4566OBYW.js → chunk-AKO22BIS.js} +5 -5
  13. package/dist/{chunk-JYCRKUFW.js → chunk-B3MCT453.js} +6 -6
  14. package/dist/{chunk-RJJWQFTK.js → chunk-BBCR7MP5.js} +2 -2
  15. package/dist/{chunk-53SE2SML.js → chunk-BWCAK56M.js} +5 -5
  16. package/dist/{chunk-24J3GS2G.js → chunk-CPLMJP53.js} +2 -2
  17. package/dist/{chunk-ILXLX2QB.js → chunk-DN4X2ZDO.js} +2 -2
  18. package/dist/{chunk-UC2QFHD3.js → chunk-EKMH7ECT.js} +7 -7
  19. package/dist/{chunk-AW7OAZP5.js → chunk-EKRCJEA5.js} +2 -2
  20. package/dist/{chunk-RT2RZ2N3.js → chunk-HFKQXKP3.js} +3 -3
  21. package/dist/{chunk-2H6SOV56.js → chunk-HK4JMKUH.js} +4 -4
  22. package/dist/{chunk-QWSLDY4R.js → chunk-LRD7TNMD.js} +95 -63
  23. package/dist/chunk-LRD7TNMD.js.map +1 -0
  24. package/dist/{chunk-JCKH5Q3G.js → chunk-MN5YUEEJ.js} +2 -2
  25. package/dist/{chunk-XUPZ5LUK.js → chunk-OCD5QFUN.js} +4 -4
  26. package/dist/{chunk-SWM3UQVB.js → chunk-OGAFETBY.js} +2 -2
  27. package/dist/{chunk-CEPCDDL6.js → chunk-OONBTXWQ.js} +2 -2
  28. package/dist/{chunk-UAGNX4MV.js → chunk-SFGBHVKV.js} +2 -2
  29. package/dist/{chunk-PWVXFZC6.js → chunk-SLRTWAQY.js} +4 -4
  30. package/dist/{chunk-4EDCJTGY.js → chunk-TYLCUUSS.js} +2 -2
  31. package/dist/{chunk-3U5CO6JR.js → chunk-UO22VHII.js} +2 -2
  32. package/dist/{chunk-ZYKJCJGF.js → chunk-UXG3TE3G.js} +11 -11
  33. package/dist/{chunk-XMI6V44P.js → chunk-VZVTHZPY.js} +3 -3
  34. package/dist/{chunk-3YC4DKBY.js → chunk-XN4Y3ALJ.js} +2 -2
  35. package/dist/{chunk-VIBLSP2T.js → chunk-XRHQVWJC.js} +57 -44
  36. package/dist/{chunk-VIBLSP2T.js.map → chunk-XRHQVWJC.js.map} +1 -1
  37. package/dist/{chunk-JPEDMS2W.js → chunk-YOL6VN3A.js} +2 -2
  38. package/dist/{chunk-GAZRHKPI.js → chunk-ZRQFTVOQ.js} +3 -3
  39. package/dist/{chunk-NSTKD4T6.js → chunk-ZTTJUML2.js} +2 -2
  40. package/dist/{cli-circuit-breaker-LLCVUTDD.js → cli-circuit-breaker-P463NR3T.js} +3 -3
  41. package/dist/cli.js +119 -57
  42. package/dist/cli.js.map +1 -1
  43. package/dist/{composite-router-H4SCUKNA.js → composite-router-V4ZLX3XA.js} +2 -2
  44. package/dist/{consensus-vote-WRQVPISJ.js → consensus-vote-AO5355WA.js} +17 -17
  45. package/dist/{context-retriever-P4ALBDH6.js → context-retriever-ZSQKNX33.js} +8 -8
  46. package/dist/{doctor-deep-BNHOYTGK.js → doctor-deep-WLR7DTZ5.js} +3 -3
  47. package/dist/{doctor-gateway-report-EJHJKEE7.js → doctor-gateway-report-CXXHUZBY.js} +8 -8
  48. package/dist/{doctor-live-WABLQ7IF.js → doctor-live-M52L6M2X.js} +11 -11
  49. package/dist/{expert-bridge-UBJJ7VA6.js → expert-bridge-SJ6NYJYS.js} +4 -4
  50. package/dist/{factory-2P7VOA4W.js → factory-6D76CHVA.js} +10 -10
  51. package/dist/{factory-AZOYPTG3.js → factory-U2CSSHJM.js} +5 -5
  52. package/dist/{improvement-review-VUCSKH24.js → improvement-review-XRUFNUJ5.js} +6 -6
  53. package/dist/index.d.ts +3 -7
  54. package/dist/index.js +32 -32
  55. package/dist/{init-opencode-UVQVMCHG.js → init-opencode-NJAG467M.js} +6 -6
  56. package/dist/{issue-triage-HBM6RK3H.js → issue-triage-EK4IJ47O.js} +6 -6
  57. package/dist/{openai-compat-adapter-DOOGDW43.js → openai-compat-adapter-YNSNL2BR.js} +6 -6
  58. package/dist/{outcome-store-adapter-UJPQYAUW.js → outcome-store-adapter-BJVVKO2N.js} +2 -2
  59. package/dist/{pr-reviewer-helpers-2YO45CBX.js → pr-reviewer-helpers-XO5GFVHN.js} +4 -4
  60. package/dist/{registry-command-VGINIZAE.js → registry-command-RLUQMC4O.js} +2 -2
  61. package/dist/{repo-security-plan-EVDIUHDI.js → repo-security-plan-2CJOCQFD.js} +3 -3
  62. package/dist/{research-helpers-synthesize-BMVACM2N.js → research-helpers-synthesize-B2ZNHO23.js} +4 -4
  63. package/dist/{routing-memory-E5WQ2YDY.js → routing-memory-7ZB2WATF.js} +2 -2
  64. package/dist/{session-memory-RRFETFXN.js → session-memory-OL5G7ODY.js} +3 -3
  65. package/dist/{setup-config-46VZEAJM.js → setup-config-HMJTMNKL.js} +3 -3
  66. package/dist/{setup-custom-api-YMDQK6YW.js → setup-custom-api-23RWZLDV.js} +4 -4
  67. package/dist/setup-data-dir-K76VIPTJ.js +33 -0
  68. package/dist/{tool-memory-HXZQYP4L.js → tool-memory-ZKUDRRLA.js} +5 -5
  69. package/dist/{unified-registry-SAUDS2DQ.js → unified-registry-VQGN3IEU.js} +11 -11
  70. package/dist/{weather-report-C2M3EEXG.js → weather-report-TV75JPE3.js} +2 -2
  71. package/package.json +1 -1
  72. package/dist/chunk-QWSLDY4R.js.map +0 -1
  73. package/dist/setup-data-dir-MDGUHYYP.js +0 -33
  74. /package/dist/{ast-rule-runner-SMEE7RYS.js.map → ast-rule-runner-OK5SP2SI.js.map} +0 -0
  75. /package/dist/{child-mcp-config-EGYYY7H5.js.map → child-mcp-config-Y3IZNZDM.js.map} +0 -0
  76. /package/dist/{chunk-Z6O7SWLZ.js.map → chunk-2L3IWNNW.js.map} +0 -0
  77. /package/dist/{chunk-OPIP264O.js.map → chunk-2LLIATHO.js.map} +0 -0
  78. /package/dist/{chunk-4I3GJWP7.js.map → chunk-2TZENGN3.js.map} +0 -0
  79. /package/dist/{chunk-EIKL76VP.js.map → chunk-3EFUVKRE.js.map} +0 -0
  80. /package/dist/{chunk-45LK6KOK.js.map → chunk-6BGTOBJV.js.map} +0 -0
  81. /package/dist/{chunk-IX4T2OZK.js.map → chunk-6C4D4MOD.js.map} +0 -0
  82. /package/dist/{chunk-FHOAHIYC.js.map → chunk-72DJDZNB.js.map} +0 -0
  83. /package/dist/{chunk-TK7GELG7.js.map → chunk-7GFZNDCZ.js.map} +0 -0
  84. /package/dist/{chunk-WG3R5JFJ.js.map → chunk-ABYYNREH.js.map} +0 -0
  85. /package/dist/{chunk-4566OBYW.js.map → chunk-AKO22BIS.js.map} +0 -0
  86. /package/dist/{chunk-JYCRKUFW.js.map → chunk-B3MCT453.js.map} +0 -0
  87. /package/dist/{chunk-RJJWQFTK.js.map → chunk-BBCR7MP5.js.map} +0 -0
  88. /package/dist/{chunk-53SE2SML.js.map → chunk-BWCAK56M.js.map} +0 -0
  89. /package/dist/{chunk-24J3GS2G.js.map → chunk-CPLMJP53.js.map} +0 -0
  90. /package/dist/{chunk-ILXLX2QB.js.map → chunk-DN4X2ZDO.js.map} +0 -0
  91. /package/dist/{chunk-UC2QFHD3.js.map → chunk-EKMH7ECT.js.map} +0 -0
  92. /package/dist/{chunk-AW7OAZP5.js.map → chunk-EKRCJEA5.js.map} +0 -0
  93. /package/dist/{chunk-RT2RZ2N3.js.map → chunk-HFKQXKP3.js.map} +0 -0
  94. /package/dist/{chunk-2H6SOV56.js.map → chunk-HK4JMKUH.js.map} +0 -0
  95. /package/dist/{chunk-JCKH5Q3G.js.map → chunk-MN5YUEEJ.js.map} +0 -0
  96. /package/dist/{chunk-XUPZ5LUK.js.map → chunk-OCD5QFUN.js.map} +0 -0
  97. /package/dist/{chunk-SWM3UQVB.js.map → chunk-OGAFETBY.js.map} +0 -0
  98. /package/dist/{chunk-CEPCDDL6.js.map → chunk-OONBTXWQ.js.map} +0 -0
  99. /package/dist/{chunk-UAGNX4MV.js.map → chunk-SFGBHVKV.js.map} +0 -0
  100. /package/dist/{chunk-PWVXFZC6.js.map → chunk-SLRTWAQY.js.map} +0 -0
  101. /package/dist/{chunk-4EDCJTGY.js.map → chunk-TYLCUUSS.js.map} +0 -0
  102. /package/dist/{chunk-3U5CO6JR.js.map → chunk-UO22VHII.js.map} +0 -0
  103. /package/dist/{chunk-ZYKJCJGF.js.map → chunk-UXG3TE3G.js.map} +0 -0
  104. /package/dist/{chunk-XMI6V44P.js.map → chunk-VZVTHZPY.js.map} +0 -0
  105. /package/dist/{chunk-3YC4DKBY.js.map → chunk-XN4Y3ALJ.js.map} +0 -0
  106. /package/dist/{chunk-JPEDMS2W.js.map → chunk-YOL6VN3A.js.map} +0 -0
  107. /package/dist/{chunk-GAZRHKPI.js.map → chunk-ZRQFTVOQ.js.map} +0 -0
  108. /package/dist/{chunk-NSTKD4T6.js.map → chunk-ZTTJUML2.js.map} +0 -0
  109. /package/dist/{cli-circuit-breaker-LLCVUTDD.js.map → cli-circuit-breaker-P463NR3T.js.map} +0 -0
  110. /package/dist/{composite-router-H4SCUKNA.js.map → composite-router-V4ZLX3XA.js.map} +0 -0
  111. /package/dist/{consensus-vote-WRQVPISJ.js.map → consensus-vote-AO5355WA.js.map} +0 -0
  112. /package/dist/{context-retriever-P4ALBDH6.js.map → context-retriever-ZSQKNX33.js.map} +0 -0
  113. /package/dist/{doctor-deep-BNHOYTGK.js.map → doctor-deep-WLR7DTZ5.js.map} +0 -0
  114. /package/dist/{doctor-gateway-report-EJHJKEE7.js.map → doctor-gateway-report-CXXHUZBY.js.map} +0 -0
  115. /package/dist/{doctor-live-WABLQ7IF.js.map → doctor-live-M52L6M2X.js.map} +0 -0
  116. /package/dist/{expert-bridge-UBJJ7VA6.js.map → expert-bridge-SJ6NYJYS.js.map} +0 -0
  117. /package/dist/{factory-2P7VOA4W.js.map → factory-6D76CHVA.js.map} +0 -0
  118. /package/dist/{factory-AZOYPTG3.js.map → factory-U2CSSHJM.js.map} +0 -0
  119. /package/dist/{improvement-review-VUCSKH24.js.map → improvement-review-XRUFNUJ5.js.map} +0 -0
  120. /package/dist/{init-opencode-UVQVMCHG.js.map → init-opencode-NJAG467M.js.map} +0 -0
  121. /package/dist/{issue-triage-HBM6RK3H.js.map → issue-triage-EK4IJ47O.js.map} +0 -0
  122. /package/dist/{openai-compat-adapter-DOOGDW43.js.map → openai-compat-adapter-YNSNL2BR.js.map} +0 -0
  123. /package/dist/{outcome-store-adapter-UJPQYAUW.js.map → outcome-store-adapter-BJVVKO2N.js.map} +0 -0
  124. /package/dist/{pr-reviewer-helpers-2YO45CBX.js.map → pr-reviewer-helpers-XO5GFVHN.js.map} +0 -0
  125. /package/dist/{registry-command-VGINIZAE.js.map → registry-command-RLUQMC4O.js.map} +0 -0
  126. /package/dist/{repo-security-plan-EVDIUHDI.js.map → repo-security-plan-2CJOCQFD.js.map} +0 -0
  127. /package/dist/{research-helpers-synthesize-BMVACM2N.js.map → research-helpers-synthesize-B2ZNHO23.js.map} +0 -0
  128. /package/dist/{routing-memory-E5WQ2YDY.js.map → routing-memory-7ZB2WATF.js.map} +0 -0
  129. /package/dist/{session-memory-RRFETFXN.js.map → session-memory-OL5G7ODY.js.map} +0 -0
  130. /package/dist/{setup-config-46VZEAJM.js.map → setup-config-HMJTMNKL.js.map} +0 -0
  131. /package/dist/{setup-custom-api-YMDQK6YW.js.map → setup-custom-api-23RWZLDV.js.map} +0 -0
  132. /package/dist/{setup-data-dir-MDGUHYYP.js.map → setup-data-dir-K76VIPTJ.js.map} +0 -0
  133. /package/dist/{tool-memory-HXZQYP4L.js.map → tool-memory-ZKUDRRLA.js.map} +0 -0
  134. /package/dist/{unified-registry-SAUDS2DQ.js.map → unified-registry-VQGN3IEU.js.map} +0 -0
  135. /package/dist/{weather-report-C2M3EEXG.js.map → weather-report-TV75JPE3.js.map} +0 -0
@@ -2838,7 +2838,7 @@ function setDefaultRegistry(registry) {
2838
2838
  }
2839
2839
  async function reloadDefaultRegistry() {
2840
2840
  globalRegistry = buildDefaultRegistry();
2841
- const { resetGlobalRegistry } = await import("./unified-registry-SAUDS2DQ.js");
2841
+ const { resetGlobalRegistry } = await import("./unified-registry-VQGN3IEU.js");
2842
2842
  resetGlobalRegistry();
2843
2843
  return globalRegistry;
2844
2844
  }
@@ -13267,7 +13267,7 @@ function getOutcomeStore() {
13267
13267
  async function attachOutcomeStoreToRegistry(store) {
13268
13268
  try {
13269
13269
  const { getMemoryRegistry } = await import("./dist-RRRU2OKU.js");
13270
- const { OutcomeStoreAdapter } = await import("./outcome-store-adapter-UJPQYAUW.js");
13270
+ const { OutcomeStoreAdapter } = await import("./outcome-store-adapter-BJVVKO2N.js");
13271
13271
  const { ensureSharedMemoryRegistry } = await import("./tool-memory-registry-adapters-FO6JVQSX.js");
13272
13272
  ensureSharedMemoryRegistry();
13273
13273
  getMemoryRegistry().attach("outcomes", new OutcomeStoreAdapter(store));
@@ -13501,18 +13501,8 @@ function generateSyntheticPriors() {
13501
13501
  }
13502
13502
  return priors;
13503
13503
  }
13504
- function runWarmUp(logger16) {
13505
- const log = logger16 ?? createLogger({ component: "warm-up" });
13506
- const store = getOutcomeStore();
13507
- const existing = store.query();
13508
- const hasSynthetic = existing.some((o) => o.qualitySignals?.includes(SYNTHETIC_MARKER) === true);
13509
- if (hasSynthetic) {
13510
- log.info("Warm-up skipped: synthetic outcomes already exist");
13511
- return { seeded: 0, skipped: true, reason: "synthetic outcomes already exist" };
13512
- }
13513
- const priors = generateSyntheticPriors();
13514
- const now = (/* @__PURE__ */ new Date()).toISOString();
13515
- let seeded = 0;
13504
+ function buildSyntheticOutcomes(timestamp) {
13505
+ const outcomes = [];
13516
13506
  for (const spec of TASK_SPECIALIZATION_MATRIX) {
13517
13507
  for (const cli of CLI_NAMES2) {
13518
13508
  let reward;
@@ -13523,21 +13513,34 @@ function runWarmUp(logger16) {
13523
13513
  } else {
13524
13514
  reward = OTHER_REWARD;
13525
13515
  }
13526
- const outcome = {
13516
+ outcomes.push({
13527
13517
  id: `synthetic-${cli}-${spec.category}`,
13528
13518
  cli,
13529
13519
  category: spec.category,
13530
13520
  model: `${cli}-default`,
13531
13521
  success: reward >= 0.5,
13532
13522
  durationMs: 0,
13533
- timestamp: now,
13523
+ timestamp,
13534
13524
  qualitySignals: [SYNTHETIC_MARKER],
13535
13525
  source: "manual"
13536
- };
13537
- store.append(outcome);
13538
- seeded++;
13526
+ });
13539
13527
  }
13540
13528
  }
13529
+ return outcomes;
13530
+ }
13531
+ function runWarmUp(logger16) {
13532
+ const log = logger16 ?? createLogger({ component: "warm-up" });
13533
+ const store = getOutcomeStore();
13534
+ const existing = store.query();
13535
+ const hasSynthetic = existing.some((o) => o.qualitySignals?.includes(SYNTHETIC_MARKER) === true);
13536
+ if (hasSynthetic) {
13537
+ log.info("Warm-up skipped: synthetic outcomes already exist");
13538
+ return { seeded: 0, skipped: true, reason: "synthetic outcomes already exist" };
13539
+ }
13540
+ const priors = generateSyntheticPriors();
13541
+ const outcomes = buildSyntheticOutcomes((/* @__PURE__ */ new Date()).toISOString());
13542
+ for (const outcome of outcomes) store.append(outcome);
13543
+ const seeded = outcomes.length;
13541
13544
  log.info("LinUCB warm-up complete", {
13542
13545
  seeded,
13543
13546
  priors: Object.fromEntries(priors)
@@ -13545,6 +13548,75 @@ function runWarmUp(logger16) {
13545
13548
  return { seeded, skipped: false };
13546
13549
  }
13547
13550
 
13551
+ // src/cli-adapters/bandit-warm-start.ts
13552
+ var LOOKBACK_DAYS = 30;
13553
+ var LOOKBACK_MS = LOOKBACK_DAYS * 24 * 60 * 60 * 1e3;
13554
+ function warmStartBandit(bandit, logger16, options = {}) {
13555
+ const reconstructedAt = getTimeProvider().nowIso();
13556
+ let replayed = 0;
13557
+ let empiricalOutcomesReplayed = 0;
13558
+ let fallbackUsed = false;
13559
+ let fallbackOutcomesReplayed = 0;
13560
+ let status = "complete";
13561
+ try {
13562
+ if (isPersistenceEnabled()) {
13563
+ const since = new Date(getTimeProvider().now() - LOOKBACK_MS).toISOString();
13564
+ const outcomes = getOutcomeStore().query({ since, excludeQualitySignals: ["e2e-eval"] });
13565
+ if (outcomes.length > 0) {
13566
+ replayed = bandit.warmStart(outcomes);
13567
+ empiricalOutcomesReplayed = countEmpiricalOutcomes(outcomes, bandit.getArmNames());
13568
+ logger16.info("LinUCB warm-started from recent outcomes", {
13569
+ outcomesAvailable: outcomes.length,
13570
+ outcomesReplayed: replayed,
13571
+ lookbackDays: 30
13572
+ });
13573
+ }
13574
+ }
13575
+ bandit.seedPriors(generateSyntheticPriors(), replayed === 0 ? 3 : 1);
13576
+ if (replayed === 0) {
13577
+ fallbackUsed = true;
13578
+ const fallback = options.persist === false ? memoryFallback() : persistedFallback(logger16);
13579
+ if (fallback.outcomes !== void 0) {
13580
+ fallbackOutcomesReplayed = bandit.warmStart(fallback.outcomes);
13581
+ }
13582
+ logger16.info("LinUCB cold-start seeded from specialization matrix", {
13583
+ syntheticOutcomes: fallback.seeded
13584
+ });
13585
+ }
13586
+ } catch (error) {
13587
+ status = "failed";
13588
+ logger16.warn("LinUCB warm-start failed, starting cold", { error: getErrorMessage(error) });
13589
+ }
13590
+ return {
13591
+ reconstructedAt,
13592
+ outcomesReplayed: replayed,
13593
+ empiricalOutcomesReplayed,
13594
+ lookbackDays: LOOKBACK_DAYS,
13595
+ fallbackUsed,
13596
+ fallbackOutcomesReplayed,
13597
+ status
13598
+ };
13599
+ }
13600
+ function persistedFallback(logger16) {
13601
+ const result = runWarmUp(logger16);
13602
+ if (result.skipped) return { outcomes: void 0, seeded: result.seeded };
13603
+ const outcomes = getOutcomeStore().query({ excludeQualitySignals: ["e2e-eval"] });
13604
+ return { outcomes, seeded: result.seeded };
13605
+ }
13606
+ function memoryFallback() {
13607
+ const store = getOutcomeStore();
13608
+ const hasSynthetic = store.query().some((o) => o.qualitySignals?.includes(SYNTHETIC_MARKER) === true);
13609
+ if (hasSynthetic) return { outcomes: void 0, seeded: 0 };
13610
+ const synthetic = buildSyntheticOutcomes((/* @__PURE__ */ new Date()).toISOString());
13611
+ const stored = store.query({ excludeQualitySignals: ["e2e-eval"] });
13612
+ return { outcomes: [...stored, ...synthetic], seeded: synthetic.length };
13613
+ }
13614
+ function countEmpiricalOutcomes(outcomes, arms) {
13615
+ return outcomes.filter(
13616
+ (outcome) => arms.includes(outcome.cli) && outcome.qualitySignals?.includes(SYNTHETIC_MARKER) !== true
13617
+ ).length;
13618
+ }
13619
+
13548
13620
  // src/cli-adapters/composite-router-budget-feature.ts
13549
13621
  function toBudgetConstraint(raw) {
13550
13622
  const constraint = {};
@@ -19894,7 +19966,7 @@ var CompositeRouter = class _CompositeRouter {
19894
19966
  if (this.config.enableTopsisRanking) this.topsisRouter = new TopsisRouter(topsisConfig);
19895
19967
  if (this.config.enableLinUCBSelection && this.cliNames.length > 0) {
19896
19968
  this.linucbBandit = new LinUCBBandit(this.cliNames, { alpha: this.config.linucbAlpha });
19897
- this.warmStartBandit();
19969
+ warmStartBandit(this.linucbBandit, this.logger);
19898
19970
  }
19899
19971
  if (this.config.enableLatencyTracking) this.latencyTracker = new LatencyTracker(latencyConfig);
19900
19972
  }
@@ -19957,47 +20029,6 @@ var CompositeRouter = class _CompositeRouter {
19957
20029
  decisionPath: decision.stagesExecuted
19958
20030
  });
19959
20031
  }
19960
- /** Warm-start LinUCB bandit from persisted outcomes (Issue #1015).
19961
- * Uses a 30-day lookback window so stale outcomes don't override
19962
- * routing changes like primaryCli specialization (#1667). */
19963
- warmStartBandit() {
19964
- if (this.linucbBandit === void 0) return;
19965
- try {
19966
- let replayed = 0;
19967
- if (isPersistenceEnabled()) {
19968
- const WARM_START_LOOKBACK_MS = 30 * 24 * 60 * 60 * 1e3;
19969
- const since = new Date(getTimeProvider().now() - WARM_START_LOOKBACK_MS).toISOString();
19970
- const outcomes = getOutcomeStore().query({
19971
- since,
19972
- excludeQualitySignals: ["e2e-eval"]
19973
- });
19974
- if (outcomes.length > 0) {
19975
- replayed = this.linucbBandit.warmStart(outcomes);
19976
- this.logger.info("LinUCB warm-started from recent outcomes", {
19977
- outcomesAvailable: outcomes.length,
19978
- outcomesReplayed: replayed,
19979
- lookbackDays: 30
19980
- });
19981
- }
19982
- }
19983
- const priors = generateSyntheticPriors();
19984
- this.linucbBandit.seedPriors(priors, replayed === 0 ? 3 : 1);
19985
- if (replayed === 0) {
19986
- const result = runWarmUp(this.logger);
19987
- if (!result.skipped) {
19988
- const outcomes = getOutcomeStore().query({ excludeQualitySignals: ["e2e-eval"] });
19989
- this.linucbBandit.warmStart(outcomes);
19990
- }
19991
- this.logger.info("LinUCB cold-start seeded from specialization matrix", {
19992
- syntheticOutcomes: result.seeded
19993
- });
19994
- }
19995
- } catch (error) {
19996
- this.logger.warn("LinUCB warm-start failed, starting cold", {
19997
- error: getErrorMessage(error)
19998
- });
19999
- }
20000
- }
20001
20032
  logInitialization(adapterCount) {
20002
20033
  this.logger.info("CompositeRouter initialized", {
20003
20034
  adapterCount,
@@ -20029,7 +20060,7 @@ var CompositeRouter = class _CompositeRouter {
20029
20060
  */
20030
20061
  async consultUnifiedContext(task) {
20031
20062
  try {
20032
- const { getContextForTask, inferTaskCategory } = await import("./context-retriever-P4ALBDH6.js");
20063
+ const { getContextForTask, inferTaskCategory } = await import("./context-retriever-ZSQKNX33.js");
20033
20064
  const ctx = await getContextForTask({
20034
20065
  task: task.content,
20035
20066
  category: inferTaskCategory(task.content),
@@ -21714,6 +21745,7 @@ export {
21714
21745
  EventBus,
21715
21746
  getPipelineEventBus,
21716
21747
  runWarmUp,
21748
+ warmStartBandit,
21717
21749
  taskProfileToBanditContext,
21718
21750
  WeatherReportInputSchema,
21719
21751
  SECURITY_KEYWORDS,
@@ -21782,4 +21814,4 @@ export {
21782
21814
  AgentCapability,
21783
21815
  OrchestratorError
21784
21816
  };
21785
- //# sourceMappingURL=chunk-QWSLDY4R.js.map
21817
+ //# sourceMappingURL=chunk-LRD7TNMD.js.map