@synoikia/core 0.5.2 → 0.7.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/app.d.ts +10 -8
- package/dist/app.js +14 -4
- package/dist/app.js.map +1 -1
- package/dist/approvals/grants.d.ts +34 -0
- package/dist/approvals/grants.js +79 -0
- package/dist/approvals/grants.js.map +1 -0
- package/dist/approvals/links.d.ts +2 -5
- package/dist/approvals/links.js +2 -5
- package/dist/approvals/links.js.map +1 -1
- package/dist/approvals/service.d.ts +24 -16
- package/dist/approvals/service.js +24 -6
- package/dist/approvals/service.js.map +1 -1
- package/dist/audit-query.d.ts +1 -5
- package/dist/audit-query.js +1 -5
- package/dist/audit-query.js.map +1 -1
- package/dist/auth/mcp-auth.d.ts +11 -17
- package/dist/auth/mcp-auth.js +14 -13
- package/dist/auth/mcp-auth.js.map +1 -1
- package/dist/auth/mcp-tokens.d.ts +4 -4
- package/dist/auth/mcp-tokens.js +11 -4
- package/dist/auth/mcp-tokens.js.map +1 -1
- package/dist/auth/oauth.d.ts +7 -18
- package/dist/auth/oauth.js +18 -18
- package/dist/auth/oauth.js.map +1 -1
- package/dist/auth/oidc.d.ts +1 -4
- package/dist/auth/oidc.js +3 -9
- package/dist/auth/oidc.js.map +1 -1
- package/dist/auth/sessions.d.ts +9 -4
- package/dist/auth/sessions.js +18 -2
- package/dist/auth/sessions.js.map +1 -1
- package/dist/auth/throttle.d.ts +2 -8
- package/dist/auth/throttle.js +2 -8
- package/dist/auth/throttle.js.map +1 -1
- package/dist/auth/totp.d.ts +1 -4
- package/dist/auth/totp.js +1 -4
- package/dist/auth/totp.js.map +1 -1
- package/dist/auth/users.d.ts +1 -4
- package/dist/auth/users.js +3 -8
- package/dist/auth/users.js.map +1 -1
- package/dist/catalog/groups.d.ts +6 -18
- package/dist/catalog/groups.js +7 -23
- package/dist/catalog/groups.js.map +1 -1
- package/dist/catalog/registry.d.ts +1 -4
- package/dist/catalog/registry.js +1 -4
- package/dist/catalog/registry.js.map +1 -1
- package/dist/catalog/rules.d.ts +6 -18
- package/dist/catalog/rules.js +3 -9
- package/dist/catalog/rules.js.map +1 -1
- package/dist/catalog/sync.d.ts +2 -17
- package/dist/catalog/sync.js +5 -20
- package/dist/catalog/sync.js.map +1 -1
- package/dist/cli.js +2 -9
- package/dist/cli.js.map +1 -1
- package/dist/config/env.js +3 -8
- package/dist/config/env.js.map +1 -1
- package/dist/crypto/index.js +1 -4
- package/dist/crypto/index.js.map +1 -1
- package/dist/crypto/rotate.d.ts +2 -5
- package/dist/crypto/rotate.js.map +1 -1
- package/dist/db/index.d.ts +1 -4
- package/dist/db/index.js +1 -4
- package/dist/db/index.js.map +1 -1
- package/dist/db/schema.d.ts +44 -0
- package/dist/db/schema.js +7 -9
- package/dist/db/schema.js.map +1 -1
- package/dist/events.d.ts +1 -4
- package/dist/events.js.map +1 -1
- package/dist/gate/access.d.ts +3 -20
- package/dist/gate/access.js +3 -20
- package/dist/gate/access.js.map +1 -1
- package/dist/gate/attestation.d.ts +2 -6
- package/dist/gate/attestation.js +2 -6
- package/dist/gate/attestation.js.map +1 -1
- package/dist/gate/match.d.ts +5 -13
- package/dist/gate/match.js +5 -21
- package/dist/gate/match.js.map +1 -1
- package/dist/gate/pipeline.d.ts +30 -23
- package/dist/gate/pipeline.js +68 -11
- package/dist/gate/pipeline.js.map +1 -1
- package/dist/gate/preapproval.d.ts +3 -10
- package/dist/gate/preapproval.js +2 -5
- package/dist/gate/preapproval.js.map +1 -1
- package/dist/gate/rate-limit.d.ts +4 -14
- package/dist/gate/rate-limit.js +4 -14
- package/dist/gate/rate-limit.js.map +1 -1
- package/dist/gate/redact.d.ts +10 -26
- package/dist/gate/redact.js +12 -26
- package/dist/gate/redact.js.map +1 -1
- package/dist/http/admin/auth.d.ts +2 -8
- package/dist/http/admin/auth.js +20 -5
- package/dist/http/admin/auth.js.map +1 -1
- package/dist/http/admin/instances.js +19 -1
- package/dist/http/admin/instances.js.map +1 -1
- package/dist/http/admin/system.js +2 -0
- package/dist/http/admin/system.js.map +1 -1
- package/dist/http/common.d.ts +2 -5
- package/dist/http/common.js +2 -5
- package/dist/http/common.js.map +1 -1
- package/dist/http/mcp/approval-card.d.ts +6 -0
- package/dist/http/mcp/approval-card.js +160 -0
- package/dist/http/mcp/approval-card.js.map +1 -0
- package/dist/http/mcp/approval-routes.d.ts +2 -6
- package/dist/http/mcp/approval-routes.js +33 -8
- package/dist/http/mcp/approval-routes.js.map +1 -1
- package/dist/http/mcp/endpoint.d.ts +4 -16
- package/dist/http/mcp/endpoint.js +108 -28
- package/dist/http/mcp/endpoint.js.map +1 -1
- package/dist/http/mcp/oauth-routes.d.ts +3 -10
- package/dist/http/mcp/oauth-routes.js +15 -9
- package/dist/http/mcp/oauth-routes.js.map +1 -1
- package/dist/http/mcp/pages.d.ts +8 -1
- package/dist/http/mcp/pages.js +21 -2
- package/dist/http/mcp/pages.js.map +1 -1
- package/dist/http/mcp-app.d.ts +1 -4
- package/dist/http/mcp-app.js +1 -4
- package/dist/http/mcp-app.js.map +1 -1
- package/dist/instances/connection.d.ts +5 -14
- package/dist/instances/connection.js +6 -18
- package/dist/instances/connection.js.map +1 -1
- package/dist/instances/manager.d.ts +10 -18
- package/dist/instances/manager.js +33 -19
- package/dist/instances/manager.js.map +1 -1
- package/dist/instances/settings.d.ts +2 -0
- package/dist/instances/settings.js +4 -5
- package/dist/instances/settings.js.map +1 -1
- package/dist/lenient.d.ts +3 -9
- package/dist/lenient.js +3 -9
- package/dist/lenient.js.map +1 -1
- package/dist/lock.d.ts +4 -10
- package/dist/lock.js +5 -15
- package/dist/lock.js.map +1 -1
- package/dist/log.d.ts +2 -5
- package/dist/log.js +2 -5
- package/dist/log.js.map +1 -1
- package/dist/maintenance.js +2 -5
- package/dist/maintenance.js.map +1 -1
- package/dist/notify/service.d.ts +2 -5
- package/dist/notify/service.js +2 -5
- package/dist/notify/service.js.map +1 -1
- package/dist/plugins/default-repo.d.ts +1 -4
- package/dist/plugins/default-repo.js +1 -4
- package/dist/plugins/default-repo.js.map +1 -1
- package/dist/plugins/discovery.d.ts +2 -5
- package/dist/plugins/discovery.js +2 -5
- package/dist/plugins/discovery.js.map +1 -1
- package/dist/plugins/minisign.d.ts +2 -6
- package/dist/plugins/minisign.js.map +1 -1
- package/dist/plugins/process.d.ts +1 -4
- package/dist/plugins/process.js +1 -4
- package/dist/plugins/process.js.map +1 -1
- package/dist/plugins/repos.d.ts +4 -16
- package/dist/plugins/repos.js +7 -25
- package/dist/plugins/repos.js.map +1 -1
- package/dist/plugins/supervisor.d.ts +3 -9
- package/dist/plugins/supervisor.js +5 -5
- package/dist/plugins/supervisor.js.map +1 -1
- package/dist/runtime/executions.d.ts +68 -0
- package/dist/runtime/executions.js +158 -0
- package/dist/runtime/executions.js.map +1 -0
- package/dist/runtime/index.d.ts +7 -10
- package/dist/runtime/index.js +116 -31
- package/dist/runtime/index.js.map +1 -1
- package/dist/sandbox/index.d.ts +3 -10
- package/dist/sandbox/index.js +2 -3
- package/dist/sandbox/index.js.map +1 -1
- package/dist/settings.d.ts +3 -4
- package/dist/settings.js +9 -4
- package/dist/settings.js.map +1 -1
- package/dist/testing/contract.d.ts +2 -7
- package/dist/testing/contract.js.map +1 -1
- package/dist/testing/fake-http.d.ts +1 -5
- package/dist/testing/fake-http.js.map +1 -1
- package/dist/testing/index.d.ts +14 -12
- package/dist/testing/index.js +21 -6
- package/dist/testing/index.js.map +1 -1
- package/dist/testing/repository.d.ts +2 -7
- package/dist/testing/repository.js +3 -12
- package/dist/testing/repository.js.map +1 -1
- package/drizzle/0012_sensitive_result.sql +7 -0
- package/drizzle/meta/0012_snapshot.json +2368 -0
- package/drizzle/meta/_journal.json +7 -0
- package/package.json +2 -2
package/dist/gate/match.d.ts
CHANGED
|
@@ -3,8 +3,8 @@ import { z } from 'zod';
|
|
|
3
3
|
export declare const ParamConditionSchema: z.ZodObject<{
|
|
4
4
|
field: z.ZodString;
|
|
5
5
|
op: z.ZodEnum<{
|
|
6
|
-
any: "any";
|
|
7
6
|
in: "in";
|
|
7
|
+
any: "any";
|
|
8
8
|
eq: "eq";
|
|
9
9
|
prefix: "prefix";
|
|
10
10
|
range: "range";
|
|
@@ -12,11 +12,7 @@ export declare const ParamConditionSchema: z.ZodObject<{
|
|
|
12
12
|
}>;
|
|
13
13
|
value: z.ZodOptional<z.ZodUnknown>;
|
|
14
14
|
}, z.core.$strip>;
|
|
15
|
-
/**
|
|
16
|
-
* Selects resolved targets by id and by the scope values the plugin declares (design §3.4). Every
|
|
17
|
-
* target must match: its id is in `ids` (when given) and, for each key in `scopes`, its value for that
|
|
18
|
-
* scope is one of the listed values.
|
|
19
|
-
*/
|
|
15
|
+
/** Selects resolved targets by id and declared scope values; every target must match (design §3.2). */
|
|
20
16
|
export declare const TargetConditionSchema: z.ZodObject<{
|
|
21
17
|
field: z.ZodLiteral<"$targets">;
|
|
22
18
|
ids: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
@@ -29,8 +25,8 @@ export declare const MatchSchema: z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
|
|
|
29
25
|
}, z.core.$strict>, z.ZodObject<{
|
|
30
26
|
field: z.ZodString;
|
|
31
27
|
op: z.ZodEnum<{
|
|
32
|
-
any: "any";
|
|
33
28
|
in: "in";
|
|
29
|
+
any: "any";
|
|
34
30
|
eq: "eq";
|
|
35
31
|
prefix: "prefix";
|
|
36
32
|
range: "range";
|
|
@@ -41,12 +37,8 @@ export declare const MatchSchema: z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
|
|
|
41
37
|
export type MatchCondition = z.infer<typeof MatchSchema>[number];
|
|
42
38
|
/** RFC 6901 JSON pointer lookup; returns MISSING instead of undefined so `null` values still count. */
|
|
43
39
|
export declare function getPointer(doc: unknown, pointer: string): unknown;
|
|
44
|
-
/**
|
|
45
|
-
*
|
|
46
|
-
* it; an object or array only partly covered has each of its keys (or indexes: `/0/name`) checked in
|
|
47
|
-
* turn. Nothing (or `{}` / `[]`) is covered. Arrays matter for positional APIs, whose
|
|
48
|
-
* params are `[{ name, … }]`.
|
|
49
|
-
*/
|
|
40
|
+
/** Whether every parameter is covered by a condition: a path covers everything under it; partly covered
|
|
41
|
+
* objects and arrays are checked key by key. */
|
|
50
42
|
export declare function coversAllParams(match: readonly MatchCondition[], params: unknown,
|
|
51
43
|
/** Extra covered pointers, e.g. the raw target a `$targets` condition stands for (design §3.4). */
|
|
52
44
|
alsoCovered?: readonly string[]): boolean;
|
package/dist/gate/match.js
CHANGED
|
@@ -1,16 +1,8 @@
|
|
|
1
1
|
import { MATCH_OPS } from '@synoikia/plugin-sdk';
|
|
2
2
|
import { z } from 'zod';
|
|
3
3
|
import { canonicalJson } from './canonical.js';
|
|
4
|
-
/**
|
|
5
|
-
*
|
|
6
|
-
* hold. It fails closed: a missing field, a type mismatch or zero resolved targets means "no match",
|
|
7
|
-
* which only ever sends the call to a human.
|
|
8
|
-
*
|
|
9
|
-
* Matching is **strict**: every parameter of the call must be covered by a condition. A parameter the
|
|
10
|
-
* rule doesn't mention must be absent, unless the rule accepts it with `{ field, op: 'any' }` (`field: ''`
|
|
11
|
-
* accepts all parameters). Otherwise a rule for one field would also approve whatever else the model
|
|
12
|
-
* chose to send (a quota, an ACL, encryption options).
|
|
13
|
-
*/
|
|
4
|
+
/** Pre-approval `match` evaluator (design §5.2): all conditions must hold, failing closed. Matching is
|
|
5
|
+
* strict: every parameter must be covered, or accepted with `op: 'any'`. */
|
|
14
6
|
const PARAM_OPS = [...MATCH_OPS, 'any'];
|
|
15
7
|
export const ParamConditionSchema = z
|
|
16
8
|
.object({
|
|
@@ -19,11 +11,7 @@ export const ParamConditionSchema = z
|
|
|
19
11
|
value: z.unknown().optional(),
|
|
20
12
|
})
|
|
21
13
|
.refine((c) => c.op === 'any' || c.field !== '', 'only "any" can apply to all parameters');
|
|
22
|
-
/**
|
|
23
|
-
* Selects resolved targets by id and by the scope values the plugin declares (design §3.4). Every
|
|
24
|
-
* target must match: its id is in `ids` (when given) and, for each key in `scopes`, its value for that
|
|
25
|
-
* scope is one of the listed values.
|
|
26
|
-
*/
|
|
14
|
+
/** Selects resolved targets by id and declared scope values; every target must match (design §3.2). */
|
|
27
15
|
export const TargetConditionSchema = z
|
|
28
16
|
.object({
|
|
29
17
|
field: z.literal('$targets'),
|
|
@@ -98,12 +86,8 @@ function targetMatches(target, c) {
|
|
|
98
86
|
return true;
|
|
99
87
|
}
|
|
100
88
|
const escapePointer = (key) => key.replace(/~/g, '~0').replace(/\//g, '~1');
|
|
101
|
-
/**
|
|
102
|
-
*
|
|
103
|
-
* it; an object or array only partly covered has each of its keys (or indexes: `/0/name`) checked in
|
|
104
|
-
* turn. Nothing (or `{}` / `[]`) is covered. Arrays matter for positional APIs, whose
|
|
105
|
-
* params are `[{ name, … }]`.
|
|
106
|
-
*/
|
|
89
|
+
/** Whether every parameter is covered by a condition: a path covers everything under it; partly covered
|
|
90
|
+
* objects and arrays are checked key by key. */
|
|
107
91
|
export function coversAllParams(match, params,
|
|
108
92
|
/** Extra covered pointers, e.g. the raw target a `$targets` condition stands for (design §3.4). */
|
|
109
93
|
alsoCovered = []) {
|
package/dist/gate/match.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"match.js","sourceRoot":"","sources":["../../src/gate/match.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAE/C
|
|
1
|
+
{"version":3,"file":"match.js","sourceRoot":"","sources":["../../src/gate/match.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAE/C;4EAC4E;AAE5E,MAAM,SAAS,GAAG,CAAC,GAAG,SAAS,EAAE,KAAK,CAAU,CAAC;AAEjD,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC;KAClC,MAAM,CAAC;IACN,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,wBAAwB,CAAC;IAC9D,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;IACrB,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;CAC9B,CAAC;KACD,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,IAAI,CAAC,CAAC,KAAK,KAAK,EAAE,EAAE,wCAAwC,CAAC,CAAC;AAE7F,uGAAuG;AACvG,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC;KACnC,MAAM,CAAC;IACN,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC;IAC5B,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACjD,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;CAClF,CAAC;KACD,MAAM,EAAE;KACR,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,8CAA8C,CAAC,CAAC;AAElH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,qBAAqB,EAAE,oBAAoB,CAAC,CAAC,CAAC,CAAC;AAG3F,MAAM,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;AAElC,uGAAuG;AACvG,MAAM,UAAU,UAAU,CAAC,GAAY,EAAE,OAAe;IACtD,IAAI,OAAO,KAAK,EAAE;QAAE,OAAO,GAAG,CAAC;IAC/B,IAAI,GAAG,GAAY,GAAG,CAAC;IACvB,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QAC9C,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QACxD,IAAI,GAAG,KAAK,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC;YAAE,OAAO,OAAO,CAAC;QAC/G,GAAG,GAAI,GAA+B,CAAC,GAAG,CAAC,CAAC;IAC9C,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,YAAY,CAAC,MAAe,EAAE,EAAU,EAAE,QAAiB;IAClE,IAAI,EAAE,KAAK,KAAK;QAAE,OAAO,IAAI,CAAC,CAAC,4BAA4B;IAC3D,IAAI,MAAM,KAAK,OAAO;QAAE,OAAO,KAAK,CAAC;IACrC,QAAQ,EAAE,EAAE,CAAC;QACX,KAAK,IAAI;YACP,OAAO,aAAa,CAAC,MAAM,CAAC,KAAK,aAAa,CAAC,QAAQ,CAAC,CAAC;QAC3D,KAAK,IAAI,CAAC,CAAC,CAAC;YACV,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;gBAAE,OAAO,KAAK,CAAC;YAC3C,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/D,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;YACzD,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACjF,CAAC;QACD,KAAK,QAAQ;YACX,sGAAsG;YACtG,OAAO,CACL,OAAO,MAAM,KAAK,QAAQ;gBAC1B,OAAO,QAAQ,KAAK,QAAQ;gBAC5B,QAAQ,KAAK,EAAE;gBACf,CAAC,MAAM,KAAK,QAAQ;oBAClB,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAChG,CAAC;QACJ,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAqC,CAAC;YAC1E,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;gBAAE,OAAO,KAAK,CAAC;YACzE,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,SAAS;gBAAE,OAAO,KAAK,CAAC;YACzD,IAAI,GAAG,KAAK,SAAS,IAAI,CAAC,OAAO,GAAG,KAAK,QAAQ,IAAI,MAAM,GAAG,GAAG,CAAC;gBAAE,OAAO,KAAK,CAAC;YACjF,IAAI,GAAG,KAAK,SAAS,IAAI,CAAC,OAAO,GAAG,KAAK,QAAQ,IAAI,MAAM,GAAG,GAAG,CAAC;gBAAE,OAAO,KAAK,CAAC;YACjF,OAAO,IAAI,CAAC;QACd,CAAC;QACD,KAAK,MAAM;YACT,OAAO,OAAO,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,QAAQ,CAAC;QAC5D;YACE,OAAO,KAAK,CAAC;IACjB,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CAAC,MAAsB,EAAE,CAAwC;IACrF,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAAE,OAAO,KAAK,CAAC;IACtD,KAAK,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,CAAC;QAC3D,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC;QACnC,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;IACnE,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,aAAa,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AAEpF;gDACgD;AAChD,MAAM,UAAU,eAAe,CAC7B,KAAgC,EAChC,MAAe;AACf,mGAAmG;AACnG,cAAiC,EAAE;IAEnC,MAAM,QAAQ,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,GAAG,WAAW,CAAC,CAAC;IACtG,MAAM,OAAO,GAAG,CAAC,KAAc,EAAE,IAAY,EAAW,EAAE;QACxD,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;QACzC,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI;YAAE,OAAO,IAAI,KAAK,EAAE,CAAC;QAC9D,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,OAAO,KAAK,CAAC;QAC5C,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC5G,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QACtC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC;QAClE,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,EAAE,GAAG,IAAI,IAAI,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9E,CAAC,CAAC;IACF,OAAO,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AAC7B,CAAC;AAED,4GAA4G;AAC5G,MAAM,UAAU,cAAc,CAC5B,KAAgC,EAChC,IAA6D;IAE7D,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;QACvB,IAAI,CAAC,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;YAC3B,MAAM,EAAE,GAAG,CAA0C,CAAC;YACtD,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QACpF,CAAC;QACD,MAAM,EAAE,GAAG,CAAyC,CAAC;QACrD,OAAO,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;IAC1E,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,OAAO,CACrB,KAAgC,EAChC,IAA6D;IAE7D,OAAO,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;AAC5E,CAAC"}
|
package/dist/gate/pipeline.d.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import type { Manifest } from '@synoikia/plugin-sdk';
|
|
2
|
-
import type {
|
|
2
|
+
import type { SessionGrantService } from '../approvals/grants.js';
|
|
3
|
+
import type { ExecutionRegistry } from '../runtime/executions.js';
|
|
4
|
+
import type { ApprovalService, ClientPrompts, ParkHook } from '../approvals/service.js';
|
|
3
5
|
import type { Db } from '../db/index.js';
|
|
4
6
|
import type { AccessPrincipal } from './access.js';
|
|
5
7
|
import type { InstanceSettings } from '../instances/settings.js';
|
|
@@ -7,23 +9,25 @@ import type { PluginProcess } from '../plugins/process.js';
|
|
|
7
9
|
import type { Binding } from '../sandbox/index.js';
|
|
8
10
|
import type { SlidingWindowLimiter } from './rate-limit.js';
|
|
9
11
|
import type { Redactor } from './redact.js';
|
|
10
|
-
/**
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
* resolveOperation → attestation → access level → resolveTargets → prepareWrite
|
|
14
|
-
* → [level ask: pre-approval rule (never for locked) → human approval] → invoke → redact → audit
|
|
15
|
-
*
|
|
16
|
-
* Reads run straight away; acknowledged writes at level `write` are auto-approved.
|
|
17
|
-
*
|
|
18
|
-
* Every branch, including every rejection, writes one `call` audit event. Calls within one
|
|
19
|
-
* `execute` run strictly one at a time, so a pending approval blocks the whole script.
|
|
20
|
-
*/
|
|
12
|
+
/** The permission gate (design §5.2), the only path from sandboxed code to `invoke`: resolve → attest →
|
|
13
|
+
* access → targets → prepareWrite → [grant | rule | human] → invoke → redact → audit (every branch audited). */
|
|
21
14
|
export interface GateDeps {
|
|
22
15
|
db: Db;
|
|
23
16
|
approvals: ApprovalService;
|
|
24
17
|
limiter: SlidingWindowLimiter;
|
|
25
18
|
attestationKey: Buffer;
|
|
26
19
|
now?: () => Date;
|
|
20
|
+
/** Session grants (design §5.8); without it, no grant applies. */
|
|
21
|
+
grants?: SessionGrantService;
|
|
22
|
+
/** Parked executions (design §5.6); without it, nothing parks. */
|
|
23
|
+
executions?: ExecutionRegistry;
|
|
24
|
+
}
|
|
25
|
+
/** How an execution parks (design §5.6): the gate audits the hand-over and reports each decision. */
|
|
26
|
+
export interface GatePark extends ParkHook {
|
|
27
|
+
settled(approvalId: string, decision: {
|
|
28
|
+
outcome: string;
|
|
29
|
+
decidedBy?: string;
|
|
30
|
+
}): void;
|
|
27
31
|
}
|
|
28
32
|
export interface InstanceRuntime {
|
|
29
33
|
instanceId: string;
|
|
@@ -33,13 +37,12 @@ export interface InstanceRuntime {
|
|
|
33
37
|
redact: Redactor;
|
|
34
38
|
/** The live plugin process; throws PluginUnavailableError while it is down. */
|
|
35
39
|
plugin: () => PluginProcess;
|
|
40
|
+
/** The catalog's plugin version while it matches the running child's, else undefined; checked when a
|
|
41
|
+
* call is gated and again before `invoke`, since descriptors belong to one bundle. */
|
|
42
|
+
catalogVersion: () => string | undefined;
|
|
36
43
|
}
|
|
37
44
|
export interface CallerContext {
|
|
38
|
-
/**
|
|
39
|
-
* `id` is the readable label recorded in the audit log (`token:Claude`); `key` is the stable
|
|
40
|
-
* principal (token id, grant id, external identity) that per-principal limits are keyed on, since
|
|
41
|
-
* two tokens may share a name.
|
|
42
|
-
*/
|
|
45
|
+
/** `id` is the audit label (`token:Claude`); `key` the stable principal per-principal limits use. */
|
|
43
46
|
client: {
|
|
44
47
|
kind: 'mcp_client';
|
|
45
48
|
id?: string;
|
|
@@ -50,12 +53,16 @@ export interface CallerContext {
|
|
|
50
53
|
principal: AccessPrincipal;
|
|
51
54
|
/** Present only for a live session whose client advertised elicitation. */
|
|
52
55
|
prompts?: ClientPrompts;
|
|
56
|
+
/** Without a usable prompt, the execution may park and hand out the approval link (design §5.6). */
|
|
57
|
+
parkable?: boolean;
|
|
58
|
+
/** False once the caller's credential was revoked; a parked run outlives the request that authenticated it. */
|
|
59
|
+
stillAuthorized?: () => boolean;
|
|
53
60
|
}
|
|
54
61
|
/** What per-principal limits are keyed on: the stable principal, never the display name. */
|
|
55
62
|
export declare const principalKey: (caller: CallerContext) => string;
|
|
56
|
-
/**
|
|
57
|
-
*
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
63
|
+
/** The gate bindings for one `execute` run; once `signal` aborts (the tool call ended, or its parked run
|
|
64
|
+
* was stopped), leftover calls are refused and open approvals cancelled. */
|
|
65
|
+
export declare function createGateBindings(deps: GateDeps, rt: InstanceRuntime, caller: CallerContext, signal?: AbortSignal, opts?: {
|
|
66
|
+
executionId?: string;
|
|
67
|
+
park?: GatePark;
|
|
68
|
+
}): Record<string, Record<string, Binding>>;
|
package/dist/gate/pipeline.js
CHANGED
|
@@ -8,7 +8,7 @@ import { BindingError } from '../sandbox/index.js';
|
|
|
8
8
|
import { verifyAttestationKey } from './attestation.js';
|
|
9
9
|
import { canonicalJson, sha256Hex } from './canonical.js';
|
|
10
10
|
import { evaluatePreApproval } from './preapproval.js';
|
|
11
|
-
import { redactDiff, redactPaths } from './redact.js';
|
|
11
|
+
import { redactDiff, redactPaths, redactResult } from './redact.js';
|
|
12
12
|
/** What per-principal limits are keyed on: the stable principal, never the display name. */
|
|
13
13
|
export const principalKey = (caller) => caller.client.key ?? caller.client.id ?? 'anonymous';
|
|
14
14
|
const MAX_ERROR_MESSAGE = 500;
|
|
@@ -51,15 +51,14 @@ const DENIAL_MESSAGES = {
|
|
|
51
51
|
prompt_failed: 'needs approval, but the client could not show the approval prompt',
|
|
52
52
|
confirmation_mismatch: 'was denied (confirmation mismatch)',
|
|
53
53
|
endpoint_stopped: 'was cancelled: the endpoint was stopped or reconfigured while it waited for approval',
|
|
54
|
+
park_refused: 'needs approval, and an earlier approval of this execution was not given or it reached its approval limit; call execute again',
|
|
55
|
+
too_many_parked: 'needs approval, and too many earlier calls of this client still wait for one; resume or finish those first',
|
|
54
56
|
};
|
|
55
|
-
/**
|
|
56
|
-
*
|
|
57
|
-
|
|
58
|
-
* refused and an approval still open is cancelled, so nothing runs after the tool call has returned.
|
|
59
|
-
*/
|
|
60
|
-
export function createGateBindings(deps, rt, caller, signal = new AbortController().signal) {
|
|
57
|
+
/** The gate bindings for one `execute` run; once `signal` aborts (the tool call ended, or its parked run
|
|
58
|
+
* was stopped), leftover calls are refused and open approvals cancelled. */
|
|
59
|
+
export function createGateBindings(deps, rt, caller, signal = new AbortController().signal, opts = {}) {
|
|
61
60
|
const now = deps.now ?? (() => new Date());
|
|
62
|
-
const executionId = randomUUID();
|
|
61
|
+
const executionId = opts.executionId ?? randomUUID();
|
|
63
62
|
let queue = Promise.resolve();
|
|
64
63
|
const openApprovals = new Set();
|
|
65
64
|
signal.addEventListener('abort', () => {
|
|
@@ -99,11 +98,17 @@ export function createGateBindings(deps, rt, caller, signal = new AbortControlle
|
|
|
99
98
|
if (signal.aborted)
|
|
100
99
|
reject('rejected:execution_ended', new BindingError('EXECUTION_ENDED', 'The execute call this belongs to has already ended'));
|
|
101
100
|
};
|
|
101
|
+
const ensureAuthorized = () => {
|
|
102
|
+
if (caller.stillAuthorized && !caller.stillAuthorized())
|
|
103
|
+
reject('rejected:credential_revoked', new BindingError('OPERATION_DISABLED', 'The credential of this call was revoked or no longer covers this endpoint'));
|
|
104
|
+
};
|
|
102
105
|
try {
|
|
103
106
|
ensureRunning();
|
|
107
|
+
ensureAuthorized();
|
|
104
108
|
// 0. Map the raw binding call onto a catalog key (path templates, split keys…).
|
|
105
109
|
const resolved = await rt.plugin().call('resolveOperation', { fn, args });
|
|
106
110
|
audit.operationKey = resolved.key;
|
|
111
|
+
const catalogAt = rt.catalogVersion();
|
|
107
112
|
const op = deps.db
|
|
108
113
|
.select()
|
|
109
114
|
.from(operations)
|
|
@@ -166,13 +171,23 @@ export function createGateBindings(deps, rt, caller, signal = new AbortControlle
|
|
|
166
171
|
if (isWrite && !deps.limiter.allows(writeBucket, rt.settings.writesPerMinute, 60_000))
|
|
167
172
|
overWriteBudget();
|
|
168
173
|
// 6. Level `write`: acknowledged writes are auto-approved. Level `ask` (a write, or a read given
|
|
169
|
-
// its own Ask): pre-approval rules
|
|
174
|
+
// its own Ask): a session grant, then pre-approval rules; neither covers locked ops.
|
|
170
175
|
let preapproved = false;
|
|
171
176
|
if (mode === 'auto') {
|
|
172
177
|
preapproved = true;
|
|
173
178
|
decision = 'auto-approved:level';
|
|
174
179
|
}
|
|
175
180
|
else if (!operation.locked && access.reachable && access.level === 'ask') {
|
|
181
|
+
// A session grant (§5.8) covers Ask, but never typed-confirmation ops nor locked ones.
|
|
182
|
+
const grant = operation.typedConfirmation
|
|
183
|
+
? undefined
|
|
184
|
+
: deps.grants?.active(rt.instanceId, principalKey(caller));
|
|
185
|
+
if (grant) {
|
|
186
|
+
preapproved = true;
|
|
187
|
+
decision = `auto-approved:grant:${grant.id}`;
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
if (!preapproved && !operation.locked && access.reachable && access.level === 'ask') {
|
|
176
191
|
const targetCovers = operation.matchProfile
|
|
177
192
|
? rt.manifest.matchProfiles[operation.matchProfile]?.find((f) => f.field === '$targets')?.covers
|
|
178
193
|
: undefined;
|
|
@@ -196,6 +211,20 @@ export function createGateBindings(deps, rt, caller, signal = new AbortControlle
|
|
|
196
211
|
reject('rejected:missing_confirmation_literal', new BindingError('PLUGIN_ERROR', `The plugin did not provide a confirmation value for ${operation.key}`));
|
|
197
212
|
}
|
|
198
213
|
ensureRunning();
|
|
214
|
+
let parked = false;
|
|
215
|
+
const park = opts.park && {
|
|
216
|
+
reserve: () => opts.park.reserve(),
|
|
217
|
+
offer: (a) => {
|
|
218
|
+
parked = true;
|
|
219
|
+
writeAudit(deps.db, {
|
|
220
|
+
...audit,
|
|
221
|
+
decision: 'awaiting_approval',
|
|
222
|
+
durationMs: Date.now() - started,
|
|
223
|
+
detail: { ...audit.detail, approvalId: a.approvalId, channel: 'link' },
|
|
224
|
+
}, now());
|
|
225
|
+
opts.park.offer(a);
|
|
226
|
+
},
|
|
227
|
+
};
|
|
199
228
|
const paramsHash = sha256Hex(canonicalJson({ key: operation.key, params, targets, expectedHash: expectedHash ?? null }));
|
|
200
229
|
const request = deps.approvals.request({
|
|
201
230
|
instanceId: rt.instanceId,
|
|
@@ -219,6 +248,7 @@ export function createGateBindings(deps, rt, caller, signal = new AbortControlle
|
|
|
219
248
|
isWrite &&
|
|
220
249
|
!operation.locked &&
|
|
221
250
|
!operation.typedConfirmation,
|
|
251
|
+
park,
|
|
222
252
|
});
|
|
223
253
|
audit.detail.approvalId = request.id;
|
|
224
254
|
openApprovals.add(request.id);
|
|
@@ -230,6 +260,8 @@ export function createGateBindings(deps, rt, caller, signal = new AbortControlle
|
|
|
230
260
|
openApprovals.delete(request.id);
|
|
231
261
|
budget.resume();
|
|
232
262
|
}
|
|
263
|
+
if (parked)
|
|
264
|
+
opts.park.settled(request.id, { outcome: approval.outcome, decidedBy: approval.decidedBy });
|
|
233
265
|
audit.decidedBy = approval.decidedBy;
|
|
234
266
|
audit.decidedVia = approval.via;
|
|
235
267
|
if (approval.outcome === 'cancelled' && signal.aborted)
|
|
@@ -240,12 +272,30 @@ export function createGateBindings(deps, rt, caller, signal = new AbortControlle
|
|
|
240
272
|
? `Approval for ${operation.key} timed out and was denied`
|
|
241
273
|
: `${operation.key} ${(approval.reason && DENIAL_MESSAGES[approval.reason]) ?? `was denied${approval.reason ? ` (${approval.reason})` : ''}`}`));
|
|
242
274
|
}
|
|
275
|
+
ensureAuthorized();
|
|
243
276
|
// The admin may have lowered the level while the approval was open: the call must still be allowed.
|
|
244
277
|
const after = resolveAccess(deps.db, rt.instanceId, operation.key, caller.principal);
|
|
245
278
|
if (!after.reachable || after.mode === 'run') {
|
|
246
279
|
reject('rejected:access_changed', new BindingError('OPERATION_DISABLED', `${operation.key} was disabled while waiting for approval`));
|
|
247
280
|
}
|
|
248
281
|
decision = 'human-approved';
|
|
282
|
+
const maxHours = rt.settings.sessionGrantMaxHours;
|
|
283
|
+
if (approval.sessionGrantUntil &&
|
|
284
|
+
deps.grants &&
|
|
285
|
+
maxHours > 0 &&
|
|
286
|
+
!operation.locked &&
|
|
287
|
+
!operation.typedConfirmation) {
|
|
288
|
+
// The page offers only allowed lengths; the cap is enforced here too.
|
|
289
|
+
const cap = now().getTime() + maxHours * 3_600_000;
|
|
290
|
+
deps.grants.create({
|
|
291
|
+
instanceId: rt.instanceId,
|
|
292
|
+
principal: principalKey(caller),
|
|
293
|
+
client: caller.client.id,
|
|
294
|
+
createdBy: approval.decidedBy ?? 'unknown',
|
|
295
|
+
approvalId: request.id,
|
|
296
|
+
expiresAt: new Date(Math.min(approval.sessionGrantUntil.getTime(), cap)),
|
|
297
|
+
});
|
|
298
|
+
}
|
|
249
299
|
}
|
|
250
300
|
}
|
|
251
301
|
// 8. The approver saw these targets; after a wait they may have moved (an entity joined the area).
|
|
@@ -258,6 +308,12 @@ export function createGateBindings(deps, rt, caller, signal = new AbortControlle
|
|
|
258
308
|
reject('rejected:targets_changed', new BindingError('TARGETS_CHANGED', `What ${operation.key} would act on changed while it waited for approval; call it again to get a fresh approval`));
|
|
259
309
|
}
|
|
260
310
|
}
|
|
311
|
+
// The catalog that gated and masks this call must still describe the running code (an update or
|
|
312
|
+
// restart during an approval wait would otherwise run it under another bundle's rules).
|
|
313
|
+
const catalogNow = rt.catalogVersion();
|
|
314
|
+
if (catalogAt === undefined || catalogNow !== catalogAt) {
|
|
315
|
+
throw new BindingError('PLUGIN_UNAVAILABLE', 'The plugin changed while this call was pending (an update or restart); call it again');
|
|
316
|
+
}
|
|
261
317
|
// 9. The real upstream call, within what's left of the sandbox budget.
|
|
262
318
|
if (isWrite && !deps.limiter.take(writeBucket, rt.settings.writesPerMinute, 60_000))
|
|
263
319
|
overWriteBudget();
|
|
@@ -272,9 +328,10 @@ export function createGateBindings(deps, rt, caller, signal = new AbortControlle
|
|
|
272
328
|
...(rt.manifest.capabilities.targets ? { targets } : {}),
|
|
273
329
|
},
|
|
274
330
|
}, remaining);
|
|
275
|
-
// 10–11. Redact
|
|
331
|
+
// 10–11. Redact (the operation's declared result secrets first, then by key name and secret
|
|
332
|
+
// value), audit, hand back. Nothing past this point sees the plugin's raw result.
|
|
276
333
|
finish(decision, { resultStatus: 'ok' });
|
|
277
|
-
return rt.redact(result);
|
|
334
|
+
return rt.redact(redactResult(result, operation.sensitiveResult));
|
|
278
335
|
}
|
|
279
336
|
catch (err) {
|
|
280
337
|
const raw = toBindingError(err);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../src/gate/pipeline.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../src/gate/pipeline.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,20 +11,13 @@ export type PreApprovalOutcome = {
|
|
|
11
11
|
} | {
|
|
12
12
|
kind: 'no_match';
|
|
13
13
|
};
|
|
14
|
-
/**
|
|
15
|
-
*
|
|
16
|
-
* and records the hit, all in one transaction so concurrent calls can't overshoot a limit. Callers
|
|
17
|
-
* must never pass a locked operation (design §5.2 step 6); rules on locked ops are also disabled at sync.
|
|
18
|
-
*/
|
|
14
|
+
/** Finds a matching, unexpired rule with budget left and records the hit, in one transaction. Never
|
|
15
|
+
* called for locked operations (design §5.2). */
|
|
19
16
|
export declare function evaluatePreApproval(db: Db, input: {
|
|
20
17
|
instanceId: string;
|
|
21
18
|
operationId: string;
|
|
22
19
|
params: unknown;
|
|
23
20
|
targets: readonly ResolvedTarget[];
|
|
24
|
-
/**
|
|
25
|
-
* The params subtrees a `$targets` condition stands for (the profile field's `covers`). A rule with
|
|
26
|
-
* a `$targets` condition already checks every resolved target, so under strict matching those
|
|
27
|
-
* subtrees count as covered. Nothing is stored on the rule.
|
|
28
|
-
*/
|
|
21
|
+
/** The params subtrees a `$targets` condition covers (the profile field's `covers`), for strict matching. */
|
|
29
22
|
targetCovers?: readonly string[];
|
|
30
23
|
}, now?: Date): PreApprovalOutcome;
|
package/dist/gate/preapproval.js
CHANGED
|
@@ -1,11 +1,8 @@
|
|
|
1
1
|
import { and, asc, count, eq, gt } from 'drizzle-orm';
|
|
2
2
|
import { preApprovalHits, preApprovalRules } from '../db/schema.js';
|
|
3
3
|
import { conditionsHold, coversAllParams, MatchSchema } from './match.js';
|
|
4
|
-
/**
|
|
5
|
-
*
|
|
6
|
-
* and records the hit, all in one transaction so concurrent calls can't overshoot a limit. Callers
|
|
7
|
-
* must never pass a locked operation (design §5.2 step 6); rules on locked ops are also disabled at sync.
|
|
8
|
-
*/
|
|
4
|
+
/** Finds a matching, unexpired rule with budget left and records the hit, in one transaction. Never
|
|
5
|
+
* called for locked operations (design §5.2). */
|
|
9
6
|
export function evaluatePreApproval(db, input, now = new Date()) {
|
|
10
7
|
return db.transaction((tx) => {
|
|
11
8
|
const rules = tx
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"preapproval.js","sourceRoot":"","sources":["../../src/gate/preapproval.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAEtD,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAQ1E
|
|
1
|
+
{"version":3,"file":"preapproval.js","sourceRoot":"","sources":["../../src/gate/preapproval.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,4 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Sliding windows of hit timestamps per key, bounded in memory: keys whose window has passed are
|
|
3
|
-
* dropped, and past `maxKeys` the keys with the fewest hits go first. Callers keyed by anything a client
|
|
4
|
-
* chooses (usernames, IPs, principals) can't grow it without limit.
|
|
5
|
-
*/
|
|
1
|
+
/** Sliding windows of hit timestamps per key, bounded so client-chosen keys can't grow it without limit. */
|
|
6
2
|
export declare class HitWindows {
|
|
7
3
|
private readonly now;
|
|
8
4
|
private readonly maxKeys;
|
|
@@ -13,17 +9,11 @@ export declare class HitWindows {
|
|
|
13
9
|
recent(key: string, windowMs: number): number[];
|
|
14
10
|
add(key: string, windowMs: number): number[];
|
|
15
11
|
delete(key: string): void;
|
|
16
|
-
/**
|
|
17
|
-
*
|
|
18
|
-
* down to 90% of the cap. A flood of one-off keys therefore can't push out a key that is close to or
|
|
19
|
-
* at its limit, such as a username that is locked out.
|
|
20
|
-
*/
|
|
12
|
+
/** Drops expired keys, then those with the fewest hits, to 90% of the cap, so a flood of one-off keys
|
|
13
|
+
* can't evict a key at its limit. */
|
|
21
14
|
private prune;
|
|
22
15
|
}
|
|
23
|
-
/**
|
|
24
|
-
* In-memory sliding-window limiter for per-instance execute/write caps (design §5.2). Separate from
|
|
25
|
-
* pre-approval rule limits, which are persisted in `pre_approval_hits`.
|
|
26
|
-
*/
|
|
16
|
+
/** In-memory limiter for per-instance execute/write caps (design §5.2), separate from rule limits. */
|
|
27
17
|
export declare class SlidingWindowLimiter {
|
|
28
18
|
private readonly hits;
|
|
29
19
|
constructor(now?: () => number, maxKeys?: number);
|
package/dist/gate/rate-limit.js
CHANGED
|
@@ -1,8 +1,4 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Sliding windows of hit timestamps per key, bounded in memory: keys whose window has passed are
|
|
3
|
-
* dropped, and past `maxKeys` the keys with the fewest hits go first. Callers keyed by anything a client
|
|
4
|
-
* chooses (usernames, IPs, principals) can't grow it without limit.
|
|
5
|
-
*/
|
|
1
|
+
/** Sliding windows of hit timestamps per key, bounded so client-chosen keys can't grow it without limit. */
|
|
6
2
|
export class HitWindows {
|
|
7
3
|
now;
|
|
8
4
|
maxKeys;
|
|
@@ -36,11 +32,8 @@ export class HitWindows {
|
|
|
36
32
|
delete(key) {
|
|
37
33
|
this.map.delete(key);
|
|
38
34
|
}
|
|
39
|
-
/**
|
|
40
|
-
*
|
|
41
|
-
* down to 90% of the cap. A flood of one-off keys therefore can't push out a key that is close to or
|
|
42
|
-
* at its limit, such as a username that is locked out.
|
|
43
|
-
*/
|
|
35
|
+
/** Drops expired keys, then those with the fewest hits, to 90% of the cap, so a flood of one-off keys
|
|
36
|
+
* can't evict a key at its limit. */
|
|
44
37
|
prune() {
|
|
45
38
|
const t = this.now();
|
|
46
39
|
for (const [k, e] of this.map)
|
|
@@ -55,10 +48,7 @@ export class HitWindows {
|
|
|
55
48
|
this.map.delete(k);
|
|
56
49
|
}
|
|
57
50
|
}
|
|
58
|
-
/**
|
|
59
|
-
* In-memory sliding-window limiter for per-instance execute/write caps (design §5.2). Separate from
|
|
60
|
-
* pre-approval rule limits, which are persisted in `pre_approval_hits`.
|
|
61
|
-
*/
|
|
51
|
+
/** In-memory limiter for per-instance execute/write caps (design §5.2), separate from rule limits. */
|
|
62
52
|
export class SlidingWindowLimiter {
|
|
63
53
|
hits;
|
|
64
54
|
constructor(now = Date.now, maxKeys) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rate-limit.js","sourceRoot":"","sources":["../../src/gate/rate-limit.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"rate-limit.js","sourceRoot":"","sources":["../../src/gate/rate-limit.ts"],"names":[],"mappings":"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"}
|