nexus-agents 8.46.0 → 8.46.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (146) hide show
  1. package/dist/{ast-rule-runner-367HC4UY.js → ast-rule-runner-ODGZ3JZY.js} +5 -5
  2. package/dist/{child-mcp-config-2IJ3TXG5.js → child-mcp-config-L73W5MCX.js} +5 -5
  3. package/dist/{chunk-7BHQKEC2.js → chunk-3NAZYISV.js} +2 -2
  4. package/dist/{chunk-USD7DWRG.js → chunk-4H27PBKV.js} +2 -2
  5. package/dist/{chunk-CB75PV3Y.js → chunk-5H7SPGK7.js} +4 -4
  6. package/dist/{chunk-63BQ4CVP.js → chunk-732JANNS.js} +2 -2
  7. package/dist/{chunk-GEUZK7QR.js → chunk-A5MQ5FF4.js} +7 -7
  8. package/dist/{chunk-MBAREN43.js → chunk-BTYRPZON.js} +2 -2
  9. package/dist/{chunk-MBAREN43.js.map → chunk-BTYRPZON.js.map} +1 -1
  10. package/dist/{chunk-AWZKJQHK.js → chunk-DUF6QPTO.js} +3 -3
  11. package/dist/{chunk-SECO5QH5.js → chunk-FBBVRDK4.js} +2 -2
  12. package/dist/{chunk-PUKFCRHE.js → chunk-FIG75K2B.js} +3 -3
  13. package/dist/{chunk-TTLQO25X.js → chunk-FTLZG37P.js} +2 -2
  14. package/dist/{chunk-HI7VU3WE.js → chunk-GPWTORER.js} +6 -6
  15. package/dist/{chunk-NAC62SMO.js → chunk-H2BNQMYK.js} +2 -2
  16. package/dist/{chunk-A2CMDQFD.js → chunk-HP4HIBBD.js} +2 -2
  17. package/dist/{chunk-T6KMATAB.js → chunk-HXQ3VKUO.js} +10 -10
  18. package/dist/{chunk-CI45MILR.js → chunk-II7NLF4Q.js} +3 -3
  19. package/dist/{chunk-SMYK36R3.js → chunk-INPRQQQK.js} +8 -8
  20. package/dist/{chunk-SMYK36R3.js.map → chunk-INPRQQQK.js.map} +1 -1
  21. package/dist/{chunk-BLXOJN3P.js → chunk-L6NP4YNS.js} +2 -2
  22. package/dist/{chunk-O335AIP4.js → chunk-LFL2I5R7.js} +6 -6
  23. package/dist/{chunk-YOCOC4DG.js → chunk-M4Y2KBKB.js} +2 -2
  24. package/dist/{chunk-URM6RDIR.js → chunk-MSMKCCAD.js} +2 -2
  25. package/dist/{chunk-S72HKOOH.js → chunk-MTYJPPIG.js} +5 -4
  26. package/dist/chunk-MTYJPPIG.js.map +1 -0
  27. package/dist/{chunk-45V73GBS.js → chunk-P7BPGBJM.js} +7 -7
  28. package/dist/{chunk-YEGJ5GWY.js → chunk-RHLWNHKX.js} +48 -48
  29. package/dist/chunk-RHLWNHKX.js.map +1 -0
  30. package/dist/{chunk-VWW2POE3.js → chunk-SBLNWD5V.js} +4 -4
  31. package/dist/{chunk-T6KTCUCO.js → chunk-T2ONDETH.js} +4 -4
  32. package/dist/{chunk-WLKZ6PNC.js → chunk-T46RV7Y7.js} +2 -2
  33. package/dist/{chunk-DFNBVXOU.js → chunk-V4RF47LZ.js} +2 -2
  34. package/dist/{chunk-ENJLFHMA.js → chunk-VL2IFI47.js} +2 -2
  35. package/dist/{chunk-H6JJL3PK.js → chunk-VW3NK2DE.js} +2 -2
  36. package/dist/{chunk-FQHRDJZH.js → chunk-W7AXQJNR.js} +3 -3
  37. package/dist/{chunk-LEKS5OZR.js → chunk-WEXA77OT.js} +2 -2
  38. package/dist/{chunk-UCIAHROV.js → chunk-WTVA7SRV.js} +5 -5
  39. package/dist/{chunk-AEIHBQCV.js → chunk-X5S2JXR3.js} +10 -10
  40. package/dist/{chunk-HRJ4TWXZ.js → chunk-X7ETIOZG.js} +3 -3
  41. package/dist/{chunk-BI6AHQKQ.js → chunk-Y4DMSLJM.js} +5 -5
  42. package/dist/{chunk-WR76BZG6.js → chunk-Y6J2KOQ6.js} +11 -11
  43. package/dist/{chunk-NX4QAUSU.js → chunk-ZII57VK4.js} +2 -2
  44. package/dist/{chunk-5NQPBDRX.js → chunk-ZOU55MYG.js} +2 -2
  45. package/dist/{cli-circuit-breaker-ROZJLYNB.js → cli-circuit-breaker-BACT7C5F.js} +5 -5
  46. package/dist/cli.js +71 -56
  47. package/dist/cli.js.map +1 -1
  48. package/dist/{composite-router-2TDAOPFD.js → composite-router-HYLUXT7U.js} +4 -4
  49. package/dist/{consensus-vote-OJZZXQHS.js → consensus-vote-2TBA6XSI.js} +21 -21
  50. package/dist/{context-retriever-E2Q7RLL5.js → context-retriever-UOSFEX4E.js} +11 -11
  51. package/dist/doctor-deep-SQQ4H2OV.js +13 -0
  52. package/dist/{doctor-live-KIXE3UGI.js → doctor-live-DXYZSIPM.js} +12 -12
  53. package/dist/{expert-bridge-ULRWQKFB.js → expert-bridge-T2K3ZHIL.js} +6 -6
  54. package/dist/factory-I5BUOCTX.js +25 -0
  55. package/dist/factory-MI6JZRQL.js +15 -0
  56. package/dist/{improvement-review-6QP66XN2.js → improvement-review-PGMJETQS.js} +8 -8
  57. package/dist/index.js +35 -35
  58. package/dist/{init-opencode-YIRTOTBD.js → init-opencode-VF4BC2HK.js} +8 -8
  59. package/dist/issue-triage-P532TIKZ.js +17 -0
  60. package/dist/{learning-persistence-P4WE4M27.js → learning-persistence-TQJVPLDN.js} +3 -3
  61. package/dist/{pr-reviewer-helpers-Q6XF2YBR.js → pr-reviewer-helpers-IQIXZKXH.js} +6 -6
  62. package/dist/{registry-command-EZVZ52OP.js → registry-command-PLFFH6YS.js} +4 -4
  63. package/dist/{repo-security-plan-54YQQ7BM.js → repo-security-plan-DZIBNTDL.js} +5 -5
  64. package/dist/research-helpers-synthesize-WWHRP2T3.js +14 -0
  65. package/dist/{routing-memory-ZES5DGQA.js → routing-memory-CCCVR5UQ.js} +4 -4
  66. package/dist/{session-memory-ZDI6VNTB.js → session-memory-6E5RCMYV.js} +5 -5
  67. package/dist/setup-config-ZIEZCZQS.js +11 -0
  68. package/dist/{setup-custom-api-5ZIZUPJO.js → setup-custom-api-X5UQWWW6.js} +6 -6
  69. package/dist/setup-data-dir-U7HU54SU.js +29 -0
  70. package/dist/{tool-memory-WZKIW5HV.js → tool-memory-DC2NWW44.js} +8 -8
  71. package/dist/{tool-memory-registry-adapters-GZGXUBEN.js → tool-memory-registry-adapters-OUOO7OLE.js} +3 -3
  72. package/dist/unified-registry-ZURARKTX.js +26 -0
  73. package/dist/{weather-report-BBEUSTYU.js → weather-report-QWH6RRAX.js} +4 -4
  74. package/package.json +1 -1
  75. package/dist/chunk-S72HKOOH.js.map +0 -1
  76. package/dist/chunk-YEGJ5GWY.js.map +0 -1
  77. package/dist/doctor-deep-EN2IAJ6Q.js +0 -13
  78. package/dist/factory-GUD4XQK6.js +0 -25
  79. package/dist/factory-N3RPD7NP.js +0 -15
  80. package/dist/issue-triage-SUTFBOAF.js +0 -17
  81. package/dist/research-helpers-synthesize-SWBJP7GK.js +0 -14
  82. package/dist/setup-config-6ZAUJKVT.js +0 -11
  83. package/dist/setup-data-dir-IVU6HU3M.js +0 -29
  84. package/dist/unified-registry-PN2VQQJK.js +0 -26
  85. /package/dist/{ast-rule-runner-367HC4UY.js.map → ast-rule-runner-ODGZ3JZY.js.map} +0 -0
  86. /package/dist/{child-mcp-config-2IJ3TXG5.js.map → child-mcp-config-L73W5MCX.js.map} +0 -0
  87. /package/dist/{chunk-7BHQKEC2.js.map → chunk-3NAZYISV.js.map} +0 -0
  88. /package/dist/{chunk-USD7DWRG.js.map → chunk-4H27PBKV.js.map} +0 -0
  89. /package/dist/{chunk-CB75PV3Y.js.map → chunk-5H7SPGK7.js.map} +0 -0
  90. /package/dist/{chunk-63BQ4CVP.js.map → chunk-732JANNS.js.map} +0 -0
  91. /package/dist/{chunk-GEUZK7QR.js.map → chunk-A5MQ5FF4.js.map} +0 -0
  92. /package/dist/{chunk-AWZKJQHK.js.map → chunk-DUF6QPTO.js.map} +0 -0
  93. /package/dist/{chunk-SECO5QH5.js.map → chunk-FBBVRDK4.js.map} +0 -0
  94. /package/dist/{chunk-PUKFCRHE.js.map → chunk-FIG75K2B.js.map} +0 -0
  95. /package/dist/{chunk-TTLQO25X.js.map → chunk-FTLZG37P.js.map} +0 -0
  96. /package/dist/{chunk-HI7VU3WE.js.map → chunk-GPWTORER.js.map} +0 -0
  97. /package/dist/{chunk-NAC62SMO.js.map → chunk-H2BNQMYK.js.map} +0 -0
  98. /package/dist/{chunk-A2CMDQFD.js.map → chunk-HP4HIBBD.js.map} +0 -0
  99. /package/dist/{chunk-T6KMATAB.js.map → chunk-HXQ3VKUO.js.map} +0 -0
  100. /package/dist/{chunk-CI45MILR.js.map → chunk-II7NLF4Q.js.map} +0 -0
  101. /package/dist/{chunk-BLXOJN3P.js.map → chunk-L6NP4YNS.js.map} +0 -0
  102. /package/dist/{chunk-O335AIP4.js.map → chunk-LFL2I5R7.js.map} +0 -0
  103. /package/dist/{chunk-YOCOC4DG.js.map → chunk-M4Y2KBKB.js.map} +0 -0
  104. /package/dist/{chunk-URM6RDIR.js.map → chunk-MSMKCCAD.js.map} +0 -0
  105. /package/dist/{chunk-45V73GBS.js.map → chunk-P7BPGBJM.js.map} +0 -0
  106. /package/dist/{chunk-VWW2POE3.js.map → chunk-SBLNWD5V.js.map} +0 -0
  107. /package/dist/{chunk-T6KTCUCO.js.map → chunk-T2ONDETH.js.map} +0 -0
  108. /package/dist/{chunk-WLKZ6PNC.js.map → chunk-T46RV7Y7.js.map} +0 -0
  109. /package/dist/{chunk-DFNBVXOU.js.map → chunk-V4RF47LZ.js.map} +0 -0
  110. /package/dist/{chunk-ENJLFHMA.js.map → chunk-VL2IFI47.js.map} +0 -0
  111. /package/dist/{chunk-H6JJL3PK.js.map → chunk-VW3NK2DE.js.map} +0 -0
  112. /package/dist/{chunk-FQHRDJZH.js.map → chunk-W7AXQJNR.js.map} +0 -0
  113. /package/dist/{chunk-LEKS5OZR.js.map → chunk-WEXA77OT.js.map} +0 -0
  114. /package/dist/{chunk-UCIAHROV.js.map → chunk-WTVA7SRV.js.map} +0 -0
  115. /package/dist/{chunk-AEIHBQCV.js.map → chunk-X5S2JXR3.js.map} +0 -0
  116. /package/dist/{chunk-HRJ4TWXZ.js.map → chunk-X7ETIOZG.js.map} +0 -0
  117. /package/dist/{chunk-BI6AHQKQ.js.map → chunk-Y4DMSLJM.js.map} +0 -0
  118. /package/dist/{chunk-WR76BZG6.js.map → chunk-Y6J2KOQ6.js.map} +0 -0
  119. /package/dist/{chunk-NX4QAUSU.js.map → chunk-ZII57VK4.js.map} +0 -0
  120. /package/dist/{chunk-5NQPBDRX.js.map → chunk-ZOU55MYG.js.map} +0 -0
  121. /package/dist/{cli-circuit-breaker-ROZJLYNB.js.map → cli-circuit-breaker-BACT7C5F.js.map} +0 -0
  122. /package/dist/{composite-router-2TDAOPFD.js.map → composite-router-HYLUXT7U.js.map} +0 -0
  123. /package/dist/{consensus-vote-OJZZXQHS.js.map → consensus-vote-2TBA6XSI.js.map} +0 -0
  124. /package/dist/{context-retriever-E2Q7RLL5.js.map → context-retriever-UOSFEX4E.js.map} +0 -0
  125. /package/dist/{doctor-deep-EN2IAJ6Q.js.map → doctor-deep-SQQ4H2OV.js.map} +0 -0
  126. /package/dist/{doctor-live-KIXE3UGI.js.map → doctor-live-DXYZSIPM.js.map} +0 -0
  127. /package/dist/{expert-bridge-ULRWQKFB.js.map → expert-bridge-T2K3ZHIL.js.map} +0 -0
  128. /package/dist/{factory-GUD4XQK6.js.map → factory-I5BUOCTX.js.map} +0 -0
  129. /package/dist/{factory-N3RPD7NP.js.map → factory-MI6JZRQL.js.map} +0 -0
  130. /package/dist/{improvement-review-6QP66XN2.js.map → improvement-review-PGMJETQS.js.map} +0 -0
  131. /package/dist/{init-opencode-YIRTOTBD.js.map → init-opencode-VF4BC2HK.js.map} +0 -0
  132. /package/dist/{issue-triage-SUTFBOAF.js.map → issue-triage-P532TIKZ.js.map} +0 -0
  133. /package/dist/{learning-persistence-P4WE4M27.js.map → learning-persistence-TQJVPLDN.js.map} +0 -0
  134. /package/dist/{pr-reviewer-helpers-Q6XF2YBR.js.map → pr-reviewer-helpers-IQIXZKXH.js.map} +0 -0
  135. /package/dist/{registry-command-EZVZ52OP.js.map → registry-command-PLFFH6YS.js.map} +0 -0
  136. /package/dist/{repo-security-plan-54YQQ7BM.js.map → repo-security-plan-DZIBNTDL.js.map} +0 -0
  137. /package/dist/{research-helpers-synthesize-SWBJP7GK.js.map → research-helpers-synthesize-WWHRP2T3.js.map} +0 -0
  138. /package/dist/{routing-memory-ZES5DGQA.js.map → routing-memory-CCCVR5UQ.js.map} +0 -0
  139. /package/dist/{session-memory-ZDI6VNTB.js.map → session-memory-6E5RCMYV.js.map} +0 -0
  140. /package/dist/{setup-config-6ZAUJKVT.js.map → setup-config-ZIEZCZQS.js.map} +0 -0
  141. /package/dist/{setup-custom-api-5ZIZUPJO.js.map → setup-custom-api-X5UQWWW6.js.map} +0 -0
  142. /package/dist/{setup-data-dir-IVU6HU3M.js.map → setup-data-dir-U7HU54SU.js.map} +0 -0
  143. /package/dist/{tool-memory-WZKIW5HV.js.map → tool-memory-DC2NWW44.js.map} +0 -0
  144. /package/dist/{tool-memory-registry-adapters-GZGXUBEN.js.map → tool-memory-registry-adapters-OUOO7OLE.js.map} +0 -0
  145. /package/dist/{unified-registry-PN2VQQJK.js.map → unified-registry-ZURARKTX.js.map} +0 -0
  146. /package/dist/{weather-report-BBEUSTYU.js.map → weather-report-QWH6RRAX.js.map} +0 -0
