nexus-agents 4.3.6 → 4.5.1

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 (123) hide show
  1. package/dist/{child-mcp-config-6BPBGQB4.js → child-mcp-config-OBOA4PE2.js} +2 -2
  2. package/dist/{chunk-IXMTCWMN.js → chunk-34UKF4FB.js} +3 -3
  3. package/dist/{chunk-65DZ7WHY.js → chunk-5JRYCJ37.js} +2 -2
  4. package/dist/{chunk-LPUJG7C6.js → chunk-6HSDJ5H6.js} +2 -2
  5. package/dist/{chunk-CFEZ2DG6.js → chunk-75K4TN5H.js} +8 -8
  6. package/dist/{chunk-RUN6KRCP.js → chunk-7BMK5VEO.js} +8 -8
  7. package/dist/{chunk-Y3UJ3VLA.js → chunk-7Y7UFVQ5.js} +2 -2
  8. package/dist/{chunk-XJORRLQT.js → chunk-ANTZOHQ6.js} +24 -7
  9. package/dist/{chunk-XJORRLQT.js.map → chunk-ANTZOHQ6.js.map} +1 -1
  10. package/dist/{chunk-K2ZYZZNZ.js → chunk-ARTRA6YC.js} +3 -3
  11. package/dist/{chunk-UH4MK2N7.js → chunk-B6DNL7LG.js} +4 -4
  12. package/dist/{chunk-E6ET2WJI.js → chunk-BAWVMEXA.js} +4 -4
  13. package/dist/{chunk-SSPEB62Y.js → chunk-BLY3DXM2.js} +5 -5
  14. package/dist/{chunk-PZSPL5KN.js → chunk-BT6ONNFH.js} +2 -2
  15. package/dist/{chunk-SHG3MYMD.js → chunk-C6SAPXUV.js} +2 -2
  16. package/dist/{chunk-K6VI5GUF.js → chunk-CGJPW5BI.js} +55 -46
  17. package/dist/chunk-CGJPW5BI.js.map +1 -0
  18. package/dist/{chunk-PG563EVI.js → chunk-D7X2AMEB.js} +2 -2
  19. package/dist/{chunk-CDLXONR6.js → chunk-EPD5MGPB.js} +8 -8
  20. package/dist/{chunk-6DLKK5R2.js → chunk-ESWY4Y7S.js} +4 -4
  21. package/dist/{chunk-DFCJUKGD.js → chunk-EYZIMY6I.js} +2 -2
  22. package/dist/{chunk-TKFWYFBD.js → chunk-HBGA62JG.js} +2 -2
  23. package/dist/{chunk-OPH5S776.js → chunk-JDUTA6FI.js} +2 -2
  24. package/dist/{chunk-VWXQHGQ2.js → chunk-KMUOL3AL.js} +2 -2
  25. package/dist/{chunk-AVB5GOSW.js → chunk-LVE7MN2F.js} +6 -6
  26. package/dist/{chunk-U4LM5Q2L.js → chunk-NH3O2D5O.js} +3 -3
  27. package/dist/{chunk-4OSPP2KN.js → chunk-NMX7AYYB.js} +2 -2
  28. package/dist/{chunk-ZQWCL7YB.js → chunk-O32DMSG5.js} +3 -3
  29. package/dist/{chunk-NXGHNZJV.js → chunk-QNT5WS7E.js} +24 -24
  30. package/dist/{chunk-NXGHNZJV.js.map → chunk-QNT5WS7E.js.map} +1 -1
  31. package/dist/{chunk-UI3WYJSZ.js → chunk-SWUYPFXS.js} +2 -2
  32. package/dist/{chunk-SPZOZGBS.js → chunk-TD6I5UHY.js} +2 -2
  33. package/dist/{chunk-QGXA25PQ.js → chunk-TI65NJOM.js} +2 -2
  34. package/dist/{chunk-QTP4AIVR.js → chunk-VRJAJUUR.js} +7 -7
  35. package/dist/{chunk-EJLOD53Z.js → chunk-XCUO5YUJ.js} +2 -2
  36. package/dist/{chunk-YIV4GQHK.js → chunk-YLESXBB3.js} +2 -2
  37. package/dist/{chunk-NKTANKWH.js → chunk-YY67CP2U.js} +3 -3
  38. package/dist/{cli-circuit-breaker-3CH36TPE.js → cli-circuit-breaker-TJVDSJU5.js} +3 -3
  39. package/dist/cli.js +106 -77
  40. package/dist/cli.js.map +1 -1
  41. package/dist/{composite-router-QK4OPVDX.js → composite-router-CIC4BU6A.js} +2 -2
  42. package/dist/{consensus-vote-DL4XNR7M.js → consensus-vote-77UCSVGM.js} +16 -16
  43. package/dist/{context-retriever-UPHWSEXA.js → context-retriever-CP72SNYZ.js} +8 -8
  44. package/dist/{doctor-deep-UHFL3AE4.js → doctor-deep-WI2ZC7Z3.js} +3 -3
  45. package/dist/{doctor-live-2CGAFGFG.js → doctor-live-W2KY3OIA.js} +9 -9
  46. package/dist/{expert-bridge-KTKJTMMO.js → expert-bridge-HGBVHVJI.js} +4 -4
  47. package/dist/{factory-SC3N2RMX.js → factory-GEBBVQHZ.js} +9 -9
  48. package/dist/{factory-QQKY3UW4.js → factory-LEYEWZ4Y.js} +5 -5
  49. package/dist/{improvement-review-I4WFQK25.js → improvement-review-XN2GZX3V.js} +5 -5
  50. package/dist/index.d.ts +14 -0
  51. package/dist/index.js +30 -30
  52. package/dist/{init-opencode-HTSSQOLE.js → init-opencode-UPA3R362.js} +6 -6
  53. package/dist/issue-triage-QAI2FNMN.js +17 -0
  54. package/dist/{pr-reviewer-helpers-UOP4JVHI.js → pr-reviewer-helpers-KRKXKZIA.js} +4 -4
  55. package/dist/{registry-command-EPG2X2ZI.js → registry-command-2SCTKLEO.js} +2 -2
  56. package/dist/{repo-security-plan-QYSW4MKN.js → repo-security-plan-NFYC64IS.js} +3 -3
  57. package/dist/{research-helpers-synthesize-YSYYUW5H.js → research-helpers-synthesize-K5TX2WM3.js} +4 -4
  58. package/dist/{routing-memory-BZ6IGNXN.js → routing-memory-JPDPHK7P.js} +2 -2
  59. package/dist/{session-memory-GVOVQ3TV.js → session-memory-XIIEIJPT.js} +3 -3
  60. package/dist/{setup-command-TLIVUIVE.js → setup-command-DIL56GPR.js} +14 -14
  61. package/dist/{setup-config-Q2WGGIQT.js → setup-config-SUEPUZYL.js} +3 -3
  62. package/dist/{setup-custom-api-GXF5MFBG.js → setup-custom-api-5TTLIPV3.js} +4 -4
  63. package/dist/{tool-memory-MHP37ASX.js → tool-memory-ACUOYCYG.js} +5 -5
  64. package/dist/{unified-registry-WX3GDBCZ.js → unified-registry-P3PLOFBN.js} +10 -10
  65. package/dist/{weather-report-YY7BO744.js → weather-report-464SS6FY.js} +2 -2
  66. package/package.json +1 -1
  67. package/dist/chunk-K6VI5GUF.js.map +0 -1
  68. package/dist/issue-triage-SAS3D5K4.js +0 -17
  69. /package/dist/{child-mcp-config-6BPBGQB4.js.map → child-mcp-config-OBOA4PE2.js.map} +0 -0
  70. /package/dist/{chunk-IXMTCWMN.js.map → chunk-34UKF4FB.js.map} +0 -0
  71. /package/dist/{chunk-65DZ7WHY.js.map → chunk-5JRYCJ37.js.map} +0 -0
  72. /package/dist/{chunk-LPUJG7C6.js.map → chunk-6HSDJ5H6.js.map} +0 -0
  73. /package/dist/{chunk-CFEZ2DG6.js.map → chunk-75K4TN5H.js.map} +0 -0
  74. /package/dist/{chunk-RUN6KRCP.js.map → chunk-7BMK5VEO.js.map} +0 -0
  75. /package/dist/{chunk-Y3UJ3VLA.js.map → chunk-7Y7UFVQ5.js.map} +0 -0
  76. /package/dist/{chunk-K2ZYZZNZ.js.map → chunk-ARTRA6YC.js.map} +0 -0
  77. /package/dist/{chunk-UH4MK2N7.js.map → chunk-B6DNL7LG.js.map} +0 -0
  78. /package/dist/{chunk-E6ET2WJI.js.map → chunk-BAWVMEXA.js.map} +0 -0
  79. /package/dist/{chunk-SSPEB62Y.js.map → chunk-BLY3DXM2.js.map} +0 -0
  80. /package/dist/{chunk-PZSPL5KN.js.map → chunk-BT6ONNFH.js.map} +0 -0
  81. /package/dist/{chunk-SHG3MYMD.js.map → chunk-C6SAPXUV.js.map} +0 -0
  82. /package/dist/{chunk-PG563EVI.js.map → chunk-D7X2AMEB.js.map} +0 -0
  83. /package/dist/{chunk-CDLXONR6.js.map → chunk-EPD5MGPB.js.map} +0 -0
  84. /package/dist/{chunk-6DLKK5R2.js.map → chunk-ESWY4Y7S.js.map} +0 -0
  85. /package/dist/{chunk-DFCJUKGD.js.map → chunk-EYZIMY6I.js.map} +0 -0
  86. /package/dist/{chunk-TKFWYFBD.js.map → chunk-HBGA62JG.js.map} +0 -0
  87. /package/dist/{chunk-OPH5S776.js.map → chunk-JDUTA6FI.js.map} +0 -0
  88. /package/dist/{chunk-VWXQHGQ2.js.map → chunk-KMUOL3AL.js.map} +0 -0
  89. /package/dist/{chunk-AVB5GOSW.js.map → chunk-LVE7MN2F.js.map} +0 -0
  90. /package/dist/{chunk-U4LM5Q2L.js.map → chunk-NH3O2D5O.js.map} +0 -0
  91. /package/dist/{chunk-4OSPP2KN.js.map → chunk-NMX7AYYB.js.map} +0 -0
  92. /package/dist/{chunk-ZQWCL7YB.js.map → chunk-O32DMSG5.js.map} +0 -0
  93. /package/dist/{chunk-UI3WYJSZ.js.map → chunk-SWUYPFXS.js.map} +0 -0
  94. /package/dist/{chunk-SPZOZGBS.js.map → chunk-TD6I5UHY.js.map} +0 -0
  95. /package/dist/{chunk-QGXA25PQ.js.map → chunk-TI65NJOM.js.map} +0 -0
  96. /package/dist/{chunk-QTP4AIVR.js.map → chunk-VRJAJUUR.js.map} +0 -0
  97. /package/dist/{chunk-EJLOD53Z.js.map → chunk-XCUO5YUJ.js.map} +0 -0
  98. /package/dist/{chunk-YIV4GQHK.js.map → chunk-YLESXBB3.js.map} +0 -0
  99. /package/dist/{chunk-NKTANKWH.js.map → chunk-YY67CP2U.js.map} +0 -0
  100. /package/dist/{cli-circuit-breaker-3CH36TPE.js.map → cli-circuit-breaker-TJVDSJU5.js.map} +0 -0
  101. /package/dist/{composite-router-QK4OPVDX.js.map → composite-router-CIC4BU6A.js.map} +0 -0
  102. /package/dist/{consensus-vote-DL4XNR7M.js.map → consensus-vote-77UCSVGM.js.map} +0 -0
  103. /package/dist/{context-retriever-UPHWSEXA.js.map → context-retriever-CP72SNYZ.js.map} +0 -0
  104. /package/dist/{doctor-deep-UHFL3AE4.js.map → doctor-deep-WI2ZC7Z3.js.map} +0 -0
  105. /package/dist/{doctor-live-2CGAFGFG.js.map → doctor-live-W2KY3OIA.js.map} +0 -0
  106. /package/dist/{expert-bridge-KTKJTMMO.js.map → expert-bridge-HGBVHVJI.js.map} +0 -0
  107. /package/dist/{factory-QQKY3UW4.js.map → factory-GEBBVQHZ.js.map} +0 -0
  108. /package/dist/{factory-SC3N2RMX.js.map → factory-LEYEWZ4Y.js.map} +0 -0
  109. /package/dist/{improvement-review-I4WFQK25.js.map → improvement-review-XN2GZX3V.js.map} +0 -0
  110. /package/dist/{init-opencode-HTSSQOLE.js.map → init-opencode-UPA3R362.js.map} +0 -0
  111. /package/dist/{issue-triage-SAS3D5K4.js.map → issue-triage-QAI2FNMN.js.map} +0 -0
  112. /package/dist/{pr-reviewer-helpers-UOP4JVHI.js.map → pr-reviewer-helpers-KRKXKZIA.js.map} +0 -0
  113. /package/dist/{registry-command-EPG2X2ZI.js.map → registry-command-2SCTKLEO.js.map} +0 -0
  114. /package/dist/{repo-security-plan-QYSW4MKN.js.map → repo-security-plan-NFYC64IS.js.map} +0 -0
  115. /package/dist/{research-helpers-synthesize-YSYYUW5H.js.map → research-helpers-synthesize-K5TX2WM3.js.map} +0 -0
  116. /package/dist/{routing-memory-BZ6IGNXN.js.map → routing-memory-JPDPHK7P.js.map} +0 -0
  117. /package/dist/{session-memory-GVOVQ3TV.js.map → session-memory-XIIEIJPT.js.map} +0 -0
  118. /package/dist/{setup-command-TLIVUIVE.js.map → setup-command-DIL56GPR.js.map} +0 -0
  119. /package/dist/{setup-config-Q2WGGIQT.js.map → setup-config-SUEPUZYL.js.map} +0 -0
  120. /package/dist/{setup-custom-api-GXF5MFBG.js.map → setup-custom-api-5TTLIPV3.js.map} +0 -0
  121. /package/dist/{tool-memory-MHP37ASX.js.map → tool-memory-ACUOYCYG.js.map} +0 -0
  122. /package/dist/{unified-registry-WX3GDBCZ.js.map → unified-registry-P3PLOFBN.js.map} +0 -0
  123. /package/dist/{weather-report-YY7BO744.js.map → weather-report-464SS6FY.js.map} +0 -0
