nexus-agents 8.3.0 → 8.3.2

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 (36) hide show
  1. package/dist/{chunk-R5F7Y5UY.js → chunk-3OU7XMEP.js} +2 -2
  2. package/dist/{chunk-K5GYF2LP.js → chunk-3RMLDTUF.js} +3 -3
  3. package/dist/{chunk-LY2FJKYX.js → chunk-44I4XVRU.js} +2 -2
  4. package/dist/{chunk-PDROJ5FZ.js → chunk-JGBXLELL.js} +2 -2
  5. package/dist/chunk-LZBARHPR.js +7 -0
  6. package/dist/{chunk-S7UZUGS7.js → chunk-ONSYYUB4.js} +107 -93
  7. package/dist/chunk-ONSYYUB4.js.map +1 -0
  8. package/dist/{chunk-ULQFMQE7.js → chunk-PGUZPMT4.js} +10 -4
  9. package/dist/{chunk-ULQFMQE7.js.map → chunk-PGUZPMT4.js.map} +1 -1
  10. package/dist/{chunk-UPEBXNNC.js → chunk-PSAXQXL5.js} +2 -2
  11. package/dist/{chunk-L2BM3TGM.js → chunk-VULYVX6X.js} +24 -9
  12. package/dist/chunk-VULYVX6X.js.map +1 -0
  13. package/dist/cli.js +11 -11
  14. package/dist/{consensus-vote-ZDBL2EA4.js → consensus-vote-H67IAMI2.js} +4 -4
  15. package/dist/{improvement-review-ZTF544Y7.js → improvement-review-UECHDBER.js} +4 -4
  16. package/dist/index.d.ts +45 -25
  17. package/dist/index.js +21 -10
  18. package/dist/index.js.map +1 -1
  19. package/dist/{issue-triage-MGYUQ7WN.js → issue-triage-6W5G6LC6.js} +3 -3
  20. package/dist/{pr-reviewer-helpers-74SUOXOV.js → pr-reviewer-helpers-NRVB6RVY.js} +3 -3
  21. package/dist/{setup-data-dir-GQ4QQKHZ.js → setup-data-dir-HJCC6U4N.js} +3 -3
  22. package/package.json +2 -2
  23. package/dist/chunk-7IDMD4IN.js +0 -7
  24. package/dist/chunk-L2BM3TGM.js.map +0 -1
  25. package/dist/chunk-S7UZUGS7.js.map +0 -1
  26. /package/dist/{chunk-R5F7Y5UY.js.map → chunk-3OU7XMEP.js.map} +0 -0
  27. /package/dist/{chunk-K5GYF2LP.js.map → chunk-3RMLDTUF.js.map} +0 -0
  28. /package/dist/{chunk-LY2FJKYX.js.map → chunk-44I4XVRU.js.map} +0 -0
  29. /package/dist/{chunk-PDROJ5FZ.js.map → chunk-JGBXLELL.js.map} +0 -0
  30. /package/dist/{chunk-7IDMD4IN.js.map → chunk-LZBARHPR.js.map} +0 -0
  31. /package/dist/{chunk-UPEBXNNC.js.map → chunk-PSAXQXL5.js.map} +0 -0
  32. /package/dist/{consensus-vote-ZDBL2EA4.js.map → consensus-vote-H67IAMI2.js.map} +0 -0
  33. /package/dist/{improvement-review-ZTF544Y7.js.map → improvement-review-UECHDBER.js.map} +0 -0
  34. /package/dist/{issue-triage-MGYUQ7WN.js.map → issue-triage-6W5G6LC6.js.map} +0 -0
  35. /package/dist/{pr-reviewer-helpers-74SUOXOV.js.map → pr-reviewer-helpers-NRVB6RVY.js.map} +0 -0
  36. /package/dist/{setup-data-dir-GQ4QQKHZ.js.map → setup-data-dir-HJCC6U4N.js.map} +0 -0
package/dist/cli.js CHANGED
@@ -19,7 +19,7 @@ import {
19
19
  parseFindings,
20
20
  reviewPostingBlock,
21
21
  sumFindings
22
- } from "./chunk-UPEBXNNC.js";
22
+ } from "./chunk-PSAXQXL5.js";
23
23
  import "./chunk-6MPT2NRF.js";
