nexus-agents 8.47.9 → 8.47.11

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.
Files changed (26) hide show
  1. package/dist/{chunk-KQBS4UW5.js → chunk-67LMMHAI.js} +2 -2
  2. package/dist/{chunk-KQBS4UW5.js.map → chunk-67LMMHAI.js.map} +1 -1
  3. package/dist/{chunk-UPOY72RW.js → chunk-AKUQA3ER.js} +2 -2
  4. package/dist/{chunk-J4WZDK2X.js → chunk-B7T5JDPV.js} +3 -3
  5. package/dist/{chunk-XF2MVUCH.js → chunk-K7WLHNKH.js} +7 -7
  6. package/dist/{chunk-SNCZAGQZ.js → chunk-TBF46HBC.js} +2 -2
  7. package/dist/{chunk-7WZHA4DG.js → chunk-XFSOE2UU.js} +67 -19
  8. package/dist/chunk-XFSOE2UU.js.map +1 -0
  9. package/dist/cli.d.ts +1 -1
  10. package/dist/cli.js +11 -7
  11. package/dist/cli.js.map +1 -1
  12. package/dist/{consensus-vote-MLBVGI2A.js → consensus-vote-ZBAGPGOG.js} +4 -4
  13. package/dist/{consensus-vote-types-BKoR41Kx.d.ts → consensus-vote-types-BAJJebed.d.ts} +9 -0
  14. package/dist/{improvement-review-CEX6ZSWA.js → improvement-review-MZEV5GFW.js} +4 -4
  15. package/dist/index.d.ts +2 -2
  16. package/dist/index.js +6 -6
  17. package/dist/{setup-data-dir-3TOTRWJ5.js → setup-data-dir-WUQEPLFM.js} +3 -3
  18. package/package.json +1 -1
  19. package/dist/chunk-7WZHA4DG.js.map +0 -1
  20. /package/dist/{chunk-UPOY72RW.js.map → chunk-AKUQA3ER.js.map} +0 -0
  21. /package/dist/{chunk-J4WZDK2X.js.map → chunk-B7T5JDPV.js.map} +0 -0
  22. /package/dist/{chunk-XF2MVUCH.js.map → chunk-K7WLHNKH.js.map} +0 -0
  23. /package/dist/{chunk-SNCZAGQZ.js.map → chunk-TBF46HBC.js.map} +0 -0
  24. /package/dist/{consensus-vote-MLBVGI2A.js.map → consensus-vote-ZBAGPGOG.js.map} +0 -0
  25. /package/dist/{improvement-review-CEX6ZSWA.js.map → improvement-review-MZEV5GFW.js.map} +0 -0
  26. /package/dist/{setup-data-dir-3TOTRWJ5.js.map → setup-data-dir-WUQEPLFM.js.map} +0 -0
@@ -1,6 +1,6 @@
1
1
  // src/version.ts
2
2
  import semver from "semver";
