nexus-agents 2.80.0 → 2.80.2
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-SM5I7USN.js → child-mcp-config-UG4CH654.js} +3 -3
- package/dist/{chunk-EVZ7YR7H.js → chunk-2ZRTLW2G.js} +3 -3
- package/dist/{chunk-VS4KB3AX.js → chunk-376MBRLD.js} +8 -8
- package/dist/{chunk-6CJIKX6I.js → chunk-3QRO77LO.js} +44 -16
- package/dist/{chunk-6CJIKX6I.js.map → chunk-3QRO77LO.js.map} +1 -1
- package/dist/{chunk-YMT6H2HQ.js → chunk-4MHE5UVO.js} +10 -6
- package/dist/{chunk-YMT6H2HQ.js.map → chunk-4MHE5UVO.js.map} +1 -1
- package/dist/{chunk-ZU2Q3DWE.js → chunk-5FUVEIJC.js} +100 -7
- package/dist/chunk-5FUVEIJC.js.map +1 -0
- package/dist/{chunk-EKRMWVAH.js → chunk-5SBD55T7.js} +4 -4
- package/dist/{chunk-UGXR4PAY.js → chunk-7BSVRW2O.js} +5 -5
- package/dist/{chunk-CTSESEFA.js → chunk-BQ55PBN4.js} +2 -2
- package/dist/{chunk-SHVGZK4A.js → chunk-C3BOZZQC.js} +3 -3
- package/dist/{chunk-AYZ6P7CK.js → chunk-FBW6XKZJ.js} +2 -2
- package/dist/{chunk-J5XEJHIQ.js → chunk-FQKQUJBU.js} +3 -3
- package/dist/{chunk-JLWKHYIU.js → chunk-GHWTMPPL.js} +2 -2
- package/dist/{chunk-FJHZW7CR.js → chunk-H4XSKDI6.js} +2 -2
- package/dist/{chunk-BSIGP5XF.js → chunk-HDFUSBU3.js} +2 -2
- package/dist/{chunk-UVALD724.js → chunk-HQR27JGL.js} +2 -2
- package/dist/{chunk-FAJAWO42.js → chunk-HXXRFTKP.js} +3 -3
- package/dist/{chunk-YGKPWUJ6.js → chunk-HYNFZQU4.js} +2 -2
- package/dist/{chunk-JXDDSNEK.js → chunk-JECCDZ2S.js} +2 -2
- package/dist/{chunk-OO6MTUDS.js → chunk-KN7JWET4.js} +3 -3
- package/dist/{chunk-2DBPZQLO.js → chunk-LUVQUKW5.js} +2 -2
- package/dist/{chunk-QVHXEQFM.js → chunk-OO662XRQ.js} +3 -3
- package/dist/{chunk-UP2VWCW5.js → chunk-PR4QN5HX.js} +12 -7
- package/dist/{chunk-GNRANMQ3.js → chunk-RCNNN4E2.js} +947 -880
- package/dist/chunk-RCNNN4E2.js.map +1 -0
- package/dist/{chunk-HBKZ2DJK.js → chunk-RCWWUZHA.js} +2 -2
- package/dist/{chunk-SJUSQGKH.js → chunk-RFUBLOZQ.js} +7 -7
- package/dist/{chunk-RIUUFBX4.js → chunk-TE26NHNW.js} +2 -2
- package/dist/{chunk-Q2U6SFN2.js → chunk-TLE2YE6G.js} +2 -2
- package/dist/{chunk-4XGKCVJL.js → chunk-VQBVL3UD.js} +2 -2
- package/dist/{cli-circuit-breaker-JGX54DAD.js → cli-circuit-breaker-MAN2V7DA.js} +5 -5
- package/dist/cli.js +92 -83
- package/dist/cli.js.map +1 -1
- package/dist/{codebase-search-CZUA37RU.js → codebase-search-PIBRTGBE.js} +2 -2
- package/dist/{composite-router-UYFYSMBT.js → composite-router-YCIEYOZC.js} +3 -3
- package/dist/{consensus-vote-BZ6JSN67.js → consensus-vote-TGTGZSPS.js} +12 -12
- package/dist/{context-retriever-G23VVJ5S.js → context-retriever-FKJKKPAA.js} +6 -6
- package/dist/dist-APHOQ26Z.js +45959 -0
- package/dist/dist-APHOQ26Z.js.map +1 -0
- package/dist/{dist-NIXVXYIH.js → dist-OFXI4GYH.js} +2 -2
- package/dist/{doctor-deep-OF2LXZ6A.js → doctor-deep-2KT4LZA6.js} +4 -4
- package/dist/expert-bridge-6NA7MK7T.js +11 -0
- package/dist/{expert-config-HN7U7X2K.js → expert-config-OIIUMJFB.js} +2 -2
- package/dist/factory-IIPDY7QB.js +14 -0
- package/dist/{factory-I54TX7OY.js → factory-VXHVQXKR.js} +5 -5
- package/dist/index.d.ts +68 -5
- package/dist/index.js +50 -31
- package/dist/index.js.map +1 -1
- package/dist/{init-opencode-FE7HVWQL.js → init-opencode-26YCTSR4.js} +6 -6
- package/dist/issue-triage-NGWFHIKY.js +15 -0
- package/dist/{learning-persistence-TGOBRUUU.js → learning-persistence-Q63HZ2EB.js} +2 -2
- package/dist/{outcome-store-adapter-QRFJJIKB.js → outcome-store-adapter-D3UDQFNQ.js} +2 -2
- package/dist/{pr-reviewer-helpers-L4L324FQ.js → pr-reviewer-helpers-WYPUYQ2U.js} +2 -2
- package/dist/{registry-command-NZLX7ZFV.js → registry-command-AKJBYP5N.js} +3 -3
- package/dist/{repo-analyze-GBQT4LAK.js → repo-analyze-D2OY2QSR.js} +2 -2
- package/dist/{repo-security-plan-74GJWJSV.js → repo-security-plan-ZGJN6QRW.js} +4 -4
- package/dist/{research-helpers-synthesize-LFPEXRIV.js → research-helpers-synthesize-ZWBBFT2O.js} +4 -4
- package/dist/{routing-memory-Y2LSEQVS.js → routing-memory-Y5UBVQGM.js} +3 -3
- package/dist/{session-memory-RCNQJDJR.js → session-memory-OOBM2GQ7.js} +4 -4
- package/dist/{setup-command-ZPLPOJF2.js → setup-command-VJLR47CI.js} +11 -11
- package/dist/setup-config-F7NK2KVC.js +10 -0
- package/dist/{setup-custom-api-XTJ6YZM6.js → setup-custom-api-53SYDF4L.js} +5 -5
- package/dist/{shared-memory-AEO2HJLC.js → shared-memory-CM6T2MYE.js} +2 -2
- package/dist/{symbol-extractor-UEBANFSN.js → symbol-extractor-WYXPJH65.js} +2 -2
- package/dist/{tool-memory-COZK6SR7.js → tool-memory-RZ7NJCPV.js} +5 -5
- package/dist/{weather-report-O4XOYGPK.js → weather-report-VOSP7KKV.js} +3 -3
- package/package.json +16 -16
- package/dist/chunk-GNRANMQ3.js.map +0 -1
- package/dist/chunk-ZU2Q3DWE.js.map +0 -1
- package/dist/dist-RLMRWMYO.js +0 -49531
- package/dist/dist-RLMRWMYO.js.map +0 -1
- package/dist/expert-bridge-6ZLD2NWD.js +0 -11
- package/dist/factory-UHDCLEUE.js +0 -14
- package/dist/issue-triage-7NR5NQUY.js +0 -15
- package/dist/setup-config-F7VRWXY3.js +0 -10
- /package/dist/{child-mcp-config-SM5I7USN.js.map → child-mcp-config-UG4CH654.js.map} +0 -0
- /package/dist/{chunk-EVZ7YR7H.js.map → chunk-2ZRTLW2G.js.map} +0 -0
- /package/dist/{chunk-VS4KB3AX.js.map → chunk-376MBRLD.js.map} +0 -0
- /package/dist/{chunk-EKRMWVAH.js.map → chunk-5SBD55T7.js.map} +0 -0
- /package/dist/{chunk-UGXR4PAY.js.map → chunk-7BSVRW2O.js.map} +0 -0
- /package/dist/{chunk-CTSESEFA.js.map → chunk-BQ55PBN4.js.map} +0 -0
- /package/dist/{chunk-SHVGZK4A.js.map → chunk-C3BOZZQC.js.map} +0 -0
- /package/dist/{chunk-AYZ6P7CK.js.map → chunk-FBW6XKZJ.js.map} +0 -0
- /package/dist/{chunk-J5XEJHIQ.js.map → chunk-FQKQUJBU.js.map} +0 -0
- /package/dist/{chunk-JLWKHYIU.js.map → chunk-GHWTMPPL.js.map} +0 -0
- /package/dist/{chunk-FJHZW7CR.js.map → chunk-H4XSKDI6.js.map} +0 -0
- /package/dist/{chunk-BSIGP5XF.js.map → chunk-HDFUSBU3.js.map} +0 -0
- /package/dist/{chunk-UVALD724.js.map → chunk-HQR27JGL.js.map} +0 -0
- /package/dist/{chunk-FAJAWO42.js.map → chunk-HXXRFTKP.js.map} +0 -0
- /package/dist/{chunk-YGKPWUJ6.js.map → chunk-HYNFZQU4.js.map} +0 -0
- /package/dist/{chunk-JXDDSNEK.js.map → chunk-JECCDZ2S.js.map} +0 -0
- /package/dist/{chunk-OO6MTUDS.js.map → chunk-KN7JWET4.js.map} +0 -0
- /package/dist/{chunk-2DBPZQLO.js.map → chunk-LUVQUKW5.js.map} +0 -0
- /package/dist/{chunk-QVHXEQFM.js.map → chunk-OO662XRQ.js.map} +0 -0
- /package/dist/{chunk-UP2VWCW5.js.map → chunk-PR4QN5HX.js.map} +0 -0
- /package/dist/{chunk-HBKZ2DJK.js.map → chunk-RCWWUZHA.js.map} +0 -0
- /package/dist/{chunk-SJUSQGKH.js.map → chunk-RFUBLOZQ.js.map} +0 -0
- /package/dist/{chunk-RIUUFBX4.js.map → chunk-TE26NHNW.js.map} +0 -0
- /package/dist/{chunk-Q2U6SFN2.js.map → chunk-TLE2YE6G.js.map} +0 -0
- /package/dist/{chunk-4XGKCVJL.js.map → chunk-VQBVL3UD.js.map} +0 -0
- /package/dist/{cli-circuit-breaker-JGX54DAD.js.map → cli-circuit-breaker-MAN2V7DA.js.map} +0 -0
- /package/dist/{codebase-search-CZUA37RU.js.map → codebase-search-PIBRTGBE.js.map} +0 -0
- /package/dist/{composite-router-UYFYSMBT.js.map → composite-router-YCIEYOZC.js.map} +0 -0
- /package/dist/{consensus-vote-BZ6JSN67.js.map → consensus-vote-TGTGZSPS.js.map} +0 -0
- /package/dist/{context-retriever-G23VVJ5S.js.map → context-retriever-FKJKKPAA.js.map} +0 -0
- /package/dist/{dist-NIXVXYIH.js.map → dist-OFXI4GYH.js.map} +0 -0
- /package/dist/{doctor-deep-OF2LXZ6A.js.map → doctor-deep-2KT4LZA6.js.map} +0 -0
- /package/dist/{expert-bridge-6ZLD2NWD.js.map → expert-bridge-6NA7MK7T.js.map} +0 -0
- /package/dist/{expert-config-HN7U7X2K.js.map → expert-config-OIIUMJFB.js.map} +0 -0
- /package/dist/{factory-I54TX7OY.js.map → factory-IIPDY7QB.js.map} +0 -0
- /package/dist/{factory-UHDCLEUE.js.map → factory-VXHVQXKR.js.map} +0 -0
- /package/dist/{init-opencode-FE7HVWQL.js.map → init-opencode-26YCTSR4.js.map} +0 -0
- /package/dist/{issue-triage-7NR5NQUY.js.map → issue-triage-NGWFHIKY.js.map} +0 -0
- /package/dist/{learning-persistence-TGOBRUUU.js.map → learning-persistence-Q63HZ2EB.js.map} +0 -0
- /package/dist/{outcome-store-adapter-QRFJJIKB.js.map → outcome-store-adapter-D3UDQFNQ.js.map} +0 -0
- /package/dist/{pr-reviewer-helpers-L4L324FQ.js.map → pr-reviewer-helpers-WYPUYQ2U.js.map} +0 -0
- /package/dist/{registry-command-NZLX7ZFV.js.map → registry-command-AKJBYP5N.js.map} +0 -0
- /package/dist/{repo-analyze-GBQT4LAK.js.map → repo-analyze-D2OY2QSR.js.map} +0 -0
- /package/dist/{repo-security-plan-74GJWJSV.js.map → repo-security-plan-ZGJN6QRW.js.map} +0 -0
- /package/dist/{research-helpers-synthesize-LFPEXRIV.js.map → research-helpers-synthesize-ZWBBFT2O.js.map} +0 -0
- /package/dist/{routing-memory-Y2LSEQVS.js.map → routing-memory-Y5UBVQGM.js.map} +0 -0
- /package/dist/{session-memory-RCNQJDJR.js.map → session-memory-OOBM2GQ7.js.map} +0 -0
- /package/dist/{setup-command-ZPLPOJF2.js.map → setup-command-VJLR47CI.js.map} +0 -0
- /package/dist/{setup-config-F7VRWXY3.js.map → setup-config-F7NK2KVC.js.map} +0 -0
- /package/dist/{setup-custom-api-XTJ6YZM6.js.map → setup-custom-api-53SYDF4L.js.map} +0 -0
- /package/dist/{shared-memory-AEO2HJLC.js.map → shared-memory-CM6T2MYE.js.map} +0 -0
- /package/dist/{symbol-extractor-UEBANFSN.js.map → symbol-extractor-WYXPJH65.js.map} +0 -0
- /package/dist/{tool-memory-COZK6SR7.js.map → tool-memory-RZ7NJCPV.js.map} +0 -0
- /package/dist/{weather-report-O4XOYGPK.js.map → weather-report-VOSP7KKV.js.map} +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
CliCircuitBreaker,
|
|
3
3
|
DEFAULT_CIRCUIT_BREAKER_CONFIG
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-JECCDZ2S.js";
|
|
5
5
|
import {
|
|
6
6
|
CLI_SUBPROCESS_TIMEOUTS,
|
|
7
7
|
CLI_TIMEOUTS,
|
|
@@ -24,7 +24,7 @@ import {
|
|
|
24
24
|
getTimeProvider,
|
|
25
25
|
isRateLimitText,
|
|
26
26
|
ok
|
|
27
|
-
} from "./chunk-
|
|
27
|
+
} from "./chunk-4MHE5UVO.js";
|
|
28
28
|
|
|
29
29
|
// src/cli-adapters/subprocess-adapter.ts
|
|
30
30
|
import { spawn } from "child_process";
|
|
@@ -400,13 +400,23 @@ var BaseCliAdapter = class {
|
|
|
400
400
|
if (task.timeoutMs !== void 0) return task.timeoutMs;
|
|
401
401
|
return getTimeoutForTaskAuto(this.name, task.content);
|
|
402
402
|
}
|
|
403
|
+
/**
|
|
404
|
+
* Whether the shared outer retry loop ({@link executeCliRetryLoop}) is
|
|
405
|
+
* allowed to retry this adapter's failures. The base adapter honors the
|
|
406
|
+
* caller's `allowRetry`. Subprocess adapters override this to suppress
|
|
407
|
+
* the outer loop when their own transient-retry layer is active, so the
|
|
408
|
+
* two layers do not nest into multiplied spawns (#2824).
|
|
409
|
+
*/
|
|
410
|
+
shouldOuterRetry(opts) {
|
|
411
|
+
return opts.allowRetry;
|
|
412
|
+
}
|
|
403
413
|
/**
|
|
404
414
|
* Executes task with retry logic via shared retry loop.
|
|
405
415
|
*/
|
|
406
416
|
async executeWithRetry(task, opts) {
|
|
407
417
|
const result = await executeCliRetryLoop(() => this.executeTask(task, opts), {
|
|
408
418
|
maxRetries: opts.maxRetries,
|
|
409
|
-
allowRetry: opts
|
|
419
|
+
allowRetry: this.shouldOuterRetry(opts),
|
|
410
420
|
baseDelayMs: 1e3,
|
|
411
421
|
maxDelayMs: 16e3,
|
|
412
422
|
cli: this.name,
|
|
@@ -576,6 +586,78 @@ var BaseCliAdapter = class {
|
|
|
576
586
|
}
|
|
577
587
|
};
|
|
578
588
|
|
|
589
|
+
// src/cli-adapters/subprocess-env.ts
|
|
590
|
+
var BASE_ENV_EXACT = [
|
|
591
|
+
"PATH",
|
|
592
|
+
"HOME",
|
|
593
|
+
"USER",
|
|
594
|
+
"LOGNAME",
|
|
595
|
+
"SHELL",
|
|
596
|
+
"LANG",
|
|
597
|
+
"TERM",
|
|
598
|
+
"TZ",
|
|
599
|
+
"TMPDIR",
|
|
600
|
+
"TEMP",
|
|
601
|
+
"TMP",
|
|
602
|
+
"HTTP_PROXY",
|
|
603
|
+
"HTTPS_PROXY",
|
|
604
|
+
"NO_PROXY",
|
|
605
|
+
"ALL_PROXY",
|
|
606
|
+
"http_proxy",
|
|
607
|
+
"https_proxy",
|
|
608
|
+
"no_proxy",
|
|
609
|
+
"all_proxy",
|
|
610
|
+
"NODE_OPTIONS",
|
|
611
|
+
"NODE_PATH",
|
|
612
|
+
"NODE_ENV",
|
|
613
|
+
"NODE_EXTRA_CA_CERTS",
|
|
614
|
+
"SSL_CERT_FILE",
|
|
615
|
+
"SSL_CERT_DIR"
|
|
616
|
+
];
|
|
617
|
+
var BASE_ENV_PREFIXES = [
|
|
618
|
+
"LC_",
|
|
619
|
+
// locale: LC_ALL, LC_CTYPE, …
|
|
620
|
+
"NEXUS_",
|
|
621
|
+
// nexus-agents config + nested-run credentials (a child may be a nested nexus-agents)
|
|
622
|
+
"npm_config_"
|
|
623
|
+
// npm/node resolution config: registry, proxy, …
|
|
624
|
+
];
|
|
625
|
+
var CLI_VENDOR_KEYS = {
|
|
626
|
+
claude: ["ANTHROPIC_API_KEY"],
|
|
627
|
+
gemini: ["GOOGLE_AI_API_KEY", "GEMINI_API_KEY", "GOOGLE_API_KEY"],
|
|
628
|
+
codex: ["OPENAI_API_KEY"],
|
|
629
|
+
opencode: [
|
|
630
|
+
"ANTHROPIC_API_KEY",
|
|
631
|
+
"OPENAI_API_KEY",
|
|
632
|
+
"GOOGLE_AI_API_KEY",
|
|
633
|
+
"GEMINI_API_KEY",
|
|
634
|
+
"GOOGLE_API_KEY",
|
|
635
|
+
"OPENROUTER_API_KEY"
|
|
636
|
+
]
|
|
637
|
+
};
|
|
638
|
+
function isAllowed(key, vendorKeys) {
|
|
639
|
+
if (BASE_ENV_EXACT.includes(key)) return true;
|
|
640
|
+
if (vendorKeys.includes(key)) return true;
|
|
641
|
+
return BASE_ENV_PREFIXES.some((prefix) => key.startsWith(prefix));
|
|
642
|
+
}
|
|
643
|
+
function buildChildEnv(cliName) {
|
|
644
|
+
const source = process.env;
|
|
645
|
+
const childEnv = {};
|
|
646
|
+
if (source["NEXUS_SUBPROCESS_ENV_ALLOWLIST"] === "0") {
|
|
647
|
+
for (const [key, value] of Object.entries(source)) {
|
|
648
|
+
if (value !== void 0 && key !== "CLAUDECODE") childEnv[key] = value;
|
|
649
|
+
}
|
|
650
|
+
return childEnv;
|
|
651
|
+
}
|
|
652
|
+
const vendorKeys = CLI_VENDOR_KEYS[cliName];
|
|
653
|
+
for (const [key, value] of Object.entries(source)) {
|
|
654
|
+
if (value === void 0) continue;
|
|
655
|
+
if (key === "CLAUDECODE") continue;
|
|
656
|
+
if (isAllowed(key, vendorKeys)) childEnv[key] = value;
|
|
657
|
+
}
|
|
658
|
+
return childEnv;
|
|
659
|
+
}
|
|
660
|
+
|
|
579
661
|
// src/security/output-sanitizer.ts
|
|
580
662
|
var REDACTED_KEY_PLACEHOLDER = "[REDACTED_KEY]";
|
|
581
663
|
var KEY_PATTERNS = [
|
|
@@ -791,6 +873,18 @@ var SubprocessCliAdapter = class extends BaseCliAdapter {
|
|
|
791
873
|
transport = "subprocess";
|
|
792
874
|
/** Transient-error retry config. Override in subclass to enable. */
|
|
793
875
|
transientRetry = { enabled: true };
|
|
876
|
+
/**
|
|
877
|
+
* The inner {@link retryTransient} layer is the single retry authority
|
|
878
|
+
* for subprocess CLIs. When it is enabled (the default), the shared
|
|
879
|
+
* outer retry loop must not also retry: nesting both meant up to 6
|
|
880
|
+
* subprocess spawns and ~10-minute hangs on a persistent TIMEOUT, since
|
|
881
|
+
* the inner layer's timeout extension compounds on every outer attempt
|
|
882
|
+
* (#2824). The outer loop still runs once, so circuit-breaker failure
|
|
883
|
+
* recording is unaffected.
|
|
884
|
+
*/
|
|
885
|
+
shouldOuterRetry(opts) {
|
|
886
|
+
return opts.allowRetry && !this.transientRetry.enabled;
|
|
887
|
+
}
|
|
794
888
|
/**
|
|
795
889
|
* Executes a task via subprocess, with optional transient-error retry.
|
|
796
890
|
* When `transientRetry.enabled` is true, transient errors (timeout,
|
|
@@ -850,8 +944,7 @@ var SubprocessCliAdapter = class extends BaseCliAdapter {
|
|
|
850
944
|
runCleanup();
|
|
851
945
|
resolveOuter(result);
|
|
852
946
|
};
|
|
853
|
-
const childEnv =
|
|
854
|
-
delete childEnv["CLAUDECODE"];
|
|
947
|
+
const childEnv = buildChildEnv(this.name);
|
|
855
948
|
const child = spawn(cmdConfig.command, cmdConfig.args, {
|
|
856
949
|
stdio: ["pipe", "pipe", "pipe"],
|
|
857
950
|
env: childEnv
|
|
@@ -1698,7 +1791,7 @@ var GeminiCliAdapter = class extends SubprocessCliAdapter {
|
|
|
1698
1791
|
async executeWithRetryTracking(task, options) {
|
|
1699
1792
|
return executeCliRetryLoop(() => this.executeTask(task, options), {
|
|
1700
1793
|
maxRetries: options.maxRetries,
|
|
1701
|
-
allowRetry: options
|
|
1794
|
+
allowRetry: this.shouldOuterRetry(options),
|
|
1702
1795
|
baseDelayMs: this.baseDelayMs,
|
|
1703
1796
|
maxDelayMs: this.maxDelayMs,
|
|
1704
1797
|
circuitBreaker: this.circuitBreaker,
|
|
@@ -3087,4 +3180,4 @@ export {
|
|
|
3087
3180
|
isCliAvailable,
|
|
3088
3181
|
getAvailableClis
|
|
3089
3182
|
};
|
|
3090
|
-
//# sourceMappingURL=chunk-
|
|
3183
|
+
//# sourceMappingURL=chunk-5FUVEIJC.js.map
|