@mmnto/totem 1.118.1 → 1.119.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/artifacts/admission.d.ts +12 -12
- package/dist/artifacts/verdict.d.ts +16 -16
- package/dist/compile-manifest.d.ts +89 -0
- package/dist/compile-manifest.d.ts.map +1 -1
- package/dist/compile-manifest.js +180 -31
- package/dist/compile-manifest.js.map +1 -1
- package/dist/compile-manifest.test.js +169 -1
- package/dist/compile-manifest.test.js.map +1 -1
- package/dist/compiler-schema.d.ts +1067 -0
- package/dist/compiler-schema.d.ts.map +1 -1
- package/dist/compiler-schema.js +204 -1
- package/dist/compiler-schema.js.map +1 -1
- package/dist/compiler-schema.test.js +92 -0
- package/dist/compiler-schema.test.js.map +1 -1
- package/dist/compiler.d.ts +2 -6
- package/dist/compiler.d.ts.map +1 -1
- package/dist/compiler.js +6 -17
- package/dist/compiler.js.map +1 -1
- package/dist/freeze.d.ts +3 -3
- package/dist/index.d.ts +12 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -2
- package/dist/index.js.map +1 -1
- package/dist/ledger.d.ts +12 -12
- package/dist/regex-safety/apply-rules-bounded.d.ts +11 -0
- package/dist/regex-safety/apply-rules-bounded.d.ts.map +1 -1
- package/dist/regex-safety/apply-rules-bounded.js +59 -5
- package/dist/regex-safety/apply-rules-bounded.js.map +1 -1
- package/dist/regex-validation.d.ts +7 -0
- package/dist/regex-validation.d.ts.map +1 -0
- package/dist/regex-validation.js +32 -0
- package/dist/regex-validation.js.map +1 -0
- package/dist/rule-engine.d.ts +11 -1
- package/dist/rule-engine.d.ts.map +1 -1
- package/dist/rule-engine.js +125 -18
- package/dist/rule-engine.js.map +1 -1
- package/dist/spine/authored-rule.d.ts +669 -245
- package/dist/spine/authored-rule.d.ts.map +1 -1
- package/dist/spine/authored-rule.js +113 -27
- package/dist/spine/authored-rule.js.map +1 -1
- package/dist/spine/authored-rule.test.js +170 -4
- package/dist/spine/authored-rule.test.js.map +1 -1
- package/dist/spine/authoring-ledger.d.ts +69 -10
- package/dist/spine/authoring-ledger.d.ts.map +1 -1
- package/dist/spine/authoring-ledger.js +46 -25
- package/dist/spine/authoring-ledger.js.map +1 -1
- package/dist/spine/authoring-ledger.test.js +20 -7
- package/dist/spine/authoring-ledger.test.js.map +1 -1
- package/dist/spine/candidate-rule.d.ts +18 -1
- package/dist/spine/candidate-rule.d.ts.map +1 -1
- package/dist/spine/candidate-rule.js.map +1 -1
- package/dist/spine/cert-corpus-seed.d.ts +8 -8
- package/dist/spine/compile.d.ts +4 -1
- package/dist/spine/compile.d.ts.map +1 -1
- package/dist/spine/compile.js +50 -3
- package/dist/spine/compile.js.map +1 -1
- package/dist/spine/compile.test.js +189 -23
- package/dist/spine/compile.test.js.map +1 -1
- package/dist/spine/frozen-split.d.ts +18 -18
- package/dist/spine/ledgers.d.ts +24 -24
- package/dist/spine/lf-normalize.d.ts +9 -0
- package/dist/spine/lf-normalize.d.ts.map +1 -0
- package/dist/spine/lf-normalize.js +38 -0
- package/dist/spine/lf-normalize.js.map +1 -0
- package/dist/spine/preimage-differential.d.ts +3 -1
- package/dist/spine/preimage-differential.d.ts.map +1 -1
- package/dist/spine/preimage-differential.js +9 -6
- package/dist/spine/preimage-differential.js.map +1 -1
- package/dist/spine/preimage-differential.test.js +59 -0
- package/dist/spine/preimage-differential.test.js.map +1 -1
- package/dist/spine/record-exemplars.fixture.d.ts +5 -0
- package/dist/spine/record-exemplars.fixture.d.ts.map +1 -0
- package/dist/spine/record-exemplars.fixture.js +61 -0
- package/dist/spine/record-exemplars.fixture.js.map +1 -0
- package/dist/spine/record-lower.d.ts +90 -0
- package/dist/spine/record-lower.d.ts.map +1 -0
- package/dist/spine/record-lower.js +418 -0
- package/dist/spine/record-lower.js.map +1 -0
- package/dist/spine/record-lower.test.d.ts +2 -0
- package/dist/spine/record-lower.test.d.ts.map +1 -0
- package/dist/spine/record-lower.test.js +562 -0
- package/dist/spine/record-lower.test.js.map +1 -0
- package/dist/spine/record-runtime.d.ts +215 -0
- package/dist/spine/record-runtime.d.ts.map +1 -0
- package/dist/spine/record-runtime.js +330 -0
- package/dist/spine/record-runtime.js.map +1 -0
- package/dist/spine/record-runtime.test.d.ts +2 -0
- package/dist/spine/record-runtime.test.d.ts.map +1 -0
- package/dist/spine/record-runtime.test.js +814 -0
- package/dist/spine/record-runtime.test.js.map +1 -0
- package/dist/spine/rule-record.d.ts +864 -0
- package/dist/spine/rule-record.d.ts.map +1 -0
- package/dist/spine/rule-record.js +781 -0
- package/dist/spine/rule-record.js.map +1 -0
- package/dist/spine/rule-record.test.d.ts +2 -0
- package/dist/spine/rule-record.test.d.ts.map +1 -0
- package/dist/spine/rule-record.test.js +1262 -0
- package/dist/spine/rule-record.test.js.map +1 -0
- package/dist/spine/windtunnel-firing.d.ts.map +1 -1
- package/dist/spine/windtunnel-firing.js +28 -1
- package/dist/spine/windtunnel-firing.js.map +1 -1
- package/dist/spine/windtunnel-lock.d.ts +10 -10
- package/dist/stage4-verifier.d.ts.map +1 -1
- package/dist/stage4-verifier.js +61 -17
- package/dist/stage4-verifier.js.map +1 -1
- package/dist/sys/glob.d.ts +30 -0
- package/dist/sys/glob.d.ts.map +1 -1
- package/dist/sys/glob.js +62 -1
- package/dist/sys/glob.js.map +1 -1
- package/dist/types.d.ts +1 -1
- package/package.json +1 -1
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/ledger.d.ts
CHANGED
|
@@ -164,13 +164,13 @@ export declare const LedgerEventSchema: z.ZodEffects<z.ZodObject<{
|
|
|
164
164
|
qbd_correlation_id: z.ZodOptional<z.ZodString>;
|
|
165
165
|
}, "strip", z.ZodTypeAny, {
|
|
166
166
|
type: "suppress" | "corpus_query" | "derive_action" | "override" | "exemption" | "mcp_call" | "tool_call_first_significant" | "hook_fire" | "session_start" | "compile_run" | "claim_discipline_finding" | "compile_cache_decision";
|
|
167
|
+
source: "lint" | "shield" | "bot";
|
|
167
168
|
timestamp: string;
|
|
168
169
|
justification: string;
|
|
169
|
-
|
|
170
|
+
ruleId?: string | undefined;
|
|
170
171
|
immutable?: boolean | undefined;
|
|
171
|
-
file?: string | undefined;
|
|
172
172
|
line?: number | undefined;
|
|
173
|
-
|
|
173
|
+
file?: string | undefined;
|
|
174
174
|
agent_source?: string | undefined;
|
|
175
175
|
session_id?: string | undefined;
|
|
176
176
|
correlation_id?: string | undefined;
|
|
@@ -180,13 +180,13 @@ export declare const LedgerEventSchema: z.ZodEffects<z.ZodObject<{
|
|
|
180
180
|
qbd_correlation_id?: string | undefined;
|
|
181
181
|
}, {
|
|
182
182
|
type: "suppress" | "corpus_query" | "derive_action" | "override" | "exemption" | "mcp_call" | "tool_call_first_significant" | "hook_fire" | "session_start" | "compile_run" | "claim_discipline_finding" | "compile_cache_decision";
|
|
183
|
-
timestamp: string;
|
|
184
183
|
source: "lint" | "shield" | "bot";
|
|
184
|
+
timestamp: string;
|
|
185
|
+
ruleId?: string | undefined;
|
|
185
186
|
immutable?: boolean | undefined;
|
|
186
|
-
file?: string | undefined;
|
|
187
187
|
line?: number | undefined;
|
|
188
|
+
file?: string | undefined;
|
|
188
189
|
justification?: string | undefined;
|
|
189
|
-
ruleId?: string | undefined;
|
|
190
190
|
agent_source?: string | undefined;
|
|
191
191
|
session_id?: string | undefined;
|
|
192
192
|
correlation_id?: string | undefined;
|
|
@@ -196,13 +196,13 @@ export declare const LedgerEventSchema: z.ZodEffects<z.ZodObject<{
|
|
|
196
196
|
qbd_correlation_id?: string | undefined;
|
|
197
197
|
}>, {
|
|
198
198
|
type: "suppress" | "corpus_query" | "derive_action" | "override" | "exemption" | "mcp_call" | "tool_call_first_significant" | "hook_fire" | "session_start" | "compile_run" | "claim_discipline_finding" | "compile_cache_decision";
|
|
199
|
+
source: "lint" | "shield" | "bot";
|
|
199
200
|
timestamp: string;
|
|
200
201
|
justification: string;
|
|
201
|
-
|
|
202
|
+
ruleId?: string | undefined;
|
|
202
203
|
immutable?: boolean | undefined;
|
|
203
|
-
file?: string | undefined;
|
|
204
204
|
line?: number | undefined;
|
|
205
|
-
|
|
205
|
+
file?: string | undefined;
|
|
206
206
|
agent_source?: string | undefined;
|
|
207
207
|
session_id?: string | undefined;
|
|
208
208
|
correlation_id?: string | undefined;
|
|
@@ -212,13 +212,13 @@ export declare const LedgerEventSchema: z.ZodEffects<z.ZodObject<{
|
|
|
212
212
|
qbd_correlation_id?: string | undefined;
|
|
213
213
|
}, {
|
|
214
214
|
type: "suppress" | "corpus_query" | "derive_action" | "override" | "exemption" | "mcp_call" | "tool_call_first_significant" | "hook_fire" | "session_start" | "compile_run" | "claim_discipline_finding" | "compile_cache_decision";
|
|
215
|
-
timestamp: string;
|
|
216
215
|
source: "lint" | "shield" | "bot";
|
|
216
|
+
timestamp: string;
|
|
217
|
+
ruleId?: string | undefined;
|
|
217
218
|
immutable?: boolean | undefined;
|
|
218
|
-
file?: string | undefined;
|
|
219
219
|
line?: number | undefined;
|
|
220
|
+
file?: string | undefined;
|
|
220
221
|
justification?: string | undefined;
|
|
221
|
-
ruleId?: string | undefined;
|
|
222
222
|
agent_source?: string | undefined;
|
|
223
223
|
session_id?: string | undefined;
|
|
224
224
|
correlation_id?: string | undefined;
|
|
@@ -26,6 +26,17 @@ export interface BoundedApplyOptions {
|
|
|
26
26
|
evaluator: RegexEvaluator;
|
|
27
27
|
timeoutMode: TimeoutMode;
|
|
28
28
|
repoRoot: string;
|
|
29
|
+
/**
|
|
30
|
+
* Prop 310 § Design 8 — whole-file reader for a `requires: {scope: file}`
|
|
31
|
+
* check. Same shape as the ast path's shipped `readStrategy` 7th parameter, so
|
|
32
|
+
* `totem lint --staged` threads the SAME `git show :<file>` reader into both
|
|
33
|
+
* dispatchers and the requirement is evaluated against the bytes being
|
|
34
|
+
* committed. Omitted ⇒ the worktree file is read.
|
|
35
|
+
*
|
|
36
|
+
* Reached only after a record-path rule with a file-scoped requirement has
|
|
37
|
+
* matched its target, so it adds no IO to the legacy corpus.
|
|
38
|
+
*/
|
|
39
|
+
readStrategy?: (filePath: string) => Promise<string | null>;
|
|
29
40
|
}
|
|
30
41
|
export interface BoundedApplyResult {
|
|
31
42
|
violations: Violation[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apply-rules-bounded.d.ts","sourceRoot":"","sources":["../../src/regex-safety/apply-rules-bounded.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAKH,OAAO,KAAK,EACV,YAAY,EACZ,YAAY,EACZ,iBAAiB,EACjB,SAAS,EACV,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAKL,KAAK,iBAAiB,EACvB,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"apply-rules-bounded.d.ts","sourceRoot":"","sources":["../../src/regex-safety/apply-rules-bounded.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAKH,OAAO,KAAK,EACV,YAAY,EACZ,YAAY,EACZ,iBAAiB,EACjB,SAAS,EACV,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAKL,KAAK,iBAAiB,EACvB,MAAM,mBAAmB,CAAC;AAU3B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAGrD,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,SAAS,CAAC;AAE/C,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,WAAW,CAAC;CACnB;AAED,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,cAAc,CAAC;IAC1B,WAAW,EAAE,WAAW,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB;;;;;;;;;OASG;IACH,YAAY,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;CAC7D;AAED,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,SAAS,EAAE,CAAC;IACxB,eAAe,EAAE,kBAAkB,EAAE,CAAC;CACvC;AAED,wBAAsB,4BAA4B,CAChD,GAAG,EAAE,iBAAiB,EACtB,KAAK,EAAE,SAAS,YAAY,EAAE,EAC9B,SAAS,EAAE,SAAS,YAAY,EAAE,EAClC,OAAO,EAAE,mBAAmB,EAC5B,WAAW,CAAC,EAAE,iBAAiB,GAC9B,OAAO,CAAC,kBAAkB,CAAC,CAoL7B"}
|
|
@@ -16,7 +16,9 @@ import * as fs from 'node:fs';
|
|
|
16
16
|
import * as path from 'node:path';
|
|
17
17
|
import { TotemParseError } from '../errors.js';
|
|
18
18
|
import { extractJustification, getRustTestSpans, isProductionRustRule, isSuppressed, } from '../rule-engine.js';
|
|
19
|
-
|
|
19
|
+
// Prop 310 slice 2 — the record-grammar runtime semantics, shared with
|
|
20
|
+
// `rule-engine.ts` so both regex dispatchers scope and gate identically.
|
|
21
|
+
import { assertNoTornRecordRules, assertRequiresPatternsSafe, isInsideRoot, requiresSuppressesMatch, ruleAppliesToFile, } from '../spine/record-runtime.js';
|
|
20
22
|
import { redactPath } from './telemetry.js';
|
|
21
23
|
export async function applyRulesToAdditionsBounded(ctx, rules, additions, options, onRuleEvent) {
|
|
22
24
|
const violations = [];
|
|
@@ -24,6 +26,10 @@ export async function applyRulesToAdditionsBounded(ctx, rules, additions, option
|
|
|
24
26
|
if (additions.length === 0 || rules.length === 0) {
|
|
25
27
|
return { violations, timeoutOutcomes };
|
|
26
28
|
}
|
|
29
|
+
// Prop 310 § Design 12 — torn-manifest guard, and § Design 8's safe-regex2 gate
|
|
30
|
+
// on every `requires.pattern` before any of them is executed.
|
|
31
|
+
assertNoTornRecordRules(rules);
|
|
32
|
+
assertRequiresPatternsSafe(rules);
|
|
27
33
|
const regexRules = rules.filter((r) => r.engine === 'regex' || !r.engine);
|
|
28
34
|
const rustTestSpansCache = new Map();
|
|
29
35
|
const getRustSpans = async (file) => {
|
|
@@ -42,16 +48,52 @@ export async function applyRulesToAdditionsBounded(ctx, rules, additions, option
|
|
|
42
48
|
return [];
|
|
43
49
|
}
|
|
44
50
|
};
|
|
51
|
+
// Prop 310 § Design 8 — whole-file text for a `requires: {scope: file}` check,
|
|
52
|
+
// memoized per invocation. Prefers the caller's `readStrategy` (staged mode's
|
|
53
|
+
// `git show :<file>`) so the requirement is judged against the same bytes as
|
|
54
|
+
// the rest of the lint; a read failure yields `null`, which the evaluator
|
|
55
|
+
// treats as "context absent" and therefore FIRES — the safe direction.
|
|
56
|
+
const fileTextCache = new Map();
|
|
57
|
+
const getFileText = async (file) => {
|
|
58
|
+
if (fileTextCache.has(file))
|
|
59
|
+
return fileTextCache.get(file) ?? null;
|
|
60
|
+
let text = null;
|
|
61
|
+
if (options.readStrategy) {
|
|
62
|
+
// DELIBERATELY unwrapped: the caller's reader owns its own failure
|
|
63
|
+
// contract. Staged mode's reader throws `STAGED_READ_FAILED` precisely so
|
|
64
|
+
// an unreadable index entry surfaces instead of silently degrading, and a
|
|
65
|
+
// catch here would convert that loud failure into a quiet one. A reader
|
|
66
|
+
// that means "absent" returns `null`, which is handled below.
|
|
67
|
+
text = await options.readStrategy(file);
|
|
68
|
+
}
|
|
69
|
+
else if (isInsideRoot(options.repoRoot, file)) {
|
|
70
|
+
try {
|
|
71
|
+
text = await fs.promises.readFile(path.resolve(options.repoRoot, file), 'utf-8');
|
|
72
|
+
// totem-context: read failure yields no required-context evidence → the requirement is UNMET → the rule still FIRES; fails toward flagging, never toward suppression.
|
|
73
|
+
}
|
|
74
|
+
catch {
|
|
75
|
+
text = null;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
// Out-of-root paths fall through as unreadable ⇒ requirement unmet ⇒ the rule
|
|
79
|
+
// FIRES. Diff-supplied paths are attacker-shaped; see `isInsideRoot`.
|
|
80
|
+
fileTextCache.set(file, text);
|
|
81
|
+
return text;
|
|
82
|
+
};
|
|
45
83
|
for (const rule of regexRules) {
|
|
46
84
|
// Partition additions by file so the evaluator can batch one rule per
|
|
47
85
|
// file at a time. File granularity matches the fileGlobs scoping and
|
|
48
86
|
// keeps timeout isolation per rule-file pair.
|
|
49
87
|
const byFile = new Map();
|
|
50
88
|
for (const addition of additions) {
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
89
|
+
// Prop 310 § Design 7 — the two-array scope rule for record-path rules,
|
|
90
|
+
// the shipped `fileMatchesGlobs` predicate for every legacy rule. This
|
|
91
|
+
// dispatcher is the one `totem lint` uses for regex rules, so without the
|
|
92
|
+
// shared predicate a record rule's `excludeGlobs` would be ignored here
|
|
93
|
+
// and its `*.ts` silently promoted tree-wide — the scope WIDENING the
|
|
94
|
+
// grammar exists to prevent (falsification round, 2026-08-21).
|
|
95
|
+
if (!ruleAppliesToFile(rule, addition.file))
|
|
96
|
+
continue;
|
|
55
97
|
const bucket = byFile.get(addition.file) ?? [];
|
|
56
98
|
bucket.push(addition);
|
|
57
99
|
byFile.set(addition.file, bucket);
|
|
@@ -90,6 +132,18 @@ export async function applyRulesToAdditionsBounded(ctx, rules, additions, option
|
|
|
90
132
|
const addition = fileAdditions[matchedIndex];
|
|
91
133
|
if (!addition)
|
|
92
134
|
continue;
|
|
135
|
+
// Prop 310 § Design 8 — pass two, ahead of every other per-match check:
|
|
136
|
+
// the requirement is part of the MATCH PREDICATE, so a locus whose
|
|
137
|
+
// required context is present is not a match at all and emits neither a
|
|
138
|
+
// violation nor a `suppress` event. The file text is resolved here rather
|
|
139
|
+
// than lazily because this dispatcher is async and `requiresSuppressesMatch`
|
|
140
|
+
// is a pure sync predicate; `line` scope never triggers the read.
|
|
141
|
+
if (rule.requires !== undefined) {
|
|
142
|
+
const fileText = rule.requires.scope === 'file' ? await getFileText(file) : null;
|
|
143
|
+
if (requiresSuppressesMatch(rule, { line: addition.line, file: () => fileText })) {
|
|
144
|
+
continue;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
93
147
|
// Exempt matches inside inline Rust test modules for production-only Rust rules
|
|
94
148
|
if (isProductionRustRule(rule)) {
|
|
95
149
|
const spans = await getRustSpans(file);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apply-rules-bounded.js","sourceRoot":"","sources":["../../src/regex-safety/apply-rules-bounded.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAQlC,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EACL,oBAAoB,EACpB,gBAAgB,EAChB,oBAAoB,EACpB,YAAY,GAEb,MAAM,mBAAmB,CAAC;AAC3B,OAAO,
|
|
1
|
+
{"version":3,"file":"apply-rules-bounded.js","sourceRoot":"","sources":["../../src/regex-safety/apply-rules-bounded.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { RegexValidation } from './compiler-schema.js';
|
|
2
|
+
/**
|
|
3
|
+
* Validate that a pattern string is a syntactically valid RegExp
|
|
4
|
+
* and is not vulnerable to ReDoS (catastrophic backtracking).
|
|
5
|
+
*/
|
|
6
|
+
export declare function validateRegex(pattern: string): RegexValidation;
|
|
7
|
+
//# sourceMappingURL=regex-validation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"regex-validation.d.ts","sourceRoot":"","sources":["../src/regex-validation.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAE5D;;;GAGG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,eAAe,CAa9D"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
// ─── The safe-regex2 gate, as an import-graph LEAF ───────────────────────────
|
|
2
|
+
//
|
|
3
|
+
// `validateRegex` was defined in `compiler.ts` and is still re-exported from
|
|
4
|
+
// there, so every shipped consumer's import is unchanged. It lives here because
|
|
5
|
+
// `compiler.ts` imports `rule-engine.ts`, and the rule engine now needs this
|
|
6
|
+
// gate at dispatcher altitude (Prop 310 § Design 8's runtime `requires.pattern`
|
|
7
|
+
// check) — importing it back out of `compiler.ts` would close a cycle
|
|
8
|
+
// (`rule-engine` → `spine/record-runtime` → `compiler` → `rule-engine`).
|
|
9
|
+
//
|
|
10
|
+
// This module imports only `safe-regex2` and a type, so it can be pulled from
|
|
11
|
+
// anywhere. Moving the function rather than duplicating the check is the point:
|
|
12
|
+
// the compile gate and the runtime gate MUST be the same predicate, or a pattern
|
|
13
|
+
// the compiler refuses becomes one the runtime happily executes.
|
|
14
|
+
import safeRegex from 'safe-regex2';
|
|
15
|
+
/**
|
|
16
|
+
* Validate that a pattern string is a syntactically valid RegExp
|
|
17
|
+
* and is not vulnerable to ReDoS (catastrophic backtracking).
|
|
18
|
+
*/
|
|
19
|
+
export function validateRegex(pattern) {
|
|
20
|
+
try {
|
|
21
|
+
new RegExp(pattern);
|
|
22
|
+
// totem-context: not a swallow — the failure is REPORTED as this function's return value (`{valid:false}`), which every caller checks and fails loud on. Converting the throw into a checked result is the whole contract; re-throwing would make the gate uncallable as a predicate. Byte-identical to the pre-existing `compiler.ts` implementation this moved from.
|
|
23
|
+
}
|
|
24
|
+
catch {
|
|
25
|
+
return { valid: false, reason: 'invalid syntax' };
|
|
26
|
+
}
|
|
27
|
+
if (!safeRegex(pattern)) {
|
|
28
|
+
return { valid: false, reason: 'ReDoS vulnerability detected' };
|
|
29
|
+
}
|
|
30
|
+
return { valid: true };
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=regex-validation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"regex-validation.js","sourceRoot":"","sources":["../src/regex-validation.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,EAAE;AACF,6EAA6E;AAC7E,gFAAgF;AAChF,6EAA6E;AAC7E,gFAAgF;AAChF,sEAAsE;AACtE,yEAAyE;AACzE,EAAE;AACF,8EAA8E;AAC9E,gFAAgF;AAChF,iFAAiF;AACjF,iEAAiE;AAEjE,OAAO,SAAS,MAAM,aAAa,CAAC;AAIpC;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,OAAe;IAC3C,IAAI,CAAC;QACH,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC;QACpB,uWAAuW;IACzW,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC;IACpD,CAAC;IAED,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;QACxB,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,8BAA8B,EAAE,CAAC;IAClE,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AACzB,CAAC"}
|
package/dist/rule-engine.d.ts
CHANGED
|
@@ -72,9 +72,19 @@ export declare function parseFailSoftAttestation(justification: string): FailSof
|
|
|
72
72
|
* on trigger / suppress / failure events.
|
|
73
73
|
* @param workingDirectory - Optional working directory for resolving files on disk
|
|
74
74
|
* when parsing spans.
|
|
75
|
+
* @param readFileText - Optional SYNC reader for whole-file content, consulted
|
|
76
|
+
* only by a Prop 310 `requires: {scope: file}` check. Returns `null` when the
|
|
77
|
+
* file cannot be resolved; when omitted, the disk is read directly.
|
|
78
|
+
*
|
|
79
|
+
* SYNC, unlike the ast path's async `readStrategy`, because this function is
|
|
80
|
+
* synchronous and four shipped callers depend on that. The async staged reader
|
|
81
|
+
* is threaded instead through `applyRulesToAdditionsBounded`, which is the
|
|
82
|
+
* dispatcher `totem lint` actually uses for regex rules and is already async —
|
|
83
|
+
* so the staged guarantee lands where staged mode exists (falsification round,
|
|
84
|
+
* 2026-08-21).
|
|
75
85
|
* @returns All regex-based violations found.
|
|
76
86
|
*/
|
|
77
|
-
export declare function applyRulesToAdditions(ctx: RuleEngineContext, rules: CompiledRule[], additions: DiffAddition[], onRuleEvent?: RuleEventCallback, workingDirectory?: string): Violation[];
|
|
87
|
+
export declare function applyRulesToAdditions(ctx: RuleEngineContext, rules: CompiledRule[], additions: DiffAddition[], onRuleEvent?: RuleEventCallback, workingDirectory?: string, readFileText?: (filePath: string) => string | null): Violation[];
|
|
78
88
|
/**
|
|
79
89
|
* Apply AST-engine compiled rules against pre-extracted diff additions.
|
|
80
90
|
* Handles both Tree-sitter S-expression ('ast') and ast-grep ('ast-grep') engines.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rule-engine.d.ts","sourceRoot":"","sources":["../src/rule-engine.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EACV,YAAY,EACZ,YAAY,EACZ,mBAAmB,EACnB,iBAAiB,EACjB,SAAS,EACV,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"rule-engine.d.ts","sourceRoot":"","sources":["../src/rule-engine.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EACV,YAAY,EACZ,YAAY,EACZ,mBAAmB,EACnB,iBAAiB,EACjB,SAAS,EACV,MAAM,sBAAsB,CAAC;AAe9B,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE9D,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,CAAC;AAEzC;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAkBhE;AAgCD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,EAAE,CAiN1F;AAWD,sDAAsD;AACtD,MAAM,WAAW,UAAU;IACzB,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,UAAU,CAAC;IACnB,KAAK,EAAE;QAAE,sBAAsB,EAAE,OAAO,CAAA;KAAE,CAAC;CAC5C;AA0CD,wBAAgB,YAAY,CAC1B,GAAG,EAAE,iBAAiB,EACtB,IAAI,EAAE,MAAM,EACZ,aAAa,EAAE,MAAM,GAAG,IAAI,GAC3B,OAAO,CAeT;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,iBAAiB,EACtB,IAAI,EAAE,MAAM,EACZ,aAAa,EAAE,MAAM,GAAG,IAAI,GAC3B,MAAM,CAaR;AAiBD;;;;;;;;GAQG;AACH,wBAAgB,wBAAwB,CAAC,aAAa,EAAE,MAAM,GAAG,mBAAmB,GAAG,IAAI,CAK1F;AAwGD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,iBAAiB,EACtB,KAAK,EAAE,YAAY,EAAE,EACrB,SAAS,EAAE,YAAY,EAAE,EACzB,WAAW,CAAC,EAAE,iBAAiB,EAC/B,gBAAgB,CAAC,EAAE,MAAM,EACzB,YAAY,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,GACjD,SAAS,EAAE,CAqKb;AAID;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAsB,wBAAwB,CAC5C,GAAG,EAAE,iBAAiB,EACtB,KAAK,EAAE,YAAY,EAAE,EACrB,SAAS,EAAE,YAAY,EAAE,EACzB,gBAAgB,EAAE,MAAM,EACxB,WAAW,CAAC,EAAE,iBAAiB,EAC/B,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,EAC9B,YAAY,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,GAC1D,OAAO,CAAC,SAAS,EAAE,CAAC,CAsWtB;AAID;;;;;;;;;;GAUG;AACH,wBAAgB,UAAU,CACxB,GAAG,EAAE,iBAAiB,EACtB,KAAK,EAAE,YAAY,EAAE,EACrB,IAAI,EAAE,MAAM,EACZ,YAAY,CAAC,EAAE,MAAM,EAAE,GACtB,SAAS,EAAE,CAUb"}
|
package/dist/rule-engine.js
CHANGED
|
@@ -5,6 +5,10 @@ import { matchAstGrepPatternsBatch } from './ast-grep-query.js';
|
|
|
5
5
|
import { matchAstQueriesBatch } from './ast-query.js';
|
|
6
6
|
import { extractAddedLines } from './diff-parser.js';
|
|
7
7
|
import { TotemParseError } from './errors.js';
|
|
8
|
+
// Prop 310 slice 2 — the record-grammar runtime semantics (§ Design 7 two-array
|
|
9
|
+
// scope, § Design 8 `requires` two-pass). Every entry point is gated on
|
|
10
|
+
// `isRecordPathRule`, so the legacy corpus's matching is untouched.
|
|
11
|
+
import { assertNoAstGrepLineScope, assertNoTornRecordRules, assertRequiresPatternsSafe, isInsideRoot, requiresSuppressesMatch, ruleAppliesToFile, } from './spine/record-runtime.js';
|
|
8
12
|
import { detectStaleManifest, staleManifestError } from './stale-manifest.js';
|
|
9
13
|
import { fileMatchesGlobs, matchesGlob } from './sys/glob.js';
|
|
10
14
|
export { fileMatchesGlobs, matchesGlob };
|
|
@@ -469,11 +473,27 @@ function resolveAstMatchSuppression(ctx, match, addition) {
|
|
|
469
473
|
* on trigger / suppress / failure events.
|
|
470
474
|
* @param workingDirectory - Optional working directory for resolving files on disk
|
|
471
475
|
* when parsing spans.
|
|
476
|
+
* @param readFileText - Optional SYNC reader for whole-file content, consulted
|
|
477
|
+
* only by a Prop 310 `requires: {scope: file}` check. Returns `null` when the
|
|
478
|
+
* file cannot be resolved; when omitted, the disk is read directly.
|
|
479
|
+
*
|
|
480
|
+
* SYNC, unlike the ast path's async `readStrategy`, because this function is
|
|
481
|
+
* synchronous and four shipped callers depend on that. The async staged reader
|
|
482
|
+
* is threaded instead through `applyRulesToAdditionsBounded`, which is the
|
|
483
|
+
* dispatcher `totem lint` actually uses for regex rules and is already async —
|
|
484
|
+
* so the staged guarantee lands where staged mode exists (falsification round,
|
|
485
|
+
* 2026-08-21).
|
|
472
486
|
* @returns All regex-based violations found.
|
|
473
487
|
*/
|
|
474
|
-
export function applyRulesToAdditions(ctx, rules, additions, onRuleEvent, workingDirectory) {
|
|
488
|
+
export function applyRulesToAdditions(ctx, rules, additions, onRuleEvent, workingDirectory, readFileText) {
|
|
475
489
|
if (additions.length === 0 || rules.length === 0)
|
|
476
490
|
return [];
|
|
491
|
+
// Prop 310 § Design 12 — a rule that is neither classifiable as a record nor
|
|
492
|
+
// as legacy is a torn manifest; fail loud rather than drop its constructs.
|
|
493
|
+
// § Design 8 — and no `requires.pattern` is executed before it clears the same
|
|
494
|
+
// safe-regex2 gate the compile path applies.
|
|
495
|
+
assertNoTornRecordRules(rules);
|
|
496
|
+
assertRequiresPatternsSafe(rules);
|
|
477
497
|
const violations = [];
|
|
478
498
|
// Only process regex-engine rules — AST rules have pattern: '' which would match everything
|
|
479
499
|
const regexRules = rules.filter((r) => r.engine === 'regex' || !r.engine);
|
|
@@ -494,6 +514,44 @@ export function applyRulesToAdditions(ctx, rules, additions, onRuleEvent, workin
|
|
|
494
514
|
return [];
|
|
495
515
|
}
|
|
496
516
|
};
|
|
517
|
+
// Prop 310 § Design 8 — whole-file text for a `requires: {scope: file}` check.
|
|
518
|
+
// Memoized per invocation, and reached ONLY when a record-path rule with a
|
|
519
|
+
// file-scoped requirement has already matched its target: no legacy rule
|
|
520
|
+
// carries `requires`, so this adds zero IO to the shipped path.
|
|
521
|
+
//
|
|
522
|
+
// `readFileText` (when supplied) is what makes the check see the SAME bytes the
|
|
523
|
+
// rest of the lint is judging. Reading the worktree while the caller is judging
|
|
524
|
+
// the index is FAIL-OPEN in the direction that matters: a required context
|
|
525
|
+
// deleted in the staged edit but still present on disk would satisfy the
|
|
526
|
+
// requirement and silence a real staged violation.
|
|
527
|
+
const fileTextCache = new Map();
|
|
528
|
+
const getFileTextSync = (file, workDir) => {
|
|
529
|
+
const cached = fileTextCache.get(file);
|
|
530
|
+
if (cached !== undefined || fileTextCache.has(file))
|
|
531
|
+
return cached ?? null;
|
|
532
|
+
let text = null;
|
|
533
|
+
if (readFileText) {
|
|
534
|
+
// DELIBERATELY unwrapped: the caller's reader owns its own failure
|
|
535
|
+
// contract (a staged reader throws so an unreadable index entry surfaces
|
|
536
|
+
// rather than degrading quietly). A reader that means "absent" returns
|
|
537
|
+
// `null`, which is handled below.
|
|
538
|
+
text = readFileText(file);
|
|
539
|
+
}
|
|
540
|
+
else if (isInsideRoot(workDir, file)) {
|
|
541
|
+
try {
|
|
542
|
+
text = fs.readFileSync(path.resolve(workDir, file), 'utf-8');
|
|
543
|
+
// totem-context: read failure yields no required-context evidence → the requirement is UNMET → the rule still FIRES; like the span exemption above, this fails toward flagging, never toward suppression.
|
|
544
|
+
}
|
|
545
|
+
catch {
|
|
546
|
+
text = null;
|
|
547
|
+
}
|
|
548
|
+
}
|
|
549
|
+
// An out-of-root path falls through with `text === null` — treated as
|
|
550
|
+
// unreadable, so the requirement is unmet and the rule FIRES. Same direction
|
|
551
|
+
// as a read failure; see `isInsideRoot`.
|
|
552
|
+
fileTextCache.set(file, text);
|
|
553
|
+
return text;
|
|
554
|
+
};
|
|
497
555
|
for (const rule of regexRules) {
|
|
498
556
|
let re;
|
|
499
557
|
try {
|
|
@@ -511,10 +569,25 @@ export function applyRulesToAdditions(ctx, rules, additions, onRuleEvent, workin
|
|
|
511
569
|
throw new TotemParseError(`Rule ${rule.lessonHash} has an invalid regex pattern and cannot be evaluated.`, `Re-run 'totem lesson compile' to regenerate the rule, or archive it via 'totem doctor --pr' if the source lesson cannot produce a valid pattern. Pattern: ${JSON.stringify(rule.pattern)}`, err);
|
|
512
570
|
}
|
|
513
571
|
for (const addition of additions) {
|
|
514
|
-
//
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
572
|
+
// Scope: Prop 310 § Design 7's two-array rule for record-path rules
|
|
573
|
+
// (`positiveMatch && !excludeMatch` under the normative dialect), the
|
|
574
|
+
// shipped `fileMatchesGlobs` predicate — including its unscoped-rule
|
|
575
|
+
// include-everything behaviour — for every legacy rule.
|
|
576
|
+
if (!ruleAppliesToFile(rule, addition.file))
|
|
577
|
+
continue;
|
|
578
|
+
// Prop 310 § Design 8 — pass two. The requirement is part of the MATCH
|
|
579
|
+
// PREDICATE (the rule fires iff the target matched AND the required
|
|
580
|
+
// context is absent), so it is evaluated BEFORE suppression and before any
|
|
581
|
+
// telemetry: a locus whose required context is PRESENT is not a match at
|
|
582
|
+
// all, and must emit neither a violation nor a `suppress` event. Guarded on
|
|
583
|
+
// `rule.requires` so no legacy rule pays the second `re.test`.
|
|
584
|
+
if (rule.requires !== undefined &&
|
|
585
|
+
re.test(addition.line) &&
|
|
586
|
+
requiresSuppressesMatch(rule, {
|
|
587
|
+
line: addition.line,
|
|
588
|
+
file: () => getFileTextSync(addition.file, workingDirectory || process.cwd()),
|
|
589
|
+
})) {
|
|
590
|
+
continue;
|
|
518
591
|
}
|
|
519
592
|
// Skip if suppressed via inline directive
|
|
520
593
|
if (isSuppressed(ctx, addition.line, addition.precedingLine)) {
|
|
@@ -588,6 +661,12 @@ export function applyRulesToAdditions(ctx, rules, additions, onRuleEvent, workin
|
|
|
588
661
|
* @returns All AST-based violations found.
|
|
589
662
|
*/
|
|
590
663
|
export async function applyAstRulesToAdditions(ctx, rules, additions, workingDirectory, onRuleEvent, onWarn, readStrategy) {
|
|
664
|
+
// Prop 310 § Design 12 / § Design 8 — torn-manifest guard, the safe-regex2
|
|
665
|
+
// gate, and the ast-grep span-vs-line backstop, all at the same altitude as the
|
|
666
|
+
// tree-sitter `requires` backstop below.
|
|
667
|
+
assertNoTornRecordRules(rules);
|
|
668
|
+
assertRequiresPatternsSafe(rules);
|
|
669
|
+
assertNoAstGrepLineScope(rules);
|
|
591
670
|
const treeSitterRules = rules.filter((r) => r.engine === 'ast' && r.astQuery);
|
|
592
671
|
// Widen to include compound rules (mmnto/totem#1408). A rule is runnable
|
|
593
672
|
// when EITHER `astGrepPattern` (string) or `astGrepYamlRule` (NapiConfig
|
|
@@ -595,6 +674,23 @@ export async function applyAstRulesToAdditions(ctx, rules, additions, workingDir
|
|
|
595
674
|
// CompiledRuleSchema guarantees these do not coexist, so the per-rule
|
|
596
675
|
// dispatch below can safely use an if/else on presence alone.
|
|
597
676
|
const astGrepRules = rules.filter((r) => r.engine === 'ast-grep' && (r.astGrepPattern || r.astGrepYamlRule));
|
|
677
|
+
// Prop 310 § Design 8 / § Design 12 — `requires` has no evaluator on the
|
|
678
|
+
// tree-sitter branch, and leaving it unevaluated would be exactly the
|
|
679
|
+
// accept-then-silently-drop class § Design 12 bans. UNREACHABLE from the record
|
|
680
|
+
// path by construction (the V1 authoring enum is `ast-grep | regex`; `ast` is
|
|
681
|
+
// dropped per § Design 6/R16) and unreachable from the legacy corpus (no
|
|
682
|
+
// compiled rule carries `requires` — pinned by the byte-identity guard), so
|
|
683
|
+
// this is a fail-loud backstop against a hand-edited manifest, never a path a
|
|
684
|
+
// well-formed pipeline can take.
|
|
685
|
+
// Searched over ALL rules, not over `treeSitterRules` — that list is already
|
|
686
|
+
// filtered on `astQuery` being present, so a hand-edited `{engine: 'ast',
|
|
687
|
+
// requires, no astQuery}` rule would slip past the throw and have its
|
|
688
|
+
// `requires` silently unevaluated, which is precisely the hole this backstop
|
|
689
|
+
// exists to close (falsification round, 2026-08-21).
|
|
690
|
+
const treeSitterWithRequires = rules.find((r) => r.engine === 'ast' && r.requires !== undefined);
|
|
691
|
+
if (treeSitterWithRequires) {
|
|
692
|
+
throw new TotemParseError(`Rule ${treeSitterWithRequires.lessonHash} (${treeSitterWithRequires.lessonHeading}) carries a \`requires\` block on the tree-sitter ('ast') engine, which has no two-pass evaluator.`, "Prop 310 § Design 6 drops 'ast' from the V1 authoring surface, so no rule record can produce this combination — the manifest was hand-edited or written by a bypassed producer. Re-compile the rule, or move it to the 'regex' or 'ast-grep' engine where `requires` is evaluated.");
|
|
693
|
+
}
|
|
598
694
|
if ((treeSitterRules.length === 0 && astGrepRules.length === 0) || additions.length === 0) {
|
|
599
695
|
return [];
|
|
600
696
|
}
|
|
@@ -627,7 +723,13 @@ export async function applyAstRulesToAdditions(ctx, rules, additions, workingDir
|
|
|
627
723
|
// mechanism for adding language support.
|
|
628
724
|
const ext = path.extname(file);
|
|
629
725
|
if (!extensionToLanguage(ext)) {
|
|
630
|
-
|
|
726
|
+
// The `fileGlobs.length > 0` prefix is load-bearing and NOT folded into
|
|
727
|
+
// `ruleAppliesToFile`: an UNSCOPED rule must not trigger this fail-loud
|
|
728
|
+
// guard (no rule cares about the file ⇒ a silent skip is correct), while
|
|
729
|
+
// `ruleAppliesToFile` answers "does this rule apply", for which an unscoped
|
|
730
|
+
// rule applies everywhere. Record-path rules always carry ≥1 glob (min-1 at
|
|
731
|
+
// parse), so the prefix never excludes one.
|
|
732
|
+
const ruleExpectingThisFile = allAstRules.find((r) => r.fileGlobs && r.fileGlobs.length > 0 && ruleAppliesToFile(r, file));
|
|
631
733
|
if (ruleExpectingThisFile) {
|
|
632
734
|
// mmnto-ai/totem#1811 (ADR-101): before re-throwing the raw
|
|
633
735
|
// Tree-sitter language-miss error, check whether the user is
|
|
@@ -665,12 +767,7 @@ export async function applyAstRulesToAdditions(ctx, rules, additions, workingDir
|
|
|
665
767
|
continue;
|
|
666
768
|
// ── Tree-sitter S-expression rules ────────────────
|
|
667
769
|
if (treeSitterRules.length > 0) {
|
|
668
|
-
const applicableTreeSitter = treeSitterRules.filter((rule) =>
|
|
669
|
-
if (rule.fileGlobs && rule.fileGlobs.length > 0) {
|
|
670
|
-
return fileMatchesGlobs(file, rule.fileGlobs);
|
|
671
|
-
}
|
|
672
|
-
return true;
|
|
673
|
-
});
|
|
770
|
+
const applicableTreeSitter = treeSitterRules.filter((rule) => ruleAppliesToFile(rule, file));
|
|
674
771
|
if (applicableTreeSitter.length > 0) {
|
|
675
772
|
// Path containment check — prevent traversal outside the project.
|
|
676
773
|
// Uses path.relative() instead of startsWith() to avoid sibling-directory bypass
|
|
@@ -753,12 +850,7 @@ export async function applyAstRulesToAdditions(ctx, rules, additions, workingDir
|
|
|
753
850
|
}
|
|
754
851
|
// ── ast-grep structural pattern rules ─────────────
|
|
755
852
|
if (astGrepRules.length > 0) {
|
|
756
|
-
const applicableAstGrep = astGrepRules.filter((rule) =>
|
|
757
|
-
if (rule.fileGlobs && rule.fileGlobs.length > 0) {
|
|
758
|
-
return fileMatchesGlobs(file, rule.fileGlobs);
|
|
759
|
-
}
|
|
760
|
-
return true;
|
|
761
|
-
});
|
|
853
|
+
const applicableAstGrep = astGrepRules.filter((rule) => ruleAppliesToFile(rule, file));
|
|
762
854
|
if (applicableAstGrep.length > 0) {
|
|
763
855
|
// Read file content once for all ast-grep rules on this file
|
|
764
856
|
let content = null;
|
|
@@ -785,6 +877,9 @@ export async function applyAstRulesToAdditions(ctx, rules, additions, workingDir
|
|
|
785
877
|
// Fall through — content stays null for standard file read failures
|
|
786
878
|
}
|
|
787
879
|
if (content) {
|
|
880
|
+
// Bound once so the § Design 8 `file`-scope resolver below closes over a
|
|
881
|
+
// narrowed `string` rather than the outer `string | null` binding.
|
|
882
|
+
const fileText = content;
|
|
788
883
|
// Batch: parse file once, run all patterns.
|
|
789
884
|
// Each rule carries either astGrepPattern (string) or astGrepYamlRule
|
|
790
885
|
// (NapiConfig object); the batch helper polymorphically dispatches on
|
|
@@ -815,6 +910,18 @@ export async function applyAstRulesToAdditions(ctx, rules, additions, workingDir
|
|
|
815
910
|
const rule = applicableAstGrep[i];
|
|
816
911
|
const matches = batchResults[i] ?? [];
|
|
817
912
|
for (const match of matches) {
|
|
913
|
+
// Prop 310 § Design 8 — pass two, ahead of every other per-match
|
|
914
|
+
// check for the same reason as the regex path: a locus whose
|
|
915
|
+
// required context is PRESENT is not a match, so it emits neither a
|
|
916
|
+
// violation nor a `suppress` event. The requirement is a REGEX
|
|
917
|
+
// evaluated textually even here — § Design 8 makes it independent of
|
|
918
|
+
// the target engine ("a context check, not a second matcher").
|
|
919
|
+
if (requiresSuppressesMatch(rule, {
|
|
920
|
+
line: match.lineText,
|
|
921
|
+
file: () => fileText,
|
|
922
|
+
})) {
|
|
923
|
+
continue;
|
|
924
|
+
}
|
|
818
925
|
// Exempt matches inside inline Rust test modules (#2397).
|
|
819
926
|
if (isProductionRustRule(rule) &&
|
|
820
927
|
astGrepRustSpans.some((s) => match.lineNumber >= s.startLine && match.lineNumber <= s.endLine)) {
|