@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.
Files changed (182) hide show
  1. package/dist/app.d.ts +10 -8
  2. package/dist/app.js +14 -4
  3. package/dist/app.js.map +1 -1
  4. package/dist/approvals/grants.d.ts +34 -0
  5. package/dist/approvals/grants.js +79 -0
  6. package/dist/approvals/grants.js.map +1 -0
  7. package/dist/approvals/links.d.ts +2 -5
  8. package/dist/approvals/links.js +2 -5
  9. package/dist/approvals/links.js.map +1 -1
  10. package/dist/approvals/service.d.ts +24 -16
  11. package/dist/approvals/service.js +24 -6
  12. package/dist/approvals/service.js.map +1 -1
  13. package/dist/audit-query.d.ts +1 -5
  14. package/dist/audit-query.js +1 -5
  15. package/dist/audit-query.js.map +1 -1
  16. package/dist/auth/mcp-auth.d.ts +11 -17
  17. package/dist/auth/mcp-auth.js +14 -13
  18. package/dist/auth/mcp-auth.js.map +1 -1
  19. package/dist/auth/mcp-tokens.d.ts +4 -4
  20. package/dist/auth/mcp-tokens.js +11 -4
  21. package/dist/auth/mcp-tokens.js.map +1 -1
  22. package/dist/auth/oauth.d.ts +7 -18
  23. package/dist/auth/oauth.js +18 -18
  24. package/dist/auth/oauth.js.map +1 -1
  25. package/dist/auth/oidc.d.ts +1 -4
  26. package/dist/auth/oidc.js +3 -9
  27. package/dist/auth/oidc.js.map +1 -1
  28. package/dist/auth/sessions.d.ts +9 -4
  29. package/dist/auth/sessions.js +18 -2
  30. package/dist/auth/sessions.js.map +1 -1
  31. package/dist/auth/throttle.d.ts +2 -8
  32. package/dist/auth/throttle.js +2 -8
  33. package/dist/auth/throttle.js.map +1 -1
  34. package/dist/auth/totp.d.ts +1 -4
  35. package/dist/auth/totp.js +1 -4
  36. package/dist/auth/totp.js.map +1 -1
  37. package/dist/auth/users.d.ts +1 -4
  38. package/dist/auth/users.js +3 -8
  39. package/dist/auth/users.js.map +1 -1
  40. package/dist/catalog/groups.d.ts +6 -18
  41. package/dist/catalog/groups.js +7 -23
  42. package/dist/catalog/groups.js.map +1 -1
  43. package/dist/catalog/registry.d.ts +1 -4
  44. package/dist/catalog/registry.js +1 -4
  45. package/dist/catalog/registry.js.map +1 -1
  46. package/dist/catalog/rules.d.ts +6 -18
  47. package/dist/catalog/rules.js +3 -9
  48. package/dist/catalog/rules.js.map +1 -1
  49. package/dist/catalog/sync.d.ts +2 -17
  50. package/dist/catalog/sync.js +5 -20
  51. package/dist/catalog/sync.js.map +1 -1
  52. package/dist/cli.js +2 -9
  53. package/dist/cli.js.map +1 -1
  54. package/dist/config/env.js +3 -8
  55. package/dist/config/env.js.map +1 -1
  56. package/dist/crypto/index.js +1 -4
  57. package/dist/crypto/index.js.map +1 -1
  58. package/dist/crypto/rotate.d.ts +2 -5
  59. package/dist/crypto/rotate.js.map +1 -1
  60. package/dist/db/index.d.ts +1 -4
  61. package/dist/db/index.js +1 -4
  62. package/dist/db/index.js.map +1 -1
  63. package/dist/db/schema.d.ts +44 -0
  64. package/dist/db/schema.js +7 -9
  65. package/dist/db/schema.js.map +1 -1
  66. package/dist/events.d.ts +1 -4
  67. package/dist/events.js.map +1 -1
  68. package/dist/gate/access.d.ts +3 -20
  69. package/dist/gate/access.js +3 -20
  70. package/dist/gate/access.js.map +1 -1
  71. package/dist/gate/attestation.d.ts +2 -6
  72. package/dist/gate/attestation.js +2 -6
  73. package/dist/gate/attestation.js.map +1 -1
  74. package/dist/gate/match.d.ts +5 -13
  75. package/dist/gate/match.js +5 -21
  76. package/dist/gate/match.js.map +1 -1
  77. package/dist/gate/pipeline.d.ts +30 -23
  78. package/dist/gate/pipeline.js +68 -11
  79. package/dist/gate/pipeline.js.map +1 -1
  80. package/dist/gate/preapproval.d.ts +3 -10
  81. package/dist/gate/preapproval.js +2 -5
  82. package/dist/gate/preapproval.js.map +1 -1
  83. package/dist/gate/rate-limit.d.ts +4 -14
  84. package/dist/gate/rate-limit.js +4 -14
  85. package/dist/gate/rate-limit.js.map +1 -1
  86. package/dist/gate/redact.d.ts +10 -26
  87. package/dist/gate/redact.js +12 -26
  88. package/dist/gate/redact.js.map +1 -1
  89. package/dist/http/admin/auth.d.ts +2 -8
  90. package/dist/http/admin/auth.js +20 -5
  91. package/dist/http/admin/auth.js.map +1 -1
  92. package/dist/http/admin/instances.js +19 -1
  93. package/dist/http/admin/instances.js.map +1 -1
  94. package/dist/http/admin/system.js +2 -0
  95. package/dist/http/admin/system.js.map +1 -1
  96. package/dist/http/common.d.ts +2 -5
  97. package/dist/http/common.js +2 -5
  98. package/dist/http/common.js.map +1 -1
  99. package/dist/http/mcp/approval-card.d.ts +6 -0
  100. package/dist/http/mcp/approval-card.js +160 -0
  101. package/dist/http/mcp/approval-card.js.map +1 -0
  102. package/dist/http/mcp/approval-routes.d.ts +2 -6
  103. package/dist/http/mcp/approval-routes.js +33 -8
  104. package/dist/http/mcp/approval-routes.js.map +1 -1
  105. package/dist/http/mcp/endpoint.d.ts +4 -16
  106. package/dist/http/mcp/endpoint.js +108 -28
  107. package/dist/http/mcp/endpoint.js.map +1 -1
  108. package/dist/http/mcp/oauth-routes.d.ts +3 -10
  109. package/dist/http/mcp/oauth-routes.js +15 -9
  110. package/dist/http/mcp/oauth-routes.js.map +1 -1
  111. package/dist/http/mcp/pages.d.ts +8 -1
  112. package/dist/http/mcp/pages.js +21 -2
  113. package/dist/http/mcp/pages.js.map +1 -1
  114. package/dist/http/mcp-app.d.ts +1 -4
  115. package/dist/http/mcp-app.js +1 -4
  116. package/dist/http/mcp-app.js.map +1 -1
  117. package/dist/instances/connection.d.ts +5 -14
  118. package/dist/instances/connection.js +6 -18
  119. package/dist/instances/connection.js.map +1 -1
  120. package/dist/instances/manager.d.ts +10 -18
  121. package/dist/instances/manager.js +33 -19
  122. package/dist/instances/manager.js.map +1 -1
  123. package/dist/instances/settings.d.ts +2 -0
  124. package/dist/instances/settings.js +4 -5
  125. package/dist/instances/settings.js.map +1 -1
  126. package/dist/lenient.d.ts +3 -9
  127. package/dist/lenient.js +3 -9
  128. package/dist/lenient.js.map +1 -1
  129. package/dist/lock.d.ts +4 -10
  130. package/dist/lock.js +5 -15
  131. package/dist/lock.js.map +1 -1
  132. package/dist/log.d.ts +2 -5
  133. package/dist/log.js +2 -5
  134. package/dist/log.js.map +1 -1
  135. package/dist/maintenance.js +2 -5
  136. package/dist/maintenance.js.map +1 -1
  137. package/dist/notify/service.d.ts +2 -5
  138. package/dist/notify/service.js +2 -5
  139. package/dist/notify/service.js.map +1 -1
  140. package/dist/plugins/default-repo.d.ts +1 -4
  141. package/dist/plugins/default-repo.js +1 -4
  142. package/dist/plugins/default-repo.js.map +1 -1
  143. package/dist/plugins/discovery.d.ts +2 -5
  144. package/dist/plugins/discovery.js +2 -5
  145. package/dist/plugins/discovery.js.map +1 -1
  146. package/dist/plugins/minisign.d.ts +2 -6
  147. package/dist/plugins/minisign.js.map +1 -1
  148. package/dist/plugins/process.d.ts +1 -4
  149. package/dist/plugins/process.js +1 -4
  150. package/dist/plugins/process.js.map +1 -1
  151. package/dist/plugins/repos.d.ts +4 -16
  152. package/dist/plugins/repos.js +7 -25
  153. package/dist/plugins/repos.js.map +1 -1
  154. package/dist/plugins/supervisor.d.ts +3 -9
  155. package/dist/plugins/supervisor.js +5 -5
  156. package/dist/plugins/supervisor.js.map +1 -1
  157. package/dist/runtime/executions.d.ts +68 -0
  158. package/dist/runtime/executions.js +158 -0
  159. package/dist/runtime/executions.js.map +1 -0
  160. package/dist/runtime/index.d.ts +7 -10
  161. package/dist/runtime/index.js +116 -31
  162. package/dist/runtime/index.js.map +1 -1
  163. package/dist/sandbox/index.d.ts +3 -10
  164. package/dist/sandbox/index.js +2 -3
  165. package/dist/sandbox/index.js.map +1 -1
  166. package/dist/settings.d.ts +3 -4
  167. package/dist/settings.js +9 -4
  168. package/dist/settings.js.map +1 -1
  169. package/dist/testing/contract.d.ts +2 -7
  170. package/dist/testing/contract.js.map +1 -1
  171. package/dist/testing/fake-http.d.ts +1 -5
  172. package/dist/testing/fake-http.js.map +1 -1
  173. package/dist/testing/index.d.ts +14 -12
  174. package/dist/testing/index.js +21 -6
  175. package/dist/testing/index.js.map +1 -1
  176. package/dist/testing/repository.d.ts +2 -7
  177. package/dist/testing/repository.js +3 -12
  178. package/dist/testing/repository.js.map +1 -1
  179. package/drizzle/0012_sensitive_result.sql +7 -0
  180. package/drizzle/meta/0012_snapshot.json +2368 -0
  181. package/drizzle/meta/_journal.json +7 -0
  182. package/package.json +2 -2
