nexus-agents 11.1.9 → 11.2.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.
@@ -21,7 +21,7 @@ import {
21
21
  toolSuccess,
22
22
  withProgressHeartbeat,
23
23
  wrapToolWithTimeout
24
- } from "./chunk-GGITROGG.js";
24
+ } from "./chunk-P7KV3MFN.js";
25
25
  import {
26
26
  getToolMemory
27
27
  } from "./chunk-PPH3CAMR.js";
@@ -30,7 +30,7 @@ import {
30
30
  } from "./chunk-EZNIYU5T.js";
31
31
  import {
32
32
  VERSION
33
- } from "./chunk-AW345IU2.js";
33
+ } from "./chunk-ZPVSLMZS.js";
34
34
  import {
35
35
  ModelBoundAdapter,
36
36
  UNVERIFIABLE_STDERR_RE,
@@ -9915,4 +9915,4 @@ export {
9915
9915
  CONSENSUS_VOTE_TOOL_SCHEMA,
9916
9916
  registerConsensusVoteTool
9917
9917
  };
9918
- //# sourceMappingURL=chunk-3PIHLQS2.js.map
9918
+ //# sourceMappingURL=chunk-CMZO6EJ2.js.map
@@ -7,7 +7,7 @@ import {
7
7
  VERSION,
8
8
  isNodeVersionSupported,
9
9
  recordServerTransport
10
- } from "./chunk-AW345IU2.js";
10
+ } from "./chunk-ZPVSLMZS.js";
11
11
  import {
12
12
  checkGatewayHealth,
13
13
  cliFailsVerdict,
@@ -2263,7 +2263,7 @@ async function runDoctorFix(result) {
2263
2263
  writeLine2("\u2500".repeat(40));
2264
2264
  let fixCount = 0;
2265
2265
  if (!result.dataDirectory.rootExists || result.dataDirectory.subdirectories.some((d) => !d.exists || !d.writable)) {
2266
- const { initDataDirectories: initDataDirectories2, describeDataDirFix: describeDataDirFix2 } = await import("./setup-data-dir-5E3IIAVV.js");
2266
+ const { initDataDirectories: initDataDirectories2, describeDataDirFix: describeDataDirFix2 } = await import("./setup-data-dir-PK64C6F5.js");
2267
2267
  const outcome = describeDataDirFix2(initDataDirectories2());
2268
2268
  writeLine2(outcome.line);
2269
2269
  if (outcome.counted) fixCount++;
@@ -2383,4 +2383,4 @@ export {
2383
2383
  startStdioServer,
2384
2384
  closeServer
2385
2385
  };
2386
- //# sourceMappingURL=chunk-TVU4RTLM.js.map
2386
+ //# sourceMappingURL=chunk-JAKNY347.js.map
@@ -58,7 +58,7 @@ import {
58
58
  updateStage,
59
59
  withFileLock,
60
60
  writeJobCancelled
61
- } from "./chunk-3PIHLQS2.js";
61
+ } from "./chunk-CMZO6EJ2.js";
62
62
  import {
63
63
  normalizeTopicToCanonical,
64
64
  synthesizeResearch
@@ -77,7 +77,7 @@ import {
77
77
  } from "./chunk-HQ2SMW4Y.js";
78
78
  import {
79
79
  withPrerequisite
80
- } from "./chunk-7KBAAFNA.js";
80
+ } from "./chunk-LWR2CTS3.js";
81
81
  import {
82
82
  NOOP_NOTIFIER,
83
83
  RateLimiter,
@@ -105,7 +105,7 @@ import {
105
105
  toolSuccess,
106
106
  withProgressHeartbeat,
107
107
  wrapToolWithTimeout
108
- } from "./chunk-GGITROGG.js";
108
+ } from "./chunk-P7KV3MFN.js";
109
109
  import {
110
110
  generateSecurityPlan
111
111
  } from "./chunk-6ZTMMN2N.js";
@@ -187,7 +187,7 @@ import {
187
187
  import {
188
188
  DEFAULT_TASK_TTL_MS,
189
189
  clampTaskTtl
190
- } from "./chunk-TVU4RTLM.js";
190
+ } from "./chunk-JAKNY347.js";
191
191
  import {
192
192
  allOf,
193
193
  anyOf
@@ -196,7 +196,7 @@ import {
196
196
  VERSION,
197
197
  createRequestContext,
198
198
  measuredTrustTier
199
- } from "./chunk-AW345IU2.js";
199
+ } from "./chunk-ZPVSLMZS.js";
200
200
  import {
201
201
  BWRAP_READ_ONLY_ARGS,
202
202
  CliDetectionCache,
@@ -29751,6 +29751,13 @@ var logger17 = createLogger({ component: "GraphExecutor" });
29751
29751
  function isPolicyBlockedError(error) {
29752
29752
  return error instanceof Error && error.name === "PolicyBlockedError";
29753
29753
  }
29754
+ function stageFailureDetails(error) {
29755
+ if (!(error instanceof Error) || error.name !== "StageFailureError") return {};
29756
+ if (!("errorDetail" in error)) return {};
29757
+ const detail = error.errorDetail;
29758
+ if (detail === null || typeof detail !== "object" || Array.isArray(detail)) return {};
29759
+ return { errorDetail: detail };
29760
+ }
29754
29761
  function failureClassification(category) {
29755
29762
  return { errorCategory: category, isRetryable: defaultRetryable(category) };
29756
29763
  }
@@ -30184,7 +30191,8 @@ function failedNodeResult(nodeId, error, startTime) {
30184
30191
  durationMs: getTimeProvider().now() - startTime,
30185
30192
  status: "failed",
30186
30193
  error: message,
30187
- ...failureClassification(category)
30194
+ ...failureClassification(category),
30195
+ ...stageFailureDetails(error)
30188
30196
  };
30189
30197
  }
30190
30198
  async function executeSingleNode(graph, nodeId, state, nodeCtx, options) {
@@ -45840,12 +45848,14 @@ function resolveStageTimeoutMs(stageId, stageTimeoutMs, otherStageDefaultMs) {
45840
45848
  // src/pipeline/pipeline-graph.ts
45841
45849
  var logger35 = createLogger({ component: "pipeline-graph" });
45842
45850
  var StageFailureError = class extends Error {
45843
- constructor(stageId, stageError) {
45851
+ constructor(stageId, stageError, errorDetail) {
45844
45852
  super(`Stage '${stageId}' failed: ${stageError ?? "no error message"}`);
45845
45853
  this.stageId = stageId;
45854
+ this.errorDetail = errorDetail;
45846
45855
  this.name = "StageFailureError";
45847
45856
  }
45848
45857
  stageId;
45858
+ errorDetail;
45849
45859
  };
45850
45860
  function compilePipelineGraph(template, stages, options) {
45851
45861
  const missing = findMissingStages(template, stages);
@@ -45911,7 +45921,7 @@ function createNodeHandler(stage, template) {
45911
45921
  };
45912
45922
  const output2 = await stage.execute(context);
45913
45923
  if (!output2.success) {
45914
- throw new StageFailureError(stage.id, output2.error);
45924
+ throw new StageFailureError(stage.id, output2.error, { [output2.stateKey]: output2.value });
45915
45925
  }
45916
45926
  return { [output2.stateKey]: output2.value };
45917
45927
  };
@@ -46022,6 +46032,7 @@ async function executeAndReport(args) {
46022
46032
  // see how far the run got before it failed.
46023
46033
  finalState: result.value.finalState,
46024
46034
  error: failures,
46035
+ ...failedNodeDetails(result.value.nodeResults),
46025
46036
  ...stamp(coverage, options)
46026
46037
  };
46027
46038
  }
@@ -46038,6 +46049,11 @@ async function executeAndReport(args) {
46038
46049
  function stamp(coverage, options) {
46039
46050
  return { ...coverage, ...options?.dryRun === true ? { dryRun: true } : {} };
46040
46051
  }
46052
+ function failedNodeDetails(nodeResults) {
46053
+ const details = nodeResults.filter((node) => node.status === "failed" && node.errorDetail !== void 0).map((node) => node.errorDetail);
46054
+ if (details.length === 0) return {};
46055
+ return { errorDetail: Object.assign({}, ...details) };
46056
+ }
46041
46057
  function describeFailedNodes(nodeResults) {
46042
46058
  const failed = nodeResults.filter((n) => n.status === "failed");
46043
46059
  if (failed.length === 0) return null;
@@ -46669,7 +46685,7 @@ function buildVotingInput(plan, config) {
46669
46685
  }
46670
46686
  async function executeSingleVote(plan, config, log) {
46671
46687
  try {
46672
- const { executeVoting } = await import("./consensus-vote-5GG5JFLD.js");
46688
+ const { executeVoting } = await import("./consensus-vote-ELSFWGTG.js");
46673
46689
  const input = buildVotingInput(plan, config);
46674
46690
  const result = await executeVoting(input, log);
46675
46691
  return parseVotingResult(result);
@@ -48501,7 +48517,7 @@ function createVoteStage({ config, startStage }) {
48501
48517
  const strategy = config.votingStrategy ?? "higher_order";
48502
48518
  await postProgress(config, "Vote", `Running consensus with ${strategy} strategy...`);
48503
48519
  try {
48504
- const { executeVoting } = await import("./consensus-vote-5GG5JFLD.js");
48520
+ const { executeVoting } = await import("./consensus-vote-ELSFWGTG.js");
48505
48521
  const proposal = buildVoteProposal(plan, research);
48506
48522
  const votingResult = await executeVoting(
48507
48523
  {
@@ -53972,9 +53988,6 @@ function buildStructuredOutput(result, simulated) {
53972
53988
  ...result.harnessMode !== void 0 ? { harnessMode: result.harnessMode } : {},
53973
53989
  ...result.securityRan !== void 0 ? { securityRan: result.securityRan } : {},
53974
53990
  ...result.planStatus !== void 0 ? { planStatus: result.planStatus } : {},
53975
- ...result.planVoteReason !== void 0 ? { planVoteReason: result.planVoteReason } : {},
53976
- ...result.planVoteApprovalPercentage !== void 0 ? { planVoteApprovalPercentage: result.planVoteApprovalPercentage } : {},
53977
- ...result.planVoteFeedback !== void 0 ? { planVoteFeedback: result.planVoteFeedback } : {},
53978
53991
  // #7181: the dry run's verdict, which otherwise reached only the ledger.
53979
53992
  ...planVoteVerdictFields(result),
53980
53993
  // #4993 added `dryRun` to DevPipelineResult for exactly the reason above —
@@ -54011,7 +54024,10 @@ function securityStatus(result) {
54011
54024
  function planVoteVerdictFields(result) {
54012
54025
  return {
54013
54026
  ...result.planVoteDecision !== void 0 ? { planVoteDecision: result.planVoteDecision } : {},
54014
- ...result.planVoteRecordId !== void 0 ? { planVoteRecordId: result.planVoteRecordId } : {}
54027
+ ...result.planVoteApprovalPercentage !== void 0 ? { planVoteApprovalPercentage: result.planVoteApprovalPercentage } : {},
54028
+ ...result.planVoteRecordId !== void 0 ? { planVoteRecordId: result.planVoteRecordId } : {},
54029
+ ...result.planVoteReason !== void 0 ? { planVoteReason: result.planVoteReason } : {},
54030
+ ...result.planVoteFeedback !== void 0 ? { planVoteFeedback: result.planVoteFeedback } : {}
54015
54031
  };
54016
54032
  }
54017
54033
 
@@ -54547,6 +54563,8 @@ function buildOutput3(result, simulated) {
54547
54563
  // `dryRunStopAfter`, so `success: true` with `templateId: 'dev'` used to be
54548
54564
  // byte-identical whether qa and security ran or were sliced away. Say which.
54549
54565
  ...result.dryRun === true ? { dryRun: true } : {},
54566
+ // #7240: the terminal vote is the dry run's result, not just ledger output.
54567
+ ...dryRunVoteFields(result),
54550
54568
  stagesPlanned: result.stagesPlanned,
54551
54569
  stagesRun: result.stagesRun,
54552
54570
  // #4170: stamped only on an explicit NEXUS_ALLOW_SIMULATE=1 opt-in run so
@@ -54556,6 +54574,37 @@ function buildOutput3(result, simulated) {
54556
54574
  rateLimitHint: result.error?.toLowerCase().includes("rate limit") === true ? "Consider using quickMode or increasing delay between pipeline runs" : void 0
54557
54575
  };
54558
54576
  }
54577
+ var VoteEvidenceSchema = z107.object({
54578
+ approvalPercentage: z107.number(),
54579
+ voteRecordId: z107.string().optional()
54580
+ });
54581
+ var VoteResultSchema = z107.discriminatedUnion("kind", [
54582
+ VoteEvidenceSchema.extend({ kind: z107.literal("approved") }),
54583
+ VoteEvidenceSchema.extend({ kind: z107.literal("rejected"), feedback: z107.string() }),
54584
+ VoteEvidenceSchema.extend({ kind: z107.literal("no_quorum"), reason: z107.string() })
54585
+ ]);
54586
+ function isVoteResult(value) {
54587
+ return VoteResultSchema.safeParse(value).success;
54588
+ }
54589
+ function voteFromState(state) {
54590
+ const output2 = state?.[PIPELINE_STATE_KEYS.VOTE_RESULT];
54591
+ return output2 !== null && typeof output2 === "object" && "vote" in output2 ? output2.vote : void 0;
54592
+ }
54593
+ function dryRunVoteFields(result) {
54594
+ if (result.dryRun !== true) return {};
54595
+ const failedVote = voteFromState(result.errorDetail);
54596
+ const stateVote = voteFromState(result.finalState);
54597
+ const vote = isVoteResult(failedVote) ? failedVote : isVoteResult(stateVote) ? stateVote : void 0;
54598
+ if (vote === void 0) return {};
54599
+ const measured = vote.kind !== "no_quorum" || vote.voteRecordId !== void 0;
54600
+ return planVoteVerdictFields({
54601
+ planVoteDecision: vote.kind,
54602
+ ...measured ? { planVoteApprovalPercentage: vote.approvalPercentage } : {},
54603
+ ...vote.voteRecordId !== void 0 ? { planVoteRecordId: vote.voteRecordId } : {},
54604
+ ...vote.kind === "no_quorum" ? { planVoteReason: vote.reason } : {},
54605
+ ...vote.kind === "rejected" ? { planVoteFeedback: vote.feedback } : {}
54606
+ });
54607
+ }
54559
54608
  async function resolveTask(task, specFile) {
54560
54609
  if (specFile === void 0) return task;
54561
54610
  const resolved = resolveInsideRoot(specFile);
@@ -58485,4 +58534,4 @@ export {
58485
58534
  initializeSandbox,
58486
58535
  getSandboxMode
58487
58536
  };
58488
- //# sourceMappingURL=chunk-BB7YKZSY.js.map
58537
+ //# sourceMappingURL=chunk-JVBESFZY.js.map