@intutic/gate 2.9.1 → 3.0.1
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
package/dist/gate.js
CHANGED
|
@@ -9,15 +9,40 @@
|
|
|
9
9
|
* PreToolUse hook for them. This package is that enforcement point: the
|
|
10
10
|
* missing adapter, written against Intutic's own published gate contract.
|
|
11
11
|
*
|
|
12
|
-
*
|
|
12
|
+
* Eight tiers, in order — identical precedence to the Python SDK:
|
|
13
13
|
*
|
|
14
14
|
* A0 SSO group policy from the policy snapshot unknown groups refused
|
|
15
15
|
* A1 policy snapshot port of intuticGate() fails CLOSED
|
|
16
|
+
* R rule records the snapshot's @rule records fails CLOSED (a rule failure)
|
|
16
17
|
* M MCP registry from the policy snapshot unverified snapshot admits none
|
|
17
18
|
* A3 SOP rules authored in the product fails OPEN (A2 covers it)
|
|
18
19
|
* A2 image integrity local check fails CLOSED
|
|
20
|
+
* D decide rules the self-hosted decide engine fails CLOSED when enforcing
|
|
19
21
|
* B POST /hook-gate control-plane check fail posture set by GateClient
|
|
20
22
|
*
|
|
23
|
+
* Tier R evaluates the snapshot's `@rule` records (gateRuleRecord.ts,
|
|
24
|
+
* a byte-identical copy of `@intutic/shared-types`' module): a qualified
|
|
25
|
+
* `requires_before: action:run_tests[ok] -> X` refuses X with
|
|
26
|
+
* `PREREQUISITE_UNMET` unless the latest test run this gate recorded for the
|
|
27
|
+
* session ({@link Gate.recordOutcome}, which {@link wrapTool} calls) passed
|
|
28
|
+
* and no file changed since; `scope_paths_mode: enforce` refuses a file
|
|
29
|
+
* change outside the scope with `OUT_OF_SCOPE`; `plan_approval:` refuses
|
|
30
|
+
* with `PLAN_NOT_APPROVED` until the session's plan is approved
|
|
31
|
+
* (`GET /api/v1/plans/session/:id`, cached {@link PLAN_CACHE_MS}), and under
|
|
32
|
+
* `strict` a tool off the plan with `OFF_PLAN`. A plan that cannot be read
|
|
33
|
+
* refuses whatever `failClosed` says: rule failures always fail closed.
|
|
34
|
+
*
|
|
35
|
+
* Tier D runs only on a call every deterministic tier allowed: the snapshot's
|
|
36
|
+
* decide rules on the tool, asked of the self-hosted engine configured in
|
|
37
|
+
* `~/.intutic/decide/engine.json` and `INTUTIC_DECIDE_*`, within
|
|
38
|
+
* `INTUTIC_DECIDE_BUDGET_MS` (default {@link DECIDE_BUDGET_MS}). A rule refuses
|
|
39
|
+
* with `DECIDE_REFUSED`; one that cannot decide throws
|
|
40
|
+
* {@link IntuticGateEscalation} (`DECIDE_ESCALATED`), which a caller that can
|
|
41
|
+
* ask its user turns into a question; an engine that cannot answer refuses an
|
|
42
|
+
* enforcing rule with `GOVERNANCE_UNAVAILABLE` and lets a shadow rule's call
|
|
43
|
+
* on (decideEvaluate.ts, a byte-identical copy of `@intutic/shared-types`'
|
|
44
|
+
* module, holds the protections).
|
|
45
|
+
*
|
|
21
46
|
* Tier M applies the workspace's MCP server registry and `mcpAllowedServers`
|
|
22
47
|
* list to an `mcp__<server>__<tool>` call, from the snapshot's
|
|
23
48
|
* `@mcp_registry` and `@mcp_allowlist` records, with the decision, codes,
|
|
@@ -80,17 +105,94 @@
|
|
|
80
105
|
import { createHash } from 'node:crypto';
|
|
81
106
|
import * as fs from 'node:fs';
|
|
82
107
|
import { existsSync, readFileSync } from 'node:fs';
|
|
83
|
-
import {
|
|
108
|
+
import { homedir } from 'node:os';
|
|
109
|
+
import { dirname } from 'node:path';
|
|
110
|
+
import { classify, isDeploy, touchesInfra } from './actions.js';
|
|
111
|
+
import { evaluateGateRuleRecords, gateRulePlanFromResponse } from './gateRuleRecord.js';
|
|
112
|
+
import { laneOf } from './lanes.js';
|
|
113
|
+
import { refusalDetailForMode } from './refusalDetail.js';
|
|
114
|
+
import { isFileWriteCall } from './scopeMatch.js';
|
|
115
|
+
import { decideTestOutcome, emptyOutcomeState, extractExitCode, noteCompletedCall, recordTestOutcome } from './testOutcome.js';
|
|
84
116
|
import { chaosGateCall, chaosGateDecode } from './chaosGate.js';
|
|
85
|
-
import { IntuticGateHold, IntuticGateRefusal } from './errors.js';
|
|
117
|
+
import { IntuticGateEscalation, IntuticGateHold, IntuticGateRefusal } from './errors.js';
|
|
86
118
|
import { holdKey, holdMessage, requestHold } from './hold.js';
|
|
87
|
-
import { tooLargeReason } from './limits.js';
|
|
119
|
+
import { DECIDE_BUDGET_MS, tooLargeReason } from './limits.js';
|
|
88
120
|
import { evaluateMcpAllowlist, evaluateMcpRegistry, mcpSnapshotUnverifiedRefusal } from './mcpRegistryRecord.js';
|
|
89
121
|
import { OPAQUE_REFUSAL_MESSAGE } from './opaqueRefusal.js';
|
|
90
122
|
import * as imagecheck from './imagecheck.js';
|
|
91
123
|
import * as snapshot from './snapshot.js';
|
|
124
|
+
import { SNAPSHOT_FORMAT } from './decideRecord.js';
|
|
125
|
+
import { createDecideEngine, DecideEngineError, resolveDecideEngineConfig } from './decideEngine.js';
|
|
126
|
+
import { createDecideCanaryFileStore, decideDecision, decideShadowFindings, decideStoredQ95Ms, decideUnavailableDecision, evaluateDecideCall, } from './decideEvaluate.js';
|
|
127
|
+
import { decideLogDeps, decideLogEngine, writeDecideCallLog } from './decideLog.js';
|
|
128
|
+
import { DECIDE_LOG_REDACTION_SOURCES } from './decideLogRedaction.js';
|
|
92
129
|
import * as soprules from './soprules.js';
|
|
93
130
|
import { evaluateSsoGroupClearance } from './ssoGroups.js';
|
|
131
|
+
/**
|
|
132
|
+
* Whether this gate evaluates the decide rules a snapshot carries (Tier D).
|
|
133
|
+
* Only a gate that does skips a decide rule's fallback line, and only when
|
|
134
|
+
* the rule's record decoded; otherwise the fallback line refuses its tools,
|
|
135
|
+
* as in a gate that reads no `@decide` records.
|
|
136
|
+
*/
|
|
137
|
+
export const CAN_EVALUATE_DECIDE = true;
|
|
138
|
+
/**
|
|
139
|
+
* Whether this gate evaluates the `@rule` records a snapshot carries (Tier
|
|
140
|
+
* R). Only a gate that does skips a record's fallback line, and only when
|
|
141
|
+
* the record decoded.
|
|
142
|
+
*/
|
|
143
|
+
export const CAN_EVALUATE_RULE_RECORDS = true;
|
|
144
|
+
/** How long Tier R keeps a session's plan before reading it again. */
|
|
145
|
+
export const PLAN_CACHE_MS = 30_000;
|
|
146
|
+
/** The decide tier's budget for one call: `INTUTIC_DECIDE_BUDGET_MS`, or {@link DECIDE_BUDGET_MS}. */
|
|
147
|
+
function decideBudgetFromEnv() {
|
|
148
|
+
const raw = (process.env.INTUTIC_DECIDE_BUDGET_MS ?? '').trim();
|
|
149
|
+
const n = /^[0-9]+$/.test(raw) ? Number(raw) : NaN;
|
|
150
|
+
return Number.isSafeInteger(n) && n > 0 ? n : DECIDE_BUDGET_MS;
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* The engine, its URL, the canary cache and the per-call p95 `intutic doctor`
|
|
154
|
+
* stored, read from `~/.intutic/decide/` and the environment for each call
|
|
155
|
+
* that needs them. With the p95, a rule whose estimate does not fit the
|
|
156
|
+
* budget is not asked: an enforcing one escalates. `cfg` is the resolved
|
|
157
|
+
* configuration, for the decide log, or null when it does not resolve.
|
|
158
|
+
*/
|
|
159
|
+
function decideDeps() {
|
|
160
|
+
const dir = joinPath(homedir(), '.intutic/decide');
|
|
161
|
+
let engine;
|
|
162
|
+
let url = '';
|
|
163
|
+
let q95Ms = null;
|
|
164
|
+
let parallel = 1;
|
|
165
|
+
let file = null;
|
|
166
|
+
let resolved = null;
|
|
167
|
+
try {
|
|
168
|
+
try {
|
|
169
|
+
file = JSON.parse(readFileSync(joinPath(dir, 'engine.json'), 'utf-8'));
|
|
170
|
+
}
|
|
171
|
+
catch (err) {
|
|
172
|
+
if (err.code !== 'ENOENT') {
|
|
173
|
+
throw new DecideEngineError('not_configured', `engine.json does not read: ${err instanceof Error ? err.message : String(err)}`);
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
q95Ms = decideStoredQ95Ms(file);
|
|
177
|
+
const cfg = resolveDecideEngineConfig(file, process.env);
|
|
178
|
+
resolved = cfg;
|
|
179
|
+
url = cfg.url;
|
|
180
|
+
parallel = cfg.parallel;
|
|
181
|
+
engine = createDecideEngine(cfg);
|
|
182
|
+
}
|
|
183
|
+
catch (err) {
|
|
184
|
+
engine = err instanceof DecideEngineError ? err : new DecideEngineError('not_configured', err instanceof Error ? err.message : String(err));
|
|
185
|
+
}
|
|
186
|
+
return {
|
|
187
|
+
engine,
|
|
188
|
+
engineUrl: url,
|
|
189
|
+
canary: createDecideCanaryFileStore(joinPath(dir, 'canary.json'), fs),
|
|
190
|
+
sha256Hex: (t) => createHash('sha256').update(t, 'utf-8').digest('hex'),
|
|
191
|
+
q95Ms,
|
|
192
|
+
parallel,
|
|
193
|
+
cfg: resolved,
|
|
194
|
+
};
|
|
195
|
+
}
|
|
94
196
|
/** Tools that cannot change anything. They still get the local snapshot check
|
|
95
197
|
* (Tier A1), but skip the remote gate call (Tier B). */
|
|
96
198
|
export const READ_ONLY_TOOLS = new Set([
|
|
@@ -129,6 +231,10 @@ export class Gate {
|
|
|
129
231
|
/** The SOP register said the workspace is OPAQUE (read with its rules). */
|
|
130
232
|
_registerOpaque = false;
|
|
131
233
|
_chaos = null;
|
|
234
|
+
/** The outcome state of each session (testOutcome.ts), by session id, in memory. */
|
|
235
|
+
_outcomes = new Map();
|
|
236
|
+
/** Each session's plan, as Tier R last read it. */
|
|
237
|
+
_plans = new Map();
|
|
132
238
|
constructor(cfg = {}, client = null) {
|
|
133
239
|
this.cfg = resolveConfig(cfg);
|
|
134
240
|
this.client = client;
|
|
@@ -140,7 +246,10 @@ export class Gate {
|
|
|
140
246
|
// ------------------------------------------------------------ loading
|
|
141
247
|
getSnapshot() {
|
|
142
248
|
if (this._snapshot === null) {
|
|
143
|
-
this._snapshot = snapshot.loadSnapshot(this.cfg.workspaceId
|
|
249
|
+
this._snapshot = snapshot.loadSnapshot(this.cfg.workspaceId, undefined, {
|
|
250
|
+
evaluatesDecide: CAN_EVALUATE_DECIDE,
|
|
251
|
+
evaluatesRules: CAN_EVALUATE_RULE_RECORDS,
|
|
252
|
+
});
|
|
144
253
|
}
|
|
145
254
|
return this._snapshot;
|
|
146
255
|
}
|
|
@@ -242,6 +351,9 @@ export class Gate {
|
|
|
242
351
|
if (snap.state !== 'ok') {
|
|
243
352
|
await this.emit(`snapshot_${snap.state}`, tool, snap.healthMessage);
|
|
244
353
|
}
|
|
354
|
+
if (snap.formatVersion > SNAPSHOT_FORMAT) {
|
|
355
|
+
await this.emit('snapshot_format_newer', tool, `Policy snapshot format ${snap.formatVersion} is newer than this gate reads (${SNAPSHOT_FORMAT}) — records it does not know are skipped and their fallback lines enforced`);
|
|
356
|
+
}
|
|
245
357
|
}
|
|
246
358
|
/** A chaos run's plan, from `INTUTIC_CHAOS_PLAN` and `INTUTIC_CHAOS_EVENTS`, read once. */
|
|
247
359
|
chaos() {
|
|
@@ -296,7 +408,8 @@ export class Gate {
|
|
|
296
408
|
// A refusal a tier decided is a policy hit; a call too large to read, or
|
|
297
409
|
// a failure that is not a refusal, is not.
|
|
298
410
|
const refusal = err instanceof IntuticGateRefusal;
|
|
299
|
-
|
|
411
|
+
const held = err instanceof IntuticGateHold || err instanceof IntuticGateEscalation;
|
|
412
|
+
this.chaosReport(chaos.plan, chaos.events, toolName, held ? 'hold' : 'deny', note, refusal && err.code !== 'COMMAND_TOO_LARGE', '');
|
|
300
413
|
throw err;
|
|
301
414
|
}
|
|
302
415
|
const { toolNameNormalized, targetHash } = holdKey(toolName, toolInput);
|
|
@@ -348,7 +461,7 @@ export class Gate {
|
|
|
348
461
|
// Hold rules an approved bypass let through on this call, so the register's
|
|
349
462
|
// copy of the same rule in Tier A3 does not hold it a second time.
|
|
350
463
|
const approved = new Set();
|
|
351
|
-
|
|
464
|
+
let d = snapshot.evaluate(toolName, target, command, this.getSnapshot(), disabled);
|
|
352
465
|
if (note) {
|
|
353
466
|
if (d.ruleId)
|
|
354
467
|
note.ruleId = d.ruleId;
|
|
@@ -358,22 +471,26 @@ export class Gate {
|
|
|
358
471
|
destructive.rules = this.getSnapshot().rules.filter((r) => r.id.startsWith('destructive.'));
|
|
359
472
|
note.destructive = snapshot.evaluate(toolName, target, command, destructive, false).severity !== null;
|
|
360
473
|
}
|
|
361
|
-
|
|
474
|
+
// As the rendered gates: every shadow or warn match is recorded, and an
|
|
475
|
+
// approved hold lets evaluation continue, so a later block still refuses.
|
|
476
|
+
for (;;) {
|
|
477
|
+
for (const a of d.advisories ?? []) {
|
|
478
|
+
await this.emit(a.severity === snapshot.SEV_WARN ? 'tool_flagged' : 'tool_would_block', toolName, a.reason, toolInput);
|
|
479
|
+
}
|
|
480
|
+
if (d.severity === snapshot.SEV_BLOCK) {
|
|
481
|
+
await this.emit('tool_blocked', toolName, d.reason, toolInput);
|
|
482
|
+
throw new IntuticGateRefusal(this.shown(d.reason), 'SNAPSHOT');
|
|
483
|
+
}
|
|
484
|
+
if (d.severity !== snapshot.SEV_HOLD)
|
|
485
|
+
break;
|
|
362
486
|
await this.hold({ id: d.ruleId, reason: d.reason }, toolName, toolInput);
|
|
363
487
|
approved.add(d.ruleId);
|
|
364
488
|
if (note)
|
|
365
489
|
note.policyHit = true;
|
|
490
|
+
d = snapshot.evaluate(toolName, target, command, this.getSnapshot(), disabled, d.next);
|
|
366
491
|
}
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
throw new IntuticGateRefusal(this.shown(d.reason), 'SNAPSHOT');
|
|
370
|
-
}
|
|
371
|
-
if (d.severity === snapshot.SEV_WARN) {
|
|
372
|
-
await this.emit('tool_flagged', toolName, d.reason, toolInput);
|
|
373
|
-
}
|
|
374
|
-
else if (d.severity === snapshot.SEV_SHADOW) {
|
|
375
|
-
await this.emit('tool_would_block', toolName, d.reason, toolInput);
|
|
376
|
-
}
|
|
492
|
+
// ---- Tier R: the snapshot's rule records ---------------------------
|
|
493
|
+
await this.guardRules(toolName, toolInput, note);
|
|
377
494
|
// ---- Tier M: the MCP server registry and allowlist ----------------
|
|
378
495
|
await this.guardMcp(toolName, toolInput, note);
|
|
379
496
|
// ---- Tier A3: SOP rules authored in the product --------------------
|
|
@@ -424,6 +541,11 @@ export class Gate {
|
|
|
424
541
|
await this.emit('tool_flagged', toolName, `${imagecheck.verdictReason(v)} (authoring-time check; the apply will be refused)`, toolInput, undefined, target);
|
|
425
542
|
}
|
|
426
543
|
}
|
|
544
|
+
// ---- Tier D: decide rules -----------------------------------------
|
|
545
|
+
//
|
|
546
|
+
// Only here, after every deterministic tier allowed the call: a refusal
|
|
547
|
+
// above never reaches the engine.
|
|
548
|
+
await this.guardDecide(toolName, toolInput, note);
|
|
427
549
|
// ---- Tier B: control plane gate -----------------------------------
|
|
428
550
|
//
|
|
429
551
|
// Skipped for read-only tools — a network round trip whose checks are
|
|
@@ -450,6 +572,168 @@ export class Gate {
|
|
|
450
572
|
await this.emit('tool_allowed', toolName, '', toolInput, undefined, undefined, decisionId);
|
|
451
573
|
}
|
|
452
574
|
}
|
|
575
|
+
/**
|
|
576
|
+
* Records how a call that ran went, for Tier R. A test run
|
|
577
|
+
* (`action:run_tests`) records its outcome (testOutcome.ts: the exit code,
|
|
578
|
+
* else one read from `output`, the error flag and the runner summaries);
|
|
579
|
+
* any other call marks earlier outcomes as no longer adjacent, and a call
|
|
580
|
+
* that changed files (`isFileWriteCall`, scopeMatch.ts) makes an earlier pass stale.
|
|
581
|
+
* Kept in memory per {@link GateClient.sessionId}; with no session id
|
|
582
|
+
* nothing is kept, and a qualified rule stays unmet. {@link wrapTool} calls
|
|
583
|
+
* this after every call it ran.
|
|
584
|
+
*/
|
|
585
|
+
recordOutcome(toolName, toolInput, result = {}) {
|
|
586
|
+
const session = this.client?.sessionId ?? '';
|
|
587
|
+
if (!session)
|
|
588
|
+
return;
|
|
589
|
+
const state = this._outcomes.get(session) ?? emptyOutcomeState();
|
|
590
|
+
if (classify(toolName, toolInput).includes('action:run_tests')) {
|
|
591
|
+
const output = typeof result.output === 'string' ? result.output : undefined;
|
|
592
|
+
const exitCode = typeof result.exitCode === 'number' ? result.exitCode : extractExitCode(output);
|
|
593
|
+
const decision = decideTestOutcome({ exitCode, isError: result.isError ?? null, output });
|
|
594
|
+
this._outcomes.set(session, recordTestOutcome(state, 'action:run_tests', decision, Date.now()));
|
|
595
|
+
}
|
|
596
|
+
else {
|
|
597
|
+
this._outcomes.set(session, noteCompletedCall(state, isFileWriteCall(toolName, toolInput)));
|
|
598
|
+
}
|
|
599
|
+
}
|
|
600
|
+
/** The session's plan, read at most every {@link PLAN_CACHE_MS}. */
|
|
601
|
+
async sessionPlan(sessionId) {
|
|
602
|
+
if (this.client === null || sessionId === '')
|
|
603
|
+
return { status: 'none' };
|
|
604
|
+
const cached = this._plans.get(sessionId);
|
|
605
|
+
if (cached && Date.now() - cached.atMs < PLAN_CACHE_MS)
|
|
606
|
+
return cached.plan;
|
|
607
|
+
const res = await this.client.sessionPlan(sessionId);
|
|
608
|
+
const plan = gateRulePlanFromResponse(res.status, res.body);
|
|
609
|
+
// An unreadable feed is not cached: the next call asks again.
|
|
610
|
+
if (plan.status !== 'unavailable')
|
|
611
|
+
this._plans.set(sessionId, { atMs: Date.now(), plan });
|
|
612
|
+
return plan;
|
|
613
|
+
}
|
|
614
|
+
/**
|
|
615
|
+
* Tier R. Throws {@link IntuticGateRefusal} when an enforcing rule record
|
|
616
|
+
* refuses the call (`PREREQUISITE_UNMET`, `OUT_OF_SCOPE`, `OFF_PLAN`,
|
|
617
|
+
* `PLAN_NOT_APPROVED`), with the refusal's scope; each shadow record's
|
|
618
|
+
* finding is reported as `tool_would_block` and the call goes on.
|
|
619
|
+
*/
|
|
620
|
+
async guardRules(toolName, toolInput, note) {
|
|
621
|
+
if (!CAN_EVALUATE_RULE_RECORDS)
|
|
622
|
+
return;
|
|
623
|
+
const records = this.getSnapshot().ruleRecords;
|
|
624
|
+
if (records.length === 0)
|
|
625
|
+
return;
|
|
626
|
+
const sessionId = this.client?.sessionId ?? '';
|
|
627
|
+
const cwd = process.cwd();
|
|
628
|
+
const plan = records.some((r) => r.kind === 'plan_approval') ? await this.sessionPlan(sessionId) : { status: 'none' };
|
|
629
|
+
const ev = evaluateGateRuleRecords(records, {
|
|
630
|
+
tool: toolName,
|
|
631
|
+
input: toolInput,
|
|
632
|
+
actions: classify(toolName, toolInput),
|
|
633
|
+
cwd,
|
|
634
|
+
root: workspaceRoot(cwd),
|
|
635
|
+
sessionId,
|
|
636
|
+
harness: this.client?.harness ?? 'sdk',
|
|
637
|
+
outcomes: this._outcomes.get(sessionId) ?? null,
|
|
638
|
+
observable: true,
|
|
639
|
+
plan,
|
|
640
|
+
nowMs: Date.now(),
|
|
641
|
+
});
|
|
642
|
+
for (const f of ev.shadow)
|
|
643
|
+
await this.emit('tool_would_block', toolName, `${f.reason} [${f.ruleId}]`, toolInput);
|
|
644
|
+
if (ev.refusal === null)
|
|
645
|
+
return;
|
|
646
|
+
const f = ev.refusal;
|
|
647
|
+
if (note)
|
|
648
|
+
note.ruleId = f.ruleId;
|
|
649
|
+
await this.emit('tool_blocked', toolName, `${f.reason} [${f.ruleId}]`, toolInput);
|
|
650
|
+
const opaque = this.opaque();
|
|
651
|
+
throw new IntuticGateRefusal(this.shown(`${f.reason} [${f.ruleId}]`), f.code, undefined, refusalDetailForMode(opaque ? 'OPAQUE' : 'TRANSPARENT', f.scope, []));
|
|
652
|
+
}
|
|
653
|
+
/**
|
|
654
|
+
* Tier D. Throws when a decide rule on this tool refuses the call
|
|
655
|
+
* ({@link IntuticGateRefusal}, `DECIDE_REFUSED` or `GOVERNANCE_UNAVAILABLE`)
|
|
656
|
+
* or could not decide it ({@link IntuticGateEscalation}). Each shadow rule's
|
|
657
|
+
* finding is recorded; the call goes on.
|
|
658
|
+
*/
|
|
659
|
+
async guardDecide(toolName, toolInput, note) {
|
|
660
|
+
if (!CAN_EVALUATE_DECIDE)
|
|
661
|
+
return;
|
|
662
|
+
const rules = this.getSnapshot().decideRules.filter((r) => r.ir.on === 'tool_call' && (r.ir.tools ?? []).includes(toolName));
|
|
663
|
+
if (rules.length === 0)
|
|
664
|
+
return;
|
|
665
|
+
const budget = decideBudgetFromEnv();
|
|
666
|
+
let decision;
|
|
667
|
+
let timer;
|
|
668
|
+
const started = Date.now();
|
|
669
|
+
try {
|
|
670
|
+
const deps = decideDeps();
|
|
671
|
+
const cwd = process.cwd();
|
|
672
|
+
const ev = await Promise.race([
|
|
673
|
+
evaluateDecideCall({ deterministic: 'allow', tool: toolName, toolInput, cwd, rules, deadlineMs: started + budget }, deps),
|
|
674
|
+
new Promise((resolve) => { timer = setTimeout(() => resolve(null), budget + 250); }),
|
|
675
|
+
]);
|
|
676
|
+
if (ev !== null)
|
|
677
|
+
this.logDecide(ev, rules, { tool: toolName, toolInput, cwd, budgetMs: budget, startedMs: started, cfg: deps.cfg });
|
|
678
|
+
if (ev === null) {
|
|
679
|
+
decision = decideUnavailableDecision(rules, toolName, `the decide rules on ${toolName} were not evaluated within ${budget} ms`);
|
|
680
|
+
}
|
|
681
|
+
else {
|
|
682
|
+
for (const f of decideShadowFindings(ev, rules))
|
|
683
|
+
await this.emit('tool_would_block', toolName, `${f.reason} [${f.ruleId}]`, toolInput);
|
|
684
|
+
decision = decideDecision(ev, rules);
|
|
685
|
+
}
|
|
686
|
+
}
|
|
687
|
+
catch (err) {
|
|
688
|
+
decision = decideUnavailableDecision(rules, toolName, `the decide rules on ${toolName} could not be evaluated (${err instanceof Error ? err.message : String(err)})`);
|
|
689
|
+
}
|
|
690
|
+
finally {
|
|
691
|
+
if (timer)
|
|
692
|
+
clearTimeout(timer);
|
|
693
|
+
}
|
|
694
|
+
if (decision.outcome === 'allow')
|
|
695
|
+
return;
|
|
696
|
+
if (note && decision.ruleId)
|
|
697
|
+
note.ruleId = decision.ruleId;
|
|
698
|
+
const reason = decision.ruleId ? `${decision.reason} [${decision.ruleId}]` : decision.reason;
|
|
699
|
+
if (decision.outcome === 'escalate') {
|
|
700
|
+
await this.emit('tool_flagged', toolName, `DECIDE_ESCALATED — asked a person: ${reason}`, toolInput);
|
|
701
|
+
throw new IntuticGateEscalation(this.shown(reason), this.opaque() ? undefined : (decision.ruleId ?? undefined));
|
|
702
|
+
}
|
|
703
|
+
await this.emit('tool_blocked', toolName, reason, toolInput);
|
|
704
|
+
throw new IntuticGateRefusal(this.shown(reason), decision.code ?? 'GOVERNANCE_UNAVAILABLE');
|
|
705
|
+
}
|
|
706
|
+
/**
|
|
707
|
+
* Appends the call's decide record to `~/.intutic/logs/decide-<date>.jsonl`
|
|
708
|
+
* and updates each rule's drift stats, as `intutic decide check` does for
|
|
709
|
+
* the shell gates. Never throws: a log that cannot be written never
|
|
710
|
+
* changes the decision.
|
|
711
|
+
*/
|
|
712
|
+
logDecide(ev, rules, call) {
|
|
713
|
+
try {
|
|
714
|
+
const sha256Hex = (t) => createHash('sha256').update(t, 'utf-8').digest('hex');
|
|
715
|
+
const now = Date.now();
|
|
716
|
+
writeDecideCallLog(ev, rules, {
|
|
717
|
+
atMs: now,
|
|
718
|
+
harness: this.client?.harness ?? 'sdk',
|
|
719
|
+
workspaceId: this.cfg.workspaceId,
|
|
720
|
+
sessionId: this.client?.sessionId ?? '',
|
|
721
|
+
tool: call.tool,
|
|
722
|
+
toolInput: call.toolInput,
|
|
723
|
+
cwd: call.cwd,
|
|
724
|
+
budgetMs: call.budgetMs,
|
|
725
|
+
latencyMs: now - call.startedMs,
|
|
726
|
+
engine: decideLogEngine(call.cfg, ev),
|
|
727
|
+
redact: DECIDE_LOG_REDACTION_SOURCES,
|
|
728
|
+
// The call's reversibility class; a gate has no revert rates.
|
|
729
|
+
lane: laneOf(classify(call.tool, call.toolInput)),
|
|
730
|
+
revertRate: null,
|
|
731
|
+
}, decideLogDeps(fs, homedir(), sha256Hex));
|
|
732
|
+
}
|
|
733
|
+
catch {
|
|
734
|
+
// A log that cannot be written never changes the decision.
|
|
735
|
+
}
|
|
736
|
+
}
|
|
453
737
|
/**
|
|
454
738
|
* Throws when the workspace's MCP server registry or allowlist refuses an
|
|
455
739
|
* `mcp__<server>__<tool>` call: the registry first, as every gate orders
|
|
@@ -539,6 +823,18 @@ function trimLeadingSlashes(s) {
|
|
|
539
823
|
function joinPath(a, b) {
|
|
540
824
|
return `${trimTrailingSlashes(a)}/${trimLeadingSlashes(b)}`;
|
|
541
825
|
}
|
|
826
|
+
/** The workspace root Tier R makes paths relative to: the nearest directory at or above `cwd` holding `.git`, else `cwd`. */
|
|
827
|
+
function workspaceRoot(cwd) {
|
|
828
|
+
let dir = cwd;
|
|
829
|
+
for (;;) {
|
|
830
|
+
if (existsSync(joinPath(dir, '.git')))
|
|
831
|
+
return dir;
|
|
832
|
+
const parent = dirname(dir);
|
|
833
|
+
if (parent === dir)
|
|
834
|
+
return cwd;
|
|
835
|
+
dir = parent;
|
|
836
|
+
}
|
|
837
|
+
}
|
|
542
838
|
// The process-wide active gate lives in registry.ts, which imports no Node.js
|
|
543
839
|
// built-ins (see that module's doc); re-exported so the API is unchanged.
|
|
544
840
|
export { install, active } from './registry.js';
|
package/dist/gate.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gate.js","sourceRoot":"","sources":["../src/gate.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"gate.js","sourceRoot":"","sources":["../src/gate.ts"],"names":[],"mappings":"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"}
|