@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/dsh.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dsh.d.ts","sourceRoot":"","sources":["../src/dsh.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwFG;AAGH,OAAO,EAAE,IAAI,EAAW,MAAM,WAAW,CAAA;AACzC,OAAO,KAAK,EAAE,UAAU,EAAa,MAAM,WAAW,CAAA;AAItD;0CAC0C;AAC1C,eAAO,MAAM,WAAW,uBAAuB,CAAA;AAE/C;;;;;;GAMG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAA;CAC5B;AAED;wEACwE;AACxE,MAAM,MAAM,kBAAkB,GAC1B;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,GACjB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAChC;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAChC;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,CAAA;AAEtB;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,EAAE,CACA,KAAK,EAAE,mBAAmB,EAC1B,QAAQ,EAAE,CAAC,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC,kBAAkB,CAAC,KAAK,OAAO,CAAC,kBAAkB,CAAC,GACzG,MAAM,OAAO,CAAA;CACjB;AAED;;;;oCAIoC;AACpC,MAAM,WAAW,aAAc,SAAQ,UAAU;IAC/C;0EACsE;IACtE,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED;;;oDAGoD;AACpD,eAAO,MAAM,MAAM,UAAY,CAAA;AAwC/B;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,IAAI,GACT,CAAC,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC,kBAAkB,CAAC,KAAK,OAAO,CAAC,kBAAkB,CAAC,
|
|
1
|
+
{"version":3,"file":"dsh.d.ts","sourceRoot":"","sources":["../src/dsh.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwFG;AAGH,OAAO,EAAE,IAAI,EAAW,MAAM,WAAW,CAAA;AACzC,OAAO,KAAK,EAAE,UAAU,EAAa,MAAM,WAAW,CAAA;AAItD;0CAC0C;AAC1C,eAAO,MAAM,WAAW,uBAAuB,CAAA;AAE/C;;;;;;GAMG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAA;CAC5B;AAED;wEACwE;AACxE,MAAM,MAAM,kBAAkB,GAC1B;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,GACjB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAChC;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAChC;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,CAAA;AAEtB;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,EAAE,CACA,KAAK,EAAE,mBAAmB,EAC1B,QAAQ,EAAE,CAAC,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC,kBAAkB,CAAC,KAAK,OAAO,CAAC,kBAAkB,CAAC,GACzG,MAAM,OAAO,CAAA;CACjB;AAED;;;;oCAIoC;AACpC,MAAM,WAAW,aAAc,SAAQ,UAAU;IAC/C;0EACsE;IACtE,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED;;;oDAGoD;AACpD,eAAO,MAAM,MAAM,UAAY,CAAA;AAwC/B;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,IAAI,GACT,CAAC,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC,kBAAkB,CAAC,KAAK,OAAO,CAAC,kBAAkB,CAAC,CAyBlG;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,KAAK,CAAC,GAAG,EAAE,iBAAiB,EAAE,MAAM,GAAE,aAAkB,GAAG,IAAI,CAY9E;AAED;;;;;oEAKoE;;;;;;AACpE,wBAAmD"}
|
package/dist/dsh.js
CHANGED
|
@@ -90,7 +90,7 @@
|
|
|
90
90
|
import { randomUUID } from 'node:crypto';
|
|
91
91
|
import { Gate, install } from './gate.js';
|
|
92
92
|
import { GateClient } from './client.js';
|
|
93
|
-
import { IntuticGateRefusal } from './errors.js';
|
|
93
|
+
import { IntuticGateEscalation, IntuticGateRefusal } from './errors.js';
|
|
94
94
|
/** The Cordis Plugin id this module registers as. Shown in dsh's own plugin
|
|
95
95
|
* diagnostics/`--dump-config` output. */
|
|
96
96
|
export const PLUGIN_NAME = 'intutic-governance';
|
|
@@ -157,6 +157,11 @@ export function createPreExecuteListener(gate) {
|
|
|
157
157
|
await gate.guard(exec.name, renderDshToolInput(exec.arguments));
|
|
158
158
|
}
|
|
159
159
|
catch (err) {
|
|
160
|
+
// A decide rule that could not decide asks the user through dsh's
|
|
161
|
+
// approval, which denies when no approval service is mounted.
|
|
162
|
+
if (err instanceof IntuticGateEscalation) {
|
|
163
|
+
return { kind: 'ask', reason: err.reason };
|
|
164
|
+
}
|
|
160
165
|
if (err instanceof IntuticGateRefusal) {
|
|
161
166
|
return { kind: 'deny', reason: err.message };
|
|
162
167
|
}
|
package/dist/dsh.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dsh.js","sourceRoot":"","sources":["../src/dsh.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwFG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEzC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"dsh.js","sourceRoot":"","sources":["../src/dsh.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwFG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEzC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAEvE;0CAC0C;AAC1C,MAAM,CAAC,MAAM,WAAW,GAAG,oBAAoB,CAAA;AA4C/C;;;oDAGoD;AACpD,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,OAAO,CAAC,CAAA;AAE/B;;;;;;;;;GASG;AACH,SAAS,kBAAkB,CAAC,IAAa;IACvC,IAAI,IAAI,KAAK,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACtE,OAAO,IAAiB,CAAA;IAC1B,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,CAAA;AACzB,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,SAAS,gBAAgB,CAAC,MAAqB;IAC7C,OAAO,MAAM,CAAC,SAAS,IAAI,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,UAAU,EAAE,CAAA;AAC3E,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,wBAAwB,CACtC,IAAU;IAEV,OAAO,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;QAC1B,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAA;QACjE,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,kEAAkE;YAClE,8DAA8D;YAC9D,IAAI,GAAG,YAAY,qBAAqB,EAAE,CAAC;gBACzC,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAAA;YAC5C,CAAC;YACD,IAAI,GAAG,YAAY,kBAAkB,EAAE,CAAC;gBACtC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,OAAO,EAAE,CAAA;YAC9C,CAAC;YACD,MAAM,MAAM,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;YAC/D,OAAO;gBACL,IAAI,EAAE,MAAM;gBACZ,MAAM,EAAE,+CAA+C,MAAM,8DAA8D;aAC5H,CAAA;QACH,CAAC;QACD,yEAAyE;QACzE,gEAAgE;QAChE,oEAAoE;QACpE,gCAAgC;QAChC,OAAO,IAAI,EAAE,CAAA;IACf,CAAC,CAAA;AACH,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,KAAK,CAAC,GAAsB,EAAE,SAAwB,EAAE;IACtE,IAAI,MAAyB,CAAA;IAC7B,IAAI,CAAC;QACH,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;IACtF,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,GAAG,IAAI,CAAA;IACf,CAAC;IAED,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACrC,OAAO,CAAC,IAAI,CAAC,CAAA;IAEb,GAAG,CAAC,EAAE,CAAC,mBAAmB,EAAE,wBAAwB,CAAC,IAAI,CAAC,CAAC,CAAA;AAC7D,CAAC;AAED;;;;;oEAKoE;AACpE,eAAe,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA"}
|
package/dist/errors.d.ts
CHANGED
|
@@ -17,6 +17,7 @@
|
|
|
17
17
|
* Open WebUI filter and the Python SDK raise — so harnesses and log scrapers
|
|
18
18
|
* that already recognise that prefix recognise this refusal too.
|
|
19
19
|
*/
|
|
20
|
+
import type { RefusalEvidence, RefusalScope } from './refusalDetail.js';
|
|
20
21
|
/** Base class for every error this package throws. */
|
|
21
22
|
export declare class GateError extends Error {
|
|
22
23
|
constructor(message: string);
|
|
@@ -31,7 +32,7 @@ export declare class GateConnectionError extends GateError {
|
|
|
31
32
|
* `packages/shared-types/fixtures/refusal-codes.json` (`gate`) by a test, as
|
|
32
33
|
* the Python gate's list and the gate SDK reference are.
|
|
33
34
|
*/
|
|
34
|
-
export declare const GATE_REFUSAL_CODES: readonly ["SSO_GROUP", "SNAPSHOT", "HELD", "SERVER_BLOCKED", "SERVER_HELD", "SERVER_NOT_APPROVED", "TOOL_DISABLED", "SERVER_NOT_ALLOWED", "POLICY_SNAPSHOT_UNVERIFIED", "SOP_RULE", "HOOK_GATE", "INSUFFICIENT_SCOPE", "COMMAND_TOO_LARGE", "CHAOS_FAULT", "E_UNPINNED_LATEST", "E_UNPINNED_TAG", "E_UNKNOWN_REGISTRY", "E_UNKNOWN_IMAGE", "E_DIGEST_MISMATCH", "E_MANIFEST_UNPARSEABLE", "WORKFLOW_SANDBOX", "NO_GATE"];
|
|
35
|
+
export declare const GATE_REFUSAL_CODES: readonly ["SSO_GROUP", "SNAPSHOT", "HELD", "PREREQUISITE_UNMET", "OUT_OF_SCOPE", "OFF_PLAN", "PLAN_NOT_APPROVED", "SERVER_BLOCKED", "SERVER_HELD", "SERVER_NOT_APPROVED", "TOOL_DISABLED", "SERVER_NOT_ALLOWED", "POLICY_SNAPSHOT_UNVERIFIED", "SOP_RULE", "HOOK_GATE", "INSUFFICIENT_SCOPE", "COMMAND_TOO_LARGE", "CHAOS_FAULT", "E_UNPINNED_LATEST", "E_UNPINNED_TAG", "E_UNKNOWN_REGISTRY", "E_UNKNOWN_IMAGE", "E_DIGEST_MISMATCH", "E_MANIFEST_UNPARSEABLE", "DECIDE_REFUSED", "DECIDE_ESCALATED", "GOVERNANCE_UNAVAILABLE", "WORKFLOW_SANDBOX", "NO_GATE"];
|
|
35
36
|
export type GateRefusalCode = (typeof GATE_REFUSAL_CODES)[number];
|
|
36
37
|
/**
|
|
37
38
|
* Raised when a tool call must not run.
|
|
@@ -44,7 +45,18 @@ export declare class IntuticGateRefusal extends GateError {
|
|
|
44
45
|
readonly reason: string;
|
|
45
46
|
readonly code: GateRefusalCode;
|
|
46
47
|
readonly incidentId: string | undefined;
|
|
47
|
-
|
|
48
|
+
/**
|
|
49
|
+
* Where the refusal applies, so a retry can stay out of it (paths, tools,
|
|
50
|
+
* step, detector, rule), bounded as refusalDetail.ts says. Undefined when
|
|
51
|
+
* the refusal names none, and always in an OPAQUE workspace.
|
|
52
|
+
*/
|
|
53
|
+
readonly scope: RefusalScope | undefined;
|
|
54
|
+
/** What the refuser saw, bounded; undefined when nothing, and in OPAQUE. */
|
|
55
|
+
readonly evidence: RefusalEvidence[] | undefined;
|
|
56
|
+
constructor(reason: string, code: GateRefusalCode, incidentId?: string, detail?: {
|
|
57
|
+
scope?: RefusalScope;
|
|
58
|
+
evidence?: RefusalEvidence[];
|
|
59
|
+
});
|
|
48
60
|
}
|
|
49
61
|
/**
|
|
50
62
|
* Raised when a hold rule stopped the call to ask a person first (`code`
|
|
@@ -61,4 +73,16 @@ export declare class IntuticGateHold extends IntuticGateRefusal {
|
|
|
61
73
|
readonly holdId: string | undefined;
|
|
62
74
|
constructor(reason: string, holdId: string | undefined);
|
|
63
75
|
}
|
|
76
|
+
/**
|
|
77
|
+
* Raised when a decide rule could not decide the call and a person should
|
|
78
|
+
* (`code` `DECIDE_ESCALATED`): the answers fell between its bands, or the
|
|
79
|
+
* option orders disagreed. A subclass, so a caller that stops on every
|
|
80
|
+
* refusal stops on this too; one that can ask its user (dsh's approval) asks
|
|
81
|
+
* with `reason` and runs the call only on a yes. `ruleId` names the rule
|
|
82
|
+
* (`decide.<ruleRef>`), and is `undefined` in an OPAQUE workspace.
|
|
83
|
+
*/
|
|
84
|
+
export declare class IntuticGateEscalation extends IntuticGateRefusal {
|
|
85
|
+
readonly ruleId: string | undefined;
|
|
86
|
+
constructor(reason: string, ruleId: string | undefined);
|
|
87
|
+
}
|
|
64
88
|
//# sourceMappingURL=errors.d.ts.map
|
package/dist/errors.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,sDAAsD;AACtD,qBAAa,SAAU,SAAQ,KAAK;gBACtB,OAAO,EAAE,MAAM;CAI5B;AAED,kEAAkE;AAClE,qBAAa,mBAAoB,SAAQ,SAAS;gBACpC,OAAO,EAAE,MAAM;CAI5B;AAED;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAEvE,sDAAsD;AACtD,qBAAa,SAAU,SAAQ,KAAK;gBACtB,OAAO,EAAE,MAAM;CAI5B;AAED,kEAAkE;AAClE,qBAAa,mBAAoB,SAAQ,SAAS;gBACpC,OAAO,EAAE,MAAM;CAI5B;AAED;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,iiBA0CrB,CAAA;AAEV,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAA;AAEjE;;;;;;GAMG;AACH,qBAAa,kBAAmB,SAAQ,SAAS;IAC/C,SAAgB,MAAM,EAAE,MAAM,CAAA;IAC9B,SAAgB,IAAI,EAAE,eAAe,CAAA;IACrC,SAAgB,UAAU,EAAE,MAAM,GAAG,SAAS,CAAA;IAC9C;;;;OAIG;IACH,SAAgB,KAAK,EAAE,YAAY,GAAG,SAAS,CAAA;IAC/C,4EAA4E;IAC5E,SAAgB,QAAQ,EAAE,eAAe,EAAE,GAAG,SAAS,CAAA;gBAE3C,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,YAAY,CAAC;QAAC,QAAQ,CAAC,EAAE,eAAe,EAAE,CAAA;KAAE;CASxI;AAED;;;;;;;;;;GAUG;AACH,qBAAa,eAAgB,SAAQ,kBAAkB;IACrD,SAAgB,MAAM,EAAE,MAAM,GAAG,SAAS,CAAA;gBAE9B,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,SAAS;CAMvD;AAED;;;;;;;GAOG;AACH,qBAAa,qBAAsB,SAAQ,kBAAkB;IAC3D,SAAgB,MAAM,EAAE,MAAM,GAAG,SAAS,CAAA;gBAE9B,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,SAAS;CAKvD"}
|
package/dist/errors.js
CHANGED
|
@@ -41,6 +41,12 @@ export const GATE_REFUSAL_CODES = [
|
|
|
41
41
|
'SSO_GROUP',
|
|
42
42
|
'SNAPSHOT',
|
|
43
43
|
'HELD',
|
|
44
|
+
// Tier R, the snapshot's rule records (gateRuleRecord.ts): a qualified
|
|
45
|
+
// requires_before, scope_paths_mode: enforce, plan_approval.
|
|
46
|
+
'PREREQUISITE_UNMET',
|
|
47
|
+
'OUT_OF_SCOPE',
|
|
48
|
+
'OFF_PLAN',
|
|
49
|
+
'PLAN_NOT_APPROVED',
|
|
44
50
|
// The MCP server registry and allowlist, from the policy snapshot or the
|
|
45
51
|
// control plane's hook gate.
|
|
46
52
|
'SERVER_BLOCKED',
|
|
@@ -65,6 +71,11 @@ export const GATE_REFUSAL_CODES = [
|
|
|
65
71
|
'E_UNKNOWN_IMAGE',
|
|
66
72
|
'E_DIGEST_MISMATCH',
|
|
67
73
|
'E_MANIFEST_UNPARSEABLE',
|
|
74
|
+
// A decide rule (the Decide tier, after every deterministic tier allowed
|
|
75
|
+
// the call): refused, escalated with no way to ask, or its engine unavailable.
|
|
76
|
+
'DECIDE_REFUSED',
|
|
77
|
+
'DECIDE_ESCALATED',
|
|
78
|
+
'GOVERNANCE_UNAVAILABLE',
|
|
68
79
|
// The Workflow DevKit adapter (workflow.ts), before any tier runs.
|
|
69
80
|
'WORKFLOW_SANDBOX',
|
|
70
81
|
'NO_GATE',
|
|
@@ -80,12 +91,22 @@ export class IntuticGateRefusal extends GateError {
|
|
|
80
91
|
reason;
|
|
81
92
|
code;
|
|
82
93
|
incidentId;
|
|
83
|
-
|
|
94
|
+
/**
|
|
95
|
+
* Where the refusal applies, so a retry can stay out of it (paths, tools,
|
|
96
|
+
* step, detector, rule), bounded as refusalDetail.ts says. Undefined when
|
|
97
|
+
* the refusal names none, and always in an OPAQUE workspace.
|
|
98
|
+
*/
|
|
99
|
+
scope;
|
|
100
|
+
/** What the refuser saw, bounded; undefined when nothing, and in OPAQUE. */
|
|
101
|
+
evidence;
|
|
102
|
+
constructor(reason, code, incidentId, detail) {
|
|
84
103
|
super(`[Intutic Governance] BLOCKED: ${reason}`);
|
|
85
104
|
this.name = 'IntuticGateRefusal';
|
|
86
105
|
this.reason = reason;
|
|
87
106
|
this.code = code;
|
|
88
107
|
this.incidentId = incidentId;
|
|
108
|
+
this.scope = detail?.scope;
|
|
109
|
+
this.evidence = detail?.evidence;
|
|
89
110
|
}
|
|
90
111
|
}
|
|
91
112
|
/**
|
|
@@ -108,4 +129,20 @@ export class IntuticGateHold extends IntuticGateRefusal {
|
|
|
108
129
|
this.holdId = holdId;
|
|
109
130
|
}
|
|
110
131
|
}
|
|
132
|
+
/**
|
|
133
|
+
* Raised when a decide rule could not decide the call and a person should
|
|
134
|
+
* (`code` `DECIDE_ESCALATED`): the answers fell between its bands, or the
|
|
135
|
+
* option orders disagreed. A subclass, so a caller that stops on every
|
|
136
|
+
* refusal stops on this too; one that can ask its user (dsh's approval) asks
|
|
137
|
+
* with `reason` and runs the call only on a yes. `ruleId` names the rule
|
|
138
|
+
* (`decide.<ruleRef>`), and is `undefined` in an OPAQUE workspace.
|
|
139
|
+
*/
|
|
140
|
+
export class IntuticGateEscalation extends IntuticGateRefusal {
|
|
141
|
+
ruleId;
|
|
142
|
+
constructor(reason, ruleId) {
|
|
143
|
+
super(reason, 'DECIDE_ESCALATED');
|
|
144
|
+
this.name = 'IntuticGateEscalation';
|
|
145
|
+
this.ruleId = ruleId;
|
|
146
|
+
}
|
|
147
|
+
}
|
|
111
148
|
//# sourceMappingURL=errors.js.map
|
package/dist/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAIH,sDAAsD;AACtD,MAAM,OAAO,SAAU,SAAQ,KAAK;IAClC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,IAAI,GAAG,WAAW,CAAA;IACzB,CAAC;CACF;AAED,kEAAkE;AAClE,MAAM,OAAO,mBAAoB,SAAQ,SAAS;IAChD,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAA;IACnC,CAAC;CACF;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,WAAW;IACX,UAAU;IACV,MAAM;IACN,uEAAuE;IACvE,6DAA6D;IAC7D,oBAAoB;IACpB,cAAc;IACd,UAAU;IACV,mBAAmB;IACnB,yEAAyE;IACzE,6BAA6B;IAC7B,gBAAgB;IAChB,aAAa;IACb,qBAAqB;IACrB,eAAe;IACf,oBAAoB;IACpB,qEAAqE;IACrE,4BAA4B;IAC5B,UAAU;IACV,WAAW;IACX,+DAA+D;IAC/D,oBAAoB;IACpB,uEAAuE;IACvE,mBAAmB;IACnB,0EAA0E;IAC1E,+DAA+D;IAC/D,aAAa;IACb,mBAAmB;IACnB,gBAAgB;IAChB,oBAAoB;IACpB,iBAAiB;IACjB,mBAAmB;IACnB,wBAAwB;IACxB,yEAAyE;IACzE,+EAA+E;IAC/E,gBAAgB;IAChB,kBAAkB;IAClB,wBAAwB;IACxB,mEAAmE;IACnE,kBAAkB;IAClB,SAAS;CACD,CAAA;AAIV;;;;;;GAMG;AACH,MAAM,OAAO,kBAAmB,SAAQ,SAAS;IAC/B,MAAM,CAAQ;IACd,IAAI,CAAiB;IACrB,UAAU,CAAoB;IAC9C;;;;OAIG;IACa,KAAK,CAA0B;IAC/C,4EAA4E;IAC5D,QAAQ,CAA+B;IAEvD,YAAY,MAAc,EAAE,IAAqB,EAAE,UAAmB,EAAE,MAA+D;QACrI,KAAK,CAAC,iCAAiC,MAAM,EAAE,CAAC,CAAA;QAChD,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAA;QAChC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;QAC5B,IAAI,CAAC,KAAK,GAAG,MAAM,EAAE,KAAK,CAAA;QAC1B,IAAI,CAAC,QAAQ,GAAG,MAAM,EAAE,QAAQ,CAAA;IAClC,CAAC;CACF;AAED;;;;;;;;;;GAUG;AACH,MAAM,OAAO,eAAgB,SAAQ,kBAAkB;IACrC,MAAM,CAAoB;IAE1C,YAAY,MAAc,EAAE,MAA0B;QACpD,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QACrB,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAA;QAC7B,IAAI,CAAC,OAAO,GAAG,8BAA8B,MAAM,EAAE,CAAA;QACrD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;IACtB,CAAC;CACF;AAED;;;;;;;GAOG;AACH,MAAM,OAAO,qBAAsB,SAAQ,kBAAkB;IAC3C,MAAM,CAAoB;IAE1C,YAAY,MAAc,EAAE,MAA0B;QACpD,KAAK,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAA;QACjC,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAA;QACnC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;IACtB,CAAC;CACF"}
|
package/dist/gate.d.ts
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,
|
|
@@ -81,6 +106,27 @@ import { GateClient } from './client.js';
|
|
|
81
106
|
import * as imagecheck from './imagecheck.js';
|
|
82
107
|
import * as snapshot from './snapshot.js';
|
|
83
108
|
import * as soprules from './soprules.js';
|
|
109
|
+
/**
|
|
110
|
+
* Whether this gate evaluates the decide rules a snapshot carries (Tier D).
|
|
111
|
+
* Only a gate that does skips a decide rule's fallback line, and only when
|
|
112
|
+
* the rule's record decoded; otherwise the fallback line refuses its tools,
|
|
113
|
+
* as in a gate that reads no `@decide` records.
|
|
114
|
+
*/
|
|
115
|
+
export declare const CAN_EVALUATE_DECIDE = true;
|
|
116
|
+
/**
|
|
117
|
+
* Whether this gate evaluates the `@rule` records a snapshot carries (Tier
|
|
118
|
+
* R). Only a gate that does skips a record's fallback line, and only when
|
|
119
|
+
* the record decoded.
|
|
120
|
+
*/
|
|
121
|
+
export declare const CAN_EVALUATE_RULE_RECORDS = true;
|
|
122
|
+
/** How long Tier R keeps a session's plan before reading it again. */
|
|
123
|
+
export declare const PLAN_CACHE_MS = 30000;
|
|
124
|
+
/** What a tool call's result says about how it went, for {@link Gate.recordOutcome}. */
|
|
125
|
+
export interface ToolOutcome {
|
|
126
|
+
exitCode?: number | null;
|
|
127
|
+
isError?: boolean | null;
|
|
128
|
+
output?: string | null;
|
|
129
|
+
}
|
|
84
130
|
/** Tools that cannot change anything. They still get the local snapshot check
|
|
85
131
|
* (Tier A1), but skip the remote gate call (Tier B). */
|
|
86
132
|
export declare const READ_ONLY_TOOLS: ReadonlySet<string>;
|
|
@@ -146,6 +192,10 @@ export declare class Gate {
|
|
|
146
192
|
/** The SOP register said the workspace is OPAQUE (read with its rules). */
|
|
147
193
|
private _registerOpaque;
|
|
148
194
|
private _chaos;
|
|
195
|
+
/** The outcome state of each session (testOutcome.ts), by session id, in memory. */
|
|
196
|
+
private _outcomes;
|
|
197
|
+
/** Each session's plan, as Tier R last read it. */
|
|
198
|
+
private _plans;
|
|
149
199
|
constructor(cfg?: GateConfig, client?: GateClient | null);
|
|
150
200
|
private allowlistAbs;
|
|
151
201
|
getSnapshot(): snapshot.Snapshot;
|
|
@@ -205,6 +255,40 @@ export declare class Gate {
|
|
|
205
255
|
guard(toolName: string, toolInput: ToolInput): Promise<void>;
|
|
206
256
|
/** The tiers: throws to refuse, resolves to allow. `note` collects a chaos run's record of the call. */
|
|
207
257
|
private decide;
|
|
258
|
+
/**
|
|
259
|
+
* Records how a call that ran went, for Tier R. A test run
|
|
260
|
+
* (`action:run_tests`) records its outcome (testOutcome.ts: the exit code,
|
|
261
|
+
* else one read from `output`, the error flag and the runner summaries);
|
|
262
|
+
* any other call marks earlier outcomes as no longer adjacent, and a call
|
|
263
|
+
* that changed files (`isFileWriteCall`, scopeMatch.ts) makes an earlier pass stale.
|
|
264
|
+
* Kept in memory per {@link GateClient.sessionId}; with no session id
|
|
265
|
+
* nothing is kept, and a qualified rule stays unmet. {@link wrapTool} calls
|
|
266
|
+
* this after every call it ran.
|
|
267
|
+
*/
|
|
268
|
+
recordOutcome(toolName: string, toolInput: ToolInput, result?: ToolOutcome): void;
|
|
269
|
+
/** The session's plan, read at most every {@link PLAN_CACHE_MS}. */
|
|
270
|
+
private sessionPlan;
|
|
271
|
+
/**
|
|
272
|
+
* Tier R. Throws {@link IntuticGateRefusal} when an enforcing rule record
|
|
273
|
+
* refuses the call (`PREREQUISITE_UNMET`, `OUT_OF_SCOPE`, `OFF_PLAN`,
|
|
274
|
+
* `PLAN_NOT_APPROVED`), with the refusal's scope; each shadow record's
|
|
275
|
+
* finding is reported as `tool_would_block` and the call goes on.
|
|
276
|
+
*/
|
|
277
|
+
private guardRules;
|
|
278
|
+
/**
|
|
279
|
+
* Tier D. Throws when a decide rule on this tool refuses the call
|
|
280
|
+
* ({@link IntuticGateRefusal}, `DECIDE_REFUSED` or `GOVERNANCE_UNAVAILABLE`)
|
|
281
|
+
* or could not decide it ({@link IntuticGateEscalation}). Each shadow rule's
|
|
282
|
+
* finding is recorded; the call goes on.
|
|
283
|
+
*/
|
|
284
|
+
private guardDecide;
|
|
285
|
+
/**
|
|
286
|
+
* Appends the call's decide record to `~/.intutic/logs/decide-<date>.jsonl`
|
|
287
|
+
* and updates each rule's drift stats, as `intutic decide check` does for
|
|
288
|
+
* the shell gates. Never throws: a log that cannot be written never
|
|
289
|
+
* changes the decision.
|
|
290
|
+
*/
|
|
291
|
+
private logDecide;
|
|
208
292
|
/**
|
|
209
293
|
* Throws when the workspace's MCP server registry or allowlist refuses an
|
|
210
294
|
* `mcp__<server>__<tool>` call: the registry first, as every gate orders
|
package/dist/gate.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gate.d.ts","sourceRoot":"","sources":["../src/gate.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"gate.d.ts","sourceRoot":"","sources":["../src/gate.ts"],"names":[],"mappings":"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"}
|