3
- var VERSION = true ? "8.47.9" : "dev";
3
+ var VERSION = true ? "8.47.11" : "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-KQBS4UW5.js.map
14
+ //# sourceMappingURL=chunk-67LMMHAI.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/version.ts"],"sourcesContent":["/**\n * nexus-agents - Version constant\n *\n * Injected at build time via tsup define from package.json.\n * Do NOT edit VERSION manually — it is replaced during build.\n */\n\nimport semver from 'semver';\n\ndeclare const __NEXUS_VERSION__: string;\n\nexport const VERSION: string = typeof __NEXUS_VERSION__ !== 'undefined' ? __NEXUS_VERSION__ : 'dev';\n\n/** Supported Node.js versions. Pinned to package.json by a regression test. */\nexport const NODE_ENGINE_RANGE = '>=22.5.0';\n\n/** Returns whether a Node.js version satisfies the package engine requirement. */\nexport function isNodeVersionSupported(version: string): boolean {\n return semver.satisfies(version, NODE_ENGINE_RANGE);\n}\n"],"mappings":";AAOA,OAAO,YAAY;AAIZ,IAAM,UAAkB,OAA2C,WAAoB;AAGvF,IAAM,oBAAoB;AAG1B,SAAS,uBAAuB,SAA0B;AAC/D,SAAO,OAAO,UAAU,SAAS,iBAAiB;AACpD;","names":[]}
1
+ {"version":3,"sources":["../src/version.ts"],"sourcesContent":["/**\n * nexus-agents - Version constant\n *\n * Injected at build time via tsup define from package.json.\n * Do NOT edit VERSION manually — it is replaced during build.\n */\n\nimport semver from 'semver';\n\ndeclare const __NEXUS_VERSION__: string;\n\nexport const VERSION: string = typeof __NEXUS_VERSION__ !== 'undefined' ? __NEXUS_VERSION__ : 'dev';\n\n/** Supported Node.js versions. Pinned to package.json by a regression test. */\nexport const NODE_ENGINE_RANGE = '>=22.5.0';\n\n/** Returns whether a Node.js version satisfies the package engine requirement. */\nexport function isNodeVersionSupported(version: string): boolean {\n return semver.satisfies(version, NODE_ENGINE_RANGE);\n}\n"],"mappings":";AAOA,OAAO,YAAY;AAIZ,IAAM,UAAkB,OAA2C,YAAoB;AAGvF,IAAM,oBAAoB;AAG1B,SAAS,uBAAuB,SAA0B;AAC/D,SAAO,OAAO,UAAU,SAAS,iBAAiB;AACpD;","names":[]}
@@ -7,7 +7,7 @@ import {
7
7
  toolStructuredError,
8
8
  toolSuccessStructured,
9
9
  wrapToolWithTimeout
10
- } from "./chunk-SNCZAGQZ.js";
10
+ } from "./chunk-TBF46HBC.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-UPOY72RW.js.map
2176
+ //# sourceMappingURL=chunk-AKUQA3ER.js.map
@@ -8,7 +8,7 @@ import {
8
8
  NODE_ENGINE_RANGE,
9
9
  VERSION,
10
10
  isNodeVersionSupported
11
- } from "./chunk-KQBS4UW5.js";
11
+ } from "./chunk-67LMMHAI.js";
12
12
  import {
13
13
  claimGlobalRegistry
14
14
  } from "./chunk-QOKB6MWY.js";
