nexus-agents 8.77.0 → 8.78.1

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 (31) hide show
  1. package/dist/{chunk-GS5OJHJJ.js → chunk-BGKG32VV.js} +3 -3
  2. package/dist/{chunk-LZGSWYDX.js → chunk-BLSQNFMS.js} +2 -2
  3. package/dist/{chunk-I2MSRFXZ.js → chunk-HLIE3734.js} +3 -3
  4. package/dist/{chunk-5XAJU5ZV.js → chunk-HVEPFGQC.js} +18 -11
  5. package/dist/{chunk-5XAJU5ZV.js.map → chunk-HVEPFGQC.js.map} +1 -1
  6. package/dist/{chunk-VIVM7X76.js → chunk-OZFXXGGZ.js} +71 -8
  7. package/dist/chunk-OZFXXGGZ.js.map +1 -0
  8. package/dist/{chunk-6IUAMO5M.js → chunk-UW4I34IW.js} +2 -2
  9. package/dist/{chunk-QBZ6DBJL.js → chunk-YB5MS4JH.js} +2 -2
  10. package/dist/cli.js +26 -16
  11. package/dist/cli.js.map +1 -1
  12. package/dist/{consensus-vote-7JRI7YF6.js → consensus-vote-F232OHJH.js} +4 -4
  13. package/dist/{dist-MWSNSZLT.js → dist-WQ2ZUJ4M.js} +1641 -1472
  14. package/dist/dist-WQ2ZUJ4M.js.map +1 -0
  15. package/dist/{improvement-review-JVI3RM7I.js → improvement-review-ATTDLEBX.js} +4 -4
  16. package/dist/index.d.ts +20 -1
  17. package/dist/index.js +7 -7
  18. package/dist/{issue-triage-6KIGFUFJ.js → issue-triage-M7XEMQZ7.js} +2 -2
  19. package/dist/{setup-data-dir-VCSQTZ6L.js → setup-data-dir-BXGHZ53Y.js} +3 -3
  20. package/package.json +11 -11
  21. package/dist/chunk-VIVM7X76.js.map +0 -1
  22. package/dist/dist-MWSNSZLT.js.map +0 -1
  23. /package/dist/{chunk-GS5OJHJJ.js.map → chunk-BGKG32VV.js.map} +0 -0
  24. /package/dist/{chunk-LZGSWYDX.js.map → chunk-BLSQNFMS.js.map} +0 -0
  25. /package/dist/{chunk-I2MSRFXZ.js.map → chunk-HLIE3734.js.map} +0 -0
  26. /package/dist/{chunk-6IUAMO5M.js.map → chunk-UW4I34IW.js.map} +0 -0
  27. /package/dist/{chunk-QBZ6DBJL.js.map → chunk-YB5MS4JH.js.map} +0 -0
  28. /package/dist/{consensus-vote-7JRI7YF6.js.map → consensus-vote-F232OHJH.js.map} +0 -0
  29. /package/dist/{improvement-review-JVI3RM7I.js.map → improvement-review-ATTDLEBX.js.map} +0 -0
  30. /package/dist/{issue-triage-6KIGFUFJ.js.map → issue-triage-M7XEMQZ7.js.map} +0 -0
  31. /package/dist/{setup-data-dir-VCSQTZ6L.js.map → setup-data-dir-BXGHZ53Y.js.map} +0 -0
@@ -1336,7 +1336,8 @@ var HostileInputFirewall = class {
1336
1336
  return err({
1337
1337
  code: "POLICY_REFUSED",
1338
1338
  message: `Refused by firewall policy: ${corroboration.actionType} lacks required corroboration \u2014 ${corroboration.missing.join("; ")}`,
1339
- stage: "corroboration"
1339
+ stage: "corroboration",
1340
+ missing: corroboration.missing
1340
1341
  });
1341
1342
  }
1342
1343
  return ok({
@@ -1344,6 +1345,7 @@ var HostileInputFirewall = class {
1344
1345
  satisfied: corroboration.satisfied,
1345
1346
  missing: corroboration.missing,
1346
1347
  corroboratingSources: corroboration.corroboratingSources,
1348
+ clearedOnlyByUnverifiedSources: corroboration.clearedOnlyByUnverifiedSources,
1347
1349
  policyMode: this.policyMode,
1348
1350
  wouldRefuse: !corroboration.satisfied && this.policyMode === "audit"
1349
1351
  });
@@ -1565,6 +1567,7 @@ function getUntrustedInputFirewall() {
1565
1567
  singleton ??= new HostileInputFirewall({
1566
1568
  adapter: createGitHubAdapter(),
1567
1569
  contentDowngrade: false,
1570
+ stages: { corroboration: true },
1568
1571
  ...configuredAuditLogger !== void 0 ? { auditLogger: configuredAuditLogger } : {}
1569
1572
  });
1570
1573
  return singleton;
@@ -1609,6 +1612,44 @@ function evaluateActionThroughFirewall(input, options) {
1609
1612
  wouldRefuse
1610
1613
  });
1611
1614
  }
