nexus-agents 8.42.1 → 8.42.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.
@@ -1,6 +1,6 @@
1
1
  // src/version.ts
2
2
  import semver from "semver";
3
- var VERSION = true ? "8.42.1" : "dev";
3
+ var VERSION = true ? "8.42.2" : "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-7IO6QL4W.js.map
14
+ //# sourceMappingURL=chunk-2QX52PCN.js.map
@@ -7,7 +7,7 @@ import {
7
7
  toolStructuredError,
8
8
  toolSuccessStructured,
9
9
  wrapToolWithTimeout
10
- } from "./chunk-EUCTOTZN.js";
10
+ } from "./chunk-6KHUREWG.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-AU6INZ7B.js.map
2176
+ //# sourceMappingURL=chunk-2YWZDKWU.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  VERSION
3
- } from "./chunk-7IO6QL4W.js";
3
+ } from "./chunk-2QX52PCN.js";
4
4
  import {
5
5
  emitClawGuardViolation
6
6
  } from "./chunk-5WMWO6FP.js";
@@ -2306,4 +2306,4 @@ export {
2306
2306
  VOTING_THRESHOLDS,
2307
2307
  ConsensusMetricsSchema
2308
2308
  };
2309
- //# sourceMappingURL=chunk-EUCTOTZN.js.map
2309
+ //# sourceMappingURL=chunk-6KHUREWG.js.map
@@ -8,7 +8,7 @@ import {
8
8
  NODE_ENGINE_RANGE,
9
9
  VERSION,
10
10
  isNodeVersionSupported
11
- } from "./chunk-7IO6QL4W.js";
11
+ } from "./chunk-2QX52PCN.js";
12
12
  import {
13
13
  capitalize
14
14
  } from "./chunk-7LP6VJRP.js";
