nexus-agents 12.8.0 → 14.0.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.
Files changed (204) hide show
  1. package/dist/{ast-rule-runner-WYFFEQ4K.js → ast-rule-runner-3PYXOOLH.js} +5 -6
  2. package/dist/{child-mcp-config-QT3CON45.js → child-mcp-config-AKQYBMMC.js} +4 -5
  3. package/dist/{child-mcp-config-QT3CON45.js.map → child-mcp-config-AKQYBMMC.js.map} +1 -1
  4. package/dist/{chunk-MFQFW2HS.js → chunk-2A4P2DX3.js} +2 -2
  5. package/dist/{chunk-IISYGPFE.js → chunk-36B7J7CZ.js} +3 -3
  6. package/dist/{chunk-N627RNSQ.js → chunk-6EUYMTVU.js} +5 -5
  7. package/dist/{chunk-KQ74CFQ4.js → chunk-6FBREJER.js} +2 -2
  8. package/dist/{chunk-FADXKWDW.js → chunk-7BKOWPKX.js} +9 -8
  9. package/dist/chunk-7BKOWPKX.js.map +1 -0
  10. package/dist/{chunk-FVGG74W7.js → chunk-7S6ANELD.js} +4 -4
  11. package/dist/{chunk-EUW56AIY.js → chunk-7VMEUGNV.js} +4 -4
  12. package/dist/{chunk-OKNC4DUN.js → chunk-ABTRD52Y.js} +4 -4
  13. package/dist/{chunk-X3VLHTGF.js → chunk-AJBRMUGK.js} +11 -11
  14. package/dist/{chunk-MH6NPW5N.js → chunk-BELY4VU4.js} +4 -4
  15. package/dist/{chunk-SGOTQLC5.js → chunk-BSGMAUA4.js} +3 -3
  16. package/dist/{chunk-KDOUKB7K.js → chunk-CP73UYNV.js} +5 -5
  17. package/dist/chunk-CP73UYNV.js.map +1 -0
  18. package/dist/{chunk-Q23M37XR.js → chunk-CQ6FAAOO.js} +3 -3
  19. package/dist/{chunk-XPGEELF5.js → chunk-CUPOUBBN.js} +2 -2
  20. package/dist/{chunk-RAW3AXHV.js → chunk-EFE6ORME.js} +2 -2
  21. package/dist/{chunk-VAXCUWU2.js → chunk-FLIBWADL.js} +11 -11
  22. package/dist/{chunk-2TS7HCZU.js → chunk-G2MC6WXA.js} +9 -9
  23. package/dist/{chunk-RZPCGPO7.js → chunk-GCD3OFFM.js} +2 -2
  24. package/dist/{chunk-DV5EUVIC.js → chunk-HQMIDROO.js} +2 -2
  25. package/dist/{chunk-WS3OZBDV.js → chunk-IBGLJEW7.js} +5 -5
  26. package/dist/{chunk-WK53DUXN.js → chunk-K5MAYIHL.js} +2 -2
  27. package/dist/{chunk-WI2CPM6B.js → chunk-K6CUB3IV.js} +2 -2
  28. package/dist/{chunk-P3RB5EHE.js → chunk-KVFNI2UZ.js} +2 -2
  29. package/dist/{chunk-SD4KNFLX.js → chunk-KZ5R5HL7.js} +3 -3
  30. package/dist/{chunk-IKTGQTVH.js → chunk-LD6QCSHT.js} +4 -4
  31. package/dist/{chunk-3GDICG5L.js → chunk-MB2UUFF7.js} +2 -2
  32. package/dist/{chunk-7WAHXTBQ.js → chunk-NA55VLER.js} +2 -2
  33. package/dist/{chunk-C3X5RHDW.js → chunk-PI54VS4I.js} +10 -10
  34. package/dist/{chunk-ILSLOHGX.js → chunk-UBCGX47E.js} +2 -2
  35. package/dist/{chunk-6LKSFTVL.js → chunk-UZZHLCYW.js} +2 -2
  36. package/dist/{chunk-BE5S54VV.js → chunk-XRMP4PP4.js} +5 -5
  37. package/dist/{chunk-PXN6G4DM.js → chunk-XU6N5OKA.js} +41 -41
  38. package/dist/{chunk-Q5RTCUK3.js → chunk-YKCJJP5X.js} +4 -4
  39. package/dist/{cli-auth-probe-4YQIM2WI.js → cli-auth-probe-XUCTRNLN.js} +1 -2
  40. package/dist/{cli-circuit-breaker-WWX3PNIN.js → cli-circuit-breaker-37UQWOAA.js} +5 -6
  41. package/dist/{cli-readiness-NTBYHZOM.js → cli-readiness-RSBS6FN3.js} +9 -10
  42. package/dist/{cli-server-gateway-HAGDF4VX.js → cli-server-gateway-C5QPDUWS.js} +14 -15
  43. package/dist/cli.d.ts +1 -0
  44. package/dist/cli.js +88 -196
  45. package/dist/cli.js.map +1 -1
  46. package/dist/{codebase-search-YVO7BC33.js → codebase-search-B2Y2KXNA.js} +1 -2
  47. package/dist/{composite-router-JZEQINFO.js → composite-router-WERJYE7X.js} +4 -5
  48. package/dist/{consensus-vote-N4KH4PMO.js → consensus-vote-G2MKNTMW.js} +17 -18
  49. package/dist/{context-retriever-I27PWPM6.js → context-retriever-H34LHPWB.js} +10 -11
  50. package/dist/{dist-RRRU2OKU.js → dist-FBP664IF.js} +1 -2
  51. package/dist/{doctor-deep-I2TE7D3R.js → doctor-deep-XBUWYYXO.js} +5 -6
  52. package/dist/{doctor-gateway-report-EPHABQ4H.js → doctor-gateway-report-JRENPRNM.js} +7 -8
  53. package/dist/{doctor-live-VV2EHGAW.js → doctor-live-CFUUN5K4.js} +14 -15
  54. package/dist/{doctor-live-VV2EHGAW.js.map → doctor-live-CFUUN5K4.js.map} +1 -1
  55. package/dist/{expert-bridge-DQ4ZBZQG.js → expert-bridge-FPFMGB3W.js} +6 -7
  56. package/dist/{expert-config-3LQMRQ24.js → expert-config-4K52BX5D.js} +1 -2
  57. package/dist/{factory-IJ6I3OTT.js → factory-HYRMAIGW.js} +13 -14
  58. package/dist/{factory-DFJ5M7PT.js → factory-RQ5Q2TMY.js} +7 -8
  59. package/dist/{gemini-adapter-5DVIZZEE.js → gemini-adapter-EHQUG5QP.js} +8 -9
  60. package/dist/{improvement-review-V7JROQTW.js → improvement-review-SMUO5UVF.js} +6 -7
  61. package/dist/index.d.ts +1 -0
  62. package/dist/index.js +27 -28
  63. package/dist/index.js.map +1 -1
  64. package/dist/{init-opencode-O54PGDVI.js → init-opencode-56GNUSHL.js} +6 -7
  65. package/dist/{init-opencode-O54PGDVI.js.map → init-opencode-56GNUSHL.js.map} +1 -1
  66. package/dist/{issue-triage-II4NCCV5.js → issue-triage-LPX3EU4I.js} +7 -8
  67. package/dist/{learning-persistence-NW5AE222.js → learning-persistence-QNJBNCU2.js} +1 -2
  68. package/dist/{model-config-helpers-KJLQISOV.js → model-config-helpers-XBHRUWIC.js} +3 -4
  69. package/dist/{openai-compat-adapter-IT3SZU5K.js → openai-compat-adapter-WEHE5LKH.js} +6 -7
  70. package/dist/{outcome-store-adapter-FOJFCZQY.js → outcome-store-adapter-L6MNOSZN.js} +1 -2
  71. package/dist/{outcome-store-adapter-FOJFCZQY.js.map → outcome-store-adapter-L6MNOSZN.js.map} +1 -1
  72. package/dist/{pr-reviewer-helpers-TD2LBCG3.js → pr-reviewer-helpers-XPT57QHF.js} +5 -6
  73. package/dist/{registry-command-YWJJEPOA.js → registry-command-D5TA6433.js} +2 -3
  74. package/dist/{registry-command-YWJJEPOA.js.map → registry-command-D5TA6433.js.map} +1 -1
  75. package/dist/{repo-analyze-66XFOAZW.js → repo-analyze-4V3PAFEN.js} +1 -2
  76. package/dist/{repo-security-plan-TR6RVIKK.js → repo-security-plan-OH7IPPQU.js} +4 -5
  77. package/dist/{research-helpers-synthesize-OZPYX7TW.js → research-helpers-synthesize-UYICMMMM.js} +6 -7
  78. package/dist/{routing-memory-J4NG247L.js → routing-memory-PKD2T674.js} +4 -5
  79. package/dist/{session-memory-GFWMW2VB.js → session-memory-IRR7GLZT.js} +5 -6
  80. package/dist/{setup-config-J5NZWJFQ.js → setup-config-N4OYZSCY.js} +5 -6
  81. package/dist/{setup-custom-api-4SMPOE3X.js → setup-custom-api-4VLHKKBF.js} +5 -6
  82. package/dist/{setup-custom-api-4SMPOE3X.js.map → setup-custom-api-4VLHKKBF.js.map} +1 -1
  83. package/dist/{setup-data-dir-A4WEDV5L.js → setup-data-dir-ZV4NH3F5.js} +1 -2
  84. package/dist/{tool-memory-VY44W54J.js → tool-memory-MSOEUVUX.js} +7 -8
  85. package/dist/{tool-memory-registry-adapters-T2IK5NRM.js → tool-memory-registry-adapters-QZ4OJN3G.js} +1 -2
  86. package/dist/{unified-registry-ZDA47RYP.js → unified-registry-W2DCYXUT.js} +13 -14
  87. package/dist/{weather-report-AZCNKMA3.js → weather-report-FANVIPXZ.js} +4 -5
  88. package/node_modules/@google/genai/dist/genai.d.ts +116 -28
  89. package/node_modules/@google/genai/dist/index.cjs +177 -37
  90. package/node_modules/@google/genai/dist/index.mjs +177 -37
  91. package/node_modules/@google/genai/dist/index.mjs.map +1 -1
  92. package/node_modules/@google/genai/dist/node/index.cjs +177 -37
  93. package/node_modules/@google/genai/dist/node/index.mjs +177 -37
  94. package/node_modules/@google/genai/dist/node/index.mjs.map +1 -1
  95. package/node_modules/@google/genai/dist/node/node.d.ts +116 -28
  96. package/node_modules/@google/genai/dist/tokenizer/node.cjs +13 -13
  97. package/node_modules/@google/genai/dist/tokenizer/node.d.ts +18 -18
  98. package/node_modules/@google/genai/dist/tokenizer/node.mjs +13 -13
  99. package/node_modules/@google/genai/dist/vertex_internal/index.cjs +43 -36
  100. package/node_modules/@google/genai/dist/vertex_internal/index.cjs.map +1 -1
  101. package/node_modules/@google/genai/dist/vertex_internal/index.d.ts +72 -21
  102. package/node_modules/@google/genai/dist/vertex_internal/index.js +43 -36
  103. package/node_modules/@google/genai/dist/vertex_internal/index.js.map +1 -1
  104. package/node_modules/@google/genai/dist/web/index.mjs +177 -37
  105. package/node_modules/@google/genai/dist/web/index.mjs.map +1 -1
  106. package/node_modules/@google/genai/dist/web/web.d.ts +116 -28
  107. package/node_modules/@google/genai/package.json +1 -1
  108. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/server/mcp.d.ts.map +1 -1
  109. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/server/mcp.js +10 -0
  110. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/server/mcp.js.map +1 -1
  111. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/shared/transport.d.ts +8 -8
  112. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/shared/transport.d.ts.map +1 -1
  113. package/node_modules/@modelcontextprotocol/sdk/dist/esm/server/mcp.d.ts.map +1 -1
  114. package/node_modules/@modelcontextprotocol/sdk/dist/esm/server/mcp.js +10 -0
  115. package/node_modules/@modelcontextprotocol/sdk/dist/esm/server/mcp.js.map +1 -1
  116. package/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/transport.d.ts +8 -8
  117. package/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/transport.d.ts.map +1 -1
  118. package/node_modules/@modelcontextprotocol/sdk/package.json +1 -1
  119. package/node_modules/body-parser/README.md +17 -13
  120. package/node_modules/body-parser/lib/read.js +74 -57
  121. package/node_modules/body-parser/lib/types/json.js +11 -11
  122. package/node_modules/body-parser/lib/types/urlencoded.js +5 -5
  123. package/node_modules/body-parser/lib/utils.js +0 -15
  124. package/node_modules/body-parser/package.json +7 -12
  125. package/node_modules/on-finished/index.js +14 -2
  126. package/node_modules/on-finished/package.json +11 -7
  127. package/node_modules/path-to-regexp/Readme.md +1 -7
  128. package/node_modules/path-to-regexp/dist/index.d.ts +7 -12
  129. package/node_modules/path-to-regexp/dist/index.js +99 -99
  130. package/node_modules/path-to-regexp/dist/index.js.map +1 -1
  131. package/node_modules/path-to-regexp/package.json +9 -8
  132. package/package.json +3 -6
  133. package/dist/chunk-FADXKWDW.js.map +0 -1
  134. package/dist/chunk-KDOUKB7K.js.map +0 -1
  135. package/dist/chunk-PX6F3LHL.js +0 -40
  136. package/dist/dist-ZRIBZ25J.js +0 -52080
  137. package/dist/dist-ZRIBZ25J.js.map +0 -1
  138. package/dist/weather-report-AZCNKMA3.js.map +0 -1
  139. package/node_modules/on-finished/HISTORY.md +0 -98
  140. /package/dist/{ast-rule-runner-WYFFEQ4K.js.map → ast-rule-runner-3PYXOOLH.js.map} +0 -0
  141. /package/dist/{chunk-MFQFW2HS.js.map → chunk-2A4P2DX3.js.map} +0 -0
  142. /package/dist/{chunk-IISYGPFE.js.map → chunk-36B7J7CZ.js.map} +0 -0
  143. /package/dist/{chunk-N627RNSQ.js.map → chunk-6EUYMTVU.js.map} +0 -0
  144. /package/dist/{chunk-KQ74CFQ4.js.map → chunk-6FBREJER.js.map} +0 -0
  145. /package/dist/{chunk-FVGG74W7.js.map → chunk-7S6ANELD.js.map} +0 -0
  146. /package/dist/{chunk-EUW56AIY.js.map → chunk-7VMEUGNV.js.map} +0 -0
  147. /package/dist/{chunk-OKNC4DUN.js.map → chunk-ABTRD52Y.js.map} +0 -0
  148. /package/dist/{chunk-X3VLHTGF.js.map → chunk-AJBRMUGK.js.map} +0 -0
  149. /package/dist/{chunk-MH6NPW5N.js.map → chunk-BELY4VU4.js.map} +0 -0
  150. /package/dist/{chunk-SGOTQLC5.js.map → chunk-BSGMAUA4.js.map} +0 -0
  151. /package/dist/{chunk-Q23M37XR.js.map → chunk-CQ6FAAOO.js.map} +0 -0
  152. /package/dist/{chunk-XPGEELF5.js.map → chunk-CUPOUBBN.js.map} +0 -0
  153. /package/dist/{chunk-RAW3AXHV.js.map → chunk-EFE6ORME.js.map} +0 -0
  154. /package/dist/{chunk-VAXCUWU2.js.map → chunk-FLIBWADL.js.map} +0 -0
  155. /package/dist/{chunk-2TS7HCZU.js.map → chunk-G2MC6WXA.js.map} +0 -0
  156. /package/dist/{chunk-RZPCGPO7.js.map → chunk-GCD3OFFM.js.map} +0 -0
  157. /package/dist/{chunk-DV5EUVIC.js.map → chunk-HQMIDROO.js.map} +0 -0
  158. /package/dist/{chunk-WS3OZBDV.js.map → chunk-IBGLJEW7.js.map} +0 -0
  159. /package/dist/{chunk-WK53DUXN.js.map → chunk-K5MAYIHL.js.map} +0 -0
  160. /package/dist/{chunk-WI2CPM6B.js.map → chunk-K6CUB3IV.js.map} +0 -0
  161. /package/dist/{chunk-P3RB5EHE.js.map → chunk-KVFNI2UZ.js.map} +0 -0
  162. /package/dist/{chunk-SD4KNFLX.js.map → chunk-KZ5R5HL7.js.map} +0 -0
  163. /package/dist/{chunk-IKTGQTVH.js.map → chunk-LD6QCSHT.js.map} +0 -0
  164. /package/dist/{chunk-3GDICG5L.js.map → chunk-MB2UUFF7.js.map} +0 -0
  165. /package/dist/{chunk-7WAHXTBQ.js.map → chunk-NA55VLER.js.map} +0 -0
  166. /package/dist/{chunk-C3X5RHDW.js.map → chunk-PI54VS4I.js.map} +0 -0
  167. /package/dist/{chunk-ILSLOHGX.js.map → chunk-UBCGX47E.js.map} +0 -0
  168. /package/dist/{chunk-6LKSFTVL.js.map → chunk-UZZHLCYW.js.map} +0 -0
  169. /package/dist/{chunk-BE5S54VV.js.map → chunk-XRMP4PP4.js.map} +0 -0
  170. /package/dist/{chunk-PXN6G4DM.js.map → chunk-XU6N5OKA.js.map} +0 -0
  171. /package/dist/{chunk-Q5RTCUK3.js.map → chunk-YKCJJP5X.js.map} +0 -0
  172. /package/dist/{chunk-PX6F3LHL.js.map → cli-auth-probe-XUCTRNLN.js.map} +0 -0
  173. /package/dist/{cli-auth-probe-4YQIM2WI.js.map → cli-circuit-breaker-37UQWOAA.js.map} +0 -0
  174. /package/dist/{cli-circuit-breaker-WWX3PNIN.js.map → cli-readiness-RSBS6FN3.js.map} +0 -0
  175. /package/dist/{cli-readiness-NTBYHZOM.js.map → cli-server-gateway-C5QPDUWS.js.map} +0 -0
  176. /package/dist/{cli-server-gateway-HAGDF4VX.js.map → codebase-search-B2Y2KXNA.js.map} +0 -0
  177. /package/dist/{codebase-search-YVO7BC33.js.map → composite-router-WERJYE7X.js.map} +0 -0
  178. /package/dist/{composite-router-JZEQINFO.js.map → consensus-vote-G2MKNTMW.js.map} +0 -0
  179. /package/dist/{consensus-vote-N4KH4PMO.js.map → context-retriever-H34LHPWB.js.map} +0 -0
  180. /package/dist/{context-retriever-I27PWPM6.js.map → dist-FBP664IF.js.map} +0 -0
  181. /package/dist/{dist-RRRU2OKU.js.map → doctor-deep-XBUWYYXO.js.map} +0 -0
  182. /package/dist/{doctor-deep-I2TE7D3R.js.map → doctor-gateway-report-JRENPRNM.js.map} +0 -0
  183. /package/dist/{doctor-gateway-report-EPHABQ4H.js.map → expert-bridge-FPFMGB3W.js.map} +0 -0
  184. /package/dist/{expert-bridge-DQ4ZBZQG.js.map → expert-config-4K52BX5D.js.map} +0 -0
  185. /package/dist/{expert-config-3LQMRQ24.js.map → factory-HYRMAIGW.js.map} +0 -0
  186. /package/dist/{factory-DFJ5M7PT.js.map → factory-RQ5Q2TMY.js.map} +0 -0
  187. /package/dist/{factory-IJ6I3OTT.js.map → gemini-adapter-EHQUG5QP.js.map} +0 -0
  188. /package/dist/{gemini-adapter-5DVIZZEE.js.map → improvement-review-SMUO5UVF.js.map} +0 -0
  189. /package/dist/{improvement-review-V7JROQTW.js.map → issue-triage-LPX3EU4I.js.map} +0 -0
  190. /package/dist/{issue-triage-II4NCCV5.js.map → learning-persistence-QNJBNCU2.js.map} +0 -0
  191. /package/dist/{learning-persistence-NW5AE222.js.map → model-config-helpers-XBHRUWIC.js.map} +0 -0
  192. /package/dist/{model-config-helpers-KJLQISOV.js.map → openai-compat-adapter-WEHE5LKH.js.map} +0 -0
  193. /package/dist/{openai-compat-adapter-IT3SZU5K.js.map → pr-reviewer-helpers-XPT57QHF.js.map} +0 -0
  194. /package/dist/{pr-reviewer-helpers-TD2LBCG3.js.map → repo-analyze-4V3PAFEN.js.map} +0 -0
  195. /package/dist/{repo-analyze-66XFOAZW.js.map → repo-security-plan-OH7IPPQU.js.map} +0 -0
  196. /package/dist/{repo-security-plan-TR6RVIKK.js.map → research-helpers-synthesize-UYICMMMM.js.map} +0 -0
  197. /package/dist/{research-helpers-synthesize-OZPYX7TW.js.map → routing-memory-PKD2T674.js.map} +0 -0
  198. /package/dist/{routing-memory-J4NG247L.js.map → session-memory-IRR7GLZT.js.map} +0 -0
  199. /package/dist/{session-memory-GFWMW2VB.js.map → setup-config-N4OYZSCY.js.map} +0 -0
  200. /package/dist/{setup-config-J5NZWJFQ.js.map → setup-data-dir-ZV4NH3F5.js.map} +0 -0
  201. /package/dist/{setup-data-dir-A4WEDV5L.js.map → tool-memory-MSOEUVUX.js.map} +0 -0
  202. /package/dist/{tool-memory-VY44W54J.js.map → tool-memory-registry-adapters-QZ4OJN3G.js.map} +0 -0
  203. /package/dist/{tool-memory-registry-adapters-T2IK5NRM.js.map → unified-registry-W2DCYXUT.js.map} +0 -0
  204. /package/dist/{unified-registry-ZDA47RYP.js.map → weather-report-FANVIPXZ.js.map} +0 -0