package/dist/cli.js CHANGED
@@ -23,11 +23,11 @@ import {
23
23
  parseExpertReview,
24
24
  reviewPostingBlock,
25
25
  sumFindings
26
- } from "./chunk-PUKFCRHE.js";
27
- import "./chunk-LEKS5OZR.js";
26
+ } from "./chunk-FIG75K2B.js";
27
+ import "./chunk-WEXA77OT.js";
28
28
  import {
29
29
  runConfigInitSync
30
- } from "./chunk-USD7DWRG.js";
30
+ } from "./chunk-4H27PBKV.js";
31
31
  import {
32
32
  AuthHandler,
33
33
  CustomExpertDefinitionSchema,
@@ -157,11 +157,11 @@ import {
157
157
  validateNexusEnv,
158
158
  validateWorkflow,
159
159
  wrapInMarkdownFence
160
- } from "./chunk-YEGJ5GWY.js";
161
- import "./chunk-DFNBVXOU.js";
160
+ } from "./chunk-RHLWNHKX.js";
161
+ import "./chunk-V4RF47LZ.js";
162
162
  import "./chunk-DGWT7DXX.js";
163
163
  import "./chunk-M7DUOIAK.js";
164
- import "./chunk-TTLQO25X.js";
164
+ import "./chunk-FTLZG37P.js";
165
165
  import {
166
166
  CATEGORY_DISPLAY_NAMES,
167
167
  DEFAULT_PR_REVIEW_CONFIG
@@ -177,14 +177,14 @@ import {
177
177
  doctorCommand,
178
178
  initDataDirectories,
179
179
  runDoctor
180
- } from "./chunk-AEIHBQCV.js";
180
+ } from "./chunk-X5S2JXR3.js";
181
181
  import {
182
182
  buildOpenAICompatAdapters,
183
183
  readOpenAICompatEnv
184
- } from "./chunk-UCIAHROV.js";
184
+ } from "./chunk-WTVA7SRV.js";
185
185
  import {
186
186
  shutdownExpertBridge
187
- } from "./chunk-GEUZK7QR.js";
187
+ } from "./chunk-A5MQ5FF4.js";
188
188
  import {
189
189
  ConsensusVoteInputSchema,
190
190
  DEFAULT_VOTE_TIMEOUT_MS,
@@ -196,18 +196,18 @@ import {
196
196
  recordAuthenticVote,
197
197
  registerConsensusVoteTool,
198
198
  toRecordDecision
199
- } from "./chunk-WR76BZG6.js";
199
+ } from "./chunk-Y6J2KOQ6.js";
200
200
  import {
201
201
  loadUsageEvents,
202
202
  rollupByModel
203
- } from "./chunk-HRJ4TWXZ.js";
203
+ } from "./chunk-X7ETIOZG.js";
204
204
  import {
205
205
  allOf,
206
206
  anyOf
207
207
  } from "./chunk-OQB3XC5O.js";
