nexus-agents 8.126.12 → 8.127.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.
@@ -5,7 +5,7 @@ import {
5
5
  getCurrentRequestContext,
6
6
  runWithRequestContext,
7
7
  serverCallerInfo
8
- } from "./chunk-T3I43BSR.js";
8
+ } from "./chunk-EMVCKQUR.js";
9
9
  import {
10
10
  DEFAULT_EXECUTION_MODE
11
11
  } from "./chunk-ECJ52NSK.js";
@@ -2253,4 +2253,4 @@ export {
2253
2253
  DEFAULT_CONSENSUS_CONFIG,
2254
2254
  ConsensusMetricsSchema
2255
2255
  };
2256
- //# sourceMappingURL=chunk-2P535CW6.js.map
2256
+ //# sourceMappingURL=chunk-CEYK6YQ4.js.map
@@ -9,7 +9,7 @@ import {
9
9
  } from "./chunk-UVQIYBDK.js";
10
10
  import {
11
11
  withPrerequisite
12
- } from "./chunk-P2DX7UGV.js";
12
+ } from "./chunk-Y6PEPMRA.js";
13
13
  import {
14
14
  generateSecurityPlan
15
15
  } from "./chunk-MBQ7YDWZ.js";
@@ -41,7 +41,7 @@ import {
41
41
  import {
42
42
  DEFAULT_TASK_TTL_MS,
43
43
  clampTaskTtl
44
- } from "./chunk-CUXWCIOF.js";
44
+ } from "./chunk-WBEZP36V.js";
45
45
  import {
46
46
  executeExpert
47
47
  } from "./chunk-SRLSTOJL.js";