@@ -9,11 +9,11 @@ import {
9
9
  getBuiltInAstRulesPath,
10
10
  loadRules,
11
11
  runAstQaRules
12
- } from "./chunk-3GDICG5L.js";
13
- import "./chunk-X3VLHTGF.js";
12
+ } from "./chunk-MB2UUFF7.js";
13
+ import "./chunk-AJBRMUGK.js";
14
14
  import "./chunk-XBEKMUTO.js";
15
- import "./chunk-RZPCGPO7.js";
16
- import "./chunk-WI2CPM6B.js";
15
+ import "./chunk-GCD3OFFM.js";
16
+ import "./chunk-K6CUB3IV.js";
17
17
  import "./chunk-G3M3UVAW.js";
18
18
  import "./chunk-DMJLRUDB.js";
19
19
  import "./chunk-RM3RFAKU.js";
@@ -21,7 +21,6 @@ import "./chunk-GFJNPJEH.js";
21
21
  import "./chunk-6TBRXZY7.js";
22
22
  import "./chunk-HFROZDKW.js";
23
23
  import "./chunk-RUJYWZLC.js";
24
- import "./chunk-PX6F3LHL.js";
25
24
  export {
26
25
  AST_RULE_LANGUAGES,
27
26
  AST_RULE_SEVERITIES,
@@ -34,4 +33,4 @@ export {
34
33
  loadRules,
35
34
  runAstQaRules
36
35
  };
37
- //# sourceMappingURL=ast-rule-runner-WYFFEQ4K.js.map
36
+ //# sourceMappingURL=ast-rule-runner-3PYXOOLH.js.map
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  nexusMkdtempSync
3
3
  } from "./chunk-EBKVMMWA.js";
4
- import "./chunk-X3VLHTGF.js";
4
+ import "./chunk-AJBRMUGK.js";
5
5
  import "./chunk-XBEKMUTO.js";
6
- import "./chunk-RZPCGPO7.js";
7
- import "./chunk-WI2CPM6B.js";
6
+ import "./chunk-GCD3OFFM.js";
7
+ import "./chunk-K6CUB3IV.js";
8
8
  import "./chunk-G3M3UVAW.js";
9
9
  import "./chunk-DMJLRUDB.js";
