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.
Files changed (132) hide show
  1. package/dist/{child-mcp-config-SM5I7USN.js → child-mcp-config-UG4CH654.js} +3 -3
  2. package/dist/{chunk-EVZ7YR7H.js → chunk-2ZRTLW2G.js} +3 -3
  3. package/dist/{chunk-VS4KB3AX.js → chunk-376MBRLD.js} +8 -8
  4. package/dist/{chunk-6CJIKX6I.js → chunk-3QRO77LO.js} +44 -16
  5. package/dist/{chunk-6CJIKX6I.js.map → chunk-3QRO77LO.js.map} +1 -1
  6. package/dist/{chunk-YMT6H2HQ.js → chunk-4MHE5UVO.js} +10 -6
  7. package/dist/{chunk-YMT6H2HQ.js.map → chunk-4MHE5UVO.js.map} +1 -1
  8. package/dist/{chunk-ZU2Q3DWE.js → chunk-5FUVEIJC.js} +100 -7
  9. package/dist/chunk-5FUVEIJC.js.map +1 -0
  10. package/dist/{chunk-EKRMWVAH.js → chunk-5SBD55T7.js} +4 -4
  11. package/dist/{chunk-UGXR4PAY.js → chunk-7BSVRW2O.js} +5 -5
  12. package/dist/{chunk-CTSESEFA.js → chunk-BQ55PBN4.js} +2 -2
  13. package/dist/{chunk-SHVGZK4A.js → chunk-C3BOZZQC.js} +3 -3
  14. package/dist/{chunk-AYZ6P7CK.js → chunk-FBW6XKZJ.js} +2 -2
  15. package/dist/{chunk-J5XEJHIQ.js → chunk-FQKQUJBU.js} +3 -3
  16. package/dist/{chunk-JLWKHYIU.js → chunk-GHWTMPPL.js} +2 -2
  17. package/dist/{chunk-FJHZW7CR.js → chunk-H4XSKDI6.js} +2 -2
  18. package/dist/{chunk-BSIGP5XF.js → chunk-HDFUSBU3.js} +2 -2
  19. package/dist/{chunk-UVALD724.js → chunk-HQR27JGL.js} +2 -2
  20. package/dist/{chunk-FAJAWO42.js → chunk-HXXRFTKP.js} +3 -3
  21. package/dist/{chunk-YGKPWUJ6.js → chunk-HYNFZQU4.js} +2 -2
  22. package/dist/{chunk-JXDDSNEK.js → chunk-JECCDZ2S.js} +2 -2
  23. package/dist/{chunk-OO6MTUDS.js → chunk-KN7JWET4.js} +3 -3
  24. package/dist/{chunk-2DBPZQLO.js → chunk-LUVQUKW5.js} +2 -2
  25. package/dist/{chunk-QVHXEQFM.js → chunk-OO662XRQ.js} +3 -3
  26. package/dist/{chunk-UP2VWCW5.js → chunk-PR4QN5HX.js} +12 -7
  27. package/dist/{chunk-GNRANMQ3.js → chunk-RCNNN4E2.js} +947 -880
  28. package/dist/chunk-RCNNN4E2.js.map +1 -0
  29. package/dist/{chunk-HBKZ2DJK.js → chunk-RCWWUZHA.js} +2 -2
  30. package/dist/{chunk-SJUSQGKH.js → chunk-RFUBLOZQ.js} +7 -7
  31. package/dist/{chunk-RIUUFBX4.js → chunk-TE26NHNW.js} +2 -2
  32. package/dist/{chunk-Q2U6SFN2.js → chunk-TLE2YE6G.js} +2 -2
  33. package/dist/{chunk-4XGKCVJL.js → chunk-VQBVL3UD.js} +2 -2
  34. package/dist/{cli-circuit-breaker-JGX54DAD.js → cli-circuit-breaker-MAN2V7DA.js} +5 -5
  35. package/dist/cli.js +92 -83
  36. package/dist/cli.js.map +1 -1
  37. package/dist/{codebase-search-CZUA37RU.js → codebase-search-PIBRTGBE.js} +2 -2
  38. package/dist/{composite-router-UYFYSMBT.js → composite-router-YCIEYOZC.js} +3 -3
  39. package/dist/{consensus-vote-BZ6JSN67.js → consensus-vote-TGTGZSPS.js} +12 -12
  40. package/dist/{context-retriever-G23VVJ5S.js → context-retriever-FKJKKPAA.js} +6 -6
  41. package/dist/dist-APHOQ26Z.js +45959 -0
  42. package/dist/dist-APHOQ26Z.js.map +1 -0
  43. package/dist/{dist-NIXVXYIH.js → dist-OFXI4GYH.js} +2 -2
  44. package/dist/{doctor-deep-OF2LXZ6A.js → doctor-deep-2KT4LZA6.js} +4 -4
  45. package/dist/expert-bridge-6NA7MK7T.js +11 -0
  46. package/dist/{expert-config-HN7U7X2K.js → expert-config-OIIUMJFB.js} +2 -2
  47. package/dist/factory-IIPDY7QB.js +14 -0
  48. package/dist/{factory-I54TX7OY.js → factory-VXHVQXKR.js} +5 -5
  49. package/dist/index.d.ts +68 -5
  50. package/dist/index.js +50 -31
  51. package/dist/index.js.map +1 -1
  52. package/dist/{init-opencode-FE7HVWQL.js → init-opencode-26YCTSR4.js} +6 -6
  53. package/dist/issue-triage-NGWFHIKY.js +15 -0
  54. package/dist/{learning-persistence-TGOBRUUU.js → learning-persistence-Q63HZ2EB.js} +2 -2
  55. package/dist/{outcome-store-adapter-QRFJJIKB.js → outcome-store-adapter-D3UDQFNQ.js} +2 -2
  56. package/dist/{pr-reviewer-helpers-L4L324FQ.js → pr-reviewer-helpers-WYPUYQ2U.js} +2 -2
  57. package/dist/{registry-command-NZLX7ZFV.js → registry-command-AKJBYP5N.js} +3 -3
  58. package/dist/{repo-analyze-GBQT4LAK.js → repo-analyze-D2OY2QSR.js} +2 -2
  59. package/dist/{repo-security-plan-74GJWJSV.js → repo-security-plan-ZGJN6QRW.js} +4 -4
  60. package/dist/{research-helpers-synthesize-LFPEXRIV.js → research-helpers-synthesize-ZWBBFT2O.js} +4 -4
  61. package/dist/{routing-memory-Y2LSEQVS.js → routing-memory-Y5UBVQGM.js} +3 -3
  62. package/dist/{session-memory-RCNQJDJR.js → session-memory-OOBM2GQ7.js} +4 -4
  63. package/dist/{setup-command-ZPLPOJF2.js → setup-command-VJLR47CI.js} +11 -11
  64. package/dist/setup-config-F7NK2KVC.js +10 -0
  65. package/dist/{setup-custom-api-XTJ6YZM6.js → setup-custom-api-53SYDF4L.js} +5 -5
  66. package/dist/{shared-memory-AEO2HJLC.js → shared-memory-CM6T2MYE.js} +2 -2
  67. package/dist/{symbol-extractor-UEBANFSN.js → symbol-extractor-WYXPJH65.js} +2 -2
  68. package/dist/{tool-memory-COZK6SR7.js → tool-memory-RZ7NJCPV.js} +5 -5
  69. package/dist/{weather-report-O4XOYGPK.js → weather-report-VOSP7KKV.js} +3 -3
  70. package/package.json +16 -16
  71. package/dist/chunk-GNRANMQ3.js.map +0 -1
  72. package/dist/chunk-ZU2Q3DWE.js.map +0 -1
  73. package/dist/dist-RLMRWMYO.js +0 -49531
  74. package/dist/dist-RLMRWMYO.js.map +0 -1
  75. package/dist/expert-bridge-6ZLD2NWD.js +0 -11
  76. package/dist/factory-UHDCLEUE.js +0 -14
  77. package/dist/issue-triage-7NR5NQUY.js +0 -15
  78. package/dist/setup-config-F7VRWXY3.js +0 -10
  79. /package/dist/{child-mcp-config-SM5I7USN.js.map → child-mcp-config-UG4CH654.js.map} +0 -0
  80. /package/dist/{chunk-EVZ7YR7H.js.map → chunk-2ZRTLW2G.js.map} +0 -0
  81. /package/dist/{chunk-VS4KB3AX.js.map → chunk-376MBRLD.js.map} +0 -0
  82. /package/dist/{chunk-EKRMWVAH.js.map → chunk-5SBD55T7.js.map} +0 -0
  83. /package/dist/{chunk-UGXR4PAY.js.map → chunk-7BSVRW2O.js.map} +0 -0
  84. /package/dist/{chunk-CTSESEFA.js.map → chunk-BQ55PBN4.js.map} +0 -0
  85. /package/dist/{chunk-SHVGZK4A.js.map → chunk-C3BOZZQC.js.map} +0 -0
  86. /package/dist/{chunk-AYZ6P7CK.js.map → chunk-FBW6XKZJ.js.map} +0 -0
  87. /package/dist/{chunk-J5XEJHIQ.js.map → chunk-FQKQUJBU.js.map} +0 -0
  88. /package/dist/{chunk-JLWKHYIU.js.map → chunk-GHWTMPPL.js.map} +0 -0
  89. /package/dist/{chunk-FJHZW7CR.js.map → chunk-H4XSKDI6.js.map} +0 -0
  90. /package/dist/{chunk-BSIGP5XF.js.map → chunk-HDFUSBU3.js.map} +0 -0
  91. /package/dist/{chunk-UVALD724.js.map → chunk-HQR27JGL.js.map} +0 -0
  92. /package/dist/{chunk-FAJAWO42.js.map → chunk-HXXRFTKP.js.map} +0 -0
  93. /package/dist/{chunk-YGKPWUJ6.js.map → chunk-HYNFZQU4.js.map} +0 -0
  94. /package/dist/{chunk-JXDDSNEK.js.map → chunk-JECCDZ2S.js.map} +0 -0
  95. /package/dist/{chunk-OO6MTUDS.js.map → chunk-KN7JWET4.js.map} +0 -0
  96. /package/dist/{chunk-2DBPZQLO.js.map → chunk-LUVQUKW5.js.map} +0 -0
  97. /package/dist/{chunk-QVHXEQFM.js.map → chunk-OO662XRQ.js.map} +0 -0
  98. /package/dist/{chunk-UP2VWCW5.js.map → chunk-PR4QN5HX.js.map} +0 -0
  99. /package/dist/{chunk-HBKZ2DJK.js.map → chunk-RCWWUZHA.js.map} +0 -0
  100. /package/dist/{chunk-SJUSQGKH.js.map → chunk-RFUBLOZQ.js.map} +0 -0
  101. /package/dist/{chunk-RIUUFBX4.js.map → chunk-TE26NHNW.js.map} +0 -0
  102. /package/dist/{chunk-Q2U6SFN2.js.map → chunk-TLE2YE6G.js.map} +0 -0
  103. /package/dist/{chunk-4XGKCVJL.js.map → chunk-VQBVL3UD.js.map} +0 -0
  104. /package/dist/{cli-circuit-breaker-JGX54DAD.js.map → cli-circuit-breaker-MAN2V7DA.js.map} +0 -0
  105. /package/dist/{codebase-search-CZUA37RU.js.map → codebase-search-PIBRTGBE.js.map} +0 -0
  106. /package/dist/{composite-router-UYFYSMBT.js.map → composite-router-YCIEYOZC.js.map} +0 -0
  107. /package/dist/{consensus-vote-BZ6JSN67.js.map → consensus-vote-TGTGZSPS.js.map} +0 -0
  108. /package/dist/{context-retriever-G23VVJ5S.js.map → context-retriever-FKJKKPAA.js.map} +0 -0
  109. /package/dist/{dist-NIXVXYIH.js.map → dist-OFXI4GYH.js.map} +0 -0
  110. /package/dist/{doctor-deep-OF2LXZ6A.js.map → doctor-deep-2KT4LZA6.js.map} +0 -0
  111. /package/dist/{expert-bridge-6ZLD2NWD.js.map → expert-bridge-6NA7MK7T.js.map} +0 -0
  112. /package/dist/{expert-config-HN7U7X2K.js.map → expert-config-OIIUMJFB.js.map} +0 -0
  113. /package/dist/{factory-I54TX7OY.js.map → factory-IIPDY7QB.js.map} +0 -0
  114. /package/dist/{factory-UHDCLEUE.js.map → factory-VXHVQXKR.js.map} +0 -0
  115. /package/dist/{init-opencode-FE7HVWQL.js.map → init-opencode-26YCTSR4.js.map} +0 -0
  116. /package/dist/{issue-triage-7NR5NQUY.js.map → issue-triage-NGWFHIKY.js.map} +0 -0
  117. /package/dist/{learning-persistence-TGOBRUUU.js.map → learning-persistence-Q63HZ2EB.js.map} +0 -0
  118. /package/dist/{outcome-store-adapter-QRFJJIKB.js.map → outcome-store-adapter-D3UDQFNQ.js.map} +0 -0
  119. /package/dist/{pr-reviewer-helpers-L4L324FQ.js.map → pr-reviewer-helpers-WYPUYQ2U.js.map} +0 -0
  120. /package/dist/{registry-command-NZLX7ZFV.js.map → registry-command-AKJBYP5N.js.map} +0 -0
  121. /package/dist/{repo-analyze-GBQT4LAK.js.map → repo-analyze-D2OY2QSR.js.map} +0 -0
  122. /package/dist/{repo-security-plan-74GJWJSV.js.map → repo-security-plan-ZGJN6QRW.js.map} +0 -0
  123. /package/dist/{research-helpers-synthesize-LFPEXRIV.js.map → research-helpers-synthesize-ZWBBFT2O.js.map} +0 -0
  124. /package/dist/{routing-memory-Y2LSEQVS.js.map → routing-memory-Y5UBVQGM.js.map} +0 -0
  125. /package/dist/{session-memory-RCNQJDJR.js.map → session-memory-OOBM2GQ7.js.map} +0 -0
  126. /package/dist/{setup-command-ZPLPOJF2.js.map → setup-command-VJLR47CI.js.map} +0 -0
  127. /package/dist/{setup-config-F7VRWXY3.js.map → setup-config-F7NK2KVC.js.map} +0 -0
  128. /package/dist/{setup-custom-api-XTJ6YZM6.js.map → setup-custom-api-53SYDF4L.js.map} +0 -0
  129. /package/dist/{shared-memory-AEO2HJLC.js.map → shared-memory-CM6T2MYE.js.map} +0 -0
  130. /package/dist/{symbol-extractor-UEBANFSN.js.map → symbol-extractor-WYXPJH65.js.map} +0 -0
  131. /package/dist/{tool-memory-COZK6SR7.js.map → tool-memory-RZ7NJCPV.js.map} +0 -0
  132. /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-JXDDSNEK.js";
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-YMT6H2HQ.js";
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.allowRetry,
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 = { ...process.env };
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.allowRetry,
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-ZU2Q3DWE.js.map
3183
+ //# sourceMappingURL=chunk-5FUVEIJC.js.map