208
208
  import {
209
209
  synthesizeResearch
210
- } from "./chunk-AWZKJQHK.js";
210
+ } from "./chunk-DUF6QPTO.js";
211
211
  import {
212
212
  DRAFT_REPLY_BODY_MAX_LENGTH,
213
213
  configureUntrustedInputFirewall,
@@ -217,12 +217,12 @@ import {
217
217
  runUntrustedInputFirewall,
218
218
  validateAgentAction,
219
219
  validateCorroboration
220
- } from "./chunk-O335AIP4.js";
221
- import "./chunk-5NQPBDRX.js";
220
+ } from "./chunk-LFL2I5R7.js";
221
+ import "./chunk-ZOU55MYG.js";
222
222
  import {
223
223
  ReputationCache,
224
224
  sanitizeInput
225
- } from "./chunk-YOCOC4DG.js";
225
+ } from "./chunk-M4Y2KBKB.js";
226
226
  import {
227
227
  ImprovementReviewInputSchema,
228
228
  calculateFitnessScore,
@@ -236,23 +236,23 @@ import {
236
236
  registerImprovementReviewTool,
237
237
  runImprovementReview,
238
238
  scanForSecrets
239
- } from "./chunk-T6KTCUCO.js";
239
+ } from "./chunk-T2ONDETH.js";
240
240
  import {
241
241
  createDefaultPolicyFirewall,
242
242
  setGlobalPolicyFirewall,
243
243
  setSecureHandlerAuditLogger,
244
244
  stagePolicyFirewallForRollout
245
- } from "./chunk-BI6AHQKQ.js";
245
+ } from "./chunk-Y4DMSLJM.js";
246
246
  import {
247
247
  NODE_ENGINE_RANGE,
248
248
  VERSION,
249
249
  isNodeVersionSupported
250
- } from "./chunk-ENJLFHMA.js";
251
- import "./chunk-NAC62SMO.js";
250
+ } from "./chunk-VL2IFI47.js";
251
+ import "./chunk-H2BNQMYK.js";
252
252
  import {
253
253
  createUnifiedRegistry,
254
254
  getGlobalRegistry
255
- } from "./chunk-VWW2POE3.js";
255
+ } from "./chunk-SBLNWD5V.js";
256
256
  import {
257
257
  CodebaseIndexSchema,
258
258
  PaperStatusSchema,
@@ -278,30 +278,30 @@ import {
278
278
  loadSourcesRegistry,
279
279
  rankDiscoveredItems,
280
280
  saveSourcesRegistry
281
- } from "./chunk-45V73GBS.js";
281
+ } from "./chunk-P7BPGBJM.js";
282
282
  import {
283
283
  loadPapersRegistry,
284
284
  loadTechniquesRegistry,
285
285
  savePapersRegistry
286
- } from "./chunk-CI45MILR.js";
286
+ } from "./chunk-II7NLF4Q.js";
287
287
  import {
288
288
  resolveToken
289
- } from "./chunk-NX4QAUSU.js";
289
+ } from "./chunk-ZII57VK4.js";
290
290
  import {
291
291
  MemoryError,
292
292
  configureToolMemory,
293
293
  shutdownToolMemory
294
- } from "./chunk-HI7VU3WE.js";
294
+ } from "./chunk-GPWTORER.js";
295
295
  import {
296
296
  capitalize,
297
297
  capitalizeKebab,
298
298
  truncateText
299
299
  } from "./chunk-7LP6VJRP.js";