@@ -2,7 +2,7 @@ import {
2
2
  createLogger,
3
3
  err,
4
4
  ok
5
- } from "./chunk-U4LM5Q2L.js";
5
+ } from "./chunk-NH3O2D5O.js";
6
6
 
7
7
  // src/scm/token-resolver.ts
8
8
  import { execFile } from "child_process";
@@ -87,4 +87,4 @@ export {
87
87
  hasToken,
88
88
  getTokenEnvVars
89
89
  };
90
- //# sourceMappingURL=chunk-UI3WYJSZ.js.map
90
+ //# sourceMappingURL=chunk-SWUYPFXS.js.map
@@ -3,7 +3,7 @@ import {
3
3
  MODEL_IDS,
4
4
  getTimeProvider,
5
5
  resolveModelIdentitySync
6
- } from "./chunk-U4LM5Q2L.js";
6
+ } from "./chunk-NH3O2D5O.js";
7
7
 
8
8
  // src/config/model-availability.ts
9
9
  var DEFAULT_TTL_MS = 6e4;
@@ -150,4 +150,4 @@ export {
150
150
  resetAvailabilityCache,
151
151
  filterAvailableModels
152
152
  };
153
- //# sourceMappingURL=chunk-SPZOZGBS.js.map
153
+ //# sourceMappingURL=chunk-TD6I5UHY.js.map
@@ -13,7 +13,7 @@ import {
13
13
  lookupInTreeCapability,
14
14
  ok,
15
15
  resolveRetryAfterMs
16
- } from "./chunk-U4LM5Q2L.js";
16
+ } from "./chunk-NH3O2D5O.js";
17
17
 