10
10
  import {
@@ -14,7 +14,6 @@ import "./chunk-GFJNPJEH.js";
14
14
  import "./chunk-6TBRXZY7.js";
15
15
  import "./chunk-HFROZDKW.js";
16
16
  import "./chunk-RUJYWZLC.js";
17
- import "./chunk-PX6F3LHL.js";
18
17
 
19
18
  // src/cli-adapters/child-mcp-config.ts
20
19
  import { rm } from "node:fs/promises";
@@ -81,4 +80,4 @@ async function generateMcpConfig(options) {
81
80
  export {
82
81
  generateMcpConfig
83
82
  };
84
- //# sourceMappingURL=child-mcp-config-QT3CON45.js.map
83
+ //# sourceMappingURL=child-mcp-config-AKQYBMMC.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/cli-adapters/child-mcp-config.ts"],"sourcesContent":["/**\n * nexus-agents/cli-adapters - Child CLI MCP Config Generator\n *\n * Generates MCP server configuration for child Claude CLI sessions so\n * spawned agents can call back into nexus-agents' MCP tools (memory,\n * research, etc.). Used by `pipeline/expert-bridge.ts` to give expert\n * agents tool access. Originally lived under `swe-bench/` (#1413);\n * relocated here in #2515 — the helper is generic CLI-spawn\n * infrastructure, not benchmark-specific.\n *\n * The generated config grants NO tool approvals. It only tells the child\n * where the nexus-agents MCP server is; whether an expert may actually call\n * one of its tools follows the host's Claude permission settings (for\n * example `defaultMode`). Measured 2026-09-24: in auto mode the calls run,\n * in default mode they are refused (#6784). An unused `allowedTools` list\n * that read like a guard but was never passed to the CLI was removed then.\n *\n * @module cli-adapters/child-mcp-config\n */\n\nimport { rm } from 'node:fs/promises';\nimport { rmSync, writeFileSync } from 'node:fs';\nimport { nexusMkdtempSync } from '../config/nexus-tmp-dir.js';\nimport { join } from 'node:path';\nimport { createLogger } from '../core/index.js';\n\nconst logger = createLogger({ component: 'swe-bench-mcp-config' });\n\n// Async finally blocks cannot run after process.exit (#4631). One listener\n// covers concurrent configs; SIGKILL cannot execute any in-process cleanup.\nconst activeMcpDirs = new Set<string>();\n\nfunction cleanupOnExit(): void {\n for (const dir of activeMcpDirs) {\n try {\n rmSync(dir, { recursive: true, force: true });\n } catch (error: unknown) {\n logger.debug('MCP-config exit cleanup failed', {\n error: error instanceof Error ? error.message : String(error),\n });\n }\n }\n}\n\n/**\n * MCP server entry in Claude CLI config format.\n */\ninterface McpServerEntry {\n readonly command: string;\n readonly args: readonly string[];\n readonly env?: Readonly<Record<string, string>>;\n}\n\n/**\n * MCP config file format for Claude CLI (--mcp-config).\n */\ninterface McpConfigFile {\n readonly mcpServers: Readonly<Record<string, McpServerEntry>>;\n}\n\n/**\n * Options for generating MCP config.\n */\nexport interface McpConfigOptions {\n /** Path to nexus-agents CLI entry point. */\n readonly cliPath?: string;\n /** Additional environment variables for the MCP server. */\n readonly env?: Readonly<Record<string, string>>;\n}\n\n/**\n * Resolves the nexus-agents CLI path.\n * Uses the built dist/cli.js relative to this package.\n */\nfunction resolveCliPath(override?: string): string {\n if (override !== undefined) return override;\n // Resolve relative to this file: src/swe-bench/ → dist/cli.js\n // At runtime we're in dist/swe-bench/, so go up one level\n const distDir = join(__dirname, '..');\n return join(distDir, 'cli.js');\n}\n\n/**\n * Env marker naming a child server (#6795). The child's stdio caller is an\n * expert CLI driven by a model, not the operator, so the child must not\n * measure it at tier 1; `connectTransport` reads this and records the caller\n * as unmeasured.\n */\nconst MCP_CHILD_ENV = 'NEXUS_MCP_CHILD';\n\n/**\n * Builds the MCP config object for a nexus-agents server.\n */\nfunction buildConfig(options?: McpConfigOptions): McpConfigFile {\n const cliPath = resolveCliPath(options?.cliPath);\n\n const entry: McpServerEntry = {\n command: 'node',\n args: [cliPath, '--mode=server'],\n // The child marker is applied LAST so caller-supplied env cannot unset it.\n env: { ...options?.env, [MCP_CHILD_ENV]: '1' },\n };\n\n return {\n mcpServers: {\n 'nexus-agents': entry,\n },\n };\n}\n\n/**\n * Generated MCP config with path and cleanup function.\n */\nexport interface GeneratedMcpConfig {\n /** Path to the generated config file. */\n readonly configPath: string;\n /** Cleanup function to remove temp files. */\n readonly cleanup: () => Promise<void>;\n}\n\n/**\n * Generates an MCP config file for Claude CLI child sessions.\n *\n * Creates a temporary JSON file that can be passed to `claude --mcp-config`.\n * Returns the file path and a cleanup function.\n */\nexport async function generateMcpConfig(options?: McpConfigOptions): Promise<GeneratedMcpConfig> {\n const config = buildConfig(options);\n\n // Creation and exit registration must occur in one turn: async mkdtemp\n // can finish in its worker before JS can register cleanup (#4631).\n const tempDir = nexusMkdtempSync('nexus-mcp-');\n const configPath = join(tempDir, 'mcp-config.json');\n\n if (activeMcpDirs.size === 0) process.on('exit', cleanupOnExit);\n activeMcpDirs.add(tempDir);\n\n const cleanup = async (): Promise<void> => {\n try {\n await rm(tempDir, { recursive: true, force: true });\n activeMcpDirs.delete(tempDir);\n if (activeMcpDirs.size === 0) process.removeListener('exit', cleanupOnExit);\n } catch (e: unknown) {\n logger.debug('Best-effort cleanup failed', {\n error: e instanceof Error ? e.message : String(e),\n });\n }\n };\n\n try {\n // An async open can create the file after exit cleanup lists an empty\n // directory, making its rmdir fail with ENOTEMPTY (#7121).\n writeFileSync(configPath, JSON.stringify(config, null, 2), 'utf-8');\n return { configPath, cleanup };\n } catch (error: unknown) {\n await cleanup();\n throw error;\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAoBA,SAAS,UAAU;AACnB,SAAS,QAAQ,qBAAqB;AAEtC,SAAS,YAAY;AAGrB,IAAM,SAAS,aAAa,EAAE,WAAW,uBAAuB,CAAC;AAIjE,IAAM,gBAAgB,oBAAI,IAAY;AAEtC,SAAS,gBAAsB;AAC7B,aAAW,OAAO,eAAe;AAC/B,QAAI;AACF,aAAO,KAAK,EAAE,WAAW,MAAM,OAAO,KAAK,CAAC;AAAA,IAC9C,SAAS,OAAgB;AACvB,aAAO,MAAM,kCAAkC;AAAA,QAC7C,OAAO,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAAA,MAC9D,CAAC;AAAA,IACH;AAAA,EACF;AACF;AAgCA,SAAS,eAAe,UAA2B;AACjD,MAAI,aAAa,OAAW,QAAO;AAGnC,QAAM,UAAU,KAAK,WAAW,IAAI;AACpC,SAAO,KAAK,SAAS,QAAQ;AAC/B;AAQA,IAAM,gBAAgB;AAKtB,SAAS,YAAY,SAA2C;AAC9D,QAAM,UAAU,eAAe,SAAS,OAAO;AAE/C,QAAM,QAAwB;AAAA,IAC5B,SAAS;AAAA,IACT,MAAM,CAAC,SAAS,eAAe;AAAA;AAAA,IAE/B,KAAK,EAAE,GAAG,SAAS,KAAK,CAAC,aAAa,GAAG,IAAI;AAAA,EAC/C;AAEA,SAAO;AAAA,IACL,YAAY;AAAA,MACV,gBAAgB;AAAA,IAClB;AAAA,EACF;AACF;AAkBA,eAAsB,kBAAkB,SAAyD;AAC/F,QAAM,SAAS,YAAY,OAAO;AAIlC,QAAM,UAAU,iBAAiB,YAAY;AAC7C,QAAM,aAAa,KAAK,SAAS,iBAAiB;AAElD,MAAI,cAAc,SAAS,EAAG,SAAQ,GAAG,QAAQ,aAAa;AAC9D,gBAAc,IAAI,OAAO;AAEzB,QAAM,UAAU,YAA2B;AACzC,QAAI;AACF,YAAM,GAAG,SAAS,EAAE,WAAW,MAAM,OAAO,KAAK,CAAC;AAClD,oBAAc,OAAO,OAAO;AAC5B,UAAI,cAAc,SAAS,EAAG,SAAQ,eAAe,QAAQ,aAAa;AAAA,IAC5E,SAAS,GAAY;AACnB,aAAO,MAAM,8BAA8B;AAAA,QACzC,OAAO,aAAa,QAAQ,EAAE,UAAU,OAAO,CAAC;AAAA,MAClD,CAAC;AAAA,IACH;AAAA,EACF;AAEA,MAAI;AAGF,kBAAc,YAAY,KAAK,UAAU,QAAQ,MAAM,CAAC,GAAG,OAAO;AAClE,WAAO,EAAE,YAAY,QAAQ;AAAA,EAC/B,SAAS,OAAgB;AACvB,UAAM,QAAQ;AACd,UAAM;AAAA,EACR;AACF;","names":[]}
1
+ {"version":3,"sources":["../src/cli-adapters/child-mcp-config.ts"],"sourcesContent":["/**\n * nexus-agents/cli-adapters - Child CLI MCP Config Generator\n *\n * Generates MCP server configuration for child Claude CLI sessions so\n * spawned agents can call back into nexus-agents' MCP tools (memory,\n * research, etc.). Used by `pipeline/expert-bridge.ts` to give expert\n * agents tool access. Originally lived under `swe-bench/` (#1413);\n * relocated here in #2515 — the helper is generic CLI-spawn\n * infrastructure, not benchmark-specific.\n *\n * The generated config grants NO tool approvals. It only tells the child\n * where the nexus-agents MCP server is; whether an expert may actually call\n * one of its tools follows the host's Claude permission settings (for\n * example `defaultMode`). Measured 2026-09-24: in auto mode the calls run,\n * in default mode they are refused (#6784). An unused `allowedTools` list\n * that read like a guard but was never passed to the CLI was removed then.\n *\n * @module cli-adapters/child-mcp-config\n */\n\nimport { rm } from 'node:fs/promises';\nimport { rmSync, writeFileSync } from 'node:fs';\nimport { nexusMkdtempSync } from '../config/nexus-tmp-dir.js';\nimport { join } from 'node:path';\nimport { createLogger } from '../core/index.js';\n\nconst logger = createLogger({ component: 'swe-bench-mcp-config' });\n\n// Async finally blocks cannot run after process.exit (#4631). One listener\n// covers concurrent configs; SIGKILL cannot execute any in-process cleanup.\nconst activeMcpDirs = new Set<string>();\n\nfunction cleanupOnExit(): void {\n for (const dir of activeMcpDirs) {\n try {\n rmSync(dir, { recursive: true, force: true });\n } catch (error: unknown) {\n logger.debug('MCP-config exit cleanup failed', {\n error: error instanceof Error ? error.message : String(error),\n });\n }\n }\n}\n\n/**\n * MCP server entry in Claude CLI config format.\n */\ninterface McpServerEntry {\n readonly command: string;\n readonly args: readonly string[];\n readonly env?: Readonly<Record<string, string>>;\n}\n\n/**\n * MCP config file format for Claude CLI (--mcp-config).\n */\ninterface McpConfigFile {\n readonly mcpServers: Readonly<Record<string, McpServerEntry>>;\n}\n\n/**\n * Options for generating MCP config.\n */\nexport interface McpConfigOptions {\n /** Path to nexus-agents CLI entry point. */\n readonly cliPath?: string;\n /** Additional environment variables for the MCP server. */\n readonly env?: Readonly<Record<string, string>>;\n}\n\n/**\n * Resolves the nexus-agents CLI path.\n * Uses the built dist/cli.js relative to this package.\n */\nfunction resolveCliPath(override?: string): string {\n if (override !== undefined) return override;\n // Resolve relative to this file: src/swe-bench/ → dist/cli.js\n // At runtime we're in dist/swe-bench/, so go up one level\n const distDir = join(__dirname, '..');\n return join(distDir, 'cli.js');\n}\n\n/**\n * Env marker naming a child server (#6795). The child's stdio caller is an\n * expert CLI driven by a model, not the operator, so the child must not\n * measure it at tier 1; `connectTransport` reads this and records the caller\n * as unmeasured.\n */\nconst MCP_CHILD_ENV = 'NEXUS_MCP_CHILD';\n\n/**\n * Builds the MCP config object for a nexus-agents server.\n */\nfunction buildConfig(options?: McpConfigOptions): McpConfigFile {\n const cliPath = resolveCliPath(options?.cliPath);\n\n const entry: McpServerEntry = {\n command: 'node',\n args: [cliPath, '--mode=server'],\n // The child marker is applied LAST so caller-supplied env cannot unset it.\n env: { ...options?.env, [MCP_CHILD_ENV]: '1' },\n };\n\n return {\n mcpServers: {\n 'nexus-agents': entry,\n },\n };\n}\n\n/**\n * Generated MCP config with path and cleanup function.\n */\nexport interface GeneratedMcpConfig {\n /** Path to the generated config file. */\n readonly configPath: string;\n /** Cleanup function to remove temp files. */\n readonly cleanup: () => Promise<void>;\n}\n\n/**\n * Generates an MCP config file for Claude CLI child sessions.\n *\n * Creates a temporary JSON file that can be passed to `claude --mcp-config`.\n * Returns the file path and a cleanup function.\n */\nexport async function generateMcpConfig(options?: McpConfigOptions): Promise<GeneratedMcpConfig> {\n const config = buildConfig(options);\n\n // Creation and exit registration must occur in one turn: async mkdtemp\n // can finish in its worker before JS can register cleanup (#4631).\n const tempDir = nexusMkdtempSync('nexus-mcp-');\n const configPath = join(tempDir, 'mcp-config.json');\n\n if (activeMcpDirs.size === 0) process.on('exit', cleanupOnExit);\n activeMcpDirs.add(tempDir);\n\n const cleanup = async (): Promise<void> => {\n try {\n await rm(tempDir, { recursive: true, force: true });\n activeMcpDirs.delete(tempDir);\n if (activeMcpDirs.size === 0) process.removeListener('exit', cleanupOnExit);\n } catch (e: unknown) {\n logger.debug('Best-effort cleanup failed', {\n error: e instanceof Error ? e.message : String(e),\n });\n }\n };\n\n try {\n // An async open can create the file after exit cleanup lists an empty\n // directory, making its rmdir fail with ENOTEMPTY (#7121).\n writeFileSync(configPath, JSON.stringify(config, null, 2), 'utf-8');\n return { configPath, cleanup };\n } catch (error: unknown) {\n await cleanup();\n throw error;\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAoBA,SAAS,UAAU;AACnB,SAAS,QAAQ,qBAAqB;AAEtC,SAAS,YAAY;AAGrB,IAAM,SAAS,aAAa,EAAE,WAAW,uBAAuB,CAAC;AAIjE,IAAM,gBAAgB,oBAAI,IAAY;AAEtC,SAAS,gBAAsB;AAC7B,aAAW,OAAO,eAAe;AAC/B,QAAI;AACF,aAAO,KAAK,EAAE,WAAW,MAAM,OAAO,KAAK,CAAC;AAAA,IAC9C,SAAS,OAAgB;AACvB,aAAO,MAAM,kCAAkC;AAAA,QAC7C,OAAO,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAAA,MAC9D,CAAC;AAAA,IACH;AAAA,EACF;AACF;AAgCA,SAAS,eAAe,UAA2B;AACjD,MAAI,aAAa,OAAW,QAAO;AAGnC,QAAM,UAAU,KAAK,WAAW,IAAI;AACpC,SAAO,KAAK,SAAS,QAAQ;AAC/B;AAQA,IAAM,gBAAgB;AAKtB,SAAS,YAAY,SAA2C;AAC9D,QAAM,UAAU,eAAe,SAAS,OAAO;AAE/C,QAAM,QAAwB;AAAA,IAC5B,SAAS;AAAA,IACT,MAAM,CAAC,SAAS,eAAe;AAAA;AAAA,IAE/B,KAAK,EAAE,GAAG,SAAS,KAAK,CAAC,aAAa,GAAG,IAAI;AAAA,EAC/C;AAEA,SAAO;AAAA,IACL,YAAY;AAAA,MACV,gBAAgB;AAAA,IAClB;AAAA,EACF;AACF;AAkBA,eAAsB,kBAAkB,SAAyD;AAC/F,QAAM,SAAS,YAAY,OAAO;AAIlC,QAAM,UAAU,iBAAiB,YAAY;AAC7C,QAAM,aAAa,KAAK,SAAS,iBAAiB;AAElD,MAAI,cAAc,SAAS,EAAG,SAAQ,GAAG,QAAQ,aAAa;AAC9D,gBAAc,IAAI,OAAO;AAEzB,QAAM,UAAU,YAA2B;AACzC,QAAI;AACF,YAAM,GAAG,SAAS,EAAE,WAAW,MAAM,OAAO,KAAK,CAAC;AAClD,oBAAc,OAAO,OAAO;AAC5B,UAAI,cAAc,SAAS,EAAG,SAAQ,eAAe,QAAQ,aAAa;AAAA,IAC5E,SAAS,GAAY;AACnB,aAAO,MAAM,8BAA8B;AAAA,QACzC,OAAO,aAAa,QAAQ,EAAE,UAAU,OAAO,CAAC;AAAA,MAClD,CAAC;AAAA,IACH;AAAA,EACF;AAEA,MAAI;AAGF,kBAAc,YAAY,KAAK,UAAU,QAAQ,MAAM,CAAC,GAAG,OAAO;AAClE,WAAO,EAAE,YAAY,QAAQ;AAAA,EAC/B,SAAS,OAAgB;AACvB,UAAM,QAAQ;AACd,UAAM;AAAA,EACR;AACF;","names":[]}
@@ -2,7 +2,7 @@ import {
2
2
  err,
3
3
  getErrorMessage,
4
4
  ok
5
- } from "./chunk-X3VLHTGF.js";
5
+ } from "./chunk-AJBRMUGK.js";
6
6
  import {
7
7
  createLogger
8
8
  } from "./chunk-RM3RFAKU.js";
@@ -285,4 +285,4 @@ export {
285
285
  ScmError,
286
286
  GitHubProvider
287
287
  };
288
- //# sourceMappingURL=chunk-MFQFW2HS.js.map
288
+ //# sourceMappingURL=chunk-2A4P2DX3.js.map
@@ -7,7 +7,7 @@ import {
7
7
  toSdkCallback,
8
8
  toolStructuredError,
9
9
  wrapToolWithTimeout
10
- } from "./chunk-SD4KNFLX.js";
10
+ } from "./chunk-KZ5R5HL7.js";
11
11
  import {
12
12
  JsonlStore,
13
13
  SECURITY_KEYWORDS,
@@ -19,7 +19,7 @@ import {
19
19
  isDeclaredNeverDeprecate,
20
20
  isRegisteredToolName,
21
21
  resolveInsideRoot
22
- } from "./chunk-X3VLHTGF.js";
22
+ } from "./chunk-AJBRMUGK.js";
23
23
  import {
24
24
  hasMeasuredCategory
25
25
  } from "./chunk-DMJLRUDB.js";
@@ -2544,4 +2544,4 @@ export {
2544
2544
  runImprovementReview,
2545
2545
  registerImprovementReviewTool
2546
2546
  };
2547
- //# sourceMappingURL=chunk-IISYGPFE.js.map
2547
+ //# sourceMappingURL=chunk-36B7J7CZ.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  SubprocessCliAdapter
3
- } from "./chunk-WS3OZBDV.js";
3
+ } from "./chunk-IBGLJEW7.js";
4
4
  import {
5
5
  accessModeConflict,
6
6
  asRecord,
@@ -12,7 +12,7 @@ import {
12
12
  listModelsForCli,
13
13
  ok,
14
14
  restrictedAccessMode
15
- } from "./chunk-X3VLHTGF.js";
15
+ } from "./chunk-AJBRMUGK.js";
16
16
  import {
17
17
  FALLBACK_CONTEXT_WINDOW,
18
18
  FALLBACK_MAX_OUTPUT,
@@ -20,10 +20,10 @@ import {
20
20
  findInTreeByCli,
21
21
  getCliModelName,
22
22
  getDefaultModelForCli
23
- } from "./chunk-RZPCGPO7.js";
23
+ } from "./chunk-GCD3OFFM.js";
24
24
  import {
25
25
  getDefaultRegistry
26
- } from "./chunk-WI2CPM6B.js";
26
+ } from "./chunk-K6CUB3IV.js";
27
27
  import {
28
28
  createLogger
29
29
  } from "./chunk-RM3RFAKU.js";