300
- import "./chunk-URM6RDIR.js";
300
+ import "./chunk-MSMKCCAD.js";
301
301
  import {
302
302
  BUILT_IN_EXPERTS
303
303
  } from "./chunk-43SVUIPL.js";
304
- import "./chunk-H6JJL3PK.js";
304
+ import "./chunk-VW3NK2DE.js";
305
305
  import "./chunk-YYJFZ7TO.js";
306
306
  import {
307
307
  NEXUS_SUBPROCESS_DEPTH_ENV,
@@ -311,19 +311,19 @@ import {
311
311
  probeAllClis,
312
312
  readSubprocessDepth,
313
313
  safeJsonParse
314
- } from "./chunk-T6KMATAB.js";
315
- import "./chunk-A2CMDQFD.js";
314
+ } from "./chunk-HXQ3VKUO.js";
315
+ import "./chunk-HP4HIBBD.js";
316
316
  import {
317
317
  DEFAULTS
318
- } from "./chunk-FQHRDJZH.js";
319
- import "./chunk-BLXOJN3P.js";
318
+ } from "./chunk-W7AXQJNR.js";
319
+ import "./chunk-L6NP4YNS.js";
320
320
  import {
321
321
  nexusMkdtempSync
322
- } from "./chunk-WLKZ6PNC.js";
323
- import "./chunk-SECO5QH5.js";
322
+ } from "./chunk-T46RV7Y7.js";
323
+ import "./chunk-FBBVRDK4.js";
324
324
  import "./chunk-QZUG667L.js";