18
18
  // src/config/model-parameter-support.ts
19
19
  function parseClaudeMajorMinor(bareId) {
@@ -834,4 +834,4 @@ export {
834
834
  DEFAULT_COLLECT_STREAM_MAX_CHUNKS,
835
835
  collectStream
836
836
  };
837
- //# sourceMappingURL=chunk-QGXA25PQ.js.map
837
+ //# sourceMappingURL=chunk-TI65NJOM.js.map
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  resolveCliSlot
3
- } from "./chunk-SPZOZGBS.js";
3
+ } from "./chunk-TD6I5UHY.js";
4
4
  import {
5
5
  createLogger,
6
6
  getTimeProvider,
7
7
  isRateLimitText
8
- } from "./chunk-U4LM5Q2L.js";
8
+ } from "./chunk-NH3O2D5O.js";
9
9
 
10
10
  // src/pipeline/expert-bridge.ts
11
11
  function resolveCliFromModelString(model) {
@@ -21,7 +21,7 @@ async function getMcpConfigPath() {
21
21
  if (cachedMcpConfigPath !== null) return cachedMcpConfigPath;
22
22
  mcpConfigInitPromise ??= (async () => {
23
23
  try {
24
- const { generateMcpConfig } = await import("./child-mcp-config-6BPBGQB4.js");
24
+ const { generateMcpConfig } = await import("./child-mcp-config-OBOA4PE2.js");
25
25
  const config = await generateMcpConfig();
26
26
  cachedMcpConfigPath = config.configPath;
27
27
  cachedMcpConfigCleanup = config.cleanup;
@@ -93,8 +93,8 @@ var routerInitPromise = null;
93
93
  async function getRouter() {
94
94
  if (cachedRouter !== null) return cachedRouter;
95
95
  routerInitPromise ??= (async () => {
96
- const { createAllAdapters } = await import("./factory-SC3N2RMX.js");
97
- const { createCompositeRouter } = await import("./composite-router-QK4OPVDX.js");
96
+ const { createAllAdapters } = await import("./factory-GEBBVQHZ.js");
97
+ const { createCompositeRouter } = await import("./composite-router-CIC4BU6A.js");
98
98
  const adapters = createAllAdapters();
99
99
  if (adapters.size === 0) {
100
100
  routerInitPromise = null;
@@ -102,7 +102,7 @@ async function getRouter() {
102
102
  }
103
103
  cachedRouter = adaptCompositeRouter(createCompositeRouter(adapters));
104
104
  try {
105
- const { createCliCircuitBreakerIntegration } = await import("./cli-circuit-breaker-3CH36TPE.js");
105
+ const { createCliCircuitBreakerIntegration } = await import("./cli-circuit-breaker-TJVDSJU5.js");
106
106
  cachedCircuitBreaker = createCliCircuitBreakerIntegration([...adapters.values()]);
107
107
  } catch (error) {
108
108
  const msg = error instanceof Error ? error.message : String(error);
@@ -213,4 +213,4 @@ export {
213
213
  tokenSplitFromUsage,
214
214
  executeExpert
215
215
  };
216
- //# sourceMappingURL=chunk-QTP4AIVR.js.map
216
+ //# sourceMappingURL=chunk-VRJAJUUR.js.map
@@ -2,7 +2,7 @@ import {
2
2
  CACHE_TIMEOUTS,
3
3
  createLogger,
4
4
  getTimeProvider
5
- } from "./chunk-U4LM5Q2L.js";
5
+ } from "./chunk-NH3O2D5O.js";
6
6
 
7
7
  // src/security/trust-types.ts
8
8
  import { z } from "zod";
@@ -560,4 +560,4 @@ export {
560
560
  resolveReputationGatingMode,
561
561
  gateWithReputation
562
562
  };
563
- //# sourceMappingURL=chunk-EJLOD53Z.js.map
563
+ //# sourceMappingURL=chunk-XCUO5YUJ.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getErrorMessage
3
- } from "./chunk-U4LM5Q2L.js";
3
+ } from "./chunk-NH3O2D5O.js";
4
4
 
5
5
  // src/cli/setup-config.ts
6
6
  import { copyFileSync, existsSync, mkdirSync, writeFileSync } from "fs";
@@ -77,4 +77,4 @@ function ensureBackup(outputPath) {
77
77
  export {
78
78
  runConfigInitSync
79
79
  };
80
- //# sourceMappingURL=chunk-YIV4GQHK.js.map
80
+ //# sourceMappingURL=chunk-YLESXBB3.js.map
@@ -12,11 +12,11 @@ import {
12
12
  gateWithReputation,
13
13
  resolveReputationGatingMode,
14
14
  sanitizeInput
15
- } from "./chunk-EJLOD53Z.js";
15
+ } from "./chunk-XCUO5YUJ.js";
16
16
  import {
17
17
  createLogger,
18
18
  getTimeProvider
19
- } from "./chunk-U4LM5Q2L.js";
19
+ } from "./chunk-NH3O2D5O.js";
20
20
 
21
21
  // src/dogfooding/pr-reviewer-helpers.ts
22
22
  import { randomUUID } from "crypto";
@@ -291,4 +291,4 @@ export {
291
291
  formatReviewComment,
292
292
  createFailedReview
293
293
  };
294
- //# sourceMappingURL=chunk-NKTANKWH.js.map
294
+ //# sourceMappingURL=chunk-YY67CP2U.js.map
@@ -3,8 +3,8 @@ import {
3
3
  createCliCircuitBreakerIntegration,
4
4
  getCliCircuitBreakerSnapshot,
5
5
  getDefaultCliCircuitBreakerRegistry
6
- } from "./chunk-4OSPP2KN.js";
7
- import "./chunk-U4LM5Q2L.js";
6
+ } from "./chunk-NMX7AYYB.js";
7
+ import "./chunk-NH3O2D5O.js";
8
8
  import "./chunk-2HUC6NZN.js";
9
9
  import "./chunk-OQLFRJCW.js";
10
10
  import "./chunk-ZPWHCABL.js";
@@ -14,4 +14,4 @@ export {
14
14
  getCliCircuitBreakerSnapshot,
15
15
  getDefaultCliCircuitBreakerRegistry
16
16
  };
17
- //# sourceMappingURL=cli-circuit-breaker-3CH36TPE.js.map
17
+ //# sourceMappingURL=cli-circuit-breaker-TJVDSJU5.js.map
package/dist/cli.js CHANGED
@@ -13,13 +13,13 @@ import {
13
13
  generateSummary,
14
14
  parseFindings,
15
15
  sumFindings
16
- } from "./chunk-NKTANKWH.js";
17
- import "./chunk-TKFWYFBD.js";
16
+ } from "./chunk-YY67CP2U.js";
17
+ import "./chunk-HBGA62JG.js";
18
18
  import {
19
19
  setupCommandAsync,
20
20
  verifyCommand
21
- } from "./chunk-NXGHNZJV.js";
22
- import "./chunk-YIV4GQHK.js";
21
+ } from "./chunk-QNT5WS7E.js";
22
+ import "./chunk-YLESXBB3.js";
23
23
  import {
24
24
  AuthHandler,
25
25
  DEFAULT_EXPERTS,
@@ -139,8 +139,8 @@ import {
139
139
  validateCommand,
140
140
  validateWorkflow,
141
141
  wrapInMarkdownFence
142
- } from "./chunk-K6VI5GUF.js";
143
- import "./chunk-SHG3MYMD.js";
142
+ } from "./chunk-CGJPW5BI.js";
143
+ import "./chunk-C6SAPXUV.js";
144
144
  import "./chunk-HFOQKCD2.js";
145
145
  import "./chunk-RSMG2DPB.js";
146
146
  import {
@@ -166,14 +166,14 @@ import {
166
166
  loadConfig,
167
167
  runDoctor,
168
168
  validateNexusEnv
169
- } from "./chunk-CDLXONR6.js";
169
+ } from "./chunk-EPD5MGPB.js";
170
170
  import {
171
171
  buildOpenAICompatAdapters,
172
172
  readOpenAICompatEnv
173
- } from "./chunk-SSPEB62Y.js";
173
+ } from "./chunk-BLY3DXM2.js";
174
174
  import {
175
175
  shutdownExpertBridge
176
- } from "./chunk-QTP4AIVR.js";
176
+ } from "./chunk-VRJAJUUR.js";
177
177
  import {
178
178
  ConsensusVoteInputSchema,
179
179
  DEFAULT_VOTE_TIMEOUT_MS,
@@ -183,29 +183,29 @@ import {
183
183
  executeVoting,
184
184
  mapOutcomeToDecision,
185
185
  registerConsensusVoteTool
186
- } from "./chunk-CFEZ2DG6.js";
186
+ } from "./chunk-75K4TN5H.js";
187
187
  import {
188
188
  loadUsageEvents,
189
189
  rollupByModel
190
- } from "./chunk-Y3UJ3VLA.js";
190
+ } from "./chunk-7Y7UFVQ5.js";
191
191
  import {
192
192
  allOf,
193
193
  anyOf
194
194
  } from "./chunk-OQB3XC5O.js";