@@ -441,4 +441,4 @@ export {
441
441
  IN_FAMILY_FALLBACK_OPTION,
442
442
  ClaudeCliAdapter
443
443
  };
444
- //# sourceMappingURL=chunk-N627RNSQ.js.map
444
+ //# sourceMappingURL=chunk-6EUYMTVU.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getRandomProvider
3
- } from "./chunk-X3VLHTGF.js";
3
+ } from "./chunk-AJBRMUGK.js";
4
4
  import {
5
5
  getTimeProvider
6
6
  } from "./chunk-RM3RFAKU.js";
@@ -26,4 +26,4 @@ export {
26
26
  generateHyphenId,
27
27
  generateUUID
28
28
  };
29
- //# sourceMappingURL=chunk-KQ74CFQ4.js.map
29
+ //# sourceMappingURL=chunk-6FBREJER.js.map
@@ -1,23 +1,23 @@
1
1
  import {
2
2
  getGlobalRegistry
3
- } from "./chunk-VAXCUWU2.js";
3
+ } from "./chunk-FLIBWADL.js";
4
4
  import {
5
5
  GatewayRediscovery,
6
6
  discoverGatewayOnce,
7
7
  setGatewayRediscovery
8
- } from "./chunk-IKTGQTVH.js";
8
+ } from "./chunk-LD6QCSHT.js";
9
9
  import {
10
10
  GatewayHostRefusedError,
11
11
  buildOpenAICompatAdapters,
12
12
  readOpenAICompatEndpoint,
13
13
  readOpenAICompatEnv
14
- } from "./chunk-KDOUKB7K.js";
14
+ } from "./chunk-CP73UYNV.js";
15
15
  import {
16
16
  hostnameOf
17
- } from "./chunk-ILSLOHGX.js";
17
+ } from "./chunk-UBCGX47E.js";
18
18
  import {
19
19
  getDefaultCliCircuitBreakerRegistry
20
- } from "./chunk-P3RB5EHE.js";
20
+ } from "./chunk-KVFNI2UZ.js";
21
21
  import {
22
22
  createGatewayArmAdapter,
23
23
  gatewayEndpointRejection,
@@ -25,7 +25,7 @@ import {
25
25
  resolveGatewayDefault,
26
26
  setGatewayCatalog,
27
27
  setGatewaySlotCatalog
28
- } from "./chunk-X3VLHTGF.js";
28
+ } from "./chunk-AJBRMUGK.js";
29
29
  import {
30
30
  isEndpointArmId
31
31
  } from "./chunk-DMJLRUDB.js";
@@ -272,7 +272,7 @@ var COMMAND_CATALOG = [
272
272
  },
273
273
  {
274
274
  command: "release-announce",
275
- description: "Generate release announcements (blog, social)",
275
+ description: "Generate blog release announcements",
276
276
  audience: "maintainer"
277
277
  },
278
278
  // ── Internal (hidden everywhere; here for extractor/index completeness) ──
@@ -483,6 +483,7 @@ var PARSE_ARGS_CONFIG = {
483
483
  type: "boolean",
484
484
  default: false
485
485
  },
