nexus-agents 8.83.0 → 8.85.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.
- package/dist/{ast-rule-runner-O2UYBG74.js → ast-rule-runner-LXMZIGCY.js} +3 -3
- package/dist/{child-mcp-config-W2EPNDEU.js → child-mcp-config-OBHZQG2Q.js} +2 -2
- package/dist/{chunk-APF7COQN.js → chunk-2EBCZOVZ.js} +2 -2
- package/dist/{chunk-NYF2WZAK.js → chunk-45EJ4PBT.js} +2 -2
- package/dist/{chunk-TURGEY3I.js → chunk-6FXHSNXA.js} +2 -2
- package/dist/{chunk-YRTHZDTO.js → chunk-6Q7EYNH2.js} +2 -2
- package/dist/{chunk-PW4DLY5W.js → chunk-7LGBEEKB.js} +2 -2
- package/dist/{chunk-3EFOVHKF.js → chunk-AKM6ILIM.js} +144 -9
- package/dist/chunk-AKM6ILIM.js.map +1 -0
- package/dist/{chunk-3NPRFOSH.js → chunk-BHLPPZZ6.js} +7 -7
- package/dist/{chunk-CPJWPHUX.js → chunk-BKRAZWLA.js} +5 -5
- package/dist/{chunk-CPJWPHUX.js.map → chunk-BKRAZWLA.js.map} +1 -1
- package/dist/{chunk-4NH3RNU6.js → chunk-BXOXALDW.js} +2 -2
- package/dist/{chunk-KJHB4KH2.js → chunk-CH2WD3MA.js} +3 -3
- package/dist/{chunk-VRTZSUMG.js → chunk-DWZXQYUL.js} +10 -10
- package/dist/{chunk-BZPRF4SJ.js → chunk-DY5FNADP.js} +3 -3
- package/dist/{chunk-6W4KJFPT.js → chunk-EX5EN5B6.js} +2 -2
- package/dist/{chunk-LWVRXNCL.js → chunk-FFUIQBDD.js} +2 -2
- package/dist/{chunk-CEPKZE3M.js → chunk-FJVOWWD5.js} +609 -403
- package/dist/chunk-FJVOWWD5.js.map +1 -0
- package/dist/{chunk-XNX4SH4O.js → chunk-HFPR4I3U.js} +2 -2
- package/dist/{chunk-IPZC5BXM.js → chunk-HXOEF3YP.js} +3 -3
- package/dist/{chunk-IPZC5BXM.js.map → chunk-HXOEF3YP.js.map} +1 -1
- package/dist/{chunk-UFO5A53B.js → chunk-IPWGHYXZ.js} +2 -2
- package/dist/{chunk-PD2GZQYH.js → chunk-JN42TCDE.js} +2 -2
- package/dist/{chunk-B5C5IMIV.js → chunk-LEYBZKK2.js} +4 -4
- package/dist/{chunk-HA2U5XJ2.js → chunk-LNX6D7GM.js} +3 -3
- package/dist/{chunk-C4SNSFBV.js → chunk-NHLKZ3KC.js} +2 -2
- package/dist/{chunk-256K77ED.js → chunk-OBTPPT3M.js} +5 -5
- package/dist/{chunk-ZUWF76BV.js → chunk-OSEM44EE.js} +11 -11
- package/dist/chunk-OSEM44EE.js.map +1 -0
- package/dist/{chunk-BTFOWREE.js → chunk-R5ASFO5P.js} +2 -2
- package/dist/{chunk-ALCCX5DS.js → chunk-RSDKRBZC.js} +2 -2
- package/dist/{chunk-YWEZ7W4K.js → chunk-UA6FZ2WV.js} +4 -4
- package/dist/{chunk-AQVSAPQD.js → chunk-UB7PB7GI.js} +4 -4
- package/dist/{chunk-NXMETLX7.js → chunk-UQR4SSUJ.js} +2 -2
- package/dist/{chunk-FMN3QH3O.js → chunk-WUUZ5KH2.js} +2 -2
- package/dist/{chunk-NO55AP2L.js → chunk-XRPHJNVB.js} +4 -4
- package/dist/{chunk-UMFQ52XI.js → chunk-Y6QNLP5P.js} +8 -8
- package/dist/{chunk-U53CKPED.js → chunk-ZA627SSQ.js} +2 -2
- package/dist/{cli-circuit-breaker-2T4GGSUE.js → cli-circuit-breaker-GJWYQL6L.js} +3 -3
- package/dist/cli.js +51 -47
- package/dist/cli.js.map +1 -1
- package/dist/{composite-router-DH2S2IVK.js → composite-router-TL5XKK5X.js} +2 -2
- package/dist/{consensus-vote-4VBUZ5NH.js → consensus-vote-H363QXSE.js} +16 -16
- package/dist/{context-retriever-5NGYA4JC.js → context-retriever-CC3W7XS6.js} +8 -8
- package/dist/{doctor-deep-535NDUD2.js → doctor-deep-XBJ5HS3B.js} +3 -3
- package/dist/{doctor-live-CAREILU5.js → doctor-live-CNKTVDK6.js} +10 -10
- package/dist/{expert-bridge-7WAFFJWN.js → expert-bridge-YPVHOWFB.js} +4 -4
- package/dist/{factory-L2OVYRN4.js → factory-JHBJB2O2.js} +9 -9
- package/dist/{factory-ZU75VK4Z.js → factory-MRSIKSPG.js} +5 -5
- package/dist/{improvement-review-RSKJAU4A.js → improvement-review-TSSTONUQ.js} +5 -5
- package/dist/index.d.ts +192 -68
- package/dist/index.js +30 -30
- package/dist/{init-opencode-SHNOT2CZ.js → init-opencode-FH2LR62J.js} +5 -5
- package/dist/issue-triage-TI6R4XZL.js +16 -0
- package/dist/model-registry.generated.json +7269 -3654
- package/dist/models-dev-snapshot.json +98 -2
- package/dist/{pr-reviewer-helpers-P6DXUMTO.js → pr-reviewer-helpers-QG53KLXL.js} +4 -4
- package/dist/{registry-command-R336DHZS.js → registry-command-IX7IISYC.js} +2 -2
- package/dist/{repo-security-plan-LLTLKJWF.js → repo-security-plan-FE2KXATO.js} +3 -3
- package/dist/{research-helpers-synthesize-N7NYBAKW.js → research-helpers-synthesize-TRAPPDBV.js} +4 -4
- package/dist/{routing-memory-YLQPO5OH.js → routing-memory-IXTZH2LJ.js} +2 -2
- package/dist/{session-memory-6PNSAPG4.js → session-memory-LG3G33MF.js} +3 -3
- package/dist/{setup-config-SY3HM5OH.js → setup-config-HAIUEE4A.js} +3 -3
- package/dist/{setup-custom-api-ZEGB745O.js → setup-custom-api-437P3KVD.js} +4 -4
- package/dist/setup-data-dir-BVALVICE.js +32 -0
- package/dist/{tool-memory-3GBF2OOW.js → tool-memory-A7C3WO3Q.js} +5 -5
- package/dist/{unified-registry-SCYTXNHW.js → unified-registry-YF3B3PDU.js} +10 -10
- package/dist/{weather-report-NGBJYVS6.js → weather-report-NDQU55YN.js} +2 -2
- package/package.json +4 -4
- package/dist/chunk-3EFOVHKF.js.map +0 -1
- package/dist/chunk-CEPKZE3M.js.map +0 -1
- package/dist/chunk-ZUWF76BV.js.map +0 -1
- package/dist/issue-triage-TS4WXIQ2.js +0 -16
- package/dist/setup-data-dir-OFOKYKTI.js +0 -32
- /package/dist/{ast-rule-runner-O2UYBG74.js.map → ast-rule-runner-LXMZIGCY.js.map} +0 -0
- /package/dist/{child-mcp-config-W2EPNDEU.js.map → child-mcp-config-OBHZQG2Q.js.map} +0 -0
- /package/dist/{chunk-APF7COQN.js.map → chunk-2EBCZOVZ.js.map} +0 -0
- /package/dist/{chunk-NYF2WZAK.js.map → chunk-45EJ4PBT.js.map} +0 -0
- /package/dist/{chunk-TURGEY3I.js.map → chunk-6FXHSNXA.js.map} +0 -0
- /package/dist/{chunk-YRTHZDTO.js.map → chunk-6Q7EYNH2.js.map} +0 -0
- /package/dist/{chunk-PW4DLY5W.js.map → chunk-7LGBEEKB.js.map} +0 -0
- /package/dist/{chunk-3NPRFOSH.js.map → chunk-BHLPPZZ6.js.map} +0 -0
- /package/dist/{chunk-4NH3RNU6.js.map → chunk-BXOXALDW.js.map} +0 -0
- /package/dist/{chunk-KJHB4KH2.js.map → chunk-CH2WD3MA.js.map} +0 -0
- /package/dist/{chunk-VRTZSUMG.js.map → chunk-DWZXQYUL.js.map} +0 -0
- /package/dist/{chunk-BZPRF4SJ.js.map → chunk-DY5FNADP.js.map} +0 -0
- /package/dist/{chunk-6W4KJFPT.js.map → chunk-EX5EN5B6.js.map} +0 -0
- /package/dist/{chunk-LWVRXNCL.js.map → chunk-FFUIQBDD.js.map} +0 -0
- /package/dist/{chunk-XNX4SH4O.js.map → chunk-HFPR4I3U.js.map} +0 -0
- /package/dist/{chunk-UFO5A53B.js.map → chunk-IPWGHYXZ.js.map} +0 -0
- /package/dist/{chunk-PD2GZQYH.js.map → chunk-JN42TCDE.js.map} +0 -0
- /package/dist/{chunk-B5C5IMIV.js.map → chunk-LEYBZKK2.js.map} +0 -0
- /package/dist/{chunk-HA2U5XJ2.js.map → chunk-LNX6D7GM.js.map} +0 -0
- /package/dist/{chunk-C4SNSFBV.js.map → chunk-NHLKZ3KC.js.map} +0 -0
- /package/dist/{chunk-256K77ED.js.map → chunk-OBTPPT3M.js.map} +0 -0
- /package/dist/{chunk-BTFOWREE.js.map → chunk-R5ASFO5P.js.map} +0 -0
- /package/dist/{chunk-ALCCX5DS.js.map → chunk-RSDKRBZC.js.map} +0 -0
- /package/dist/{chunk-YWEZ7W4K.js.map → chunk-UA6FZ2WV.js.map} +0 -0
- /package/dist/{chunk-AQVSAPQD.js.map → chunk-UB7PB7GI.js.map} +0 -0
- /package/dist/{chunk-NXMETLX7.js.map → chunk-UQR4SSUJ.js.map} +0 -0
- /package/dist/{chunk-FMN3QH3O.js.map → chunk-WUUZ5KH2.js.map} +0 -0
- /package/dist/{chunk-NO55AP2L.js.map → chunk-XRPHJNVB.js.map} +0 -0
- /package/dist/{chunk-UMFQ52XI.js.map → chunk-Y6QNLP5P.js.map} +0 -0
- /package/dist/{chunk-U53CKPED.js.map → chunk-ZA627SSQ.js.map} +0 -0
- /package/dist/{cli-circuit-breaker-2T4GGSUE.js.map → cli-circuit-breaker-GJWYQL6L.js.map} +0 -0
- /package/dist/{composite-router-DH2S2IVK.js.map → composite-router-TL5XKK5X.js.map} +0 -0
- /package/dist/{consensus-vote-4VBUZ5NH.js.map → consensus-vote-H363QXSE.js.map} +0 -0
- /package/dist/{context-retriever-5NGYA4JC.js.map → context-retriever-CC3W7XS6.js.map} +0 -0
- /package/dist/{doctor-deep-535NDUD2.js.map → doctor-deep-XBJ5HS3B.js.map} +0 -0
- /package/dist/{doctor-live-CAREILU5.js.map → doctor-live-CNKTVDK6.js.map} +0 -0
- /package/dist/{expert-bridge-7WAFFJWN.js.map → expert-bridge-YPVHOWFB.js.map} +0 -0
- /package/dist/{factory-L2OVYRN4.js.map → factory-JHBJB2O2.js.map} +0 -0
- /package/dist/{factory-ZU75VK4Z.js.map → factory-MRSIKSPG.js.map} +0 -0
- /package/dist/{improvement-review-RSKJAU4A.js.map → improvement-review-TSSTONUQ.js.map} +0 -0
- /package/dist/{init-opencode-SHNOT2CZ.js.map → init-opencode-FH2LR62J.js.map} +0 -0
- /package/dist/{issue-triage-TS4WXIQ2.js.map → issue-triage-TI6R4XZL.js.map} +0 -0
- /package/dist/{pr-reviewer-helpers-P6DXUMTO.js.map → pr-reviewer-helpers-QG53KLXL.js.map} +0 -0
- /package/dist/{registry-command-R336DHZS.js.map → registry-command-IX7IISYC.js.map} +0 -0
- /package/dist/{repo-security-plan-LLTLKJWF.js.map → repo-security-plan-FE2KXATO.js.map} +0 -0
- /package/dist/{research-helpers-synthesize-N7NYBAKW.js.map → research-helpers-synthesize-TRAPPDBV.js.map} +0 -0
- /package/dist/{routing-memory-YLQPO5OH.js.map → routing-memory-IXTZH2LJ.js.map} +0 -0
- /package/dist/{session-memory-6PNSAPG4.js.map → session-memory-LG3G33MF.js.map} +0 -0
- /package/dist/{setup-config-SY3HM5OH.js.map → setup-config-HAIUEE4A.js.map} +0 -0
- /package/dist/{setup-custom-api-ZEGB745O.js.map → setup-custom-api-437P3KVD.js.map} +0 -0
- /package/dist/{setup-data-dir-OFOKYKTI.js.map → setup-data-dir-BVALVICE.js.map} +0 -0
- /package/dist/{tool-memory-3GBF2OOW.js.map → tool-memory-A7C3WO3Q.js.map} +0 -0
- /package/dist/{unified-registry-SCYTXNHW.js.map → unified-registry-YF3B3PDU.js.map} +0 -0
- /package/dist/{weather-report-NGBJYVS6.js.map → weather-report-NDQU55YN.js.map} +0 -0
|
@@ -9,8 +9,8 @@ import {
|
|
|
9
9
|
getBuiltInAstRulesPath,
|
|
10
10
|
loadRules,
|
|
11
11
|
runAstQaRules
|
|
12
|
-
} from "./chunk-
|
|
13
|
-
import "./chunk-
|
|
12
|
+
} from "./chunk-R5ASFO5P.js";
|
|
13
|
+
import "./chunk-HXOEF3YP.js";
|
|
14
14
|
import "./chunk-4UHDDCRB.js";
|
|
15
15
|
import "./chunk-RNDHNRSX.js";
|
|
16
16
|
import "./chunk-PX6F3LHL.js";
|
|
@@ -26,4 +26,4 @@ export {
|
|
|
26
26
|
loadRules,
|
|
27
27
|
runAstQaRules
|
|
28
28
|
};
|
|
29
|
-
//# sourceMappingURL=ast-rule-runner-
|
|
29
|
+
//# sourceMappingURL=ast-rule-runner-LXMZIGCY.js.map
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
} from "./chunk-HERI7LXN.js";
|
|
4
4
|
import {
|
|
5
5
|
createLogger
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-HXOEF3YP.js";
|
|
7
7
|
import "./chunk-4UHDDCRB.js";
|
|
8
8
|
import "./chunk-RNDHNRSX.js";
|
|
9
9
|
import "./chunk-PX6F3LHL.js";
|
|
@@ -56,4 +56,4 @@ async function generateMcpConfig(options) {
|
|
|
56
56
|
export {
|
|
57
57
|
generateMcpConfig
|
|
58
58
|
};
|
|
59
|
-
//# sourceMappingURL=child-mcp-config-
|
|
59
|
+
//# sourceMappingURL=child-mcp-config-OBHZQG2Q.js.map
|
|
@@ -2,7 +2,7 @@ import {
|
|
|
2
2
|
createLogger,
|
|
3
3
|
err,
|
|
4
4
|
ok
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-HXOEF3YP.js";
|
|
6
6
|
|
|
7
7
|
// src/scm/token-resolver.ts
|
|
8
8
|
import { execFile } from "node:child_process";
|
|
@@ -87,4 +87,4 @@ export {
|
|
|
87
87
|
hasToken,
|
|
88
88
|
getTokenEnvVars
|
|
89
89
|
};
|
|
90
|
-
//# sourceMappingURL=chunk-
|
|
90
|
+
//# sourceMappingURL=chunk-2EBCZOVZ.js.map
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
MODEL_IDS,
|
|
4
4
|
getTimeProvider,
|
|
5
5
|
resolveModelIdentitySync
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-HXOEF3YP.js";
|
|
7
7
|
|
|
8
8
|
// src/config/model-availability.ts
|
|
9
9
|
var DEFAULT_TTL_MS = 6e4;
|
|
@@ -150,4 +150,4 @@ export {
|
|
|
150
150
|
resetAvailabilityCache,
|
|
151
151
|
filterAvailableModels
|
|
152
152
|
};
|
|
153
|
-
//# sourceMappingURL=chunk-
|
|
153
|
+
//# sourceMappingURL=chunk-45EJ4PBT.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
getErrorMessage
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-HXOEF3YP.js";
|
|
4
4
|
|
|
5
5
|
// src/cli/setup-config.ts
|
|
6
6
|
import { copyFileSync, existsSync, mkdirSync, writeFileSync } from "node:fs";
|
|
@@ -77,4 +77,4 @@ function ensureBackup(outputPath) {
|
|
|
77
77
|
export {
|
|
78
78
|
runConfigInitSync
|
|
79
79
|
};
|
|
80
|
-
//# sourceMappingURL=chunk-
|
|
80
|
+
//# sourceMappingURL=chunk-6FXHSNXA.js.map
|
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
import {
|
|
5
5
|
createLogger,
|
|
6
6
|
getTimeProvider
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-HXOEF3YP.js";
|
|
8
8
|
|
|
9
9
|
// src/mcp/tools/scanner-registry-fetcher.ts
|
|
10
10
|
import { z } from "zod";
|
|
@@ -740,4 +740,4 @@ export {
|
|
|
740
740
|
generateSecurityPlan,
|
|
741
741
|
buildPlanFromAnalysis
|
|
742
742
|
};
|
|
743
|
-
//# sourceMappingURL=chunk-
|
|
743
|
+
//# sourceMappingURL=chunk-6Q7EYNH2.js.map
|
|
@@ -8,7 +8,7 @@ import {
|
|
|
8
8
|
MCP_TIMEOUTS,
|
|
9
9
|
TEST_TIMEOUTS,
|
|
10
10
|
WORKFLOW_TIMEOUTS
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-HXOEF3YP.js";
|
|
12
12
|
import {
|
|
13
13
|
createGetToolRateLimit
|
|
14
14
|
} from "./chunk-RNDHNRSX.js";
|
|
@@ -223,4 +223,4 @@ export {
|
|
|
223
223
|
CUSTOM_API_DEFAULT_MODEL,
|
|
224
224
|
DEFAULTS
|
|
225
225
|
};
|
|
226
|
-
//# sourceMappingURL=chunk-
|
|
226
|
+
//# sourceMappingURL=chunk-7LGBEEKB.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
GitHubProvider,
|
|
3
3
|
ScmError
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-WUUZ5KH2.js";
|
|
5
5
|
import {
|
|
6
6
|
ROLE_DEFAULT_TRUST,
|
|
7
7
|
ReputationCache,
|
|
@@ -12,10 +12,10 @@ import {
|
|
|
12
12
|
resolveEnvMode,
|
|
13
13
|
resolveReputationGatingMode,
|
|
14
14
|
sanitizeInput
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-ZA627SSQ.js";
|
|
16
16
|
import {
|
|
17
17
|
hasToken
|
|
18
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-2EBCZOVZ.js";
|
|
19
19
|
import {
|
|
20
20
|
CLI_SUBPROCESS_TIMEOUTS,
|
|
21
21
|
createLogger,
|
|
@@ -23,7 +23,7 @@ import {
|
|
|
23
23
|
getErrorMessage,
|
|
24
24
|
getTimeProvider,
|
|
25
25
|
ok
|
|
26
|
-
} from "./chunk-
|
|
26
|
+
} from "./chunk-HXOEF3YP.js";
|
|
27
27
|
|
|
28
28
|
// src/security/firewall/firewall-policy-mode.ts
|
|
29
29
|
import { z } from "zod";
|
|
@@ -1012,6 +1012,55 @@ function policyRefusal(policy, policyMode, user, effectiveTrustTier) {
|
|
|
1012
1012
|
violations: blocking
|
|
1013
1013
|
};
|
|
1014
1014
|
}
|
|
1015
|
+
function executeActionPolicy(action, options, config) {
|
|
1016
|
+
const context = options.context ?? config.defaultContext;
|
|
1017
|
+
const actionContext = buildActionContext(options.effectiveTrustTier, context, options);
|
|
1018
|
+
const evaluation = evaluateFirewallPolicy(
|
|
1019
|
+
actionContext,
|
|
1020
|
+
action,
|
|
1021
|
+
config.auditStage ? config.auditTrail : void 0
|
|
1022
|
+
);
|
|
1023
|
+
const blocking = blockingViolations(evaluation);
|
|
1024
|
+
if (blocking.length > 0) {
|
|
1025
|
+
logger2.warn("Firewall surfaced blocking policy violations", {
|
|
1026
|
+
user: options.user,
|
|
1027
|
+
effectiveTrustTier: options.effectiveTrustTier,
|
|
1028
|
+
scope: evaluation.scope,
|
|
1029
|
+
rules: blocking.map((v) => v.rule)
|
|
1030
|
+
});
|
|
1031
|
+
}
|
|
1032
|
+
const refusal = policyRefusal(
|
|
1033
|
+
evaluation,
|
|
1034
|
+
config.policyMode,
|
|
1035
|
+
options.user,
|
|
1036
|
+
options.effectiveTrustTier
|
|
1037
|
+
);
|
|
1038
|
+
if (refusal !== void 0) return err(refusal);
|
|
1039
|
+
return ok({
|
|
1040
|
+
evaluated: true,
|
|
1041
|
+
policy: evaluation,
|
|
1042
|
+
effectiveTrustTier: options.effectiveTrustTier,
|
|
1043
|
+
policyMode: config.policyMode,
|
|
1044
|
+
wouldRefuse: blocking.length > 0 && config.policyMode === "audit"
|
|
1045
|
+
});
|
|
1046
|
+
}
|
|
1047
|
+
function evaluateActionPolicy(action, options, config) {
|
|
1048
|
+
if (options.user.trim() === "") {
|
|
1049
|
+
return err({
|
|
1050
|
+
code: "EXTRACTION_FAILED",
|
|
1051
|
+
message: "Author username is required",
|
|
1052
|
+
stage: "extraction"
|
|
1053
|
+
});
|
|
1054
|
+
}
|
|
1055
|
+
if (!config.policyEnforcementStage) {
|
|
1056
|
+
return ok({
|
|
1057
|
+
evaluated: false,
|
|
1058
|
+
reason: "policy-stage-disabled",
|
|
1059
|
+
policyMode: config.policyMode
|
|
1060
|
+
});
|
|
1061
|
+
}
|
|
1062
|
+
return executeActionPolicy(action, options, config);
|
|
1063
|
+
}
|
|
1015
1064
|
|
|
1016
1065
|
// src/security/corroboration-validator.ts
|
|
1017
1066
|
function hasCIPass(sources) {
|
|
@@ -1244,10 +1293,31 @@ var HostileInputFirewall = class {
|
|
|
1244
1293
|
reputationGate,
|
|
1245
1294
|
atl,
|
|
1246
1295
|
policy,
|
|
1247
|
-
start
|
|
1296
|
+
start,
|
|
1297
|
+
user: meta.username,
|
|
1298
|
+
context
|
|
1248
1299
|
})
|
|
1249
1300
|
);
|
|
1250
1301
|
}
|
|
1302
|
+
/**
|
|
1303
|
+
* Action-shaped re-entry that evaluates policy for one action against an
|
|
1304
|
+
* already-enforced trust tier (#6310).
|
|
1305
|
+
*
|
|
1306
|
+
* Unlike {@link process}, this does NOT re-run input extraction, sanitization,
|
|
1307
|
+
* trust classification, or reputation gating, and does NOT re-emit the
|
|
1308
|
+
* input-level audit events (`sanitization`, `reputation`, `trust_classification`).
|
|
1309
|
+
* It evaluates the policy stage against the provided tier and context,
|
|
1310
|
+
* recording only the `policy_gate` event to the audit trail.
|
|
1311
|
+
*/
|
|
1312
|
+
evaluateAction(action, options) {
|
|
1313
|
+
return evaluateActionPolicy(action, options, {
|
|
1314
|
+
defaultContext: this.context,
|
|
1315
|
+
policyMode: this.policyMode,
|
|
1316
|
+
policyEnforcementStage: this.stages.policyEnforcement,
|
|
1317
|
+
auditTrail: this.auditTrail,
|
|
1318
|
+
auditStage: this.stages.audit
|
|
1319
|
+
});
|
|
1320
|
+
}
|
|
1251
1321
|
/**
|
|
1252
1322
|
* Runs the policy checks the call's facts allow — see
|
|
1253
1323
|
* {@link evaluateFirewallPolicy} (#5380; Rule-of-Two-only since #3198). The
|
|
@@ -1299,7 +1369,13 @@ var HostileInputFirewall = class {
|
|
|
1299
1369
|
wouldRefuse: blocking && this.policyMode === "audit",
|
|
1300
1370
|
auditEvents: this.auditTrail.query().map((e) => ({ id: e.id, type: e.type })),
|
|
1301
1371
|
auditSink: this.auditSink,
|
|
1302
|
-
durationMs: Date.now() - parts.start
|
|
1372
|
+
durationMs: Date.now() - parts.start,
|
|
1373
|
+
evaluateAction: (action, evalOptions) => this.evaluateAction(action, {
|
|
1374
|
+
user: parts.user,
|
|
1375
|
+
effectiveTrustTier: parts.effectiveTrustTier,
|
|
1376
|
+
context: evalOptions?.context ?? parts.context,
|
|
1377
|
+
existingLabels: evalOptions?.existingLabels
|
|
1378
|
+
})
|
|
1303
1379
|
};
|
|
1304
1380
|
}
|
|
1305
1381
|
/**
|
|
@@ -1581,7 +1657,60 @@ function runUntrustedInputFirewall(input, options) {
|
|
|
1581
1657
|
if (!result.ok) return err(asError(result.error));
|
|
1582
1658
|
return ok(result.value);
|
|
1583
1659
|
}
|
|
1584
|
-
function
|
|
1660
|
+
function isActionHandleInput(input) {
|
|
1661
|
+
return "evaluateAction" in input && typeof input.evaluateAction === "function";
|
|
1662
|
+
}
|
|
1663
|
+
function logAuditRefusal(actionType, result) {
|
|
1664
|
+
const { policy, effectiveTrustTier } = result;
|
|
1665
|
+
logger4.warn("Untrusted-input firewall would refuse under enforce (audit mode)", {
|
|
1666
|
+
actionType,
|
|
1667
|
+
trustTier: effectiveTrustTier,
|
|
1668
|
+
scope: policy.scope,
|
|
1669
|
+
rules: policy.violations.filter((v) => v.severity === "block").map((v) => v.rule),
|
|
1670
|
+
unmeasured: policy.unmeasured
|
|
1671
|
+
});
|
|
1672
|
+
}
|
|
1673
|
+
function evaluateActionViaHandle(input, options) {
|
|
1674
|
+
const actionResult = input.evaluateAction(options.action, {
|
|
1675
|
+
context: options.context,
|
|
1676
|
+
existingLabels: options.existingLabels
|
|
1677
|
+
});
|
|
1678
|
+
if (!actionResult.ok) {
|
|
1679
|
+
const { code, stage, violations } = actionResult.error;
|
|
1680
|
+
if (code !== "POLICY_REFUSED" || stage !== "policy") return err(asError(actionResult.error));
|
|
1681
|
+
if (violations === void 0 || violations.length === 0)
|
|
1682
|
+
return err(asError(actionResult.error));
|
|
1683
|
+
return ok({ refused: true, allowed: false, violations, policyMode: "enforce" });
|
|
1684
|
+
}
|
|
1685
|
+
if (!actionResult.value.evaluated) {
|
|
1686
|
+
return err(
|
|
1687
|
+
new Error(
|
|
1688
|
+
`Untrusted-input firewall did not evaluate policy for action ${options.action.type} (the policy stage is disabled)`
|
|
1689
|
+
)
|
|
1690
|
+
);
|
|
1691
|
+
}
|
|
1692
|
+
const { policy, policyMode, wouldRefuse, effectiveTrustTier } = actionResult.value;
|
|
1693
|
+
if (effectiveTrustTier !== options.enforcedTier) {
|
|
1694
|
+
return err(
|
|
1695
|
+
new Error(
|
|
1696
|
+
`Untrusted-input firewall enforced tier ${effectiveTrustTier} for action ${options.action.type} but tier ${options.enforcedTier} for the classification`
|
|
1697
|
+
)
|
|
1698
|
+
);
|
|
1699
|
+
}
|
|
1700
|
+
if (wouldRefuse) {
|
|
1701
|
+
logAuditRefusal(options.action.type, actionResult.value);
|
|
1702
|
+
}
|
|
1703
|
+
return ok({
|
|
1704
|
+
refused: false,
|
|
1705
|
+
allowed: policy.allowed,
|
|
1706
|
+
requiresApproval: policy.requiresApproval,
|
|
1707
|
+
violations: policy.violations,
|
|
1708
|
+
effectiveTrustTier,
|
|
1709
|
+
policyMode,
|
|
1710
|
+
wouldRefuse
|
|
1711
|
+
});
|
|
1712
|
+
}
|
|
1713
|
+
function evaluateActionViaProcess(input, options) {
|
|
1585
1714
|
const { enforcedTier, ...processOptions } = options;
|
|
1586
1715
|
const result = processAndLog(input, processOptions);
|
|
1587
1716
|
if (!result.ok) {
|
|
@@ -1616,6 +1745,12 @@ function evaluateActionThroughFirewall(input, options) {
|
|
|
1616
1745
|
wouldRefuse
|
|
1617
1746
|
});
|
|
1618
1747
|
}
|
|
1748
|
+
function evaluateActionThroughFirewall(input, options) {
|
|
1749
|
+
if (isActionHandleInput(input)) {
|
|
1750
|
+
return evaluateActionViaHandle(input, options);
|
|
1751
|
+
}
|
|
1752
|
+
return evaluateActionViaProcess(input, options);
|
|
1753
|
+
}
|
|
1619
1754
|
function validateActionCorroboration(action) {
|
|
1620
1755
|
const result = getUntrustedInputFirewall().validateAction(action);
|
|
1621
1756
|
if (!result.ok) {
|
|
@@ -2207,7 +2342,7 @@ var IssueTriage = class {
|
|
|
2207
2342
|
const actions = this.generateActions(safeTitle, safeBody, issueResult, enforced);
|
|
2208
2343
|
const withEscalation = applySafetyActions(actions, gateDecision, reputation, issueResult);
|
|
2209
2344
|
const validatedActions = validateActionsThroughFirewall(
|
|
2210
|
-
|
|
2345
|
+
firewall.value,
|
|
2211
2346
|
{ ...this.firewallOptions(reputation), enforcedTier: gateDecision.enforcedTier },
|
|
2212
2347
|
withEscalation,
|
|
2213
2348
|
existingLabels
|
|
@@ -2515,4 +2650,4 @@ export {
|
|
|
2515
2650
|
IssueTriage,
|
|
2516
2651
|
createIssueTriage
|
|
2517
2652
|
};
|
|
2518
|
-
//# sourceMappingURL=chunk-
|
|
2653
|
+
//# sourceMappingURL=chunk-AKM6ILIM.js.map
|