195
195
  import {
196
196
  synthesizeResearch
197
- } from "./chunk-ZQWCL7YB.js";
197
+ } from "./chunk-O32DMSG5.js";
198
198
  import {
199
199
  classifyTrust,
200
200
  createFullGitHubProvider,
201
201
  evaluatePolicy,
202
202
  parsePRUrl
203
- } from "./chunk-AVB5GOSW.js";
204
- import "./chunk-LPUJG7C6.js";
203
+ } from "./chunk-LVE7MN2F.js";
204
+ import "./chunk-6HSDJ5H6.js";
205
205
  import {
206
206
  ReputationCache,
207
207
  sanitizeInput
208
- } from "./chunk-EJLOD53Z.js";
208
+ } from "./chunk-XCUO5YUJ.js";
209
209
  import {
210
210
  ImprovementReviewInputSchema,
211
211
  calculateFitnessScore,
@@ -219,15 +219,15 @@ import {
219
219
  registerImprovementReviewTool,
220
220
  runImprovementReview,
221
221
  scanForSecrets
222
- } from "./chunk-IXMTCWMN.js";
222
+ } from "./chunk-34UKF4FB.js";
223
223
  import {
224
224
  createDefaultPolicyFirewall
225
- } from "./chunk-K2ZYZZNZ.js";
226
- import "./chunk-DFCJUKGD.js";
225
+ } from "./chunk-ARTRA6YC.js";
226
+ import "./chunk-EYZIMY6I.js";
227
227
  import {
228
228
  createUnifiedRegistry,
229
229
  getGlobalRegistry
230
- } from "./chunk-E6ET2WJI.js";
230
+ } from "./chunk-BAWVMEXA.js";
231
231
  import {
232
232
  CodebaseIndexSchema,
233
233
  PaperStatusSchema,
@@ -253,25 +253,25 @@ import {
253
253
  loadSourcesRegistry,
254
254
  rankDiscoveredItems,
255
255
  saveSourcesRegistry
256
- } from "./chunk-XJORRLQT.js";
256
+ } from "./chunk-ANTZOHQ6.js";
257
257
  import {
258
258
  loadPapersRegistry,
259
259
  loadTechniquesRegistry,
260
260
  savePapersRegistry
261
- } from "./chunk-VWXQHGQ2.js";
261
+ } from "./chunk-KMUOL3AL.js";
262
262
  import "./chunk-NUBSJGQZ.js";
