nexus-agents 11.0.1 → 11.1.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.
@@ -7,7 +7,7 @@ import {
7
7
  toSdkCallback,
8
8
  toolStructuredError,
9
9
  wrapToolWithTimeout
10
- } from "./chunk-6Y55UUWK.js";
10
+ } from "./chunk-GAMT4NFP.js";
11
11
  import {
12
12
  JsonlStore,
13
13
  SECURITY_KEYWORDS,
@@ -2431,4 +2431,4 @@ export {
2431
2431
  runImprovementReview,
2432
2432
  registerImprovementReviewTool
2433
2433
  };
2434
- //# sourceMappingURL=chunk-TW4R2Q55.js.map
2434
+ //# sourceMappingURL=chunk-2JBWGPU6.js.map
@@ -7,7 +7,7 @@ import {
7
7
  VERSION,
8
8
  isNodeVersionSupported,
9
9
  recordServerTransport
10
- } from "./chunk-CXRZQ4NH.js";
10
+ } from "./chunk-I7S3R5SQ.js";
11
11
  import {
12
12
  checkGatewayHealth,
13
13
  cliFailsVerdict,
@@ -2251,7 +2251,7 @@ async function runDoctorFix(result) {
2251
2251
  writeLine2("\u2500".repeat(40));
2252
2252
  let fixCount = 0;
2253
2253
  if (!result.dataDirectory.rootExists || result.dataDirectory.subdirectories.some((d) => !d.exists || !d.writable)) {
2254
- const { initDataDirectories: initDataDirectories2, describeDataDirFix: describeDataDirFix2 } = await import("./setup-data-dir-UWOXXYFS.js");
2254
+ const { initDataDirectories: initDataDirectories2, describeDataDirFix: describeDataDirFix2 } = await import("./setup-data-dir-VCH62L7T.js");
2255
2255
  const outcome = describeDataDirFix2(initDataDirectories2());
2256
2256
  writeLine2(outcome.line);
2257
2257
  if (outcome.counted) fixCount++;
@@ -2371,4 +2371,4 @@ export {
2371
2371
  startStdioServer,
2372
2372
  closeServer
2373
2373
  };
2374
- //# sourceMappingURL=chunk-JKLXFENK.js.map
2374
+ //# sourceMappingURL=chunk-3RUQILL4.js.map
@@ -58,7 +58,7 @@ import {
58
58
  updateStage,
59
59
  withFileLock,
60
60
  writeJobCancelled
61
- } from "./chunk-HBEZ2J4F.js";
61
+ } from "./chunk-PNYCRRT6.js";
62
62
  import {
63
63
  normalizeTopicToCanonical,
64
64
  synthesizeResearch
@@ -77,7 +77,7 @@ import {
77
77
  } from "./chunk-NY7IMAG5.js";
78
78
  import {
79
79
  withPrerequisite
80
- } from "./chunk-TW4R2Q55.js";
80
+ } from "./chunk-2JBWGPU6.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-6Y55UUWK.js";
108
+ } from "./chunk-GAMT4NFP.js";
109
109
  import {
110
110
  generateSecurityPlan
111
111
  } from "./chunk-AX5DBV3M.js";
@@ -187,7 +187,7 @@ import {
187
187
  import {
188
188
  DEFAULT_TASK_TTL_MS,
189
189
  clampTaskTtl
190
- } from "./chunk-JKLXFENK.js";
190
+ } from "./chunk-3RUQILL4.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-CXRZQ4NH.js";
199
+ } from "./chunk-I7S3R5SQ.js";
200
200
  import {
201
201
  BWRAP_READ_ONLY_ARGS,
202
202
  CliDetectionCache,
@@ -46657,7 +46657,7 @@ function buildVotingInput(plan, config) {
46657
46657
  }
46658
46658
  async function executeSingleVote(plan, config, log) {
46659
46659
  try {
46660
- const { executeVoting } = await import("./consensus-vote-IRD5B3SC.js");
46660
+ const { executeVoting } = await import("./consensus-vote-YVJGZGGG.js");
46661
46661
  const input = buildVotingInput(plan, config);
46662
46662
  const result = await executeVoting(input, log);
46663
46663
  return parseVotingResult(result);
@@ -47758,9 +47758,7 @@ function buildDryRunResult(planResult) {
47758
47758
  securityPassed: false,
47759
47759
  securityRan: false,
47760
47760
  ...planResult.planStatus !== void 0 ? { planStatus: planResult.planStatus } : {},
47761
- ...planResult.planVoteReason !== void 0 ? { planVoteReason: planResult.planVoteReason } : {},
47762
- ...planResult.planVoteApprovalPercentage !== void 0 ? { planVoteApprovalPercentage: planResult.planVoteApprovalPercentage } : {},
47763
- ...planResult.planVoteFeedback !== void 0 ? { planVoteFeedback: planResult.planVoteFeedback } : {}
47761
+ ...planVoteEvidence(planResult)
47764
47762
  };
47765
47763
  }
47766
47764
  function buildPlanFailureResult(planResult) {
@@ -47773,9 +47771,16 @@ function buildPlanFailureResult(planResult) {
47773
47771
  securityPassed: false,
47774
47772
  securityRan: false,
47775
47773
  planStatus: planResult.planStatus ?? "unapproved",
47774
+ ...planVoteEvidence(planResult)
47775
+ };
47776
+ }
47777
+ function planVoteEvidence(planResult) {
47778
+ return {
47779
+ ...planResult.planVoteDecision !== void 0 ? { planVoteDecision: planResult.planVoteDecision } : {},
47776
47780
  ...planResult.planVoteReason !== void 0 ? { planVoteReason: planResult.planVoteReason } : {},
47777
47781
  ...planResult.planVoteApprovalPercentage !== void 0 ? { planVoteApprovalPercentage: planResult.planVoteApprovalPercentage } : {},
47778
- ...planResult.planVoteFeedback !== void 0 ? { planVoteFeedback: planResult.planVoteFeedback } : {}
47782
+ ...planResult.planVoteFeedback !== void 0 ? { planVoteFeedback: planResult.planVoteFeedback } : {},
47783
+ ...planResult.planVoteRecordId !== void 0 ? { planVoteRecordId: planResult.planVoteRecordId } : {}
47779
47784
  };
47780
47785
  }
47781
47786
  async function resolveResearch(prior, task, stages, options) {
@@ -48044,7 +48049,16 @@ function buildApprovedPlanResult(plan, iterations, vote, sessionId) {
48044
48049
  approval: vote.approvalPercentage,
48045
48050
  sessionId
48046
48051
  });
48047
- return { plan, iterations };
48052
+ return {
48053
+ plan,
48054
+ iterations,
48055
+ planVoteDecision: "approved",
48056
+ planVoteApprovalPercentage: vote.approvalPercentage,
48057
+ ...recordIdOf(vote)
48058
+ };
48059
+ }
48060
+ function recordIdOf(vote) {
48061
+ return vote?.voteRecordId !== void 0 ? { planVoteRecordId: vote.voteRecordId } : {};
48048
48062
  }
48049
48063
  async function runPlanVote(plan, research, stages, iteration) {
48050
48064
  return withStep({ name: `vote (i=${String(iteration)})`, attrs: { iteration } }, async (ctx) => {
@@ -48071,8 +48085,10 @@ function buildNoQuorumPlanResult(plan, iterations, vote, retries) {
48071
48085
  plan,
48072
48086
  iterations,
48073
48087
  planStatus: "no_quorum",
48088
+ planVoteDecision: "no_quorum",
48074
48089
  planVoteReason: vote.reason,
48075
- planVoteApprovalPercentage: vote.approvalPercentage
48090
+ planVoteApprovalPercentage: vote.approvalPercentage,
48091
+ ...recordIdOf(vote)
48076
48092
  };
48077
48093
  }
48078
48094
  function buildUnapprovedPlanResult(plan, iterations, vote, sessionId) {
@@ -48088,8 +48104,11 @@ function buildUnapprovedPlanResult(plan, iterations, vote, sessionId) {
48088
48104
  plan,
48089
48105
  iterations,
48090
48106
  planStatus: "unapproved",
48107
+ // No vote ran at all only when the iteration limit is zero; don't claim one.
48108
+ ...vote !== void 0 ? { planVoteDecision: "rejected" } : {},
48091
48109
  planVoteApprovalPercentage: approvalPercentage,
48092
- planVoteFeedback: feedback
48110
+ planVoteFeedback: feedback,
48111
+ ...recordIdOf(vote)
48093
48112
  };
48094
48113
  }
48095
48114
  async function implementSingleTask(task, stages, limits) {
@@ -48433,6 +48452,13 @@ function classifyVoteStageResult(votingResult) {
48433
48452
  }
48434
48453
  return { vote: { kind: "approved", approvalPercentage: pct }, label: "Approved" };
48435
48454
  }
48455
+ function withRecordId(classified, recorded) {
48456
+ if (!recorded.voteRecord.persisted) return classified;
48457
+ return {
48458
+ vote: { ...classified.vote, voteRecordId: recorded.voteRecord.record.id },
48459
+ label: classified.label
48460
+ };
48461
+ }
48436
48462
  async function failClosedVote(config, start, error) {
48437
48463
  const msg = error instanceof Error ? error.message : String(error);
48438
48464
  emitStageEvent2("vote", "failed", { error: msg });
@@ -48463,7 +48489,7 @@ function createVoteStage({ config, startStage }) {
48463
48489
  const strategy = config.votingStrategy ?? "higher_order";
48464
48490
  await postProgress(config, "Vote", `Running consensus with ${strategy} strategy...`);
48465
48491
  try {
48466
- const { executeVoting } = await import("./consensus-vote-IRD5B3SC.js");
48492
+ const { executeVoting } = await import("./consensus-vote-YVJGZGGG.js");
48467
48493
  const proposal = buildVoteProposal(plan, research);
48468
48494
  const votingResult = await executeVoting(
48469
48495
  {
@@ -48479,8 +48505,11 @@ function createVoteStage({ config, startStage }) {
48479
48505
  // stage deadline or a job cancel.
48480
48506
  signal !== void 0 ? { signal } : void 0
48481
48507
  );
48482
- await recordCompletedVote(proposal, votingResult, logger46, { ...PIPELINE_VOTE, signal });
48483
- const { vote, label } = classifyVoteStageResult(votingResult);
48508
+ const recorded = await recordCompletedVote(proposal, votingResult, logger46, {
48509
+ ...PIPELINE_VOTE,
48510
+ signal
48511
+ });
48512
+ const { vote, label } = withRecordId(classifyVoteStageResult(votingResult), recorded);
48484
48513
  const ms = getTimeProvider().now() - start;
48485
48514
  emitStageEvent2("vote", "completed", { durationMs: ms });
48486
48515
  recordOutcome({
@@ -53916,7 +53945,10 @@ function buildStructuredOutput(result, simulated) {
53916
53945
  ...simulated ? { simulated: true } : {},
53917
53946
  completed: result.completed,
53918
53947
  ...changesField(result),
53948
+ // Kept for compatibility: `false` here is NOT a verdict unless `securityRan`
53949
+ // is true. `security` below is the field that cannot misread (#7181).
53919
53950
  securityPassed: result.securityPassed,
53951
+ security: securityStatus(result),
53920
53952
  // #4772: these two are what make `completed: false` legible. Without them a
53921
53953
  // caller cannot tell a failed planner from a successful dry run, or a
53922
53954
  // security rejection from a gate that never ran — which is the whole point
@@ -53928,6 +53960,8 @@ function buildStructuredOutput(result, simulated) {
53928
53960
  ...result.planVoteReason !== void 0 ? { planVoteReason: result.planVoteReason } : {},
53929
53961
  ...result.planVoteApprovalPercentage !== void 0 ? { planVoteApprovalPercentage: result.planVoteApprovalPercentage } : {},
53930
53962
  ...result.planVoteFeedback !== void 0 ? { planVoteFeedback: result.planVoteFeedback } : {},
53963
+ // #7181: the dry run's verdict, which otherwise reached only the ledger.
53964
+ ...planVoteVerdictFields(result),
53931
53965
  // #4993 added `dryRun` to DevPipelineResult for exactly the reason above —
53932
53966
  // it says `completed: false` was the request, not a fault — and then did
53933
53967
  // not list it here either. Same omission, same function, under the comment
@@ -53955,6 +53989,16 @@ function changesField(result) {
53955
53989
  function warningsField(result) {
53956
53990
  return result.warnings !== void 0 ? { warnings: result.warnings } : {};
53957
53991
  }
53992
+ function securityStatus(result) {
53993
+ if (result.securityRan !== true) return { status: "unmeasured" };
53994
+ return { status: result.securityPassed ? "passed" : "failed" };
53995
+ }
53996
+ function planVoteVerdictFields(result) {
53997
+ return {
53998
+ ...result.planVoteDecision !== void 0 ? { planVoteDecision: result.planVoteDecision } : {},
53999
+ ...result.planVoteRecordId !== void 0 ? { planVoteRecordId: result.planVoteRecordId } : {}
54000
+ };
54001
+ }
53958
54002
 
53959
54003
  // src/mcp/tools/dev-pipeline-tool.ts
53960
54004
  import { resolve as resolve10 } from "node:path";
@@ -58425,4 +58469,4 @@ export {
58425
58469
  initializeSandbox,
58426
58470
  getSandboxMode
58427
58471
  };
58428
- //# sourceMappingURL=chunk-OKMSQJQJ.js.map
58472
+ //# sourceMappingURL=chunk-7HPCEKK7.js.map