486
+ channels: { type: "string" },
486
487
  "bandit-stats": {
487
488
  type: "boolean",
488
489
  default: false
@@ -1041,4 +1042,4 @@ export {
1041
1042
  registerGatewayArm,
1042
1043
  wireGateway
1043
1044
  };
1044
- //# sourceMappingURL=chunk-FADXKWDW.js.map
1045
+ //# sourceMappingURL=chunk-7BKOWPKX.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/cli-command-catalog.ts","../src/cli-help-text.ts","../src/cli-types.ts","../src/cli-server-gateway.ts"],"sourcesContent":["/**\n * nexus-agents CLI command catalog (Issue #2135).\n *\n * Single source of truth for every top-level command: name, one-line\n * description, and the *audience* that cares about it. `renderHelp`\n * consumes this to produce tiered output:\n *\n * - Default `nexus-agents --help`: essential + advanced, grouped\n * - `nexus-agents --help --all`: everything, grouped\n *\n * Maintainer-audience commands (benchmarks, release tooling, deep\n * observability) are still fully functional — they just don't clutter\n * the default --help. `nexus-agents <cmd> --help` still works for all\n * of them.\n *\n * @module cli-command-catalog\n */\n\n/** Who the command is aimed at. Drives the default --help filter. */\nexport type CommandAudience = 'essential' | 'advanced' | 'maintainer' | 'internal';\n\n/** One entry per top-level command. */\nexport interface CommandCatalogEntry {\n readonly command: string;\n readonly description: string;\n readonly audience: CommandAudience;\n}\n\n/**\n * Hard cap on the `essential` audience band. Enforced by the `keeps the\n * essential tier small (<=12) so new users are not overwhelmed` test in\n * `cli-command-catalog.test.ts`.\n *\n * Rationale: the default `nexus-agents --help` lists every `essential` entry\n * up front. Past 12 it stops feeling curated — new users start scanning,\n * skipping, and missing the actually-onboarding-critical commands. If you\n * need a 13th, demote something else to `advanced` first.\n *\n * History (#2492): the cap has been tripped silently twice — first by `auth`\n * (deliberate, deserved promotion), second by `usage` (#2469, not reviewed\n * against the cap). The CI test catches it; this comment is the contract.\n */\nexport const ESSENTIAL_AUDIENCE_CAP = 12;\n\n/**\n * All top-level commands, in display order within their audience band.\n *\n * Audience rationale:\n * - **essential**: what a new user needs to install, configure, verify, and\n * run their first task. Capped at 12 entries (`ESSENTIAL_AUDIENCE_CAP`) —\n * see the cap's docstring for the policy. When proposing a 13th, demote\n * an existing entry to `advanced` first.\n * - **advanced**: useful day-to-day but not first-touch (session mgmt,\n * capability inspection, workflow scaffolding, auth token rotation).\n * Telemetry/operator-facing dashboards (e.g. `usage`,\n * `improvement-review`) belong here — operators reach for them after\n * they've been running tasks, not on first install.\n * - **maintainer**: benchmarks, release tooling, self-audits, deep\n * observability dashboards, dogfooding helpers.\n * - **internal**: dev/eval loops that aren't part of the product surface\n * (e2e-eval, routing-ab, memory-benchmark). Hidden from both default\n * `--help` AND `--help --all`. Still present for entrypoint extraction\n * (repo-index / entrypoints.yaml) because they're real CLI commands.\n */\nexport const COMMAND_CATALOG: readonly CommandCatalogEntry[] = [\n // ── Essential ────────────────────────────────────────────────────────────\n {\n command: '(default)',\n description: 'Start MCP server with stdio transport',\n audience: 'essential',\n },\n {\n command: 'hello',\n description: 'Show welcome message and quick start (no API keys needed)',\n audience: 'essential',\n },\n {\n command: 'setup',\n description: 'Configure CLI integration (MCP + .rules + data dirs)',\n audience: 'essential',\n },\n {\n command: 'verify',\n description: 'Check install health (sqlite, adapters, config)',\n audience: 'essential',\n },\n {\n command: 'doctor',\n description: 'Detailed health check; no model completions by default; --live probes models',\n audience: 'essential',\n },\n {\n command: 'config',\n description: 'Manage configuration (init, get, set, list, export, import)',\n audience: 'essential',\n },\n {\n command: 'orchestrate',\n description: 'Execute a task via CLI tools (standalone mode)',\n audience: 'essential',\n },\n {\n command: 'vote',\n // Default panel is 7 roles; `--quick` runs 3 (getVoterRoles in\n // mcp/tools/consensus-vote.ts). Prior drift: \"5-6 agents\" here, \"6 agents\"\n // in HELP_TEXT, \"6 agents by default\" in COMMAND_HELP — all wrong (#3209).\n description: 'Run consensus vote on a proposal (7 agents; --quick uses 3)',\n audience: 'essential',\n },\n {\n command: 'workflow',\n description: 'Manage and run workflow templates (list, run)',\n audience: 'essential',\n },\n {\n command: 'expert',\n description: 'Manage expert agents (list)',\n audience: 'essential',\n },\n {\n command: 'research',\n description: 'Manage research registry (status, add, stats, refresh)',\n audience: 'essential',\n },\n\n // ── Advanced ─────────────────────────────────────────────────────────────\n {\n command: 'tour',\n description:\n 'Guided walkthrough of the four headline tools — no API keys, no quota (#2851). --non-interactive runs straight through.',\n audience: 'advanced',\n },\n {\n command: 'session',\n description: 'Manage session persistence (list, show, export, delete)',\n audience: 'advanced',\n },\n {\n command: 'auth',\n description:\n 'Manage authentication: init/show/rotate MCP tokens; status shows per-CLI auth state',\n audience: 'essential',\n },\n {\n command: 'login',\n description: '[deprecated alias] Soft alias of \"auth status\"; renamed in #2449',\n audience: 'maintainer',\n },\n {\n command: 'usage',\n description:\n 'Cost / usage / quality dashboard from per-call telemetry (#2469). --format=json for scripting.',\n audience: 'advanced',\n },\n {\n command: 'status',\n description: 'At-a-glance project health dashboard',\n audience: 'advanced',\n },\n {\n command: 'capabilities',\n description: 'Show model capabilities matrix',\n audience: 'advanced',\n },\n {\n command: 'mode',\n description: 'Inspect detected mode (server/orchestrator) + signals + reasoning (#3214)',\n audience: 'advanced',\n },\n {\n command: 'jobs',\n description:\n 'Async job-record maintenance (#6224): `prune` deletes terminal records past the 7-day retention window and marks abandoned pending records failed; --dry-run prints the counts only.',\n audience: 'advanced',\n },\n {\n command: 'registry',\n description: 'Inspect + refresh the dynamic model registry (doctor / refresh)',\n audience: 'advanced',\n },\n {\n command: 'migrate',\n description:\n 'Relocate homedir state (sessions, checkpoints, traces, runs, audit, pipeline, tasks) into <repo>/.nexus-agents/ for users adopting NEXUS_REPO_PREFERRED=1. Cross-repo state stays homedir. --dry-run for a no-op plan. Epic #2872.',\n audience: 'advanced',\n },\n {\n command: 'init',\n description:\n 'Initialize portable nexus-agents config in a repo. Flags: --portable (#2305/#2308/#2311), --install / --uninstall (#2311), --gitignore, --mcp-config, --opencode <path> (#2504), --force, --dry-run.',\n audience: 'advanced',\n },\n {\n command: 'review',\n description: 'Review a GitHub PR (dogfooding helper)',\n audience: 'advanced',\n },\n {\n command: 'scaffold',\n description: 'Generate project files from templates',\n audience: 'advanced',\n },\n {\n command: 'validate',\n description: 'Run unified validation (doctor + fitness + config)',\n audience: 'advanced',\n },\n {\n command: 'index',\n description: 'Generate and manage codebase index',\n audience: 'advanced',\n },\n {\n command: 'improvement-review',\n description:\n 'Observability-driven improvement loop (#2402). Surfaces threshold breaches; --file-issues opt-in.',\n audience: 'advanced',\n },\n {\n command: 'model-drift',\n description:\n 'Report models the registry does not know and registry models no source lists (#6625). --json; --file-issue opt-in.',\n audience: 'maintainer',\n },\n {\n command: 'auto-remediate',\n description:\n 'Run one auto-remediation cycle (#3540). OFF unless NEXUS_AUTO_REMEDIATE=audit|enforce; never auto-merges.',\n audience: 'maintainer',\n },\n {\n command: 'remediation-review',\n description:\n 'Review audit-mode selections: list · panel-judge --batch N [--quick] · sample --n 10 [--seed S] · mark --evaluator --sound|--unsound [--sample id] · sign-off --owner · readiness (human, panel and owner-sample judgments + soak-store alarm).',\n audience: 'maintainer',\n },\n\n // ── Maintainer (hidden by default) ───────────────────────────────────────\n {\n command: 'demo',\n description: 'API-free exploration mode (marketing/demo flow)',\n audience: 'maintainer',\n },\n {\n command: 'hooks',\n description: 'Claude CLI hook integration commands',\n audience: 'maintainer',\n },\n {\n command: 'routing-audit',\n description: 'Debug model routing decisions',\n audience: 'maintainer',\n },\n {\n command: 'fitness-audit',\n description: 'Run CLI orchestration fitness score audit',\n audience: 'maintainer',\n },\n {\n command: 'system-review',\n description: 'Automated system review (5-phase checklist)',\n audience: 'maintainer',\n },\n {\n command: 'sprint',\n description: 'Automated sprint planning from open issues',\n audience: 'maintainer',\n },\n {\n command: 'evaluate',\n description: 'Self-evaluation of codebase components',\n audience: 'maintainer',\n },\n {\n command: 'issue',\n description: 'Issue template validation and management',\n audience: 'maintainer',\n },\n {\n command: 'validation',\n description: 'Learning validation dashboard',\n audience: 'maintainer',\n },\n {\n command: 'learning-metrics',\n description: 'Aggregated learning metrics dashboard',\n audience: 'maintainer',\n },\n {\n command: 'visualize',\n description: 'Generate Mermaid diagrams and ASCII dashboards',\n audience: 'maintainer',\n },\n {\n command: 'health',\n description: 'Swarm health metrics dashboard',\n audience: 'maintainer',\n },\n {\n command: 'release-notes',\n description: 'Generate release notes from git commits',\n audience: 'maintainer',\n },\n {\n command: 'release-validate',\n description: 'Run expert swarm validation for releases',\n audience: 'maintainer',\n },\n {\n command: 'release-announce',\n description: 'Generate blog release announcements',\n audience: 'maintainer',\n },\n\n // ── Internal (hidden everywhere; here for extractor/index completeness) ──\n {\n command: 'server',\n // Synonym for the no-arg invocation — `nexus-agents` and\n // `nexus-agents server` both run `handleServerCommand`. Listed here for\n // extractor completeness; humans see `(default)` in --help.\n description: 'Start MCP server with stdio transport (explicit form)',\n audience: 'internal',\n },\n {\n command: 'e2e-eval',\n description: 'E2E evaluation scenario runner (dev loop)',\n audience: 'internal',\n },\n {\n command: 'memory-benchmark',\n description: 'Memory-system benchmark runner (dev loop)',\n audience: 'internal',\n },\n {\n command: 'memory-eval',\n description: 'Comparative memory evaluation benchmark (dev loop)',\n audience: 'internal',\n },\n {\n command: 'routing-ab',\n description: 'A/B comparison of routing strategies (dev loop)',\n audience: 'internal',\n },\n {\n command: 'scenario',\n description: 'Execute a named scenario from the testing framework',\n audience: 'internal',\n },\n {\n command: 'warm-up',\n description: 'Warm the model/adapter caches before a run',\n audience: 'internal',\n },\n];\n\n/**\n * Returns the catalog filtered for `--help` output.\n *\n * - `showAll: false` → essential + advanced (the default `--help` surface)\n * - `showAll: true` → essential + advanced + maintainer (`--help --all`)\n *\n * `internal` audience entries are **always excluded** from human-facing\n * output. They're still reachable via `COMMAND_CATALOG` for extractors that\n * need a complete inventory (repo-index, entrypoints.yaml).\n */\nexport function filterCatalog(showAll: boolean): readonly CommandCatalogEntry[] {\n const visible = COMMAND_CATALOG.filter((e) => e.audience !== 'internal');\n if (showAll) return visible;\n return visible.filter((e) => e.audience !== 'maintainer');\n}\n\n/**\n * Returns every real top-level command, including internal ones, but\n * excluding the `(default)` placeholder (no actual handler). Used by\n * entrypoint extractors and the repo-index generator — #2156.\n */\nexport function catalogForExtractors(): readonly CommandCatalogEntry[] {\n return COMMAND_CATALOG.filter((e) => e.command !== '(default)');\n}\n\n/**\n * Looks up the canonical one-line description for a command from the catalog\n * (the single source of truth — #3209). Returns `undefined` if the command is\n * not cataloged.\n *\n * Used by `cli-command-help.ts` so per-command help (`formatCommandHelp`,\n * `formatAllCommandsHelp`) does not keep a third independent copy of the\n * one-line summary. The richer per-command help (flags, examples) still lives\n * in `COMMAND_HELP`; only the one-liner is single-sourced here.\n */\nexport function getCommandDescription(command: string): string | undefined {\n return COMMAND_CATALOG.find((e) => e.command === command)?.description;\n}\n\n/** Groups entries by audience, preserving catalog order within each group. */\nexport function groupByAudience(\n entries: readonly CommandCatalogEntry[]\n): ReadonlyMap<CommandAudience, readonly CommandCatalogEntry[]> {\n const groups = new Map<CommandAudience, CommandCatalogEntry[]>();\n for (const entry of entries) {\n const existing = groups.get(entry.audience) ?? [];\n existing.push(entry);\n groups.set(entry.audience, existing);\n }\n return groups;\n}\n\nconst AUDIENCE_HEADINGS: Record<CommandAudience, string> = {\n essential: 'Essential — install, configure, run',\n advanced: 'Advanced — day-to-day extras',\n maintainer: 'Maintainer — benchmarks, releases, deep diagnostics',\n // Never rendered (filterCatalog strips internal before renderCommandsSection\n // iterates), but required by the Record<CommandAudience, string> contract.\n internal: 'Internal — dev/eval loops (hidden from --help)',\n};\n\n/**\n * Renders the COMMANDS section of `--help`, grouped and tiered.\n *\n * Output shape (indent-sensitive — consumed verbatim inside `COMMANDS:` block):\n *\n * ```\n * Essential — install, configure, run\n * hello Show welcome message...\n * setup Configure CLI integration...\n *\n * Advanced — day-to-day extras\n * ...\n * ```\n *\n * Trailing hint line (\"Run with --all…\") is appended only when `showAll=false`.\n */\nexport function renderCommandsSection(showAll: boolean): string {\n const filtered = filterCatalog(showAll);\n const groups = groupByAudience(filtered);\n const lines: string[] = [];\n const order: CommandAudience[] = showAll\n ? ['essential', 'advanced', 'maintainer']\n : ['essential', 'advanced'];\n for (const audience of order) {\n const entries = groups.get(audience);\n if (entries === undefined || entries.length === 0) continue;\n lines.push(` ${AUDIENCE_HEADINGS[audience]}`);\n for (const entry of entries) {\n lines.push(` ${entry.command.padEnd(16)} ${entry.description}`);\n }\n lines.push('');\n }\n if (!showAll) {\n lines.push(' Run with --all to show maintainer commands (benchmarks, release tooling).');\n }\n return lines.join('\\n').replace(/\\n+$/, '');\n}\n","/**\n * nexus-agents CLI Help Text\n *\n * Help documentation for the CLI commands and options.\n * Extracted from cli-types.ts to maintain file size limits.\n *\n * The COMMANDS list is NO LONGER hardcoded here (#3209). It is generated from\n * `COMMAND_CATALOG` in `cli-command-catalog.ts` — the single source of truth\n * for each command's one-line description — via `renderCommandsSection`. The\n * non-command sections (USAGE, OPTIONS, EXAMPLES) stay static in\n * `HELP_TEXT_FRAME`. `HELP_TEXT` is that frame with the full (`--all`)\n * catalog-derived COMMANDS block stitched in; `renderHelp({ all: false })`\n * stitches in the audience-filtered block instead.\n *\n * Do not reshape the top-level sections (USAGE / COMMANDS / OPTIONS /\n * EXAMPLES): `indexer/entrypoint-extractor.ts` loads this module by AST and\n * the catalog/help snapshot tests assert their presence. (Command names +\n * descriptions for the entrypoint index come from the catalog via\n * `catalogForExtractors()`, not from parsing this text — #2156.)\n *\n * @module cli-help-text\n */\n\nimport { renderCommandsSection } from './cli-command-catalog.js';\n\n/**\n * Placeholder token inside {@link HELP_TEXT_FRAME} that the renderers replace\n * with the catalog-derived COMMANDS block. Distinct from any real help content\n * so the single substitution is unambiguous.\n */\nconst COMMANDS_PLACEHOLDER = '__COMMANDS__';\n\n/**\n * Static help frame: everything except the COMMANDS list, which is a single\n * {@link COMMANDS_PLACEHOLDER} token filled at render time from the catalog.\n */\nconst HELP_TEXT_FRAME = `\nnexus-agents - Intelligent orchestration platform for AI coding tools\n\nUSAGE:\n nexus-agents [OPTIONS]\n nexus-agents [COMMAND] [SUBCOMMAND] [OPTIONS]\n\nCOMMANDS:\n${COMMANDS_PLACEHOLDER}\n\nOPTIONS:\n -h, --help Show this help message\n -v, --version Show version information\n --verbose Enable verbose output\n --interactive Start interactive REPL mode\n -m, --mode <mode> Server mode: server, orchestrator (default: server)\n - server: MCP server only (for Claude CLI integration)\n - orchestrator: CLI orchestrator (calls Gemini/Codex CLIs)\n\nFor command-specific options, run: nexus-agents <command> --help\n(For example: nexus-agents vote --help)\n\nEXAMPLES:\n nexus-agents hello Show welcome + quick start (no API keys needed)\n nexus-agents setup --interactive Run guided setup wizard\n nexus-agents verify Quick install check (run first)\n nexus-agents auth status Per-CLI auth state + login fix instructions\n nexus-agents doctor Detailed CLI/adapter health check\n nexus-agents orchestrate -t \"...\" Run a one-off task via the CLI orchestrator\n nexus-agents vote --quick -p \"X\" 3-agent consensus vote on proposal \"X\"\n nexus-agents --help --all Show every command (incl. maintainer tools)\n\nFor more information, visit: https://github.com/nexus-substrate/nexus-agents\n`.trim();\n\n/** Fills the COMMANDS placeholder in the frame with a catalog-derived block. */\nfunction composeHelp(commandsSection: string): string {\n return HELP_TEXT_FRAME.replace(COMMANDS_PLACEHOLDER, commandsSection);\n}\n\n/**\n * Full (`--all`) help text, with the COMMANDS list generated from\n * `COMMAND_CATALOG` (single source of truth — #3209). Equivalent to\n * `renderHelp({ all: true })`; exported for callers/tests that want the\n * canonical full view as a value.\n */\nexport const HELP_TEXT = composeHelp(renderCommandsSection(true));\n\n/**\n * Renders the top-level help output.\n *\n * @param opts.all - If true, returns the full view (includes maintainer\n * commands like benchmarks and release tooling). If false, returns a tiered\n * view that hides maintainer commands — surfaced via `--all` hint at the\n * bottom of the COMMANDS block. Both views derive the command list (and its\n * one-line descriptions) from `COMMAND_CATALOG`.\n */\nexport function renderHelp(opts: { all: boolean }): string {\n if (opts.all) return HELP_TEXT;\n return composeHelp(renderCommandsSection(false));\n}\n","/* eslint-disable max-lines -- canonical CLI types + parseArgs config, intentionally centralized */\n/**\n * nexus-agents CLI Types\n *\n * Type definitions and constants for the CLI.\n *\n * @module cli-types\n */\n\nimport type { ServerMode } from './cli/index.js';\nimport type {\n ErrorPolicy,\n VoteThreshold,\n VotingStrategy,\n} from './mcp/tools/consensus-vote-types.js';\nimport type { NoQuorumPolicy } from './cli/vote-types.js';\nimport type { VoteRecordPrBinding } from './audit/vote-record.js';\nimport type { CommandResult } from './core/command-result.js';\nimport { VOTE_TIMEOUTS } from './config/timeouts.js';\nimport type { CustomApiConfig } from './cli/command-options-types.js';\n\nexport type {\n CustomApiConfig,\n BaseCliOptions,\n SetupCliOptions,\n VoteCliOptions,\n OrchestrateCliOptions,\n DoctorCliOptions,\n InitCliOptions,\n ImprovementReviewCliOptions,\n RemediationReviewCliOptions,\n LearningMetricsCliOptions,\n ModelDriftCliOptions,\n HealthCliOptions,\n JobsCliOptions,\n CommandArgs,\n SetupCommandArgs,\n VoteCommandArgs,\n OrchestrateCommandArgs,\n DoctorCommandArgs,\n InitCommandArgs,\n ImprovementReviewCommandArgs,\n RemediationReviewCommandArgs,\n LearningMetricsCommandArgs,\n ModelDriftCommandArgs,\n HealthCommandArgs,\n JobsCommandArgs,\n} from './cli/command-options-types.js';\n\n// Re-export help text from extracted module for backward compatibility\nexport { HELP_TEXT } from './cli-help-text.js';\n\n/**\n * Exit codes for the CLI.\n */\nexport const EXIT_CODES = {\n SUCCESS: 0,\n SERVER_START_FAILED: 1,\n SHUTDOWN_ERROR: 2,\n INVALID_ARGS: 3,\n /** Subcommand is stubbed / advertised but not implemented (#2727). */\n NOT_IMPLEMENTED: 4,\n} as const;\n\n/**\n * A {@link CommandResult} that also carries the process exit code the\n * dispatcher should terminate with (#3210).\n *\n * Handlers RETURN this instead of calling `process.exit` inline, and the\n * single `process.exit` lives at the dispatcher boundary (see `exitWith`).\n * This makes exit behavior unit-testable (assert the returned `exitCode`)\n * without mocking `process.exit`, and centralizes the one process-killing\n * call so its policy is consistent across commands.\n */\nexport interface CliExitResult extends CommandResult {\n /** The exit code the CLI process should terminate with. */\n readonly exitCode: number;\n}\n\n/**\n * Builds a {@link CliExitResult} from a raw exit code, deriving `success`\n * from the conventional `0 == success` mapping. Optional human-readable\n * `message` is preserved for callers/tests.\n */\nexport function cliExit(exitCode: number, message?: string): CliExitResult {\n return message === undefined\n ? { success: exitCode === EXIT_CODES.SUCCESS, exitCode }\n : { success: exitCode === EXIT_CODES.SUCCESS, exitCode, message };\n}\n\n/**\n * Maps a handler's `0|non-0` status to the canonical success/failure exit\n * codes (`SUCCESS` / `SERVER_START_FAILED`) used by the bulk of CLI\n * commands, then wraps it in a {@link CliExitResult}. Centralizes the\n * `exitCode === 0 ? SUCCESS : SERVER_START_FAILED` ternary that was\n * duplicated across every handler.\n */\nexport function cliExitFromStatus(status: number, message?: string): CliExitResult {\n return cliExit(\n status === EXIT_CODES.SUCCESS ? EXIT_CODES.SUCCESS : EXIT_CODES.SERVER_START_FAILED,\n message\n );\n}\n\n/**\n * Explicit sentinel a handler RETURNS to signal \"I own my own process\n * lifecycle — do NOT force an exit at the dispatcher\" (#3942).\n *\n * Before #3942 this was conveyed by returning `undefined`/`void`, which\n * conflated *intentional* delegation (the MCP stdio server runs until its\n * transport closes, then exits itself) with an *accidentally dropped*\n * return on an error path. A missing return was not a compile error, so\n * `exitWith` would silently no-op and a non-zero exit code would be lost.\n *\n * By typing every handler as {@link CliHandlerResult} (a union that\n * excludes `undefined`/`void`), a handler that falls off the end without\n * returning is a TS2366 compile error (\"Function lacks ending return\n * statement…\"). Lifecycle-owning handlers RETURN this sentinel explicitly,\n * making delegation a deliberate, checked choice.\n *\n * Implemented as a branded const so it is a single unique value (not just\n * any object), and `exitWith` can match it by identity.\n */\nexport const LIFECYCLE_DELEGATED = {\n __lifecycleDelegated: true,\n} as const;\n\n/**\n * The type of {@link LIFECYCLE_DELEGATED}. A handler whose return type\n * includes this signals lifecycle delegation; see the sentinel docs.\n */\nexport type LifecycleDelegated = typeof LIFECYCLE_DELEGATED;\n\n/**\n * The exhaustive return contract for every CLI command handler dispatched\n * from `cli-commands.ts` (#3942). A handler EITHER returns a\n * {@link CliExitResult} (the dispatcher exits with its `exitCode`) OR the\n * {@link LIFECYCLE_DELEGATED} sentinel (the dispatcher does nothing because\n * the handler owns the process lifecycle). There is deliberately NO\n * `undefined`/`void` member: that is what makes a dropped return a compile\n * error rather than a silently-swallowed exit code.\n */\nexport type CliHandlerResult = CliExitResult | LifecycleDelegated;\n\n/**\n * Type guard distinguishing the {@link LIFECYCLE_DELEGATED} sentinel from a\n * {@link CliExitResult}. Used by `exitWith` to handle the handler-result\n * union exhaustively without a `void` fallthrough.\n *\n * Discriminates on the brand property rather than reference identity so the\n * guard is robust across module-boundary/test-mock copies of the sentinel\n * while remaining unambiguous (a `CliExitResult` never carries this brand).\n */\nexport function isLifecycleDelegated(result: CliHandlerResult): result is LifecycleDelegated {\n return (\n (result as Partial<LifecycleDelegated>).__lifecycleDelegated === true && !('exitCode' in result)\n );\n}\n\n/**\n * CLI command types that can be executed.\n */\nexport type CliCommand =\n | 'server'\n | 'help'\n | 'version'\n | 'hello'\n | 'config'\n | 'expert'\n | 'workflow'\n | 'doctor'\n | 'verify'\n | 'review'\n | 'routing-audit'\n | 'orchestrate'\n | 'system-review'\n | 'vote'\n | 'index'\n | 'research'\n | 'validation'\n | 'learning-metrics'\n | 'setup'\n | 'hooks'\n | 'demo'\n | 'sprint'\n | 'session'\n | 'evaluate'\n | 'issue'\n | 'fitness-audit'\n | 'release-notes'\n | 'release-validate'\n | 'release-announce'\n | 'scaffold'\n | 'visualize'\n | 'capabilities'\n | 'status'\n | 'memory-benchmark'\n | 'auth'\n | 'scenario'\n | 'warm-up'\n | 'e2e-eval'\n | 'routing-ab'\n | 'memory-eval'\n | 'health'\n | 'init'\n | 'validate'\n | 'registry'\n | 'login'\n | 'usage'\n | 'migrate'\n | 'tour'\n | 'improvement-review'\n | 'model-drift'\n | 'auto-remediate'\n | 'remediation-review'\n | 'mode'\n | 'jobs';\n\n/**\n * Parsed CLI arguments and command.\n */\nexport interface ParsedCliArgs {\n command: CliCommand;\n subcommand?: string;\n options: {\n help: boolean;\n version: boolean;\n verbose: boolean;\n interactive: boolean;\n // Tiered --help output (Issue #2135)\n all: boolean;\n mode: ServerMode;\n output?: string;\n force: boolean;\n format: string;\n input?: string;\n dryRun: boolean;\n channels?: string;\n banditStats: boolean;\n // Review command options\n setup: boolean;\n skipChecks: boolean;\n // Orchestrate command options (also used in orchestrator mode)\n task?: string;\n model?: string;\n maxTokens?: number;\n maxCostUsd?: number;\n engine?: 'router' | 'puppeteer';\n learn?: boolean;\n policyPath?: string;\n maxSteps?: number;\n // System review command options\n createIssue: boolean;\n fix: boolean;\n // Vote command options\n proposal?: string;\n /** File inlined into every voter proposal (--artifact-file). */\n artifactFile?: string;\n /** Legacy spelling of the bar; `strategy` wins when both are given (#6227). */\n threshold?: VoteThreshold;\n /** #6227 — `--strategy`, the tool's own enum, passed to the engine as the MCP tool passes it. */\n strategy?: VotingStrategy;\n /** #6227 — `--ratifies-pr <n>@<sha>`, already parsed into the record's binding shape. */\n ratifiesPr?: VoteRecordPrBinding;\n quick: boolean;\n timeoutMs?: number;\n /** #2630 — see `applyErrorPolicy`. */\n errorPolicy?: ErrorPolicy;\n /** #4135 — how the vote command maps a `no_quorum` decision. Default `fail`. */\n onNoQuorum?: NoQuorumPolicy;\n /** #4472 / #4941 — repeatable `--option`, the named alternatives to tally. */\n options?: string[];\n /** #6110 — `--project`, the project the panel judges (replaces `nexus-agents` in the prompts). */\n project?: string;\n // Learning-metrics and validation command options\n period?: string;\n export?: string;\n noTrends?: boolean;\n // Setup command options (Issue #363, #416, #1252, #1253, #1259, #1263)\n nonInteractive: boolean;\n skipMcp: boolean;\n skipRules: boolean;\n skipHooks: boolean;\n skipConfig: boolean;\n skipOpencode: boolean;\n skipCodex: boolean;\n scope?: 'user' | 'project';\n // Setup --custom-api for OpenAI-compatible gateway configuration (#2124, #5129)\n customApiConfig?: CustomApiConfig;\n customApi?: string;\n customApiKey?: string;\n customModel?: string;\n // Demo command options\n mock: boolean;\n // Doctor command options (Issue #1031)\n deep: boolean;\n /**\n * Run the `serves` readiness level: a real completion per adapter (#4376).\n *\n * Opt-in because it spends generation quota. The default run proves\n * `installed` and `authenticated` only, and reports `serves` as\n * not-attempted rather than assuming it.\n */\n live: boolean;\n /** `doctor --gateway` (#6609): print the measured gateway section. */\n gateway: boolean;\n /** `doctor --probe` (#6609): one completion per gateway family; spends tokens. */\n probe: boolean;\n // Registry command options (#2179)\n json?: boolean;\n source?: string;\n /** model-drift `--file-issue` (#6625): open one issue per new model with `gh`. */\n fileIssue?: boolean;\n // init --portable command options (#2305)\n portable?: boolean;\n gitignore?: boolean;\n // init --portable --mcp-config flag (#2308)\n mcpConfig?: boolean;\n // init --portable --install / --uninstall flags (#2311)\n install?: boolean;\n uninstall?: boolean;\n // init --opencode <path> flag (#2504)\n opencode?: string;\n validate?: boolean;\n // remediation-review command options (#3765)\n evaluator?: string;\n owner?: string;\n note?: string;\n sound?: boolean;\n unsound?: boolean;\n batch?: string;\n n?: string;\n seed?: string;\n sample?: string;\n // improvement-review command options (#2444, #6636)\n 'file-issues'?: boolean;\n fileIssues?: boolean;\n 'lookback-days'?: string;\n lookbackDays?: string;\n 'min-sample-size'?: string;\n minSampleSize?: string;\n 'fitness-floor'?: string;\n fitnessFloor?: string;\n // session command options (#6693)\n limit?: string;\n markdown?: boolean;\n // usage command options (#6693)\n since?: string;\n until?: string;\n // validation command options (#6693)\n 'task-type'?: string;\n taskType?: string;\n 'min-sample'?: string;\n minSample?: string;\n // Subcommand flags the parser still rejected after #6705 (#6693 follow-up).\n /** `sprint --vote`, `research review|prioritize --vote`. */\n vote?: boolean;\n /** `research discover|review|prioritize|autofile --topic=<t>`. */\n topic?: string;\n /** `research status --status=<s>`. */\n status?: string;\n /** `research review --create-issues`. */\n createIssues?: boolean;\n /** `research autofile --max=<n>`. */\n max?: number;\n /** `research index --generate | --check`. */\n generate?: boolean;\n check?: boolean;\n /** `research index --validate --strict`, `release-validate --strict`. */\n strict?: boolean;\n /** `research index --silent`. */\n silent?: boolean;\n /** `research index --no-check-files`. */\n noCheckFiles?: boolean;\n /** `release-validate --skip <validator>` (repeatable). */\n skip?: string[];\n };\n positionals: string[];\n}\n\n/**\n * parseArgs configuration for the CLI.\n * (Source: Node.js 22.x util.parseArgs documentation)\n */\nexport const PARSE_ARGS_CONFIG = {\n options: {\n help: {\n type: 'boolean' as const,\n short: 'h',\n default: false,\n },\n version: {\n type: 'boolean' as const,\n short: 'v',\n default: false,\n },\n verbose: {\n type: 'boolean' as const,\n default: false,\n },\n interactive: {\n type: 'boolean' as const,\n default: false,\n },\n // Tiered --help output (Issue #2135): `--help --all` unhides maintainer commands\n all: {\n type: 'boolean' as const,\n default: false,\n },\n mode: {\n type: 'string' as const,\n short: 'm',\n default: 'server',\n },\n output: {\n type: 'string' as const,\n short: 'o',\n },\n force: {\n type: 'boolean' as const,\n short: 'f',\n default: false,\n },\n format: {\n type: 'string' as const,\n default: 'table',\n },\n input: {\n type: 'string' as const,\n short: 'i',\n },\n 'dry-run': {\n type: 'boolean' as const,\n default: false,\n },\n channels: { type: 'string' as const },\n 'bandit-stats': {\n type: 'boolean' as const,\n default: false,\n },\n // Review command options\n setup: {\n type: 'boolean' as const,\n default: false,\n },\n 'skip-checks': {\n type: 'boolean' as const,\n default: false,\n },\n // Orchestrate command options (also used in orchestrator mode)\n task: {\n type: 'string' as const,\n short: 't',\n },\n model: {\n type: 'string' as const,\n },\n 'max-tokens': {\n type: 'string' as const,\n },\n 'max-cost-usd': {\n type: 'string' as const,\n },\n // Orchestrate engine options (Issue #386)\n engine: {\n type: 'string' as const,\n default: 'router',\n },\n learn: {\n type: 'boolean' as const,\n default: false,\n },\n 'policy-path': {\n type: 'string' as const,\n },\n 'max-steps': {\n type: 'string' as const,\n },\n // System review command options\n 'create-issue': {\n type: 'boolean' as const,\n default: false,\n },\n fix: {\n type: 'boolean' as const,\n default: false,\n },\n // Vote command options\n proposal: {\n type: 'string' as const,\n short: 'p',\n },\n // Repeatable. No short letter: every free one is taken, and the two\n // collisions that already existed silently bound the wrong option (#4922).\n option: {\n type: 'string' as const,\n multiple: true as const,\n },\n // No `short`. `parseArgs` takes one options object for every command, so\n // a short letter is global: `-t` was already `task`, which won, and\n // `vote -t supermajority` silently ran a simple-majority vote. Long form\n // only — `cli-types.test.ts` pins that no two options share a letter.\n threshold: {\n type: 'string' as const,\n },\n // #6227 — the bar as the tool spells it. `threshold` is the legacy spelling;\n // the engine's `resolveStrategy` lets `strategy` win when both are given.\n strategy: {\n type: 'string' as const,\n },\n 'artifact-file': {\n type: 'string' as const,\n },\n // #6227 — `<pr>@<40-hex sha>`: binds the record to a governor-path PR for\n // `scripts/append-ratification-record.ts`. Validated in `buildVoteOptions`.\n 'ratifies-pr': {\n type: 'string' as const,\n },\n quick: {\n type: 'boolean' as const,\n short: 'q',\n default: false,\n },\n // #6236 — seconds, read from the same constant `vote --help` renders and\n // `runVote` falls back to. A hard-coded '90' here ran every seat at less\n // than a third of the #1640 budget while the help said 300.\n timeout: {\n type: 'string' as const,\n default: String(VOTE_TIMEOUTS.defaultMs / 1000),\n },\n // #2630 — error policy for the vote command.\n 'error-policy': {\n type: 'string' as const,\n },\n // #4135 — how the vote command maps a no_quorum decision (fail|exit2|retry).\n 'on-no-quorum': {\n type: 'string' as const,\n },\n // #6110 — the project the voter prompts name; derived from the cwd when absent.\n project: {\n type: 'string' as const,\n },\n // Learning-metrics command options\n // No `short` — `-p` is `proposal`, which was declared first and won. See\n // the note on `threshold`.\n period: {\n type: 'string' as const,\n },\n export: {\n type: 'string' as const,\n },\n 'no-trends': {\n type: 'boolean' as const,\n default: false,\n },\n // Setup command options (Issue #363)\n 'non-interactive': {\n type: 'boolean' as const,\n default: false,\n },\n 'skip-mcp': {\n type: 'boolean' as const,\n default: false,\n },\n 'skip-rules': {\n type: 'boolean' as const,\n default: false,\n },\n 'skip-hooks': {\n type: 'boolean' as const,\n default: false,\n },\n 'skip-config': {\n type: 'boolean' as const,\n default: false,\n },\n 'skip-opencode': {\n type: 'boolean' as const,\n default: false,\n },\n 'skip-codex': {\n type: 'boolean' as const,\n default: false,\n },\n scope: {\n type: 'string' as const,\n default: 'user',\n },\n // Setup --custom-api for OpenAI-compatible gateway configuration (#2124)\n 'custom-api': {\n type: 'string' as const,\n },\n 'custom-api-key': {\n type: 'string' as const,\n },\n 'custom-model': {\n type: 'string' as const,\n },\n // Demo command options\n mock: {\n type: 'boolean' as const,\n default: false,\n },\n // Doctor command options (Issue #1031)\n deep: {\n type: 'boolean' as const,\n default: false,\n },\n // Doctor live readiness probe (#4376)\n live: {\n type: 'boolean' as const,\n default: false,\n },\n // Doctor gateway section and opt-in completion probe (#6609)\n gateway: {\n type: 'boolean' as const,\n default: false,\n },\n probe: {\n type: 'boolean' as const,\n default: false,\n },\n // Registry command options (#2179)\n json: {\n type: 'boolean' as const,\n default: false,\n },\n // model-drift command option (#6625)\n 'file-issue': {\n type: 'boolean' as const,\n default: false,\n },\n source: {\n type: 'string' as const,\n },\n // init --portable command options (#2305)\n portable: {\n type: 'boolean' as const,\n default: false,\n },\n gitignore: {\n type: 'boolean' as const,\n default: false,\n },\n // init --portable --mcp-config flag (#2308)\n 'mcp-config': {\n type: 'boolean' as const,\n default: false,\n },\n // init --portable --install / --uninstall flags (#2311)\n install: {\n type: 'boolean' as const,\n default: false,\n },\n uninstall: {\n type: 'boolean' as const,\n default: false,\n },\n // improvement-review command options (#2444)\n 'lookback-days': {\n type: 'string' as const,\n },\n 'file-issues': {\n type: 'boolean' as const,\n default: false,\n },\n 'min-sample-size': {\n type: 'string' as const,\n },\n 'fitness-floor': {\n type: 'string' as const,\n },\n // init --opencode <path> flag (#2504)\n opencode: {\n type: 'string' as const,\n },\n validate: {\n type: 'boolean' as const,\n default: false,\n },\n // remediation-review command options (#3765)\n evaluator: {\n type: 'string' as const,\n },\n owner: {\n type: 'string' as const,\n },\n note: {\n type: 'string' as const,\n },\n sound: {\n type: 'boolean' as const,\n default: false,\n },\n unsound: {\n type: 'boolean' as const,\n default: false,\n },\n batch: { type: 'string' as const },\n n: { type: 'string' as const },\n seed: { type: 'string' as const },\n sample: { type: 'string' as const },\n // session command options (#6693)\n limit: {\n type: 'string' as const,\n },\n markdown: {\n type: 'boolean' as const,\n default: false,\n },\n // usage command options (#6693)\n since: {\n type: 'string' as const,\n },\n until: {\n type: 'string' as const,\n },\n // validation command options (#6693)\n 'task-type': {\n type: 'string' as const,\n },\n 'min-sample': {\n type: 'string' as const,\n },\n // #6693 follow-up — subcommand flags that usage text advertised and\n // handlers read, still rejected after #6705. Forwarded by\n // `buildSubcommandFlagOptions` (cli/subcommand-flag-options.ts). No short\n // letters: a short letter is global (see the note on `threshold`).\n vote: { type: 'boolean' as const, default: false },\n topic: { type: 'string' as const },\n status: { type: 'string' as const },\n 'create-issues': { type: 'boolean' as const, default: false },\n max: { type: 'string' as const },\n generate: { type: 'boolean' as const, default: false },\n check: { type: 'boolean' as const, default: false },\n strict: { type: 'boolean' as const, default: false },\n silent: { type: 'boolean' as const, default: false },\n 'no-check-files': { type: 'boolean' as const, default: false },\n skip: { type: 'string' as const, multiple: true as const },\n },\n allowPositionals: true,\n strict: true,\n} as const;\n\n/**\n * Every command name {@link isValidCommand} accepts. Exported so the parity\n * gate (`command-parity.test.ts`, #3212) can assert it stays consistent with\n * the real dispatch tables and `COMMAND_CATALOG`, rather than trusting the\n * `isValidCommand` predicate alone.\n */\nexport const VALID_COMMANDS: readonly CliCommand[] = [\n 'server',\n 'help',\n 'version',\n 'hello',\n 'config',\n 'expert',\n 'workflow',\n 'doctor',\n 'verify',\n 'review',\n 'routing-audit',\n 'orchestrate',\n 'system-review',\n 'vote',\n 'index',\n 'research',\n 'validation',\n 'learning-metrics',\n 'setup',\n 'hooks',\n 'demo',\n 'sprint',\n 'session',\n 'evaluate',\n 'issue',\n 'fitness-audit',\n 'release-notes',\n 'release-validate',\n 'release-announce',\n 'scaffold',\n 'visualize',\n 'capabilities',\n 'status',\n 'memory-benchmark',\n 'auth',\n 'scenario',\n 'warm-up',\n 'e2e-eval',\n 'routing-ab',\n 'memory-eval',\n 'health',\n 'init',\n 'validate',\n 'registry',\n 'login',\n 'usage',\n 'improvement-review',\n 'model-drift',\n 'migrate',\n 'tour',\n 'auto-remediate',\n 'remediation-review',\n 'mode',\n 'jobs',\n];\n\n/**\n * Checks if a string is a valid CLI command.\n */\nexport function isValidCommand(value: string): value is CliCommand {\n return (VALID_COMMANDS as readonly string[]).includes(value);\n}\n","/**\n * Gateway adapter bootstrap (#2502, child 2 of epic #2500).\n *\n * The OpenAI-compatible gateway adapter (`adapters/openai-compat-adapter.ts`,\n * #2468) was implemented but never wired into the runtime. This module\n * closes that loop: at MCP-server startup, when `NEXUS_OPENAI_COMPAT_URL`\n * + `NEXUS_OPENAI_COMPAT_KEY` are set, we discover the gateway's models\n * and produce a single `IModelAdapter` that orchestrator/expert tools can\n * use directly. In sandbox mode (#2501), we fail-fast on misconfiguration\n * because there's no human at a CLI prompt to recover.\n *\n * @module cli-server-gateway\n */\n\nimport type { ILogger, IModelAdapter } from './core/index.js';\nimport {\n readOpenAICompatEndpoint,\n readOpenAICompatEnv,\n buildOpenAICompatAdapters,\n} from './adapters/openai-compat-adapter.js';\nimport { createGatewayArmAdapter } from './adapters/gateway-arm-adapter.js';\nimport { discoverGatewayOnce } from './adapters/gateway-discovery.js';\nimport {\n GatewayHostRefusedError,\n type GatewayHostRefused,\n} from './adapters/gateway-host-status.js';\nimport { GatewayRediscovery, setGatewayRediscovery } from './adapters/gateway-rediscovery.js';\nimport { setGatewayCatalog } from './adapters/sdk/gateway-catalog.js';\nimport {\n logGatewaySlotMapping,\n resolveGatewayDefault,\n setGatewaySlotCatalog,\n} from './adapters/gateway-family-slots.js';\nimport { gatewayEndpointRejection } from './adapters/sdk/gateway-cost.js';\nimport { hostnameOf } from './adapters/sdk/gateway-env.js';\nimport type { IResilientAdapter } from './adapters/resilient-adapter-types.js';\nimport { getDefaultCliCircuitBreakerRegistry } from './cli-adapters/cli-circuit-breaker.js';\nimport { isEndpointArmId, type EndpointArmId } from './cli-adapters/types-core.js';\nimport { detectSandbox } from './config/sandbox-detection.js';\nimport { getGlobalRegistry } from './adapters/unified-registry.js';\nimport { parseBoolEnv } from './config/defaults-env.js';\nimport { EXIT_CODES } from './cli-types.js';\n\n/**\n * Wire ALL discovered gateway adapters — one per model the gateway serves\n * (#4040), so the voter path can round-robin roles across distinct models\n * (per-role diversity, all in-process).\n *\n * Behavioural matrix:\n *\n * | Sandbox | Env vars | Probe | Outcome |\n * | :------ | :------- | :------ | :--------------------------------------- |\n * | active | unset | n/a | exit(SERVER_START_FAILED) |\n * | active | set | fails | exit(SERVER_START_FAILED) with HTTP info |\n * | active | set | succeed | log + return every discovered adapter |\n * | inactive| unset | n/a | return undefined (CLI flow handles it) |\n * | inactive| set | fails | log warning + return undefined |\n * | inactive| set | succeed | log + return every discovered adapter |\n *\n * A gateway listing 0 models is treated as a failed probe. Which adapter a\n * tool uses by default is {@link resolveDefaultModelAdapter}'s decision, not\n * list order.\n */\nexport async function tryWireGatewayAdapters(\n logger: ILogger\n): Promise<readonly IModelAdapter[] | undefined> {\n return (await wireGatewayOnce(logger)).adapters;\n}\n\n/** One wiring attempt's adapters, and whether a later attempt could succeed. */\ninterface WiringOutcome {\n readonly adapters: readonly IModelAdapter[] | undefined;\n readonly retryable: boolean;\n}\n\n/**\n * One wiring attempt. `retryable` is true when a gateway is configured but\n * the probe failed for a reason that can clear on its own — unreachable,\n * error status, zero models — and false when retrying cannot help: not\n * configured, or refused by the private-address guard (allowing it is an env\n * change, which needs a restart). Lazy re-discovery (#6608) arms only on\n * `retryable`.\n */\nasync function wireGatewayOnce(logger: ILogger): Promise<WiringOutcome> {\n const sandboxActive = detectSandbox().active;\n const env = readOpenAICompatEnv();\n if (env === null) {\n handleMissingEnv(logger, sandboxActive);\n noticeCliSubprocessFallback(logger);\n return { adapters: undefined, retryable: false };\n }\n\n // The process's one probe (#4392): a lazy discovery that ran first is\n // reused, never repeated, and a later lazy call reuses this one.\n const result = await discoverGatewayOnce(logger);\n if (result === null) {\n // env-was-set guard; build contract allows it\n noticeCliSubprocessFallback(logger);\n return { adapters: undefined, retryable: false };\n }\n if (!result.ok && result.error instanceof GatewayHostRefusedError) {\n handleHostRefused(logger, sandboxActive, result.error.status);\n noticeCliSubprocessFallback(logger);\n return { adapters: undefined, retryable: false };\n }\n if (!result.ok) {\n handleProbeFailure(logger, sandboxActive, result.error.message);\n noticeCliSubprocessFallback(logger);\n return { adapters: undefined, retryable: true };\n }\n if (result.value.length === 0) {\n handleZeroModels(logger, sandboxActive);\n noticeCliSubprocessFallback(logger);\n return { adapters: undefined, retryable: true };\n }\n\n // Log the discovered model IDs at info level — operators want to confirm\n // the gateway's catalog matches what they configured upstream. The API\n // key never reaches logs (env-only read), and neither does the full base\n // URL — it can carry userinfo — only its host (#4392 increment 3).\n logger.info('OpenAI-compatible gateway wired', {\n host: hostnameOf(env.baseUrl),\n modelCount: result.value.length,\n models: result.value.map((a) => a.modelId),\n });\n return { adapters: result.value, retryable: false };\n}\n\n/**\n * One-time operator notice (#4255): whenever no in-process gateway ends up\n * wired — env unset, probe failed, or the gateway listed 0 models — voter\n * and consensus calls fall through to the CLI-subprocess round-robin path\n * (`voter-agents.ts` `getAvailableClis`). That path is slower (~90s wall\n * time observed) and depends on each CLI's own auth/quota, but nothing told\n * the operator a faster in-process option exists (#4040). Logged once per\n * process via {@link cliSubprocessFallbackNoticeLogged} so a busy startup\n * (or repeated calls in tests) can't spam it.\n */\nlet cliSubprocessFallbackNoticeLogged = false;\n\nfunction noticeCliSubprocessFallback(logger: ILogger): void {\n if (cliSubprocessFallbackNoticeLogged) return;\n cliSubprocessFallbackNoticeLogged = true;\n logger.info(\n 'No in-process gateway is configured, so voter/consensus calls will spawn CLI ' +\n \"subprocesses (slower per-vote startup, subject to each CLI's own auth/quota). \" +\n 'Set NEXUS_OPENAI_COMPAT_URL and NEXUS_OPENAI_COMPAT_KEY to route voters through ' +\n 'an OpenAI-compatible gateway in-process instead (lower latency, no subprocess spawn).'\n );\n}\n\n/** Test-only: reset the one-time notice guard so repeated tests can re-trigger it. */\nexport function _resetCliSubprocessFallbackNotice(): void {\n cliSubprocessFallbackNoticeLogged = false;\n}\n\n/**\n * The default model adapter. With a gateway configured (#2502/#4040) it is the\n * catalogue's ranked default, `resolveGatewayDefault` (#6651) — the same rule\n * the registry's unpinned default uses, so the two cannot name different\n * models, and listing order (arbitrary, #6606) does not decide it. When that\n * rule resolves nothing (no catalogue registered, or no chat model in it) the\n * primary gateway model is kept, as before. With no gateway it is the\n * CLI-registry default. The registry is typed structurally so this stays free\n * of the adapter-registry import.\n */\nexport function resolveDefaultModelAdapter(\n gatewayAdapters: readonly IModelAdapter[] | undefined,\n adapterRegistry: { getDefault(): IModelAdapter }\n): IModelAdapter {\n const primary = gatewayAdapters?.[0];\n if (primary === undefined) return adapterRegistry.getDefault();\n const ranked = resolveGatewayDefault();\n return ranked.kind === 'resolved' ? ranked.adapter : primary;\n}\n\n/**\n * Register the discovered gateway models as ONE `api:<endpoint>` arm in the\n * adapter registry (#4392 increment 2, step 2), in EVERY billing mode — the\n * arm is what the shared breaker, the `NEXUS_GATEWAY_COST` declaration and\n * (once #6291 widens the routing ids) routing key on. `registerApiArm` warns\n * when the arm's cost is undeclared. The per-model adapters keep flowing to\n * the voter tools unchanged; this adds the arm beside them.\n *\n * Returns the arm id, or `undefined` when nothing was registered: no gateway\n * (`adapters` undefined or empty — the named empty case, logged at debug), or\n * an `endpoint` that is not a valid endpoint id (the env schema already\n * reported it; a garbage arm id is never minted from it).\n */\nexport function registerGatewayArm(\n adapters: readonly IModelAdapter[] | undefined,\n endpoint: string,\n registry: {\n registerApiArm(arm: EndpointArmId, adapter: IResilientAdapter): void;\n getLogger(): ILogger;\n }\n): EndpointArmId | undefined {\n const logger = registry.getLogger();\n if (adapters === undefined || adapters.length === 0) {\n logger.debug('No gateway adapters discovered; no api: arm registered');\n return undefined;\n }\n const armId = `api:${endpoint}`;\n const rejection = gatewayEndpointRejection(endpoint);\n if (rejection !== undefined || !isEndpointArmId(armId)) {\n // Not echoed: the likely mistake is a pasted URL, which can carry a key.\n logger.warn('Gateway endpoint is not a valid gateway endpoint; no api: arm registered', {\n reason: rejection ?? 'not a valid endpoint id',\n });\n return undefined;\n }\n registry.registerApiArm(\n armId,\n createGatewayArmAdapter(armId, adapters, {\n circuitBreakerRegistry: getDefaultCliCircuitBreakerRegistry(),\n logger,\n })\n );\n // Publish only after registration succeeds. The new wrapper already retains\n // the catalogue, so replacing an earlier wrapper cannot erase its metadata.\n setGatewayCatalog(\n armId,\n adapters.map((a) => a.modelId)\n );\n logger.info('Gateway registered as one api: arm', { arm: armId, modelCount: adapters.length });\n return armId;\n}\n\n/**\n * The bootstrap entry (#4392 inc 2 step 2): discover the gateway\n * ({@link tryWireGatewayAdapters}), register its `api:<endpoint>` arm\n * ({@link registerGatewayArm}) under the operator's endpoint id, register the\n * family-slot catalogue (#6604), and hand the per-model adapters back for the\n * tools. One call, so `cli-server.ts` cannot\n * wire the adapters without the arm.\n */\nexport async function wireGateway(\n logger: ILogger,\n registry: Parameters<typeof registerGatewayArm>[2] = getGlobalRegistry()\n): Promise<readonly IModelAdapter[] | undefined> {\n const { adapters, retryable } = await wireGatewayOnce(logger);\n const endpoint = readOpenAICompatEndpoint(process.env, logger);\n const registerArms = (found: readonly IModelAdapter[] | undefined): void => {\n registerGatewayArm(found, endpoint, registry);\n // The server's private registry retains its historical 30-minute default.\n // Router arms live in the global registry, whose CLI timeouts stay per-complexity.\n // Independent wrappers share the endpoint breaker and are disposed by their owners.\n if (parseBoolEnv('NEXUS_ROUTE_GATEWAY_ARMS', false)) {\n const global = getGlobalRegistry();\n if (global !== registry) registerGatewayArm(found, endpoint, global);\n }\n };\n registerArms(adapters);\n registerFamilySlots(adapters, logger);\n if (!retryable) return adapters;\n // #6608: a gateway that was down at boot is retried lazily. The tools get\n // an empty live list (every reader treats empty as \"no gateway\"); the first\n // gateway-needing call after the backoff fills it in place and registers\n // the arm. Every registry adapter triggers it (#6659, see\n // gateway-rediscovery.ts), and the boot-time default re-detects onto the\n // gateway once it is found.\n const live: IModelAdapter[] = [];\n setGatewayRediscovery(\n new GatewayRediscovery({\n target: live,\n logger,\n discover: () => rediscoverGateway(logger),\n onDiscovered: (found) => {\n registerArms(found);\n registerFamilySlots(found, logger);\n },\n })\n );\n return live;\n}\n\n/**\n * #6604: the family-slot catalogue — each vendor CLI slot without an\n * available CLI resolves to a gateway model of its own family. None\n * registered (no gateway, or discovery failed) means no gateway.\n */\nfunction registerFamilySlots(\n adapters: readonly IModelAdapter[] | undefined,\n logger: ILogger\n): void {\n setGatewaySlotCatalog(adapters ?? []);\n logGatewaySlotMapping(logger);\n}\n\n/**\n * One lazy re-discovery attempt: the adapters; `undefined` (logged) when it\n * failed in a way that can clear; `'refused'` when the private-address guard\n * refused the host (#6659), logged with the same remedy as at boot and never\n * retried, since allowing it is an env change that needs a restart.\n */\nasync function rediscoverGateway(\n logger: ILogger\n): Promise<readonly IModelAdapter[] | 'refused' | undefined> {\n const result = await buildOpenAICompatAdapters(logger);\n if (result === null) return undefined;\n if (!result.ok && result.error instanceof GatewayHostRefusedError) {\n // Re-discovery is armed only outside sandbox mode (a failed boot probe\n // there exits), so this never takes the sandbox exit branch.\n handleHostRefused(logger, false, result.error.status);\n return 'refused';\n }\n if (!result.ok) {\n logger.warn('Gateway re-discovery failed; calls stay on CLI subprocesses', {\n error: result.error.message,\n });\n return undefined;\n }\n return result.value;\n}\n\nfunction handleMissingEnv(logger: ILogger, sandboxActive: boolean): void {\n if (sandboxActive) {\n logger.error(\n 'Sandbox mode active but NEXUS_OPENAI_COMPAT_URL / NEXUS_OPENAI_COMPAT_KEY are not set. ' +\n 'Configure the gateway in your launch env or opencode.json. ' +\n 'See docs/guides/SANDBOXED-USAGE.md.',\n new Error('Missing gateway configuration in sandbox mode')\n );\n process.exit(EXIT_CODES.SERVER_START_FAILED);\n }\n return undefined;\n}\n\nfunction handleProbeFailure(logger: ILogger, sandboxActive: boolean, reason: string): void {\n if (sandboxActive) {\n logger.error(\n 'Sandbox mode active and OpenAI-compatible gateway probe failed.',\n new Error(reason)\n );\n process.exit(EXIT_CODES.SERVER_START_FAILED);\n }\n logger.warn('OpenAI-compatible gateway probe failed; continuing with CLI adapters', {\n error: reason,\n });\n return undefined;\n}\n\n/**\n * The private-address guard refused the gateway host (#6608). The message\n * names the variable that allows it and says the gateway is not in use —\n * before this, the operator saw a generic probe-failure line.\n */\nfunction handleHostRefused(\n logger: ILogger,\n sandboxActive: boolean,\n status: GatewayHostRefused\n): void {\n const message =\n `Gateway host ${status.host} refused by the private-address guard: the in-process ` +\n 'gateway is NOT in use, and voter/consensus calls fall back to CLI subprocesses. ' +\n status.remedy;\n if (sandboxActive) {\n logger.error(message, new Error(status.reason));\n process.exit(EXIT_CODES.SERVER_START_FAILED);\n }\n logger.warn(message, { host: status.host, reason: status.reason });\n}\n\nfunction handleZeroModels(logger: ILogger, sandboxActive: boolean): void {\n if (sandboxActive) {\n logger.error(\n 'Sandbox mode active and gateway returned 0 models. Check upstream provider quotas / list filters.',\n new Error('Gateway discovered 0 models')\n );\n process.exit(EXIT_CODES.SERVER_START_FAILED);\n }\n logger.warn('OpenAI-compatible gateway returned 0 models; ignoring');\n return undefined;\n}\n"],"mappings":"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","names":[]}
@@ -8,10 +8,10 @@ import {
8
8
  discoverGatewayCatalog,
9
9
  gatewayProxyUrl,
10
10
  readOpenAICompatEnv
11
- } from "./chunk-KDOUKB7K.js";
11
+ } from "./chunk-CP73UYNV.js";
12
12
  import {
13
13
  redactGatewaySecrets
14
- } from "./chunk-ILSLOHGX.js";
14
+ } from "./chunk-UBCGX47E.js";
15
15
  import {
16
16
  DEFAULT_OPENAI_COMPAT_ENDPOINT,
17
17
  GATEWAY_COST_ENV,
@@ -26,7 +26,7 @@ import {
26
26
  gatewaySlotMapping,
27
27
  getErrorMessage,
28
28
  isCliDisabled
29
- } from "./chunk-X3VLHTGF.js";
29
+ } from "./chunk-AJBRMUGK.js";
30
30
  import {
31
31
  getTimeProvider
32
32
  } from "./chunk-RM3RFAKU.js";