@@ -1228,7 +1228,7 @@ async function runDoctorFix(result) {
1228
1228
  writeLine2("\u2500".repeat(40));
1229
1229
  let fixCount = 0;
1230
1230
  if (!result.dataDirectory.rootExists || result.dataDirectory.subdirectories.some((d) => !d.exists || !d.writable)) {
1231
- const { initDataDirectories: initDataDirectories2, describeDataDirFix: describeDataDirFix2 } = await import("./setup-data-dir-B5UOTTKE.js");
1231
+ const { initDataDirectories: initDataDirectories2, describeDataDirFix: describeDataDirFix2 } = await import("./setup-data-dir-DZPYOR3M.js");
1232
1232
  const outcome = describeDataDirFix2(initDataDirectories2());
1233
1233
  writeLine2(outcome.line);
1234
1234
  if (outcome.counted) fixCount++;
@@ -1330,4 +1330,4 @@ export {
1330
1330
  startStdioServer,
1331
1331
  closeServer
1332
1332
  };
1333
- //# sourceMappingURL=chunk-DPC26L4W.js.map
1333
+ //# sourceMappingURL=chunk-DCDH2Y5M.js.map
@@ -21,7 +21,7 @@ import {
21
21
  import {
22
22
  DEFAULT_TASK_TTL_MS,
23
23
  clampTaskTtl
24
- } from "./chunk-DPC26L4W.js";
24
+ } from "./chunk-DCDH2Y5M.js";
25
25
  import {
26
26
  executeExpert
27
27
  } from "./chunk-GC5P7ITJ.js";
@@ -55,7 +55,7 @@ import {
55
55
  toJobSummary,
56
56
  updateStage,
57
57
  writeJobCancelled
58
- } from "./chunk-SVZQFSFF.js";
58
+ } from "./chunk-WKGKKQIM.js";
59
59
  import {
60
60
  allOf,
61
61
  anyOf
@@ -75,7 +75,7 @@ import {
75
75
  } from "./chunk-3GEOJIOH.js";
76
76
  import {
77
77
  withPrerequisite
78
- } from "./chunk-AU6INZ7B.js";
78
+ } from "./chunk-2YWZDKWU.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-EUCTOTZN.js";
103
+ } from "./chunk-6KHUREWG.js";
104
104
  import {
105
105
  createAuditTrail,
106
106
  createGraphAuditBridge,
@@ -45935,7 +45935,7 @@ function buildVotingInput(plan, config) {
45935
45935
  }
45936
45936
  async function executeSingleVote(plan, config, log) {
45937
45937
  try {
45938
- const { executeVoting } = await import("./consensus-vote-6TOUQJ23.js");
45938
+ const { executeVoting } = await import("./consensus-vote-AMIZFUPK.js");
45939
45939
  const input = buildVotingInput(plan, config);
45940
45940
  const result = await executeVoting(input, log);
45941
45941
  return parseVotingResult(result);
@@ -47727,7 +47727,7 @@ ${contextBlock}`;
47727
47727
  const strategy = config.votingStrategy ?? "higher_order";
47728
47728
  await postProgress(config, "Vote", `Running consensus with ${strategy} strategy...`);
47729
47729
  try {
47730
- const { executeVoting } = await import("./consensus-vote-6TOUQJ23.js");
47730
+ const { executeVoting } = await import("./consensus-vote-AMIZFUPK.js");
47731
47731
  const votingResult = await executeVoting(
47732
47732
  {
47733
47733
  proposal: buildVoteProposal(plan, research),
@@ -56408,4 +56408,4 @@ export {
56408
56408
  startPipelineEventBridge,
56409
56409
  shutdownPipelineEventBridge
56410
56410
  };
56411
- //# sourceMappingURL=chunk-EFQRJRTH.js.map
56411
+ //# sourceMappingURL=chunk-UXQDDA2L.js.map
@@ -23,10 +23,10 @@ import {
23
23
  toolSuccessStructured,
24
24
  withProgressHeartbeat,
25
25
  wrapToolWithTimeout
26
- } from "./chunk-EUCTOTZN.js";
26
+ } from "./chunk-6KHUREWG.js";
27
27
  import {
28
28
  VERSION
29
- } from "./chunk-7IO6QL4W.js";
29
+ } from "./chunk-2QX52PCN.js";
30
30
  import {
31
31
  assessPanelIndependence,
32
32
  countDistinctModels,
@@ -7830,4 +7830,4 @@ export {
7830
7830
  CONSENSUS_VOTE_TOOL_SCHEMA,
7831
7831
  registerConsensusVoteTool
7832
7832
  };
7833
- //# sourceMappingURL=chunk-SVZQFSFF.js.map
7833
+ //# sourceMappingURL=chunk-WKGKKQIM.js.map
package/dist/cli.js CHANGED
@@ -157,7 +157,7 @@ import {
157
157
  validateNexusEnv,
158
158
  validateWorkflow,
159
159
  wrapInMarkdownFence
160
- } from "./chunk-EFQRJRTH.js";
160
+ } from "./chunk-UXQDDA2L.js";
161
161
  import "./chunk-77LIYHB3.js";
162
162
  import "./chunk-DGWT7DXX.js";
163
163
  import "./chunk-64GMIUM5.js";
@@ -177,7 +177,7 @@ import {
177
177
  doctorCommand,
178
178
  initDataDirectories,
179
179
  runDoctor
180
- } from "./chunk-DPC26L4W.js";
180
+ } from "./chunk-DCDH2Y5M.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-SVZQFSFF.js";
199
+ } from "./chunk-WKGKKQIM.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-AU6INZ7B.js";
239
+ } from "./chunk-2YWZDKWU.js";
240
240
  import {
241
241
  createDefaultPolicyFirewall,
242
242
  setGlobalPolicyFirewall,
243
243
  setSecureHandlerAuditLogger,
244
244
  stagePolicyFirewallForRollout
245
- } from "./chunk-EUCTOTZN.js";
245
+ } from "./chunk-6KHUREWG.js";
246
246
  import {
247
247
  NODE_ENGINE_RANGE,
248
248
  VERSION,
249
249
  isNodeVersionSupported
250
- } from "./chunk-7IO6QL4W.js";
250
+ } from "./chunk-2QX52PCN.js";
251
251
  import "./chunk-5WMWO6FP.js";
252
252
  import {
253
253
  createUnifiedRegistry,
@@ -8342,10 +8342,6 @@ function printSprintResult(result, format) {
8342
8342
  writeLine(JSON.stringify(result, null, 2));
8343
8343
  return;
8344
8344
  }
8345
- if (result.error !== void 0 && result.error !== "") {
8346
- writeLine(`${colors.red}${symbols.cross} Error: ${result.error}${colors.reset}`);
8347
- return;
8348
- }
8349
8345
  if (result.proposal !== void 0) {
8350
8346
  printProposal(result.proposal);
8351
8347
  }
@@ -8363,6 +8359,9 @@ function printSprintResult(result, format) {
8363
8359
  );
8364
8360
  writeLine("");
8365
8361
  }
8362
+ if (result.error !== void 0 && result.error !== "") {
8363
+ writeLine(`${colors.red}${symbols.cross} Error: ${result.error}${colors.reset}`);
8364
+ }
8366
8365
  }
8367
8366
  function voteOutcomeForExitCode(exitCode) {
8368
8367
  if (exitCode === 0) return "approved";
@@ -8466,17 +8465,32 @@ function createSprintIssue(proposal) {
8466
8465
  { context: "gh", stdin: proposal.body }
8467
8466
  );
8468
8467
  if (output2 === null) {
8469
- return null;
8468
+ return { ok: false, reason: "gh_failed" };
8470
8469
  }
8471
8470
  const match = /\/issues\/(\d+)/.exec(output2);
8472
8471
  const issueNumStr = match?.[1];
8473
8472
  if (issueNumStr !== void 0 && issueNumStr !== "") {
8474
- return parseInt(issueNumStr, 10);
8473
+ return { ok: true, issueNumber: parseInt(issueNumStr, 10) };
8475
8474
  }
8476
- return null;
8475
+ return { ok: false, reason: "no_issue_number" };
8477
8476
  } catch {
8478
- return null;
8477
+ return { ok: false, reason: "gh_failed" };
8478
+ }
8479
+ }
8480
+ var CREATE_ISSUE_FAILURE = {
8481
+ gh_failed: "Failed to create the sprint issue: `gh issue create` did not run. Check that the GitHub CLI is installed, authenticated (`gh auth status`), and not rate-limited.",
8482
+ no_issue_number: "Failed to create the sprint issue: `gh issue create` ran but printed no issue URL, so the issue number could not be read. Check `gh issue list` before retrying."
8483
+ };
8484
+ function maybeCreateSprintIssue(options, proposal, voteOutcome) {
8485
+ if (options.createIssue !== true) return void 0;
8486
+ if (voteOutcome !== "approved" && voteOutcome !== "skipped") return void 0;
8487
+ if (options.dryRun === true) {
8488
+ writeLine(`${colors.yellow}[DRY RUN]${colors.reset} Would create sprint issue
8489
+ `);
8490
+ return void 0;
8479
8491
  }
8492
+ writeLine(`${colors.dim}Creating sprint issue...${colors.reset}`);
8493
+ return createSprintIssue(proposal);
8480
8494
  }
8481
8495
  async function handlePlanSubcommand(options) {
8482
8496
  writeLine(`${colors.dim}Fetching open issues...${colors.reset}`);
@@ -8508,23 +8522,22 @@ P1: ${String(proposal.p1Issues.length)} items, P2: ${String(proposal.p2Issues.le
8508
8522
  });
8509
8523
  voteOutcome = voteOutcomeForExitCode(exitCode);
8510
8524
  }
8511
- let createdIssueNumber = null;
8512
- if (options.createIssue === true && (voteOutcome === "approved" || voteOutcome === "skipped")) {
8513
- if (options.dryRun === true) {
8514
- writeLine(`${colors.yellow}[DRY RUN]${colors.reset} Would create sprint issue
8515
- `);
8516
- } else {
8517
- writeLine(`${colors.dim}Creating sprint issue...${colors.reset}`);
8518
- createdIssueNumber = createSprintIssue(proposal);
8519
- }
8525
+ const created = maybeCreateSprintIssue(options, proposal, voteOutcome);
8526
+ if (created?.ok === false) {
8527
+ return {
8528
+ success: false,
8529
+ proposal,
8530
+ voteOutcome,
8531
+ error: CREATE_ISSUE_FAILURE[created.reason]
8532
+ };
8520
8533
  }
8521
8534
  const result = {
8522
8535
  success: true,
8523
8536
  proposal,
8524
8537
  voteOutcome
8525
8538
  };
8526
- if (createdIssueNumber !== null) {
8527
- return { ...result, createdIssueNumber };
8539
+ if (created?.ok === true) {
8540
+ return { ...result, createdIssueNumber: created.issueNumber };
8528
8541
  }
8529
8542
  return result;
8530
8543
  }
@@ -11714,6 +11727,15 @@ async function freshnessCommand(options) {
11714
11727
  }
11715
11728
  };
11716
11729
  }
11730
+ function buildLinkMessage(brokenLinks, totalLinks, scannedNothing) {
11731
+ if (scannedNothing) {
11732
+ return "Link validation: no markdown files found under `docs/`. `index links` audits the nexus-agents source repo \u2014 run it from the repo root.";
11733
+ }
11734
+ if (brokenLinks > 0) {
11735
+ return `Link validation: ${String(brokenLinks)} broken links found`;
11736
+ }
11737
+ return `Link validation: ${String(totalLinks)} links validated, all OK`;
11738
+ }
11717
11739
  async function linksCommand(options) {
11718
11740
  logger13.info("Validating documentation links...");
11719
11741
  const result = await validateLinks({
@@ -11722,6 +11744,7 @@ async function linksCommand(options) {
11722
11744
  });
11723
11745
  const { summary } = result;
11724
11746
  const hasBrokenLinks = summary.brokenLinks > 0;
11747
+ const scannedNothing = summary.totalFiles === 0;
11725
11748
  const output2 = options.format === "json" ? formatLinkValidationJson(result) : formatLinkValidationTable(result);
11726
11749
  if (options.output !== void 0) {
11727
11750
  const outputDir = path13.dirname(options.output);
@@ -11732,8 +11755,8 @@ async function linksCommand(options) {
11732
11755
  process.stdout.write(output2 + "\n");
11733
11756
  }
11734
11757
  return {
11735
- success: !hasBrokenLinks,
11736
- message: hasBrokenLinks ? `Link validation: ${String(summary.brokenLinks)} broken links found` : `Link validation: ${String(summary.totalLinks)} links validated, all OK`,
11758
+ success: !hasBrokenLinks && !scannedNothing,
11759
+ message: buildLinkMessage(summary.brokenLinks, summary.totalLinks, scannedNothing),
11737
11760
  data: {
11738
11761
  totalFiles: summary.totalFiles,
11739
11762
  totalLinks: summary.totalLinks,
@@ -19928,7 +19951,7 @@ function startImprovementReviewScheduler(options) {
19928
19951
  let running = false;
19929
19952
  const runOnce = async () => {
19930
19953
  try {
19931
- const { runImprovementReview: runImprovementReview2, ImprovementReviewInputSchema: ImprovementReviewInputSchema2 } = await import("./improvement-review-OKR2IFZL.js");
19954
+ const { runImprovementReview: runImprovementReview2, ImprovementReviewInputSchema: ImprovementReviewInputSchema2 } = await import("./improvement-review-VJUYFGPH.js");
19932
19955
  const input = ImprovementReviewInputSchema2.parse({ fileIssues });
19933
19956
  const result = await runImprovementReview2(input, { logger: logger22 });
19934
19957
  logger22.info("Scheduled improvement_review complete", {