24
24
  import {
25
25
  runConfigInitSync
@@ -153,7 +153,7 @@ import {
153
153
  validateNexusEnv,
154
154
  validateWorkflow,
155
155
  wrapInMarkdownFence
156
- } from "./chunk-S7UZUGS7.js";
156
+ } from "./chunk-ONSYYUB4.js";
157
157
  import "./chunk-ZYPEHPRM.js";
158
158
  import "./chunk-DGWT7DXX.js";
159
159
  import "./chunk-64GMIUM5.js";
@@ -172,7 +172,7 @@ import {
172
172
  doctorCommand,
173
173
  initDataDirectories,
174
174
  runDoctor
175
- } from "./chunk-K5GYF2LP.js";
175
+ } from "./chunk-3RMLDTUF.js";
176
176
  import {
177
177
  buildOpenAICompatAdapters,
178
178
  readOpenAICompatEnv
@@ -191,7 +191,7 @@ import {
191
191
  recordAuthenticVote,
192
192
  registerConsensusVoteTool,
193
193
  toRecordDecision
194
- } from "./chunk-LY2FJKYX.js";
194
+ } from "./chunk-44I4XVRU.js";
195
195
  import {
196
196
  loadUsageEvents,
197
197
  rollupByModel
@@ -208,12 +208,12 @@ import {
208
208
  createFullGitHubProvider,
209
209
  evaluatePolicy,
210
210
  parsePRUrl
211
- } from "./chunk-PDROJ5FZ.js";
211
+ } from "./chunk-JGBXLELL.js";
212
212
  import "./chunk-QP423I4T.js";
213
213
  import {
214
214
  ReputationCache,
215
215
  sanitizeInput
216
- } from "./chunk-ULQFMQE7.js";
216
+ } from "./chunk-PGUZPMT4.js";
217
217
  import {
218
218
  ImprovementReviewInputSchema,
219
219
  calculateFitnessScore,
@@ -227,15 +227,15 @@ import {
227
227
  registerImprovementReviewTool,
228
228
  runImprovementReview,
229
229
  scanForSecrets
230
- } from "./chunk-R5F7Y5UY.js";
230
+ } from "./chunk-3OU7XMEP.js";
231
231
  import {
232
232
  createDefaultPolicyFirewall,
233
233
  setGlobalPolicyFirewall,
234
234
  stagePolicyFirewallForRollout
235
- } from "./chunk-L2BM3TGM.js";
235
+ } from "./chunk-VULYVX6X.js";
236
236
  import {
237
237
  VERSION
238
- } from "./chunk-7IDMD4IN.js";
238
+ } from "./chunk-LZBARHPR.js";
239
239
  import "./chunk-U5YJKJK2.js";
240
240
  import {
241
241
  createUnifiedRegistry,
@@ -4459,7 +4459,7 @@ ${file.patch}
4459
4459
  violations: policyResult.violations
4460
4460
  });
4461
4461
  }
4462
- const { formatReviewComment: formatReviewComment2 } = await import("./pr-reviewer-helpers-74SUOXOV.js");
4462
+ const { formatReviewComment: formatReviewComment2 } = await import("./pr-reviewer-helpers-NRVB6RVY.js");
4463
4463
  const body = formatReviewComment2(result);
4464
4464
  const postResult = await provider.createReview(pr.prNumber, body, result.decision);
