nexus-agents 8.46.0 → 8.46.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -21,7 +21,7 @@ import {
21
21
  import {
22
22
  DEFAULT_TASK_TTL_MS,
23
23
  clampTaskTtl
24
- } from "./chunk-AEIHBQCV.js";
24
+ } from "./chunk-ZR43ZS2W.js";
25
25
  import {
26
26
  executeExpert
27
27
  } from "./chunk-GEUZK7QR.js";
@@ -55,7 +55,7 @@ import {
55
55
  toJobSummary,
56
56
  updateStage,
57
57
  writeJobCancelled
58
- } from "./chunk-WR76BZG6.js";
58
+ } from "./chunk-KZVKTHYT.js";
59
59
  import {
60
60
  allOf,
61
61
  anyOf
@@ -75,7 +75,7 @@ import {
75
75
  } from "./chunk-YOCOC4DG.js";
76
76
  import {
77
77
  withPrerequisite
78
- } from "./chunk-T6KTCUCO.js";
78
+ } from "./chunk-A5TSTHXJ.js";
79
79
  import {
80
80
  NOOP_NOTIFIER,
81
81
  RateLimiter,
@@ -100,7 +100,7 @@ import {
100
100
  withAuditTrail,
101
101
  withProgressHeartbeat,
102
102
  wrapToolWithTimeout
103
- } from "./chunk-BI6AHQKQ.js";
103
+ } from "./chunk-GL5OYJSN.js";
104
104
  import {
105
105
  createAuditTrail,
106
106
  createGraphAuditBridge,
@@ -45998,7 +45998,7 @@ function buildVotingInput(plan, config) {
45998
45998
  }
45999
45999
  async function executeSingleVote(plan, config, log) {
46000
46000
  try {
46001
- const { executeVoting } = await import("./consensus-vote-OJZZXQHS.js");
46001
+ const { executeVoting } = await import("./consensus-vote-4YDC3H2C.js");
46002
46002
  const input = buildVotingInput(plan, config);
46003
46003
  const result = await executeVoting(input, log);
46004
46004
  return parseVotingResult(result);
@@ -47793,7 +47793,7 @@ ${contextBlock}`;
47793
47793
  const strategy = config.votingStrategy ?? "higher_order";
47794
47794
  await postProgress(config, "Vote", `Running consensus with ${strategy} strategy...`);
47795
47795
  try {
47796
- const { executeVoting } = await import("./consensus-vote-OJZZXQHS.js");
47796
+ const { executeVoting } = await import("./consensus-vote-4YDC3H2C.js");
47797
47797
  const votingResult = await executeVoting(
47798
47798
  {
47799
47799
  proposal: buildVoteProposal(plan, research),
@@ -56519,4 +56519,4 @@ export {
56519
56519
  startPipelineEventBridge,
56520
56520
  shutdownPipelineEventBridge
56521
56521
  };
56522
- //# sourceMappingURL=chunk-YEGJ5GWY.js.map
56522
+ //# sourceMappingURL=chunk-6U3KJJRM.js.map
@@ -7,7 +7,7 @@ import {
7
7
  toolStructuredError,
8
8
  toolSuccessStructured,
9
9
  wrapToolWithTimeout
10
- } from "./chunk-BI6AHQKQ.js";
10
+ } from "./chunk-GL5OYJSN.js";
11
11
  import {
12
12
  JsonlStore,
13
13
  SECURITY_KEYWORDS,
@@ -2173,4 +2173,4 @@ export {
2173
2173
  runImprovementReview,
2174
2174
  registerImprovementReviewTool
2175
2175
  };
2176
- //# sourceMappingURL=chunk-T6KTCUCO.js.map
2176
+ //# sourceMappingURL=chunk-A5TSTHXJ.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  VERSION
3
- } from "./chunk-ENJLFHMA.js";
3
+ } from "./chunk-SIQELTIX.js";
4
4
  import {
5
5
  emitClawGuardViolation
6
6
  } from "./chunk-NAC62SMO.js";
@@ -2317,4 +2317,4 @@ export {
2317
2317
  VOTING_THRESHOLDS,
2318
2318
  ConsensusMetricsSchema
2319
2319
  };
2320
- //# sourceMappingURL=chunk-BI6AHQKQ.js.map
2320
+ //# sourceMappingURL=chunk-GL5OYJSN.js.map
@@ -23,10 +23,10 @@ import {
23
23
  toolSuccessStructured,
24
24
  withProgressHeartbeat,
25
25
  wrapToolWithTimeout
26
- } from "./chunk-BI6AHQKQ.js";
26
+ } from "./chunk-GL5OYJSN.js";
27
27
  import {
28
28
  VERSION
29
- } from "./chunk-ENJLFHMA.js";
29
+ } from "./chunk-SIQELTIX.js";
30
30
  import {
31
31
  assessPanelIndependence,
32
32
  countDistinctModels,
@@ -7850,4 +7850,4 @@ export {
7850
7850
  CONSENSUS_VOTE_TOOL_SCHEMA,
7851
7851
  registerConsensusVoteTool
7852
7852
  };
7853
- //# sourceMappingURL=chunk-WR76BZG6.js.map
7853
+ //# sourceMappingURL=chunk-KZVKTHYT.js.map
@@ -1,6 +1,6 @@
1
1
  // src/version.ts
2
2
  import semver from "semver";
3
- var VERSION = true ? "8.46.0" : "dev";
3
+ var VERSION = true ? "8.46.1" : "dev";
4
4
  var NODE_ENGINE_RANGE = ">=22.5.0";
5
5
  function isNodeVersionSupported(version) {
6
6
  return semver.satisfies(version, NODE_ENGINE_RANGE);
@@ -11,4 +11,4 @@ export {
11
11
  NODE_ENGINE_RANGE,
12
12
  isNodeVersionSupported
13
13
  };
14
- //# sourceMappingURL=chunk-ENJLFHMA.js.map
14
+ //# sourceMappingURL=chunk-SIQELTIX.js.map
@@ -8,7 +8,7 @@ import {
8
8
  NODE_ENGINE_RANGE,
9
9
  VERSION,
10
10
  isNodeVersionSupported
11
- } from "./chunk-ENJLFHMA.js";
11
+ } from "./chunk-SIQELTIX.js";
12
12
  import {
13
13
  capitalize
14
14
  } from "./chunk-7LP6VJRP.js";
@@ -1227,7 +1227,7 @@ async function runDoctorFix(result) {
1227
1227
  writeLine2("\u2500".repeat(40));
1228
1228
  let fixCount = 0;
1229
1229
  if (!result.dataDirectory.rootExists || result.dataDirectory.subdirectories.some((d) => !d.exists || !d.writable)) {
1230
- const { initDataDirectories: initDataDirectories2, describeDataDirFix: describeDataDirFix2 } = await import("./setup-data-dir-IVU6HU3M.js");
1230
+ const { initDataDirectories: initDataDirectories2, describeDataDirFix: describeDataDirFix2 } = await import("./setup-data-dir-N5OHQ5L7.js");
1231
1231
  const outcome = describeDataDirFix2(initDataDirectories2());
1232
1232
  writeLine2(outcome.line);
1233
1233
  if (outcome.counted) fixCount++;
@@ -1329,4 +1329,4 @@ export {
1329
1329
  startStdioServer,
1330
1330
  closeServer
1331
1331
  };
1332
- //# sourceMappingURL=chunk-AEIHBQCV.js.map
1332
+ //# sourceMappingURL=chunk-ZR43ZS2W.js.map
package/dist/cli.js CHANGED
@@ -157,7 +157,7 @@ import {
157
157
  validateNexusEnv,
158
158
  validateWorkflow,
159
159
  wrapInMarkdownFence
160
- } from "./chunk-YEGJ5GWY.js";
160
+ } from "./chunk-6U3KJJRM.js";
161
161
  import "./chunk-DFNBVXOU.js";
162
162
  import "./chunk-DGWT7DXX.js";
163
163
  import "./chunk-M7DUOIAK.js";
@@ -177,7 +177,7 @@ import {
177
177
  doctorCommand,
178
178
  initDataDirectories,
179
179
  runDoctor
180
- } from "./chunk-AEIHBQCV.js";
180
+ } from "./chunk-ZR43ZS2W.js";
181
181
  import {
182
182
  buildOpenAICompatAdapters,
183
183
  readOpenAICompatEnv
@@ -196,7 +196,7 @@ import {
196
196
  recordAuthenticVote,
197
197
  registerConsensusVoteTool,
198
198
  toRecordDecision
199
- } from "./chunk-WR76BZG6.js";
199
+ } from "./chunk-KZVKTHYT.js";
200
200
  import {
201
201
  loadUsageEvents,
202
202
  rollupByModel
@@ -236,18 +236,18 @@ import {
236
236
  registerImprovementReviewTool,
237
237
  runImprovementReview,
238
238
  scanForSecrets
239
- } from "./chunk-T6KTCUCO.js";
239
+ } from "./chunk-A5TSTHXJ.js";
240
240
  import {
241
241
  createDefaultPolicyFirewall,
242
242
  setGlobalPolicyFirewall,
243
243
  setSecureHandlerAuditLogger,
244
244
  stagePolicyFirewallForRollout
245
- } from "./chunk-BI6AHQKQ.js";
245
+ } from "./chunk-GL5OYJSN.js";
246
246
  import {
247
247
  NODE_ENGINE_RANGE,
248
248
  VERSION,
249
249
  isNodeVersionSupported
250
- } from "./chunk-ENJLFHMA.js";
250
+ } from "./chunk-SIQELTIX.js";
251
251
  import "./chunk-NAC62SMO.js";
252
252
  import {
253
253
  createUnifiedRegistry,
@@ -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);
@@ -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-FDRCRCWD.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", {