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.
- package/dist/{ast-rule-runner-SMEE7RYS.js → ast-rule-runner-OK5SP2SI.js} +3 -3
- package/dist/{child-mcp-config-EGYYY7H5.js → child-mcp-config-Y3IZNZDM.js} +2 -2
- package/dist/{chunk-Z6O7SWLZ.js → chunk-2L3IWNNW.js} +9 -9
- package/dist/{chunk-OPIP264O.js → chunk-2LLIATHO.js} +3 -3
- package/dist/{chunk-4I3GJWP7.js → chunk-2TZENGN3.js} +5 -5
- package/dist/{chunk-EIKL76VP.js → chunk-3EFUVKRE.js} +2 -2
- package/dist/{chunk-45LK6KOK.js → chunk-6BGTOBJV.js} +12 -12
- package/dist/{chunk-IX4T2OZK.js → chunk-6C4D4MOD.js} +3 -3
- package/dist/{chunk-FHOAHIYC.js → chunk-72DJDZNB.js} +2 -2
- package/dist/{chunk-TK7GELG7.js → chunk-7GFZNDCZ.js} +4 -4
- package/dist/{chunk-WG3R5JFJ.js → chunk-ABYYNREH.js} +5 -5
- package/dist/{chunk-4566OBYW.js → chunk-AKO22BIS.js} +5 -5
- package/dist/{chunk-JYCRKUFW.js → chunk-B3MCT453.js} +6 -6
- package/dist/{chunk-RJJWQFTK.js → chunk-BBCR7MP5.js} +2 -2
- package/dist/{chunk-53SE2SML.js → chunk-BWCAK56M.js} +5 -5
- package/dist/{chunk-24J3GS2G.js → chunk-CPLMJP53.js} +2 -2
- package/dist/{chunk-ILXLX2QB.js → chunk-DN4X2ZDO.js} +2 -2
- package/dist/{chunk-UC2QFHD3.js → chunk-EKMH7ECT.js} +7 -7
- package/dist/{chunk-AW7OAZP5.js → chunk-EKRCJEA5.js} +2 -2
- package/dist/{chunk-RT2RZ2N3.js → chunk-HFKQXKP3.js} +3 -3
- package/dist/{chunk-2H6SOV56.js → chunk-HK4JMKUH.js} +4 -4
- package/dist/{chunk-QWSLDY4R.js → chunk-LRD7TNMD.js} +95 -63
- package/dist/chunk-LRD7TNMD.js.map +1 -0
- package/dist/{chunk-JCKH5Q3G.js → chunk-MN5YUEEJ.js} +2 -2
- package/dist/{chunk-XUPZ5LUK.js → chunk-OCD5QFUN.js} +4 -4
- package/dist/{chunk-SWM3UQVB.js → chunk-OGAFETBY.js} +2 -2
- package/dist/{chunk-CEPCDDL6.js → chunk-OONBTXWQ.js} +2 -2
- package/dist/{chunk-UAGNX4MV.js → chunk-SFGBHVKV.js} +2 -2
- package/dist/{chunk-PWVXFZC6.js → chunk-SLRTWAQY.js} +4 -4
- package/dist/{chunk-4EDCJTGY.js → chunk-TYLCUUSS.js} +2 -2
- package/dist/{chunk-3U5CO6JR.js → chunk-UO22VHII.js} +2 -2
- package/dist/{chunk-ZYKJCJGF.js → chunk-UXG3TE3G.js} +11 -11
- package/dist/{chunk-XMI6V44P.js → chunk-VZVTHZPY.js} +3 -3
- package/dist/{chunk-3YC4DKBY.js → chunk-XN4Y3ALJ.js} +2 -2
- package/dist/{chunk-VIBLSP2T.js → chunk-XRHQVWJC.js} +57 -44
- package/dist/{chunk-VIBLSP2T.js.map → chunk-XRHQVWJC.js.map} +1 -1
- package/dist/{chunk-JPEDMS2W.js → chunk-YOL6VN3A.js} +2 -2
- package/dist/{chunk-GAZRHKPI.js → chunk-ZRQFTVOQ.js} +3 -3
- package/dist/{chunk-NSTKD4T6.js → chunk-ZTTJUML2.js} +2 -2
- package/dist/{cli-circuit-breaker-LLCVUTDD.js → cli-circuit-breaker-P463NR3T.js} +3 -3
- package/dist/cli.js +119 -57
- package/dist/cli.js.map +1 -1
- package/dist/{composite-router-H4SCUKNA.js → composite-router-V4ZLX3XA.js} +2 -2
- package/dist/{consensus-vote-WRQVPISJ.js → consensus-vote-AO5355WA.js} +17 -17
- package/dist/{context-retriever-P4ALBDH6.js → context-retriever-ZSQKNX33.js} +8 -8
- package/dist/{doctor-deep-BNHOYTGK.js → doctor-deep-WLR7DTZ5.js} +3 -3
- package/dist/{doctor-gateway-report-EJHJKEE7.js → doctor-gateway-report-CXXHUZBY.js} +8 -8
- package/dist/{doctor-live-WABLQ7IF.js → doctor-live-M52L6M2X.js} +11 -11
- package/dist/{expert-bridge-UBJJ7VA6.js → expert-bridge-SJ6NYJYS.js} +4 -4
- package/dist/{factory-2P7VOA4W.js → factory-6D76CHVA.js} +10 -10
- package/dist/{factory-AZOYPTG3.js → factory-U2CSSHJM.js} +5 -5
- package/dist/{improvement-review-VUCSKH24.js → improvement-review-XRUFNUJ5.js} +6 -6
- package/dist/index.d.ts +3 -7
- package/dist/index.js +32 -32
- package/dist/{init-opencode-UVQVMCHG.js → init-opencode-NJAG467M.js} +6 -6
- package/dist/{issue-triage-HBM6RK3H.js → issue-triage-EK4IJ47O.js} +6 -6
- package/dist/{openai-compat-adapter-DOOGDW43.js → openai-compat-adapter-YNSNL2BR.js} +6 -6
- package/dist/{outcome-store-adapter-UJPQYAUW.js → outcome-store-adapter-BJVVKO2N.js} +2 -2
- package/dist/{pr-reviewer-helpers-2YO45CBX.js → pr-reviewer-helpers-XO5GFVHN.js} +4 -4
- package/dist/{registry-command-VGINIZAE.js → registry-command-RLUQMC4O.js} +2 -2
- package/dist/{repo-security-plan-EVDIUHDI.js → repo-security-plan-2CJOCQFD.js} +3 -3
- package/dist/{research-helpers-synthesize-BMVACM2N.js → research-helpers-synthesize-B2ZNHO23.js} +4 -4
- package/dist/{routing-memory-E5WQ2YDY.js → routing-memory-7ZB2WATF.js} +2 -2
- package/dist/{session-memory-RRFETFXN.js → session-memory-OL5G7ODY.js} +3 -3
- package/dist/{setup-config-46VZEAJM.js → setup-config-HMJTMNKL.js} +3 -3
- package/dist/{setup-custom-api-YMDQK6YW.js → setup-custom-api-23RWZLDV.js} +4 -4
- package/dist/setup-data-dir-K76VIPTJ.js +33 -0
- package/dist/{tool-memory-HXZQYP4L.js → tool-memory-ZKUDRRLA.js} +5 -5
- package/dist/{unified-registry-SAUDS2DQ.js → unified-registry-VQGN3IEU.js} +11 -11
- package/dist/{weather-report-C2M3EEXG.js → weather-report-TV75JPE3.js} +2 -2
- package/package.json +1 -1
- package/dist/chunk-QWSLDY4R.js.map +0 -1
- package/dist/setup-data-dir-MDGUHYYP.js +0 -33
- /package/dist/{ast-rule-runner-SMEE7RYS.js.map → ast-rule-runner-OK5SP2SI.js.map} +0 -0
- /package/dist/{child-mcp-config-EGYYY7H5.js.map → child-mcp-config-Y3IZNZDM.js.map} +0 -0
- /package/dist/{chunk-Z6O7SWLZ.js.map → chunk-2L3IWNNW.js.map} +0 -0
- /package/dist/{chunk-OPIP264O.js.map → chunk-2LLIATHO.js.map} +0 -0
- /package/dist/{chunk-4I3GJWP7.js.map → chunk-2TZENGN3.js.map} +0 -0
- /package/dist/{chunk-EIKL76VP.js.map → chunk-3EFUVKRE.js.map} +0 -0
- /package/dist/{chunk-45LK6KOK.js.map → chunk-6BGTOBJV.js.map} +0 -0
- /package/dist/{chunk-IX4T2OZK.js.map → chunk-6C4D4MOD.js.map} +0 -0
- /package/dist/{chunk-FHOAHIYC.js.map → chunk-72DJDZNB.js.map} +0 -0
- /package/dist/{chunk-TK7GELG7.js.map → chunk-7GFZNDCZ.js.map} +0 -0
- /package/dist/{chunk-WG3R5JFJ.js.map → chunk-ABYYNREH.js.map} +0 -0
- /package/dist/{chunk-4566OBYW.js.map → chunk-AKO22BIS.js.map} +0 -0
- /package/dist/{chunk-JYCRKUFW.js.map → chunk-B3MCT453.js.map} +0 -0
- /package/dist/{chunk-RJJWQFTK.js.map → chunk-BBCR7MP5.js.map} +0 -0
- /package/dist/{chunk-53SE2SML.js.map → chunk-BWCAK56M.js.map} +0 -0
- /package/dist/{chunk-24J3GS2G.js.map → chunk-CPLMJP53.js.map} +0 -0
- /package/dist/{chunk-ILXLX2QB.js.map → chunk-DN4X2ZDO.js.map} +0 -0
- /package/dist/{chunk-UC2QFHD3.js.map → chunk-EKMH7ECT.js.map} +0 -0
- /package/dist/{chunk-AW7OAZP5.js.map → chunk-EKRCJEA5.js.map} +0 -0
- /package/dist/{chunk-RT2RZ2N3.js.map → chunk-HFKQXKP3.js.map} +0 -0
- /package/dist/{chunk-2H6SOV56.js.map → chunk-HK4JMKUH.js.map} +0 -0
- /package/dist/{chunk-JCKH5Q3G.js.map → chunk-MN5YUEEJ.js.map} +0 -0
- /package/dist/{chunk-XUPZ5LUK.js.map → chunk-OCD5QFUN.js.map} +0 -0
- /package/dist/{chunk-SWM3UQVB.js.map → chunk-OGAFETBY.js.map} +0 -0
- /package/dist/{chunk-CEPCDDL6.js.map → chunk-OONBTXWQ.js.map} +0 -0
- /package/dist/{chunk-UAGNX4MV.js.map → chunk-SFGBHVKV.js.map} +0 -0
- /package/dist/{chunk-PWVXFZC6.js.map → chunk-SLRTWAQY.js.map} +0 -0
- /package/dist/{chunk-4EDCJTGY.js.map → chunk-TYLCUUSS.js.map} +0 -0
- /package/dist/{chunk-3U5CO6JR.js.map → chunk-UO22VHII.js.map} +0 -0
- /package/dist/{chunk-ZYKJCJGF.js.map → chunk-UXG3TE3G.js.map} +0 -0
- /package/dist/{chunk-XMI6V44P.js.map → chunk-VZVTHZPY.js.map} +0 -0
- /package/dist/{chunk-3YC4DKBY.js.map → chunk-XN4Y3ALJ.js.map} +0 -0
- /package/dist/{chunk-JPEDMS2W.js.map → chunk-YOL6VN3A.js.map} +0 -0
- /package/dist/{chunk-GAZRHKPI.js.map → chunk-ZRQFTVOQ.js.map} +0 -0
- /package/dist/{chunk-NSTKD4T6.js.map → chunk-ZTTJUML2.js.map} +0 -0
- /package/dist/{cli-circuit-breaker-LLCVUTDD.js.map → cli-circuit-breaker-P463NR3T.js.map} +0 -0
- /package/dist/{composite-router-H4SCUKNA.js.map → composite-router-V4ZLX3XA.js.map} +0 -0
- /package/dist/{consensus-vote-WRQVPISJ.js.map → consensus-vote-AO5355WA.js.map} +0 -0
- /package/dist/{context-retriever-P4ALBDH6.js.map → context-retriever-ZSQKNX33.js.map} +0 -0
- /package/dist/{doctor-deep-BNHOYTGK.js.map → doctor-deep-WLR7DTZ5.js.map} +0 -0
- /package/dist/{doctor-gateway-report-EJHJKEE7.js.map → doctor-gateway-report-CXXHUZBY.js.map} +0 -0
- /package/dist/{doctor-live-WABLQ7IF.js.map → doctor-live-M52L6M2X.js.map} +0 -0
- /package/dist/{expert-bridge-UBJJ7VA6.js.map → expert-bridge-SJ6NYJYS.js.map} +0 -0
- /package/dist/{factory-2P7VOA4W.js.map → factory-6D76CHVA.js.map} +0 -0
- /package/dist/{factory-AZOYPTG3.js.map → factory-U2CSSHJM.js.map} +0 -0
- /package/dist/{improvement-review-VUCSKH24.js.map → improvement-review-XRUFNUJ5.js.map} +0 -0
- /package/dist/{init-opencode-UVQVMCHG.js.map → init-opencode-NJAG467M.js.map} +0 -0
- /package/dist/{issue-triage-HBM6RK3H.js.map → issue-triage-EK4IJ47O.js.map} +0 -0
- /package/dist/{openai-compat-adapter-DOOGDW43.js.map → openai-compat-adapter-YNSNL2BR.js.map} +0 -0
- /package/dist/{outcome-store-adapter-UJPQYAUW.js.map → outcome-store-adapter-BJVVKO2N.js.map} +0 -0
- /package/dist/{pr-reviewer-helpers-2YO45CBX.js.map → pr-reviewer-helpers-XO5GFVHN.js.map} +0 -0
- /package/dist/{registry-command-VGINIZAE.js.map → registry-command-RLUQMC4O.js.map} +0 -0
- /package/dist/{repo-security-plan-EVDIUHDI.js.map → repo-security-plan-2CJOCQFD.js.map} +0 -0
- /package/dist/{research-helpers-synthesize-BMVACM2N.js.map → research-helpers-synthesize-B2ZNHO23.js.map} +0 -0
- /package/dist/{routing-memory-E5WQ2YDY.js.map → routing-memory-7ZB2WATF.js.map} +0 -0
- /package/dist/{session-memory-RRFETFXN.js.map → session-memory-OL5G7ODY.js.map} +0 -0
- /package/dist/{setup-config-46VZEAJM.js.map → setup-config-HMJTMNKL.js.map} +0 -0
- /package/dist/{setup-custom-api-YMDQK6YW.js.map → setup-custom-api-23RWZLDV.js.map} +0 -0
- /package/dist/{setup-data-dir-MDGUHYYP.js.map → setup-data-dir-K76VIPTJ.js.map} +0 -0
- /package/dist/{tool-memory-HXZQYP4L.js.map → tool-memory-ZKUDRRLA.js.map} +0 -0
- /package/dist/{unified-registry-SAUDS2DQ.js.map → unified-registry-VQGN3IEU.js.map} +0 -0
- /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-
|
|
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-
|
|
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
|
|
13505
|
-
const
|
|
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
|
-
|
|
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
|
|
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.
|
|
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-
|
|
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-
|
|
21817
|
+
//# sourceMappingURL=chunk-LRD7TNMD.js.map
|