@node9/policy-engine 2.19.2 → 2.20.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/index.d.mts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +10 -3
- package/dist/index.mjs +10 -3
- package/package.json +1 -1
package/dist/index.d.mts
CHANGED
|
@@ -1351,7 +1351,7 @@ declare const LONG_OUTPUT_THRESHOLD_BYTES: number;
|
|
|
1351
1351
|
* and fails CI when the hash drifts without a version bump — forgetting
|
|
1352
1352
|
* is loud, not silent.
|
|
1353
1353
|
*/
|
|
1354
|
-
declare const CANONICAL_EXTRACTOR_VERSION = "canonical-
|
|
1354
|
+
declare const CANONICAL_EXTRACTOR_VERSION = "canonical-v16";
|
|
1355
1355
|
/**
|
|
1356
1356
|
* SHA-256 prefix of the detector-source files
|
|
1357
1357
|
* (canonical.ts + pii.ts + destructive-regex.ts).
|
|
@@ -1362,7 +1362,7 @@ declare const CANONICAL_EXTRACTOR_VERSION = "canonical-v15";
|
|
|
1362
1362
|
* files changed, this hash must change too, and you must consciously
|
|
1363
1363
|
* decide whether to bump CANONICAL_EXTRACTOR_VERSION."
|
|
1364
1364
|
*/
|
|
1365
|
-
declare const CANONICAL_EXTRACTOR_HASH = "
|
|
1365
|
+
declare const CANONICAL_EXTRACTOR_HASH = "5d450ab100864451";
|
|
1366
1366
|
declare function extractCanonicalFindings(call: ToolCallEntry, ctx: ExtractContext): CanonicalFinding[];
|
|
1367
1367
|
declare function extractSessionLevelFindings(calls: ReadonlyArray<SessionToolCall>, ctx: SessionExtractContext): CanonicalFinding[];
|
|
1368
1368
|
/**
|
package/dist/index.d.ts
CHANGED
|
@@ -1351,7 +1351,7 @@ declare const LONG_OUTPUT_THRESHOLD_BYTES: number;
|
|
|
1351
1351
|
* and fails CI when the hash drifts without a version bump — forgetting
|
|
1352
1352
|
* is loud, not silent.
|
|
1353
1353
|
*/
|
|
1354
|
-
declare const CANONICAL_EXTRACTOR_VERSION = "canonical-
|
|
1354
|
+
declare const CANONICAL_EXTRACTOR_VERSION = "canonical-v16";
|
|
1355
1355
|
/**
|
|
1356
1356
|
* SHA-256 prefix of the detector-source files
|
|
1357
1357
|
* (canonical.ts + pii.ts + destructive-regex.ts).
|
|
@@ -1362,7 +1362,7 @@ declare const CANONICAL_EXTRACTOR_VERSION = "canonical-v15";
|
|
|
1362
1362
|
* files changed, this hash must change too, and you must consciously
|
|
1363
1363
|
* decide whether to bump CANONICAL_EXTRACTOR_VERSION."
|
|
1364
1364
|
*/
|
|
1365
|
-
declare const CANONICAL_EXTRACTOR_HASH = "
|
|
1365
|
+
declare const CANONICAL_EXTRACTOR_HASH = "5d450ab100864451";
|
|
1366
1366
|
declare function extractCanonicalFindings(call: ToolCallEntry, ctx: ExtractContext): CanonicalFinding[];
|
|
1367
1367
|
declare function extractSessionLevelFindings(calls: ReadonlyArray<SessionToolCall>, ctx: SessionExtractContext): CanonicalFinding[];
|
|
1368
1368
|
/**
|
package/dist/index.js
CHANGED
|
@@ -1874,7 +1874,14 @@ var FS_OP_PRESCREEN_RE = new RegExp(
|
|
|
1874
1874
|
// reader right after `"` / `'`, and without these two characters the
|
|
1875
1875
|
// prescreen rejected every string-wrapped read before the parser ran.
|
|
1876
1876
|
// Found 2026-09-11 by instrumenting the walk -- no CallExpr was ever visited.
|
|
1877
|
-
`(?:^|[\\s|;&("'\`\\n/])(?:rm|${[...FS_READ_TOOLS, ...COPY_VERB_HEADS].map((t) => t.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")).join("|")})\\b|(?<!<)<(?!<)
|
|
1877
|
+
`(?:^|[\\s|;&("'\`\\n/])(?:rm|${[...FS_READ_TOOLS, ...COPY_VERB_HEADS].map((t) => t.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")).join("|")})\\b|(?<!<)<(?!<)`,
|
|
1878
|
+
// Case-insensitive on purpose. Without `i`, `CAT .env` failed this fast path
|
|
1879
|
+
// and analyzeFsOperation returned before the AST ran at all — a live bypass
|
|
1880
|
+
// on macOS and Windows, whose filesystems resolve `CAT` to `cat`, and on
|
|
1881
|
+
// PowerShell, which is case-insensitive by language. Linux is unaffected in
|
|
1882
|
+
// practice (`CAT` is not an executable there) but folding costs nothing.
|
|
1883
|
+
// Dogfound 2026-09-22; pinned by verb-case-coverage.spec.ts.
|
|
1884
|
+
"i"
|
|
1878
1885
|
);
|
|
1879
1886
|
var HOME_CACHE_ALLOWLIST = [
|
|
1880
1887
|
".cache",
|
|
@@ -5738,8 +5745,8 @@ function matchCanaryArgs(args, values) {
|
|
|
5738
5745
|
|
|
5739
5746
|
// src/scan/canonical.ts
|
|
5740
5747
|
var LONG_OUTPUT_THRESHOLD_BYTES = 100 * 1024;
|
|
5741
|
-
var CANONICAL_EXTRACTOR_VERSION = "canonical-
|
|
5742
|
-
var CANONICAL_EXTRACTOR_HASH = "
|
|
5748
|
+
var CANONICAL_EXTRACTOR_VERSION = "canonical-v16";
|
|
5749
|
+
var CANONICAL_EXTRACTOR_HASH = "5d450ab100864451";
|
|
5743
5750
|
var DEDUPE_PREVIEW_LEN = 120;
|
|
5744
5751
|
function extractCanonicalFindings(call, ctx) {
|
|
5745
5752
|
const out = [];
|
package/dist/index.mjs
CHANGED
|
@@ -1732,7 +1732,14 @@ var FS_OP_PRESCREEN_RE = new RegExp(
|
|
|
1732
1732
|
// reader right after `"` / `'`, and without these two characters the
|
|
1733
1733
|
// prescreen rejected every string-wrapped read before the parser ran.
|
|
1734
1734
|
// Found 2026-09-11 by instrumenting the walk -- no CallExpr was ever visited.
|
|
1735
|
-
`(?:^|[\\s|;&("'\`\\n/])(?:rm|${[...FS_READ_TOOLS, ...COPY_VERB_HEADS].map((t) => t.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")).join("|")})\\b|(?<!<)<(?!<)
|
|
1735
|
+
`(?:^|[\\s|;&("'\`\\n/])(?:rm|${[...FS_READ_TOOLS, ...COPY_VERB_HEADS].map((t) => t.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")).join("|")})\\b|(?<!<)<(?!<)`,
|
|
1736
|
+
// Case-insensitive on purpose. Without `i`, `CAT .env` failed this fast path
|
|
1737
|
+
// and analyzeFsOperation returned before the AST ran at all — a live bypass
|
|
1738
|
+
// on macOS and Windows, whose filesystems resolve `CAT` to `cat`, and on
|
|
1739
|
+
// PowerShell, which is case-insensitive by language. Linux is unaffected in
|
|
1740
|
+
// practice (`CAT` is not an executable there) but folding costs nothing.
|
|
1741
|
+
// Dogfound 2026-09-22; pinned by verb-case-coverage.spec.ts.
|
|
1742
|
+
"i"
|
|
1736
1743
|
);
|
|
1737
1744
|
var HOME_CACHE_ALLOWLIST = [
|
|
1738
1745
|
".cache",
|
|
@@ -5596,8 +5603,8 @@ function matchCanaryArgs(args, values) {
|
|
|
5596
5603
|
|
|
5597
5604
|
// src/scan/canonical.ts
|
|
5598
5605
|
var LONG_OUTPUT_THRESHOLD_BYTES = 100 * 1024;
|
|
5599
|
-
var CANONICAL_EXTRACTOR_VERSION = "canonical-
|
|
5600
|
-
var CANONICAL_EXTRACTOR_HASH = "
|
|
5606
|
+
var CANONICAL_EXTRACTOR_VERSION = "canonical-v16";
|
|
5607
|
+
var CANONICAL_EXTRACTOR_HASH = "5d450ab100864451";
|
|
5601
5608
|
var DEDUPE_PREVIEW_LEN = 120;
|
|
5602
5609
|
function extractCanonicalFindings(call, ctx) {
|
|
5603
5610
|
const out = [];
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@node9/policy-engine",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.20.0",
|
|
4
4
|
"description": "Shared policy evaluation engine for node9 — DLP, smart rules, AST shell parsing, shields, loop detection. Pure functions, no I/O. Used by both node9-proxy and the node9 SaaS firewall.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"homepage": "https://node9.ai",
|