@@ -453,4 +453,4 @@ export {
453
453
  formatGatewayReport,
454
454
  formatGatewaySlotWarnings
455
455
  };
456
- //# sourceMappingURL=chunk-FVGG74W7.js.map
456
+ //# sourceMappingURL=chunk-7S6ANELD.js.map
@@ -3,7 +3,7 @@ import {
3
3
  estimateTaskComplexity,
4
4
  executeCliRetryLoop,
5
5
  getTimeoutForTask
6
- } from "./chunk-WS3OZBDV.js";
6
+ } from "./chunk-IBGLJEW7.js";
7
7
  import {
8
8
  sanitizeOutput
9
9
  } from "./chunk-JHTL4P4L.js";
@@ -23,14 +23,14 @@ import {
23
23
  ok,
24
24
  toAgyModelSlug,
25
25
  withEnforcedAccessMode
26
- } from "./chunk-X3VLHTGF.js";
26
+ } from "./chunk-AJBRMUGK.js";
27
27
  import {
28
28
  buildModelInfo,
29
29
  getCliModelName,
30
30
  getDefaultModelForCli,
31
31
  resolveCliAlias,
32
32
  resolveCliModelName
33
- } from "./chunk-RZPCGPO7.js";
33
+ } from "./chunk-GCD3OFFM.js";
34
34
  import {
35
35
  createLogger,
36
36
  getTimeProvider
@@ -599,4 +599,4 @@ export {
599
599
  GeminiCliAdapter,
600
600
  createGeminiAdapter
601
601
  };
602
- //# sourceMappingURL=chunk-EUW56AIY.js.map
602
+ //# sourceMappingURL=chunk-7VMEUGNV.js.map
@@ -1,14 +1,14 @@
1
1
  import {
2
2
  GitHubProvider,
3
3
  ScmError
4
- } from "./chunk-MFQFW2HS.js";
4
+ } from "./chunk-2A4P2DX3.js";
5
5
  import {
6
6
  resolveToken
7
- } from "./chunk-6LKSFTVL.js";
7
+ } from "./chunk-UZZHLCYW.js";
8
8
  import {
9
9
  err,
10
10
  ok
11
- } from "./chunk-X3VLHTGF.js";
11
+ } from "./chunk-AJBRMUGK.js";
12
12
 
