@node9/proxy 2.47.0 → 2.47.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.
- package/dist/cli-main.js +90570 -0
- package/dist/{cli.mjs → cli-main.mjs} +1342 -930
- package/dist/cli.js +79 -90110
- package/dist/dashboard.mjs +512 -352
- package/dist/hook.js +27499 -0
- package/dist/index.js +191 -83
- package/dist/index.mjs +325 -216
- package/dist/scan-ink.mjs +64 -39
- package/package.json +1 -1
- /package/dist/{cli.d.mts → cli-main.d.mts} +0 -0
- /package/dist/{cli.d.ts → cli-main.d.ts} +0 -0
package/dist/index.js
CHANGED
|
@@ -35,6 +35,16 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
35
35
|
));
|
|
36
36
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
37
37
|
|
|
38
|
+
// node_modules/tsup/assets/cjs_shims.js
|
|
39
|
+
var getImportMetaUrl, importMetaUrl;
|
|
40
|
+
var init_cjs_shims = __esm({
|
|
41
|
+
"node_modules/tsup/assets/cjs_shims.js"() {
|
|
42
|
+
"use strict";
|
|
43
|
+
getImportMetaUrl = () => typeof document === "undefined" ? new URL(`file:${__filename}`).href : document.currentScript && document.currentScript.tagName.toUpperCase() === "SCRIPT" ? document.currentScript.src : new URL("main.js", document.baseURI).href;
|
|
44
|
+
importMetaUrl = /* @__PURE__ */ getImportMetaUrl();
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
|
|
38
48
|
// src/audit/hasher.ts
|
|
39
49
|
function canonicalise(value) {
|
|
40
50
|
return _canonicalise(value, /* @__PURE__ */ new WeakSet());
|
|
@@ -66,6 +76,7 @@ var import_crypto;
|
|
|
66
76
|
var init_hasher = __esm({
|
|
67
77
|
"src/audit/hasher.ts"() {
|
|
68
78
|
"use strict";
|
|
79
|
+
init_cjs_shims();
|
|
69
80
|
import_crypto = require("crypto");
|
|
70
81
|
}
|
|
71
82
|
});
|
|
@@ -81,6 +92,7 @@ var import_async_hooks, als;
|
|
|
81
92
|
var init_forecast_context = __esm({
|
|
82
93
|
"src/auth/forecast-context.ts"() {
|
|
83
94
|
"use strict";
|
|
95
|
+
init_cjs_shims();
|
|
84
96
|
import_async_hooks = require("async_hooks");
|
|
85
97
|
als = new import_async_hooks.AsyncLocalStorage();
|
|
86
98
|
}
|
|
@@ -667,11 +679,29 @@ function resolveCheckMap(settings) {
|
|
|
667
679
|
for (const c of CHECKS) out[c.id] = checkValue(settings, c.id);
|
|
668
680
|
return out;
|
|
669
681
|
}
|
|
682
|
+
function getSyntax() {
|
|
683
|
+
if (syntax === null) {
|
|
684
|
+
const req = (0, import_module.createRequire)(__filename2);
|
|
685
|
+
syntax = req("mvdan-sh").syntax;
|
|
686
|
+
}
|
|
687
|
+
return syntax;
|
|
688
|
+
}
|
|
689
|
+
function lazy(compute) {
|
|
690
|
+
let done = false;
|
|
691
|
+
let value;
|
|
692
|
+
return () => {
|
|
693
|
+
if (!done) {
|
|
694
|
+
value = compute();
|
|
695
|
+
done = true;
|
|
696
|
+
}
|
|
697
|
+
return value;
|
|
698
|
+
};
|
|
699
|
+
}
|
|
670
700
|
function isGoNode(v) {
|
|
671
701
|
return v !== null && typeof v === "object" && typeof v.Pos === "function";
|
|
672
702
|
}
|
|
673
703
|
function toPlainTree(goNode) {
|
|
674
|
-
const kind =
|
|
704
|
+
const kind = getSyntax().NodeType(goNode);
|
|
675
705
|
const out = { kind, pos: goNode.Pos().Offset(), end: goNode.End().Offset() };
|
|
676
706
|
const spec = KINDS[kind];
|
|
677
707
|
if (!spec) {
|
|
@@ -861,12 +891,12 @@ function judgeInlineCode(language, code, isProtected) {
|
|
|
861
891
|
category
|
|
862
892
|
};
|
|
863
893
|
}
|
|
864
|
-
const
|
|
865
|
-
if (
|
|
894
|
+
const path210 = protectedLiteral(text, isProtected);
|
|
895
|
+
if (path210) {
|
|
866
896
|
return {
|
|
867
897
|
outcome: "dangerous",
|
|
868
898
|
what: WHAT["reads-protected"],
|
|
869
|
-
evidence:
|
|
899
|
+
evidence: path210.slice(0, 60),
|
|
870
900
|
category: "reads-protected"
|
|
871
901
|
};
|
|
872
902
|
}
|
|
@@ -902,7 +932,7 @@ function parseShared(command) {
|
|
|
902
932
|
}
|
|
903
933
|
let parsed;
|
|
904
934
|
try {
|
|
905
|
-
parsed = toPlainTree(sharedParser.Parse(command, "cmd"));
|
|
935
|
+
parsed = toPlainTree(sharedParser().Parse(command, "cmd"));
|
|
906
936
|
} catch {
|
|
907
937
|
parsed = PARSE_FAIL;
|
|
908
938
|
}
|
|
@@ -1450,7 +1480,7 @@ function redirStdinOps() {
|
|
|
1450
1480
|
}
|
|
1451
1481
|
function deriveBinaryOp(sample) {
|
|
1452
1482
|
try {
|
|
1453
|
-
const f = toPlainTree(sharedParser.Parse(sample, "cmd"));
|
|
1483
|
+
const f = toPlainTree(sharedParser().Parse(sample, "cmd"));
|
|
1454
1484
|
let op = -1;
|
|
1455
1485
|
walk(f, (node) => {
|
|
1456
1486
|
const n = node;
|
|
@@ -1894,7 +1924,7 @@ function recordTopLevelAssignments(f) {
|
|
|
1894
1924
|
}
|
|
1895
1925
|
function probeBinOp(src) {
|
|
1896
1926
|
try {
|
|
1897
|
-
const cmd = toPlainTree(
|
|
1927
|
+
const cmd = toPlainTree(getSyntax().NewParser().Parse(src, "probe"))?.Stmts?.[0]?.Cmd;
|
|
1898
1928
|
if (cmd && cmd.kind === "BinaryCmd") return cmd.Op;
|
|
1899
1929
|
} catch {
|
|
1900
1930
|
}
|
|
@@ -1904,9 +1934,9 @@ function recordTopLevelStmt(stmt) {
|
|
|
1904
1934
|
if (!stmt || !stmt.Cmd) return false;
|
|
1905
1935
|
const t = stmt.Cmd.kind;
|
|
1906
1936
|
if (t === "BinaryCmd") {
|
|
1907
|
-
if (!AND_OR_OPS.has(stmt.Cmd.Op)) return false;
|
|
1937
|
+
if (!andOrOps().AND_OR_OPS.has(stmt.Cmd.Op)) return false;
|
|
1908
1938
|
if (!recordTopLevelStmt(stmt.Cmd.X)) return false;
|
|
1909
|
-
if (stmt.Cmd.Op === AND_OP) return recordTopLevelStmt(stmt.Cmd.Y);
|
|
1939
|
+
if (stmt.Cmd.Op === andOrOps().AND_OP) return recordTopLevelStmt(stmt.Cmd.Y);
|
|
1910
1940
|
return true;
|
|
1911
1941
|
}
|
|
1912
1942
|
if (t !== "CallExpr" && t !== "DeclClause") return false;
|
|
@@ -2357,7 +2387,7 @@ function isWaivableCleanupTarget(p) {
|
|
|
2357
2387
|
}
|
|
2358
2388
|
function deriveRedirOp(sample) {
|
|
2359
2389
|
try {
|
|
2360
|
-
const f = toPlainTree(sharedParser.Parse(sample, "cmd"));
|
|
2390
|
+
const f = toPlainTree(sharedParser().Parse(sample, "cmd"));
|
|
2361
2391
|
let op = -1;
|
|
2362
2392
|
walk(f, (node) => {
|
|
2363
2393
|
const n = node;
|
|
@@ -2376,9 +2406,9 @@ function collectSameCommandCreations(f) {
|
|
|
2376
2406
|
for (const stmt of stmts) {
|
|
2377
2407
|
if (!stmt || !stmt.Cmd || stmt.Cmd.kind !== "CallExpr") continue;
|
|
2378
2408
|
const redirs = stmt.Redirs || [];
|
|
2379
|
-
if (!redirs.some((r) => r && REDIR_HEREDOC_OPS.has(r.Op))) continue;
|
|
2409
|
+
if (!redirs.some((r) => r && REDIR_HEREDOC_OPS().has(r.Op))) continue;
|
|
2380
2410
|
for (const r of redirs) {
|
|
2381
|
-
if (r && REDIR_TRUNCATE_OPS.has(r.Op) && r.N == null) {
|
|
2411
|
+
if (r && REDIR_TRUNCATE_OPS().has(r.Op) && r.N == null) {
|
|
2382
2412
|
const w = resolveWordLiteral(r.Word);
|
|
2383
2413
|
if (w) created.add(stripDotSlash(w));
|
|
2384
2414
|
}
|
|
@@ -2948,7 +2978,7 @@ function literalShellPayload(words, name) {
|
|
|
2948
2978
|
function jailedRedirectRead(stmt) {
|
|
2949
2979
|
const redirs = stmt.Redirs || [];
|
|
2950
2980
|
for (const r of redirs) {
|
|
2951
|
-
if (!r || !REDIR_FILE_IN_OPS.has(r.Op)) continue;
|
|
2981
|
+
if (!r || !REDIR_FILE_IN_OPS().has(r.Op)) continue;
|
|
2952
2982
|
const p = resolveWordLiteral(r.Word);
|
|
2953
2983
|
if (p === null || p === "") continue;
|
|
2954
2984
|
const hit = matchSensitivePath(p);
|
|
@@ -3030,9 +3060,9 @@ function ruleServerMatches(rule, serverLabel) {
|
|
|
3030
3060
|
if (rule.notServer && label2 && matchesPattern(label2, rule.notServer)) return false;
|
|
3031
3061
|
return true;
|
|
3032
3062
|
}
|
|
3033
|
-
function getNestedValue(obj,
|
|
3063
|
+
function getNestedValue(obj, path210) {
|
|
3034
3064
|
if (!obj || typeof obj !== "object") return null;
|
|
3035
|
-
const segments2 =
|
|
3065
|
+
const segments2 = path210.split(".");
|
|
3036
3066
|
for (const seg of segments2) {
|
|
3037
3067
|
if (FORBIDDEN_PATH_SEGMENTS.has(seg)) return null;
|
|
3038
3068
|
}
|
|
@@ -3244,7 +3274,7 @@ function runnablePrefix(command) {
|
|
|
3244
3274
|
let text = command;
|
|
3245
3275
|
for (let attempt = 0; attempt < 32; attempt++) {
|
|
3246
3276
|
try {
|
|
3247
|
-
return toPlainTree(
|
|
3277
|
+
return toPlainTree(getSyntax().NewParser().Parse(text, ""));
|
|
3248
3278
|
} catch (error) {
|
|
3249
3279
|
const message = String(typeof error?.Error === "function" ? error.Error() : error?.message);
|
|
3250
3280
|
const line = Number(/^(\d+):/.exec(message)?.[1]);
|
|
@@ -3289,7 +3319,7 @@ function wordValues(word, state) {
|
|
|
3289
3319
|
const name = node.Param?.Value;
|
|
3290
3320
|
const known = name === "PWD" ? state.cwd : state.vars.get(name);
|
|
3291
3321
|
if (node.Exp) {
|
|
3292
|
-
if (!DEFAULT_OPS.has(node.Exp.Op)) return null;
|
|
3322
|
+
if (!ops().DEFAULT_OPS.has(node.Exp.Op)) return null;
|
|
3293
3323
|
if (known && known.length) return toWords(known, quoted);
|
|
3294
3324
|
const fallback = expand(node.Exp.Word?.Parts ?? [], quoted);
|
|
3295
3325
|
return fallback.dynamic ? null : fallback.out.map(asWord);
|
|
@@ -3636,7 +3666,7 @@ function collectShellFileAccesses(command, context = {}) {
|
|
|
3636
3666
|
const urls = [];
|
|
3637
3667
|
let dir2 = null;
|
|
3638
3668
|
let remoteName = false;
|
|
3639
|
-
let
|
|
3669
|
+
let document2 = false;
|
|
3640
3670
|
let serverNamed = false;
|
|
3641
3671
|
const take = (flag, value) => {
|
|
3642
3672
|
if (!value) return;
|
|
@@ -3644,7 +3674,7 @@ function collectShellFileAccesses(command, context = {}) {
|
|
|
3644
3674
|
if (sent) add("read", sent, state, { upload: true });
|
|
3645
3675
|
if (DOWNLOAD_OUTPUT_FLAGS[name].includes(flag)) {
|
|
3646
3676
|
if (["-O", "--output-document", "--out"].includes(flag) || name === "aria2c" && flag === "-o")
|
|
3647
|
-
|
|
3677
|
+
document2 = true;
|
|
3648
3678
|
if (value.value !== "-" || value.pattern || value.dynamic) outputs.push(value);
|
|
3649
3679
|
} else if (DOWNLOAD_DIR_FLAGS[name].includes(flag)) dir2 = value;
|
|
3650
3680
|
else if (name === "wget" && (flag === "-i" || flag === "--input-file")) serverNamed = true;
|
|
@@ -3689,7 +3719,7 @@ function collectShellFileAccesses(command, context = {}) {
|
|
|
3689
3719
|
add("write", { value: "", pattern: spelled.value.replace(/#\d+/g, "*"), dot: true }, state);
|
|
3690
3720
|
else add("write", spelled, state);
|
|
3691
3721
|
}
|
|
3692
|
-
const remote = name === "curl" ? remoteName || serverNamed : !
|
|
3722
|
+
const remote = name === "curl" ? remoteName || serverNamed : !document2 || serverNamed;
|
|
3693
3723
|
if (!remote) return;
|
|
3694
3724
|
const into = dir2?.value ? dir2.value.replace(/\/+$/, "") : ".";
|
|
3695
3725
|
if (serverNamed || urls.length === 0) {
|
|
@@ -3814,7 +3844,7 @@ function collectShellFileAccesses(command, context = {}) {
|
|
|
3814
3844
|
function stdinText(stmt) {
|
|
3815
3845
|
for (const redir of stmt?.Redirs ?? []) {
|
|
3816
3846
|
if (redir.Hdoc) return resolveWordLiteral(redir.Hdoc);
|
|
3817
|
-
if (redir.Op === HERE_STRING) return resolveWordLiteral(redir.Word);
|
|
3847
|
+
if (redir.Op === ops().HERE_STRING) return resolveWordLiteral(redir.Word);
|
|
3818
3848
|
}
|
|
3819
3849
|
return null;
|
|
3820
3850
|
}
|
|
@@ -3844,10 +3874,10 @@ function collectShellFileAccesses(command, context = {}) {
|
|
|
3844
3874
|
for (const redir of stmt.Redirs ?? []) {
|
|
3845
3875
|
substitutions(redir.Word, state, depth);
|
|
3846
3876
|
for (const word of wordValues(redir.Word, state)) {
|
|
3847
|
-
if (WRITES.has(redir.Op))
|
|
3848
|
-
add("write", word, state, APPENDS.has(redir.Op) ? { append: true } : {});
|
|
3849
|
-
if (READS.has(redir.Op)) add("read", word, state, sends ? { upload: true } : {});
|
|
3850
|
-
if (redir.Op === DUP_OUT && word.value && !/^\d+$/.test(word.value))
|
|
3877
|
+
if (ops().WRITES.has(redir.Op))
|
|
3878
|
+
add("write", word, state, ops().APPENDS.has(redir.Op) ? { append: true } : {});
|
|
3879
|
+
if (ops().READS.has(redir.Op)) add("read", word, state, sends ? { upload: true } : {});
|
|
3880
|
+
if (redir.Op === ops().DUP_OUT && word.value && !/^\d+$/.test(word.value))
|
|
3851
3881
|
add("write", word, state);
|
|
3852
3882
|
}
|
|
3853
3883
|
substitutions(redir.Hdoc, state, depth);
|
|
@@ -3879,16 +3909,17 @@ function collectShellFileAccesses(command, context = {}) {
|
|
|
3879
3909
|
const seen = clone(state);
|
|
3880
3910
|
let pureAnd = true;
|
|
3881
3911
|
segments2.forEach(({ op, part }, i) => {
|
|
3882
|
-
if (op === AND || op === OR) {
|
|
3883
|
-
if (i > 0 && op === AND && pureAnd && state.onSuccess)
|
|
3884
|
-
|
|
3912
|
+
if (op === ops().AND || op === ops().OR) {
|
|
3913
|
+
if (i > 0 && op === ops().AND && pureAnd && state.onSuccess)
|
|
3914
|
+
state.cwd = state.onSuccess;
|
|
3915
|
+
if (i > 0 && op === ops().OR) merge(state, seen);
|
|
3885
3916
|
statement(part, state, depth + 1);
|
|
3886
3917
|
} else {
|
|
3887
3918
|
statement(part, clone(state), depth + 1);
|
|
3888
3919
|
if (i > 0 && readsScriptFromStdin(part))
|
|
3889
3920
|
nestedPayload(producedText(segments2[i - 1].part), clone(state), depth);
|
|
3890
3921
|
}
|
|
3891
|
-
if (i > 0 && op !== AND) pureAnd = false;
|
|
3922
|
+
if (i > 0 && op !== ops().AND) pureAnd = false;
|
|
3892
3923
|
merge(seen, state);
|
|
3893
3924
|
});
|
|
3894
3925
|
merge(state, seen);
|
|
@@ -4012,8 +4043,8 @@ function collectFileAccesses(tool, args, context = {}, inspection = {}) {
|
|
|
4012
4043
|
}
|
|
4013
4044
|
return out;
|
|
4014
4045
|
}
|
|
4015
|
-
function within(
|
|
4016
|
-
return
|
|
4046
|
+
function within(path210, root) {
|
|
4047
|
+
return path210 === root || path210.startsWith(root === "/" ? "/" : root + "/");
|
|
4017
4048
|
}
|
|
4018
4049
|
function hits(access, paths, directories, context) {
|
|
4019
4050
|
const home = context.homeDirs?.[0] ?? "~";
|
|
@@ -5216,7 +5247,7 @@ function shellWriteUnseen(command, target) {
|
|
|
5216
5247
|
);
|
|
5217
5248
|
const redirs = n.Redirs || [];
|
|
5218
5249
|
const redirectsTo = redirs.some((r) => r.Word && resolveWordLiteral(r.Word) === target);
|
|
5219
|
-
const readsFromFile = redirs.some((r) => r.Op === RDR_IN && r.Word && !r.Hdoc);
|
|
5250
|
+
const readsFromFile = redirs.some((r) => r.Op === RDR_IN() && r.Word && !r.Hdoc);
|
|
5220
5251
|
const named = words.includes(target);
|
|
5221
5252
|
if (!redirectsTo && !named) return true;
|
|
5222
5253
|
const head = unwrapCommandHead(words);
|
|
@@ -6332,14 +6363,14 @@ function mavenGet(words, from, out) {
|
|
|
6332
6363
|
push(out, "Maven", "mvn dependency:get", coord, exact, artifact ?? coord);
|
|
6333
6364
|
}
|
|
6334
6365
|
function composerPackages(words, from, manager, out) {
|
|
6335
|
-
const
|
|
6336
|
-
const specs = manager === "composer create-project" ?
|
|
6366
|
+
const ops2 = operands(words, from, COMPOSER_VALUE_FLAGS);
|
|
6367
|
+
const specs = manager === "composer create-project" ? ops2.slice(0, 1) : ops2;
|
|
6337
6368
|
for (const raw of specs) {
|
|
6338
6369
|
const sep = raw.search(/[:=]/);
|
|
6339
6370
|
const name = sep < 0 ? raw : raw.slice(0, sep);
|
|
6340
6371
|
if (!COMPOSER_NAME_RE.test(name)) continue;
|
|
6341
6372
|
let ver = sep < 0 ? void 0 : raw.slice(sep + 1);
|
|
6342
|
-
if (manager === "composer create-project" && ver === void 0) ver =
|
|
6373
|
+
if (manager === "composer create-project" && ver === void 0) ver = ops2[2] ?? void 0;
|
|
6343
6374
|
push(out, "Packagist", manager, name.toLowerCase(), exactVersion(ver), raw);
|
|
6344
6375
|
}
|
|
6345
6376
|
}
|
|
@@ -7270,9 +7301,9 @@ function bareToolName(toolName) {
|
|
|
7270
7301
|
const parts = toolName.split("__");
|
|
7271
7302
|
return (parts.length >= 3 ? parts.slice(2).join("__") : toolName).toLowerCase();
|
|
7272
7303
|
}
|
|
7273
|
-
function valuesAt(args,
|
|
7304
|
+
function valuesAt(args, path210) {
|
|
7274
7305
|
let cursors = [args];
|
|
7275
|
-
for (const rawSegment of
|
|
7306
|
+
for (const rawSegment of path210.split(".")) {
|
|
7276
7307
|
const isArray = rawSegment.endsWith("[]");
|
|
7277
7308
|
const key = isArray ? rawSegment.slice(0, -2) : rawSegment;
|
|
7278
7309
|
const next = [];
|
|
@@ -7303,8 +7334,8 @@ function extractToolDestinations(toolName, args) {
|
|
|
7303
7334
|
try {
|
|
7304
7335
|
const out = [];
|
|
7305
7336
|
const paths = DESTINATION_ARGS.get(bareToolName(toolName)) ?? [];
|
|
7306
|
-
for (const
|
|
7307
|
-
for (const value of valuesAt(args,
|
|
7337
|
+
for (const path210 of paths) {
|
|
7338
|
+
for (const value of valuesAt(args, path210)) {
|
|
7308
7339
|
const host2 = hostOf(value);
|
|
7309
7340
|
if (host2) out.push({ host: host2, binary: toolName, raw: value });
|
|
7310
7341
|
}
|
|
@@ -7330,8 +7361,8 @@ function ssrfDestinationFloor(toolName, args, opts = {}) {
|
|
|
7330
7361
|
try {
|
|
7331
7362
|
const paths = DESTINATION_ARGS.get(bareToolName(toolName));
|
|
7332
7363
|
if (!paths) return null;
|
|
7333
|
-
for (const
|
|
7334
|
-
for (const value of valuesAt(args,
|
|
7364
|
+
for (const path210 of paths) {
|
|
7365
|
+
for (const value of valuesAt(args, path210)) {
|
|
7335
7366
|
const host2 = hostOf(value);
|
|
7336
7367
|
if (!host2) continue;
|
|
7337
7368
|
const m = classifySsrf(host2);
|
|
@@ -7340,7 +7371,7 @@ function ssrfDestinationFloor(toolName, args, opts = {}) {
|
|
|
7340
7371
|
const decision = ssrfFloorDecision(m, written, opts);
|
|
7341
7372
|
if (decision === null) continue;
|
|
7342
7373
|
const reason = decision === "review" ? ssrfDisguisedReason(m, written) : ssrfReason(m, host2);
|
|
7343
|
-
return { ...m, argPath:
|
|
7374
|
+
return { ...m, argPath: path210, host: host2, reason, decision };
|
|
7344
7375
|
}
|
|
7345
7376
|
}
|
|
7346
7377
|
return null;
|
|
@@ -8994,21 +9025,23 @@ function matchCanaryArgs(args, values) {
|
|
|
8994
9025
|
return null;
|
|
8995
9026
|
}
|
|
8996
9027
|
}
|
|
8997
|
-
var import_picomatch, import_safe_regex2, import_picomatch2,
|
|
9028
|
+
var import_url, import_picomatch, import_safe_regex2, import_picomatch2, import_module, import_safe_regex22, import_crypto2, import_crypto3, import_crypto4, import_crypto5, getFilename, __filename2, MAX_REGEX_LENGTH, REGEX_CACHE_MAX, regexCache, aws_default, bash_safe_default, docker_default, filesystem_default, github_default, k8s_default, mongodb_default, postgres_default, project_jail_default, redis_default, finance_default, identity_default, publishing_default, settings_default, branches_default, ACTION_TEMPLATES, ACTION_CHECKS, GAP, prog, httpTo, httpWrite, HTTP_WRITE, HTTP_WRITE_ANY, NOT_STRIPE_TEST, postTo, STRIPE_OBJECTS, APP_SHIELD_SPECS, APP_SHIELDS, APP_SHIELD_NAMES, APP_SERVER_GLOB, GENERAL_ACTION_RULES, BUILTIN_SHIELDS, SSRF_MAX_HOST, METADATA_ADDRESSES, STRICT_TIERS, METADATA_HOSTNAMES, v4Octets, TIER_REASON, CHECK_TEXT, LEVELS, MODE_VALUES, SOFT, STRICT, BLOCK_ALL, LEVEL_CHECKS, VERDICTS, CHECK_VERDICT_RANK, ALL, BUILTIN_DANGEROUS_WORDS, PRODUCT_CHECKS, SHIELD_RULE_NAME, SHIELD_RULES_FOLDED_INTO_PRODUCT, CHECKS, CHECK_BY_ID, LEGACY_TO_ID, PROJECT_JAIL_BLOCK_READ, OVERRIDE_PREFIX, LABEL_WRAPPERS, LEGACY_READERS, syntax, KINDS, STRUCTS, unknownKinds, INVISIBLE_RE, INVISIBLE_ONE, HOMOGLYPHS, HOMOGLYPH_RE, MAX_BLOBS, MIN_DECODED, BASE64_RUN_RE, HEX_RUN_RE, HEX_ESCAPE_RUN_RE, SYSTEM_AUTH_FILES, SYSTEM_AUTH_DIRS, PASSWORD_HASH_FILES, STARTUP_NAMES, SYSTEM_DIRS, SYSTEM_DIRS_EXEMPT, UPLOAD_SYSTEM_DIRS, AGENT_INSTRUCTION_FILES, AGENT_INSTRUCTION_DIRS, LEGACY_SYSTEM_PATH_RE, MAX_INLINE_CODE, WHAT, OUTSIDE, pyImport, either, PYTHON, NODE, PERL, RUBY, PHP, TABLES, STRING_LITERAL, sharedParser, MESSAGE_FLAGS, SHELL_INTERPRETERS, DOWNLOAD_CMDS, NORMALIZE_CACHE_MAX, normalizeCache, codeBodiesCache, AST_CACHE_MAX, astCache, PARSE_FAIL, INTERPRETER_LINE, PROGRAM_DIR, ACCESS_VIEW_CACHE_MAX, accessViewCache, MAX_READING_PAYLOADS, STDIN_CODE_INTERPRETERS, RUNS_TEXT_ELSEWHERE, defaultExpansionOps, VARIABLE_READERS, FS_READ_TOOLS, GREP_SHAPE, PATTERN_VERBS, PATTERN_VERB_NAMES, GREP_FILE_OPERANDS, READER_VALUE_LETTERS, FILE_OPERAND_FLAGS, SCP_VALUE_FLAGS, CURL_SOURCE_FLAGS, CURL_VALUE_LETTERS, WGET_VALUE_LETTERS, TAR_VALUE_LETTERS, ZIP_VALUE_LETTERS, RSYNC_VALUE_LETTERS, RSYNC_SKIP, CP_VALUE_LETTERS, INSTALL_VALUE_LETTERS, COPY_VERBS, TAR_MODE_WORD, COPY_VERB_HEADS, FS_OP_PRESCREEN_RE, HOME_CACHE_ALLOWLIST, SENSITIVE_PATH_RULES, AST_FS_REGEX_RULES, SQL_DB_CLIS, SQL_DDL_RE, CHMOD_OPEN_PERM_TOKENS, COMMAND_WRAPPERS, INLINE_INTERPRETER, RUNNER_WRAPPERS, _redirStdinOps, _listOps, WRAPPER_TAKES_TARGET, FIND_EXEC_FLAGS, FS_MUTATION_TOOLS, INTERP_LEADING_TARGET, MAX_PAYLOAD_NESTING, payloadNesting, MAX_INLINE_CALLS, INLINE_EXEC_FALLBACK, UNREADABLE_SOURCE, SCRIPT_RUNNERS, SCRIPT_RUNNER_VALUE_FLAGS, MAX_SCRIPT_OPERANDS, NET_BINARIES, VALUE_FLAGS, HOME_VARIABLES, assignmentTable, currentStmtOffset, PAYLOAD_BUDGET, payloadBudget, seenPayloads, UNANALYSABLE_NESTING, ASSIGNMENT_HEADS, andOrOps, MAX_CALL_DEPTH, MAX_CALL_WALKS, callDepth, callWalks, FS_OP_CACHE_MAX, fsOpCache, stripDotSlash, REDIR_TRUNCATE_OPS, REDIR_FILE_IN_OPS, REDIR_HEREDOC_OPS, FIND_OPTIONS, COPY_RULE_OF, isReaderWord, positionalAfter, NONE, UNKNOWN, FORBIDDEN_PATH_SEGMENTS, BASH_TOOL_NAMES, MCP_EXECUTORS, BUILTIN_FIELDS, ARGV_FIELDS, BARE_WORD, MAX_ARGV_CHARACTERS, MAX_ALTERNATIVES, MAX_CALL_DEPTH2, MAX_CALL_WALKS2, POSITIONAL, MAX_DEPTH, MAX_PAYLOAD_DEPTH, unique, clone, SENDING_STDIN, DOWNLOAD_SHORT_VALUE, DOWNLOAD_LONG_VALUE, DOWNLOAD_OUTPUT_FLAGS, DOWNLOAD_DIR_FLAGS, base, quoteGlob, asWord, ops, exempt, RANK, SEQUENCE_OPS, BIP39_ENGLISH, BIP39_PUBLIC_VECTORS, indices, lengths, hash, MAX_MNEMONIC_HASHES, SECRET_VIEW_LIMITS, IBAN_LENGTH, IBAN_BBAN_SHAPE, B58, B58_INDEX, XPRV_VERSIONS, B62, CRC32_TABLE, GITHUB_TOKEN_RE, B64URL, B64URL_INDEX, CASK_TWO_ZERO_SUFFIX, CASK_FOUR_ZERO_SUFFIX, CF_ODD, CF_EVEN, SPANISH_LETTERS, HETU_CHARS, VERHOEFF_D, VERHOEFF_P, MAX, UNTRUSTED_TOOLS, INJECTION_SIGNALS, MENTION_QUOTE_RE, MENTION_WORD_RE, ASSIGNMENT_CONTEXT_RE, DLP_STOPWORDS, REFERENCE_VALUE_RE, IDENTIFIER_VALUE_RE, PATH_VALUE_RE, DOTTED_REFERENCE_RE, CONCATENATION_RE, EMAIL_VALUE_RE, FIXTURE_NAME_RE, DERIVATIVE_NAME_RE, QUERY_CREDENTIAL_VALUE_RE, OTP_SECRET_RE, OTP_DOC_SECRETS, ASSIGNED_SECRET_VALUE_RE, ASSIGNED_SECRET_NAME_RE, NAME_KEYWORD_RE, ARN_CONTEXT_RE, CIPHER_KEY_NAME_RE, CIPHER_NAME_PARTS, CIPHER_KEY_VALUE_RE, LARAVEL_KEY_VALUE_RE, SQL_PASSWORD_VALUE_RE, GRAFANA_KEY_VALUE_RE, BASIC_VALUE_RE, BASIC_PAIR_RE, BASIC_HEADER_RE, BASIC_HEADER_PAIR_RE, BASIC_PLACEHOLDER_RE, BASIC_TEMPLATE_MARKERS, DROPBOX_SECRET_RE, OTP_CAPTURE_RE, DB_URL_PASSWORD_RE, DLP_PATTERNS, DLP_PATTERNS_GLOBAL, SENSITIVE_PATH_PATTERNS, SENSITIVE_PATH_REGEXES, MAX_DEPTH2, MAX_STRING_BYTES, MAX_JSON_PARSE_BYTES, BATCH_SEPARATOR, IMPERATIVE, SECRET_TARGET, GUARD, SIGNALS, DESTINATION_RE, REUSED_SIGNALS, NEVER_NEGATED, NEGATION_BEFORE, RDR_IN, COPY_VERBS2, LITERAL_VERBS, GIT_PRESCREEN_RE, MAX_PAYLOAD_DEPTH2, MAX_ALIAS_DEPTH, CACHE_MAX, cache, PAYLOAD_SHELLS, CONFIG_SCOPE_FLAGS, CONFIG_VALUE_FLAGS, GLOBAL_VALUE_OPTIONS, GLOBAL_FLAG_OPTIONS, MAX_LOOP_ITEMS, GitWalk, POSITIONAL2, FORCE_PUSH, DESTRUCTIVE, UNREADABLE, PUSH_LONG_VALUE, BRANCH_LONG_VALUE, TAG_LONG_VALUE, CLEAN_LONG_VALUE, HOOKS_BYPASS, NO_VERIFY_SUBS, HOOK_KILL_SWITCHES, COMMIT_LONG_VALUE, CHMOD_OPTION_RE, STAGE_ALL, ADD_LONG_VALUE, CHECK_ID, RULE_NAME, INERT_LINE_RE, CHECK_ID2, INSTRUCTION_NAMES, SETTINGS_RE, HOOK_WORDS_RE, SHELLS, NETCATS, NET_CLIENTS, SENDERS, NETCAT_EXEC_LONG, DECL_DUMPS, PROC_ENVIRON_RE, DEV_NET_RE, SOCAT_PROGRAM_RE, SOCAT_NET_RE, PRESCREEN_RE, MAX_PAYLOAD_DEPTH3, CACHE_MAX2, cache2, dupInOp, REVERSE_SHELL_DESCRIPTION, ENV_EXFIL_DESCRIPTION, DYNAMIC_WORD, MULTICALL, SHELL_VALUE_OPTIONS, INTERPRETERS, OutboundWalk, NPM_INSTALL_VERBS, NPM_EXEC_VERBS, PNPM_INSTALL_VERBS, YARN_INSTALL_VERBS, BUN_INSTALL_VERBS, DLX_VERBS, NON_REGISTRY_RE, NPM_NAME_RE, EXACT_SEMVER_RE, NPM_VALUE_FLAGS, PNPM_VALUE_FLAGS, YARN_VALUE_FLAGS, BUN_VALUE_FLAGS, PIP_VALUE_FLAGS, UV_VALUE_FLAGS, POETRY_VALUE_FLAGS, PIPENV_VALUE_FLAGS, PIPX_VALUE_FLAGS, PY_SPEC_RE, PY_EXACT_RE, EXACT_VERSION_RE, GEM_NAME_RE, GEM_VALUE_FLAGS, BUNDLE_VALUE_FLAGS, CRATE_NAME_RE, CARGO_ADD_VALUE_FLAGS, CARGO_INSTALL_VALUE_FLAGS, GO_VALUE_FLAGS, GO_PATH_RE, NUGET_NAME_RE, DOTNET_ADD_VALUE_FLAGS, DOTNET_TOOL_VALUE_FLAGS, NUGET_VALUE_FLAGS, MAVEN_COORD_RE, COMPOSER_NAME_RE, COMPOSER_VALUE_FLAGS, EDITOR_HEADS, EXTENSION_ID_RE, MANAGER_HEADS, SHELLS2, MAX_NESTING, SHELL_VALUE_FLAGS, NPM_FAMILY, PIP_FAMILY, NPM_FETCH_VERBS, PIP_FETCH_VERBS, NPM_FLAGS, PIP_FLAGS, NPM_VARS, PIP_VARS, PRESCREEN_RE2, PIP_ATTACHED_RE, MAX_PAYLOAD_DEPTH4, PUBLIC_REGISTRY_HOSTS, TUNING_FIELDS, MAP_GOVERNED, KNOB_GOVERNED, CONFIGURABLE_CHECK_IDS, DEFAULT_EGRESS_ALLOWLIST, PRIVATE_HOST_SUFFIXES, SOURCE_COMMANDS, SINK_COMMANDS, OBFUSCATORS, SENSITIVE_PATTERNS, FLAGS_WITH_VALUES, DESTINATION_ARGS, MCP_DESTINATION_KEYS, ARGUMENT_SCAN_LIMITS, RUN_CHAR, runChar, VERDICT_RANK, SQL_DML_KEYWORDS, MAX_DESTINATIONS, MAX_SCAN_CHARS, EMAIL_RE, URL_RE, IBAN_RE, RECIPIENT_KEYS, DESTRUCTIVE_VERB_RE, PII_EMAIL_RE, PII_SSN_RE, PII_PHONE_RE, PII_CC16_RE, PII_CC15_RE, PII_CC14_RE, PII_CC13_RE, PII_CC19_RE, CARD_PATTERNS, PII_ROUTING_RE, ROUTING_LABEL_RE, ROUTING_LABEL_WINDOW, NATIONAL_ID_SHAPES, NATIONAL_ID_LABEL_RE, NATIONAL_ID_LABEL_CS_RE, idLabelIn, NATIONAL_ID_LABEL_WINDOW, NATIONAL_ID_GUARD_RE, PII_IBAN_RE, REALTIME_PII_PATTERNS, MAX_PII_SCAN_BYTES, IBAN_DESTINATION_KEYS, WHOLE_IBAN_RE, JSON_ESCAPE_RE, JSON_ESCAPES, MASKED_KINDS, ENTRY_RE, IBAN_TEXT_RE, EMAIL_TEXT_RE, ACCOUNT_KEY_RE, ACCOUNT_VALUE_RE, MAX_MASK_DEPTH, EMPTY, CURL_SEND_FLAGS, WGET_SEND_FLAGS, IWR_SEND_FLAGS, WRITE_METHODS, GH_READ, GH_WRITE, GH_HOSTNAME_FLAGS, GH_REPO_VALUE_FLAGS, GH_API_VALUE_FLAGS, GIT_FETCH, PUBLISH, SHELLS3, OWN_HEADS, MAX_DEPTH3, CWD_CHANGERS, TERMINAL_ESCAPE_RE, LOOP_MAX_RECORDS, CANARY_MIN_LENGTH, MAX_TEXT, MAX_DEPTH4, MAX_JSON_PARSE, URL_DEPTH, B64_DEPTH, MIN_SEGMENT, SEPARATORS, stripSeparators, looksText, CANARY_DECODERS, VIEWS, LONG_OUTPUT_THRESHOLD_BYTES;
|
|
8998
9029
|
var init_dist = __esm({
|
|
8999
9030
|
"packages/policy-engine/dist/index.mjs"() {
|
|
9000
9031
|
"use strict";
|
|
9032
|
+
init_cjs_shims();
|
|
9033
|
+
import_url = require("url");
|
|
9001
9034
|
import_picomatch = __toESM(require("picomatch"), 1);
|
|
9002
9035
|
import_safe_regex2 = __toESM(require("safe-regex2"), 1);
|
|
9003
9036
|
import_picomatch2 = __toESM(require("picomatch"), 1);
|
|
9004
|
-
|
|
9005
|
-
import_mvdan_sh2 = __toESM(require("mvdan-sh"), 1);
|
|
9006
|
-
import_mvdan_sh3 = __toESM(require("mvdan-sh"), 1);
|
|
9037
|
+
import_module = require("module");
|
|
9007
9038
|
import_safe_regex22 = __toESM(require("safe-regex2"), 1);
|
|
9008
9039
|
import_crypto2 = require("crypto");
|
|
9009
9040
|
import_crypto3 = require("crypto");
|
|
9010
9041
|
import_crypto4 = require("crypto");
|
|
9011
9042
|
import_crypto5 = __toESM(require("crypto"), 1);
|
|
9043
|
+
getFilename = () => (0, import_url.fileURLToPath)(importMetaUrl);
|
|
9044
|
+
__filename2 = /* @__PURE__ */ getFilename();
|
|
9012
9045
|
MAX_REGEX_LENGTH = 256;
|
|
9013
9046
|
REGEX_CACHE_MAX = 500;
|
|
9014
9047
|
regexCache = /* @__PURE__ */ new Map();
|
|
@@ -11653,7 +11686,7 @@ var init_dist = __esm({
|
|
|
11653
11686
|
return s.untrustedContent.afterExposure === "log-only" ? "log" : "review";
|
|
11654
11687
|
}
|
|
11655
11688
|
};
|
|
11656
|
-
|
|
11689
|
+
syntax = null;
|
|
11657
11690
|
KINDS = {
|
|
11658
11691
|
File: { nodes: ["Stmts"] },
|
|
11659
11692
|
Stmt: { nodes: ["Cmd", "Redirs"], scalars: ["Negated", "Background", "Coprocess"] },
|
|
@@ -11993,8 +12026,7 @@ var init_dist = __esm({
|
|
|
11993
12026
|
php: PHP
|
|
11994
12027
|
};
|
|
11995
12028
|
STRING_LITERAL = /(['"`])((?:\\.|(?!\1)[^\\\n]){1,4096})\1/g;
|
|
11996
|
-
|
|
11997
|
-
sharedParser = syntax2.NewParser();
|
|
12029
|
+
sharedParser = lazy(() => getSyntax().NewParser());
|
|
11998
12030
|
MESSAGE_FLAGS = /* @__PURE__ */ new Set([
|
|
11999
12031
|
"-m",
|
|
12000
12032
|
"--message",
|
|
@@ -12959,9 +12991,14 @@ var init_dist = __esm({
|
|
|
12959
12991
|
path: ""
|
|
12960
12992
|
};
|
|
12961
12993
|
ASSIGNMENT_HEADS = /* @__PURE__ */ new Set(["export", "declare", "local", "readonly", "typeset"]);
|
|
12962
|
-
|
|
12963
|
-
|
|
12964
|
-
|
|
12994
|
+
andOrOps = lazy(() => {
|
|
12995
|
+
const and = probeBinOp("a && b");
|
|
12996
|
+
const or = probeBinOp("a || b");
|
|
12997
|
+
return {
|
|
12998
|
+
AND_OP: and,
|
|
12999
|
+
AND_OR_OPS: new Set([and, or].filter((o) => o !== null))
|
|
13000
|
+
};
|
|
13001
|
+
});
|
|
12965
13002
|
MAX_CALL_DEPTH = 4;
|
|
12966
13003
|
MAX_CALL_WALKS = 256;
|
|
12967
13004
|
callDepth = 0;
|
|
@@ -12969,14 +13006,13 @@ var init_dist = __esm({
|
|
|
12969
13006
|
FS_OP_CACHE_MAX = 5e3;
|
|
12970
13007
|
fsOpCache = /* @__PURE__ */ new Map();
|
|
12971
13008
|
stripDotSlash = (p) => p.replace(/^\.\//, "");
|
|
12972
|
-
REDIR_TRUNCATE_OPS = /* @__PURE__ */ new Set([deriveRedirOp(">_f")]);
|
|
12973
|
-
REDIR_FILE_IN_OPS =
|
|
12974
|
-
[deriveRedirOp("cat < f"), deriveRedirOp("cat <> f")].filter((op) => op >= 0)
|
|
13009
|
+
REDIR_TRUNCATE_OPS = lazy(() => /* @__PURE__ */ new Set([deriveRedirOp(">_f")]));
|
|
13010
|
+
REDIR_FILE_IN_OPS = lazy(
|
|
13011
|
+
() => new Set([deriveRedirOp("cat < f"), deriveRedirOp("cat <> f")].filter((op) => op >= 0))
|
|
13012
|
+
);
|
|
13013
|
+
REDIR_HEREDOC_OPS = lazy(
|
|
13014
|
+
() => /* @__PURE__ */ new Set([deriveRedirOp("cat <<X\nX"), deriveRedirOp("cat <<-X\nX")])
|
|
12975
13015
|
);
|
|
12976
|
-
REDIR_HEREDOC_OPS = /* @__PURE__ */ new Set([
|
|
12977
|
-
deriveRedirOp("cat <<X\nX"),
|
|
12978
|
-
deriveRedirOp("cat <<-X\nX")
|
|
12979
|
-
]);
|
|
12980
13016
|
FIND_OPTIONS = /* @__PURE__ */ new Set(["-H", "-L", "-P"]);
|
|
12981
13017
|
COPY_RULE_OF = {
|
|
12982
13018
|
"shield:project-jail:block-read-ssh": "shield:project-jail:review-copy-ssh",
|
|
@@ -13013,7 +13049,6 @@ var init_dist = __esm({
|
|
|
13013
13049
|
ARGV_FIELDS = ["args", "argv"];
|
|
13014
13050
|
BARE_WORD = /^[A-Za-z0-9_./+:@%,-]+$/;
|
|
13015
13051
|
MAX_ARGV_CHARACTERS = 262144;
|
|
13016
|
-
({ syntax: syntax3 } = import_mvdan_sh3.default);
|
|
13017
13052
|
MAX_ALTERNATIVES = 64;
|
|
13018
13053
|
MAX_CALL_DEPTH2 = 4;
|
|
13019
13054
|
MAX_CALL_WALKS2 = 256;
|
|
@@ -13091,31 +13126,35 @@ var init_dist = __esm({
|
|
|
13091
13126
|
base = (s) => (s ?? "").replace(/\/+$/, "").split("/").pop() ?? "";
|
|
13092
13127
|
quoteGlob = (s) => s.replace(/[\\*?\[\]{}()!+@]/g, "\\$&");
|
|
13093
13128
|
asWord = (p) => ({ value: p.value, ...p.glob ? { pattern: p.pattern } : {} });
|
|
13094
|
-
|
|
13095
|
-
|
|
13096
|
-
|
|
13097
|
-
|
|
13098
|
-
|
|
13099
|
-
|
|
13100
|
-
|
|
13101
|
-
|
|
13102
|
-
|
|
13103
|
-
|
|
13129
|
+
ops = lazy(() => ({
|
|
13130
|
+
WRITES: new Set([">x", ">>x", ">|x", "&>x", "&>>x", "<>x"].map(opOf)),
|
|
13131
|
+
APPENDS: new Set([">>x", "&>>x"].map(opOf)),
|
|
13132
|
+
READS: new Set(["<x", "<>x"].map(opOf)),
|
|
13133
|
+
/** `>&word` with a non-numeric word is `&>word` in bash. */
|
|
13134
|
+
DUP_OUT: opOf(">&x"),
|
|
13135
|
+
HERE_STRING: opOf("<<<x"),
|
|
13136
|
+
AND: parseShared("a && b").Stmts[0].Cmd.Op,
|
|
13137
|
+
OR: parseShared("a || b").Stmts[0].Cmd.Op,
|
|
13138
|
+
/** `${x:-d}` `${x-d}` `${x:=d}` `${x=d}`: the default is the value when x is unset. */
|
|
13139
|
+
DEFAULT_OPS: new Set(
|
|
13140
|
+
["${x:-y}", "${x-y}", "${x:=y}", "${x=y}"].map(
|
|
13141
|
+
(s) => parseShared(`echo ${s}`).Stmts[0].Cmd.Args[1].Parts[0].Exp.Op
|
|
13142
|
+
)
|
|
13104
13143
|
)
|
|
13105
|
-
);
|
|
13144
|
+
}));
|
|
13106
13145
|
exempt = (p) => SYSTEM_DIRS_EXEMPT.some((d) => within(p, d));
|
|
13107
13146
|
RANK = { allow: 0, review: 1, block: 2 };
|
|
13108
|
-
SEQUENCE_OPS = (() => {
|
|
13109
|
-
const
|
|
13147
|
+
SEQUENCE_OPS = lazy(() => {
|
|
13148
|
+
const ops2 = /* @__PURE__ */ new Set();
|
|
13110
13149
|
for (const text of ["x && y", "x || y"]) {
|
|
13111
13150
|
try {
|
|
13112
13151
|
const f = parseShared(text);
|
|
13113
|
-
if (typeof f !== "symbol")
|
|
13152
|
+
if (typeof f !== "symbol") ops2.add(f.Stmts[0].Cmd.Op);
|
|
13114
13153
|
} catch {
|
|
13115
13154
|
}
|
|
13116
13155
|
}
|
|
13117
|
-
return
|
|
13118
|
-
})
|
|
13156
|
+
return ops2;
|
|
13157
|
+
});
|
|
13119
13158
|
BIP39_ENGLISH = `abandon
|
|
13120
13159
|
ability
|
|
13121
13160
|
able
|
|
@@ -16265,13 +16304,13 @@ zoo`.split("\n");
|
|
|
16265
16304
|
);
|
|
16266
16305
|
NEVER_NEGATED = /* @__PURE__ */ new Set([SIGNALS[1].any[0]]);
|
|
16267
16306
|
NEGATION_BEFORE = /\b(never|do not|don'?t|must not|mustn'?t|should not|shouldn'?t|not allowed to|forbidden to|avoid|without|no|not)\b[^.!?;:\n]{0,24}$/i;
|
|
16268
|
-
RDR_IN = (() => {
|
|
16307
|
+
RDR_IN = lazy(() => {
|
|
16269
16308
|
try {
|
|
16270
16309
|
return parseShared("x <y").Stmts[0].Redirs[0].Op;
|
|
16271
16310
|
} catch {
|
|
16272
16311
|
return null;
|
|
16273
16312
|
}
|
|
16274
|
-
})
|
|
16313
|
+
});
|
|
16275
16314
|
COPY_VERBS2 = /* @__PURE__ */ new Set([
|
|
16276
16315
|
"cp",
|
|
16277
16316
|
"mv",
|
|
@@ -18281,6 +18320,7 @@ var import_fs, import_path, import_os, import_crypto6, LOCAL_AUDIT_LOG, HOOK_DEB
|
|
|
18281
18320
|
var init_audit = __esm({
|
|
18282
18321
|
"src/audit/index.ts"() {
|
|
18283
18322
|
"use strict";
|
|
18323
|
+
init_cjs_shims();
|
|
18284
18324
|
import_fs = __toESM(require("fs"));
|
|
18285
18325
|
import_path = __toESM(require("path"));
|
|
18286
18326
|
import_os = __toESM(require("os"));
|
|
@@ -18300,16 +18340,20 @@ __export(src_exports, {
|
|
|
18300
18340
|
protect: () => protect
|
|
18301
18341
|
});
|
|
18302
18342
|
module.exports = __toCommonJS(src_exports);
|
|
18343
|
+
init_cjs_shims();
|
|
18303
18344
|
|
|
18304
18345
|
// src/core.ts
|
|
18346
|
+
init_cjs_shims();
|
|
18305
18347
|
init_audit();
|
|
18306
18348
|
|
|
18307
18349
|
// src/config/index.ts
|
|
18350
|
+
init_cjs_shims();
|
|
18308
18351
|
var import_fs4 = __toESM(require("fs"));
|
|
18309
18352
|
var import_path4 = __toESM(require("path"));
|
|
18310
18353
|
var import_os4 = __toESM(require("os"));
|
|
18311
18354
|
|
|
18312
18355
|
// src/config-schema.ts
|
|
18356
|
+
init_cjs_shims();
|
|
18313
18357
|
var import_zod = require("zod");
|
|
18314
18358
|
var noNewlines = import_zod.z.string().refine((s) => !s.includes("\n") && !s.includes("\r"), {
|
|
18315
18359
|
message: "Value must not contain literal newline characters (use \\n instead)"
|
|
@@ -18581,12 +18625,14 @@ function sanitizeConfig(raw) {
|
|
|
18581
18625
|
}
|
|
18582
18626
|
|
|
18583
18627
|
// src/shields.ts
|
|
18628
|
+
init_cjs_shims();
|
|
18584
18629
|
var import_fs2 = __toESM(require("fs"));
|
|
18585
18630
|
var import_path2 = __toESM(require("path"));
|
|
18586
18631
|
var import_os2 = __toESM(require("os"));
|
|
18587
18632
|
init_dist();
|
|
18588
18633
|
|
|
18589
18634
|
// src/shields/build.ts
|
|
18635
|
+
init_cjs_shims();
|
|
18590
18636
|
init_dist();
|
|
18591
18637
|
function escapeRegex(s) {
|
|
18592
18638
|
return s.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
@@ -18745,6 +18791,7 @@ function readShieldOverrides() {
|
|
|
18745
18791
|
}
|
|
18746
18792
|
|
|
18747
18793
|
// src/config/managed.ts
|
|
18794
|
+
init_cjs_shims();
|
|
18748
18795
|
var MODE_ORDER = ["observe", "audit", "soft", "standard", "strict", "block-all"];
|
|
18749
18796
|
var EGRESS_MODE_ORDER = ["off", "review", "block"];
|
|
18750
18797
|
function rankIn(order, value) {
|
|
@@ -18867,6 +18914,7 @@ function applyManagedApprovers(local, managed) {
|
|
|
18867
18914
|
}
|
|
18868
18915
|
|
|
18869
18916
|
// src/auth/trusted-hosts.ts
|
|
18917
|
+
init_cjs_shims();
|
|
18870
18918
|
var import_fs3 = __toESM(require("fs"));
|
|
18871
18919
|
var import_path3 = __toESM(require("path"));
|
|
18872
18920
|
var import_os3 = __toESM(require("os"));
|
|
@@ -18927,6 +18975,7 @@ init_dist();
|
|
|
18927
18975
|
init_dist();
|
|
18928
18976
|
|
|
18929
18977
|
// src/config/v2.ts
|
|
18978
|
+
init_cjs_shims();
|
|
18930
18979
|
init_dist();
|
|
18931
18980
|
init_dist();
|
|
18932
18981
|
var CONFIG_FILE_VERSION_2 = "2";
|
|
@@ -19053,6 +19102,7 @@ init_dist();
|
|
|
19053
19102
|
init_dist();
|
|
19054
19103
|
|
|
19055
19104
|
// src/auth/api-url.ts
|
|
19105
|
+
init_cjs_shims();
|
|
19056
19106
|
var DEFAULT_API_URL = "https://api.node9.ai/api/v1/intercept";
|
|
19057
19107
|
var LOOPBACK = /* @__PURE__ */ new Set(["127.0.0.1", "localhost", "::1", "[::1]", "0.0.0.0"]);
|
|
19058
19108
|
var HOST_ALLOW_ENV = "NODE9_API_HOST_ALLOW";
|
|
@@ -20339,13 +20389,16 @@ function applyUntrustedContent(cur, raw, replaceLists = false, isProject = false
|
|
|
20339
20389
|
}
|
|
20340
20390
|
|
|
20341
20391
|
// src/utils/regex.ts
|
|
20392
|
+
init_cjs_shims();
|
|
20342
20393
|
init_dist();
|
|
20343
20394
|
|
|
20344
20395
|
// src/policy/index.ts
|
|
20396
|
+
init_cjs_shims();
|
|
20345
20397
|
init_dist();
|
|
20346
20398
|
var import_fs13 = __toESM(require("fs"));
|
|
20347
20399
|
|
|
20348
20400
|
// src/utils/read-capped.ts
|
|
20401
|
+
init_cjs_shims();
|
|
20349
20402
|
var import_fs5 = __toESM(require("fs"));
|
|
20350
20403
|
function readCapped(file2, maxBytes, openFlags = "r") {
|
|
20351
20404
|
if (maxBytes < 0) return null;
|
|
@@ -20388,6 +20441,7 @@ function readCappedText(file2, maxBytes, openFlags = "r") {
|
|
|
20388
20441
|
var import_path13 = __toESM(require("path"));
|
|
20389
20442
|
|
|
20390
20443
|
// src/dlp.ts
|
|
20444
|
+
init_cjs_shims();
|
|
20391
20445
|
var import_fs6 = __toESM(require("fs"));
|
|
20392
20446
|
var import_path5 = __toESM(require("path"));
|
|
20393
20447
|
init_dist();
|
|
@@ -20410,6 +20464,7 @@ function scanFilePath(filePath, cwd = process.cwd(), options = {}) {
|
|
|
20410
20464
|
}
|
|
20411
20465
|
|
|
20412
20466
|
// src/policy/gate-order.ts
|
|
20467
|
+
init_cjs_shims();
|
|
20413
20468
|
var PRE_ENGINE_GATES = ["file", "dlp", "pii", "package"];
|
|
20414
20469
|
var GATE_LABELS = {
|
|
20415
20470
|
dlpBlock: "\u{1F6A8} Node9 DLP (Secret Detected)",
|
|
@@ -20621,6 +20676,7 @@ function combineWithEngine(gates, engine, opts = { panicMode: false }) {
|
|
|
20621
20676
|
}
|
|
20622
20677
|
|
|
20623
20678
|
// src/policy/file-access.ts
|
|
20679
|
+
init_cjs_shims();
|
|
20624
20680
|
var import_fs7 = __toESM(require("fs"));
|
|
20625
20681
|
var import_os5 = __toESM(require("os"));
|
|
20626
20682
|
var import_path6 = __toESM(require("path"));
|
|
@@ -20738,11 +20794,13 @@ function prepareFileAccesses(tool, args, cwd = process.cwd(), inspection = {}, h
|
|
|
20738
20794
|
}
|
|
20739
20795
|
|
|
20740
20796
|
// src/supply-chain/check.ts
|
|
20797
|
+
init_cjs_shims();
|
|
20741
20798
|
var import_picomatch3 = __toESM(require("picomatch"));
|
|
20742
20799
|
var import_path10 = __toESM(require("path"));
|
|
20743
20800
|
init_dist();
|
|
20744
20801
|
|
|
20745
20802
|
// src/supply-chain/osv-index.ts
|
|
20803
|
+
init_cjs_shims();
|
|
20746
20804
|
var import_fs9 = __toESM(require("fs"));
|
|
20747
20805
|
var import_os6 = __toESM(require("os"));
|
|
20748
20806
|
var import_path8 = __toESM(require("path"));
|
|
@@ -20750,6 +20808,7 @@ var import_crypto8 = require("crypto");
|
|
|
20750
20808
|
init_dist();
|
|
20751
20809
|
|
|
20752
20810
|
// src/utils/atomic-write.ts
|
|
20811
|
+
init_cjs_shims();
|
|
20753
20812
|
var import_fs8 = __toESM(require("fs"));
|
|
20754
20813
|
var import_path7 = __toESM(require("path"));
|
|
20755
20814
|
var import_crypto7 = require("crypto");
|
|
@@ -20859,7 +20918,11 @@ function entryCovers(entry, version) {
|
|
|
20859
20918
|
return (entry.ranges ?? []).some((r) => inRange(version, r));
|
|
20860
20919
|
}
|
|
20861
20920
|
|
|
20921
|
+
// src/supply-chain/osv-online.ts
|
|
20922
|
+
init_cjs_shims();
|
|
20923
|
+
|
|
20862
20924
|
// src/supply-chain/net.ts
|
|
20925
|
+
init_cjs_shims();
|
|
20863
20926
|
var DEFAULTS = {
|
|
20864
20927
|
osvBucket: "https://osv-vulnerabilities.storage.googleapis.com",
|
|
20865
20928
|
osvApi: "https://api.osv.dev",
|
|
@@ -20941,9 +21004,11 @@ async function queryOsvMalicious(queries) {
|
|
|
20941
21004
|
}
|
|
20942
21005
|
|
|
20943
21006
|
// src/supply-chain/registry.ts
|
|
21007
|
+
init_cjs_shims();
|
|
20944
21008
|
var import_semver2 = require("semver");
|
|
20945
21009
|
|
|
20946
21010
|
// src/supply-chain/provenance.ts
|
|
21011
|
+
init_cjs_shims();
|
|
20947
21012
|
var import_semver = require("semver");
|
|
20948
21013
|
var TIMEOUT_MS2 = 1500;
|
|
20949
21014
|
var MAX_BYTES = 256 * 1024;
|
|
@@ -21162,6 +21227,7 @@ async function registryInfo(eco, name, version, freshWindowMs, raw) {
|
|
|
21162
21227
|
}
|
|
21163
21228
|
|
|
21164
21229
|
// src/supply-chain/local-resolve.ts
|
|
21230
|
+
init_cjs_shims();
|
|
21165
21231
|
var import_fs10 = __toESM(require("fs"));
|
|
21166
21232
|
var import_path9 = __toESM(require("path"));
|
|
21167
21233
|
var MAX_LEVELS = 32;
|
|
@@ -21448,6 +21514,7 @@ async function runPackageCheck(toolName, args, cfg, cwd, opts = {}) {
|
|
|
21448
21514
|
}
|
|
21449
21515
|
|
|
21450
21516
|
// src/supply-chain/registries.ts
|
|
21517
|
+
init_cjs_shims();
|
|
21451
21518
|
var import_os7 = __toESM(require("os"));
|
|
21452
21519
|
var import_path11 = __toESM(require("path"));
|
|
21453
21520
|
var import_fs11 = __toESM(require("fs"));
|
|
@@ -21585,6 +21652,7 @@ function configuredRegistryHosts(cwd, env = process.env, home = import_os7.defau
|
|
|
21585
21652
|
}
|
|
21586
21653
|
|
|
21587
21654
|
// src/utils/provenance.ts
|
|
21655
|
+
init_cjs_shims();
|
|
21588
21656
|
var import_fs12 = __toESM(require("fs"));
|
|
21589
21657
|
var import_path12 = __toESM(require("path"));
|
|
21590
21658
|
var import_os8 = __toESM(require("os"));
|
|
@@ -21734,6 +21802,7 @@ function isIgnoredTool2(toolName) {
|
|
|
21734
21802
|
}
|
|
21735
21803
|
|
|
21736
21804
|
// src/auth/state.ts
|
|
21805
|
+
init_cjs_shims();
|
|
21737
21806
|
var import_fs14 = __toESM(require("fs"));
|
|
21738
21807
|
var import_path14 = __toESM(require("path"));
|
|
21739
21808
|
var import_os9 = __toESM(require("os"));
|
|
@@ -21827,6 +21896,7 @@ function getPersistentDecision(toolName) {
|
|
|
21827
21896
|
}
|
|
21828
21897
|
|
|
21829
21898
|
// src/auth/daemon.ts
|
|
21899
|
+
init_cjs_shims();
|
|
21830
21900
|
var import_fs15 = __toESM(require("fs"));
|
|
21831
21901
|
var import_http = __toESM(require("http"));
|
|
21832
21902
|
var import_net4 = __toESM(require("net"));
|
|
@@ -21835,6 +21905,7 @@ var import_os10 = __toESM(require("os"));
|
|
|
21835
21905
|
init_forecast_context();
|
|
21836
21906
|
|
|
21837
21907
|
// src/auth/decision-record.ts
|
|
21908
|
+
init_cjs_shims();
|
|
21838
21909
|
var CHANNELS = ["terminal", "monitor", "native", "cloud"];
|
|
21839
21910
|
var PERSON_CHANNELS = /* @__PURE__ */ new Set([
|
|
21840
21911
|
"terminal",
|
|
@@ -21983,19 +22054,30 @@ function recordFromLegacyWait(body, now = Date.now()) {
|
|
|
21983
22054
|
|
|
21984
22055
|
// src/auth/daemon.ts
|
|
21985
22056
|
var ACTIVITY_SOCKET_PATH = process.platform === "win32" ? "\\\\.\\pipe\\node9-activity" : import_path15.default.join(import_os10.default.tmpdir(), "node9-activity.sock");
|
|
21986
|
-
|
|
22057
|
+
var ACTIVITY_SOCKET_TIMEOUT_MS = 500;
|
|
22058
|
+
function notifyActivitySocket(data, opts = {}) {
|
|
21987
22059
|
if (forecastRun()) return Promise.resolve(false);
|
|
21988
22060
|
return new Promise((resolve) => {
|
|
22061
|
+
let settled = false;
|
|
22062
|
+
let sock = null;
|
|
22063
|
+
const finish = (ok) => {
|
|
22064
|
+
if (settled) return;
|
|
22065
|
+
settled = true;
|
|
22066
|
+
clearTimeout(timer);
|
|
22067
|
+
if (!ok) sock?.destroy();
|
|
22068
|
+
resolve(ok);
|
|
22069
|
+
};
|
|
22070
|
+
const timer = setTimeout(() => finish(false), opts.timeoutMs ?? ACTIVITY_SOCKET_TIMEOUT_MS);
|
|
21989
22071
|
try {
|
|
21990
22072
|
const payload = JSON.stringify(data);
|
|
21991
|
-
|
|
22073
|
+
sock = import_net4.default.createConnection(opts.socketPath ?? ACTIVITY_SOCKET_PATH);
|
|
21992
22074
|
sock.on("connect", () => {
|
|
21993
|
-
sock.on("close", () =>
|
|
22075
|
+
sock.on("close", () => finish(true));
|
|
21994
22076
|
sock.end(payload);
|
|
21995
22077
|
});
|
|
21996
|
-
sock.on("error", () =>
|
|
22078
|
+
sock.on("error", () => finish(false));
|
|
21997
22079
|
} catch {
|
|
21998
|
-
|
|
22080
|
+
finish(false);
|
|
21999
22081
|
}
|
|
22000
22082
|
});
|
|
22001
22083
|
}
|
|
@@ -22396,14 +22478,17 @@ async function resolveViaDaemon(id, decision, internalToken, source, record) {
|
|
|
22396
22478
|
}
|
|
22397
22479
|
|
|
22398
22480
|
// src/auth/orchestrator.ts
|
|
22481
|
+
init_cjs_shims();
|
|
22399
22482
|
var import_crypto10 = require("crypto");
|
|
22400
22483
|
|
|
22401
22484
|
// src/apps/state.ts
|
|
22485
|
+
init_cjs_shims();
|
|
22402
22486
|
var import_fs17 = __toESM(require("fs"));
|
|
22403
22487
|
var import_os12 = __toESM(require("os"));
|
|
22404
22488
|
var import_path17 = __toESM(require("path"));
|
|
22405
22489
|
|
|
22406
22490
|
// src/apps/catalog.ts
|
|
22491
|
+
init_cjs_shims();
|
|
22407
22492
|
var APP_CATALOG = [
|
|
22408
22493
|
{
|
|
22409
22494
|
slug: "redis",
|
|
@@ -22533,9 +22618,15 @@ var APP_BY_SLUG = new Map(
|
|
|
22533
22618
|
init_audit();
|
|
22534
22619
|
|
|
22535
22620
|
// src/daemon/mcp-tools.ts
|
|
22621
|
+
init_cjs_shims();
|
|
22536
22622
|
var import_fs16 = __toESM(require("fs"));
|
|
22537
22623
|
var import_path16 = __toESM(require("path"));
|
|
22538
22624
|
var import_os11 = __toESM(require("os"));
|
|
22625
|
+
|
|
22626
|
+
// src/mcp-cmd.ts
|
|
22627
|
+
init_cjs_shims();
|
|
22628
|
+
|
|
22629
|
+
// src/daemon/mcp-tools.ts
|
|
22539
22630
|
function getMcpToolsFile() {
|
|
22540
22631
|
return import_path16.default.join(import_os11.default.homedir(), ".node9", "mcp-tools.json");
|
|
22541
22632
|
}
|
|
@@ -22659,10 +22750,12 @@ var import_os21 = __toESM(require("os"));
|
|
|
22659
22750
|
var import_path30 = __toESM(require("path"));
|
|
22660
22751
|
|
|
22661
22752
|
// src/ui/native.ts
|
|
22753
|
+
init_cjs_shims();
|
|
22662
22754
|
var import_child_process = require("child_process");
|
|
22663
22755
|
var import_path19 = __toESM(require("path"));
|
|
22664
22756
|
|
|
22665
22757
|
// src/context-sniper.ts
|
|
22758
|
+
init_cjs_shims();
|
|
22666
22759
|
var import_path18 = __toESM(require("path"));
|
|
22667
22760
|
function smartTruncate(str, maxLen = 500) {
|
|
22668
22761
|
if (str.length <= maxLen) return str;
|
|
@@ -22765,6 +22858,7 @@ function computeRiskMetadata(args, tier, blockedByLabel, matchedField, matchedWo
|
|
|
22765
22858
|
}
|
|
22766
22859
|
|
|
22767
22860
|
// src/utils/safe-text.ts
|
|
22861
|
+
init_cjs_shims();
|
|
22768
22862
|
init_dist();
|
|
22769
22863
|
|
|
22770
22864
|
// src/ui/native.ts
|
|
@@ -23002,12 +23096,14 @@ end run`;
|
|
|
23002
23096
|
}
|
|
23003
23097
|
|
|
23004
23098
|
// src/canary/registry.ts
|
|
23099
|
+
init_cjs_shims();
|
|
23005
23100
|
var import_fs19 = __toESM(require("fs"));
|
|
23006
23101
|
var import_os14 = __toESM(require("os"));
|
|
23007
23102
|
var import_path21 = __toESM(require("path"));
|
|
23008
23103
|
init_dist();
|
|
23009
23104
|
|
|
23010
23105
|
// src/shields/jail.ts
|
|
23106
|
+
init_cjs_shims();
|
|
23011
23107
|
var import_fs18 = __toESM(require("fs"));
|
|
23012
23108
|
var import_os13 = __toESM(require("os"));
|
|
23013
23109
|
var import_path20 = __toESM(require("path"));
|
|
@@ -23085,6 +23181,7 @@ function canaryValues() {
|
|
|
23085
23181
|
init_dist();
|
|
23086
23182
|
|
|
23087
23183
|
// src/auth/session-script.ts
|
|
23184
|
+
init_cjs_shims();
|
|
23088
23185
|
var import_fs20 = __toESM(require("fs"));
|
|
23089
23186
|
var import_os15 = __toESM(require("os"));
|
|
23090
23187
|
var import_path22 = __toESM(require("path"));
|
|
@@ -23180,10 +23277,12 @@ init_audit();
|
|
|
23180
23277
|
init_dist();
|
|
23181
23278
|
|
|
23182
23279
|
// src/exposure/known-hosts.ts
|
|
23280
|
+
init_cjs_shims();
|
|
23183
23281
|
var import_fs22 = __toESM(require("fs"));
|
|
23184
23282
|
var import_path24 = __toESM(require("path"));
|
|
23185
23283
|
|
|
23186
23284
|
// src/utils/git-remotes.ts
|
|
23285
|
+
init_cjs_shims();
|
|
23187
23286
|
var import_fs21 = __toESM(require("fs"));
|
|
23188
23287
|
var import_path23 = __toESM(require("path"));
|
|
23189
23288
|
init_dist();
|
|
@@ -23327,6 +23426,7 @@ function knownProjectHosts(dir2) {
|
|
|
23327
23426
|
}
|
|
23328
23427
|
|
|
23329
23428
|
// src/exposure/writes.ts
|
|
23429
|
+
init_cjs_shims();
|
|
23330
23430
|
var import_fs23 = __toESM(require("fs"));
|
|
23331
23431
|
var import_os16 = __toESM(require("os"));
|
|
23332
23432
|
var import_path25 = __toESM(require("path"));
|
|
@@ -23401,12 +23501,14 @@ function judgeWritesAfterExposure(opts) {
|
|
|
23401
23501
|
}
|
|
23402
23502
|
|
|
23403
23503
|
// src/exposure/marker.ts
|
|
23504
|
+
init_cjs_shims();
|
|
23404
23505
|
var import_crypto9 = __toESM(require("crypto"));
|
|
23405
23506
|
var import_fs24 = __toESM(require("fs"));
|
|
23406
23507
|
var import_os17 = __toESM(require("os"));
|
|
23407
23508
|
var import_path26 = __toESM(require("path"));
|
|
23408
23509
|
|
|
23409
23510
|
// src/daemon/exposure-store.ts
|
|
23511
|
+
init_cjs_shims();
|
|
23410
23512
|
var SESSION_EXPOSURE_TTL_MS = 4 * 60 * 60 * 1e3;
|
|
23411
23513
|
|
|
23412
23514
|
// src/exposure/marker.ts
|
|
@@ -23431,6 +23533,7 @@ function maybeSessionExposed(sessionId) {
|
|
|
23431
23533
|
}
|
|
23432
23534
|
|
|
23433
23535
|
// src/exposure/roles.ts
|
|
23536
|
+
init_cjs_shims();
|
|
23434
23537
|
var import_fs25 = __toESM(require("fs"));
|
|
23435
23538
|
var EXPOSURE_LABEL = "\u{1F6E1}\uFE0F Node9 Exposure";
|
|
23436
23539
|
var AGENT_INTERNAL_PREFIXES = ["ccd_", "visualize"];
|
|
@@ -23525,6 +23628,7 @@ function sourceWord(toolName) {
|
|
|
23525
23628
|
}
|
|
23526
23629
|
|
|
23527
23630
|
// src/auth/trusted-recipients.ts
|
|
23631
|
+
init_cjs_shims();
|
|
23528
23632
|
var import_fs26 = __toESM(require("fs"));
|
|
23529
23633
|
var import_path27 = __toESM(require("path"));
|
|
23530
23634
|
var import_os18 = __toESM(require("os"));
|
|
@@ -23578,6 +23682,7 @@ function isTrustedRecipient(value) {
|
|
|
23578
23682
|
init_forecast_context();
|
|
23579
23683
|
|
|
23580
23684
|
// src/auth/cloud.ts
|
|
23685
|
+
init_cjs_shims();
|
|
23581
23686
|
var import_fs27 = __toESM(require("fs"));
|
|
23582
23687
|
var import_os19 = __toESM(require("os"));
|
|
23583
23688
|
var import_path28 = __toESM(require("path"));
|
|
@@ -23750,6 +23855,7 @@ async function resolveNode9SaaS(requestId, creds, approved, decidedBy) {
|
|
|
23750
23855
|
}
|
|
23751
23856
|
|
|
23752
23857
|
// src/loop-detector.ts
|
|
23858
|
+
init_cjs_shims();
|
|
23753
23859
|
var import_fs28 = __toESM(require("fs"));
|
|
23754
23860
|
var import_path29 = __toESM(require("path"));
|
|
23755
23861
|
var import_os20 = __toESM(require("os"));
|
|
@@ -23801,6 +23907,7 @@ function recordAndCheck(tool, args, threshold = 3, windowMs = 12e4) {
|
|
|
23801
23907
|
}
|
|
23802
23908
|
|
|
23803
23909
|
// src/policy/negotiation.ts
|
|
23910
|
+
init_cjs_shims();
|
|
23804
23911
|
var BLOCKED_BY = " is blocked by ";
|
|
23805
23912
|
var DASH_BLOCKED_BY = " \u2014 blocked by ";
|
|
23806
23913
|
var SHIELD = " shield";
|
|
@@ -23819,6 +23926,7 @@ function asApprovalRequest(description) {
|
|
|
23819
23926
|
}
|
|
23820
23927
|
|
|
23821
23928
|
// src/auth/card-result.ts
|
|
23929
|
+
init_cjs_shims();
|
|
23822
23930
|
var CHANNEL_NAMES = {
|
|
23823
23931
|
terminal: "Terminal (node9 tail)",
|
|
23824
23932
|
monitor: "node9 monitor",
|