325
- import "./chunk-7BHQKEC2.js";
326
- import "./chunk-63BQ4CVP.js";
325
+ import "./chunk-3NAZYISV.js";
326
+ import "./chunk-732JANNS.js";
327
327
  import {
328
328
  API_TIMEOUTS,
329
329
  AgentCapability,
@@ -400,8 +400,8 @@ import {
400
400
  validateTimeout,
401
401
  writeEmptyLine,
402
402
  writeLine
403
- } from "./chunk-SMYK36R3.js";
404
- import "./chunk-S72HKOOH.js";
403
+ } from "./chunk-INPRQQQK.js";
404
+ import "./chunk-MTYJPPIG.js";
405
405
  import {
406
406
  applyPortableMode,
407
407
  detectSandbox,
@@ -414,7 +414,7 @@ import {
414
414
  parseIntEnv,
415
415
  sessionsDbPath,
416
416
  setActiveWorkspaceRoot
417
- } from "./chunk-MBAREN43.js";
417
+ } from "./chunk-BTYRPZON.js";
418
418
  import "./chunk-ZPWHCABL.js";
419
419
 
420
420
  // src/cli/cli-log-bootstrap.ts
@@ -4502,7 +4502,7 @@ Provide a structured review with:
4502
4502
  * (Source: Issue #828 — Wire policy gate into production pipeline)
4503
4503
  */
4504
4504
  async postReviewToGitHub(provider, pr, result, gateDecision) {
4505
- const { formatReviewComment: formatReviewComment2 } = await import("./pr-reviewer-helpers-Q6XF2YBR.js");
4505
+ const { formatReviewComment: formatReviewComment2 } = await import("./pr-reviewer-helpers-IQIXZKXH.js");
4506
4506
  const formattedBody = formatReviewComment2(result);
4507
4507
  const body = truncateText(formattedBody, DRAFT_REPLY_BODY_MAX_LENGTH, "\u2026[review truncated]");
4508
4508
  const sources = buildReviewCitations(pr.files);
@@ -5992,24 +5992,39 @@ Routing: ${result.routing.reason}`);
5992
5992
  function formatResult(result, format) {
5993
5993
  return format === "json" ? formatResultJson(result) : formatResultText(result);
5994
5994
  }
5995
+ function noRoutingArmsMessage() {
5996
+ const apiMode = process.env["NEXUS_BILLING_MODE"] === "api";
5997
+ const lines = [
5998
+ "No routing arms available \u2014 nothing can run this task.",
5999
+ "",
6000
+ "Either install and authenticate a CLI (claude, gemini, codex, opencode),",
6001
+ apiMode ? "or set a provider key: ANTHROPIC_API_KEY, OPENAI_API_KEY, GOOGLE_AI_API_KEY." : "or set NEXUS_BILLING_MODE=api together with a provider key (ANTHROPIC_API_KEY, OPENAI_API_KEY, GOOGLE_AI_API_KEY). API arms enter the router only in explicit api billing mode, so a key alone is not enough (#3422).",
6002
+ "",
6003
+ 'Run "nexus-agents doctor" for details.'
6004
+ ];
6005
+ return lines.join("\n");
6006
+ }
6007
+ function reportRoutingArms(availableClis, apiArms, verbose) {
6008
+ if (availableClis.length === 0 && apiArms.length === 0) {
6009
+ console.error(noRoutingArmsMessage());
6010
+ return false;
6011
+ }
6012
+ if (verbose) {
6013
+ console.log(`Available routing arms: ${[...availableClis, ...apiArms].join(", ")}`);
6014
+ }
6015
+ return true;
6016
+ }
5995
6017
  async function orchestrateCommand(options) {
5996
6018
  const logger22 = createLogger({ component: "orchestrate", verbose: options.verbose });
5997
6019
  const availableClis = await getAvailableClis();
5998
- if (availableClis.length === 0) {
5999
- console.error("No CLI tools available.");
6000
- console.error("Install and authenticate at least one of: claude, gemini, codex");
6001
- console.error('Run "nexus-agents doctor" for details.');
6002
- return 1;
6003
- }
6004
- if (options.verbose === true) {
6005
- console.log(`Available CLIs: ${availableClis.join(", ")}`);
6006
- }
6007
6020
  const codexTransport = options.engine === "puppeteer" ? "subprocess" : "mcp";
6008
6021
  const adapters = createAllAdapters(logger22, codexTransport);
6009
6022
  if (adapters.size === 0) {
6010
6023
  console.error("Failed to create CLI adapters.");
6011
6024
  return 1;
6012
6025
  }
6026
+ const apiArms = [...adapters.keys()].filter((id) => id.startsWith("api:"));
6027
+ if (!reportRoutingArms(availableClis, apiArms, options.verbose === true)) return 1;
6013
6028
  let result;
6014
6029
  if (options.engine === "puppeteer") {
6015
6030
  result = await executeWithPuppeteer(options.task, adapters, options, logger22);
@@ -11955,7 +11970,7 @@ function probeGrammars(register, parse6, probes = GRAMMAR_PROBES) {
11955
11970
  }
11956
11971
  async function loadGrammarModules() {
11957
11972
  const [{ ensurePolyglotLangs }, napi] = await Promise.all([
11958
- import("./ast-rule-runner-367HC4UY.js"),
11973
+ import("./ast-rule-runner-ODGZ3JZY.js"),
11959
11974
  import("@ast-grep/napi")
11960
11975
  ]);
11961
11976
  return { register: ensurePolyglotLangs, parse: napi.parse };
@@ -19950,7 +19965,7 @@ function startImprovementReviewScheduler(options) {
19950
19965
  let running = false;
19951
19966
  const runOnce = async () => {
19952
19967
  try {
19953
- const { runImprovementReview: runImprovementReview2, ImprovementReviewInputSchema: ImprovementReviewInputSchema2 } = await import("./improvement-review-6QP66XN2.js");
19968
+ const { runImprovementReview: runImprovementReview2, ImprovementReviewInputSchema: ImprovementReviewInputSchema2 } = await import("./improvement-review-PGMJETQS.js");
19954
19969
  const input = ImprovementReviewInputSchema2.parse({ fileIssues });
19955
19970
  const result = await runImprovementReview2(input, { logger: logger22 });
19956
19971
  logger22.info("Scheduled improvement_review complete", {
@@ -22050,7 +22065,7 @@ function adaptConfigToLibrary(config) {
22050
22065
  }
22051
22066
  function createBeliefPromoter() {
22052
22067
  return async (event) => {
22053
- const { getToolMemory } = await import("./tool-memory-WZKIW5HV.js");
22068
+ const { getToolMemory } = await import("./tool-memory-DC2NWW44.js");
22054
22069
  const tm = getToolMemory();
22055
22070
  await tm.recordBelief(
22056
22071
  `skill:${event.name}`,
@@ -23303,7 +23318,7 @@ async function handleResearchCommand(args) {
23303
23318
  }
23304
23319
  }
23305
23320
  async function handleRegistryCommand(args) {
23306
- const { registryCommand, isValidRegistrySubcommand, formatRegistryUsage } = await import("./registry-command-EZVZ52OP.js");
23321
+ const { registryCommand, isValidRegistrySubcommand, formatRegistryUsage } = await import("./registry-command-PLFFH6YS.js");
23307
23322
  const subcommand = args.subcommand;
23308
23323
  if (!isValidRegistrySubcommand(subcommand)) {
23309
23324
  process.stdout.write(`${formatRegistryUsage()}
@@ -23351,12 +23366,12 @@ async function handleVerifyCommand(args) {
23351
23366
  async function handleDoctorCommand(args) {
23352
23367
  const exitCode = await doctorCommand({ fix: args.options.fix });
23353
23368
  if (args.options.deep) {
23354
- const { runDeepDiagnostics: runDeepDiagnostics2, formatDeepDiagnostics: formatDeepDiagnostics2 } = await import("./doctor-deep-EN2IAJ6Q.js");
23369
+ const { runDeepDiagnostics: runDeepDiagnostics2, formatDeepDiagnostics: formatDeepDiagnostics2 } = await import("./doctor-deep-SQQ4H2OV.js");
23355
23370
  const diag = runDeepDiagnostics2();
23356
23371
  process.stdout.write(formatDeepDiagnostics2(diag) + "\n");
23357
23372
  }
23358
23373
  if (args.options.live) {
23359
- const { runLiveReadiness, formatLiveReadiness } = await import("./doctor-live-KIXE3UGI.js");
23374
+ const { runLiveReadiness, formatLiveReadiness } = await import("./doctor-live-DXYZSIPM.js");
23360
23375
  const report = await runLiveReadiness();
23361
23376
  process.stdout.write(formatLiveReadiness(report) + "\n");
23362
23377
  if (report.some((r) => r.levels.serves.status === "failed")) {
@@ -23409,7 +23424,7 @@ async function runInitPortableFlow(args) {
23409
23424
  return cliExit(result.success ? EXIT_CODES.SUCCESS : EXIT_CODES.SERVER_START_FAILED);
23410
23425
  }
23411
23426
  async function runInitOpencodeFlow(args) {
23412
- const { runInitOpencode } = await import("./init-opencode-YIRTOTBD.js");
23427
+ const { runInitOpencode } = await import("./init-opencode-VF4BC2HK.js");
23413
23428
  const opencodePath = args.options.opencode;
23414
23429
  if (opencodePath === void 0 || opencodePath === "") {
23415
23430
  process.stderr.write("Error: --opencode requires a path argument.\n");
@@ -23435,7 +23450,7 @@ async function runInitOpencodeFlow(args) {
23435
23450
  return cliExit(EXIT_CODES.SUCCESS);
23436
23451
  }
23437
23452
  async function renderOpencodeValidate(opencodePath) {
23438
- const { runOpencodeValidate } = await import("./init-opencode-YIRTOTBD.js");
23453
+ const { runOpencodeValidate } = await import("./init-opencode-VF4BC2HK.js");
23439
23454
  const result = await runOpencodeValidate(opencodePath);
23440
23455
  if (!result.ok) {
23441
23456
  process.stderr.write(`init --opencode --validate: ${result.reason ?? "failed"}
@@ -23474,7 +23489,7 @@ async function handleSetupCommandAsync(args) {
23474
23489
  return cliExitFromStatus(exitCode);
23475
23490
  }
23476
23491
  async function runCustomApiSetup(args) {
23477
- const { configureCustomApi } = await import("./setup-custom-api-5ZIZUPJO.js");
23492
+ const { configureCustomApi } = await import("./setup-custom-api-X5UQWWW6.js");
23478
23493
  const baseUrl = args.options.customApi;
23479
23494
  if (baseUrl === void 0) return EXIT_CODES.SERVER_START_FAILED;
23480
23495
  const input = {