13
13
  // src/scm/factory.ts
14
14
  async function createScmProvider(config) {
@@ -41,4 +41,4 @@ export {
41
41
  createScmProvider,
42
42
  createGitHubProvider
43
43
  };
44
- //# sourceMappingURL=chunk-OKNC4DUN.js.map
44
+ //# sourceMappingURL=chunk-ABTRD52Y.js.map
@@ -15,7 +15,7 @@ import {
15
15
  lookupInTreeCapability,
16
16
  resolveCliCostPer1M,
17
17
  resolveCliModelName
18
- } from "./chunk-RZPCGPO7.js";
18
+ } from "./chunk-GCD3OFFM.js";
19
19
  import {
20
20
  DEFAULT_MODEL_PER_CLI,
21
21
  buildInTreeEntries,
@@ -26,7 +26,7 @@ import {
26
26
  pricingSourceOf,
27
27
  resolveModelIdentitySync,
28
28
  unpricedCliCostPer1M
29
- } from "./chunk-WI2CPM6B.js";
29
+ } from "./chunk-K6CUB3IV.js";
30
30
  import {
31
31
  ensureLearningDir,
32
32
  getDecisionCostFile,
@@ -4254,7 +4254,7 @@ function adapterReadiness(adapter, options) {
4254
4254
  const ceiling = resolveClassGuardMs("interactive");
4255
4255
  const requested = options.timeoutMs ?? ceiling;
4256
4256
  const timeoutMs = Number.isFinite(requested) && requested > 0 ? Math.min(requested, ceiling) : ceiling;
4257
- const flight = import("./cli-readiness-NTBYHZOM.js").then(({ probeServes }) => probeServes(adapter, timeoutMs)).finally(() => readinessFlights.delete(adapter));
4257
+ const flight = import("./cli-readiness-RSBS6FN3.js").then(({ probeServes }) => probeServes(adapter, timeoutMs)).finally(() => readinessFlights.delete(adapter));
4258
4258
  readinessFlights.set(adapter, flight);
4259
4259
  return flight;
4260
4260
  }
@@ -4264,7 +4264,7 @@ async function servesListedModel(adapter, modelId, cli) {
4264
4264
  const models = await adapter.listModels();
4265
4265
  if (models.length === 0) return "unknown";
4266
4266
  const requestedKey = canonicalModelKey(modelId);
4267
- const findCanonicalModel2 = cli === "codex" ? (await import("./model-config-helpers-KJLQISOV.js")).findCanonicalModel : void 0;
4267
+ const findCanonicalModel2 = cli === "codex" ? (await import("./model-config-helpers-XBHRUWIC.js")).findCanonicalModel : void 0;
4268
4268
  const requestedEntry = requestedKey === null ? findCanonicalModel2?.("codex", modelId) : void 0;
4269
4269
  const listed = models.some((model) => {
4270
4270
  const listedEntry = findCanonicalModel2?.("codex", model.id);
@@ -6713,7 +6713,7 @@ var ModelToCliAdapter = class {
6713
6713
  }
6714
6714
  async execute(task, options) {
6715
6715
  const gatewayArm = this.gatewayArmField().gatewayArm;
6716
- const breaker = gatewayArm !== void 0 && this.modelAdapter.providerId === `cli-${this.name}` ? (await import("./cli-circuit-breaker-WWX3PNIN.js")).getDefaultCliCircuitBreakerRegistry().getArmBreaker(breakerKeys.forArm({ name: this.name, gatewayArm })) : void 0;
6716
+ const breaker = gatewayArm !== void 0 && this.modelAdapter.providerId === `cli-${this.name}` ? (await import("./cli-circuit-breaker-37UQWOAA.js")).getDefaultCliCircuitBreakerRegistry().getArmBreaker(breakerKeys.forArm({ name: this.name, gatewayArm })) : void 0;
6717
6717
  const result = await this.modelAdapter.complete(this.toCompletionRequest(task, options));
6718
6718
  if (!result.ok) {
6719
6719
  const cliError = this.toCliError(result.error);
@@ -12272,9 +12272,9 @@ function getOutcomeStore() {
12272
12272
  }
12273
12273
  async function attachOutcomeStoreToRegistry(store) {
12274
12274
  try {
12275
- const { getMemoryRegistry } = await import("./dist-RRRU2OKU.js");
12276
- const { OutcomeStoreAdapter } = await import("./outcome-store-adapter-FOJFCZQY.js");
12277
- const { ensureSharedMemoryRegistry } = await import("./tool-memory-registry-adapters-T2IK5NRM.js");
12275
+ const { getMemoryRegistry } = await import("./dist-FBP664IF.js");
12276
+ const { OutcomeStoreAdapter } = await import("./outcome-store-adapter-L6MNOSZN.js");
12277
+ const { ensureSharedMemoryRegistry } = await import("./tool-memory-registry-adapters-QZ4OJN3G.js");
12278
12278
  ensureSharedMemoryRegistry();
12279
12279
  getMemoryRegistry().attach("outcomes", new OutcomeStoreAdapter(store));
12280
12280
  } catch {
@@ -18419,7 +18419,7 @@ function applyDistillationSwitch(config) {
18419
18419
  }
18420
18420
  async function nativeAgyTierOptions(arm, adapter) {
18421
18421
  if (arm !== "gemini" || gatewayServedSlotOf(adapter) !== void 0) return {};
18422
- const { GeminiCliAdapter } = await import("./gemini-adapter-5DVIZZEE.js");
18422
+ const { GeminiCliAdapter } = await import("./gemini-adapter-EHQUG5QP.js");
18423
18423
  if (!(cliBinaryAdapterOf(adapter) instanceof GeminiCliAdapter)) return {};
18424
18424
  return {
18425
18425
  liveModelIds: new Set(
@@ -18656,7 +18656,7 @@ var CompositeRouter = class _CompositeRouter {
18656
18656
  */
18657
18657
  async consultUnifiedContext(task) {
18658
18658
  try {
18659
- const { getContextForTask, inferTaskCategory } = await import("./context-retriever-I27PWPM6.js");
18659
+ const { getContextForTask, inferTaskCategory } = await import("./context-retriever-H34LHPWB.js");
18660
18660
  const ctx = await getContextForTask({
18661
18661
  task: task.content,
18662
18662
  category: inferTaskCategory(task.content),
@@ -20473,4 +20473,4 @@ export {
20473
20473
  AgentCapability,
20474
20474
  OrchestratorError
20475
20475
  };
20476
- //# sourceMappingURL=chunk-X3VLHTGF.js.map
20476
+ //# sourceMappingURL=chunk-AJBRMUGK.js.map
@@ -9,10 +9,10 @@ import {
9
9
  import {
10
10
  GitHubProvider,
11
11
  ScmError
12
- } from "./chunk-MFQFW2HS.js";
12
+ } from "./chunk-2A4P2DX3.js";
13
13
  import {
14
14
  hasToken
15
- } from "./chunk-6LKSFTVL.js";
15
+ } from "./chunk-UZZHLCYW.js";
16
16
  import {
17
17
  toContentTrustProvenanceRecord
18
18
  } from "./chunk-RGB5OTRZ.js";
@@ -25,7 +25,7 @@ import {
25
25
  err,
26
26
  getErrorMessage,
27
27
  ok
28
- } from "./chunk-X3VLHTGF.js";
28
+ } from "./chunk-AJBRMUGK.js";
29
29
  import {
30
30
  createLogger,
31
31
  getTimeProvider
@@ -2646,4 +2646,4 @@ export {
2646
2646
  IssueTriage,
2647
2647
  createIssueTriage
2648
2648
  };
2649
- //# sourceMappingURL=chunk-MH6NPW5N.js.map
2649
+ //# sourceMappingURL=chunk-BELY4VU4.js.map