@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,244 @@
|
|
|
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 { type OutcomeState } from './testOutcome.js';
|
|
40
|
+
import type { RefusalScope } from './refusalDetail.js';
|
|
41
|
+
/** First column of a rule record. */
|
|
42
|
+
export declare const RULE_RECORD_TAG = "@rule";
|
|
43
|
+
/** The snapshot format a snapshot carrying any rule record is written in. */
|
|
44
|
+
export declare const RULE_SNAPSHOT_FORMAT = 3;
|
|
45
|
+
/** The longest SOP title a record carries, in code points. */
|
|
46
|
+
export declare const RULE_SOP_TITLE_MAX_CHARS = 80;
|
|
47
|
+
/** The most scope paths one record carries, and the longest of them in code points. */
|
|
48
|
+
export declare const RULE_SCOPE_PATHS_MAX = 64;
|
|
49
|
+
export declare const RULE_SCOPE_PATH_MAX_CHARS = 512;
|
|
50
|
+
export type GateRuleKind = 'requires_outcome' | 'scope_paths' | 'plan_approval';
|
|
51
|
+
export declare const GATE_RULE_KINDS: readonly GateRuleKind[];
|
|
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 declare const V22_ACTION_TOKENS: readonly string[];
|
|
54
|
+
interface GateRuleRecordBase {
|
|
55
|
+
v: 1;
|
|
56
|
+
/** `<sopId>#<kind>:<n>`. */
|
|
57
|
+
ref: string;
|
|
58
|
+
sopTitle: string;
|
|
59
|
+
/** The paired fallback line's id; null when the record is shadow and has none. */
|
|
60
|
+
fallbackId: string | null;
|
|
61
|
+
rollout: 'shadow' | 'enforce';
|
|
62
|
+
}
|
|
63
|
+
export interface RequiresOutcomeRecord extends GateRuleRecordBase {
|
|
64
|
+
kind: 'requires_outcome';
|
|
65
|
+
first: 'action:run_tests';
|
|
66
|
+
qualifier: 'ok';
|
|
67
|
+
/** The gated token or tool. */
|
|
68
|
+
then: string;
|
|
69
|
+
/** `~>`: the run must be the call right before. */
|
|
70
|
+
adjacent: boolean;
|
|
71
|
+
}
|
|
72
|
+
export interface ScopePathsRecord extends GateRuleRecordBase {
|
|
73
|
+
kind: 'scope_paths';
|
|
74
|
+
scopePaths: string[];
|
|
75
|
+
}
|
|
76
|
+
export interface PlanApprovalRecord extends GateRuleRecordBase {
|
|
77
|
+
kind: 'plan_approval';
|
|
78
|
+
mode: 'required' | 'strict';
|
|
79
|
+
}
|
|
80
|
+
export type GateRuleRecord = RequiresOutcomeRecord | ScopePathsRecord | PlanApprovalRecord;
|
|
81
|
+
/** `ref`: `<sopId>#<kind>:<n>`. */
|
|
82
|
+
export declare function gateRuleRef(sopId: string, kind: GateRuleKind, n: number): string;
|
|
83
|
+
/** `fallbackId`: `<kind>-fallback:<n>@<first 12 hex of sha256(sopId)>`. */
|
|
84
|
+
export declare function gateRuleFallbackId(kind: GateRuleKind, n: number, sopId: string, sha256Hex: (text: string) => string): string;
|
|
85
|
+
/** What an older gate says when a rule's fallback line refuses. The writer scrubs and bounds it like any reason. */
|
|
86
|
+
export declare function gateRuleFallbackReason(kind: GateRuleKind, sopTitle: string): string;
|
|
87
|
+
/** The record's payload: everything but the kind, the fallback id and the rollout, which are columns. */
|
|
88
|
+
export declare function gateRulePayload(record: GateRuleRecord): {
|
|
89
|
+
v: 1;
|
|
90
|
+
ref: string;
|
|
91
|
+
sopTitle: string;
|
|
92
|
+
} & Record<string, unknown>;
|
|
93
|
+
/** The record as one `.rules` line. */
|
|
94
|
+
export declare function encodeGateRuleRecord(record: GateRuleRecord): string;
|
|
95
|
+
/**
|
|
96
|
+
* Reads an `@rule` line back, its kind, fallback id and rollout from the
|
|
97
|
+
* columns and the rest from the payload. Null, and so the fallback line stays
|
|
98
|
+
* in force, for any other line or when: it does not have five columns; the
|
|
99
|
+
* base64 or JSON is damaged; the kind (column 3) is unknown; the payload has
|
|
100
|
+
* a field its kind does not have or lacks one; the rollout (column 4) is not
|
|
101
|
+
* `shadow` or `enforce`; a field is out of its bounds; the ref does not end
|
|
102
|
+
* `#<kind>:<n>`; an enforcing record's fallback id (column 2) is not
|
|
103
|
+
* `<kind>-fallback:<n>@<12 hex>` for the same n, or a shadow record's is
|
|
104
|
+
* not `-`.
|
|
105
|
+
*/
|
|
106
|
+
export declare function decodeGateRuleRecord(line: string): GateRuleRecord | null;
|
|
107
|
+
/**
|
|
108
|
+
* A record as the control plane serves it from policy resolve
|
|
109
|
+
* (`ResolvedPolicy.gateRecords`): which SOP it came from, its kind, rollout
|
|
110
|
+
* and fallback id, and the payload the `@rule` line carries.
|
|
111
|
+
*/
|
|
112
|
+
export interface ServedGateRecord {
|
|
113
|
+
sopId: string;
|
|
114
|
+
kind: GateRuleKind;
|
|
115
|
+
rollout: 'shadow' | 'enforce';
|
|
116
|
+
fallbackId: string | null;
|
|
117
|
+
payload: {
|
|
118
|
+
v: 1;
|
|
119
|
+
ref: string;
|
|
120
|
+
sopTitle: string;
|
|
121
|
+
} & Record<string, unknown>;
|
|
122
|
+
}
|
|
123
|
+
/** A record in the served shape. */
|
|
124
|
+
export declare function toServedGateRecord(record: GateRuleRecord, sopId: string): ServedGateRecord;
|
|
125
|
+
/**
|
|
126
|
+
* A served record as a gate record, or null when it does not hold together:
|
|
127
|
+
* checked by encoding it and reading the line back, so a writer never emits
|
|
128
|
+
* a record no gate can decode (its fallback line would refuse instead).
|
|
129
|
+
*/
|
|
130
|
+
export declare function fromServedGateRecord(served: ServedGateRecord): GateRuleRecord | null;
|
|
131
|
+
/** The parts of a parsed SOP (`ParsedFrontMatter`, guardrailRender.ts) the records are compiled from. */
|
|
132
|
+
export interface GateRuleFrontMatter {
|
|
133
|
+
roles: readonly string[];
|
|
134
|
+
mode: 'shadow' | 'enforce';
|
|
135
|
+
requiresBefore: ReadonlyArray<readonly [string, string, boolean]>;
|
|
136
|
+
scopePaths: readonly string[];
|
|
137
|
+
scopePathsMode: 'advise' | 'enforce';
|
|
138
|
+
planApproval: 'required' | 'strict' | null;
|
|
139
|
+
}
|
|
140
|
+
/** One fallback line, in the shape the snapshot writer's `GuardPattern` takes (it adds the rationale). */
|
|
141
|
+
export interface GateRuleFallback {
|
|
142
|
+
id: string;
|
|
143
|
+
severity: 'block';
|
|
144
|
+
subject: 'tool' | 'action' | 'phrase';
|
|
145
|
+
source: string;
|
|
146
|
+
ignoreCase: boolean;
|
|
147
|
+
reason: string;
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* The fallback line for an enforcing record: what an older gate refuses in
|
|
151
|
+
* its place. `requires_outcome`: the gated call (by the action subject for
|
|
152
|
+
* the four tokens a v22 classifier knows, by the token's phrases for a newer
|
|
153
|
+
* token, by the shell tools for a token with no phrases, by the tool subject
|
|
154
|
+
* for a tool); `scope_paths`: every mutation tool; `plan_approval`: every call.
|
|
155
|
+
*/
|
|
156
|
+
export declare function gateRuleFallback(record: GateRuleRecord): GateRuleFallback | null;
|
|
157
|
+
/**
|
|
158
|
+
* The records (and, for each enforcing one, its fallback line) one SOP
|
|
159
|
+
* compiles to: each qualified `requires_before`, then its `scope_paths` when
|
|
160
|
+
* `scope_paths_mode: enforce`, then its `plan_approval:`. Nothing for a SOP
|
|
161
|
+
* with `roles:` (a gate knows no role). A shadow SOP (`mode: shadow`, or
|
|
162
|
+
* `entry.shadow`, which the writer sets for SILENT_LOG) gets shadow records
|
|
163
|
+
* and no fallback lines.
|
|
164
|
+
*/
|
|
165
|
+
export declare function compileSopGateRecords(entry: {
|
|
166
|
+
sopId: string;
|
|
167
|
+
sopTitle: string;
|
|
168
|
+
shadow?: boolean;
|
|
169
|
+
}, fm: GateRuleFrontMatter, sha256Hex: (text: string) => string): {
|
|
170
|
+
records: GateRuleRecord[];
|
|
171
|
+
fallbacks: GateRuleFallback[];
|
|
172
|
+
};
|
|
173
|
+
/** The refusal codes Tier R gives. */
|
|
174
|
+
export type GateRuleCode = 'PREREQUISITE_UNMET' | 'OUT_OF_SCOPE' | 'OFF_PLAN' | 'PLAN_NOT_APPROVED';
|
|
175
|
+
/** The session's plan as a gate reads it: approved (APPROVED or EXECUTING) with its tools, none, or not readable. */
|
|
176
|
+
export type GateRulePlan = {
|
|
177
|
+
status: 'approved';
|
|
178
|
+
tools: readonly string[];
|
|
179
|
+
} | {
|
|
180
|
+
status: 'none';
|
|
181
|
+
} | {
|
|
182
|
+
status: 'unavailable';
|
|
183
|
+
};
|
|
184
|
+
/**
|
|
185
|
+
* The session's plan from `GET /api/v1/plans/session/:sessionId`: `status`
|
|
186
|
+
* is the HTTP status, or null when the control plane could not be reached.
|
|
187
|
+
* 200 with `lifecycleState` APPROVED or EXECUTING is approved, its tools the
|
|
188
|
+
* steps' `tool` (or `toolName`) names; 200 in any other state, and 404, are
|
|
189
|
+
* none; anything else is unavailable, which refuses as none does.
|
|
190
|
+
*/
|
|
191
|
+
export declare function gateRulePlanFromResponse(status: number | null, body: unknown): GateRulePlan;
|
|
192
|
+
/** One call, and what the gate knows of its session, for {@link evaluateGateRuleRecords}. */
|
|
193
|
+
export interface GateRuleCall {
|
|
194
|
+
tool: string;
|
|
195
|
+
input: unknown;
|
|
196
|
+
/** The action tokens the call classifies to. */
|
|
197
|
+
actions: readonly string[];
|
|
198
|
+
/** The gate's working directory and the workspace root (the nearest `.git` above it, else the directory itself). */
|
|
199
|
+
cwd: string;
|
|
200
|
+
root: string;
|
|
201
|
+
/** The session id; empty when the harness sent none. */
|
|
202
|
+
sessionId: string;
|
|
203
|
+
/** The harness's name, for the reasons. */
|
|
204
|
+
harness: string;
|
|
205
|
+
/** The session's outcome state, or null when there is none or it does not read. */
|
|
206
|
+
outcomes: OutcomeState | null;
|
|
207
|
+
/** The harness reports tool results the gate can read (its post event is confirmed). */
|
|
208
|
+
observable: boolean;
|
|
209
|
+
/** The session's plan; only read when a `plan_approval` record applies. */
|
|
210
|
+
plan: GateRulePlan;
|
|
211
|
+
nowMs: number;
|
|
212
|
+
}
|
|
213
|
+
export interface GateRuleFinding {
|
|
214
|
+
code: GateRuleCode;
|
|
215
|
+
/** The rule id the refusal and its events name. */
|
|
216
|
+
ruleId: string;
|
|
217
|
+
reason: string;
|
|
218
|
+
scope: RefusalScope;
|
|
219
|
+
/** The record's ref, or the first record's when several decided together. */
|
|
220
|
+
ref: string;
|
|
221
|
+
}
|
|
222
|
+
export interface GateRuleEvaluation {
|
|
223
|
+
/** The first enforcing record that refuses, or null to let the call on. */
|
|
224
|
+
refusal: GateRuleFinding | null;
|
|
225
|
+
/** What the shadow records would have refused, recorded and not acted on. */
|
|
226
|
+
shadow: GateRuleFinding[];
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* Tier R: the snapshot's rule records against one call. The enforcing
|
|
230
|
+
* records' first finding refuses; the shadow records' findings are reported
|
|
231
|
+
* and change nothing. A rule failure (an unreadable plan feed, an unreadable
|
|
232
|
+
* outcome state) is a finding, so it refuses whatever the client's
|
|
233
|
+
* `failClosed` says.
|
|
234
|
+
*/
|
|
235
|
+
export declare function evaluateGateRuleRecords(records: readonly GateRuleRecord[], call: GateRuleCall): GateRuleEvaluation;
|
|
236
|
+
/**
|
|
237
|
+
* The decoder and Tier R as JavaScript source, for the hook gates to embed
|
|
238
|
+
* after `PHRASES_JS_SOURCE`, `TEST_OUTCOME_JS_SOURCE` and
|
|
239
|
+
* `SCOPE_MATCH_JS_SOURCE`, whose functions these call. The constants the
|
|
240
|
+
* functions read are written into the source.
|
|
241
|
+
*/
|
|
242
|
+
export declare const RULE_RECORD_JS_SOURCE: string;
|
|
243
|
+
export {};
|
|
244
|
+
//# sourceMappingURL=gateRuleRecord.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gateRuleRecord.d.ts","sourceRoot":"","sources":["../src/gateRuleRecord.ts"],"names":[],"mappings":"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"}
|