@smooai/smooth-operator-core 0.20.4 → 0.22.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/agent.d.ts +30 -0
- package/dist/agent.d.ts.map +1 -1
- package/dist/agent.js +25 -0
- package/dist/agent.js.map +1 -1
- package/dist/denyPolicy.d.ts +99 -0
- package/dist/denyPolicy.d.ts.map +1 -0
- package/dist/denyPolicy.js +256 -0
- package/dist/denyPolicy.js.map +1 -0
- package/dist/humanGate.d.ts +9 -0
- package/dist/humanGate.d.ts.map +1 -1
- package/dist/humanGate.js +4 -0
- package/dist/humanGate.js.map +1 -1
- package/dist/index.d.ts +7 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -1
- package/dist/index.js.map +1 -1
- package/dist/permission.d.ts +146 -0
- package/dist/permission.d.ts.map +1 -0
- package/dist/permission.js +716 -0
- package/dist/permission.js.map +1 -0
- package/dist/permissionGrants.d.ts +89 -0
- package/dist/permissionGrants.d.ts.map +1 -0
- package/dist/permissionGrants.js +155 -0
- package/dist/permissionGrants.js.map +1 -0
- package/package.json +1 -1
package/dist/agent.d.ts
CHANGED
|
@@ -19,6 +19,9 @@ import type { Reranker } from './rerank.js';
|
|
|
19
19
|
import type { CostBudget, ModelPricing, Usage } from './cost.js';
|
|
20
20
|
import type { HumanGate } from './humanGate.js';
|
|
21
21
|
import type { Knowledge } from './knowledge.js';
|
|
22
|
+
import type { DenyPolicy } from './denyPolicy.js';
|
|
23
|
+
import { AutoMode } from './permission.js';
|
|
24
|
+
import type { PermissionGrants } from './permissionGrants.js';
|
|
22
25
|
/** A callable tool the agent may invoke. Mirrors the reference engines' tool seam. */
|
|
23
26
|
export interface Tool {
|
|
24
27
|
name: string;
|
|
@@ -108,6 +111,31 @@ export interface AgentOptions {
|
|
|
108
111
|
* Example: `requiresApproval: (name) => name === 'delete_record' || name === 'send_email'`.
|
|
109
112
|
*/
|
|
110
113
|
requiresApproval?: (name: string, args: Record<string, unknown>) => boolean;
|
|
114
|
+
/**
|
|
115
|
+
* Enable the native permission gate ({@link PermissionHook}). When set (or when
|
|
116
|
+
* {@link denyPolicy} / {@link permissionGrants} is set, defaulting to
|
|
117
|
+
* {@link AutoMode.Ask}), every tool call is classified before dispatch: read-only
|
|
118
|
+
* calls allow, dangerous calls (`rm -rf /`, credential paths, `curl | sh`,
|
|
119
|
+
* dangerous domains, env dumps) hard-deny in EVERY mode, and mutating/unknown
|
|
120
|
+
* calls `Ask`. An `Ask` is routed to {@link humanGate} when one is wired and
|
|
121
|
+
* **fails closed** (blocked, surfaced to the model) otherwise. A blocked call is
|
|
122
|
+
* never executed; the model is told why. Undefined ⇒ the gate is off (prior
|
|
123
|
+
* behaviour). Mirrors the Rust engine's `SMOOTH_AUTO_MODE` / `PermissionHook`.
|
|
124
|
+
*/
|
|
125
|
+
permissionMode?: AutoMode;
|
|
126
|
+
/**
|
|
127
|
+
* A consumer {@link DenyPolicy} (declarative deny rules + predicates). Evaluated
|
|
128
|
+
* FIRST as a circuit-breaker: a match hard-denies regardless of grants or mode
|
|
129
|
+
* (including {@link AutoMode.Bypass}). Setting this alone enables the gate at
|
|
130
|
+
* {@link AutoMode.Ask}. Purely additive — an empty/absent policy changes nothing.
|
|
131
|
+
*/
|
|
132
|
+
denyPolicy?: DenyPolicy;
|
|
133
|
+
/**
|
|
134
|
+
* In-memory allow-list consulted before prompting on an `Ask`. A matching grant
|
|
135
|
+
* auto-approves silently; an `approveAlways` answer adds a grant. Setting this
|
|
136
|
+
* alone enables the gate at {@link AutoMode.Ask}. The consumer owns persistence.
|
|
137
|
+
*/
|
|
138
|
+
permissionGrants?: PermissionGrants;
|
|
111
139
|
/**
|
|
112
140
|
* Number of ADDITIONAL attempts after the first if the model call throws a transient
|
|
113
141
|
* error (rate-limit, 5xx, dropped connection). `0` (the default) preserves today's
|
|
@@ -237,6 +265,8 @@ export declare class SmoothAgent {
|
|
|
237
265
|
private readonly client;
|
|
238
266
|
private readonly options;
|
|
239
267
|
private readonly toolsByName;
|
|
268
|
+
/** The native permission gate, built when permissionMode/denyPolicy/permissionGrants is set; else undefined (gate off). */
|
|
269
|
+
private readonly permissionHook?;
|
|
240
270
|
constructor(client: ChatClientLike, options?: AgentOptions);
|
|
241
271
|
private buildSystem;
|
|
242
272
|
private toolSpecs;
|
package/dist/agent.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAG5C,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AACjE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEhD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAG5C,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AACjE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEhD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAkB,MAAM,iBAAiB,CAAC;AAC3D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAG9D,sFAAsF;AACtF,MAAM,WAAW,IAAI;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,4CAA4C;IAC5C,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CAC3D;AAED,MAAM,WAAW,YAAY;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;;;;;;;OAWG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,kFAAkF;IAClF,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,6HAA6H;IAC7H,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,uFAAuF;IACvF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,8DAA8D;IAC9D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC;IACf;;;;;;;;OAQG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;;;;;;OAOG;IACH,aAAa,CAAC,EAAE,IAAI,EAAE,CAAC;IACvB;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,kIAAkI;IAClI,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,oFAAoF;IACpF,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACvC,2FAA2F;IAC3F,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,gFAAgF;IAChF,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;;OAIG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB;;;;OAIG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC;IAC5E;;;;;;;;;;OAUG;IACH,cAAc,CAAC,EAAE,QAAQ,CAAC;IAC1B;;;;;OAKG;IACH,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC;;;;;OAKG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,gBAAgB;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,KAAK,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,sEAAsE;IACtE,cAAc,EAAE,OAAO,CAAC;CAC3B;AAED;;;;;;GAMG;AACH,MAAM,WAAW,SAAS;IACtB,OAAO,EAAE,KAAK,CAAC;QACX,KAAK,EAAE;YACH,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;YACxB,UAAU,CAAC,EAAE,KAAK,CAAC;gBACf,KAAK,EAAE,MAAM,CAAC;gBACd,EAAE,CAAC,EAAE,MAAM,CAAC;gBACZ,QAAQ,CAAC,EAAE;oBAAE,IAAI,CAAC,EAAE,MAAM,CAAC;oBAAC,SAAS,CAAC,EAAE,MAAM,CAAA;iBAAE,CAAC;aACpD,CAAC,GAAG,IAAI,CAAC;SACb,CAAC;KACL,CAAC,CAAC;IACH,KAAK,CAAC,EAAE;QAAE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,GAAG,IAAI,CAAC;CACvF;AAED;;;;;;;;;;GAUG;AACH,MAAM,WAAW,cAAc;IAC3B,IAAI,EAAE;QACF,WAAW,EAAE;YACT,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC;gBAC3C,OAAO,EAAE,KAAK,CAAC;oBACX,OAAO,EAAE;wBACL,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;wBACvB,UAAU,CAAC,EAAE,KAAK,CAAC;4BAAE,EAAE,EAAE,MAAM,CAAC;4BAAC,QAAQ,EAAE;gCAAE,IAAI,EAAE,MAAM,CAAC;gCAAC,SAAS,EAAE,MAAM,CAAA;6BAAE,CAAA;yBAAE,CAAC,GAAG,IAAI,CAAC;qBAC5F,CAAC;iBACL,CAAC,CAAC;gBACH,KAAK,CAAC,EAAE;oBAAE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;oBAAC,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;iBAAE,GAAG,IAAI,CAAC;aACvF,CAAC,CAAC;YACH;;;;;eAKG;YACH,YAAY,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC;SAC1E,CAAC;KACL,CAAC;CACL;AAED;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,WAAW,GACjB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC9B;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GACtD;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACrD;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,gBAAgB,CAAA;CAAE,CAAC;AAyBnD;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAG/E;AAOD,qBAAa,WAAW;IAMhB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAN5B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAoB;IAChD,2HAA2H;IAC3H,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAiB;gBAG5B,MAAM,EAAE,cAAc,EACtB,OAAO,GAAE,YAAiB;IAa/C,OAAO,CAAC,WAAW;IA2BnB,OAAO,CAAC,SAAS;IAiBjB;;;;;;;;OAQG;IACG,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAyG3H;;;;;;;;;;;;;;;;;;;;OAoBG;IACI,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,iBAAiB,GAAG,cAAc,CAAC,WAAW,CAAC;IAyIpI;;;;;;;;OAQG;YACW,SAAS;YAeT,YAAY;CAqD7B;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,YAAY,SAAS,GAAG,IAAI,CAe/G"}
|
package/dist/agent.js
CHANGED
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
import { compact } from './compaction.js';
|
|
15
15
|
import { CostTracker } from './cost.js';
|
|
16
16
|
import { isApproved } from './humanGate.js';
|
|
17
|
+
import { AutoMode, PermissionHook } from './permission.js';
|
|
17
18
|
import { ToolSearch } from './toolSearch.js';
|
|
18
19
|
const DEFAULTS = {
|
|
19
20
|
model: 'claude-haiku-4-5',
|
|
@@ -48,12 +49,24 @@ export class SmoothAgent {
|
|
|
48
49
|
client;
|
|
49
50
|
options;
|
|
50
51
|
toolsByName;
|
|
52
|
+
/** The native permission gate, built when permissionMode/denyPolicy/permissionGrants is set; else undefined (gate off). */
|
|
53
|
+
permissionHook;
|
|
51
54
|
constructor(client, options = {}) {
|
|
52
55
|
this.client = client;
|
|
53
56
|
this.options = options;
|
|
54
57
|
if (!client)
|
|
55
58
|
throw new Error('client is required');
|
|
56
59
|
this.toolsByName = new Map((options.tools ?? []).map((t) => [t.name, t]));
|
|
60
|
+
if (options.permissionMode !== undefined || options.denyPolicy !== undefined || options.permissionGrants !== undefined) {
|
|
61
|
+
const hook = new PermissionHook(options.permissionMode ?? AutoMode.Ask);
|
|
62
|
+
if (options.humanGate)
|
|
63
|
+
hook.withApprover(options.humanGate);
|
|
64
|
+
if (options.permissionGrants)
|
|
65
|
+
hook.withGrants(options.permissionGrants);
|
|
66
|
+
if (options.denyPolicy)
|
|
67
|
+
hook.withDenyPolicy(options.denyPolicy);
|
|
68
|
+
this.permissionHook = hook;
|
|
69
|
+
}
|
|
57
70
|
}
|
|
58
71
|
buildSystem(message) {
|
|
59
72
|
let system = this.options.instructions ?? '';
|
|
@@ -416,6 +429,18 @@ export class SmoothAgent {
|
|
|
416
429
|
catch {
|
|
417
430
|
return `error: tool '${name}' received invalid JSON arguments`;
|
|
418
431
|
}
|
|
432
|
+
// Native permission gate: classify the call (circuit-breakers → hard deny,
|
|
433
|
+
// mutating/unknown → Ask routed to the human gate, else allow). A blocked
|
|
434
|
+
// call is never executed; the reason is surfaced to the model, like other
|
|
435
|
+
// tool errors. The gate is only active when a permission option was set.
|
|
436
|
+
if (this.permissionHook) {
|
|
437
|
+
try {
|
|
438
|
+
await this.permissionHook.preCall({ id: name, name, arguments: args });
|
|
439
|
+
}
|
|
440
|
+
catch (err) {
|
|
441
|
+
return `error: tool '${name}' blocked by permission policy: ${err instanceof Error ? err.message : String(err)}`;
|
|
442
|
+
}
|
|
443
|
+
}
|
|
419
444
|
// Human-in-the-loop: pause for approval before running a flagged (write/sensitive)
|
|
420
445
|
// tool. A denial is fed back to the model as a result — the tool never runs.
|
|
421
446
|
const gate = this.options.humanGate;
|
package/dist/agent.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Consumer-supplied **deny policy** — the deny-side counterpart to
|
|
3
|
+
* {@link PermissionGrants}. The TypeScript sibling of the Rust engine's
|
|
4
|
+
* `deny_policy.rs`.
|
|
5
|
+
*
|
|
6
|
+
* The engine ships hardcoded circuit-breakers (`rm -rf /`, `curl | sh`,
|
|
7
|
+
* credential paths, dangerous domains — see {@link decide}) and an allow-only
|
|
8
|
+
* grant store that can *upgrade* an `Ask`. Neither can express a consumer's own
|
|
9
|
+
* "never do this" rules: "never touch the prod AWS profile", "the DB writer
|
|
10
|
+
* endpoint is off-limits", "no writes under `/prod`". This module adds that tier.
|
|
11
|
+
*
|
|
12
|
+
* It is **purely additive**: a {@link PermissionHook} with no deny policy behaves
|
|
13
|
+
* exactly as before. When a policy *is* attached it is evaluated **first**, and a
|
|
14
|
+
* match is a hard deny of the same tier as the built-in circuit-breakers — no
|
|
15
|
+
* stored grant waives it, and {@link AutoMode.Bypass} / {@link AutoMode.AcceptEdits}
|
|
16
|
+
* cannot downgrade it.
|
|
17
|
+
*
|
|
18
|
+
* # Two tiers
|
|
19
|
+
*
|
|
20
|
+
* 1. **Declarative** ({@link DenyRules}) — TOML, four sections, each a deny list:
|
|
21
|
+
*
|
|
22
|
+
* ```toml
|
|
23
|
+
* schema_version = 1
|
|
24
|
+
* [tools]
|
|
25
|
+
* deny = ["vendor.dangerous_tool", "*.delete_prod"]
|
|
26
|
+
* [bash]
|
|
27
|
+
* deny_patterns = ["aws * --profile prod", "kubectl * --context prod"]
|
|
28
|
+
* [network]
|
|
29
|
+
* deny_hosts = ["*.prod.internal", "prod-*.rds.amazonaws.com"]
|
|
30
|
+
* [paths]
|
|
31
|
+
* deny = ["/prod/**", "/app/secrets/**"]
|
|
32
|
+
* ```
|
|
33
|
+
*
|
|
34
|
+
* 2. **Predicate** ({@link DenyPredicate}) — a consumer callback for semantic
|
|
35
|
+
* checks the engine cannot parse from strings ("is this the prod AWS account?",
|
|
36
|
+
* "writer vs replica endpoint?"). `Some(reason)` → deny.
|
|
37
|
+
*
|
|
38
|
+
* Declarative rules run first, then predicates; the first match wins.
|
|
39
|
+
*/
|
|
40
|
+
import type { ToolCall } from './permission.js';
|
|
41
|
+
/** The declarative half of a {@link DenyPolicy}: four deny lists parsed from TOML. */
|
|
42
|
+
export declare class DenyRules {
|
|
43
|
+
schemaVersion: number;
|
|
44
|
+
readonly tools: Set<string>;
|
|
45
|
+
readonly bashPatterns: Set<string>;
|
|
46
|
+
readonly networkHosts: Set<string>;
|
|
47
|
+
readonly paths: Set<string>;
|
|
48
|
+
/** No rules in any section (used for the additive no-op fast path). */
|
|
49
|
+
isEmpty(): boolean;
|
|
50
|
+
/** Parse from a TOML string. Missing sections default to empty. */
|
|
51
|
+
static parse(tomlText: string): DenyRules;
|
|
52
|
+
/** Serialize to TOML. Empty sections omitted; entries sorted for a stable round-trip. */
|
|
53
|
+
toTomlString(): string;
|
|
54
|
+
/** The first declarative rule this call matches, formatted as a deny reason, or `undefined`. */
|
|
55
|
+
denyReason(call: ToolCall): string | undefined;
|
|
56
|
+
/** First `[bash]` pattern that matches any (wrapper/sudo-stripped) subcommand. */
|
|
57
|
+
private bashDenied;
|
|
58
|
+
/** First `[network]` pattern that matches `host` (case-insensitive). */
|
|
59
|
+
private hostDenied;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Minimal both-ends-anchored glob: `*` (and any run of `*`, so `**` too) matches
|
|
63
|
+
* any sequence of characters, including `/`. No `?`, no char classes — deny globs
|
|
64
|
+
* don't need them, and a tiny matcher stays auditable for a security-critical path.
|
|
65
|
+
*/
|
|
66
|
+
export declare function globMatch(pattern: string, text: string): boolean;
|
|
67
|
+
/**
|
|
68
|
+
* A consumer-supplied semantic deny check. Runs on every gated tool call; a
|
|
69
|
+
* returned reason is a hard deny (circuit-breaker tier). Use it for checks the
|
|
70
|
+
* declarative rules can't express from strings alone — resolving an AWS call to
|
|
71
|
+
* its account, a DB URL to writer-vs-replica, etc.
|
|
72
|
+
*
|
|
73
|
+
* The idiomatic TS seam: a function returning the deny reason, or `undefined` to
|
|
74
|
+
* let the call fall through to the rest of the permission engine.
|
|
75
|
+
*/
|
|
76
|
+
export type DenyPredicate = (call: ToolCall) => string | undefined;
|
|
77
|
+
/**
|
|
78
|
+
* Consumer-supplied deny policy: declarative rules + predicate checks. Attach to
|
|
79
|
+
* the gate via {@link PermissionHook.withDenyPolicy}. An empty policy is a no-op.
|
|
80
|
+
*/
|
|
81
|
+
export declare class DenyPolicy {
|
|
82
|
+
private declarative;
|
|
83
|
+
private readonly predicates;
|
|
84
|
+
constructor(declarative?: DenyRules);
|
|
85
|
+
/** Build the declarative half from a TOML string. Predicates are added via {@link withPredicate}. */
|
|
86
|
+
static fromToml(tomlText: string): DenyPolicy;
|
|
87
|
+
/** Replace the declarative rules. Chainable. */
|
|
88
|
+
withDeclarative(rules: DenyRules): this;
|
|
89
|
+
/** Add a consumer predicate. Chainable. */
|
|
90
|
+
withPredicate(predicate: DenyPredicate): this;
|
|
91
|
+
/** True when there are no rules and no predicates — nothing to deny. */
|
|
92
|
+
isEmpty(): boolean;
|
|
93
|
+
/**
|
|
94
|
+
* The deny reason for `call`, or `undefined` to let it fall through. Declarative
|
|
95
|
+
* rules are checked first, then predicates; the first match wins.
|
|
96
|
+
*/
|
|
97
|
+
evaluate(call: ToolCall): string | undefined;
|
|
98
|
+
}
|
|
99
|
+
//# sourceMappingURL=denyPolicy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"denyPolicy.d.ts","sourceRoot":"","sources":["../src/denyPolicy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAIH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAWhD,sFAAsF;AACtF,qBAAa,SAAS;IAClB,aAAa,SAAK;IAClB,QAAQ,CAAC,KAAK,cAAqB;IACnC,QAAQ,CAAC,YAAY,cAAqB;IAC1C,QAAQ,CAAC,YAAY,cAAqB;IAC1C,QAAQ,CAAC,KAAK,cAAqB;IAEnC,uEAAuE;IACvE,OAAO,IAAI,OAAO;IAIlB,mEAAmE;IACnE,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS;IAWzC,yFAAyF;IACzF,YAAY,IAAI,MAAM;IAStB,gGAAgG;IAChG,UAAU,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,SAAS;IA6C9C,kFAAkF;IAClF,OAAO,CAAC,UAAU;IAYlB,wEAAwE;IACxE,OAAO,CAAC,UAAU;CAOrB;AA2BD;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAqBhE;AAED;;;;;;;;GAQG;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,IAAI,EAAE,QAAQ,KAAK,MAAM,GAAG,SAAS,CAAC;AAEnE;;;GAGG;AACH,qBAAa,UAAU;IAGP,OAAO,CAAC,WAAW;IAF/B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAuB;gBAE9B,WAAW,GAAE,SAA2B;IAE5D,qGAAqG;IACrG,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU;IAI7C,gDAAgD;IAChD,eAAe,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAKvC,2CAA2C;IAC3C,aAAa,CAAC,SAAS,EAAE,aAAa,GAAG,IAAI;IAK7C,wEAAwE;IACxE,OAAO,IAAI,OAAO;IAIlB;;;OAGG;IACH,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,SAAS;CAS/C"}
|
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Consumer-supplied **deny policy** — the deny-side counterpart to
|
|
3
|
+
* {@link PermissionGrants}. The TypeScript sibling of the Rust engine's
|
|
4
|
+
* `deny_policy.rs`.
|
|
5
|
+
*
|
|
6
|
+
* The engine ships hardcoded circuit-breakers (`rm -rf /`, `curl | sh`,
|
|
7
|
+
* credential paths, dangerous domains — see {@link decide}) and an allow-only
|
|
8
|
+
* grant store that can *upgrade* an `Ask`. Neither can express a consumer's own
|
|
9
|
+
* "never do this" rules: "never touch the prod AWS profile", "the DB writer
|
|
10
|
+
* endpoint is off-limits", "no writes under `/prod`". This module adds that tier.
|
|
11
|
+
*
|
|
12
|
+
* It is **purely additive**: a {@link PermissionHook} with no deny policy behaves
|
|
13
|
+
* exactly as before. When a policy *is* attached it is evaluated **first**, and a
|
|
14
|
+
* match is a hard deny of the same tier as the built-in circuit-breakers — no
|
|
15
|
+
* stored grant waives it, and {@link AutoMode.Bypass} / {@link AutoMode.AcceptEdits}
|
|
16
|
+
* cannot downgrade it.
|
|
17
|
+
*
|
|
18
|
+
* # Two tiers
|
|
19
|
+
*
|
|
20
|
+
* 1. **Declarative** ({@link DenyRules}) — TOML, four sections, each a deny list:
|
|
21
|
+
*
|
|
22
|
+
* ```toml
|
|
23
|
+
* schema_version = 1
|
|
24
|
+
* [tools]
|
|
25
|
+
* deny = ["vendor.dangerous_tool", "*.delete_prod"]
|
|
26
|
+
* [bash]
|
|
27
|
+
* deny_patterns = ["aws * --profile prod", "kubectl * --context prod"]
|
|
28
|
+
* [network]
|
|
29
|
+
* deny_hosts = ["*.prod.internal", "prod-*.rds.amazonaws.com"]
|
|
30
|
+
* [paths]
|
|
31
|
+
* deny = ["/prod/**", "/app/secrets/**"]
|
|
32
|
+
* ```
|
|
33
|
+
*
|
|
34
|
+
* 2. **Predicate** ({@link DenyPredicate}) — a consumer callback for semantic
|
|
35
|
+
* checks the engine cannot parse from strings ("is this the prod AWS account?",
|
|
36
|
+
* "writer vs replica endpoint?"). `Some(reason)` → deny.
|
|
37
|
+
*
|
|
38
|
+
* Declarative rules run first, then predicates; the first match wins.
|
|
39
|
+
*/
|
|
40
|
+
import { parse as parseToml, stringify as stringifyToml } from 'smol-toml';
|
|
41
|
+
import { domainMatchesSuffixList, extractHosts, hostFromToken, splitCompound, stripWrappersAndSudo, toolCategory } from './permission.js';
|
|
42
|
+
/** The declarative half of a {@link DenyPolicy}: four deny lists parsed from TOML. */
|
|
43
|
+
export class DenyRules {
|
|
44
|
+
schemaVersion = 1;
|
|
45
|
+
tools = new Set();
|
|
46
|
+
bashPatterns = new Set();
|
|
47
|
+
networkHosts = new Set();
|
|
48
|
+
paths = new Set();
|
|
49
|
+
/** No rules in any section (used for the additive no-op fast path). */
|
|
50
|
+
isEmpty() {
|
|
51
|
+
return this.tools.size === 0 && this.bashPatterns.size === 0 && this.networkHosts.size === 0 && this.paths.size === 0;
|
|
52
|
+
}
|
|
53
|
+
/** Parse from a TOML string. Missing sections default to empty. */
|
|
54
|
+
static parse(tomlText) {
|
|
55
|
+
const raw = parseToml(tomlText);
|
|
56
|
+
const r = new DenyRules();
|
|
57
|
+
r.schemaVersion = typeof raw.schema_version === 'number' && raw.schema_version > 0 ? raw.schema_version : 1;
|
|
58
|
+
for (const t of raw.tools?.deny ?? [])
|
|
59
|
+
r.tools.add(t);
|
|
60
|
+
for (const b of raw.bash?.deny_patterns ?? [])
|
|
61
|
+
r.bashPatterns.add(b);
|
|
62
|
+
for (const h of raw.network?.deny_hosts ?? [])
|
|
63
|
+
r.networkHosts.add(h);
|
|
64
|
+
for (const p of raw.paths?.deny ?? [])
|
|
65
|
+
r.paths.add(p);
|
|
66
|
+
return r;
|
|
67
|
+
}
|
|
68
|
+
/** Serialize to TOML. Empty sections omitted; entries sorted for a stable round-trip. */
|
|
69
|
+
toTomlString() {
|
|
70
|
+
const out = { schema_version: this.schemaVersion };
|
|
71
|
+
if (this.tools.size > 0)
|
|
72
|
+
out.tools = { deny: [...this.tools].sort() };
|
|
73
|
+
if (this.bashPatterns.size > 0)
|
|
74
|
+
out.bash = { deny_patterns: [...this.bashPatterns].sort() };
|
|
75
|
+
if (this.networkHosts.size > 0)
|
|
76
|
+
out.network = { deny_hosts: [...this.networkHosts].sort() };
|
|
77
|
+
if (this.paths.size > 0)
|
|
78
|
+
out.paths = { deny: [...this.paths].sort() };
|
|
79
|
+
return stringifyToml(out);
|
|
80
|
+
}
|
|
81
|
+
/** The first declarative rule this call matches, formatted as a deny reason, or `undefined`. */
|
|
82
|
+
denyReason(call) {
|
|
83
|
+
// `[tools]` applies to ANY tool, whatever its category.
|
|
84
|
+
for (const pat of this.tools) {
|
|
85
|
+
if (globMatch(pat, call.name))
|
|
86
|
+
return `denied by policy (tools): ${pat}`;
|
|
87
|
+
}
|
|
88
|
+
const args = call.arguments;
|
|
89
|
+
switch (toolCategory(call.name)) {
|
|
90
|
+
case 'bash': {
|
|
91
|
+
const cmd = strArg(args, ['cmd', 'command']).trim();
|
|
92
|
+
if (cmd.length === 0)
|
|
93
|
+
return undefined;
|
|
94
|
+
const bashPat = this.bashDenied(cmd);
|
|
95
|
+
if (bashPat !== undefined)
|
|
96
|
+
return `denied by policy (bash): ${bashPat}`;
|
|
97
|
+
// A denied host referenced by the command line is also blocked.
|
|
98
|
+
for (const sub of splitCompound(cmd)) {
|
|
99
|
+
for (const host of extractHosts(sub)) {
|
|
100
|
+
const hostPat = this.hostDenied(host);
|
|
101
|
+
if (hostPat !== undefined)
|
|
102
|
+
return `denied by policy (network): ${hostPat}`;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
return undefined;
|
|
106
|
+
}
|
|
107
|
+
case 'network': {
|
|
108
|
+
const raw = strArg(args, ['url', 'host']);
|
|
109
|
+
const host = hostFromToken(raw) ?? raw;
|
|
110
|
+
if (host.length === 0)
|
|
111
|
+
return undefined;
|
|
112
|
+
const pat = this.hostDenied(host);
|
|
113
|
+
return pat !== undefined ? `denied by policy (network): ${pat}` : undefined;
|
|
114
|
+
}
|
|
115
|
+
case 'write':
|
|
116
|
+
case 'safe': {
|
|
117
|
+
for (const key of ['path', 'file', 'dir', 'directory']) {
|
|
118
|
+
const v = args[key];
|
|
119
|
+
if (typeof v === 'string') {
|
|
120
|
+
for (const pat of this.paths) {
|
|
121
|
+
if (globMatch(pat, v))
|
|
122
|
+
return `denied by policy (paths): ${pat}`;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
return undefined;
|
|
127
|
+
}
|
|
128
|
+
case 'unknown':
|
|
129
|
+
return undefined;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
/** First `[bash]` pattern that matches any (wrapper/sudo-stripped) subcommand. */
|
|
133
|
+
bashDenied(cmd) {
|
|
134
|
+
const subs = splitCompound(cmd).map((s) => stripWrappersAndSudo(s).toLowerCase());
|
|
135
|
+
for (const pat of this.bashPatterns) {
|
|
136
|
+
// A plain prefix (`"aws "`) gets an implicit trailing `*`; a pattern with
|
|
137
|
+
// an explicit `*` also matches any trailing text so extra flags can't slip past.
|
|
138
|
+
const lower = pat.toLowerCase();
|
|
139
|
+
const anchored = lower.endsWith('*') ? lower : `${lower}*`;
|
|
140
|
+
if (subs.some((sub) => globMatch(anchored, sub)))
|
|
141
|
+
return pat;
|
|
142
|
+
}
|
|
143
|
+
return undefined;
|
|
144
|
+
}
|
|
145
|
+
/** First `[network]` pattern that matches `host` (case-insensitive). */
|
|
146
|
+
hostDenied(host) {
|
|
147
|
+
const h = host.toLowerCase();
|
|
148
|
+
for (const pat of this.networkHosts) {
|
|
149
|
+
if (hostPatternMatches(pat, h))
|
|
150
|
+
return pat;
|
|
151
|
+
}
|
|
152
|
+
return undefined;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
/** Pull a string argument by any of the given keys, or `''` when absent. */
|
|
156
|
+
function strArg(args, keys) {
|
|
157
|
+
for (const k of keys) {
|
|
158
|
+
const v = args[k];
|
|
159
|
+
if (typeof v === 'string')
|
|
160
|
+
return v;
|
|
161
|
+
}
|
|
162
|
+
return '';
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Match a single host deny pattern against an already-lowercased host.
|
|
166
|
+
* - no `*` → subdomain-aware suffix match (`prod.internal` ⇒ `api.prod.internal`).
|
|
167
|
+
* - `*.suffix` → apex + subdomains of `suffix`.
|
|
168
|
+
* - mid-string `*` (`prod-*.rds.amazonaws.com`) → anchored glob.
|
|
169
|
+
*/
|
|
170
|
+
function hostPatternMatches(pattern, hostLower) {
|
|
171
|
+
const p = pattern.toLowerCase();
|
|
172
|
+
if (!p.includes('*'))
|
|
173
|
+
return domainMatchesSuffixList(hostLower, [p]);
|
|
174
|
+
if (p.startsWith('*.')) {
|
|
175
|
+
const bare = p.slice(2);
|
|
176
|
+
if (domainMatchesSuffixList(hostLower, [bare]))
|
|
177
|
+
return true;
|
|
178
|
+
}
|
|
179
|
+
return globMatch(p, hostLower);
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Minimal both-ends-anchored glob: `*` (and any run of `*`, so `**` too) matches
|
|
183
|
+
* any sequence of characters, including `/`. No `?`, no char classes — deny globs
|
|
184
|
+
* don't need them, and a tiny matcher stays auditable for a security-critical path.
|
|
185
|
+
*/
|
|
186
|
+
export function globMatch(pattern, text) {
|
|
187
|
+
const parts = pattern.split('*');
|
|
188
|
+
if (parts.length === 1)
|
|
189
|
+
return pattern === text; // no wildcard → exact match
|
|
190
|
+
const first = parts[0];
|
|
191
|
+
if (!text.startsWith(first))
|
|
192
|
+
return false;
|
|
193
|
+
let pos = first.length;
|
|
194
|
+
const lastIdx = parts.length - 1;
|
|
195
|
+
for (let i = 1; i < parts.length; i++) {
|
|
196
|
+
const part = parts[i];
|
|
197
|
+
if (part.length === 0)
|
|
198
|
+
continue; // consecutive / trailing `*`
|
|
199
|
+
if (i === lastIdx) {
|
|
200
|
+
// Last literal segment must sit at the very end, past the consumed region.
|
|
201
|
+
const endStart = text.length - part.length;
|
|
202
|
+
return endStart >= pos && text.endsWith(part);
|
|
203
|
+
}
|
|
204
|
+
const idx = text.indexOf(part, pos);
|
|
205
|
+
if (idx < 0)
|
|
206
|
+
return false;
|
|
207
|
+
pos = idx + part.length;
|
|
208
|
+
}
|
|
209
|
+
// Pattern ended with `*` (last part empty): the trailing run matches anything.
|
|
210
|
+
return true;
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* Consumer-supplied deny policy: declarative rules + predicate checks. Attach to
|
|
214
|
+
* the gate via {@link PermissionHook.withDenyPolicy}. An empty policy is a no-op.
|
|
215
|
+
*/
|
|
216
|
+
export class DenyPolicy {
|
|
217
|
+
declarative;
|
|
218
|
+
predicates = [];
|
|
219
|
+
constructor(declarative = new DenyRules()) {
|
|
220
|
+
this.declarative = declarative;
|
|
221
|
+
}
|
|
222
|
+
/** Build the declarative half from a TOML string. Predicates are added via {@link withPredicate}. */
|
|
223
|
+
static fromToml(tomlText) {
|
|
224
|
+
return new DenyPolicy(DenyRules.parse(tomlText));
|
|
225
|
+
}
|
|
226
|
+
/** Replace the declarative rules. Chainable. */
|
|
227
|
+
withDeclarative(rules) {
|
|
228
|
+
this.declarative = rules;
|
|
229
|
+
return this;
|
|
230
|
+
}
|
|
231
|
+
/** Add a consumer predicate. Chainable. */
|
|
232
|
+
withPredicate(predicate) {
|
|
233
|
+
this.predicates.push(predicate);
|
|
234
|
+
return this;
|
|
235
|
+
}
|
|
236
|
+
/** True when there are no rules and no predicates — nothing to deny. */
|
|
237
|
+
isEmpty() {
|
|
238
|
+
return this.declarative.isEmpty() && this.predicates.length === 0;
|
|
239
|
+
}
|
|
240
|
+
/**
|
|
241
|
+
* The deny reason for `call`, or `undefined` to let it fall through. Declarative
|
|
242
|
+
* rules are checked first, then predicates; the first match wins.
|
|
243
|
+
*/
|
|
244
|
+
evaluate(call) {
|
|
245
|
+
const declarative = this.declarative.denyReason(call);
|
|
246
|
+
if (declarative !== undefined)
|
|
247
|
+
return declarative;
|
|
248
|
+
for (const predicate of this.predicates) {
|
|
249
|
+
const reason = predicate(call);
|
|
250
|
+
if (reason !== undefined)
|
|
251
|
+
return `denied by policy (predicate): ${reason}`;
|
|
252
|
+
}
|
|
253
|
+
return undefined;
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
//# sourceMappingURL=denyPolicy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"denyPolicy.js","sourceRoot":"","sources":["../src/denyPolicy.ts"],"names":[],"mappings":"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"}
|
package/dist/humanGate.d.ts
CHANGED
|
@@ -27,11 +27,20 @@ export interface HumanApprovalRequest {
|
|
|
27
27
|
export interface HumanApprovalResponse {
|
|
28
28
|
decision: HumanDecision;
|
|
29
29
|
reason?: string;
|
|
30
|
+
/**
|
|
31
|
+
* "Approve always" — when `true` on an approval routed through a
|
|
32
|
+
* {@link PermissionHook} with a grant store, a matching grant is persisted so
|
|
33
|
+
* the next identical `Ask` is silent. Ignored for a denial or when no grant
|
|
34
|
+
* store is wired. Mirrors the Rust engine's `HumanResponse::ApprovedAlways`.
|
|
35
|
+
*/
|
|
36
|
+
remember?: boolean;
|
|
30
37
|
}
|
|
31
38
|
/** True when the decision is {@link HumanDecision.Approved}. */
|
|
32
39
|
export declare function isApproved(response: HumanApprovalResponse): boolean;
|
|
33
40
|
/** Build an approval. */
|
|
34
41
|
export declare function approve(): HumanApprovalResponse;
|
|
42
|
+
/** Build an approval that also persists a grant ("approve always") when a grant store is wired. */
|
|
43
|
+
export declare function approveAlways(): HumanApprovalResponse;
|
|
35
44
|
/** Build a denial carrying a reason the model will see. */
|
|
36
45
|
export declare function deny(reason: string): HumanApprovalResponse;
|
|
37
46
|
/**
|
package/dist/humanGate.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"humanGate.d.ts","sourceRoot":"","sources":["../src/humanGate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,iEAAiE;AACjE,oBAAY,aAAa;IACrB,QAAQ,aAAa;IACrB,MAAM,WAAW;CACpB;AAED;;;GAGG;AACH,MAAM,WAAW,oBAAoB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,MAAM,EAAE,MAAM,CAAC;CAClB;AAED,8FAA8F;AAC9F,MAAM,WAAW,qBAAqB;IAClC,QAAQ,EAAE,aAAa,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"humanGate.d.ts","sourceRoot":"","sources":["../src/humanGate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,iEAAiE;AACjE,oBAAY,aAAa;IACrB,QAAQ,aAAa;IACrB,MAAM,WAAW;CACpB;AAED;;;GAGG;AACH,MAAM,WAAW,oBAAoB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,MAAM,EAAE,MAAM,CAAC;CAClB;AAED,8FAA8F;AAC9F,MAAM,WAAW,qBAAqB;IAClC,QAAQ,EAAE,aAAa,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,gEAAgE;AAChE,wBAAgB,UAAU,CAAC,QAAQ,EAAE,qBAAqB,GAAG,OAAO,CAEnE;AAED,yBAAyB;AACzB,wBAAgB,OAAO,IAAI,qBAAqB,CAE/C;AAED,mGAAmG;AACnG,wBAAgB,aAAa,IAAI,qBAAqB,CAErD;AAED,2DAA2D;AAC3D,wBAAgB,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,qBAAqB,CAE1D;AAED;;;;;GAKG;AACH,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,EAAE,oBAAoB,KAAK,OAAO,CAAC,qBAAqB,CAAC,CAAC"}
|
package/dist/humanGate.js
CHANGED
|
@@ -23,6 +23,10 @@ export function isApproved(response) {
|
|
|
23
23
|
export function approve() {
|
|
24
24
|
return { decision: HumanDecision.Approved };
|
|
25
25
|
}
|
|
26
|
+
/** Build an approval that also persists a grant ("approve always") when a grant store is wired. */
|
|
27
|
+
export function approveAlways() {
|
|
28
|
+
return { decision: HumanDecision.Approved, remember: true };
|
|
29
|
+
}
|
|
26
30
|
/** Build a denial carrying a reason the model will see. */
|
|
27
31
|
export function deny(reason) {
|
|
28
32
|
return { decision: HumanDecision.Denied, reason };
|
package/dist/humanGate.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"humanGate.js","sourceRoot":"","sources":["../src/humanGate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,iEAAiE;AACjE,MAAM,CAAN,IAAY,aAGX;AAHD,WAAY,aAAa;IACrB,sCAAqB,CAAA;IACrB,kCAAiB,CAAA;AACrB,CAAC,EAHW,aAAa,KAAb,aAAa,QAGxB;
|
|
1
|
+
{"version":3,"file":"humanGate.js","sourceRoot":"","sources":["../src/humanGate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,iEAAiE;AACjE,MAAM,CAAN,IAAY,aAGX;AAHD,WAAY,aAAa;IACrB,sCAAqB,CAAA;IACrB,kCAAiB,CAAA;AACrB,CAAC,EAHW,aAAa,KAAb,aAAa,QAGxB;AAyBD,gEAAgE;AAChE,MAAM,UAAU,UAAU,CAAC,QAA+B;IACtD,OAAO,QAAQ,CAAC,QAAQ,KAAK,aAAa,CAAC,QAAQ,CAAC;AACxD,CAAC;AAED,yBAAyB;AACzB,MAAM,UAAU,OAAO;IACnB,OAAO,EAAE,QAAQ,EAAE,aAAa,CAAC,QAAQ,EAAE,CAAC;AAChD,CAAC;AAED,mGAAmG;AACnG,MAAM,UAAU,aAAa;IACzB,OAAO,EAAE,QAAQ,EAAE,aAAa,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAChE,CAAC;AAED,2DAA2D;AAC3D,MAAM,UAAU,IAAI,CAAC,MAAc;IAC/B,OAAO,EAAE,QAAQ,EAAE,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;AACtD,CAAC"}
|