nexus-agents 2.102.7 → 2.102.8
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/{child-mcp-config-NBELOYYZ.js → child-mcp-config-3FIENOGY.js} +2 -2
- package/dist/{chunk-6CIEBFDV.js → chunk-2NSCF4PI.js} +7 -7
- package/dist/{chunk-W65C5VVJ.js → chunk-47YAIGCP.js} +2 -2
- package/dist/{chunk-4L7FH53H.js → chunk-4CPPYUBW.js} +2 -2
- package/dist/{chunk-VJR46M7L.js → chunk-74QFV5ON.js} +3 -3
- package/dist/{chunk-EKO6XAAZ.js → chunk-B73SAOST.js} +3 -3
- package/dist/{chunk-NAKDVIXS.js → chunk-CPGZRXY3.js} +3 -3
- package/dist/{chunk-FZCB2P3F.js → chunk-ER6YMAZU.js} +2 -2
- package/dist/{chunk-KLYBJUTK.js → chunk-EYIIQ7KE.js} +316 -64
- package/dist/{chunk-KLYBJUTK.js.map → chunk-EYIIQ7KE.js.map} +1 -1
- package/dist/{chunk-5PZIMHNA.js → chunk-FYQ36FP3.js} +3 -3
- package/dist/{chunk-SBYFWB6J.js → chunk-G3QQOU4H.js} +4 -4
- package/dist/{chunk-Z7IQUUTZ.js → chunk-GAX6YG5E.js} +2 -2
- package/dist/{chunk-LVGYWJDX.js → chunk-GUHVV3Q4.js} +2 -2
- package/dist/{chunk-E47LOV6Y.js → chunk-HAKXSIBS.js} +2 -2
- package/dist/{chunk-MNWYIYEZ.js → chunk-IS2OUYGR.js} +2 -2
- package/dist/{chunk-4RW6OONY.js → chunk-J524D5GA.js} +2 -2
- package/dist/{chunk-MNFEZIRI.js → chunk-JEOFSMRI.js} +2 -2
- package/dist/{chunk-ABGRFLJ6.js → chunk-L3RP7STR.js} +4 -4
- package/dist/{chunk-PWDIIS7L.js → chunk-NBAARQC6.js} +7 -7
- package/dist/{chunk-3GF52QPA.js → chunk-ODN2O3XZ.js} +4 -4
- package/dist/{chunk-TDXLS2TY.js → chunk-OIFFZHSV.js} +4 -4
- package/dist/{chunk-T32MGJMA.js → chunk-P6TYLTER.js} +10 -12
- package/dist/{chunk-T32MGJMA.js.map → chunk-P6TYLTER.js.map} +1 -1
- package/dist/{chunk-ECZLYZCI.js → chunk-PF7GV22M.js} +5 -5
- package/dist/{chunk-GDY23NDK.js → chunk-Q7FINCKE.js} +2 -2
- package/dist/{chunk-LXBWH5XP.js → chunk-RHH75VON.js} +3 -3
- package/dist/{chunk-FVWKAEYH.js → chunk-THUENUJA.js} +2 -2
- package/dist/{chunk-QYE6GEPY.js → chunk-TLTWQAHI.js} +3 -3
- package/dist/{chunk-FLUC27DF.js → chunk-UXBZ346L.js} +2 -2
- package/dist/{chunk-SXWJ7IUF.js → chunk-VJFUIP6N.js} +2 -2
- package/dist/{chunk-3QFQG5QT.js → chunk-WPGVI2F2.js} +2 -2
- package/dist/{chunk-FRAMV5DJ.js → chunk-WVZT4JGL.js} +30 -30
- package/dist/{chunk-S7R72HUB.js → chunk-ZW6NKOXT.js} +2 -2
- package/dist/{cli-circuit-breaker-L647V6BR.js → cli-circuit-breaker-VHAHRE2J.js} +4 -4
- package/dist/cli.js +38 -39
- package/dist/cli.js.map +1 -1
- package/dist/{composite-router-NOTUOXFI.js → composite-router-NQMFTZ6B.js} +2 -2
- package/dist/{consensus-vote-7CE4JOMK.js → consensus-vote-VGQW6LCB.js} +12 -13
- package/dist/{context-retriever-SHT7J6BT.js → context-retriever-BE4DNAPM.js} +6 -6
- package/dist/{doctor-deep-REMLGFXP.js → doctor-deep-7PN77HHM.js} +3 -3
- package/dist/{expert-bridge-2TYPRNEE.js → expert-bridge-HLSKV3PK.js} +4 -4
- package/dist/{factory-CYUNYEMU.js → factory-2A2CZPQR.js} +5 -5
- package/dist/{factory-PPAK3TVG.js → factory-PTEIJ2H2.js} +5 -5
- package/dist/{improvement-review-YFQ5T7I3.js → improvement-review-6EV2FWXI.js} +4 -4
- package/dist/index.d.ts +2 -2
- package/dist/index.js +30 -32
- package/dist/index.js.map +1 -1
- package/dist/{init-opencode-WXY4DUFU.js → init-opencode-GZD26YXM.js} +5 -5
- package/dist/{issue-triage-4YJQU3HW.js → issue-triage-JGQTQVQI.js} +5 -5
- package/dist/{pr-reviewer-helpers-2YJG6XJM.js → pr-reviewer-helpers-SEA7L3XT.js} +4 -4
- package/dist/{registry-command-ZFOGLBKF.js → registry-command-O5G5VII2.js} +2 -2
- package/dist/{repo-security-plan-L47DDTAU.js → repo-security-plan-6QUW6JW5.js} +3 -3
- package/dist/{research-helpers-synthesize-IABO7LB4.js → research-helpers-synthesize-2HHHQP5I.js} +3 -3
- package/dist/{routing-memory-2YWEWRMQ.js → routing-memory-SCPATSY6.js} +2 -2
- package/dist/{session-memory-YWOMPCLZ.js → session-memory-O77ISZYP.js} +3 -3
- package/dist/{setup-command-G3Q3UKI5.js → setup-command-VZEAQM27.js} +10 -11
- package/dist/{setup-config-PYFK2GIC.js → setup-config-AKLJPGHL.js} +3 -3
- package/dist/{setup-custom-api-A4IZQ2Q4.js → setup-custom-api-PK5OLVW5.js} +4 -4
- package/dist/{tool-memory-ABPSCFIH.js → tool-memory-KQ5N6GRC.js} +5 -5
- package/dist/{weather-report-GXD6KGDS.js → weather-report-BUPURZ6J.js} +2 -2
- package/package.json +1 -1
- package/dist/chunk-L2NPJRZZ.js +0 -153
- package/dist/chunk-L2NPJRZZ.js.map +0 -1
- /package/dist/{child-mcp-config-NBELOYYZ.js.map → child-mcp-config-3FIENOGY.js.map} +0 -0
- /package/dist/{chunk-6CIEBFDV.js.map → chunk-2NSCF4PI.js.map} +0 -0
- /package/dist/{chunk-W65C5VVJ.js.map → chunk-47YAIGCP.js.map} +0 -0
- /package/dist/{chunk-4L7FH53H.js.map → chunk-4CPPYUBW.js.map} +0 -0
- /package/dist/{chunk-VJR46M7L.js.map → chunk-74QFV5ON.js.map} +0 -0
- /package/dist/{chunk-EKO6XAAZ.js.map → chunk-B73SAOST.js.map} +0 -0
- /package/dist/{chunk-NAKDVIXS.js.map → chunk-CPGZRXY3.js.map} +0 -0
- /package/dist/{chunk-FZCB2P3F.js.map → chunk-ER6YMAZU.js.map} +0 -0
- /package/dist/{chunk-5PZIMHNA.js.map → chunk-FYQ36FP3.js.map} +0 -0
- /package/dist/{chunk-SBYFWB6J.js.map → chunk-G3QQOU4H.js.map} +0 -0
- /package/dist/{chunk-Z7IQUUTZ.js.map → chunk-GAX6YG5E.js.map} +0 -0
- /package/dist/{chunk-LVGYWJDX.js.map → chunk-GUHVV3Q4.js.map} +0 -0
- /package/dist/{chunk-E47LOV6Y.js.map → chunk-HAKXSIBS.js.map} +0 -0
- /package/dist/{chunk-MNWYIYEZ.js.map → chunk-IS2OUYGR.js.map} +0 -0
- /package/dist/{chunk-4RW6OONY.js.map → chunk-J524D5GA.js.map} +0 -0
- /package/dist/{chunk-MNFEZIRI.js.map → chunk-JEOFSMRI.js.map} +0 -0
- /package/dist/{chunk-ABGRFLJ6.js.map → chunk-L3RP7STR.js.map} +0 -0
- /package/dist/{chunk-PWDIIS7L.js.map → chunk-NBAARQC6.js.map} +0 -0
- /package/dist/{chunk-3GF52QPA.js.map → chunk-ODN2O3XZ.js.map} +0 -0
- /package/dist/{chunk-TDXLS2TY.js.map → chunk-OIFFZHSV.js.map} +0 -0
- /package/dist/{chunk-ECZLYZCI.js.map → chunk-PF7GV22M.js.map} +0 -0
- /package/dist/{chunk-GDY23NDK.js.map → chunk-Q7FINCKE.js.map} +0 -0
- /package/dist/{chunk-LXBWH5XP.js.map → chunk-RHH75VON.js.map} +0 -0
- /package/dist/{chunk-FVWKAEYH.js.map → chunk-THUENUJA.js.map} +0 -0
- /package/dist/{chunk-QYE6GEPY.js.map → chunk-TLTWQAHI.js.map} +0 -0
- /package/dist/{chunk-FLUC27DF.js.map → chunk-UXBZ346L.js.map} +0 -0
- /package/dist/{chunk-SXWJ7IUF.js.map → chunk-VJFUIP6N.js.map} +0 -0
- /package/dist/{chunk-3QFQG5QT.js.map → chunk-WPGVI2F2.js.map} +0 -0
- /package/dist/{chunk-FRAMV5DJ.js.map → chunk-WVZT4JGL.js.map} +0 -0
- /package/dist/{chunk-S7R72HUB.js.map → chunk-ZW6NKOXT.js.map} +0 -0
- /package/dist/{cli-circuit-breaker-L647V6BR.js.map → cli-circuit-breaker-VHAHRE2J.js.map} +0 -0
- /package/dist/{composite-router-NOTUOXFI.js.map → composite-router-NQMFTZ6B.js.map} +0 -0
- /package/dist/{consensus-vote-7CE4JOMK.js.map → consensus-vote-VGQW6LCB.js.map} +0 -0
- /package/dist/{context-retriever-SHT7J6BT.js.map → context-retriever-BE4DNAPM.js.map} +0 -0
- /package/dist/{doctor-deep-REMLGFXP.js.map → doctor-deep-7PN77HHM.js.map} +0 -0
- /package/dist/{expert-bridge-2TYPRNEE.js.map → expert-bridge-HLSKV3PK.js.map} +0 -0
- /package/dist/{factory-CYUNYEMU.js.map → factory-2A2CZPQR.js.map} +0 -0
- /package/dist/{factory-PPAK3TVG.js.map → factory-PTEIJ2H2.js.map} +0 -0
- /package/dist/{improvement-review-YFQ5T7I3.js.map → improvement-review-6EV2FWXI.js.map} +0 -0
- /package/dist/{init-opencode-WXY4DUFU.js.map → init-opencode-GZD26YXM.js.map} +0 -0
- /package/dist/{issue-triage-4YJQU3HW.js.map → issue-triage-JGQTQVQI.js.map} +0 -0
- /package/dist/{pr-reviewer-helpers-2YJG6XJM.js.map → pr-reviewer-helpers-SEA7L3XT.js.map} +0 -0
- /package/dist/{registry-command-ZFOGLBKF.js.map → registry-command-O5G5VII2.js.map} +0 -0
- /package/dist/{repo-security-plan-L47DDTAU.js.map → repo-security-plan-6QUW6JW5.js.map} +0 -0
- /package/dist/{research-helpers-synthesize-IABO7LB4.js.map → research-helpers-synthesize-2HHHQP5I.js.map} +0 -0
- /package/dist/{routing-memory-2YWEWRMQ.js.map → routing-memory-SCPATSY6.js.map} +0 -0
- /package/dist/{session-memory-YWOMPCLZ.js.map → session-memory-O77ISZYP.js.map} +0 -0
- /package/dist/{setup-command-G3Q3UKI5.js.map → setup-command-VZEAQM27.js.map} +0 -0
- /package/dist/{setup-config-PYFK2GIC.js.map → setup-config-AKLJPGHL.js.map} +0 -0
- /package/dist/{setup-custom-api-A4IZQ2Q4.js.map → setup-custom-api-PK5OLVW5.js.map} +0 -0
- /package/dist/{tool-memory-ABPSCFIH.js.map → tool-memory-KQ5N6GRC.js.map} +0 -0
- /package/dist/{weather-report-GXD6KGDS.js.map → weather-report-BUPURZ6J.js.map} +0 -0
|
@@ -1907,14 +1907,14 @@ var ManifestSchema = z2.object({
|
|
|
1907
1907
|
models: z2.array(z2.unknown())
|
|
1908
1908
|
});
|
|
1909
1909
|
function loadManifestOverlay(options) {
|
|
1910
|
-
const
|
|
1910
|
+
const logger14 = options?.logger ?? createLogger({ component: "manifest-overlay" });
|
|
1911
1911
|
if (options?.path !== void 0) {
|
|
1912
|
-
return loadManifestFile(options.path,
|
|
1912
|
+
return loadManifestFile(options.path, logger14);
|
|
1913
1913
|
}
|
|
1914
1914
|
const userPath = resolveUserManifestPath(options?.env);
|
|
1915
1915
|
const operatorPath = resolveManifestPath(options?.env);
|
|
1916
|
-
const user = loadManifestFile(userPath,
|
|
1917
|
-
const operator = loadManifestFile(operatorPath,
|
|
1916
|
+
const user = loadManifestFile(userPath, logger14);
|
|
1917
|
+
const operator = loadManifestFile(operatorPath, logger14);
|
|
1918
1918
|
return mergeOverlays(user, operator);
|
|
1919
1919
|
}
|
|
1920
1920
|
function mergeOverlays(lower, higher) {
|
|
@@ -1931,11 +1931,11 @@ function mergeOverlays(lower, higher) {
|
|
|
1931
1931
|
return merged;
|
|
1932
1932
|
}
|
|
1933
1933
|
function loadUserManifestOverlay(options) {
|
|
1934
|
-
const
|
|
1934
|
+
const logger14 = options?.logger ?? createLogger({ component: "manifest-overlay" });
|
|
1935
1935
|
const path2 = options?.path ?? resolveUserManifestPath(options?.env);
|
|
1936
|
-
return loadManifestFile(path2,
|
|
1936
|
+
return loadManifestFile(path2, logger14);
|
|
1937
1937
|
}
|
|
1938
|
-
function loadManifestFile(path2,
|
|
1938
|
+
function loadManifestFile(path2, logger14) {
|
|
1939
1939
|
let exists = false;
|
|
1940
1940
|
try {
|
|
1941
1941
|
exists = existsSync(path2);
|
|
@@ -1950,7 +1950,7 @@ function loadManifestFile(path2, logger11) {
|
|
|
1950
1950
|
return { entries: [], rejections: [], path: path2, status: "empty" };
|
|
1951
1951
|
}
|
|
1952
1952
|
if (stat.size > MANIFEST_MAX_BYTES) {
|
|
1953
|
-
|
|
1953
|
+
logger14.warn("Manifest overlay too large; skipping", {
|
|
1954
1954
|
path: path2,
|
|
1955
1955
|
size: stat.size,
|
|
1956
1956
|
max: MANIFEST_MAX_BYTES
|
|
@@ -1958,9 +1958,9 @@ function loadManifestFile(path2, logger11) {
|
|
|
1958
1958
|
return { entries: [], rejections: [], path: path2, status: "too-large" };
|
|
1959
1959
|
}
|
|
1960
1960
|
const raw = readFileSync(path2, "utf-8");
|
|
1961
|
-
return parseManifest(raw, path2,
|
|
1961
|
+
return parseManifest(raw, path2, logger14);
|
|
1962
1962
|
}
|
|
1963
|
-
function parseManifest(raw, path2,
|
|
1963
|
+
function parseManifest(raw, path2, logger14) {
|
|
1964
1964
|
let parsed;
|
|
1965
1965
|
try {
|
|
1966
1966
|
if (path2.endsWith(".json")) {
|
|
@@ -1969,7 +1969,7 @@ function parseManifest(raw, path2, logger11) {
|
|
|
1969
1969
|
parsed = parseYaml(raw);
|
|
1970
1970
|
}
|
|
1971
1971
|
} catch (e) {
|
|
1972
|
-
|
|
1972
|
+
logger14.warn("Manifest overlay parse failure; skipping", {
|
|
1973
1973
|
path: path2,
|
|
1974
1974
|
error: e instanceof Error ? e.message : String(e)
|
|
1975
1975
|
});
|
|
@@ -1977,7 +1977,7 @@ function parseManifest(raw, path2, logger11) {
|
|
|
1977
1977
|
}
|
|
1978
1978
|
const shape = ManifestSchema.safeParse(parsed);
|
|
1979
1979
|
if (!shape.success) {
|
|
1980
|
-
|
|
1980
|
+
logger14.warn("Manifest overlay schema mismatch at root; skipping", {
|
|
1981
1981
|
path: path2,
|
|
1982
1982
|
issues: shape.error.issues.slice(0, 5).map((i) => i.message)
|
|
1983
1983
|
});
|
|
@@ -2052,7 +2052,7 @@ function defaultSnapshotPath() {
|
|
|
2052
2052
|
return join(here, "models-dev-snapshot.json");
|
|
2053
2053
|
}
|
|
2054
2054
|
function loadModelsDevSnapshot(options) {
|
|
2055
|
-
const
|
|
2055
|
+
const logger14 = createLogger({ component: "models-dev-snapshot" });
|
|
2056
2056
|
const path2 = options?.path ?? defaultSnapshotPath();
|
|
2057
2057
|
let exists = false;
|
|
2058
2058
|
try {
|
|
@@ -2067,21 +2067,21 @@ function loadModelsDevSnapshot(options) {
|
|
|
2067
2067
|
try {
|
|
2068
2068
|
parsed = JSON.parse(readFileSync2(path2, "utf-8"));
|
|
2069
2069
|
} catch (e) {
|
|
2070
|
-
|
|
2070
|
+
logger14.warn("models.dev snapshot parse failure; skipping", {
|
|
2071
2071
|
path: path2,
|
|
2072
2072
|
error: e instanceof Error ? e.message : String(e)
|
|
2073
2073
|
});
|
|
2074
2074
|
return { entries: [], path: path2, status: "malformed" };
|
|
2075
2075
|
}
|
|
2076
2076
|
if (parsed.version !== 1) {
|
|
2077
|
-
|
|
2077
|
+
logger14.warn("models.dev snapshot version unsupported; skipping", {
|
|
2078
2078
|
path: path2,
|
|
2079
2079
|
version: parsed.version
|
|
2080
2080
|
});
|
|
2081
2081
|
return { entries: [], path: path2, status: "malformed" };
|
|
2082
2082
|
}
|
|
2083
2083
|
if (!Array.isArray(parsed.entries)) {
|
|
2084
|
-
|
|
2084
|
+
logger14.warn("models.dev snapshot missing entries array; skipping", { path: path2 });
|
|
2085
2085
|
return { entries: [], path: path2, status: "malformed" };
|
|
2086
2086
|
}
|
|
2087
2087
|
const entries = parsed.entries;
|
|
@@ -2116,7 +2116,7 @@ function toModelEntry(rec) {
|
|
|
2116
2116
|
};
|
|
2117
2117
|
}
|
|
2118
2118
|
function loadGeneratedRegistryEntries(options) {
|
|
2119
|
-
const
|
|
2119
|
+
const logger14 = createLogger({ component: "models-generated" });
|
|
2120
2120
|
const path2 = options?.path ?? defaultGeneratedPath();
|
|
2121
2121
|
let exists = false;
|
|
2122
2122
|
try {
|
|
@@ -2129,14 +2129,14 @@ function loadGeneratedRegistryEntries(options) {
|
|
|
2129
2129
|
try {
|
|
2130
2130
|
parsed = JSON.parse(readFileSync3(path2, "utf-8"));
|
|
2131
2131
|
} catch (e) {
|
|
2132
|
-
|
|
2132
|
+
logger14.warn("generated registry parse failure; skipping", {
|
|
2133
2133
|
path: path2,
|
|
2134
2134
|
error: e instanceof Error ? e.message : String(e)
|
|
2135
2135
|
});
|
|
2136
2136
|
return { entries: [], path: path2, status: "malformed" };
|
|
2137
2137
|
}
|
|
2138
2138
|
if (!Array.isArray(parsed.entries)) {
|
|
2139
|
-
|
|
2139
|
+
logger14.warn("generated registry missing entries array; skipping", { path: path2 });
|
|
2140
2140
|
return { entries: [], path: path2, status: "malformed" };
|
|
2141
2141
|
}
|
|
2142
2142
|
const entries = [];
|
|
@@ -4737,9 +4737,9 @@ var DEFAULT_OUTPUT_TOKENS = 500;
|
|
|
4737
4737
|
var TopsisRouter = class {
|
|
4738
4738
|
config;
|
|
4739
4739
|
logger;
|
|
4740
|
-
constructor(config = {},
|
|
4740
|
+
constructor(config = {}, logger14) {
|
|
4741
4741
|
this.config = { ...DEFAULT_TOPSIS_CONFIG, ...config };
|
|
4742
|
-
this.logger =
|
|
4742
|
+
this.logger = logger14 ?? createLogger({ component: "TopsisRouter" });
|
|
4743
4743
|
this.validateWeights();
|
|
4744
4744
|
}
|
|
4745
4745
|
/**
|
|
@@ -6096,9 +6096,9 @@ var ZeroRouter = class {
|
|
|
6096
6096
|
logger;
|
|
6097
6097
|
outcomes = [];
|
|
6098
6098
|
calibrationBias = 0;
|
|
6099
|
-
constructor(config,
|
|
6099
|
+
constructor(config, logger14) {
|
|
6100
6100
|
this.config = ZeroRouterConfigSchema.parse(config ?? {});
|
|
6101
|
-
this.logger =
|
|
6101
|
+
this.logger = logger14 ?? createLogger({ component: "ZeroRouter" });
|
|
6102
6102
|
this.logger.debug("ZeroRouter initialized", {
|
|
6103
6103
|
thresholds: this.config.thresholds,
|
|
6104
6104
|
enableCalibration: this.config.enableCalibration
|
|
@@ -6618,9 +6618,9 @@ var ConfidenceCascadeStage = class {
|
|
|
6618
6618
|
routingsCount = 0;
|
|
6619
6619
|
escalationCount = 0;
|
|
6620
6620
|
complexityDistribution = { simple: 0, moderate: 0, complex: 0 };
|
|
6621
|
-
constructor(config = {},
|
|
6621
|
+
constructor(config = {}, logger14) {
|
|
6622
6622
|
this.config = { ...DEFAULT_CONFIG, ...config };
|
|
6623
|
-
this.logger =
|
|
6623
|
+
this.logger = logger14 ?? createLogger({ component: "ConfidenceCascadeStage" });
|
|
6624
6624
|
}
|
|
6625
6625
|
canHandle(ctx) {
|
|
6626
6626
|
return getRemainingCandidates(ctx).length > 0;
|
|
@@ -6961,9 +6961,9 @@ var CapabilityMatchStage = class {
|
|
|
6961
6961
|
creative: 0,
|
|
6962
6962
|
general: 0
|
|
6963
6963
|
};
|
|
6964
|
-
constructor(config = {},
|
|
6964
|
+
constructor(config = {}, logger14) {
|
|
6965
6965
|
this.config = { ...DEFAULT_CONFIG2, ...config };
|
|
6966
|
-
this.logger =
|
|
6966
|
+
this.logger = logger14 ?? createLogger({ component: "CapabilityMatchStage" });
|
|
6967
6967
|
}
|
|
6968
6968
|
canHandle(ctx) {
|
|
6969
6969
|
return getRemainingCandidates(ctx).length > 0;
|
|
@@ -7119,9 +7119,9 @@ var QualityConstraintStage = class {
|
|
|
7119
7119
|
filteredCount = 0;
|
|
7120
7120
|
fallbackCount = 0;
|
|
7121
7121
|
constraintViolations = { quality: 0, cost: 0, latency: 0 };
|
|
7122
|
-
constructor(config = {},
|
|
7122
|
+
constructor(config = {}, logger14) {
|
|
7123
7123
|
this.config = { ...DEFAULT_CONFIG3, ...config };
|
|
7124
|
-
this.logger =
|
|
7124
|
+
this.logger = logger14 ?? createLogger({ component: "QualityConstraintStage" });
|
|
7125
7125
|
}
|
|
7126
7126
|
canHandle(ctx) {
|
|
7127
7127
|
return getRemainingCandidates(ctx).length > 0;
|
|
@@ -7329,9 +7329,9 @@ var ResourceStrategyStage = class {
|
|
|
7329
7329
|
logger;
|
|
7330
7330
|
routingsCount = 0;
|
|
7331
7331
|
tierHistory = [];
|
|
7332
|
-
constructor(config = {},
|
|
7332
|
+
constructor(config = {}, logger14) {
|
|
7333
7333
|
this.config = { ...DEFAULT_CONFIG4, ...config };
|
|
7334
|
-
this.logger =
|
|
7334
|
+
this.logger = logger14 ?? createLogger({ component: "ResourceStrategyStage" });
|
|
7335
7335
|
}
|
|
7336
7336
|
canHandle(ctx) {
|
|
7337
7337
|
return getRemainingCandidates(ctx).length > 1;
|
|
@@ -7440,10 +7440,10 @@ var DistilledRuleStage = class {
|
|
|
7440
7440
|
config;
|
|
7441
7441
|
logger;
|
|
7442
7442
|
rulesAppliedCount = 0;
|
|
7443
|
-
constructor(distiller, config,
|
|
7443
|
+
constructor(distiller, config, logger14) {
|
|
7444
7444
|
this.distiller = distiller;
|
|
7445
7445
|
this.config = { ...DEFAULT_CONFIG5, ...config };
|
|
7446
|
-
this.logger =
|
|
7446
|
+
this.logger = logger14 ?? createLogger({ component: "DistilledRuleStage" });
|
|
7447
7447
|
}
|
|
7448
7448
|
canHandle(ctx) {
|
|
7449
7449
|
const candidates = getRemainingCandidates(ctx);
|
|
@@ -7582,10 +7582,10 @@ var KnnRoutingStage = class {
|
|
|
7582
7582
|
memory;
|
|
7583
7583
|
routingsCount = 0;
|
|
7584
7584
|
matchCount = 0;
|
|
7585
|
-
constructor(memory, config = {},
|
|
7585
|
+
constructor(memory, config = {}, logger14) {
|
|
7586
7586
|
this.config = { ...DEFAULT_CONFIG6, ...config };
|
|
7587
7587
|
this.memory = memory;
|
|
7588
|
-
this.logger =
|
|
7588
|
+
this.logger = logger14 ?? createLogger({ component: "KnnRoutingStage" });
|
|
7589
7589
|
}
|
|
7590
7590
|
canHandle(ctx) {
|
|
7591
7591
|
return getRemainingCandidates(ctx).length > 0;
|
|
@@ -7800,10 +7800,10 @@ var StrategyDistiller = class {
|
|
|
7800
7800
|
rules = /* @__PURE__ */ new Map();
|
|
7801
7801
|
outcomeCounter = 0;
|
|
7802
7802
|
lastDistillAt;
|
|
7803
|
-
constructor(outcomeStore,
|
|
7803
|
+
constructor(outcomeStore, logger14, config) {
|
|
7804
7804
|
this.outcomeStore = outcomeStore;
|
|
7805
7805
|
this.config = { ...DEFAULT_DISTILLER_CONFIG, ...config };
|
|
7806
|
-
this.logger =
|
|
7806
|
+
this.logger = logger14 ?? createLogger({ component: "StrategyDistiller" });
|
|
7807
7807
|
}
|
|
7808
7808
|
/** Called for each processed outcome. Triggers distillation at threshold. */
|
|
7809
7809
|
onOutcome() {
|
|
@@ -7967,18 +7967,18 @@ var StrategyDistiller = class {
|
|
|
7967
7967
|
};
|
|
7968
7968
|
}
|
|
7969
7969
|
};
|
|
7970
|
-
function createStrategyDistiller(outcomeStore,
|
|
7971
|
-
return new StrategyDistiller(outcomeStore,
|
|
7970
|
+
function createStrategyDistiller(outcomeStore, logger14, config) {
|
|
7971
|
+
return new StrategyDistiller(outcomeStore, logger14, config);
|
|
7972
7972
|
}
|
|
7973
7973
|
var persistentDistillerFactory;
|
|
7974
7974
|
function registerPersistentDistillerFactory(factory) {
|
|
7975
7975
|
persistentDistillerFactory = factory;
|
|
7976
7976
|
}
|
|
7977
|
-
function createPersistentDistillerOrFallback(outcomeStore,
|
|
7977
|
+
function createPersistentDistillerOrFallback(outcomeStore, logger14) {
|
|
7978
7978
|
if (persistentDistillerFactory !== void 0) {
|
|
7979
|
-
return persistentDistillerFactory(outcomeStore,
|
|
7979
|
+
return persistentDistillerFactory(outcomeStore, logger14);
|
|
7980
7980
|
}
|
|
7981
|
-
return new StrategyDistiller(outcomeStore,
|
|
7981
|
+
return new StrategyDistiller(outcomeStore, logger14);
|
|
7982
7982
|
}
|
|
7983
7983
|
|
|
7984
7984
|
// src/orchestration/outcomes/outcome-types.ts
|
|
@@ -8659,8 +8659,8 @@ function generateSyntheticPriors() {
|
|
|
8659
8659
|
}
|
|
8660
8660
|
return priors;
|
|
8661
8661
|
}
|
|
8662
|
-
function runWarmUp(
|
|
8663
|
-
const log =
|
|
8662
|
+
function runWarmUp(logger14) {
|
|
8663
|
+
const log = logger14 ?? createLogger({ component: "warm-up" });
|
|
8664
8664
|
const store = getOutcomeStore();
|
|
8665
8665
|
const existing = store.query();
|
|
8666
8666
|
const hasSynthetic = existing.some((o) => o.qualitySignals?.includes(SYNTHETIC_MARKER) === true);
|
|
@@ -11141,6 +11141,249 @@ function selectWithMemoryInfluence(linucbSelection, memoryResult, deps) {
|
|
|
11141
11141
|
return linucbSelection;
|
|
11142
11142
|
}
|
|
11143
11143
|
|
|
11144
|
+
// src/config/available-models-cache.ts
|
|
11145
|
+
var logger10 = createLogger({ component: "available-models-cache" });
|
|
11146
|
+
var DEFAULT_TTL_MS = 5 * 60 * 1e3;
|
|
11147
|
+
var DEFAULT_STALE_TTL_MS = 25 * 60 * 1e3;
|
|
11148
|
+
var AvailableModelsCache = class {
|
|
11149
|
+
sources;
|
|
11150
|
+
ttlMs;
|
|
11151
|
+
staleTtlMs;
|
|
11152
|
+
now;
|
|
11153
|
+
states;
|
|
11154
|
+
constructor(options) {
|
|
11155
|
+
this.sources = [...options.sources];
|
|
11156
|
+
this.ttlMs = options.ttlMs ?? DEFAULT_TTL_MS;
|
|
11157
|
+
this.staleTtlMs = options.staleTtlMs ?? DEFAULT_STALE_TTL_MS;
|
|
11158
|
+
this.now = options.now ?? Date.now;
|
|
11159
|
+
this.states = /* @__PURE__ */ new Map();
|
|
11160
|
+
for (const s of this.sources) {
|
|
11161
|
+
this.states.set(s.name, { value: null, fetchedAt: 0, inFlight: null });
|
|
11162
|
+
}
|
|
11163
|
+
}
|
|
11164
|
+
/**
|
|
11165
|
+
* Register a source after construction. Used by adapter factories that
|
|
11166
|
+
* wire themselves into the default cache lazily as they're built.
|
|
11167
|
+
* Duplicate names are ignored (first registration wins, on the
|
|
11168
|
+
* assumption that the same factory might run twice in a test session).
|
|
11169
|
+
*/
|
|
11170
|
+
addSource(source) {
|
|
11171
|
+
if (this.states.has(source.name)) return;
|
|
11172
|
+
this.sources.push(source);
|
|
11173
|
+
this.states.set(source.name, { value: null, fetchedAt: 0, inFlight: null });
|
|
11174
|
+
}
|
|
11175
|
+
/**
|
|
11176
|
+
* Remove a previously-registered source. Used by tests + by factories
|
|
11177
|
+
* that want to drop a probe when an adapter is being disposed.
|
|
11178
|
+
*/
|
|
11179
|
+
removeSource(name) {
|
|
11180
|
+
this.sources = this.sources.filter((s) => s.name !== name);
|
|
11181
|
+
this.states.delete(name);
|
|
11182
|
+
}
|
|
11183
|
+
/**
|
|
11184
|
+
* Returns the union of every source's available models. Stale-while-
|
|
11185
|
+
* revalidate: serve fresh-or-stale immediately, refresh stale entries
|
|
11186
|
+
* in the background. First call (no cache yet) blocks on every source.
|
|
11187
|
+
*/
|
|
11188
|
+
async getAll() {
|
|
11189
|
+
const probes = this.sources.map((s) => this.probeOne(s));
|
|
11190
|
+
const results = await Promise.all(probes);
|
|
11191
|
+
const out = [];
|
|
11192
|
+
for (const r of results) {
|
|
11193
|
+
for (const m of r) out.push(m);
|
|
11194
|
+
}
|
|
11195
|
+
return out;
|
|
11196
|
+
}
|
|
11197
|
+
/** Models reported by one named source (subset of getAll). */
|
|
11198
|
+
async byProvider(sourceName) {
|
|
11199
|
+
const all = await this.getAll();
|
|
11200
|
+
return all.filter((m) => m.source === sourceName);
|
|
11201
|
+
}
|
|
11202
|
+
/** True iff some source currently reports the given model id. */
|
|
11203
|
+
async has(modelId) {
|
|
11204
|
+
const all = await this.getAll();
|
|
11205
|
+
return all.some((m) => m.id === modelId);
|
|
11206
|
+
}
|
|
11207
|
+
/** Force a synchronous refresh of every source — used after a 404. */
|
|
11208
|
+
async refresh() {
|
|
11209
|
+
for (const s of this.sources) {
|
|
11210
|
+
const state = this.states.get(s.name);
|
|
11211
|
+
if (state === void 0) continue;
|
|
11212
|
+
state.fetchedAt = 0;
|
|
11213
|
+
state.value = null;
|
|
11214
|
+
}
|
|
11215
|
+
return this.getAll();
|
|
11216
|
+
}
|
|
11217
|
+
/**
|
|
11218
|
+
* Probe one source. Returns:
|
|
11219
|
+
* - cached value if still fresh
|
|
11220
|
+
* - cached value AND kicks a background refresh if stale-but-not-expired
|
|
11221
|
+
* - blocks on the source if no cache or fully expired
|
|
11222
|
+
*
|
|
11223
|
+
* Source errors yield an empty list (logged) so one bad source can't
|
|
11224
|
+
* poison the union.
|
|
11225
|
+
*/
|
|
11226
|
+
async probeOne(source) {
|
|
11227
|
+
const state = this.getState(source.name);
|
|
11228
|
+
const age = this.now() - state.fetchedAt;
|
|
11229
|
+
if (state.value !== null && age < this.ttlMs) {
|
|
11230
|
+
return state.value;
|
|
11231
|
+
}
|
|
11232
|
+
if (state.value !== null && age < this.staleTtlMs) {
|
|
11233
|
+
state.inFlight ??= this.fetchSource(source).finally(() => {
|
|
11234
|
+
state.inFlight = null;
|
|
11235
|
+
});
|
|
11236
|
+
return state.value;
|
|
11237
|
+
}
|
|
11238
|
+
if (state.inFlight !== null) return state.inFlight;
|
|
11239
|
+
state.inFlight = this.fetchSource(source).finally(() => {
|
|
11240
|
+
state.inFlight = null;
|
|
11241
|
+
});
|
|
11242
|
+
return state.inFlight;
|
|
11243
|
+
}
|
|
11244
|
+
async fetchSource(source) {
|
|
11245
|
+
const state = this.getState(source.name);
|
|
11246
|
+
try {
|
|
11247
|
+
const raw = await source.listModels();
|
|
11248
|
+
const value = raw.map((m) => normaliseEntry(m, source));
|
|
11249
|
+
state.value = value;
|
|
11250
|
+
state.fetchedAt = this.now();
|
|
11251
|
+
return value;
|
|
11252
|
+
} catch (e) {
|
|
11253
|
+
logger10.warn("AvailableModelsCache source probe failed", {
|
|
11254
|
+
source: source.name,
|
|
11255
|
+
error: e instanceof Error ? e.message : String(e)
|
|
11256
|
+
});
|
|
11257
|
+
return state.value ?? [];
|
|
11258
|
+
}
|
|
11259
|
+
}
|
|
11260
|
+
getState(name) {
|
|
11261
|
+
const state = this.states.get(name);
|
|
11262
|
+
if (state === void 0) {
|
|
11263
|
+
throw new Error(`AvailableModelsCache: unknown source "${name}"`);
|
|
11264
|
+
}
|
|
11265
|
+
return state;
|
|
11266
|
+
}
|
|
11267
|
+
};
|
|
11268
|
+
function normaliseEntry(raw, source) {
|
|
11269
|
+
const slash = raw.id.indexOf("/");
|
|
11270
|
+
if (slash > 0 && slash < raw.id.length - 1) {
|
|
11271
|
+
return { id: raw.id, source: source.name, provider: raw.id.slice(0, slash) };
|
|
11272
|
+
}
|
|
11273
|
+
if (source.providerHint !== void 0) {
|
|
11274
|
+
return { id: raw.id, source: source.name, provider: source.providerHint };
|
|
11275
|
+
}
|
|
11276
|
+
return { id: raw.id, source: source.name };
|
|
11277
|
+
}
|
|
11278
|
+
var defaultCache = null;
|
|
11279
|
+
function getDefaultAvailableModelsCache() {
|
|
11280
|
+
defaultCache ??= new AvailableModelsCache({ sources: [] });
|
|
11281
|
+
return defaultCache;
|
|
11282
|
+
}
|
|
11283
|
+
function setDefaultAvailableModelsCache(cache) {
|
|
11284
|
+
defaultCache = cache;
|
|
11285
|
+
}
|
|
11286
|
+
|
|
11287
|
+
// src/config/openrouter-models-source.ts
|
|
11288
|
+
import { z as z15 } from "zod";
|
|
11289
|
+
var OPENROUTER_MODELS_URL = "https://openrouter.ai/api/v1/models";
|
|
11290
|
+
var DEFAULT_TIMEOUT_MS = 8e3;
|
|
11291
|
+
var MAX_MODELS = 5e3;
|
|
11292
|
+
var MAX_BYTES = 8e6;
|
|
11293
|
+
var OpenRouterModelSchema = z15.object({ id: z15.string().min(1).max(256) });
|
|
11294
|
+
var OpenRouterModelsResponseSchema = z15.object({ data: z15.array(OpenRouterModelSchema) });
|
|
11295
|
+
var logger11 = createLogger({ component: "openrouter-models-source" });
|
|
11296
|
+
function parseCatalog(text) {
|
|
11297
|
+
if (text.length > MAX_BYTES) {
|
|
11298
|
+
logger11.warn("OpenRouter catalog exceeds byte cap; ignoring", { bytes: text.length });
|
|
11299
|
+
return [];
|
|
11300
|
+
}
|
|
11301
|
+
const parsed = OpenRouterModelsResponseSchema.safeParse(JSON.parse(text));
|
|
11302
|
+
if (!parsed.success) {
|
|
11303
|
+
logger11.warn("OpenRouter catalog failed schema validation; treating as empty", {
|
|
11304
|
+
error: parsed.error.message
|
|
11305
|
+
});
|
|
11306
|
+
return [];
|
|
11307
|
+
}
|
|
11308
|
+
return parsed.data.data.slice(0, MAX_MODELS).map((m) => ({ id: m.id }));
|
|
11309
|
+
}
|
|
11310
|
+
async function fetchCatalog(url, timeoutMs, doFetch) {
|
|
11311
|
+
const controller = new AbortController();
|
|
11312
|
+
const timer = setTimeout(() => {
|
|
11313
|
+
controller.abort();
|
|
11314
|
+
}, timeoutMs);
|
|
11315
|
+
try {
|
|
11316
|
+
const res = await doFetch(url, {
|
|
11317
|
+
signal: controller.signal,
|
|
11318
|
+
headers: { accept: "application/json" }
|
|
11319
|
+
});
|
|
11320
|
+
if (!res.ok) {
|
|
11321
|
+
logger11.warn("OpenRouter catalog fetch returned non-OK; treating as empty", {
|
|
11322
|
+
status: res.status
|
|
11323
|
+
});
|
|
11324
|
+
return [];
|
|
11325
|
+
}
|
|
11326
|
+
const declaredLen = res.headers.get("content-length");
|
|
11327
|
+
if (declaredLen !== null && Number(declaredLen) > MAX_BYTES) {
|
|
11328
|
+
logger11.warn("OpenRouter catalog Content-Length exceeds byte cap; ignoring", {
|
|
11329
|
+
bytes: declaredLen
|
|
11330
|
+
});
|
|
11331
|
+
return [];
|
|
11332
|
+
}
|
|
11333
|
+
const ids = parseCatalog(await res.text());
|
|
11334
|
+
logger11.debug("OpenRouter catalog loaded", { count: ids.length });
|
|
11335
|
+
return ids;
|
|
11336
|
+
} catch (error) {
|
|
11337
|
+
logger11.warn("OpenRouter catalog fetch failed; treating as empty", {
|
|
11338
|
+
error: error instanceof Error ? error.message : String(error)
|
|
11339
|
+
});
|
|
11340
|
+
return [];
|
|
11341
|
+
} finally {
|
|
11342
|
+
clearTimeout(timer);
|
|
11343
|
+
}
|
|
11344
|
+
}
|
|
11345
|
+
function createOpenRouterModelsSource(opts = {}) {
|
|
11346
|
+
const url = opts.url ?? OPENROUTER_MODELS_URL;
|
|
11347
|
+
const timeoutMs = opts.timeoutMs ?? DEFAULT_TIMEOUT_MS;
|
|
11348
|
+
const doFetch = opts.fetchImpl ?? fetch;
|
|
11349
|
+
return {
|
|
11350
|
+
name: "openrouter",
|
|
11351
|
+
providerHint: "openrouter",
|
|
11352
|
+
listModels: () => fetchCatalog(url, timeoutMs, doFetch)
|
|
11353
|
+
};
|
|
11354
|
+
}
|
|
11355
|
+
|
|
11356
|
+
// src/config/register-model-sources.ts
|
|
11357
|
+
var logger12 = createLogger({ component: "register-model-sources" });
|
|
11358
|
+
function isDynamicModelsEnabled() {
|
|
11359
|
+
return process.env["NEXUS_DYNAMIC_MODELS"] === "true";
|
|
11360
|
+
}
|
|
11361
|
+
function hasListModels(adapter) {
|
|
11362
|
+
return typeof adapter === "object" && adapter !== null && typeof adapter.listModels === "function";
|
|
11363
|
+
}
|
|
11364
|
+
function adapterSource(cliName, adapter) {
|
|
11365
|
+
return {
|
|
11366
|
+
name: cliName,
|
|
11367
|
+
listModels: () => adapter.listModels().then((models) => models.map((m) => ({ id: m.id }))).catch((error) => {
|
|
11368
|
+
logger12.debug("adapter listModels failed; treating as empty", {
|
|
11369
|
+
cli: cliName,
|
|
11370
|
+
error: error instanceof Error ? error.message : String(error)
|
|
11371
|
+
});
|
|
11372
|
+
return [];
|
|
11373
|
+
})
|
|
11374
|
+
};
|
|
11375
|
+
}
|
|
11376
|
+
function registerDefaultModelSources(cache, adapters, opts = {}) {
|
|
11377
|
+
if (opts.includeOpenRouter !== false) {
|
|
11378
|
+
cache.addSource(createOpenRouterModelsSource());
|
|
11379
|
+
}
|
|
11380
|
+
for (const [cliName, adapter] of adapters) {
|
|
11381
|
+
if (hasListModels(adapter)) {
|
|
11382
|
+
cache.addSource(adapterSource(cliName, adapter));
|
|
11383
|
+
}
|
|
11384
|
+
}
|
|
11385
|
+
}
|
|
11386
|
+
|
|
11144
11387
|
// src/cli-adapters/composite-router-outcome.ts
|
|
11145
11388
|
var sharedAnalyzer3 = createSharedTaskAnalyzer();
|
|
11146
11389
|
function recordBanditOutcome(cliName, task, reward, deps) {
|
|
@@ -11346,7 +11589,7 @@ var CompositeRouter = class _CompositeRouter {
|
|
|
11346
11589
|
lastRoutedTask;
|
|
11347
11590
|
// Track last traceId for metrics correlation (Issue #559)
|
|
11348
11591
|
lastTraceId;
|
|
11349
|
-
constructor(adapters, config,
|
|
11592
|
+
constructor(adapters, config, logger14) {
|
|
11350
11593
|
const {
|
|
11351
11594
|
preferenceRouterConfig,
|
|
11352
11595
|
zeroRouterConfig,
|
|
@@ -11363,7 +11606,7 @@ var CompositeRouter = class _CompositeRouter {
|
|
|
11363
11606
|
...baseConfig
|
|
11364
11607
|
} = config ?? {};
|
|
11365
11608
|
this.config = CompositeRouterConfigSchema.parse(baseConfig);
|
|
11366
|
-
this.logger =
|
|
11609
|
+
this.logger = logger14 ?? createLogger({ component: "CompositeRouter" });
|
|
11367
11610
|
this.adapters = adapters;
|
|
11368
11611
|
this.cliNames = Array.from(adapters.keys());
|
|
11369
11612
|
if (metricsCollector !== void 0) {
|
|
@@ -11522,7 +11765,7 @@ var CompositeRouter = class _CompositeRouter {
|
|
|
11522
11765
|
*/
|
|
11523
11766
|
async consultUnifiedContext(task) {
|
|
11524
11767
|
try {
|
|
11525
|
-
const { getContextForTask, inferTaskCategory } = await import("./context-retriever-
|
|
11768
|
+
const { getContextForTask, inferTaskCategory } = await import("./context-retriever-BE4DNAPM.js");
|
|
11526
11769
|
const ctx = await getContextForTask({
|
|
11527
11770
|
task: task.content,
|
|
11528
11771
|
category: inferTaskCategory(task.content),
|
|
@@ -11858,8 +12101,14 @@ var CompositeRouter = class _CompositeRouter {
|
|
|
11858
12101
|
return this.routingMemory;
|
|
11859
12102
|
}
|
|
11860
12103
|
};
|
|
11861
|
-
function createCompositeRouter(adapters, config,
|
|
11862
|
-
|
|
12104
|
+
function createCompositeRouter(adapters, config, logger14) {
|
|
12105
|
+
let resolved = config;
|
|
12106
|
+
if (isDynamicModelsEnabled() && config?.availableModelsCache === void 0) {
|
|
12107
|
+
const cache = getDefaultAvailableModelsCache();
|
|
12108
|
+
registerDefaultModelSources(cache, adapters);
|
|
12109
|
+
resolved = { ...config, availableModelsCache: cache };
|
|
12110
|
+
}
|
|
12111
|
+
return new CompositeRouter(adapters, resolved, logger14);
|
|
11863
12112
|
}
|
|
11864
12113
|
|
|
11865
12114
|
// src/core/types/model.ts
|
|
@@ -11914,7 +12163,7 @@ import { dirname as dirname4 } from "path";
|
|
|
11914
12163
|
import { mkdirSync as mkdirSync2 } from "fs";
|
|
11915
12164
|
|
|
11916
12165
|
// src/context/mobimem-types.ts
|
|
11917
|
-
import { z as
|
|
12166
|
+
import { z as z16 } from "zod";
|
|
11918
12167
|
var DEFAULT_MOBIMEM_CONFIG = {
|
|
11919
12168
|
dbPath: ":memory:",
|
|
11920
12169
|
maxProfileEntries: 100,
|
|
@@ -11926,15 +12175,15 @@ var DEFAULT_MOBIMEM_CONFIG = {
|
|
|
11926
12175
|
minExperienceSuccessRate: 0.7,
|
|
11927
12176
|
autoEviction: true
|
|
11928
12177
|
};
|
|
11929
|
-
var MobiMemConfigSchema =
|
|
11930
|
-
dbPath:
|
|
11931
|
-
maxProfileEntries:
|
|
11932
|
-
maxExperiencePatterns:
|
|
11933
|
-
maxActionCacheEntries:
|
|
11934
|
-
actionCacheTtlMs:
|
|
11935
|
-
minProfileConfidence:
|
|
11936
|
-
minExperienceSuccessRate:
|
|
11937
|
-
autoEviction:
|
|
12178
|
+
var MobiMemConfigSchema = z16.object({
|
|
12179
|
+
dbPath: z16.string(),
|
|
12180
|
+
maxProfileEntries: z16.number().int().positive().default(100),
|
|
12181
|
+
maxExperiencePatterns: z16.number().int().positive().default(500),
|
|
12182
|
+
maxActionCacheEntries: z16.number().int().positive().default(1e3),
|
|
12183
|
+
actionCacheTtlMs: z16.number().int().positive().default(36e5),
|
|
12184
|
+
minProfileConfidence: z16.number().min(0).max(1).default(0.6),
|
|
12185
|
+
minExperienceSuccessRate: z16.number().min(0).max(1).default(0.7),
|
|
12186
|
+
autoEviction: z16.boolean().default(true)
|
|
11938
12187
|
});
|
|
11939
12188
|
|
|
11940
12189
|
// src/context/mobimem-impl.ts
|
|
@@ -12385,7 +12634,7 @@ var ActionCacheImpl = class {
|
|
|
12385
12634
|
};
|
|
12386
12635
|
|
|
12387
12636
|
// src/context/mobimem.ts
|
|
12388
|
-
var
|
|
12637
|
+
var logger13 = createLogger({ component: "MobiMem" });
|
|
12389
12638
|
var MobiMem = class {
|
|
12390
12639
|
profile;
|
|
12391
12640
|
experience;
|
|
@@ -12406,7 +12655,7 @@ var MobiMem = class {
|
|
|
12406
12655
|
this.profile = new ProfileMemoryImpl(this.config, this.db);
|
|
12407
12656
|
this.experience = new ExperienceMemoryImpl(this.config, this.db);
|
|
12408
12657
|
this.action = new ActionCacheImpl(this.config, this.db);
|
|
12409
|
-
|
|
12658
|
+
logger13.info("MobiMem initialized", {
|
|
12410
12659
|
dbPath: validated.dbPath,
|
|
12411
12660
|
persisted: this.db !== null,
|
|
12412
12661
|
maxProfileEntries: this.config.maxProfileEntries,
|
|
@@ -12439,13 +12688,13 @@ var MobiMem = class {
|
|
|
12439
12688
|
if (this.config.autoEviction) {
|
|
12440
12689
|
const evicted = this.action.evictExpired();
|
|
12441
12690
|
if (evicted > 0) {
|
|
12442
|
-
|
|
12691
|
+
logger13.debug("Evicted expired action cache entries", { count: evicted });
|
|
12443
12692
|
}
|
|
12444
12693
|
}
|
|
12445
12694
|
}
|
|
12446
12695
|
close() {
|
|
12447
12696
|
if (this.db !== null) this.db.close();
|
|
12448
|
-
|
|
12697
|
+
logger13.info("MobiMem closed");
|
|
12449
12698
|
}
|
|
12450
12699
|
};
|
|
12451
12700
|
var sharedInstance = null;
|
|
@@ -12851,6 +13100,9 @@ export {
|
|
|
12851
13100
|
getAdaptiveBonus,
|
|
12852
13101
|
shouldExplore,
|
|
12853
13102
|
getFallbackChainForCategory,
|
|
13103
|
+
AvailableModelsCache,
|
|
13104
|
+
getDefaultAvailableModelsCache,
|
|
13105
|
+
setDefaultAvailableModelsCache,
|
|
12854
13106
|
CompositeRouter,
|
|
12855
13107
|
createCompositeRouter,
|
|
12856
13108
|
ModelCapability,
|
|
@@ -12858,4 +13110,4 @@ export {
|
|
|
12858
13110
|
ParseError,
|
|
12859
13111
|
OrchestratorError
|
|
12860
13112
|
};
|
|
12861
|
-
//# sourceMappingURL=chunk-
|
|
13113
|
+
//# sourceMappingURL=chunk-EYIIQ7KE.js.map
|