263
263
  import {
264
264
  resolveToken
265
- } from "./chunk-UI3WYJSZ.js";
265
+ } from "./chunk-SWUYPFXS.js";
266
266
  import {
267
267
  MemoryError,
268
268
  shutdownToolMemory
269
- } from "./chunk-UH4MK2N7.js";
269
+ } from "./chunk-B6DNL7LG.js";
270
270
  import {
271
271
  capitalize,
272
272
  capitalizeKebab
273
273
  } from "./chunk-6T3EPABN.js";
274
- import "./chunk-PG563EVI.js";
274
+ import "./chunk-D7X2AMEB.js";
275
275
  import "./chunk-YPNQPT2F.js";
276
276
  import "./chunk-XIIUIBSX.js";
277
277
  import "./chunk-KSQSWEFH.js";
@@ -282,19 +282,19 @@ import {
282
282
  isRecord,
283
283
  probeAllClis,
284
284
  readSubprocessDepth
285
- } from "./chunk-RUN6KRCP.js";
286
- import "./chunk-QGXA25PQ.js";
285
+ } from "./chunk-7BMK5VEO.js";
286
+ import "./chunk-TI65NJOM.js";
287
287
  import {
288
288
  DEFAULTS
289
- } from "./chunk-65DZ7WHY.js";
290
- import "./chunk-OPH5S776.js";
289
+ } from "./chunk-5JRYCJ37.js";
290
+ import "./chunk-JDUTA6FI.js";
291
291
  import {
292
292
  nexusMkdtempSync
293
293
  } from "./chunk-SNJNRDKZ.js";
294
- import "./chunk-SPZOZGBS.js";
294
+ import "./chunk-TD6I5UHY.js";
295
295
  import "./chunk-QZUG667L.js";
296
- import "./chunk-PZSPL5KN.js";
297
- import "./chunk-4OSPP2KN.js";
296
+ import "./chunk-BT6ONNFH.js";
297
+ import "./chunk-NMX7AYYB.js";
298
298
  import {
299
299
  API_TIMEOUTS,
300
300
  AgentCapability,
@@ -368,7 +368,7 @@ import {
368
368
  validateTimeout,
369
369
  writeEmptyLine,
370
370
  writeLine
371
- } from "./chunk-U4LM5Q2L.js";
371
+ } from "./chunk-NH3O2D5O.js";
372
372
  import "./chunk-2HUC6NZN.js";