@@ -96,7 +96,7 @@ import {
96
96
  withFileLock,
97
97
  withWarnings,
98
98
  writeJobCancelled
99
- } from "./chunk-XNDS43GD.js";
99
+ } from "./chunk-GNT2N32Z.js";
100
100
  import {
101
101
  NOOP_NOTIFIER,
102
102
  RateLimiter,
@@ -122,12 +122,12 @@ import {
122
122
  toolSuccessStructured,
123
123
  withProgressHeartbeat,
124
124
  wrapToolWithTimeout
125
- } from "./chunk-2P535CW6.js";
125
+ } from "./chunk-CEYK6YQ4.js";
126
126
  import {
127
127
  VERSION,
128
128
  createRequestContext,
129
129
  measuredTrustTier
130
- } from "./chunk-T3I43BSR.js";
130
+ } from "./chunk-EMVCKQUR.js";
131
131
  import {
132
132
  allOf,
133
133
  anyOf
@@ -47060,7 +47060,7 @@ function buildVotingInput(plan, config) {
47060
47060
  }
47061
47061
  async function executeSingleVote(plan, config, log) {
47062
47062
  try {
47063
- const { executeVoting } = await import("./consensus-vote-VTVX2HEX.js");
47063
+ const { executeVoting } = await import("./consensus-vote-U5AY5A4F.js");
47064
47064
  const input = buildVotingInput(plan, config);
47065
47065
  const result = await executeVoting(input, log);
47066
47066
  return parseVotingResult(result);
@@ -48207,7 +48207,7 @@ function createVoteStage({ config, startStage }) {
48207
48207
  const strategy = config.votingStrategy ?? "higher_order";
48208
48208
  await postProgress(config, "Vote", `Running consensus with ${strategy} strategy...`);
48209
48209
  try {
48210
- const { executeVoting } = await import("./consensus-vote-VTVX2HEX.js");
48210
+ const { executeVoting } = await import("./consensus-vote-U5AY5A4F.js");
48211
48211
  const proposal = buildVoteProposal(plan, research);
48212
48212
  const votingResult = await executeVoting(
48213
48213
  {
@@ -49272,7 +49272,10 @@ ${task}
49272
49272
 
49273
49273
  ${contextBlock}`;
49274
49274
  await postProgress(config, "Plan", feedback !== void 0 ? "Revising..." : "Planning...");
49275
- const r = await runExpert(guard, "architecture", prompt, "plan", { signal });
49275
+ const r = await runExpert(guard, "architecture", prompt, "plan", {
49276
+ signal,
49277
+ accessMode: "read-only-analysis"
49278
+ });
49276
49279
  emitStageEvent2("plan", r.success ? "completed" : "failed", {
49277
49280
  durationMs: r.durationMs,
49278
49281
  model: r.model
@@ -49307,7 +49310,7 @@ Return JSON: [{id,title,description,assignedTo}]
49307
49310
 
49308
49311
  ${plan}`,
49309
49312
  "decompose",
49310
- { signal }
49313
+ { signal, accessMode: "read-only-analysis" }
49311
49314
  );
49312
49315
  const tasks = parseTasksFromResponse(r.text, plan);
49313
49316
  emitStageEvent2("decompose", "completed", { durationMs: r.durationMs });
@@ -49340,7 +49343,10 @@ QA feedback: ${task.feedback}` : "";
49340
49343
  ${task.title}
49341
49344
  ${task.description}${fb}`,
49342
49345
  task.id,
49343
- { signal, accessMode: IMPLEMENT_ACCESS_MODE }
49346
+ {
49347
+ signal,
49348
+ accessMode: config.dryRun === true ? "read-only-analysis" : IMPLEMENT_ACCESS_MODE
49349
+ }
49344
49350
  );
49345
49351
  emitStageEvent2(`impl-${task.id}`, r.success ? "completed" : "failed", {
49346
49352
  durationMs: r.durationMs,
@@ -49529,7 +49535,10 @@ function createAgentStages(config = {}) {
49529
49535
  implement: createImplementStage(deps),
49530
49536
  // #6792: implement passes no workDir, so its expert edits the MCP
49531
49537
  // server's cwd; the pipeline warns when a quality gate then runs there.
49532
- implementWorkspace: { accessMode: IMPLEMENT_ACCESS_MODE, directory: process.cwd() },
49538
+ implementWorkspace: {
49539
+ accessMode: config.dryRun === true ? "read-only-analysis" : IMPLEMENT_ACCESS_MODE,
49540
+ directory: process.cwd()
49541
+ },
49533
49542
  qaReview: createQaReviewStage(deps),
49534
49543
  qualityGate: createQualityGateStage(deps),
49535
49544
  securityScan: createSecurityScanStage(deps)
@@ -50669,8 +50678,8 @@ var PrReviewInputSchema = z102.object({
50669
50678
  ),
50670
50679
  simulate: z102.boolean().default(false).describe("Use simulated voters (testing only; never ship live with this true)"),
50671
50680
  /**
50672
- * Error policy (#4132). `standard` (default) keeps the pre-#4132 aggregation:
50673
- * an errored voter is simply excluded from the panel. `absolute_quorum` gates
50681
+ * Error policy (#4132). `standard` (default) excludes absent voters but
50682
+ * requires a majority of the requested panel to approve. `absolute_quorum` gates
50674
50683
  * the verified-approve verdict on a COMPLETE, error-free panel with the
50675
50684
  * contrarian (catfish) present and approving — any errored voter (especially
50676
50685
  * catfish) degrades the verdict to a recoverable `{ decision: 'abstain',
@@ -50680,7 +50689,7 @@ var PrReviewInputSchema = z102.object({
50680
50689
  * run first).
50681
50690
  */
50682
50691
  errorPolicy: z102.enum(["standard", "absolute_quorum"]).default("standard").describe(
50683
- "Error policy (#4132). 'standard' (default): errored voters excluded. 'absolute_quorum': any errored voter \u2014 esp. the contrarian \u2014 degrades a would-be approve to a recoverable abstain (verified:false); never manufactures a verified approve from an induced error."
50692
+ "Error policy (#4132). 'standard' (default): absent voters excluded; approval requires a majority of the requested panel. 'absolute_quorum': any errored voter \u2014 esp. the contrarian \u2014 degrades a would-be approve to a recoverable abstain (verified:false); never manufactures a verified approve from an induced error."
50684
50693
  ),
50685
50694
  // #6123: same field as consensus_vote — the panel judges the caller's project.
50686
50695
  project: VoterProjectInputSchema,
@@ -50994,7 +51003,18 @@ function discloseSeverityFloor(aggregate, valid) {
50994
51003
  };
50995
51004
  }
50996
51005
  function aggregatePanelVerdict(reviews, valid, decision) {
50997
- const complete = valid.length === reviews.length;
51006
+ if (decision === "approve" && valid.length <= reviews.length / 2) {
51007
+ const quorum = Math.floor(reviews.length / 2) + 1;
51008
+ return discloseSeverityFloor(
51009
+ {
51010
+ decision: "abstain",
51011
+ verified: false,
51012
+ reason: `incomplete panel: ${String(valid.length)} of ${String(reviews.length)} voters responded; no_quorum: needs ${String(quorum)} reviewers`
51013
+ },
51014
+ valid
51015
+ );
51016
+ }
51017
+ const complete = reviews.length > 0 && valid.length === reviews.length;
50998
51018
  return discloseSeverityFloor(
50999
51019
  complete ? { decision, verified: true } : {
51000
51020
  decision,
@@ -53839,6 +53859,7 @@ async function createStages(input, trustTier, inputSanitization) {
53839
53859
  const backend = backendChoice === "json" && input.repo !== void 0 ? await detectBackend() : backendChoice;
53840
53860
  const tracker = input.repo !== void 0 ? createTaskTracker({ backend, repo: input.repo, labels: input.labels }) : void 0;
53841
53861
  return createAgentStages({
53862
+ dryRun: input.dryRun,
53842
53863
  ...input.sessionId !== void 0 ? { sessionId: input.sessionId } : {},
53843
53864
  ...trustTier !== void 0 ? { callerTrustTier: trustTier, trustTier } : {},
53844
53865
  ...inputSanitization,
@@ -54161,6 +54182,15 @@ async function executePipelineBody(task, stages, run) {
54161
54182
  }
54162
54183
  return toolSuccessStructured(output2);
54163
54184
  }
54185
+ function createPipelineAgentStages(input, config) {
54186
+ return createAgentStages({
54187
+ dryRun: input.dryRun,
54188
+ simulateVotes: input.simulateVotes,
54189
+ votingStrategy: input.votingStrategy,
54190
+ quickMode: input.quickMode,
54191
+ ...config
54192
+ });
54193
+ }
54164
54194
  async function runPipelineHandler(args, logger58, callerTrustTier, sanitization) {
54165
54195
  const parsed = PipelineInputSchema.safeParse(args);
54166
54196
  if (!parsed.success) {
@@ -54178,10 +54208,7 @@ async function runPipelineHandler(args, logger58, callerTrustTier, sanitization)
54178
54208
  }
54179
54209
  try {
54180
54210
  const task = await resolveTask(input.task, input.specFile);
54181
- const agentStages = createAgentStages({
54182
- simulateVotes: input.simulateVotes,
54183
- votingStrategy: input.votingStrategy,
54184
- quickMode: input.quickMode,
54211
+ const agentStages = createPipelineAgentStages(input, {
54185
54212
  callerTrustTier,
54186
54213
  trustTier: callerTrustTier,
54187
54214
  ...sanitization,
@@ -57891,4 +57918,4 @@ export {
57891
57918
  initializeSandbox,
57892
57919
  getSandboxMode
57893
57920
  };
57894
- //# sourceMappingURL=chunk-RGH2772D.js.map
57921
+ //# sourceMappingURL=chunk-CSTOPTU7.js.map