@@ -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
- * Whether every parameter is covered by some condition: a condition on a path covers everything under
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;
@@ -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
- * Pre-approval `match` evaluator (design §5.2). A rule's match is a list of conditions that must all
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
- * Whether every parameter is covered by some condition: a condition on a path covers everything under
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 = []) {
@@ -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;;;;;;;;;GASG;AAEH,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;;;;GAIG;AACH,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;;;;;GAKG;AACH,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"}
1
+ {"version":3,"file":"match.js","sourceRoot":"","sources":["../../src/gate/match.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,7 @@
1
1
  import type { Manifest } from '@synoikia/plugin-sdk';
2
- import type { ApprovalService, ClientPrompts } from '../approvals/service.js';
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
- * The permission gate (design §5.2): the only path from sandboxed code to a plugin's `invoke`.
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
- * The gate bindings for one `execute` run. `signal` ends the run: once it is aborted (the sandbox
58
- * settled, the MCP request was cancelled, or the session closed), calls the script left behind are
59
- * refused and an approval still open is cancelled, so nothing runs after the tool call has returned.
60
- */
61
- export declare function createGateBindings(deps: GateDeps, rt: InstanceRuntime, caller: CallerContext, signal?: AbortSignal): Record<string, Record<string, Binding>>;
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>>;
@@ -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
- * The gate bindings for one `execute` run. `signal` ends the run: once it is aborted (the sandbox
57
- * settled, the MCP request was cancelled, or the session closed), calls the script left behind are
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, which never cover locked ops nor unacknowledged writes.
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, audit, hand back.
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
- * Finds an enabled, unexpired rule for the operation whose match holds and which has rate budget left,
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;
@@ -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
- * Finds an enabled, unexpired rule for the operation whose match holds and which has rate budget left,
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":"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"}
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
- * Drops keys whose window has passed, then the keys with the fewest hits (oldest first among equals),
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);
@@ -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
- * Drops keys whose window has passed, then the keys with the fewest hits (oldest first among equals),
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":"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"}
1
+ {"version":3,"file":"rate-limit.js","sourceRoot":"","sources":["../../src/gate/rate-limit.ts"],"names":[],"mappings":"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"}