373
373
  import {
374
374
  applyPortableMode,
@@ -4126,7 +4126,7 @@ ${file.patch}
4126
4126
  violations: policyResult.violations
4127
4127
  });
4128
4128
  }
4129
- const { formatReviewComment: formatReviewComment2 } = await import("./pr-reviewer-helpers-UOP4JVHI.js");
4129
+ const { formatReviewComment: formatReviewComment2 } = await import("./pr-reviewer-helpers-KRKXKZIA.js");
4130
4130
  const body = formatReviewComment2(result);
4131
4131
  const postResult = await provider.createReview(pr.prNumber, body, result.decision);
4132
4132
  if (!postResult.ok) {
@@ -14806,13 +14806,36 @@ async function releaseNotesCommand(args) {
14806
14806
  import { readFileSync as readFileSync10 } from "fs";
14807
14807
 
14808
14808
  // src/cli/release-validate-helpers.ts
14809
- import { execSync as execSync2 } from "child_process";
14809
+ import { execSync as execSync3 } from "child_process";
14810
14810
  import { existsSync as existsSync14, readFileSync as readFileSync9 } from "fs";
14811
+
14812
+ // src/cli/release-secret-scan.ts
14813
+ import { execSync as execSync2 } from "child_process";
14814
+ var SECRET_LINE_PATTERN = /api[_-]?key|secret|password|token/i;
14815
+ var MAX_REPORTED_MATCHES = 5;
14816
+ function scanRecentCommitsForSecrets(options = {}) {
14817
+ const range = options.range ?? "HEAD~10..HEAD";
14818
+ let diff;
14819
+ try {
14820
+ diff = execSync2(`git diff ${range} -- "*.ts" "*.js"`, {
14821
+ encoding: "utf-8",
14822
+ stdio: ["pipe", "pipe", "pipe"],
14823
+ timeout: CLI_SUBPROCESS_TIMEOUTS.ghCommandMs,
14824
+ ...options.cwd === void 0 ? {} : { cwd: options.cwd }
14825
+ });
14826
+ } catch (error) {
14827
+ return { ok: false, reason: error instanceof Error ? error.message : String(error) };
14828
+ }
14829
+ const matches = diff.split("\n").filter((line) => SECRET_LINE_PATTERN.test(line)).slice(0, MAX_REPORTED_MATCHES);
14830
+ return { ok: true, matches };
14831
+ }
14832
+
14833
+ // src/cli/release-validate-helpers.ts
14811
14834
  async function validateSecurity(options) {
14812
14835
  const startTime = Date.now();
14813
14836
  const findings = [];
14814
14837
  try {
14815
- execSync2("npm audit --audit-level=high 2>/dev/null", {
14838
+ execSync3("npm audit --audit-level=high 2>/dev/null", {
14816
14839
  encoding: "utf-8",
14817
14840
  stdio: ["pipe", "pipe", "pipe"],
14818
14841
  timeout: CLI_SUBPROCESS_TIMEOUTS.ghCommandMs
@@ -14835,37 +14858,29 @@ async function validateSecurity(options) {
14835
14858
  remediation: "Ensure .env is in .gitignore and not committed."
14836
14859
  });
14837
14860
  }
14838
- try {
14839
- const result = execSync2(
14840
- 'git diff HEAD~10..HEAD -- "*.ts" "*.js" | grep -iE "(api[_-]?key|secret|password|token)" | head -5',
14841
- {
14842
- encoding: "utf-8",
14843
- stdio: ["pipe", "pipe", "pipe"],
14844
- timeout: CLI_SUBPROCESS_TIMEOUTS.ghCommandMs
14845
- }
14846
- );
14847
- if (result.trim()) {
14848
- findings.push({
14849
- severity: "warning",
14850
- category: "security",
14851
- title: "Potential secrets in recent commits",
14852
- description: "Recent commits may contain hardcoded secrets.",
14853
- remediation: "Review commits for any exposed credentials."
14854
- });
14855
- }
14856
- } catch {
14861
+ const scan = scanRecentCommitsForSecrets();
14862
+ if (!scan.ok) {
14857
14863
  findings.push({
14858
14864
  severity: "warning",
14859
14865
  category: "security",
14860
14866
  title: "Secret scan did not run",
14861
- description: "The hardcoded-secret scan over recent commits failed to execute.",
14867
+ description: `The hardcoded-secret scan over recent commits failed to execute: ${scan.reason}`,
14862
14868
  remediation: "Re-run with a full git history available, then review the output."
14863
14869
  });
14870
+ } else if (scan.matches.length > 0) {
14871
+ findings.push({
14872
+ severity: "warning",
14873
+ category: "security",
14874
+ title: "Potential secrets in recent commits",
14875
+ description: "Recent commits may contain hardcoded secrets.",
14876
+ remediation: "Review commits for any exposed credentials."
14877
+ });
14864
14878
  }
14865
14879
  return {
14866
14880
  expert: "security",
14867
- // whenEmpty = false: with the failure above recorded as a finding, an empty
14868
- // list now genuinely means "scanned, nothing found" (#4581).
14881
+ // whenEmpty = false: an empty list genuinely means "scanned, nothing
14882
+ // found" — every check above records a finding when it cannot run, which
14883
+ // for the secret scan required #4839 as well as #4581.
14869
14884
  passed: !anyOf(findings, (f) => f.severity === "error", false),
14870
14885
  confidence: 0.85,
14871
14886
  findings,
@@ -14876,7 +14891,7 @@ async function validateArchitecture2(options) {
14876
14891
  const startTime = Date.now();
14877
14892
  const findings = [];
14878
14893
  try {
14879
- const result = execSync2("npx nexus-agents fitness-audit --format=json 2>/dev/null", {
14894
+ const result = execSync3("npx nexus-agents fitness-audit --format=json 2>/dev/null", {
14880
14895
  encoding: "utf-8",
14881
14896
  stdio: ["pipe", "pipe", "pipe"],
14882
14897
  timeout: CLI_SUBPROCESS_TIMEOUTS.releaseValidateMs
@@ -14997,7 +15012,7 @@ async function validateDevOps(options) {
14997
15012
  const startTime = Date.now();
14998
15013
  const findings = [];
14999
15014
  try {
15000
- execSync2("pnpm build 2>/dev/null", {
15015
+ execSync3("pnpm build 2>/dev/null", {
15001
15016
  encoding: "utf-8",
15002
15017
  stdio: ["pipe", "pipe", "pipe"],
15003
15018
  timeout: CLI_SUBPROCESS_TIMEOUTS.releaseValidateMs
@@ -15018,7 +15033,7 @@ async function validateDevOps(options) {
15018
15033
  });
15019
15034
  }
15020
15035
  try {
15021
- execSync2("pnpm lint 2>/dev/null", {
15036
+ execSync3("pnpm lint 2>/dev/null", {
15022
15037
  encoding: "utf-8",
15023
15038
  stdio: ["pipe", "pipe", "pipe"],
15024
15039
  timeout: CLI_SUBPROCESS_TIMEOUTS.releaseBuildMs
@@ -15039,7 +15054,7 @@ async function validateDevOps(options) {
15039
15054
  });
15040
15055
  }
15041
15056
  try {
15042
- execSync2("pnpm typecheck 2>/dev/null", {
15057
+ execSync3("pnpm typecheck 2>/dev/null", {
15043
15058
  encoding: "utf-8",
15044
15059
  stdio: ["pipe", "pipe", "pipe"],
15045
15060
  timeout: CLI_SUBPROCESS_TIMEOUTS.releaseValidateMs
@@ -16300,6 +16315,7 @@ Winner (by success rate): ${report.winnerBySuccessRate}`);
16300
16315
  }
16301
16316
 
16302
16317
  // src/cli/memory-eval.ts
16318
+ var TOP_K = 5;
16303
16319
  function generateEvalDataset(size = 50) {
16304
16320
  const pairs = [];
16305
16321
  const sources = ["session", "belief", "agentic", "typed"];
@@ -16315,16 +16331,19 @@ function generateEvalDataset(size = 50) {
16315
16331
  { query: "logging best practices", content: "Structured JSON logs with correlation IDs" },
16316
16332
  { query: "security vulnerability scan", content: "Dependabot and CodeQL automated scans" }
16317
16333
  ];
16334
+ const queryCount = Math.max(1, Math.min(topics.length, Math.floor(size / (TOP_K * 2))));
16318
16335
  for (let i = 0; i < size; i++) {
16319
- const topicIdx = i % topics.length;
16336
+ const topicIdx = i % queryCount;
16320
16337
  const topic = topics[topicIdx];
16321
16338
  const source = sources[i % sources.length] ?? "session";
16322
16339
  const isRelevant = i % 3 !== 0;
16323
- if (topic !== void 0) {
16340
+ const offset = 1 + i % (topics.length - 1);
16341
+ const contentTopic = isRelevant ? topic : topics[(topicIdx + offset) % topics.length];
16342
+ if (topic !== void 0 && contentTopic !== void 0) {
16324
16343
  pairs.push({
16325
- query: isRelevant ? topic.query : `unrelated query ${String(i)}`,
16344
+ query: topic.query,
16326
16345
  memoryKey: `mem-${String(i)}-${source}`,
16327
- memoryContent: topic.content,
16346
+ memoryContent: contentTopic.content,
16328
16347
  source,
16329
16348
  expectedRelevant: isRelevant
16330
16349
  });
@@ -16374,8 +16393,9 @@ function expandKeywords(query) {
16374
16393
  return result;
16375
16394
  }
16376
16395
  function evaluateScorer(dataset, scorer) {
16377
- const k = 5;
16396
+ const k = TOP_K;
16378
16397
  let totalRecall = 0;
16398
+ let recallQueries = 0;
16379
16399
  let totalPrecision = 0;
16380
16400
  let totalMrr = 0;
16381
16401
  const latencies = [];
@@ -16393,7 +16413,10 @@ function evaluateScorer(dataset, scorer) {
16393
16413
  const topK = scored.slice(0, k);
16394
16414
  const relevantInTopK = topK.filter((s) => s.relevant).length;
16395
16415
  const totalRelevant = pairs.filter((p) => p.expectedRelevant).length;
16396
- totalRecall += totalRelevant > 0 ? relevantInTopK / totalRelevant : 1;
16416
+ if (totalRelevant > 0) {
16417
+ totalRecall += relevantInTopK / totalRelevant;
16418
+ recallQueries += 1;
16419
+ }
16397
16420
  totalPrecision += topK.length > 0 ? relevantInTopK / topK.length : 0;
16398
16421
  const firstRelevantIdx = scored.findIndex((s) => s.relevant);
16399
16422
  totalMrr += firstRelevantIdx >= 0 ? 1 / (firstRelevantIdx + 1) : 0;
@@ -16402,12 +16425,13 @@ function evaluateScorer(dataset, scorer) {
16402
16425
  latencies.sort((a, b) => a - b);
16403
16426
  const p95Idx = Math.floor(latencies.length * 0.95);
16404
16427
  return {
16405
- recallAt5: n > 0 ? round(totalRecall / n) : 0,
16428
+ recallAt5: recallQueries > 0 ? round(totalRecall / recallQueries) : 0,
16406
16429
  precisionAt5: n > 0 ? round(totalPrecision / n) : 0,
16407
16430
  mrr: n > 0 ? round(totalMrr / n) : 0,
16408
16431
  avgLatencyMs: round(average(latencies)),
16409
16432
  p95LatencyMs: round(latencies[p95Idx] ?? 0),
16410
- totalQueries: n
16433
+ totalQueries: n,
16434
+ recallQueries
16411
16435
  };
16412
16436
  }
16413
16437
  function groupByQuery(dataset) {
@@ -16446,6 +16470,11 @@ function formatMemoryEvalReport(report) {
16446
16470
  }
16447
16471
  function formatEvalDetails(baseline, reflective, improvement, datasetSize) {
16448
16472
  const lines = [`Dataset: ${String(datasetSize)} query-memory pairs`];
16473
+ if (baseline.recallQueries < baseline.totalQueries) {
16474
+ lines.push(
16475
+ `Recall measured over ${String(baseline.recallQueries)} of ${String(baseline.totalQueries)} queries \u2014 the rest had no relevant memory.`
16476
+ );
16477
+ }
16449
16478
  lines.push("\nBaseline (keyword search):");
16450
16479
  lines.push(` Recall@5: ${baseline.recallAt5.toFixed(3)}`);
16451
16480
  lines.push(` Precision@5: ${baseline.precisionAt5.toFixed(3)}`);
@@ -17569,7 +17598,7 @@ function startImprovementReviewScheduler(options) {
17569
17598
  let running = false;
17570
17599
  const runOnce = async () => {
17571
17600
  try {
17572
- const { runImprovementReview: runImprovementReview2, ImprovementReviewInputSchema: ImprovementReviewInputSchema2 } = await import("./improvement-review-I4WFQK25.js");
17601
+ const { runImprovementReview: runImprovementReview2, ImprovementReviewInputSchema: ImprovementReviewInputSchema2 } = await import("./improvement-review-XN2GZX3V.js");
17573
17602
  const input = ImprovementReviewInputSchema2.parse({ fileIssues });
17574
17603
  const result = await runImprovementReview2(input, { logger: logger19 });
17575
17604
  logger19.info("Scheduled improvement_review complete", {
@@ -19626,7 +19655,7 @@ function adaptConfigToLibrary(config) {
19626
19655
  }
19627
19656
  function createBeliefPromoter() {
19628
19657
  return async (event) => {
19629
- const { getToolMemory } = await import("./tool-memory-MHP37ASX.js");
19658
+ const { getToolMemory } = await import("./tool-memory-ACUOYCYG.js");
19630
19659
  const tm = getToolMemory();
19631
19660
  await tm.recordBelief(
19632
19661
  `skill:${event.name}`,
@@ -20813,7 +20842,7 @@ async function handleResearchCommand(args) {
20813
20842
  }
20814
20843
  }
20815
20844
  async function handleRegistryCommand(args) {
20816
- const { registryCommand, isValidRegistrySubcommand, formatRegistryUsage } = await import("./registry-command-EPG2X2ZI.js");
20845
+ const { registryCommand, isValidRegistrySubcommand, formatRegistryUsage } = await import("./registry-command-2SCTKLEO.js");
20817
20846
  const subcommand = args.subcommand;
20818
20847
  if (!isValidRegistrySubcommand(subcommand)) {
20819
20848
  process.stdout.write(`${formatRegistryUsage()}
@@ -20861,12 +20890,12 @@ async function handleVerifyCommand(args) {
20861
20890
  async function handleDoctorCommand(args) {
20862
20891
  const exitCode = await doctorCommand({ fix: args.options.fix });
20863
20892
  if (args.options.deep) {
20864
- const { runDeepDiagnostics: runDeepDiagnostics2, formatDeepDiagnostics: formatDeepDiagnostics2 } = await import("./doctor-deep-UHFL3AE4.js");
20893
+ const { runDeepDiagnostics: runDeepDiagnostics2, formatDeepDiagnostics: formatDeepDiagnostics2 } = await import("./doctor-deep-WI2ZC7Z3.js");
20865
20894
  const diag = runDeepDiagnostics2();
20866
20895
  process.stdout.write(formatDeepDiagnostics2(diag) + "\n");
20867
20896
  }
20868
20897
  if (args.options.live) {
20869
- const { runLiveReadiness, formatLiveReadiness } = await import("./doctor-live-2CGAFGFG.js");
20898
+ const { runLiveReadiness, formatLiveReadiness } = await import("./doctor-live-W2KY3OIA.js");
20870
20899
  const report = await runLiveReadiness();
20871
20900
  process.stdout.write(formatLiveReadiness(report) + "\n");
20872
20901
  if (report.some((r) => r.levels.serves.status === "failed")) {
@@ -20919,7 +20948,7 @@ async function runInitPortableFlow(args) {
20919
20948
  return cliExit(result.success ? EXIT_CODES.SUCCESS : EXIT_CODES.SERVER_START_FAILED);
20920
20949
  }
20921
20950
  async function runInitOpencodeFlow(args) {
20922
- const { runInitOpencode } = await import("./init-opencode-HTSSQOLE.js");
20951
+ const { runInitOpencode } = await import("./init-opencode-UPA3R362.js");
20923
20952
  const opencodePath = args.options.opencode;
20924
20953
  if (opencodePath === void 0 || opencodePath === "") {
20925
20954
  process.stderr.write("Error: --opencode requires a path argument.\n");
@@ -20945,7 +20974,7 @@ async function runInitOpencodeFlow(args) {
20945
20974
  return cliExit(EXIT_CODES.SUCCESS);
20946
20975
  }
20947
20976
  async function renderOpencodeValidate(opencodePath) {
20948
- const { runOpencodeValidate } = await import("./init-opencode-HTSSQOLE.js");
20977
+ const { runOpencodeValidate } = await import("./init-opencode-UPA3R362.js");
20949
20978
  const result = await runOpencodeValidate(opencodePath);
20950
20979
  if (!result.ok) {
20951
20980
  process.stderr.write(`init --opencode --validate: ${result.reason ?? "failed"}
@@ -20984,7 +21013,7 @@ async function handleSetupCommandAsync(args) {
20984
21013
  return cliExitFromStatus(exitCode);
20985
21014
  }
20986
21015
  async function runCustomApiSetup(args) {
20987
- const { configureCustomApi } = await import("./setup-custom-api-GXF5MFBG.js");
21016
+ const { configureCustomApi } = await import("./setup-custom-api-5TTLIPV3.js");
20988
21017
  const baseUrl = args.options.customApi;
20989
21018
  if (baseUrl === void 0) return EXIT_CODES.SERVER_START_FAILED;
20990
21019
  const input = {