@@ -1247,7 +1247,7 @@ async function runDoctorFix(result) {
1247
1247
  writeLine2("\u2500".repeat(40));
1248
1248
  let fixCount = 0;
1249
1249
  if (!result.dataDirectory.rootExists || result.dataDirectory.subdirectories.some((d) => !d.exists || !d.writable)) {
1250
- const { initDataDirectories: initDataDirectories2, describeDataDirFix: describeDataDirFix2 } = await import("./setup-data-dir-3TOTRWJ5.js");
1250
+ const { initDataDirectories: initDataDirectories2, describeDataDirFix: describeDataDirFix2 } = await import("./setup-data-dir-WUQEPLFM.js");
1251
1251
  const outcome = describeDataDirFix2(initDataDirectories2());
1252
1252
  writeLine2(outcome.line);
1253
1253
  if (outcome.counted) fixCount++;
@@ -1349,4 +1349,4 @@ export {
1349
1349
  startStdioServer,
1350
1350
  closeServer
1351
1351
  };
1352
- //# sourceMappingURL=chunk-J4WZDK2X.js.map
1352
+ //# sourceMappingURL=chunk-B7T5JDPV.js.map
@@ -21,7 +21,7 @@ import {
21
21
  import {
22
22
  DEFAULT_TASK_TTL_MS,
23
23
  clampTaskTtl
24
- } from "./chunk-J4WZDK2X.js";
24
+ } from "./chunk-B7T5JDPV.js";
25
25
  import {
26
26
  executeExpert
27
27
  } from "./chunk-7QY3RIIY.js";
@@ -55,7 +55,7 @@ import {
55
55
  toJobSummary,
56
56
  updateStage,
57
57
  writeJobCancelled
58
- } from "./chunk-7WZHA4DG.js";
58
+ } from "./chunk-XFSOE2UU.js";
59
59
  import {
60
60
  allOf,
61
61
  anyOf
@@ -75,7 +75,7 @@ import {
75
75
  } from "./chunk-7I3LY4HJ.js";
76
76
  import {
77
77
  withPrerequisite
78
- } from "./chunk-UPOY72RW.js";
78
+ } from "./chunk-AKUQA3ER.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-SNCZAGQZ.js";
103
+ } from "./chunk-TBF46HBC.js";
104
104
  import {
105
105
  createAuditTrail,
106
106
  createGraphAuditBridge,
@@ -46162,7 +46162,7 @@ function buildVotingInput(plan, config) {
46162
46162
  }
46163
46163
  async function executeSingleVote(plan, config, log) {
46164
46164
  try {
46165
- const { executeVoting } = await import("./consensus-vote-MLBVGI2A.js");
46165
+ const { executeVoting } = await import("./consensus-vote-ZBAGPGOG.js");
46166
46166
  const input = buildVotingInput(plan, config);
46167
46167
  const result = await executeVoting(input, log);
46168
46168
  return parseVotingResult(result);
@@ -47957,7 +47957,7 @@ ${contextBlock}`;
47957
47957
  const strategy = config.votingStrategy ?? "higher_order";
47958
47958
  await postProgress(config, "Vote", `Running consensus with ${strategy} strategy...`);
47959
47959
  try {
47960
- const { executeVoting } = await import("./consensus-vote-MLBVGI2A.js");
47960
+ const { executeVoting } = await import("./consensus-vote-ZBAGPGOG.js");
47961
47961
  const votingResult = await executeVoting(
47962
47962
  {
47963
47963
  proposal: buildVoteProposal(plan, research),
@@ -56698,4 +56698,4 @@ export {
56698
56698
  startPipelineEventBridge,
56699
56699
  shutdownPipelineEventBridge
56700
56700
  };
56701
- //# sourceMappingURL=chunk-XF2MVUCH.js.map
56701
+ //# sourceMappingURL=chunk-K7WLHNKH.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  VERSION
3
- } from "./chunk-KQBS4UW5.js";
3
+ } from "./chunk-67LMMHAI.js";
4
4
  import {
5
5
  emitClawGuardViolation
6
6
  } from "./chunk-JOVBHYWW.js";
@@ -2317,4 +2317,4 @@ export {
2317
2317
  VOTING_THRESHOLDS,
2318
2318
  ConsensusMetricsSchema
2319
2319
  };
2320
- //# sourceMappingURL=chunk-SNCZAGQZ.js.map
2320
+ //# sourceMappingURL=chunk-TBF46HBC.js.map
@@ -23,10 +23,10 @@ import {
23
23
  toolSuccessStructured,
24
24
  withProgressHeartbeat,
25
25
  wrapToolWithTimeout
26
- } from "./chunk-SNCZAGQZ.js";
26
+ } from "./chunk-TBF46HBC.js";
27
27
  import {
28
28
  VERSION
29
- } from "./chunk-KQBS4UW5.js";
29
+ } from "./chunk-67LMMHAI.js";
30
30
  import {
31
31
  assessPanelIndependence,
32
32
  countDistinctModels,
@@ -4920,7 +4920,10 @@ function toAgentVoteSummary(result) {
4920
4920
  reasoning: result.vote.reasoning,
4921
4921
  simulated: result.source === "simulation",
4922
4922
  error: result.source === "error",
4923
- ...result.vote.rejectionCategories !== void 0 ? { rejectionCategories: result.vote.rejectionCategories } : {}
4923
+ ...result.vote.rejectionCategories !== void 0 ? { rejectionCategories: result.vote.rejectionCategories } : {},
4924
+ // #6050: a caller acting on the live result sees what the ledger will.
4925
+ // Present only when true, so a clean panel's response is unchanged.
4926
+ ...result.retried === true ? { retried: true } : {}
4924
4927
  };
4925
4928
  }
4926
4929
  function mapOutcomeToDecision(outcome) {
@@ -5200,7 +5203,28 @@ var VoterSummarySchema = z7.object({
5200
5203
  */
5201
5204
  reasoning: z7.string().max(MAX_VOTER_REASONING_CHARS).optional(),
5202
5205
  /** True when `reasoning` was clipped to {@link MAX_VOTER_REASONING_CHARS}. */
5203
- reasoningTruncated: z7.literal(true).optional()
5206
+ reasoningTruncated: z7.literal(true).optional(),
5207
+ /**
5208
+ * True when this seat was recovered by the per-role retry (#6050, schema 1.7).
5209
+ *
5210
+ * `voter-retry.ts` has set `retried: true` on recovered results since it was
5211
+ * written, and `vote-types.ts` states the reason: the flag is "what makes the
5212
+ * recovery visible instead of indistinguishable from a clean first attempt".
5213
+ * It had one producer and ZERO consumers — both summarizers and the record
5214
+ * dropped it — so the field existed, was documented, and never reached
5215
+ * anything that could act on it.
5216
+ *
5217
+ * A retried seat is weaker evidence than a first-pass one: the model was
5218
+ * unavailable or timed out, and the recovery ran under different conditions.
5219
+ * For a ratification vote on a governor-path change, "7 of 7 answered" and
5220
+ * "6 answered, 1 recovered on retry" are different facts about the scrutiny
5221
+ * the change received, and the record stated the first for both.
5222
+ *
5223
+ * `literal(true)` and optional, on the `reasoningTruncated` rule: a clean
5224
+ * seat carries no key, so its entry re-hashes byte-identical and every
5225
+ * historical record still verifies.
5226
+ */
5227
+ retried: z7.literal(true).optional()
5204
5228
  }).strict();
5205
5229
  var VoteRecordCountsSchema = z7.object({
5206
5230
  approve: z7.number().int().nonnegative(),
@@ -5222,7 +5246,7 @@ var VoteRecordSchema = z7.object({
5222
5246
  * `ratifies` is folded into the self-hash ONLY when present (see
5223
5247
  * {@link computeVoteRecordHash}).
5224
5248
  */
5225
- version: z7.enum(["1.1", "1.2", "1.3", "1.4", "1.5", "1.6"]),
5249
+ version: z7.enum(["1.1", "1.2", "1.3", "1.4", "1.5", "1.6", "1.7"]),
5226
5250
  /** Unique record id (also usable as a `ratificationVoteRef`). */
5227
5251
  id: z7.string().min(1),
5228
5252
  /**
@@ -5275,7 +5299,18 @@ var VoteRecordSchema = z7.object({
5275
5299
  * the EASIEST bar to clear, because every engaged voter approves while
5276
5300
  * choosing different things.
5277
5301
  */
5278
- optionTally: z7.array(VoteRecordOptionCountSchema).min(1).optional(),
5302
+ // No `.min(1)` (#6049). The rule this field's own docstring states is
5303
+ // "present only when the vote declared `options`" -- keyed on DECLARATION,
5304
+ // not on whether anyone picked one. `.min(1)` encoded the older, narrower
5305
+ // rule, so once the builder started emitting `[]` for "declared, nothing
5306
+ // attributable" the record appended fine and then failed to parse on read:
5307
+ // `too_small, minimum 1`. The write path does not validate, so the line
5308
+ // landed in the ledger and `parseVoteRecordsText` silently dropped it --
5309
+ // the case most worth auditing became the one no reader could see.
5310
+ //
5311
+ // Relaxing is a pure widening: no previously-valid record changes meaning
5312
+ // or hash, and no persisted record can currently hold an empty tally.
5313
+ optionTally: z7.array(VoteRecordOptionCountSchema).optional(),
5279
5314
  /**
5280
5315
  * Selection coverage for a multi-option vote (#4472, schema 1.4).
5281
5316
  *
@@ -5364,7 +5399,12 @@ function computeVoteRecordHash(payload) {
5364
5399
  decision: v.decision,
5365
5400
  confidence: v.confidence,
5366
5401
  ...v.reasoning !== void 0 ? { reasoning: v.reasoning } : {},
5367
- ...v.reasoningTruncated === true ? { reasoningTruncated: true } : {}
5402
+ ...v.reasoningTruncated === true ? { reasoningTruncated: true } : {},
5403
+ // #6050: hash-covered on the same append-when-present rule. Omitting it
5404
+ // here would let a retried seat be edited to a clean one without moving
5405
+ // the hash -- attesting to a claim about panel quality the chain does not
5406
+ // actually cover.
5407
+ ...v.retried === true ? { retried: true } : {}
5368
5408
  })),
5369
5409
  correlationId: payload.correlationId ?? null
5370
5410
  };
@@ -5400,7 +5440,11 @@ function toVoterSummaries(votes) {
5400
5440
  role: v.role,
5401
5441
  decision: vote.decision,
5402
5442
  confidence: vote.confidence,
5403
- ...reasoningFields(vote.reasoning)
5443
+ ...reasoningFields(vote.reasoning),
5444
+ // #6050: carried, not dropped. `voter-retry.ts` has set this on every
5445
+ // recovered seat since it was written and nothing read it, so the record
5446
+ // said "7 of 7 answered cleanly" for a panel that needed a retry.
5447
+ ...v.retried === true ? { retried: true } : {}
5404
5448
  });
5405
5449
  }
5406
5450
  return summaries;
@@ -5415,14 +5459,16 @@ function reasoningFields(reasoning) {
5415
5459
  function recordDecisionFor(input) {
5416
5460
  return input.resolvedDecision ?? outcomeToDecision(input.result, input.votes, input.errorVoided ?? false);
5417
5461
  }
5418
- function deriveOptionFields(votes) {
5419
- const optionTally = tallySelectedOptions(votes);
5420
- return {
5421
- optionTally,
5422
- optionCoverage: optionTally === void 0 ? void 0 : coverageOf(votes)
5423
- };
5462
+ function deriveOptionFields(votes, declaredOptions) {
5463
+ const tallied = tallySelectedOptions(votes);
5464
+ const hadOptions = declaredOptions !== void 0 && declaredOptions.length > 0;
5465
+ if (!hadOptions && tallied === void 0) {
5466
+ return { optionTally: void 0, optionCoverage: void 0 };
5467
+ }
5468
+ return { optionTally: tallied ?? [], optionCoverage: coverageOf(votes) };
5424
5469
  }
5425
5470
  function recordVersion(optionTally, optionCoverage, panelCoverage, voters) {
5471
+ if (voters.some((v) => v.retried === true)) return "1.7";
5426
5472
  if (voters.some((v) => v.reasoning !== void 0)) return "1.6";
5427
5473
  if (panelCoverage !== void 0) return "1.5";
5428
5474
  if (optionCoverage !== void 0) return "1.4";
@@ -5459,7 +5505,7 @@ function tallySelectedOptions(votes) {
5459
5505
  }
5460
5506
  function buildVoteRecord(input) {
5461
5507
  const proposalTruncated = input.proposal.length > MAX_PROPOSAL_RECORD_CHARS ? input.proposal.slice(0, MAX_PROPOSAL_RECORD_CHARS) + "..." : input.proposal;
5462
- const { optionTally, optionCoverage } = deriveOptionFields(input.votes);
5508
+ const { optionTally, optionCoverage } = deriveOptionFields(input.votes, input.declaredOptions);
5463
5509
  const panelCoverage = panelCoverageOf(input.votes);
5464
5510
  const voters = toVoterSummaries(input.votes);
5465
5511
  const payload = {
@@ -5777,6 +5823,7 @@ function recordAuthenticVote(args) {
5777
5823
  strategy: toRecordStrategy(args.strategy),
5778
5824
  result: args.result,
5779
5825
  votes: args.votes,
5826
+ declaredOptions: args.declaredOptions,
5780
5827
  resolvedDecision: args.resolvedDecision,
5781
5828
  ...args.errorVoided !== void 0 ? { errorVoided: args.errorVoided } : {},
5782
5829
  ...args.correlationId !== void 0 ? { correlationId: args.correlationId } : {},
@@ -7462,13 +7509,14 @@ function finalizeVotingResult(args) {
7462
7509
  if (args.higherOrderResult !== void 0) result.higherOrderResult = args.higherOrderResult;
7463
7510
  return result;
7464
7511
  }
7465
- function recordVoteSideEffects(proposal, strategy, result, logger11, ratifies) {
7512
+ function recordVoteSideEffects(proposal, strategy, result, logger11, declared) {
7466
7513
  const decisionId = `consensus-${String(getTimeProvider().now())}-${randomUUID2().slice(0, 8)}`;
7467
7514
  const voteRecord = recordAuthenticVote({
7468
7515
  proposal,
7469
7516
  strategy,
7470
7517
  result: result.result,
7471
7518
  votes: result.votes,
7519
+ declaredOptions: declared.options,
7472
7520
  // #4053: an error-policy short-circuit voided the vote → the PERSISTED record
7473
7521
  // must record `no_quorum`, matching the MCP response (not a stale `rejected`).
7474
7522
  errorVoided: result.policyReason !== void 0,
@@ -7479,7 +7527,7 @@ function recordVoteSideEffects(proposal, strategy, result, logger11, ratifies) {
7479
7527
  // this tool reports as `no_quorum`.
7480
7528
  resolvedDecision: toRecordDecision(result.decision),
7481
7529
  correlationId: decisionId,
7482
- ...ratifies !== void 0 ? { ratifies } : {}
7530
+ ...declared.ratifies !== void 0 ? { ratifies: declared.ratifies } : {}
7483
7531
  });
7484
7532
  let costSummary;
7485
7533
  try {
@@ -7525,7 +7573,7 @@ async function handleConsensusVote(deps, args, signal) {
7525
7573
  result.strategy,
7526
7574
  result,
7527
7575
  logger11,
7528
- args.ratifies
7576
+ { options: args.options, ...args.ratifies !== void 0 ? { ratifies: args.ratifies } : {} }
7529
7577
  );
7530
7578
  emitVoteRejectedSignal(result.result, getPipelineEventBus(), logger11);
7531
7579
  return { ok: true, value: buildResponse(args, result, costSummary, voteRecord) };
@@ -7860,4 +7908,4 @@ export {
7860
7908
  CONSENSUS_VOTE_TOOL_SCHEMA,
7861
7909
  registerConsensusVoteTool
7862
7910
  };
7863
- //# sourceMappingURL=chunk-7WZHA4DG.js.map
7911
+ //# sourceMappingURL=chunk-XFSOE2UU.js.map