1615
+ function validateActionCorroboration(action) {
1616
+ const result = getUntrustedInputFirewall().validateAction(action);
1617
+ if (!result.ok) {
1618
+ const { code, stage, missing } = result.error;
1619
+ if (code !== "POLICY_REFUSED" || stage !== "corroboration") return err(asError(result.error));
1620
+ if (missing === void 0 || missing.length === 0) return err(asError(result.error));
1621
+ logger4.warn("Untrusted-input firewall refused an uncorroborated action (enforce mode)", {
1622
+ actionType: action.type,
1623
+ stage,
1624
+ missing
1625
+ });
1626
+ return ok({ refused: true, satisfied: false, stage, missing, policyMode: "enforce" });
1627
+ }
1628
+ const validation = result.value;
1629
+ if (!validation.evaluated) {
1630
+ return err(
1631
+ new Error(
1632
+ `Untrusted-input firewall did not evaluate corroboration for action ${action.type} (${validation.reason})`
1633
+ )
1634
+ );
1635
+ }
1636
+ if (validation.wouldRefuse) {
1637
+ logger4.warn("Untrusted-input firewall would refuse under enforce (audit mode)", {
1638
+ actionType: action.type,
1639
+ stage: "corroboration",
1640
+ missing: validation.missing
1641
+ });
1642
+ }
1643
+ return ok({
1644
+ refused: false,
1645
+ satisfied: validation.satisfied,
1646
+ missing: validation.missing,
1647
+ corroboratingSources: validation.corroboratingSources,
1648
+ clearedOnlyByUnverifiedSources: validation.clearedOnlyByUnverifiedSources,
1649
+ policyMode: validation.policyMode,
1650
+ wouldRefuse: validation.wouldRefuse
1651
+ });
1652
+ }
1612
1653
  function processAndLog(input, options) {
1613
1654
  const result = getUntrustedInputFirewall().process(input, options);
1614
1655
  if (!result.ok) {
@@ -2038,9 +2079,17 @@ function describeAction(action) {
2038
2079
  }
2039
2080
  }
2040
2081
  function buildActionDetails(action, policy, corrob) {
2082
+ const policyRules = policy.violations.map((violation) => violation.rule);
2041
2083
  return {
2042
- policyViolations: policy.violations.map((violation) => violation.rule),
2043
- missingCorroboration: corrob.missing,
2084
+ ...corrob.refused ? {
2085
+ policyViolations: [...policyRules, "INSUFFICIENT_CORROBORATION"],
2086
+ missingCorroboration: corrob.missing,
2087
+ refusedAtStage: corrob.stage
2088
+ } : {
2089
+ policyViolations: policyRules,
2090
+ missingCorroboration: corrob.missing,
2091
+ corroborationWouldRefuse: corrob.wouldRefuse
2092
+ },
2044
2093
  ...action.type === "ClassifyIssue" && { category: action.category },
2045
2094
  ...action.type === "ProposeLabels" && { labels: action.labels }
2046
2095
  };
@@ -2051,17 +2100,29 @@ function validateActionsThroughFirewall(input, gate, actions, existingLabels) {
2051
2100
  for (const action of actions) {
2052
2101
  const decision = evaluateActionThroughFirewall(input, { ...gate, ...labels, action });
2053
2102
  if (!decision.ok) return decision;
2054
- const corrobResult = validateCorroboration(action);
2103
+ const corroboration = validateActionCorroboration(action);
2104
+ if (!corroboration.ok) return corroboration;
2055
2105
  proposed.push({
2056
2106
  type: action.type,
2057
2107
  description: describeAction(action),
2058
- policyApproved: decision.value.allowed,
2059
- corroborated: corrobResult.satisfied,
2060
- details: buildActionDetails(action, decision.value, corrobResult)
2108
+ policyApproved: decision.value.allowed && !corroboration.value.refused,
2109
+ corroborated: corroboration.value.satisfied,
2110
+ details: buildActionDetails(action, decision.value, corroboration.value)
2061
2111
  });
2062
2112
  }
2063
2113
  return ok(proposed);
2064
2114
  }
2115
+ function isStringArray(value) {
2116
+ return Array.isArray(value) && value.every((v) => typeof v === "string");
2117
+ }
2118
+ function readActionRefusal(action) {
2119
+ const { policyViolations, missingCorroboration, refusedAtStage } = action.details;
2120
+ return {
2121
+ policyViolations: isStringArray(policyViolations) ? policyViolations : [],
2122
+ missingCorroboration: isStringArray(missingCorroboration) ? missingCorroboration : [],
2123
+ ...refusedAtStage === "corroboration" ? { refusedAtStage } : {}
2124
+ };
2125
+ }
2065
2126
 
2066
2127
  // src/dogfooding/issue-triage.ts
2067
2128
  var logger6 = createLogger({ component: "IssueTriage" });
@@ -2440,12 +2501,14 @@ export {
2440
2501
  configureUntrustedInputFirewall,
2441
2502
  runUntrustedInputFirewall,
2442
2503
  evaluateActionThroughFirewall,
2504
+ validateActionCorroboration,
2443
2505
  firewallInputFor,
2444
2506
  parsePRUrl,
2445
2507
  GitHubReviewer,
2446
2508
  GitHubUserInfo,
2447
2509
  createFullGitHubProvider,
2510
+ readActionRefusal,
2448
2511
  IssueTriage,
2449
2512
  createIssueTriage
2450
2513
  };
2451
- //# sourceMappingURL=chunk-VIVM7X76.js.map
2514
+ //# sourceMappingURL=chunk-OZFXXGGZ.js.map