nexus-agents 8.88.0 → 8.88.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-C3ZXAGKS.js";
24
+ } from "./chunk-YADX2T3Y.js";
25
25
  import {
26
26
  executeExpert
27
27
  } from "./chunk-CII3XR4K.js";
@@ -72,7 +72,7 @@ import {
72
72
  updateStage,
73
73
  withWarnings,
74
74
  writeJobCancelled
75
- } from "./chunk-UU2GS25J.js";
75
+ } from "./chunk-AHB3TVNL.js";
76
76
  import {
77
77
  allOf,
78
78
  anyOf
@@ -95,7 +95,7 @@ import {
95
95
  } from "./chunk-PEPOVKYR.js";
96
96
  import {
97
97
  withPrerequisite
98
- } from "./chunk-TUGETJYE.js";
98
+ } from "./chunk-SIDFUTGU.js";
99
99
  import {
100
100
  NOOP_NOTIFIER,
101
101
  RateLimiter,
@@ -120,7 +120,7 @@ import {
120
120
  toolSuccessStructured,
121
121
  withProgressHeartbeat,
122
122
  wrapToolWithTimeout
123
- } from "./chunk-67OZBQA6.js";
123
+ } from "./chunk-KK3PY5SO.js";
124
124
  import {
125
125
  EventTopics,
126
126
  UNRESOLVED_MODEL_ID,
@@ -46153,7 +46153,7 @@ function buildVotingInput(plan, config) {
46153
46153
  }
46154
46154
  async function executeSingleVote(plan, config, log) {
46155
46155
  try {
46156
- const { executeVoting } = await import("./consensus-vote-NQ7EXVJX.js");
46156
+ const { executeVoting } = await import("./consensus-vote-BP6EMIHB.js");
46157
46157
  const input = buildVotingInput(plan, config);
46158
46158
  const result = await executeVoting(input, log);
46159
46159
  return parseVotingResult(result);
@@ -47096,7 +47096,7 @@ function createVoteStage({ config, startStage }) {
47096
47096
  const strategy = config.votingStrategy ?? "higher_order";
47097
47097
  await postProgress(config, "Vote", `Running consensus with ${strategy} strategy...`);
47098
47098
  try {
47099
- const { executeVoting } = await import("./consensus-vote-NQ7EXVJX.js");
47099
+ const { executeVoting } = await import("./consensus-vote-BP6EMIHB.js");
47100
47100
  const votingResult = await executeVoting(
47101
47101
  {
47102
47102
  proposal: buildVoteProposal(plan, research),
@@ -56546,4 +56546,4 @@ export {
56546
56546
  startPipelineEventBridge,
56547
56547
  shutdownPipelineEventBridge
56548
56548
  };
56549
- //# sourceMappingURL=chunk-GMAA62YN.js.map
56549
+ //# sourceMappingURL=chunk-3XHPLLZO.js.map
@@ -25,10 +25,10 @@ import {
25
25
  toolSuccessStructured,
26
26
  withProgressHeartbeat,
27
27
  wrapToolWithTimeout
28
- } from "./chunk-67OZBQA6.js";
28
+ } from "./chunk-KK3PY5SO.js";
29
29
  import {
30
30
  VERSION
31
- } from "./chunk-3HRKK3TB.js";
31
+ } from "./chunk-K2FIPT4Z.js";
32
32
  import {
33
33
  UNRESOLVED_MODEL_ID,
34
34
  assessPanelIndependence,
@@ -9544,4 +9544,4 @@ export {
9544
9544
  CONSENSUS_VOTE_TOOL_SCHEMA,
9545
9545
  registerConsensusVoteTool
9546
9546
  };
9547
- //# sourceMappingURL=chunk-UU2GS25J.js.map
9547
+ //# sourceMappingURL=chunk-AHB3TVNL.js.map
@@ -1,6 +1,6 @@
1
1
  // src/version.ts
2
2
  import semver from "semver";
3
- var VERSION = true ? "8.88.0" : "dev";
3
+ var VERSION = true ? "8.88.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-3HRKK3TB.js.map
14
+ //# sourceMappingURL=chunk-K2FIPT4Z.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  VERSION
3
- } from "./chunk-3HRKK3TB.js";
3
+ } from "./chunk-K2FIPT4Z.js";
4
4
  import {
5
5
  sanitizeErrorDetails
6
6
  } from "./chunk-2NDA4DHW.js";
@@ -2342,4 +2342,4 @@ export {
2342
2342
  DEFAULT_CONSENSUS_CONFIG,
2343
2343
  ConsensusMetricsSchema
2344
2344
  };
2345
- //# sourceMappingURL=chunk-67OZBQA6.js.map
2345
+ //# sourceMappingURL=chunk-KK3PY5SO.js.map
@@ -7,7 +7,7 @@ import {
7
7
  toolStructuredError,
8
8
  toolSuccessStructured,
9
9
  wrapToolWithTimeout
10
- } from "./chunk-67OZBQA6.js";
10
+ } from "./chunk-KK3PY5SO.js";
11
11
  import {
12
12
  JsonlStore,
13
13
  SECURITY_KEYWORDS,
@@ -2282,4 +2282,4 @@ export {
2282
2282
  runImprovementReview,
2283
2283
  registerImprovementReviewTool
2284
2284
  };
2285
- //# sourceMappingURL=chunk-TUGETJYE.js.map
2285
+ //# sourceMappingURL=chunk-SIDFUTGU.js.map
@@ -12,7 +12,7 @@ import {
12
12
  NODE_ENGINE_RANGE,
13
13
  VERSION,
14
14
  isNodeVersionSupported
15
- } from "./chunk-3HRKK3TB.js";
15
+ } from "./chunk-K2FIPT4Z.js";
16
16
  import {
17
17
  claimGlobalRegistry
18
18
  } from "./chunk-TMM6ZN2H.js";
@@ -1401,7 +1401,7 @@ async function runDoctorFix(result) {
1401
1401
  writeLine2("\u2500".repeat(40));
1402
1402
  let fixCount = 0;
1403
1403
  if (!result.dataDirectory.rootExists || result.dataDirectory.subdirectories.some((d) => !d.exists || !d.writable)) {
1404
- const { initDataDirectories: initDataDirectories2, describeDataDirFix: describeDataDirFix2 } = await import("./setup-data-dir-5N43EHFC.js");
1404
+ const { initDataDirectories: initDataDirectories2, describeDataDirFix: describeDataDirFix2 } = await import("./setup-data-dir-TT6LWQNJ.js");
1405
1405
  const outcome = describeDataDirFix2(initDataDirectories2());
1406
1406
  writeLine2(outcome.line);
1407
1407
  if (outcome.counted) fixCount++;
@@ -1503,4 +1503,4 @@ export {
1503
1503
  startStdioServer,
1504
1504
  closeServer
1505
1505
  };
1506
- //# sourceMappingURL=chunk-C3ZXAGKS.js.map
1506
+ //# sourceMappingURL=chunk-YADX2T3Y.js.map
package/dist/cli.js CHANGED
@@ -155,7 +155,7 @@ import {
155
155
  validateNexusEnv,
156
156
  validateWorkflow,
157
157
  wrapInMarkdownFence
158
- } from "./chunk-GMAA62YN.js";
158
+ } from "./chunk-3XHPLLZO.js";
159
159
  import "./chunk-FDPKOY5E.js";
160
160
  import "./chunk-4GDMHCKX.js";
161
161
  import "./chunk-7ETWTSTB.js";
@@ -175,7 +175,7 @@ import {
175
175
  doctorCommand,
176
176
  initDataDirectories,
177
177
  runDoctor
178
- } from "./chunk-C3ZXAGKS.js";
178
+ } from "./chunk-YADX2T3Y.js";
179
179
  import "./chunk-CKZQOPTD.js";
180
180
  import {
181
181
  shutdownExpertBridge
@@ -197,7 +197,7 @@ import {
197
197
  registerConsensusVoteTool,
198
198
  seatFallbacks,
199
199
  toRecordDecision
200
- } from "./chunk-UU2GS25J.js";
200
+ } from "./chunk-AHB3TVNL.js";
201
201
  import {
202
202
  buildOpenAICompatAdapters,
203
203
  readOpenAICompatEndpoint,
@@ -239,7 +239,7 @@ import {
239
239
  registerImprovementReviewTool,
240
240
  runImprovementReview,
241
241
  scanForSecrets
242
- } from "./chunk-TUGETJYE.js";
242
+ } from "./chunk-SIDFUTGU.js";
243
243
  import {
244
244
  createDefaultPolicyFirewall,
245
245
  formatPolicyRolloutMode,
@@ -249,12 +249,12 @@ import {
249
249
  setGlobalPolicyFirewall,
250
250
  setSecureHandlerAuditLogger,
251
251
  stagePolicyFirewallForRollout
252
- } from "./chunk-67OZBQA6.js";
252
+ } from "./chunk-KK3PY5SO.js";
253
253
  import {
254
254
  NODE_ENGINE_RANGE,
255
255
  VERSION,
256
256
  isNodeVersionSupported
257
- } from "./chunk-3HRKK3TB.js";
257
+ } from "./chunk-K2FIPT4Z.js";
258
258
  import {
259
259
  claimGlobalRegistry,
260
260
  createUnifiedRegistry,
@@ -355,6 +355,7 @@ import {
355
355
  CLI_SUBPROCESS_TIMEOUTS,
356
356
  ConfigError,
357
357
  DEFAULT_CLI,
358
+ DEFAULT_MODEL_PER_CLI,
358
359
  DEFAULT_MODEL_PROFILES,
359
360
  ErrorCode,
360
361
  INPUT_MODALITIES,
@@ -12385,38 +12386,76 @@ function unmeasured(reason) {
12385
12386
  return { status: "unmeasured", served: [], missing: [], retiring: [], reason };
12386
12387
  }
12387
12388
  var CHECK_NAME = "Codex Models";
12388
- function codexModelsVerifyCheck(result) {
12389
- const servedList = `${String(result.served.length)} codex registry slug(s) served: ${result.served.map((r) => r.cliModelName).join(", ")}`;
12390
- if (result.status === "pass") {
12391
- return { name: CHECK_NAME, passed: true, message: servedList };
12392
- }
12393
- if (result.status === "warn") {
12394
- const fixes = [];
12395
- if (result.missing.length > 0) {
12396
- fixes.push(
12397
- "Refresh the codex entries in config/in-tree-data.ts against ~/.codex/models_cache.json (visibility=list)"
12389
+ function evaluateRetirements(retiring, options) {
12390
+ const warns = [];
12391
+ const infoNotes = [];
12392
+ const upgradeTargets = [];
12393
+ const defaultModelName = options?.defaultModel ?? DEFAULT_MODEL_PER_CLI.codex;
12394
+ for (const r of retiring) {
12395
+ const date = r.retirementAt.slice(0, 10);
12396
+ const isPast = r.daysLeft < 0;
12397
+ const isPinned = options?.userPinnedSlug !== void 0 && options.userPinnedSlug === r.cliModelName;
12398
+ if (isPast) {
12399
+ warns.push(`${r.id} \u2192 ${r.cliModelName} retired ${date} (${String(-r.daysLeft)} day(s) ago)`);
12400
+ if (r.upgradeModel !== null) upgradeTargets.push(r.upgradeModel);
12401
+ } else if (isPinned) {
12402
+ warns.push(`user config pins retiring slug ${r.cliModelName} (retires ${date})`);
12403
+ if (r.upgradeModel !== null) upgradeTargets.push(r.upgradeModel);
12404
+ } else {
12405
+ infoNotes.push(
12406
+ `${r.cliModelName} retires ${date}; nexus-agents default is ${defaultModelName}`
12398
12407
  );
12399
12408
  }
12400
- if (result.retiring.length > 0) {
12401
- fixes.push(
12402
- "Move the retiring slug's registry entry (and DEFAULT_MODEL_PER_CLI.codex, if it names it) to the cache's upgrade model before the date"
12403
- );
12409
+ }
12410
+ return { warns, infoNotes, upgradeTargets };
12411
+ }
12412
+ function buildVerifyFixes(missingCount, upgradeTargets) {
12413
+ const fixes = [];
12414
+ if (missingCount > 0) {
12415
+ fixes.push("Update nexus-agents, or configure a supported model in nexus-agents.yaml");
12416
+ }
12417
+ if (upgradeTargets.length > 0) {
12418
+ const target = upgradeTargets[0];
12419
+ if (target !== void 0) {
12420
+ fixes.push(`Update nexus-agents, or set your model to ${target} in nexus-agents.yaml`);
12421
+ } else {
12422
+ fixes.push("Update nexus-agents, or configure a supported model in nexus-agents.yaml");
12404
12423
  }
12424
+ }
12425
+ return fixes.join("; ");
12426
+ }
12427
+ function codexModelsVerifyCheck(result, options) {
12428
+ if (options?.isCodexInstalled === false) {
12429
+ return { name: CHECK_NAME, passed: true, message: "skipped: codex not installed" };
12430
+ }
12431
+ if (result.status === "unmeasured") {
12405
12432
  return {
12406
12433
  name: CHECK_NAME,
12407
12434
  passed: false,
12408
12435
  severity: "warn",
12409
- message: `${result.reason ?? "codex registry slug(s) not served"}; ${servedList}`,
12410
- fix: fixes.join("; ")
12436
+ message: `unmeasured: ${result.reason ?? "codex model list unavailable"}`,
12437
+ fix: "Run codex once so ~/.codex/models_cache.json exists, then re-run verify"
12411
12438
  };
12412
12439
  }
12413
- return {
12414
- name: CHECK_NAME,
12415
- passed: false,
12416
- severity: "warn",
12417
- message: `unmeasured: ${result.reason ?? "codex model list unavailable"}`,
12418
- fix: "Install codex and run it once so ~/.codex/models_cache.json exists, then re-run verify"
12419
- };
12440
+ const servedList = `${String(result.served.length)} codex registry slug(s) served: ${result.served.map((r) => r.cliModelName).join(", ")}`;
12441
+ const missingReasons = [];
12442
+ if (result.missing.length > 0) {
12443
+ const named = result.missing.map((m) => `${m.id} \u2192 ${m.cliModelName}`).join(", ");
12444
+ missingReasons.push(`not served by the installed codex: ${named}`);
12445
+ }
12446
+ const { warns, infoNotes, upgradeTargets } = evaluateRetirements(result.retiring, options);
12447
+ const allWarnings = [...missingReasons, ...warns];
12448
+ if (allWarnings.length > 0) {
12449
+ return {
12450
+ name: CHECK_NAME,
12451
+ passed: false,
12452
+ severity: "warn",
12453
+ message: `${allWarnings.join("; ")}; ${servedList}`,
12454
+ fix: buildVerifyFixes(result.missing.length, upgradeTargets)
12455
+ };
12456
+ }
12457
+ const message = infoNotes.length > 0 ? `${servedList} (${infoNotes.join("; ")})` : servedList;
12458
+ return { name: CHECK_NAME, passed: true, message };
12420
12459
  }
12421
12460
 
12422
12461
  // src/cli/verify-command.ts
@@ -12540,8 +12579,34 @@ async function checkGrammarAvailability() {
12540
12579
  fix: "Reinstall without blocking scripts, or verify @ast-grep/lang-{python,go} shipped their prebuilds/ directory"
12541
12580
  };
12542
12581
  }
12582
+ function getUserPinnedCodexSlug() {
12583
+ try {
12584
+ const result = loadConfig();
12585
+ if (result.ok && result.value.configPath !== void 0) {
12586
+ const modelDefault = result.value.config.models.default;
12587
+ if (typeof modelDefault === "string" && modelDefault.length > 0) {
12588
+ return modelDefault;
12589
+ }
12590
+ }
12591
+ } catch {
12592
+ }
12593
+ return void 0;
12594
+ }
12543
12595
  function checkCodexModelSlugs() {
12544
- return codexModelsVerifyCheck(checkCodexModels());
12596
+ const isInstalled = detectCliBinary("codex").installed;
12597
+ if (!isInstalled) {
12598
+ return codexModelsVerifyCheck(
12599
+ { status: "pass", served: [], missing: [], retiring: [], reason: null },
12600
+ { isCodexInstalled: false }
12601
+ );
12602
+ }
12603
+ const userPinnedSlug = getUserPinnedCodexSlug();
12604
+ const verifyOptions = {
12605
+ isCodexInstalled: true,
12606
+ ...userPinnedSlug !== void 0 ? { userPinnedSlug } : {},
12607
+ defaultModel: DEFAULT_MODEL_PER_CLI.codex
12608
+ };
12609
+ return codexModelsVerifyCheck(checkCodexModels(), verifyOptions);
12545
12610
  }
12546
12611
  function checkDataDirs() {
12547
12612
  const result = checkDataDirectory();
@@ -19756,7 +19821,7 @@ function startImprovementReviewScheduler(options) {
19756
19821
  let running = false;
19757
19822
  const runOnce = async () => {
19758
19823
  try {
19759
- const { runImprovementReview: runImprovementReview2, ImprovementReviewInputSchema: ImprovementReviewInputSchema2 } = await import("./improvement-review-2KWRZHI3.js");
19824
+ const { runImprovementReview: runImprovementReview2, ImprovementReviewInputSchema: ImprovementReviewInputSchema2 } = await import("./improvement-review-UAXOYQLC.js");
19760
19825
  const input = ImprovementReviewInputSchema2.parse({ fileIssues });
19761
19826
  const result = await runImprovementReview2(input, { logger: logger22 });
19762
19827
  logger22.info("Scheduled improvement_review complete", {