4465
4465
  if (!postResult.ok) {
@@ -19586,7 +19586,7 @@ function startImprovementReviewScheduler(options) {
19586
19586
  let running = false;
19587
19587
  const runOnce = async () => {
19588
19588
  try {
19589
- const { runImprovementReview: runImprovementReview2, ImprovementReviewInputSchema: ImprovementReviewInputSchema2 } = await import("./improvement-review-ZTF544Y7.js");
19589
+ const { runImprovementReview: runImprovementReview2, ImprovementReviewInputSchema: ImprovementReviewInputSchema2 } = await import("./improvement-review-UECHDBER.js");
19590
19590
  const input = ImprovementReviewInputSchema2.parse({ fileIssues });
19591
19591
  const result = await runImprovementReview2(input, { logger: logger22 });
19592
19592
  logger22.info("Scheduled improvement_review complete", {
@@ -11,11 +11,11 @@ import {
11
11
  resetCorrelationTracker,
12
12
  runConsensusForGoal,
13
13
  unwrapVoteOrThrow
14
- } from "./chunk-LY2FJKYX.js";
14
+ } from "./chunk-44I4XVRU.js";
15
15
  import "./chunk-6LDUEA4I.js";
16
16
  import "./chunk-OQB3XC5O.js";
17
- import "./chunk-L2BM3TGM.js";
18
- import "./chunk-7IDMD4IN.js";
17
+ import "./chunk-VULYVX6X.js";
18
+ import "./chunk-LZBARHPR.js";
19
19
  import "./chunk-U5YJKJK2.js";
20
20
  import "./chunk-F4AT3BCP.js";
21
21
  import "./chunk-4U62WRPL.js";
@@ -50,4 +50,4 @@ export {
50
50
  runConsensusForGoal,
51
51
  unwrapVoteOrThrow
52
52
  };
53
- //# sourceMappingURL=consensus-vote-ZDBL2EA4.js.map
53
+ //# sourceMappingURL=consensus-vote-H67IAMI2.js.map
@@ -11,9 +11,9 @@ import {
11
11
  loadSelfEvalSignals,
12
12
  registerImprovementReviewTool,
13
13
  runImprovementReview
14
- } from "./chunk-R5F7Y5UY.js";
15
- import "./chunk-L2BM3TGM.js";
16
- import "./chunk-7IDMD4IN.js";
14
+ } from "./chunk-3OU7XMEP.js";
15
+ import "./chunk-VULYVX6X.js";
16
+ import "./chunk-LZBARHPR.js";
17
17
  import "./chunk-U5YJKJK2.js";
18
18
  import "./chunk-3MBGQAO2.js";
19
19
  import "./chunk-ITCKXMOH.js";
@@ -33,4 +33,4 @@ export {
33
33
  registerImprovementReviewTool,
34
34
  runImprovementReview
35
35
  };
36
- //# sourceMappingURL=improvement-review-ZTF544Y7.js.map
36
+ //# sourceMappingURL=improvement-review-UECHDBER.js.map
package/dist/index.d.ts CHANGED
@@ -27268,6 +27268,46 @@ interface PrReviewCoverage {
27268
27268
  readonly strategy: 'budget';
27269
27269
  }
27270
27270
 
27271
+ /**
27272
+ * Proposal construction for `pr_review`.
27273
+ *
27274
+ * Extracted from `pr-review-tool.ts` (#5385), which sat at 398 of its 400-line
27275
+ * budget — threading the sanitization disclosure through pushed it over, and
27276
+ * this is the cohesive piece to move, because the builder IS the sanitization
27277
+ * concern. A pure move apart from the `removedBeforeThisCall` parameter that
27278
+ * issue adds.
27279
+ *
27280
+ * `pr-review-tool.ts` re-exports the symbol, so both barrels
27281
+ * (`mcp/index.ts`, `mcp/tools/index.ts`), the published `exports/mcp.ts`, and
27282
+ * `scripts/pr-review-local.ts` / `scripts/pr-review-eval-run.ts` keep importing
27283
+ * it unchanged. The `PrReviewInput` import is type-only and therefore erased,
27284
+ * so the re-export creates no runtime cycle.
27285
+ *
27286
+ * @module mcp/tools/pr-review-proposal
27287
+ */
27288
+
27289
+ /** Builds the proposal text passed to voters. The voters are designed for
27290
+ * yes/no proposals — by framing the diff as "should this PR be merged?" we
27291
+ * get usable output without needing new system prompts (Child 3 will add
27292
+ * those).
27293
+ *
27294
+ * **Sanitization lives HERE, not at the tool boundary (#5258 item B).** The
27295
+ * `securityTier: 'external'` declared on the registered tool only protects the
27296
+ * MCP path, because the middleware is constructed inside `registerPrReviewTool`.
27297
+ * Three other callers reach the voters without it — `.github/workflows/
27298
+ * pr-review.yml`, `scripts/pr-review-local.ts` (the documented default path)
27299
+ * and `scripts/pr-review-eval-run.ts` — each importing this builder directly
27300
+ * from `dist/index.js`. On those paths a hostile PR body reached five voters
27301
+ * unfenced, next to the words "should it be merged as-is?".
27302
+ *
27303
+ * This function is the one chokepoint all four callers pass through, so the
27304
+ * protection is attached to the data rather than to one entry point. The MCP
27305
+ * tier check still runs earlier and still refuses; this is the floor beneath
27306
+ * it, and it strips rather than refuses so the script paths degrade instead of
27307
+ * failing shut. Double-sanitizing on the MCP path is idempotent and harmless.
27308
+ */
27309
+ declare function buildPrReviewProposal(input: Pick<PrReviewInput, 'prTitle' | 'prDescription' | 'prDiff' | 'repoContext' | 'baseRef' | 'headRef'>, removedBeforeThisCall?: number): string;
27310
+
27271
27311
  /**
27272
27312
  * nexus-agents/mcp - PR Review Tool (#2233 Child 1)
27273
27313
  *
@@ -27418,27 +27458,7 @@ declare function mapVoteDecisionToPrDecision(voteDecision: 'approve' | 'reject'
27418
27458
  * the baseline behavior.
27419
27459
  */
27420
27460
  declare function aggregatePrDecisions(reviews: readonly PrReviewVote[], errorPolicy?: 'standard' | 'absolute_quorum'): PrReviewAggregate;
27421
- /** Builds the proposal text passed to voters. The voters are designed for
27422
- * yes/no proposals — by framing the diff as "should this PR be merged?" we
27423
- * get usable output without needing new system prompts (Child 3 will add
27424
- * those).
27425
- *
27426
- * **Sanitization lives HERE, not at the tool boundary (#5258 item B).** The
27427
- * `securityTier: 'external'` declared on the registered tool only protects the
27428
- * MCP path, because the middleware is constructed inside `registerPrReviewTool`.
27429
- * Three other callers reach the voters without it — `.github/workflows/
27430
- * pr-review.yml`, `scripts/pr-review-local.ts` (the documented default path)
27431
- * and `scripts/pr-review-eval-run.ts` — each importing this builder directly
27432
- * from `dist/index.js`. On those paths a hostile PR body reached five voters
27433
- * unfenced, next to the words "should it be merged as-is?".
27434
- *
27435
- * This function is the one chokepoint all four callers pass through, so the
27436
- * protection is attached to the data rather than to one entry point. The MCP
27437
- * tier check still runs earlier and still refuses; this is the floor beneath
27438
- * it, and it strips rather than refuses so the script paths degrade instead of
27439
- * failing shut. Double-sanitizing on the MCP path is idempotent and harmless.
27440
- */
27441
- declare function buildPrReviewProposal(input: Pick<PrReviewInput, 'prTitle' | 'prDescription' | 'prDiff' | 'repoContext' | 'baseRef' | 'headRef'>): string;
27461
+
27442
27462
  /** @category MCP */
27443
27463
  declare function registerPrReviewTool(server: McpServer, deps: PrReviewDeps): void;
27444
27464
 
@@ -31361,10 +31381,10 @@ declare const FIREWALL_POLICY_ENV_VAR = "NEXUS_FIREWALL_POLICY";
31361
31381
  /**
31362
31382
  * Resolve the firewall policy mode from the environment.
31363
31383
  *
31364
- * Never throws: an invalid value coerces to the default and emits one `warn`,
31365
- * because a security layer must not fail-closed at startup on an operator typo
31366
- * (#3130). Unset or empty resolves silently — absence is the normal state, not
31367
- * a misconfiguration.
31384
+ * Never throws, because a security layer must not fail-closed at startup on an
31385
+ * operator typo (#3130). The two non-happy paths resolve DIFFERENTLY, though:
31386
+ * unset or empty resolves silently to `off` (absence is the normal state), while
31387
+ * an explicit-but-invalid value resolves to `audit` and emits one `warn`.
31368
31388
  *
31369
31389
  * @param env Environment to read (injectable for tests).
31370
31390
  * @param logger Injectable for tests; defaults to the shared module logger.
package/dist/index.js CHANGED
@@ -553,7 +553,7 @@ import {
553
553
  withLogging,
554
554
  withRetry,
555
555
  withRetryWrapper
556
- } from "./chunk-S7UZUGS7.js";
556
+ } from "./chunk-ONSYYUB4.js";
557
557
  import {
558
558
  FALLBACK_SCANNER_DATA,
559
559
  buildPlanFromAnalysis,
@@ -574,7 +574,7 @@ import {
574
574
  connectTransport,
575
575
  createServer,
576
576
  startStdioServer
577
- } from "./chunk-K5GYF2LP.js";
577
+ } from "./chunk-3RMLDTUF.js";
578
578
  import {
579
579
  OPENAI_MODELS,
580
580
  OPENAI_MODEL_ALIASES,
@@ -632,7 +632,7 @@ import {
632
632
  generateProposalId,
633
633
  parseAgentPairKey,
634
634
  registerConsensusVoteTool
635
- } from "./chunk-LY2FJKYX.js";
635
+ } from "./chunk-44I4XVRU.js";
636
636
  import "./chunk-6LDUEA4I.js";
637
637
  import {
638
638
  allOf
@@ -660,7 +660,7 @@ import {
660
660
  requiresHumanApproval,
661
661
  validateAgentAction,
662
662
  validateCorroboration
663
- } from "./chunk-PDROJ5FZ.js";
663
+ } from "./chunk-JGBXLELL.js";
664
664
  import {
665
665
  GitHubProvider,
666
666
  ScmError
@@ -681,11 +681,11 @@ import {
681
681
  resolveEnvMode,
682
682
  resolveReputationGatingMode,
683
683
  sanitizeInput
684
- } from "./chunk-ULQFMQE7.js";
684
+ } from "./chunk-PGUZPMT4.js";
685
685
  import {
686
686
  ImprovementReviewInputSchema,
687
687
  registerImprovementReviewTool
688
- } from "./chunk-R5F7Y5UY.js";
688
+ } from "./chunk-3OU7XMEP.js";
689
689
  import {
690
690
  AgentPerformanceSchema,
691
691
  ConsensusAlgorithmSchema,
@@ -721,10 +721,10 @@ import {
721
721
  toolSuccess,
722
722
  toolSuccessStructured,
723
723
  validateToolInput
724
- } from "./chunk-L2BM3TGM.js";
724
+ } from "./chunk-VULYVX6X.js";
725
725
  import {
726
726
  VERSION
727
- } from "./chunk-7IDMD4IN.js";
727
+ } from "./chunk-LZBARHPR.js";
728
728
  import {
729
729
  AuditTrail,
730
730
  MAX_STRIPPED_ELEMENTS_PER_EVENT,
@@ -2589,7 +2589,18 @@ function resolveFirewallPolicyMode(env = process.env, logger12) {
2589
2589
  FirewallPolicyModeSchema,
2590
2590
  DEFAULT_FIREWALL_POLICY_MODE,
2591
2591
  FIREWALL_POLICY_ENV_VAR,
2592
- ...logger12 !== void 0 ? [logger12] : []
2592
+ {
2593
+ ...logger12 !== void 0 ? { logger: logger12 } : {},
2594
+ // An explicit-but-invalid value lands on `audit`, NOT on the unset
2595
+ // default `off`. Unset means "the operator has not opted in" and `off` is
2596
+ // right for it; a typo means "the operator opted in and mistyped how",
2597
+ // and answering that with the most permissive mode hands them a firewall
2598
+ // that refuses nothing while they believe it is on. `audit` reports
2599
+ // without refusing, so it cannot break an external caller any more than
2600
+ // `off` can, and it emits the `wouldRefuse` telemetry the rollout is
2601
+ // supposed to be collecting — which `off` does not.
2602
+ invalidFallback: "audit"
2603
+ }
2593
2604
  );
2594
2605
  }
2595
2606
 
@@ -4879,7 +4890,7 @@ function buildVotingInput(plan, config) {
4879
4890
  }
4880
4891
  async function executeSingleVote(plan, config, log) {
4881
4892
  try {
4882
- const { executeVoting } = await import("./consensus-vote-ZDBL2EA4.js");
4893
+ const { executeVoting } = await import("./consensus-vote-H67IAMI2.js");
4883
4894
  const input = buildVotingInput(plan, config);
4884
4895
  const result = await executeVoting(input, log);
4885
4896
  return parseVotingResult(result);