@intutic/gate 2.9.1 → 3.0.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/actions.d.ts +39 -0
- package/dist/actions.d.ts.map +1 -1
- package/dist/actions.js +139 -0
- package/dist/actions.js.map +1 -1
- package/dist/client.d.ts +10 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +19 -0
- package/dist/client.js.map +1 -1
- package/dist/decide.d.ts +269 -0
- package/dist/decide.d.ts.map +1 -0
- package/dist/decide.js +757 -0
- package/dist/decide.js.map +1 -0
- package/dist/decideApi.d.ts +24 -0
- package/dist/decideApi.d.ts.map +1 -0
- package/dist/decideApi.js +32 -0
- package/dist/decideApi.js.map +1 -0
- package/dist/decideEngine.d.ts +195 -0
- package/dist/decideEngine.d.ts.map +1 -0
- package/dist/decideEngine.js +707 -0
- package/dist/decideEngine.js.map +1 -0
- package/dist/decideEvaluate.d.ts +250 -0
- package/dist/decideEvaluate.d.ts.map +1 -0
- package/dist/decideEvaluate.js +504 -0
- package/dist/decideEvaluate.js.map +1 -0
- package/dist/decideHostGuard.d.ts +56 -0
- package/dist/decideHostGuard.d.ts.map +1 -0
- package/dist/decideHostGuard.js +194 -0
- package/dist/decideHostGuard.js.map +1 -0
- package/dist/decideLog.d.ts +287 -0
- package/dist/decideLog.d.ts.map +1 -0
- package/dist/decideLog.js +521 -0
- package/dist/decideLog.js.map +1 -0
- package/dist/decideLogRedaction.d.ts +17 -0
- package/dist/decideLogRedaction.d.ts.map +1 -0
- package/dist/decideLogRedaction.js +33 -0
- package/dist/decideLogRedaction.js.map +1 -0
- package/dist/decideRecord.d.ts +128 -0
- package/dist/decideRecord.d.ts.map +1 -0
- package/dist/decideRecord.js +254 -0
- package/dist/decideRecord.js.map +1 -0
- package/dist/decideSdk.d.ts +86 -0
- package/dist/decideSdk.d.ts.map +1 -0
- package/dist/decideSdk.js +146 -0
- package/dist/decideSdk.js.map +1 -0
- package/dist/dsh.d.ts.map +1 -1
- package/dist/dsh.js +6 -1
- package/dist/dsh.js.map +1 -1
- package/dist/errors.d.ts +26 -2
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +38 -1
- package/dist/errors.js.map +1 -1
- package/dist/gate.d.ts +85 -1
- package/dist/gate.d.ts.map +1 -1
- package/dist/gate.js +314 -18
- package/dist/gate.js.map +1 -1
- package/dist/gateRuleRecord.d.ts +244 -0
- package/dist/gateRuleRecord.d.ts.map +1 -0
- package/dist/gateRuleRecord.js +459 -0
- package/dist/gateRuleRecord.js.map +1 -0
- package/dist/harness.d.ts.map +1 -1
- package/dist/harness.js +22 -10
- package/dist/harness.js.map +1 -1
- package/dist/index.d.ts +14 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -3
- package/dist/index.js.map +1 -1
- package/dist/lanes.d.ts +94 -0
- package/dist/lanes.d.ts.map +1 -0
- package/dist/lanes.js +150 -0
- package/dist/lanes.js.map +1 -0
- package/dist/limits.d.ts +6 -0
- package/dist/limits.d.ts.map +1 -1
- package/dist/limits.js +6 -0
- package/dist/limits.js.map +1 -1
- package/dist/refusalDetail.d.ts +58 -0
- package/dist/refusalDetail.d.ts.map +1 -0
- package/dist/refusalDetail.js +121 -0
- package/dist/refusalDetail.js.map +1 -0
- package/dist/scopeMatch.d.ts +156 -0
- package/dist/scopeMatch.d.ts.map +1 -0
- package/dist/scopeMatch.js +438 -0
- package/dist/scopeMatch.js.map +1 -0
- package/dist/snapshot.d.ts +51 -3
- package/dist/snapshot.d.ts.map +1 -1
- package/dist/snapshot.js +86 -13
- package/dist/snapshot.js.map +1 -1
- package/dist/testOutcome.d.ts +164 -0
- package/dist/testOutcome.d.ts.map +1 -0
- package/dist/testOutcome.js +439 -0
- package/dist/testOutcome.js.map +1 -0
- package/dist/wrapTools.d.ts +7 -1
- package/dist/wrapTools.d.ts.map +1 -1
- package/dist/wrapTools.js +30 -2
- package/dist/wrapTools.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,459 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Rule records in the policy snapshot: the `@rule` record, its
|
|
3
|
+
* fallback line, and how a gate that reads it decides a call (Tier R).
|
|
4
|
+
*
|
|
5
|
+
* A gate that cannot evaluate a rule must refuse what the rule covers, never
|
|
6
|
+
* skip it. So for each rule a gate is to enforce, the snapshot writer emits
|
|
7
|
+
* two lines inside the digest, as the decide records do:
|
|
8
|
+
*
|
|
9
|
+
* - an `@rule` record of five tab-separated columns: the tag, the fallback
|
|
10
|
+
* line's id or `-`, the kind, the rollout (`shadow` or `enforce`), and
|
|
11
|
+
* base64 of the canonical JSON of its payload, `{v, ref, sopTitle, …kind
|
|
12
|
+
* fields}`. Every reader up to v22 needs six
|
|
13
|
+
* columns for a rule, so it skips the record;
|
|
14
|
+
* - for an enforcing record, a fallback line: an ordinary `block` rule whose
|
|
15
|
+
* id is `<kind>-fallback:<n>@<sha256(sopId)[:12]>`
|
|
16
|
+
* ({@link gateRuleFallbackId}), on what the rule covers
|
|
17
|
+
* ({@link gateRuleFallback}). A gate that reads `@rule` records skips a
|
|
18
|
+
* fallback line only when a record that decodes names it.
|
|
19
|
+
*
|
|
20
|
+
* A snapshot with any `@rule` record is written in format 3
|
|
21
|
+
* ({@link RULE_SNAPSHOT_FORMAT}). Kinds in this batch:
|
|
22
|
+
*
|
|
23
|
+
* | Kind | From | Gate decision |
|
|
24
|
+
* |---|---|---|
|
|
25
|
+
* | `requires_outcome` | `requires_before: action:run_tests[ok] -> X` | X refused `PREREQUISITE_UNMET` unless the latest test run in the session passed |
|
|
26
|
+
* | `scope_paths` | `scope_paths:` with `scope_paths_mode: enforce` | a file change outside the scope refused `OUT_OF_SCOPE` |
|
|
27
|
+
* | `plan_approval` | `plan_approval: required\|strict` | refused `PLAN_NOT_APPROVED` until the session's plan is approved; under `strict`, a tool not in the plan refused `OFF_PLAN` |
|
|
28
|
+
*
|
|
29
|
+
* Only SOPs with no `roles:` compile: a gate knows no agent role.
|
|
30
|
+
*
|
|
31
|
+
* Self-contained but for `./testOutcome.ts`, `./scopeMatch.ts`, `./lanes.ts`
|
|
32
|
+
* and `./phrases.ts` (all carried by `@intutic/gate` as byte-identical
|
|
33
|
+
* copies), so `@intutic/gate` keeps a byte-identical copy of this file too.
|
|
34
|
+
* The Python port is `intutic_clawde/gate/rule_record.py`; both run
|
|
35
|
+
* `fixtures/rule-record-vectors.json`.
|
|
36
|
+
*
|
|
37
|
+
* @module
|
|
38
|
+
*/
|
|
39
|
+
import { LANE_PHRASES } from './lanes.js';
|
|
40
|
+
import { changeTargets, isPlanExemptTool, isWithinScope, scopeRelativePath, SCOPE_DELETE_TOOLS, SCOPE_EDIT_TOOLS, SCOPE_EDITOR_TOOLS, SCOPE_MOVE_TOOLS, SCOPE_SHELL_TOOLS, SCOPE_WRITE_TOOLS } from './scopeMatch.js';
|
|
41
|
+
import { prerequisiteCase, prerequisiteUnmetReason } from './testOutcome.js';
|
|
42
|
+
/** First column of a rule record. */
|
|
43
|
+
export const RULE_RECORD_TAG = '@rule';
|
|
44
|
+
/** The snapshot format a snapshot carrying any rule record is written in. */
|
|
45
|
+
export const RULE_SNAPSHOT_FORMAT = 3;
|
|
46
|
+
/** The longest SOP title a record carries, in code points. */
|
|
47
|
+
export const RULE_SOP_TITLE_MAX_CHARS = 80;
|
|
48
|
+
/** The most scope paths one record carries, and the longest of them in code points. */
|
|
49
|
+
export const RULE_SCOPE_PATHS_MAX = 64;
|
|
50
|
+
export const RULE_SCOPE_PATH_MAX_CHARS = 512;
|
|
51
|
+
export const GATE_RULE_KINDS = ['requires_outcome', 'scope_paths', 'plan_approval'];
|
|
52
|
+
/** The four action tokens a v22 hook gate's classifier knows: a fallback on one of them can use the `action` subject. */
|
|
53
|
+
export const V22_ACTION_TOKENS = ['action:deploy', 'action:publish', 'action:release', 'action:db_write'];
|
|
54
|
+
/**
|
|
55
|
+
* The fields of each kind's payload, sorted: `{v, ref, sopTitle, …kind
|
|
56
|
+
* fields}`. The kind, the fallback id and the rollout are columns 3, 2 and 4,
|
|
57
|
+
* not payload fields. Any other field refuses the record.
|
|
58
|
+
*/
|
|
59
|
+
const RULE_RECORD_FIELDS = {
|
|
60
|
+
requires_outcome: ['adjacent', 'first', 'qualifier', 'ref', 'sopTitle', 'then', 'v'],
|
|
61
|
+
scope_paths: ['ref', 'scopePaths', 'sopTitle', 'v'],
|
|
62
|
+
plan_approval: ['mode', 'ref', 'sopTitle', 'v'],
|
|
63
|
+
};
|
|
64
|
+
/** `ref`: `<sopId>#<kind>:<n>`. */
|
|
65
|
+
export function gateRuleRef(sopId, kind, n) {
|
|
66
|
+
return sopId + '#' + kind + ':' + n;
|
|
67
|
+
}
|
|
68
|
+
/** `fallbackId`: `<kind>-fallback:<n>@<first 12 hex of sha256(sopId)>`. */
|
|
69
|
+
export function gateRuleFallbackId(kind, n, sopId, sha256Hex) {
|
|
70
|
+
return kind + '-fallback:' + n + '@' + sha256Hex(sopId).slice(0, 12);
|
|
71
|
+
}
|
|
72
|
+
/** What an older gate says when a rule's fallback line refuses. The writer scrubs and bounds it like any reason. */
|
|
73
|
+
export function gateRuleFallbackReason(kind, sopTitle) {
|
|
74
|
+
if (kind === 'requires_outcome')
|
|
75
|
+
return 'Qualified requires_before (' + sopTitle + '): this gate cannot read test results, so the call it gates is refused; upgrade the Intutic gate';
|
|
76
|
+
if (kind === 'scope_paths')
|
|
77
|
+
return 'scope_paths_mode: enforce (' + sopTitle + '): this gate cannot check a change against the scope, so every file change is refused; upgrade the Intutic gate';
|
|
78
|
+
return 'plan_approval (' + sopTitle + '): this gate cannot check plan approval, so every call is refused; upgrade the Intutic gate';
|
|
79
|
+
}
|
|
80
|
+
function ruleIsObject(v) {
|
|
81
|
+
return v !== null && typeof v === 'object' && !Array.isArray(v);
|
|
82
|
+
}
|
|
83
|
+
/** JSON with keys sorted at every level and no whitespace, so a record is byte-stable. */
|
|
84
|
+
function ruleCanonicalJson(v) {
|
|
85
|
+
if (Array.isArray(v))
|
|
86
|
+
return '[' + v.map(ruleCanonicalJson).join(',') + ']';
|
|
87
|
+
if (ruleIsObject(v))
|
|
88
|
+
return '{' + Object.keys(v).sort().map((k) => JSON.stringify(k) + ':' + ruleCanonicalJson(v[k])).join(',') + '}';
|
|
89
|
+
return JSON.stringify(v);
|
|
90
|
+
}
|
|
91
|
+
function ruleToBase64(text) {
|
|
92
|
+
let binary = '';
|
|
93
|
+
for (const byte of new TextEncoder().encode(text))
|
|
94
|
+
binary += String.fromCharCode(byte);
|
|
95
|
+
return btoa(binary);
|
|
96
|
+
}
|
|
97
|
+
/** Standard base64 back to UTF-8 text. Throws on anything but the canonical encoding of valid UTF-8. */
|
|
98
|
+
function ruleFromBase64(b64) {
|
|
99
|
+
const text = new TextDecoder('utf-8', { fatal: true }).decode(Uint8Array.from(atob(b64), (c) => c.charCodeAt(0)));
|
|
100
|
+
if (ruleToBase64(text) !== b64)
|
|
101
|
+
throw new Error('not canonical base64');
|
|
102
|
+
return text;
|
|
103
|
+
}
|
|
104
|
+
/** A short text a record may carry: a string with no tab, CR or LF, at most `max` code points (and, with `min`, at least that many). */
|
|
105
|
+
function ruleText(v, max, min) {
|
|
106
|
+
if (typeof v !== 'string' || /[\t\r\n]/.test(v))
|
|
107
|
+
return false;
|
|
108
|
+
const n = Array.from(v).length;
|
|
109
|
+
return n >= min && n <= max;
|
|
110
|
+
}
|
|
111
|
+
/** The record's payload: everything but the kind, the fallback id and the rollout, which are columns. */
|
|
112
|
+
export function gateRulePayload(record) {
|
|
113
|
+
const payload = {};
|
|
114
|
+
for (const k of Object.keys(record))
|
|
115
|
+
if (k !== 'kind' && k !== 'fallbackId' && k !== 'rollout')
|
|
116
|
+
payload[k] = record[k];
|
|
117
|
+
return payload;
|
|
118
|
+
}
|
|
119
|
+
/** The record as one `.rules` line. */
|
|
120
|
+
export function encodeGateRuleRecord(record) {
|
|
121
|
+
return [RULE_RECORD_TAG, record.fallbackId ?? '-', record.kind, record.rollout, ruleToBase64(ruleCanonicalJson(gateRulePayload(record)))].join('\t');
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Reads an `@rule` line back, its kind, fallback id and rollout from the
|
|
125
|
+
* columns and the rest from the payload. Null, and so the fallback line stays
|
|
126
|
+
* in force, for any other line or when: it does not have five columns; the
|
|
127
|
+
* base64 or JSON is damaged; the kind (column 3) is unknown; the payload has
|
|
128
|
+
* a field its kind does not have or lacks one; the rollout (column 4) is not
|
|
129
|
+
* `shadow` or `enforce`; a field is out of its bounds; the ref does not end
|
|
130
|
+
* `#<kind>:<n>`; an enforcing record's fallback id (column 2) is not
|
|
131
|
+
* `<kind>-fallback:<n>@<12 hex>` for the same n, or a shadow record's is
|
|
132
|
+
* not `-`.
|
|
133
|
+
*/
|
|
134
|
+
export function decodeGateRuleRecord(line) {
|
|
135
|
+
const f = line.split('\t');
|
|
136
|
+
if (f.length !== 5 || f[0] !== '@rule' || !f[4])
|
|
137
|
+
return null;
|
|
138
|
+
const kind = f[2];
|
|
139
|
+
if (kind !== 'requires_outcome' && kind !== 'scope_paths' && kind !== 'plan_approval')
|
|
140
|
+
return null;
|
|
141
|
+
let r;
|
|
142
|
+
try {
|
|
143
|
+
r = JSON.parse(ruleFromBase64(f[4]));
|
|
144
|
+
}
|
|
145
|
+
catch {
|
|
146
|
+
return null;
|
|
147
|
+
}
|
|
148
|
+
if (!ruleIsObject(r))
|
|
149
|
+
return null;
|
|
150
|
+
const fields = RULE_RECORD_FIELDS[kind];
|
|
151
|
+
const keys = Object.keys(r).sort();
|
|
152
|
+
if (keys.length !== fields.length || keys.some((k, i) => k !== fields[i]))
|
|
153
|
+
return null;
|
|
154
|
+
if (f[3] !== 'shadow' && f[3] !== 'enforce')
|
|
155
|
+
return null;
|
|
156
|
+
r = { ...r, kind, fallbackId: f[1] === '-' ? null : f[1], rollout: f[3] };
|
|
157
|
+
if (!ruleIsObject(r))
|
|
158
|
+
return null;
|
|
159
|
+
if (r.v !== 1)
|
|
160
|
+
return null;
|
|
161
|
+
if (!ruleText(r.sopTitle, 80, 0))
|
|
162
|
+
return null;
|
|
163
|
+
if (typeof r.ref !== 'string')
|
|
164
|
+
return null;
|
|
165
|
+
const m = /^.+#([a-z_]+):([1-9][0-9]{0,5})$/.exec(r.ref);
|
|
166
|
+
if (!m || m[1] !== kind)
|
|
167
|
+
return null;
|
|
168
|
+
if (r.rollout === 'enforce') {
|
|
169
|
+
if (typeof r.fallbackId !== 'string' || !new RegExp('^' + kind + '-fallback:' + m[2] + '@[0-9a-f]{12}$').test(r.fallbackId))
|
|
170
|
+
return null;
|
|
171
|
+
}
|
|
172
|
+
else if (r.fallbackId !== null) {
|
|
173
|
+
return null;
|
|
174
|
+
}
|
|
175
|
+
if (kind === 'requires_outcome') {
|
|
176
|
+
if (r.first !== 'action:run_tests' || r.qualifier !== 'ok' || typeof r.adjacent !== 'boolean')
|
|
177
|
+
return null;
|
|
178
|
+
if (typeof r.then !== 'string' || !/^[A-Za-z][A-Za-z0-9_.:-]{0,63}$/.test(r.then) || r.then === 'action:run_tests')
|
|
179
|
+
return null;
|
|
180
|
+
}
|
|
181
|
+
else if (kind === 'scope_paths') {
|
|
182
|
+
const paths = r.scopePaths;
|
|
183
|
+
if (!Array.isArray(paths) || paths.length < 1 || paths.length > 64 || paths.some((p) => !ruleText(p, 512, 1)))
|
|
184
|
+
return null;
|
|
185
|
+
}
|
|
186
|
+
else if (r.mode !== 'required' && r.mode !== 'strict') {
|
|
187
|
+
return null;
|
|
188
|
+
}
|
|
189
|
+
return r;
|
|
190
|
+
}
|
|
191
|
+
/** A record in the served shape. */
|
|
192
|
+
export function toServedGateRecord(record, sopId) {
|
|
193
|
+
return { sopId, kind: record.kind, rollout: record.rollout, fallbackId: record.fallbackId, payload: gateRulePayload(record) };
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* A served record as a gate record, or null when it does not hold together:
|
|
197
|
+
* checked by encoding it and reading the line back, so a writer never emits
|
|
198
|
+
* a record no gate can decode (its fallback line would refuse instead).
|
|
199
|
+
*/
|
|
200
|
+
export function fromServedGateRecord(served) {
|
|
201
|
+
if (!ruleIsObject(served) || !ruleIsObject(served.payload))
|
|
202
|
+
return null;
|
|
203
|
+
const fields = Object.keys(served.payload).filter((k) => k !== 'kind' && k !== 'fallbackId' && k !== 'rollout');
|
|
204
|
+
if (fields.length !== Object.keys(served.payload).length)
|
|
205
|
+
return null;
|
|
206
|
+
const line = [RULE_RECORD_TAG, served.fallbackId ?? '-', served.kind, served.rollout, ruleToBase64(ruleCanonicalJson(served.payload))].join('\t');
|
|
207
|
+
return decodeGateRuleRecord(line);
|
|
208
|
+
}
|
|
209
|
+
/** A title as a record carries it: tabs and newlines collapsed, at most 80 code points. */
|
|
210
|
+
function ruleSopTitle(title) {
|
|
211
|
+
return Array.from(title.replace(/[\t\r\n]+/g, ' ').trim()).slice(0, 80).join('');
|
|
212
|
+
}
|
|
213
|
+
/** A regex literal for a tool name in a portable-ERE tool rule. */
|
|
214
|
+
function ruleEscape(s) {
|
|
215
|
+
return s.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* The fallback line for an enforcing record: what an older gate refuses in
|
|
219
|
+
* its place. `requires_outcome`: the gated call (by the action subject for
|
|
220
|
+
* the four tokens a v22 classifier knows, by the token's phrases for a newer
|
|
221
|
+
* token, by the shell tools for a token with no phrases, by the tool subject
|
|
222
|
+
* for a tool); `scope_paths`: every mutation tool; `plan_approval`: every call.
|
|
223
|
+
*/
|
|
224
|
+
export function gateRuleFallback(record) {
|
|
225
|
+
if (record.fallbackId === null)
|
|
226
|
+
return null;
|
|
227
|
+
const base = { id: record.fallbackId, severity: 'block', reason: gateRuleFallbackReason(record.kind, record.sopTitle) };
|
|
228
|
+
if (record.kind === 'plan_approval')
|
|
229
|
+
return { ...base, subject: 'tool', source: ' [^ ]+ ', ignoreCase: false };
|
|
230
|
+
if (record.kind === 'scope_paths') {
|
|
231
|
+
const tools = [...SCOPE_WRITE_TOOLS, ...SCOPE_EDIT_TOOLS, ...SCOPE_DELETE_TOOLS, ...SCOPE_MOVE_TOOLS, ...SCOPE_EDITOR_TOOLS];
|
|
232
|
+
return { ...base, subject: 'tool', source: ' [^ ]*(' + tools.map(ruleEscape).join('|') + ') ', ignoreCase: true };
|
|
233
|
+
}
|
|
234
|
+
const then = record.then;
|
|
235
|
+
if (V22_ACTION_TOKENS.indexOf(then) !== -1)
|
|
236
|
+
return { ...base, subject: 'action', source: ' (' + ruleEscape(then) + ') ', ignoreCase: true };
|
|
237
|
+
if (then.slice(0, 7) === 'action:') {
|
|
238
|
+
const phrases = Object.prototype.hasOwnProperty.call(LANE_PHRASES, then) ? LANE_PHRASES[then] : [];
|
|
239
|
+
if (phrases.length > 0)
|
|
240
|
+
return { ...base, subject: 'phrase', source: phrases.join('|'), ignoreCase: true };
|
|
241
|
+
return { ...base, subject: 'tool', source: ' [^ ]*(' + SCOPE_SHELL_TOOLS.map(ruleEscape).join('|') + ') ', ignoreCase: true };
|
|
242
|
+
}
|
|
243
|
+
return { ...base, subject: 'tool', source: ' (' + ruleEscape(then) + ') ', ignoreCase: false };
|
|
244
|
+
}
|
|
245
|
+
/**
|
|
246
|
+
* The records (and, for each enforcing one, its fallback line) one SOP
|
|
247
|
+
* compiles to: each qualified `requires_before`, then its `scope_paths` when
|
|
248
|
+
* `scope_paths_mode: enforce`, then its `plan_approval:`. Nothing for a SOP
|
|
249
|
+
* with `roles:` (a gate knows no role). A shadow SOP (`mode: shadow`, or
|
|
250
|
+
* `entry.shadow`, which the writer sets for SILENT_LOG) gets shadow records
|
|
251
|
+
* and no fallback lines.
|
|
252
|
+
*/
|
|
253
|
+
export function compileSopGateRecords(entry, fm, sha256Hex) {
|
|
254
|
+
const out = { records: [], fallbacks: [] };
|
|
255
|
+
if (fm.roles.length > 0)
|
|
256
|
+
return out;
|
|
257
|
+
const rollout = fm.mode === 'shadow' || entry.shadow === true ? 'shadow' : 'enforce';
|
|
258
|
+
const sopTitle = ruleSopTitle(entry.sopTitle);
|
|
259
|
+
const add = (record) => {
|
|
260
|
+
out.records.push(record);
|
|
261
|
+
const fallback = gateRuleFallback(record);
|
|
262
|
+
if (fallback)
|
|
263
|
+
out.fallbacks.push(fallback);
|
|
264
|
+
};
|
|
265
|
+
const base = (kind, n) => ({
|
|
266
|
+
v: 1,
|
|
267
|
+
ref: gateRuleRef(entry.sopId, kind, n),
|
|
268
|
+
sopTitle,
|
|
269
|
+
fallbackId: rollout === 'enforce' ? gateRuleFallbackId(kind, n, entry.sopId, sha256Hex) : null,
|
|
270
|
+
rollout,
|
|
271
|
+
});
|
|
272
|
+
let n = 0;
|
|
273
|
+
for (const [first, then, adjacent] of fm.requiresBefore) {
|
|
274
|
+
if (first !== 'action:run_tests[ok]' || !/^[A-Za-z][A-Za-z0-9_.:-]{0,63}$/.test(then) || then === 'action:run_tests')
|
|
275
|
+
continue;
|
|
276
|
+
n += 1;
|
|
277
|
+
add({ ...base('requires_outcome', n), kind: 'requires_outcome', first: 'action:run_tests', qualifier: 'ok', then, adjacent });
|
|
278
|
+
}
|
|
279
|
+
if (fm.scopePathsMode === 'enforce') {
|
|
280
|
+
const paths = fm.scopePaths.filter((p) => ruleText(p, 512, 1)).slice(0, 64);
|
|
281
|
+
if (paths.length > 0)
|
|
282
|
+
add({ ...base('scope_paths', 1), kind: 'scope_paths', scopePaths: paths });
|
|
283
|
+
}
|
|
284
|
+
if (fm.planApproval !== null)
|
|
285
|
+
add({ ...base('plan_approval', 1), kind: 'plan_approval', mode: fm.planApproval });
|
|
286
|
+
return out;
|
|
287
|
+
}
|
|
288
|
+
/**
|
|
289
|
+
* The session's plan from `GET /api/v1/plans/session/:sessionId`: `status`
|
|
290
|
+
* is the HTTP status, or null when the control plane could not be reached.
|
|
291
|
+
* 200 with `lifecycleState` APPROVED or EXECUTING is approved, its tools the
|
|
292
|
+
* steps' `tool` (or `toolName`) names; 200 in any other state, and 404, are
|
|
293
|
+
* none; anything else is unavailable, which refuses as none does.
|
|
294
|
+
*/
|
|
295
|
+
export function gateRulePlanFromResponse(status, body) {
|
|
296
|
+
if (status === 404)
|
|
297
|
+
return { status: 'none' };
|
|
298
|
+
if (status !== 200 || !ruleIsObject(body))
|
|
299
|
+
return { status: 'unavailable' };
|
|
300
|
+
if (body.lifecycleState !== 'APPROVED' && body.lifecycleState !== 'EXECUTING')
|
|
301
|
+
return { status: 'none' };
|
|
302
|
+
const tools = [];
|
|
303
|
+
for (const step of Array.isArray(body.steps) ? body.steps : []) {
|
|
304
|
+
if (!ruleIsObject(step))
|
|
305
|
+
continue;
|
|
306
|
+
const tool = typeof step.tool === 'string' ? step.tool : step.toolName;
|
|
307
|
+
if (typeof tool === 'string' && tool.trim() !== '' && tools.indexOf(tool.trim()) === -1)
|
|
308
|
+
tools.push(tool.trim());
|
|
309
|
+
}
|
|
310
|
+
return { status: 'approved', tools };
|
|
311
|
+
}
|
|
312
|
+
function ruleLower(s) {
|
|
313
|
+
return s.toLowerCase();
|
|
314
|
+
}
|
|
315
|
+
/** The plan rule of `records` (strict beats required), or null. */
|
|
316
|
+
function rulePlanFinding(records, call) {
|
|
317
|
+
if (records.length === 0 || isPlanExemptTool(call.tool))
|
|
318
|
+
return null;
|
|
319
|
+
const strict = records.find((r) => r.mode === 'strict');
|
|
320
|
+
const rec = strict ?? records[0];
|
|
321
|
+
const ruleId = 'plan_approval.' + rec.sopTitle;
|
|
322
|
+
const scope = { tools: [call.tool] };
|
|
323
|
+
if (call.sessionId === '') {
|
|
324
|
+
return { code: 'PLAN_NOT_APPROVED', ruleId, scope, ref: rec.ref, reason: 'plan_approval: ' + rec.mode + ' (' + rec.sopTitle + '): ' + call.harness + ' sent no session id, so no approved plan can be found for this session' };
|
|
325
|
+
}
|
|
326
|
+
if (call.plan.status !== 'approved') {
|
|
327
|
+
const why = call.plan.status === 'none' ? 'this session has no approved plan' : 'the approved plans could not be read';
|
|
328
|
+
return { code: 'PLAN_NOT_APPROVED', ruleId, scope, ref: rec.ref, reason: 'plan_approval: ' + rec.mode + ' (' + rec.sopTitle + '): ' + why + '; get the plan approved, then retry' };
|
|
329
|
+
}
|
|
330
|
+
if (rec.mode === 'strict') {
|
|
331
|
+
const tool = ruleLower(call.tool);
|
|
332
|
+
if (!call.plan.tools.some((t) => ruleLower(t) === tool)) {
|
|
333
|
+
return { code: 'OFF_PLAN', ruleId, scope, ref: rec.ref, reason: call.tool + ' is not a step of this session\'s approved plan (plan_approval: strict, ' + rec.sopTitle + ')' };
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
return null;
|
|
337
|
+
}
|
|
338
|
+
/** The first requires_outcome record the call is gated by and does not meet, or null. */
|
|
339
|
+
function ruleRequiresFinding(records, call) {
|
|
340
|
+
const tool = ruleLower(call.tool);
|
|
341
|
+
for (const rec of records) {
|
|
342
|
+
if (call.actions.indexOf(rec.then) === -1 && ruleLower(rec.then) !== tool)
|
|
343
|
+
continue;
|
|
344
|
+
let c;
|
|
345
|
+
let why = null;
|
|
346
|
+
if (!call.observable)
|
|
347
|
+
c = 'not_observable';
|
|
348
|
+
else if (call.sessionId === '')
|
|
349
|
+
c = 'no_session';
|
|
350
|
+
else {
|
|
351
|
+
const got = prerequisiteCase(call.outcomes, rec.first, rec.adjacent, call.nowMs);
|
|
352
|
+
c = got.case;
|
|
353
|
+
why = got.why;
|
|
354
|
+
}
|
|
355
|
+
if (c === 'met')
|
|
356
|
+
continue;
|
|
357
|
+
return {
|
|
358
|
+
code: 'PREREQUISITE_UNMET',
|
|
359
|
+
ruleId: 'requires_before.' + rec.first + '[ok]' + (rec.adjacent ? '~>' : '->') + rec.then,
|
|
360
|
+
reason: prerequisiteUnmetReason(rec.first, rec.then, c, why, call.harness),
|
|
361
|
+
scope: { tools: [rec.then], step: rec.first },
|
|
362
|
+
ref: rec.ref,
|
|
363
|
+
};
|
|
364
|
+
}
|
|
365
|
+
return null;
|
|
366
|
+
}
|
|
367
|
+
/** A change outside the union of the records' scopes, or null. */
|
|
368
|
+
function ruleScopeFinding(records, call) {
|
|
369
|
+
if (records.length === 0)
|
|
370
|
+
return null;
|
|
371
|
+
const targets = changeTargets(call.tool, call.input);
|
|
372
|
+
if (targets.length === 0)
|
|
373
|
+
return null;
|
|
374
|
+
const scopes = [];
|
|
375
|
+
for (const r of records)
|
|
376
|
+
for (const p of r.scopePaths)
|
|
377
|
+
if (scopes.indexOf(p) === -1)
|
|
378
|
+
scopes.push(p);
|
|
379
|
+
const outside = [];
|
|
380
|
+
for (const t of targets) {
|
|
381
|
+
const rel = scopeRelativePath(t.target, call.cwd, call.root);
|
|
382
|
+
if ((rel === null || !isWithinScope(rel, scopes)) && outside.indexOf(t.target) === -1)
|
|
383
|
+
outside.push(t.target);
|
|
384
|
+
}
|
|
385
|
+
if (outside.length === 0)
|
|
386
|
+
return null;
|
|
387
|
+
const rec = records[0];
|
|
388
|
+
return {
|
|
389
|
+
code: 'OUT_OF_SCOPE',
|
|
390
|
+
ruleId: 'scope_paths.' + rec.sopTitle,
|
|
391
|
+
reason: 'Changes outside the declared file scope: ' + outside.join(', ') + ' (scope: ' + scopes.join(', ') + ')',
|
|
392
|
+
scope: { paths: outside },
|
|
393
|
+
ref: rec.ref,
|
|
394
|
+
};
|
|
395
|
+
}
|
|
396
|
+
/** The findings of one rollout's records, in order: plan approval, then qualified prerequisites, then scope. */
|
|
397
|
+
function ruleFindings(records, call) {
|
|
398
|
+
const out = [];
|
|
399
|
+
const plan = rulePlanFinding(records.filter((r) => r.kind === 'plan_approval'), call);
|
|
400
|
+
if (plan)
|
|
401
|
+
out.push(plan);
|
|
402
|
+
const requires = ruleRequiresFinding(records.filter((r) => r.kind === 'requires_outcome'), call);
|
|
403
|
+
if (requires)
|
|
404
|
+
out.push(requires);
|
|
405
|
+
const scope = ruleScopeFinding(records.filter((r) => r.kind === 'scope_paths'), call);
|
|
406
|
+
if (scope)
|
|
407
|
+
out.push(scope);
|
|
408
|
+
return out;
|
|
409
|
+
}
|
|
410
|
+
/**
|
|
411
|
+
* Tier R: the snapshot's rule records against one call. The enforcing
|
|
412
|
+
* records' first finding refuses; the shadow records' findings are reported
|
|
413
|
+
* and change nothing. A rule failure (an unreadable plan feed, an unreadable
|
|
414
|
+
* outcome state) is a finding, so it refuses whatever the client's
|
|
415
|
+
* `failClosed` says.
|
|
416
|
+
*/
|
|
417
|
+
export function evaluateGateRuleRecords(records, call) {
|
|
418
|
+
const enforce = ruleFindings(records.filter((r) => r.rollout === 'enforce'), call);
|
|
419
|
+
return { refusal: enforce.length > 0 ? enforce[0] : null, shadow: ruleFindings(records.filter((r) => r.rollout === 'shadow'), call) };
|
|
420
|
+
}
|
|
421
|
+
/**
|
|
422
|
+
* The decoder and Tier R as JavaScript source, for the hook gates to embed
|
|
423
|
+
* after `PHRASES_JS_SOURCE`, `TEST_OUTCOME_JS_SOURCE` and
|
|
424
|
+
* `SCOPE_MATCH_JS_SOURCE`, whose functions these call. The constants the
|
|
425
|
+
* functions read are written into the source.
|
|
426
|
+
*/
|
|
427
|
+
export const RULE_RECORD_JS_SOURCE = [
|
|
428
|
+
`const RULE_RECORD_FIELDS = ${JSON.stringify(RULE_RECORD_FIELDS)};`,
|
|
429
|
+
`const LANE_PHRASES = ${JSON.stringify(LANE_PHRASES)};`,
|
|
430
|
+
`const V22_ACTION_TOKENS = ${JSON.stringify(V22_ACTION_TOKENS)};`,
|
|
431
|
+
`const SCOPE_WRITE_TOOLS = ${JSON.stringify(SCOPE_WRITE_TOOLS)};`,
|
|
432
|
+
`const SCOPE_EDIT_TOOLS = ${JSON.stringify(SCOPE_EDIT_TOOLS)};`,
|
|
433
|
+
`const SCOPE_DELETE_TOOLS = ${JSON.stringify(SCOPE_DELETE_TOOLS)};`,
|
|
434
|
+
`const SCOPE_MOVE_TOOLS = ${JSON.stringify(SCOPE_MOVE_TOOLS)};`,
|
|
435
|
+
`const SCOPE_EDITOR_TOOLS = ${JSON.stringify(SCOPE_EDITOR_TOOLS)};`,
|
|
436
|
+
`const SCOPE_SHELL_TOOLS = ${JSON.stringify(SCOPE_SHELL_TOOLS)};`,
|
|
437
|
+
...[
|
|
438
|
+
ruleIsObject,
|
|
439
|
+
ruleFromBase64,
|
|
440
|
+
ruleToBase64,
|
|
441
|
+
ruleText,
|
|
442
|
+
decodeGateRuleRecord,
|
|
443
|
+
gateRuleFallbackReason,
|
|
444
|
+
ruleEscape,
|
|
445
|
+
gateRuleFallback,
|
|
446
|
+
ruleLower,
|
|
447
|
+
rulePlanFinding,
|
|
448
|
+
ruleRequiresFinding,
|
|
449
|
+
ruleScopeFinding,
|
|
450
|
+
ruleFindings,
|
|
451
|
+
evaluateGateRuleRecords,
|
|
452
|
+
gateRulePlanFromResponse,
|
|
453
|
+
].map((fn) => fn
|
|
454
|
+
.toString()
|
|
455
|
+
.replace(/\(0,\s*(?:[\w$]+_js_\d+|__vite_ssr_import_\d+__)\.([\w$]+)\)/g, '$1')
|
|
456
|
+
.replace(/\b(?:[\w$]+_js_\d+|__vite_ssr_import_\d+__)\.([\w$]+)/g, '$1')
|
|
457
|
+
.replace(/\bexports\./g, '')),
|
|
458
|
+
].join('\n');
|
|
459
|
+
//# sourceMappingURL=gateRuleRecord.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gateRuleRecord.js","sourceRoot":"","sources":["../src/gateRuleRecord.ts"],"names":[],"mappings":"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"}
|
package/dist/harness.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"harness.d.ts","sourceRoot":"","sources":["../src/harness.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"harness.d.ts","sourceRoot":"","sources":["../src/harness.ts"],"names":[],"mappings":"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"}
|
package/dist/harness.js
CHANGED
|
@@ -482,24 +482,36 @@ function evaluate(toolName, target, command, rules) {
|
|
|
482
482
|
const nCommand = normalise(command);
|
|
483
483
|
const nTarget = normalise(target);
|
|
484
484
|
let words = null;
|
|
485
|
+
// As snapshot.evaluate(): a shadow or warn match does not decide the call,
|
|
486
|
+
// so evaluation continues and a later hold or block wins; with none, the
|
|
487
|
+
// first advisory match is returned.
|
|
488
|
+
let advisory = null;
|
|
485
489
|
for (const rule of rules) {
|
|
490
|
+
let matched = false;
|
|
486
491
|
if (rule.subject === 'phrase') {
|
|
487
492
|
if (words === null) words = phraseText(command);
|
|
488
493
|
const w = words;
|
|
489
494
|
if (!rule.pattern.source.split('|').some(function (p) { return hasPhrase(w, p, true); })) continue;
|
|
490
|
-
|
|
495
|
+
matched = true;
|
|
496
|
+
} else {
|
|
497
|
+
const subjects =
|
|
498
|
+
rule.subject === 'tool' ? [nTool] :
|
|
499
|
+
rule.subject === 'command' ? [nCommand] :
|
|
500
|
+
rule.subject === 'target' ? [nTarget] :
|
|
501
|
+
[nCommand, nTarget];
|
|
502
|
+
matched = subjects.some(function (subject) {
|
|
503
|
+
return rule.steps ? sequenceMatch(rule.steps, subject) : rule.pattern.test(subject);
|
|
504
|
+
});
|
|
491
505
|
}
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
for (const subject of subjects) {
|
|
498
|
-
if (!(rule.steps ? sequenceMatch(rule.steps, subject) : rule.pattern.test(subject))) continue;
|
|
499
|
-
return { severity: rule.severity, reason: rule.reason + ' [' + rule.id + ']' };
|
|
506
|
+
if (!matched) continue;
|
|
507
|
+
const decision = { severity: rule.severity, reason: rule.reason + ' [' + rule.id + ']' };
|
|
508
|
+
if (rule.severity === 'warn' || rule.severity === 'shadow') {
|
|
509
|
+
if (advisory === null) advisory = decision;
|
|
510
|
+
continue;
|
|
500
511
|
}
|
|
512
|
+
return decision;
|
|
501
513
|
}
|
|
502
|
-
return
|
|
514
|
+
return advisory;
|
|
503
515
|
}
|
|
504
516
|
|
|
505
517
|
/**
|
package/dist/harness.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"harness.js","sourceRoot":"","sources":["../src/harness.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"harness.js","sourceRoot":"","sources":["../src/harness.ts"],"names":[],"mappings":"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"}
|