nexus-agents 2.93.0 → 2.94.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{child-mcp-config-WNISXFYD.js → child-mcp-config-PPFHJZSO.js} +2 -2
- package/dist/{chunk-RTUZSR4R.js → chunk-24WC4XO2.js} +2 -2
- package/dist/{chunk-XVY3I7JT.js → chunk-2YMRRZRM.js} +9 -12
- package/dist/chunk-2YMRRZRM.js.map +1 -0
- package/dist/{chunk-4A4WPM75.js → chunk-43UDRX3N.js} +8 -10
- package/dist/{chunk-4A4WPM75.js.map → chunk-43UDRX3N.js.map} +1 -1
- package/dist/{chunk-BHA6V7GK.js → chunk-4QESFYGV.js} +4 -4
- package/dist/{chunk-AZP66FIA.js → chunk-5B4VLSMP.js} +3 -3
- package/dist/{chunk-VSG6RSE6.js → chunk-5ZB3MTA7.js} +3 -3
- package/dist/{chunk-FTCU55O6.js → chunk-63OGXDHS.js} +4 -4
- package/dist/{chunk-G5IDRWWI.js → chunk-76535ZNP.js} +4 -4
- package/dist/{chunk-SHSKW5ML.js → chunk-77JUKFTG.js} +7 -7
- package/dist/{chunk-ZYHHDPFW.js → chunk-ADRTAUJA.js} +4 -4
- package/dist/{chunk-DTFMYM3V.js → chunk-EB43BGAR.js} +2 -2
- package/dist/{chunk-T73G67GT.js → chunk-EDPDH5YT.js} +3 -3
- package/dist/{chunk-CPH6LKXO.js → chunk-EJR6U67L.js} +2 -2
- package/dist/{chunk-ULBKFMVO.js → chunk-FUGPKYEJ.js} +2 -2
- package/dist/{chunk-ZOAU7RE4.js → chunk-G5EBHQ2L.js} +4 -6
- package/dist/{chunk-ZOAU7RE4.js.map → chunk-G5EBHQ2L.js.map} +1 -1
- package/dist/{chunk-SMGH2B3A.js → chunk-GMZDRTVJ.js} +20 -3
- package/dist/chunk-GMZDRTVJ.js.map +1 -0
- package/dist/{chunk-57OH2O2U.js → chunk-KSJPDQSG.js} +2 -2
- package/dist/{chunk-JEBWSHSU.js → chunk-L7I55FAN.js} +2 -2
- package/dist/{chunk-JCETWDU7.js → chunk-LCLVSNST.js} +2 -2
- package/dist/{chunk-K7VGX37L.js → chunk-OKGHHCS5.js} +3 -3
- package/dist/{chunk-WU3SUA35.js → chunk-OSSGG7KW.js} +2 -2
- package/dist/{chunk-HKISF2E7.js → chunk-OT6V5ROA.js} +225 -8
- package/dist/chunk-OT6V5ROA.js.map +1 -0
- package/dist/{chunk-BNHBZRU7.js → chunk-Q3NUA7CW.js} +3 -3
- package/dist/{chunk-E3QWWP67.js → chunk-R2NKJPUX.js} +2 -2
- package/dist/{chunk-2T4NV6QT.js → chunk-ROAANOOB.js} +2 -2
- package/dist/{chunk-LJMO5P6O.js → chunk-TNBWHOPY.js} +23 -13
- package/dist/chunk-TNBWHOPY.js.map +1 -0
- package/dist/{chunk-IJ2AZZVH.js → chunk-UC3PVIN4.js} +141 -28
- package/dist/chunk-UC3PVIN4.js.map +1 -0
- package/dist/{chunk-SORBJPRA.js → chunk-XBPFVWA2.js} +2 -2
- package/dist/{chunk-2IBJC2EP.js → chunk-YDXGYKZJ.js} +2 -2
- package/dist/{chunk-5BTRDVWC.js → chunk-ZY2EMD72.js} +5 -5
- package/dist/{cli-circuit-breaker-6E4E2IU7.js → cli-circuit-breaker-BAERQZ3H.js} +4 -4
- package/dist/cli.js +68 -42
- package/dist/cli.js.map +1 -1
- package/dist/{composite-router-MQOPXLVV.js → composite-router-EONKFRDD.js} +2 -2
- package/dist/{consensus-vote-ZRADOLXH.js → consensus-vote-TO5575P3.js} +12 -13
- package/dist/{context-retriever-TZGIETJO.js → context-retriever-JM564MOV.js} +6 -6
- package/dist/{doctor-deep-OU2WC55V.js → doctor-deep-VFBQ7TY4.js} +3 -3
- package/dist/{expert-bridge-WP5ZWXFY.js → expert-bridge-OXME7FES.js} +4 -4
- package/dist/{factory-RJTRVII5.js → factory-FVZLVIYH.js} +5 -5
- package/dist/{factory-2TN2VZTR.js → factory-MDT5CFA5.js} +5 -5
- package/dist/index.d.ts +215 -207
- package/dist/index.js +26 -27
- package/dist/index.js.map +1 -1
- package/dist/{init-opencode-AYMNMWU7.js → init-opencode-Y6XKR6WS.js} +5 -5
- package/dist/{issue-triage-QIVZN3PJ.js → issue-triage-2XVD4JQ7.js} +5 -5
- package/dist/{pr-reviewer-helpers-P24OBKVM.js → pr-reviewer-helpers-JLWEQIN6.js} +4 -4
- package/dist/{registry-command-KWWOKJ5C.js → registry-command-FYVOMCBG.js} +2 -2
- package/dist/{repo-security-plan-KZNEXDCI.js → repo-security-plan-JRDHWI2R.js} +3 -3
- package/dist/{research-helpers-synthesize-DH5PPX7A.js → research-helpers-synthesize-F7L7M7FJ.js} +3 -4
- package/dist/{routing-memory-AGHJQTRH.js → routing-memory-JAV2ICXR.js} +2 -2
- package/dist/{session-memory-O24IVZAW.js → session-memory-2XAGY3PX.js} +3 -3
- package/dist/{setup-command-NBXZ4NGV.js → setup-command-6WVEOE4Q.js} +11 -12
- package/dist/{setup-config-Y4JA5QWO.js → setup-config-KUZU2GFI.js} +3 -3
- package/dist/{setup-custom-api-UNX4OJEX.js → setup-custom-api-3M7CU3TF.js} +4 -5
- package/dist/{setup-custom-api-UNX4OJEX.js.map → setup-custom-api-3M7CU3TF.js.map} +1 -1
- package/dist/{tool-memory-UEQNXIGC.js → tool-memory-YWX4FTIQ.js} +5 -5
- package/dist/{weather-report-S5YXRY7G.js → weather-report-ZZM5EU7N.js} +2 -2
- package/package.json +1 -1
- package/dist/chunk-HKISF2E7.js.map +0 -1
- package/dist/chunk-IJ2AZZVH.js.map +0 -1
- package/dist/chunk-LJMO5P6O.js.map +0 -1
- package/dist/chunk-NESW2TTD.js +0 -134
- package/dist/chunk-NESW2TTD.js.map +0 -1
- package/dist/chunk-SMGH2B3A.js.map +0 -1
- package/dist/chunk-XVY3I7JT.js.map +0 -1
- /package/dist/{child-mcp-config-WNISXFYD.js.map → child-mcp-config-PPFHJZSO.js.map} +0 -0
- /package/dist/{chunk-RTUZSR4R.js.map → chunk-24WC4XO2.js.map} +0 -0
- /package/dist/{chunk-BHA6V7GK.js.map → chunk-4QESFYGV.js.map} +0 -0
- /package/dist/{chunk-AZP66FIA.js.map → chunk-5B4VLSMP.js.map} +0 -0
- /package/dist/{chunk-VSG6RSE6.js.map → chunk-5ZB3MTA7.js.map} +0 -0
- /package/dist/{chunk-FTCU55O6.js.map → chunk-63OGXDHS.js.map} +0 -0
- /package/dist/{chunk-G5IDRWWI.js.map → chunk-76535ZNP.js.map} +0 -0
- /package/dist/{chunk-SHSKW5ML.js.map → chunk-77JUKFTG.js.map} +0 -0
- /package/dist/{chunk-ZYHHDPFW.js.map → chunk-ADRTAUJA.js.map} +0 -0
- /package/dist/{chunk-DTFMYM3V.js.map → chunk-EB43BGAR.js.map} +0 -0
- /package/dist/{chunk-T73G67GT.js.map → chunk-EDPDH5YT.js.map} +0 -0
- /package/dist/{chunk-CPH6LKXO.js.map → chunk-EJR6U67L.js.map} +0 -0
- /package/dist/{chunk-ULBKFMVO.js.map → chunk-FUGPKYEJ.js.map} +0 -0
- /package/dist/{chunk-57OH2O2U.js.map → chunk-KSJPDQSG.js.map} +0 -0
- /package/dist/{chunk-JEBWSHSU.js.map → chunk-L7I55FAN.js.map} +0 -0
- /package/dist/{chunk-JCETWDU7.js.map → chunk-LCLVSNST.js.map} +0 -0
- /package/dist/{chunk-K7VGX37L.js.map → chunk-OKGHHCS5.js.map} +0 -0
- /package/dist/{chunk-WU3SUA35.js.map → chunk-OSSGG7KW.js.map} +0 -0
- /package/dist/{chunk-BNHBZRU7.js.map → chunk-Q3NUA7CW.js.map} +0 -0
- /package/dist/{chunk-E3QWWP67.js.map → chunk-R2NKJPUX.js.map} +0 -0
- /package/dist/{chunk-2T4NV6QT.js.map → chunk-ROAANOOB.js.map} +0 -0
- /package/dist/{chunk-SORBJPRA.js.map → chunk-XBPFVWA2.js.map} +0 -0
- /package/dist/{chunk-2IBJC2EP.js.map → chunk-YDXGYKZJ.js.map} +0 -0
- /package/dist/{chunk-5BTRDVWC.js.map → chunk-ZY2EMD72.js.map} +0 -0
- /package/dist/{cli-circuit-breaker-6E4E2IU7.js.map → cli-circuit-breaker-BAERQZ3H.js.map} +0 -0
- /package/dist/{composite-router-MQOPXLVV.js.map → composite-router-EONKFRDD.js.map} +0 -0
- /package/dist/{consensus-vote-ZRADOLXH.js.map → consensus-vote-TO5575P3.js.map} +0 -0
- /package/dist/{context-retriever-TZGIETJO.js.map → context-retriever-JM564MOV.js.map} +0 -0
- /package/dist/{doctor-deep-OU2WC55V.js.map → doctor-deep-VFBQ7TY4.js.map} +0 -0
- /package/dist/{expert-bridge-WP5ZWXFY.js.map → expert-bridge-OXME7FES.js.map} +0 -0
- /package/dist/{factory-2TN2VZTR.js.map → factory-FVZLVIYH.js.map} +0 -0
- /package/dist/{factory-RJTRVII5.js.map → factory-MDT5CFA5.js.map} +0 -0
- /package/dist/{init-opencode-AYMNMWU7.js.map → init-opencode-Y6XKR6WS.js.map} +0 -0
- /package/dist/{issue-triage-QIVZN3PJ.js.map → issue-triage-2XVD4JQ7.js.map} +0 -0
- /package/dist/{pr-reviewer-helpers-P24OBKVM.js.map → pr-reviewer-helpers-JLWEQIN6.js.map} +0 -0
- /package/dist/{registry-command-KWWOKJ5C.js.map → registry-command-FYVOMCBG.js.map} +0 -0
- /package/dist/{repo-security-plan-KZNEXDCI.js.map → repo-security-plan-JRDHWI2R.js.map} +0 -0
- /package/dist/{research-helpers-synthesize-DH5PPX7A.js.map → research-helpers-synthesize-F7L7M7FJ.js.map} +0 -0
- /package/dist/{routing-memory-AGHJQTRH.js.map → routing-memory-JAV2ICXR.js.map} +0 -0
- /package/dist/{session-memory-O24IVZAW.js.map → session-memory-2XAGY3PX.js.map} +0 -0
- /package/dist/{setup-command-NBXZ4NGV.js.map → setup-command-6WVEOE4Q.js.map} +0 -0
- /package/dist/{setup-config-Y4JA5QWO.js.map → setup-config-KUZU2GFI.js.map} +0 -0
- /package/dist/{tool-memory-UEQNXIGC.js.map → tool-memory-YWX4FTIQ.js.map} +0 -0
- /package/dist/{weather-report-S5YXRY7G.js.map → weather-report-ZZM5EU7N.js.map} +0 -0
|
@@ -509,6 +509,64 @@ var BoundedLRUCache = class {
|
|
|
509
509
|
}
|
|
510
510
|
};
|
|
511
511
|
|
|
512
|
+
// src/core/tune-adjustment-store.ts
|
|
513
|
+
var TUNE_DEMOTION_FLOOR = 0.5;
|
|
514
|
+
var TUNE_MAX_STEP = 0.2;
|
|
515
|
+
var TUNE_DECAY_WINDOW_MS = 30 * 6e4;
|
|
516
|
+
var TuneAdjustmentStore = class {
|
|
517
|
+
adjustments = /* @__PURE__ */ new Map();
|
|
518
|
+
/**
|
|
519
|
+
* Apply a bounded demotion to `cli`. `magnitude` is the requested reduction
|
|
520
|
+
* (capped to {@link TUNE_MAX_STEP}); compounds on any current (decayed) value
|
|
521
|
+
* but never below {@link TUNE_DEMOTION_FLOOR}. Non-positive magnitudes are a
|
|
522
|
+
* no-op. Returns the resulting adjustment (or undefined for a no-op).
|
|
523
|
+
*/
|
|
524
|
+
demote(cli, magnitude, reason) {
|
|
525
|
+
if (magnitude <= 0) return void 0;
|
|
526
|
+
const step = Math.min(TUNE_MAX_STEP, magnitude);
|
|
527
|
+
const current = this.effectiveMultiplier(cli);
|
|
528
|
+
const next = Math.max(TUNE_DEMOTION_FLOOR, current - step);
|
|
529
|
+
const adjustment = {
|
|
530
|
+
cli,
|
|
531
|
+
multiplier: next,
|
|
532
|
+
appliedAt: getTimeProvider().now(),
|
|
533
|
+
reason
|
|
534
|
+
};
|
|
535
|
+
this.adjustments.set(cli, adjustment);
|
|
536
|
+
return adjustment;
|
|
537
|
+
}
|
|
538
|
+
/**
|
|
539
|
+
* Current effective multiplier for `cli` — the stored multiplier decayed
|
|
540
|
+
* linearly back toward 1.0 over {@link TUNE_DECAY_WINDOW_MS}. Returns 1.0
|
|
541
|
+
* (no effect) when there is no active adjustment. Fully-decayed entries are
|
|
542
|
+
* evicted lazily.
|
|
543
|
+
*/
|
|
544
|
+
effectiveMultiplier(cli) {
|
|
545
|
+
const adjustment = this.adjustments.get(cli);
|
|
546
|
+
if (adjustment === void 0) return 1;
|
|
547
|
+
const elapsed = getTimeProvider().now() - adjustment.appliedAt;
|
|
548
|
+
if (elapsed >= TUNE_DECAY_WINDOW_MS || elapsed < 0) {
|
|
549
|
+
this.adjustments.delete(cli);
|
|
550
|
+
return 1;
|
|
551
|
+
}
|
|
552
|
+
const decayFraction = elapsed / TUNE_DECAY_WINDOW_MS;
|
|
553
|
+
return adjustment.multiplier + (1 - adjustment.multiplier) * decayFraction;
|
|
554
|
+
}
|
|
555
|
+
/** Snapshot of active (non-evicted) adjustments — for observability/audit. */
|
|
556
|
+
list() {
|
|
557
|
+
return [...this.adjustments.values()];
|
|
558
|
+
}
|
|
559
|
+
/** Remove all adjustments. */
|
|
560
|
+
clear() {
|
|
561
|
+
this.adjustments.clear();
|
|
562
|
+
}
|
|
563
|
+
};
|
|
564
|
+
var singleton;
|
|
565
|
+
function getTuneAdjustmentStore() {
|
|
566
|
+
singleton ??= new TuneAdjustmentStore();
|
|
567
|
+
return singleton;
|
|
568
|
+
}
|
|
569
|
+
|
|
512
570
|
// src/core/step-events.ts
|
|
513
571
|
var STEP_SUMMARY_MAX_LEN = 120;
|
|
514
572
|
function truncateSummary(s) {
|
|
@@ -8840,6 +8898,130 @@ async function fetchCapacityData(adapters) {
|
|
|
8840
8898
|
return result;
|
|
8841
8899
|
}
|
|
8842
8900
|
|
|
8901
|
+
// src/config/defaults-env.ts
|
|
8902
|
+
function parseIntEnv(envKey, fallback) {
|
|
8903
|
+
const envValue = process.env[envKey];
|
|
8904
|
+
if (envValue === void 0) {
|
|
8905
|
+
return fallback;
|
|
8906
|
+
}
|
|
8907
|
+
const parsed = parseInt(envValue, 10);
|
|
8908
|
+
return isNaN(parsed) || parsed <= 0 ? fallback : parsed;
|
|
8909
|
+
}
|
|
8910
|
+
function parseFloatEnv(envKey, fallback) {
|
|
8911
|
+
const envValue = process.env[envKey];
|
|
8912
|
+
if (envValue === void 0) {
|
|
8913
|
+
return fallback;
|
|
8914
|
+
}
|
|
8915
|
+
const parsed = parseFloat(envValue);
|
|
8916
|
+
return isNaN(parsed) || !isFinite(parsed) ? fallback : parsed;
|
|
8917
|
+
}
|
|
8918
|
+
function parseBoolEnv(envKey, fallback) {
|
|
8919
|
+
const envValue = process.env[envKey]?.toLowerCase();
|
|
8920
|
+
if (envValue === void 0) {
|
|
8921
|
+
return fallback;
|
|
8922
|
+
}
|
|
8923
|
+
if (envValue === "true" || envValue === "1") return true;
|
|
8924
|
+
if (envValue === "false" || envValue === "0") return false;
|
|
8925
|
+
return fallback;
|
|
8926
|
+
}
|
|
8927
|
+
function createGetTimeout(timeoutDefaults) {
|
|
8928
|
+
return (key) => {
|
|
8929
|
+
const envKey = `NEXUS_TIMEOUT_${key.replace(/Ms$/, "").toUpperCase()}`;
|
|
8930
|
+
return parseIntEnv(envKey, timeoutDefaults[key]);
|
|
8931
|
+
};
|
|
8932
|
+
}
|
|
8933
|
+
function createGetRetryConfig(retryDefaults) {
|
|
8934
|
+
return () => {
|
|
8935
|
+
return {
|
|
8936
|
+
maxRetries: parseIntEnv("NEXUS_RETRY_MAX_RETRIES", retryDefaults.maxRetries),
|
|
8937
|
+
baseDelayMs: parseIntEnv("NEXUS_RETRY_BASE_DELAY", retryDefaults.baseDelayMs),
|
|
8938
|
+
maxDelayMs: parseIntEnv("NEXUS_RETRY_MAX_DELAY", retryDefaults.maxDelayMs),
|
|
8939
|
+
jitterFactor: parseFloatEnv("NEXUS_RETRY_JITTER", retryDefaults.jitterFactor)
|
|
8940
|
+
};
|
|
8941
|
+
};
|
|
8942
|
+
}
|
|
8943
|
+
function createGetRateLimitConfig(rateLimitDefaults) {
|
|
8944
|
+
return () => {
|
|
8945
|
+
return {
|
|
8946
|
+
requestsPerMinute: parseIntEnv("NEXUS_RATE_LIMIT_RPM", rateLimitDefaults.requestsPerMinute),
|
|
8947
|
+
enabled: parseBoolEnv("NEXUS_RATE_LIMIT_ENABLED", rateLimitDefaults.enabled),
|
|
8948
|
+
maxConcurrent: parseIntEnv(
|
|
8949
|
+
"NEXUS_RATE_LIMIT_MAX_CONCURRENT",
|
|
8950
|
+
rateLimitDefaults.maxConcurrent
|
|
8951
|
+
),
|
|
8952
|
+
capacity: parseIntEnv("NEXUS_RATE_LIMIT_CAPACITY", rateLimitDefaults.capacity),
|
|
8953
|
+
refillRate: parseIntEnv("NEXUS_RATE_LIMIT_REFILL_RATE", rateLimitDefaults.refillRate),
|
|
8954
|
+
refillIntervalMs: parseIntEnv(
|
|
8955
|
+
"NEXUS_RATE_LIMIT_REFILL_INTERVAL",
|
|
8956
|
+
rateLimitDefaults.refillIntervalMs
|
|
8957
|
+
)
|
|
8958
|
+
};
|
|
8959
|
+
};
|
|
8960
|
+
}
|
|
8961
|
+
function createGetCircuitBreakerConfig(cbDefaults) {
|
|
8962
|
+
return () => {
|
|
8963
|
+
return {
|
|
8964
|
+
failureThreshold: parseIntEnv("NEXUS_CIRCUIT_BREAKER_THRESHOLD", cbDefaults.failureThreshold),
|
|
8965
|
+
resetTimeoutMs: parseIntEnv("NEXUS_CIRCUIT_BREAKER_RESET_TIMEOUT", cbDefaults.resetTimeoutMs),
|
|
8966
|
+
halfOpenSuccessThreshold: cbDefaults.halfOpenSuccessThreshold,
|
|
8967
|
+
countTimeoutsAsFailures: cbDefaults.countTimeoutsAsFailures,
|
|
8968
|
+
countAuthFailuresAsFailures: cbDefaults.countAuthFailuresAsFailures,
|
|
8969
|
+
countRateLimitsAsFailures: cbDefaults.countRateLimitsAsFailures,
|
|
8970
|
+
halfOpenMaxRequests: cbDefaults.halfOpenMaxRequests
|
|
8971
|
+
};
|
|
8972
|
+
};
|
|
8973
|
+
}
|
|
8974
|
+
function createGetToolRateLimit(toolRateLimits) {
|
|
8975
|
+
return (tool) => {
|
|
8976
|
+
return toolRateLimits[tool];
|
|
8977
|
+
};
|
|
8978
|
+
}
|
|
8979
|
+
function createGetEnvVarDocumentation(defaults) {
|
|
8980
|
+
return () => {
|
|
8981
|
+
const t = defaults.TIMEOUT_DEFAULTS;
|
|
8982
|
+
const r = defaults.RATE_LIMIT_DEFAULTS;
|
|
8983
|
+
const rt = defaults.RETRY_DEFAULTS;
|
|
8984
|
+
const cb = defaults.CIRCUIT_BREAKER_DEFAULTS;
|
|
8985
|
+
return `# Environment Variable Overrides
|
|
8986
|
+
|
|
8987
|
+
All defaults can be overridden via environment variables using the NEXUS_ prefix.
|
|
8988
|
+
|
|
8989
|
+
## Timeouts
|
|
8990
|
+
|
|
8991
|
+
| Variable | Default | Description |
|
|
8992
|
+
| -------- | ------- | ----------- |
|
|
8993
|
+
| NEXUS_TIMEOUT_CLI | ${String(t.cliMs)} | CLI execution timeout (ms) |
|
|
8994
|
+
| NEXUS_TIMEOUT_API | ${String(t.apiMs)} | API request timeout (ms) |
|
|
8995
|
+
| NEXUS_TIMEOUT_WORKFLOW | ${String(t.workflowMs)} | Workflow timeout (ms) |
|
|
8996
|
+
| NEXUS_TIMEOUT_MCP | ${String(t.mcpMs)} | MCP operation timeout (ms) |
|
|
8997
|
+
|
|
8998
|
+
## Rate Limits
|
|
8999
|
+
|
|
9000
|
+
| Variable | Default | Description |
|
|
9001
|
+
| -------- | ------- | ----------- |
|
|
9002
|
+
| NEXUS_RATE_LIMIT_RPM | ${String(r.requestsPerMinute)} | Requests per minute |
|
|
9003
|
+
| NEXUS_RATE_LIMIT_ENABLED | ${String(r.enabled)} | Enable rate limiting |
|
|
9004
|
+
| NEXUS_RATE_LIMIT_CAPACITY | ${String(r.capacity)} | Token bucket capacity |
|
|
9005
|
+
|
|
9006
|
+
## Retries
|
|
9007
|
+
|
|
9008
|
+
| Variable | Default | Description |
|
|
9009
|
+
| -------- | ------- | ----------- |
|
|
9010
|
+
| NEXUS_RETRY_MAX_RETRIES | ${String(rt.maxRetries)} | Maximum retry attempts |
|
|
9011
|
+
| NEXUS_RETRY_BASE_DELAY | ${String(rt.baseDelayMs)} | Base delay (ms) |
|
|
9012
|
+
| NEXUS_RETRY_MAX_DELAY | ${String(rt.maxDelayMs)} | Maximum delay (ms) |
|
|
9013
|
+
| NEXUS_RETRY_JITTER | ${String(rt.jitterFactor)} | Jitter factor (0-1) |
|
|
9014
|
+
|
|
9015
|
+
## Circuit Breaker
|
|
9016
|
+
|
|
9017
|
+
| Variable | Default | Description |
|
|
9018
|
+
| -------- | ------- | ----------- |
|
|
9019
|
+
| NEXUS_CIRCUIT_BREAKER_THRESHOLD | ${String(cb.failureThreshold)} | Failure threshold |
|
|
9020
|
+
| NEXUS_CIRCUIT_BREAKER_RESET_TIMEOUT | ${String(cb.resetTimeoutMs)} | Reset timeout (ms) |
|
|
9021
|
+
`;
|
|
9022
|
+
};
|
|
9023
|
+
}
|
|
9024
|
+
|
|
8843
9025
|
// src/mcp/tools/weather-report-types.ts
|
|
8844
9026
|
import { z as z12 } from "zod";
|
|
8845
9027
|
var WeatherReportInputSchema = z12.object({
|
|
@@ -10645,7 +10827,7 @@ async function runScoringStages(task, candidates, stagesExecuted, deps) {
|
|
|
10645
10827
|
candidates: filtered
|
|
10646
10828
|
};
|
|
10647
10829
|
}
|
|
10648
|
-
function aggregateStageScores(scoring, taskContent) {
|
|
10830
|
+
function aggregateStageScores(scoring, taskContent, candidates) {
|
|
10649
10831
|
const weatherScores = getWeatherBonusForTask(taskContent);
|
|
10650
10832
|
return mergeScoreMaps(
|
|
10651
10833
|
scoring.cascadeResult.scores,
|
|
@@ -10653,9 +10835,23 @@ function aggregateStageScores(scoring, taskContent) {
|
|
|
10653
10835
|
scoring.knnResult.scores,
|
|
10654
10836
|
scoring.distilledResult.scores,
|
|
10655
10837
|
scoring.resourceResult.scores,
|
|
10656
|
-
weatherScores
|
|
10838
|
+
weatherScores,
|
|
10839
|
+
getTuneAdjustmentScores(candidates)
|
|
10657
10840
|
);
|
|
10658
10841
|
}
|
|
10842
|
+
var TUNE_ENFORCE_ENV = "NEXUS_TUNE_ENFORCE";
|
|
10843
|
+
function getTuneAdjustmentScores(candidates) {
|
|
10844
|
+
const scores = /* @__PURE__ */ new Map();
|
|
10845
|
+
if (!parseBoolEnv(TUNE_ENFORCE_ENV, false)) return scores;
|
|
10846
|
+
const store = getTuneAdjustmentStore();
|
|
10847
|
+
for (const cli of candidates) {
|
|
10848
|
+
const multiplier = store.effectiveMultiplier(cli);
|
|
10849
|
+
if (multiplier < 1) {
|
|
10850
|
+
scores.set(cli, -(1 - multiplier) * 10);
|
|
10851
|
+
}
|
|
10852
|
+
}
|
|
10853
|
+
return scores;
|
|
10854
|
+
}
|
|
10659
10855
|
function getWeatherBonusForTask(taskContent) {
|
|
10660
10856
|
try {
|
|
10661
10857
|
const match = detectTaskCategory(taskContent);
|
|
@@ -10733,7 +10929,7 @@ async function runPipeline(task, taskProfile, stagesExecuted, cliNames, deps) {
|
|
|
10733
10929
|
const overrideResult = applyCategoryOverride(task, candidates, stagesExecuted);
|
|
10734
10930
|
if (!overrideResult.ok) return overrideResult;
|
|
10735
10931
|
candidates = overrideResult.value;
|
|
10736
|
-
const stageScores = aggregateStageScores(scoring, task.content);
|
|
10932
|
+
const stageScores = aggregateStageScores(scoring, task.content, candidates);
|
|
10737
10933
|
const topsisOpts = {
|
|
10738
10934
|
performanceData: getPerformanceDataForCategory(task.content)
|
|
10739
10935
|
};
|
|
@@ -10878,13 +11074,26 @@ function hasMinimumPreferenceData(deps) {
|
|
|
10878
11074
|
}
|
|
10879
11075
|
var QUALITY_HISTORY_LIMIT = 20;
|
|
10880
11076
|
var MAX_LATENCY_MS = 3e4;
|
|
11077
|
+
var QUALITY_RATE_CACHE_TTL_MS = 15e3;
|
|
11078
|
+
var qualityRateCache = /* @__PURE__ */ new Map();
|
|
11079
|
+
function getCachedCliSuccessRate(cli) {
|
|
11080
|
+
const now = getTimeProvider().now();
|
|
11081
|
+
const cached = qualityRateCache.get(cli);
|
|
11082
|
+
if (cached !== void 0 && now - cached.computedAt < QUALITY_RATE_CACHE_TTL_MS) {
|
|
11083
|
+
return cached.rate;
|
|
11084
|
+
}
|
|
11085
|
+
const recent = getOutcomeStore().query({ cli, limit: QUALITY_HISTORY_LIMIT });
|
|
11086
|
+
if (recent.length === 0) return void 0;
|
|
11087
|
+
const rate = recent.filter((o) => o.success).length / recent.length;
|
|
11088
|
+
qualityRateCache.set(cli, { rate, computedAt: now });
|
|
11089
|
+
return rate;
|
|
11090
|
+
}
|
|
10881
11091
|
function computeQualityReward(cli, success, durationMs2) {
|
|
10882
11092
|
if (!success) return 0.1;
|
|
10883
11093
|
let reward = 0.5;
|
|
10884
11094
|
try {
|
|
10885
|
-
const
|
|
10886
|
-
if (
|
|
10887
|
-
const rate = recent.filter((o) => o.success).length / recent.length;
|
|
11095
|
+
const rate = getCachedCliSuccessRate(cli);
|
|
11096
|
+
if (rate !== void 0) {
|
|
10888
11097
|
reward += rate * 0.3;
|
|
10889
11098
|
}
|
|
10890
11099
|
} catch (error) {
|
|
@@ -11179,7 +11388,7 @@ var CompositeRouter = class _CompositeRouter {
|
|
|
11179
11388
|
*/
|
|
11180
11389
|
async consultUnifiedContext(task) {
|
|
11181
11390
|
try {
|
|
11182
|
-
const { getContextForTask, inferTaskCategory } = await import("./context-retriever-
|
|
11391
|
+
const { getContextForTask, inferTaskCategory } = await import("./context-retriever-JM564MOV.js");
|
|
11183
11392
|
const ctx = await getContextForTask({
|
|
11184
11393
|
task: task.content,
|
|
11185
11394
|
category: inferTaskCategory(task.content),
|
|
@@ -12328,6 +12537,7 @@ export {
|
|
|
12328
12537
|
CircularBuffer,
|
|
12329
12538
|
BoundedLRUCache,
|
|
12330
12539
|
getTimeProvider,
|
|
12540
|
+
getTuneAdjustmentStore,
|
|
12331
12541
|
withStep,
|
|
12332
12542
|
sanitize,
|
|
12333
12543
|
setGlobalLogLevel,
|
|
@@ -12452,6 +12662,13 @@ export {
|
|
|
12452
12662
|
CompositeRouterConfigSchema,
|
|
12453
12663
|
DEFAULT_COMPOSITE_CONFIG,
|
|
12454
12664
|
CompositeRoutingError,
|
|
12665
|
+
parseBoolEnv,
|
|
12666
|
+
createGetTimeout,
|
|
12667
|
+
createGetRetryConfig,
|
|
12668
|
+
createGetRateLimitConfig,
|
|
12669
|
+
createGetCircuitBreakerConfig,
|
|
12670
|
+
createGetToolRateLimit,
|
|
12671
|
+
createGetEnvVarDocumentation,
|
|
12455
12672
|
WeatherReportInputSchema,
|
|
12456
12673
|
SECURITY_KEYWORDS,
|
|
12457
12674
|
ARCHITECTURE_KEYWORDS,
|
|
@@ -12502,4 +12719,4 @@ export {
|
|
|
12502
12719
|
ParseError,
|
|
12503
12720
|
OrchestratorError
|
|
12504
12721
|
};
|
|
12505
|
-
//# sourceMappingURL=chunk-
|
|
12722
|
+
//# sourceMappingURL=chunk-OT6V5ROA.js.map
|