usertrust 1.3.0 → 1.4.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 (69) hide show
  1. package/README.md +9 -9
  2. package/dist/audit/chain.d.ts +9 -0
  3. package/dist/audit/chain.d.ts.map +1 -1
  4. package/dist/audit/chain.js +65 -9
  5. package/dist/audit/chain.js.map +1 -1
  6. package/dist/audit/verify.d.ts +19 -0
  7. package/dist/audit/verify.d.ts.map +1 -1
  8. package/dist/audit/verify.js +216 -14
  9. package/dist/audit/verify.js.map +1 -1
  10. package/dist/cli/init.d.ts.map +1 -1
  11. package/dist/cli/init.js +9 -1
  12. package/dist/cli/init.js.map +1 -1
  13. package/dist/cli/skill.d.ts.map +1 -1
  14. package/dist/cli/skill.js +35 -5
  15. package/dist/cli/skill.js.map +1 -1
  16. package/dist/cli/snapshot.d.ts.map +1 -1
  17. package/dist/cli/snapshot.js +20 -2
  18. package/dist/cli/snapshot.js.map +1 -1
  19. package/dist/cli/verify.d.ts.map +1 -1
  20. package/dist/cli/verify.js +20 -11
  21. package/dist/cli/verify.js.map +1 -1
  22. package/dist/govern.d.ts +5 -1
  23. package/dist/govern.d.ts.map +1 -1
  24. package/dist/govern.js +285 -116
  25. package/dist/govern.js.map +1 -1
  26. package/dist/headless.d.ts.map +1 -1
  27. package/dist/headless.js +149 -32
  28. package/dist/headless.js.map +1 -1
  29. package/dist/ledger/client.d.ts +14 -0
  30. package/dist/ledger/client.d.ts.map +1 -1
  31. package/dist/ledger/client.js +56 -0
  32. package/dist/ledger/client.js.map +1 -1
  33. package/dist/ledger/pricing.d.ts.map +1 -1
  34. package/dist/ledger/pricing.js +8 -2
  35. package/dist/ledger/pricing.js.map +1 -1
  36. package/dist/policy/default-rules.d.ts +18 -3
  37. package/dist/policy/default-rules.d.ts.map +1 -1
  38. package/dist/policy/default-rules.js +33 -15
  39. package/dist/policy/default-rules.js.map +1 -1
  40. package/dist/policy/gate.d.ts.map +1 -1
  41. package/dist/policy/gate.js +114 -16
  42. package/dist/policy/gate.js.map +1 -1
  43. package/dist/policy/injection.d.ts.map +1 -1
  44. package/dist/policy/injection.js +25 -16
  45. package/dist/policy/injection.js.map +1 -1
  46. package/dist/policy/pii.d.ts +20 -0
  47. package/dist/policy/pii.d.ts.map +1 -1
  48. package/dist/policy/pii.js +45 -2
  49. package/dist/policy/pii.js.map +1 -1
  50. package/dist/shared/types.d.ts +16 -0
  51. package/dist/shared/types.d.ts.map +1 -1
  52. package/dist/shared/types.js +12 -1
  53. package/dist/shared/types.js.map +1 -1
  54. package/dist/snapshot/checkpoint.d.ts +18 -2
  55. package/dist/snapshot/checkpoint.d.ts.map +1 -1
  56. package/dist/snapshot/checkpoint.js +101 -17
  57. package/dist/snapshot/checkpoint.js.map +1 -1
  58. package/dist/streaming.d.ts.map +1 -1
  59. package/dist/streaming.js +14 -1
  60. package/dist/streaming.js.map +1 -1
  61. package/dist/supply-chain/permissions.d.ts +16 -3
  62. package/dist/supply-chain/permissions.d.ts.map +1 -1
  63. package/dist/supply-chain/permissions.js +59 -9
  64. package/dist/supply-chain/permissions.js.map +1 -1
  65. package/dist/supply-chain/sign.d.ts +5 -2
  66. package/dist/supply-chain/sign.d.ts.map +1 -1
  67. package/dist/supply-chain/sign.js +10 -2
  68. package/dist/supply-chain/sign.js.map +1 -1
  69. package/package.json +2 -4
@@ -71,6 +71,11 @@ export class TrustTBClient {
71
71
  }
72
72
  }));
73
73
  }, 30_000);
74
+ // Do not let the health-check timer keep the Node event loop alive. Without
75
+ // this, a process that forgets to call destroy() can never exit — and the
76
+ // beforeExit cleanup net (which only fires on an otherwise-empty loop) never
77
+ // runs. The timer still fires while the loop is busy.
78
+ this.healthCheckInterval.unref?.();
74
79
  }
75
80
  isConnectionError(err) {
76
81
  if (!(err instanceof Error))
@@ -248,6 +253,57 @@ export class TrustTBClient {
248
253
  }
249
254
  return accountId;
250
255
  }
256
+ /**
257
+ * Create a per-session budget wallet that TigerBeetle balance-enforces.
258
+ *
259
+ * The account carries `debits_must_not_exceed_credits` and is seeded with
260
+ * `seedCredits` usertokens via an ALLOCATION transfer from the treasury (the
261
+ * mint). Any pending debit against this wallet is atomically REJECTED by TB
262
+ * once cumulative (debits_pending + debits_posted) would exceed the seed —
263
+ * surfaced by createPendingTransfer as a {@link TBTransferError}.
264
+ *
265
+ * Returns a FRESH, non-deterministic account id (tbId()) every call, so
266
+ * re-initialising across processes never double-funds a shared deterministic
267
+ * account (which would inflate the enforced budget on every restart).
268
+ */
269
+ async createFundedBudgetWallet(seedCredits) {
270
+ const treasury = this.getTreasuryId(); // throws if treasury not initialized
271
+ const accountId = tbId();
272
+ const account = {
273
+ id: accountId,
274
+ debits_pending: 0n,
275
+ debits_posted: 0n,
276
+ credits_pending: 0n,
277
+ credits_posted: 0n,
278
+ user_data_128: 0n,
279
+ user_data_64: 0n,
280
+ user_data_32: 0,
281
+ reserved: 0,
282
+ ledger: LEDGER_USERTOKENS,
283
+ code: CODE_USER_WALLET,
284
+ flags: AccountFlags.debits_must_not_exceed_credits | AccountFlags.history,
285
+ timestamp: 0n,
286
+ };
287
+ const errors = await this.withReconnect(() => this.client.createAccounts([account]));
288
+ if (errors.length > 0) {
289
+ const err = errors[0];
290
+ if (!err)
291
+ throw new Error("Unknown account/transfer error");
292
+ throw new Error(`Failed to create budget wallet: ${CreateAccountError[err.result] ?? err.result}`);
293
+ }
294
+ // Fund from the treasury mint. The account id is fresh, so this seeding
295
+ // transfer runs exactly once per wallet.
296
+ const seed = Number.isFinite(seedCredits) && seedCredits > 0 ? Math.floor(seedCredits) : 0;
297
+ if (seed > 0) {
298
+ await this.immediateTransfer({
299
+ debitAccountId: treasury,
300
+ creditAccountId: accountId,
301
+ amount: seed,
302
+ code: XFER_ALLOCATION,
303
+ });
304
+ }
305
+ return accountId;
306
+ }
251
307
  setAccountMapping(userId, accountId) {
252
308
  this.accountMap.set(userId, accountId);
253
309
  }
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/ledger/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/ledger/client.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"pricing.d.ts","sourceRoot":"","sources":["../../src/ledger/pricing.ts"],"names":[],"mappings":"AAGA;;;;;;GAMG;AAEH,MAAM,WAAW,UAAU;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CA0CpD,CAAC;AAEF,sFAAsF;AACtF,eAAO,MAAM,qBAAqB,eAAe,CAAC;AAKlD,+DAA+D;AAC/D,eAAO,MAAM,aAAa,EAAE,UAAiD,CAAC;AAiB9E,2EAA2E;AAC3E,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAI5D;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,UAAU,CAejG;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAC3B,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,EACpB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,GACtC,MAAM,CAKR;AA6BD;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,MAAM,CAqC/D"}
1
+ {"version":3,"file":"pricing.d.ts","sourceRoot":"","sources":["../../src/ledger/pricing.ts"],"names":[],"mappings":"AAGA;;;;;;GAMG;AAEH,MAAM,WAAW,UAAU;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CA0CpD,CAAC;AAEF,sFAAsF;AACtF,eAAO,MAAM,qBAAqB,eAAe,CAAC;AAKlD,+DAA+D;AAC/D,eAAO,MAAM,aAAa,EAAE,UAAiD,CAAC;AAiB9E,2EAA2E;AAC3E,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAI5D;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,UAAU,CAejG;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAC3B,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,EACpB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,GACtC,MAAM,CAWR;AA6BD;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,MAAM,CAqC/D"}
@@ -90,8 +90,14 @@ export function getModelRates(model, customRates) {
90
90
  */
91
91
  export function estimateCost(model, inputTokens, outputTokens, customRates) {
92
92
  const rates = getModelRates(model, customRates);
93
- const inputCost = (inputTokens / 1000) * rates.inputPer1k;
94
- const outputCost = (outputTokens / 1000) * rates.outputPer1k;
93
+ // Defend against non-finite/negative token counts (garbage `max_tokens`, or
94
+ // provider usage that reports a negative/NaN value): any count that is not a
95
+ // finite number >= 0 is treated as 0. A NaN would otherwise poison budget
96
+ // state permanently; a negative would collapse a real cost to the floor of 1.
97
+ const inTok = Number.isFinite(inputTokens) && inputTokens > 0 ? inputTokens : 0;
98
+ const outTok = Number.isFinite(outputTokens) && outputTokens > 0 ? outputTokens : 0;
99
+ const inputCost = (inTok / 1000) * rates.inputPer1k;
100
+ const outputCost = (outTok / 1000) * rates.outputPer1k;
95
101
  return Math.max(1, Math.ceil(inputCost + outputCost));
96
102
  }
97
103
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"pricing.js","sourceRoot":"","sources":["../../src/ledger/pricing.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pricing.js","sourceRoot":"","sources":["../../src/ledger/pricing.ts"],"names":[],"mappings":"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"}
@@ -2,12 +2,27 @@
2
2
  * Default Policy Rules
3
3
  *
4
4
  * Sensible defaults for financial governance:
5
- * 1. Block zero-budget calls (budget <= 0 deny, hard)
6
- * 2. Warn on high-cost operations (estimated_cost > 1000warn, soft)
7
- * 3. Block if budget exceeded (budget_remaining < estimated_cost deny, hard)
5
+ * 1. Block calls that would overshoot remaining budget PRE-spend
6
+ * (budget_remaining_after < 0deny, hard). budget_remaining_after is the
7
+ * derived field budget_remaining - estimated_cost, injected by the governor.
8
+ * 2. Block if budget already exhausted (budget_remaining <= 0 → deny, hard).
9
+ * 3. Warn on high-cost operations (estimated_cost > 1000 → warn, soft).
8
10
  */
9
11
  import type { GateRule } from "./gate.js";
10
12
  export declare const DEFAULT_RULES: GateRule[];
13
+ /**
14
+ * Merge platform default rules with user-supplied rules.
15
+ *
16
+ * Contract: **defaults are ALWAYS enforced.** This is a safe concat —
17
+ * `[...defaults, ...userRules]` — so user policy can only ADD deny/warn rules on
18
+ * top of the platform guarantees; it can never remove or disable a default.
19
+ *
20
+ * There is deliberately NO id-based override or `enabled: false` escape hatch
21
+ * for defaults: a user rule that reuses a default's id is simply appended as an
22
+ * additional rule and the original default remains active. Priority still
23
+ * governs evaluation order inside {@link evaluatePolicy}.
24
+ */
25
+ export declare function mergePolicies(defaults: GateRule[], userRules: GateRule[]): GateRule[];
11
26
  /**
12
27
  * Custom condition check for budget-exceeded rule.
13
28
  * The default rules use two `exists` conditions as a prerequisite;
@@ -1 +1 @@
1
- {"version":3,"file":"default-rules.d.ts","sourceRoot":"","sources":["../../src/policy/default-rules.ts"],"names":[],"mappings":"AAGA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAE1C,eAAO,MAAM,aAAa,EAAE,QAAQ,EAkCnC,CAAC;AAEF;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAK1E"}
1
+ {"version":3,"file":"default-rules.d.ts","sourceRoot":"","sources":["../../src/policy/default-rules.ts"],"names":[],"mappings":"AAGA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAE1C,eAAO,MAAM,aAAa,EAAE,QAAQ,EAqCnC,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,QAAQ,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,QAAQ,EAAE,CAErF;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAK1E"}
@@ -2,26 +2,18 @@
2
2
  // Copyright 2026 Usertools, Inc.
3
3
  export const DEFAULT_RULES = [
4
4
  {
5
- id: "block-zero-budget",
6
- name: "Block zero-budget calls",
7
- description: "Deny any operation when the caller has zero or negative budget",
5
+ id: "block-budget-overshoot",
6
+ name: "Block calls that would exceed remaining budget",
7
+ description: "Deny pre-spend when estimated cost would drive remaining budget below zero",
8
8
  priority: 1,
9
9
  enabled: true,
10
10
  effect: "deny",
11
11
  enforcement: "hard",
12
12
  severity: "critical",
13
- conditions: [{ field: "budget", operator: "lte", value: 0 }],
14
- },
15
- {
16
- id: "warn-high-cost",
17
- name: "Warn on high-cost operations",
18
- description: "Emit a warning when estimated cost exceeds 1000 tokens",
19
- priority: 50,
20
- enabled: true,
21
- effect: "warn",
22
- enforcement: "soft",
23
- severity: "medium",
24
- conditions: [{ field: "estimated_cost", operator: "gt", value: 1000 }],
13
+ // budget_remaining_after = budget_remaining - estimated_cost (governor-supplied).
14
+ // As a hard rule this fails CLOSED: if the governor fails to supply the
15
+ // derived field, evaluation is indeterminate and the call is denied.
16
+ conditions: [{ field: "budget_remaining_after", operator: "lt", value: 0 }],
25
17
  },
26
18
  {
27
19
  id: "block-budget-exhausted",
@@ -34,7 +26,33 @@ export const DEFAULT_RULES = [
34
26
  severity: "high",
35
27
  conditions: [{ field: "budget_remaining", operator: "lte", value: 0 }],
36
28
  },
29
+ {
30
+ id: "warn-high-cost",
31
+ name: "Warn on high-cost operations",
32
+ description: "Emit a warning when estimated cost exceeds 1000 tokens",
33
+ priority: 50,
34
+ enabled: true,
35
+ effect: "warn",
36
+ enforcement: "soft",
37
+ severity: "medium",
38
+ conditions: [{ field: "estimated_cost", operator: "gt", value: 1000 }],
39
+ },
37
40
  ];
41
+ /**
42
+ * Merge platform default rules with user-supplied rules.
43
+ *
44
+ * Contract: **defaults are ALWAYS enforced.** This is a safe concat —
45
+ * `[...defaults, ...userRules]` — so user policy can only ADD deny/warn rules on
46
+ * top of the platform guarantees; it can never remove or disable a default.
47
+ *
48
+ * There is deliberately NO id-based override or `enabled: false` escape hatch
49
+ * for defaults: a user rule that reuses a default's id is simply appended as an
50
+ * additional rule and the original default remains active. Priority still
51
+ * governs evaluation order inside {@link evaluatePolicy}.
52
+ */
53
+ export function mergePolicies(defaults, userRules) {
54
+ return [...defaults, ...userRules];
55
+ }
38
56
  /**
39
57
  * Custom condition check for budget-exceeded rule.
40
58
  * The default rules use two `exists` conditions as a prerequisite;
@@ -1 +1 @@
1
- {"version":3,"file":"default-rules.js","sourceRoot":"","sources":["../../src/policy/default-rules.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,iCAAiC;AAajC,MAAM,CAAC,MAAM,aAAa,GAAe;IACxC;QACC,EAAE,EAAE,mBAAmB;QACvB,IAAI,EAAE,yBAAyB;QAC/B,WAAW,EAAE,gEAAgE;QAC7E,QAAQ,EAAE,CAAC;QACX,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,MAAM;QACd,WAAW,EAAE,MAAM;QACnB,QAAQ,EAAE,UAAU;QACpB,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;KAC5D;IACD;QACC,EAAE,EAAE,gBAAgB;QACpB,IAAI,EAAE,8BAA8B;QACpC,WAAW,EAAE,wDAAwD;QACrE,QAAQ,EAAE,EAAE;QACZ,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,MAAM;QACd,WAAW,EAAE,MAAM;QACnB,QAAQ,EAAE,QAAQ;QAClB,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,gBAAgB,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;KACtE;IACD;QACC,EAAE,EAAE,wBAAwB;QAC5B,IAAI,EAAE,2BAA2B;QACjC,WAAW,EAAE,0DAA0D;QACvE,QAAQ,EAAE,CAAC;QACX,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,MAAM;QACd,WAAW,EAAE,MAAM;QACnB,QAAQ,EAAE,MAAM;QAChB,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,kBAAkB,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;KACtE;CACD,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAgC;IAChE,MAAM,SAAS,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAC3C,MAAM,SAAS,GAAG,OAAO,CAAC,cAAc,CAAC;IACzC,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,OAAO,SAAS,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IACjF,OAAO,SAAS,GAAG,SAAS,CAAC;AAC9B,CAAC"}
1
+ {"version":3,"file":"default-rules.js","sourceRoot":"","sources":["../../src/policy/default-rules.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,iCAAiC;AAejC,MAAM,CAAC,MAAM,aAAa,GAAe;IACxC;QACC,EAAE,EAAE,wBAAwB;QAC5B,IAAI,EAAE,gDAAgD;QACtD,WAAW,EAAE,4EAA4E;QACzF,QAAQ,EAAE,CAAC;QACX,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,MAAM;QACd,WAAW,EAAE,MAAM;QACnB,QAAQ,EAAE,UAAU;QACpB,kFAAkF;QAClF,wEAAwE;QACxE,qEAAqE;QACrE,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,wBAAwB,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;KAC3E;IACD;QACC,EAAE,EAAE,wBAAwB;QAC5B,IAAI,EAAE,2BAA2B;QACjC,WAAW,EAAE,0DAA0D;QACvE,QAAQ,EAAE,CAAC;QACX,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,MAAM;QACd,WAAW,EAAE,MAAM;QACnB,QAAQ,EAAE,MAAM;QAChB,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,kBAAkB,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;KACtE;IACD;QACC,EAAE,EAAE,gBAAgB;QACpB,IAAI,EAAE,8BAA8B;QACpC,WAAW,EAAE,wDAAwD;QACrE,QAAQ,EAAE,EAAE;QACZ,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,MAAM;QACd,WAAW,EAAE,MAAM;QACnB,QAAQ,EAAE,QAAQ;QAClB,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,gBAAgB,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;KACtE;CACD,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,aAAa,CAAC,QAAoB,EAAE,SAAqB;IACxE,OAAO,CAAC,GAAG,QAAQ,EAAE,GAAG,SAAS,CAAC,CAAC;AACpC,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAgC;IAChE,MAAM,SAAS,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAC3C,MAAM,SAAS,GAAG,OAAO,CAAC,cAAc,CAAC;IACzC,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,OAAO,SAAS,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IACjF,OAAO,SAAS,GAAG,SAAS,CAAC;AAC9B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"gate.d.ts","sourceRoot":"","sources":["../../src/policy/gate.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAGX,YAAY,EACZ,iBAAiB,EACjB,UAAU,EACV,cAAc,EACd,MAAM,oBAAoB,CAAC;AAM5B,MAAM,WAAW,SAAS;IACzB,gBAAgB;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,iCAAiC;IACjC,MAAM,EAAE,YAAY,CAAC;IACrB,wBAAwB;IACxB,WAAW,EAAE,iBAAiB,CAAC;IAC/B,sBAAsB;IACtB,QAAQ,EAAE,cAAc,GAAG,SAAS,CAAC;CACrC;AAED,MAAM,WAAW,YAAY;IAC5B,oEAAoE;IACpE,QAAQ,EAAE,OAAO,GAAG,MAAM,CAAC;IAC3B,oDAAoD;IACpD,WAAW,EAAE,OAAO,CAAC;IACrB,wBAAwB;IACxB,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,uCAAuC;IACvC,cAAc,EAAE,SAAS,EAAE,CAAC;IAC5B,sCAAsC;IACtC,cAAc,EAAE,SAAS,EAAE,CAAC;IAC5B,6BAA6B;IAC7B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,2BAA2B;IAC3B,WAAW,EAAE,MAAM,CAAC;CACpB;AAuHD;;;GAGG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAE1E;AAMD,MAAM,WAAW,UAAU;IAC1B,kCAAkC;IAClC,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,mCAAmC;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iCAAiC;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CACjC,WAAW,EAAE,UAAU,EAAE,GAAG,SAAS,EACrC,SAAS,EAAE,MAAM,GACf,OAAO,CAaT;AAMD;;;;GAIG;AACH,MAAM,WAAW,aAAc,SAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAC7D,qEAAqE;IACrE,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,qDAAqD;IACrD,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC;IAC3B,oDAAoD;IACpD,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;GAIG;AACH,MAAM,WAAW,QAAS,SAAQ,UAAU;IAC3C,6BAA6B;IAC7B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,iCAAiC;IACjC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,4DAA4D;IAC5D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gDAAgD;IAChD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,uCAAuC;IACvC,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,4CAA4C;IAC5C,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC;CAC3B;AAkCD;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,aAAa,GAAG,YAAY,CAkDtF;AAMD;;;;;;;;;;;GAWG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,EAAE,CAiBrD"}
1
+ {"version":3,"file":"gate.d.ts","sourceRoot":"","sources":["../../src/policy/gate.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAGX,YAAY,EACZ,iBAAiB,EACjB,UAAU,EACV,cAAc,EACd,MAAM,oBAAoB,CAAC;AAM5B,MAAM,WAAW,SAAS;IACzB,gBAAgB;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,iCAAiC;IACjC,MAAM,EAAE,YAAY,CAAC;IACrB,wBAAwB;IACxB,WAAW,EAAE,iBAAiB,CAAC;IAC/B,sBAAsB;IACtB,QAAQ,EAAE,cAAc,GAAG,SAAS,CAAC;CACrC;AAED,MAAM,WAAW,YAAY;IAC5B,oEAAoE;IACpE,QAAQ,EAAE,OAAO,GAAG,MAAM,CAAC;IAC3B,oDAAoD;IACpD,WAAW,EAAE,OAAO,CAAC;IACrB,wBAAwB;IACxB,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,uCAAuC;IACvC,cAAc,EAAE,SAAS,EAAE,CAAC;IAC5B,sCAAsC;IACtC,cAAc,EAAE,SAAS,EAAE,CAAC;IAC5B,6BAA6B;IAC7B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,2BAA2B;IAC3B,WAAW,EAAE,MAAM,CAAC;CACpB;AAgOD;;;GAGG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAE1E;AAMD,MAAM,WAAW,UAAU;IAC1B,kCAAkC;IAClC,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,mCAAmC;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iCAAiC;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CACjC,WAAW,EAAE,UAAU,EAAE,GAAG,SAAS,EACrC,SAAS,EAAE,MAAM,GACf,OAAO,CAaT;AAMD;;;;GAIG;AACH,MAAM,WAAW,aAAc,SAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAC7D,qEAAqE;IACrE,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,qDAAqD;IACrD,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC;IAC3B,oDAAoD;IACpD,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;GAIG;AACH,MAAM,WAAW,QAAS,SAAQ,UAAU;IAC3C,6BAA6B;IAC7B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,iCAAiC;IACjC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,4DAA4D;IAC5D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gDAAgD;IAChD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,uCAAuC;IACvC,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,4CAA4C;IAC5C,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC;CAC3B;AA6CD;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,aAAa,GAAG,YAAY,CAkDtF;AAMD;;;;;;;;;;;GAWG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,EAAE,CAiBrD"}
@@ -38,18 +38,90 @@ function resolveFieldPath(path, context) {
38
38
  // ---------------------------------------------------------------------------
39
39
  /** Maximum allowed length for regex patterns in policy rules. */
40
40
  const MAX_REGEX_LENGTH = 200;
41
+ /** Maximum input length the regex engine is allowed to scan (defense-in-depth). */
42
+ const MAX_REGEX_INPUT = 4096;
41
43
  /**
42
- * Detects nested quantifiers that can cause catastrophic backtracking (ReDoS).
43
- * Matches patterns like `a+*`, `a*+`, `a{2,}*`, `a+{2,}`, etc.
44
+ * Adjacent nested quantifiers, e.g. `a+*`, `a*+`, `a{2,}*`, `a+{2,}`.
44
45
  */
45
- const NESTED_QUANTIFIER_RE = /[+*?]\{?\d*,?\d*\}?[+*?]/;
46
+ const ADJACENT_QUANTIFIER_RE = /[+*?]\{?\d*,?\d*\}?[+*?]/;
47
+ /**
48
+ * Structural catastrophic-backtracking guard.
49
+ *
50
+ * Rejects a group `( ... )` that is immediately followed by an unbounded
51
+ * quantifier (`*`, `+`, or `{n,}`) when the group body itself contains a
52
+ * quantifier (`*` `+` `?` `{`) or an alternation (`|`). This is the canonical
53
+ * shape of exponential backtracking: `(a+)+`, `(.*)*`, `(\d+)+`, `(a|a)*`,
54
+ * `(a|ab)*`, etc. Escaped parens (`\(`) and character classes (`[...]`) are
55
+ * handled by tracking escape/class state so real group boundaries are matched.
56
+ *
57
+ * Conservative by design: it may reject some benign patterns, but policy
58
+ * regexes are operator-authored config, so over-rejection is acceptable and
59
+ * fails safe (safeRegExp returns null → condition is non-matching).
60
+ */
61
+ function hasNestedQuantifiedGroup(pattern) {
62
+ // Per open group, whether its body so far contains a quantifier/alternation.
63
+ const bodyHasAmbiguity = [];
64
+ let escaped = false;
65
+ let inClass = false; // inside a [...] character class
66
+ for (let i = 0; i < pattern.length; i++) {
67
+ const c = pattern[i];
68
+ if (escaped) {
69
+ escaped = false;
70
+ continue;
71
+ }
72
+ if (c === "\\") {
73
+ escaped = true;
74
+ continue;
75
+ }
76
+ if (inClass) {
77
+ if (c === "]")
78
+ inClass = false;
79
+ continue;
80
+ }
81
+ if (c === "[") {
82
+ inClass = true;
83
+ continue;
84
+ }
85
+ if (c === "(") {
86
+ bodyHasAmbiguity.push(false);
87
+ continue;
88
+ }
89
+ if (c === "|" || c === "*" || c === "+" || c === "?" || c === "{") {
90
+ // Mark the innermost open group's body as ambiguous.
91
+ if (bodyHasAmbiguity.length > 0) {
92
+ bodyHasAmbiguity[bodyHasAmbiguity.length - 1] = true;
93
+ }
94
+ }
95
+ if (c === ")") {
96
+ const ambiguous = bodyHasAmbiguity.pop() ?? false;
97
+ // Look at the quantifier applied to this group.
98
+ const next = pattern[i + 1];
99
+ const unboundedQuantifier = next === "*" ||
100
+ next === "+" ||
101
+ (next === "{" &&
102
+ /^\{\d*,\d*\}/.test(pattern.slice(i + 1)) &&
103
+ !/^\{\d+\}/.test(pattern.slice(i + 1))); // {n,} or {n,m}/{,m}, not {n}
104
+ if (ambiguous && unboundedQuantifier)
105
+ return true;
106
+ // Propagate ambiguity outward: a quantified group is itself ambiguous
107
+ // content for any enclosing group.
108
+ if (bodyHasAmbiguity.length > 0 &&
109
+ (next === "*" || next === "+" || next === "?" || next === "{")) {
110
+ bodyHasAmbiguity[bodyHasAmbiguity.length - 1] = true;
111
+ }
112
+ }
113
+ }
114
+ return false;
115
+ }
46
116
  /**
47
117
  * Validate that a regex pattern is safe to compile and execute.
48
118
  *
49
- * **Security**: Regex policies must contain trusted input. User-supplied patterns
50
- * are constrained to prevent ReDoS (Regular Expression Denial of Service):
119
+ * **Security** (AUD-463): prevents ReDoS (Regular Expression Denial of Service).
51
120
  * - Patterns longer than 200 characters are rejected.
52
- * - Patterns containing nested quantifiers (e.g. `a+*`, `x{2,}+`) are rejected.
121
+ * - Adjacent nested quantifiers (`a+*`, `x{2,}+`) are rejected.
122
+ * - A quantified group whose body contains a quantifier/alternation
123
+ * (`(a+)+`, `(.*)*`, `(\d+)+`, `(a|a)*`) is rejected structurally at compile
124
+ * time — this eliminates the exponential-backtracking class deterministically.
53
125
  * - Invalid regex syntax is caught and treated as non-matching.
54
126
  *
55
127
  * @returns The compiled RegExp, or null if the pattern is unsafe or invalid.
@@ -57,7 +129,9 @@ const NESTED_QUANTIFIER_RE = /[+*?]\{?\d*,?\d*\}?[+*?]/;
57
129
  function safeRegExp(pattern) {
58
130
  if (pattern.length > MAX_REGEX_LENGTH)
59
131
  return null;
60
- if (NESTED_QUANTIFIER_RE.test(pattern))
132
+ if (ADJACENT_QUANTIFIER_RE.test(pattern))
133
+ return null;
134
+ if (hasNestedQuantifiedGroup(pattern))
61
135
  return null;
62
136
  try {
63
137
  return new RegExp(pattern);
@@ -66,12 +140,14 @@ function safeRegExp(pattern) {
66
140
  return null;
67
141
  }
68
142
  }
69
- // ---------------------------------------------------------------------------
70
- // Field condition evaluation (12 operators)
71
- // ---------------------------------------------------------------------------
72
143
  /**
73
144
  * Evaluate a single field condition against the evaluation context.
74
145
  * Supports all 12 operators from the FieldOperator union.
146
+ *
147
+ * Numeric operators (`gt`/`gte`/`lt`/`lte`) return `"indeterminate"` when the
148
+ * field is absent or non-numeric — the distinction between "present but does not
149
+ * satisfy" (`false`) and "cannot be evaluated" (`"indeterminate"`) is what lets
150
+ * hard rules fail closed instead of silently allowing an unbounded operation.
75
151
  */
76
152
  function evaluateFieldCondition(fc, context) {
77
153
  const resolved = resolveFieldPath(fc.field, context);
@@ -85,13 +161,21 @@ function evaluateFieldCondition(fc, context) {
85
161
  case "neq":
86
162
  return resolved !== fc.value;
87
163
  case "gt":
88
- return typeof resolved === "number" && typeof fc.value === "number" && resolved > fc.value;
164
+ if (typeof resolved !== "number" || typeof fc.value !== "number")
165
+ return "indeterminate";
166
+ return resolved > fc.value;
89
167
  case "gte":
90
- return typeof resolved === "number" && typeof fc.value === "number" && resolved >= fc.value;
168
+ if (typeof resolved !== "number" || typeof fc.value !== "number")
169
+ return "indeterminate";
170
+ return resolved >= fc.value;
91
171
  case "lt":
92
- return typeof resolved === "number" && typeof fc.value === "number" && resolved < fc.value;
172
+ if (typeof resolved !== "number" || typeof fc.value !== "number")
173
+ return "indeterminate";
174
+ return resolved < fc.value;
93
175
  case "lte":
94
- return typeof resolved === "number" && typeof fc.value === "number" && resolved <= fc.value;
176
+ if (typeof resolved !== "number" || typeof fc.value !== "number")
177
+ return "indeterminate";
178
+ return resolved <= fc.value;
95
179
  case "in":
96
180
  return Array.isArray(fc.value) && fc.value.includes(resolved);
97
181
  case "not_in":
@@ -104,7 +188,10 @@ function evaluateFieldCondition(fc, context) {
104
188
  const re = safeRegExp(fc.value);
105
189
  if (re === null)
106
190
  return false;
107
- return re.test(resolved);
191
+ // Layer B (defense-in-depth): bound the scanned input so even a
192
+ // structural miss cannot be fed an unbounded string.
193
+ const input = resolved.length > MAX_REGEX_INPUT ? resolved.slice(0, MAX_REGEX_INPUT) : resolved;
194
+ return re.test(input);
108
195
  }
109
196
  default:
110
197
  return false;
@@ -147,9 +234,20 @@ function ruleMatches(rule, context) {
147
234
  const enabled = rule.enabled ?? true;
148
235
  if (!enabled)
149
236
  return false;
237
+ // Hard rules fail CLOSED: a condition that cannot be evaluated (a missing or
238
+ // mistyped guarded field) is treated as satisfied so the guard still fires,
239
+ // rather than silently allowing an unbounded/ungoverned operation. Soft rules
240
+ // stay lenient (indeterminate → unmet) to preserve warning-only behavior.
241
+ const failClosed = rule.enforcement === "hard";
150
242
  // All field conditions must match
151
243
  for (const fc of rule.conditions) {
152
- if (!evaluateFieldCondition(fc, context))
244
+ const res = evaluateFieldCondition(fc, context);
245
+ if (res === "indeterminate") {
246
+ if (failClosed)
247
+ continue;
248
+ return false;
249
+ }
250
+ if (!res)
153
251
  return false;
154
252
  }
155
253
  // Scope matching (if rule has scope patterns)
@@ -1 +1 @@
1
- {"version":3,"file":"gate.js","sourceRoot":"","sources":["../../src/policy/gate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gate.js","sourceRoot":"","sources":["../../src/policy/gate.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"injection.d.ts","sourceRoot":"","sources":["../../src/policy/injection.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAyL7D;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,OAAO,GAAG,kBAAkB,CAejE"}
1
+ {"version":3,"file":"injection.d.ts","sourceRoot":"","sources":["../../src/policy/injection.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAuM7D;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,OAAO,GAAG,kBAAkB,CAejE"}
@@ -14,29 +14,38 @@ const VERBS = [
14
14
  "stop following",
15
15
  "forget about",
16
16
  ];
17
- const OBJECTS = [
17
+ function escapeRegExp(s) {
18
+ return s.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
19
+ }
20
+ /**
21
+ * Injection intent regex: a directive verb, then up to a few OPTIONAL filler
22
+ * words (all/any/the/your/those/these/prior/previous/preceding/earlier/above/
23
+ * following/original/system/of/to), then a target noun. The filler window lets
24
+ * "ignore ALL previous instructions" and "disregard all prior instructions"
25
+ * match where the old literal "verb object" substrings did not.
26
+ *
27
+ * Filler is bounded to `{0,4}` and every alternative is a literal, so the
28
+ * pattern is linear-time and cannot itself become a ReDoS vector. Homoglyph and
29
+ * heavy-obfuscation evasions remain explicitly out of scope.
30
+ */
31
+ const VERB_ALT = VERBS.map(escapeRegExp).join("|");
32
+ const OBJECT_ALT = [
18
33
  "instructions",
34
+ "instruction",
19
35
  "rules",
20
36
  "guidelines",
37
+ "directives",
21
38
  "system prompt",
22
- "previous instructions",
23
- "above instructions",
39
+ "system message",
40
+ "prompt",
24
41
  "context",
25
42
  "constraints",
26
- ];
27
- /** Pre-computed lowercased injection phrases (verb + " " + object). */
28
- const KEYWORD_COMBOS = [];
29
- for (const verb of VERBS) {
30
- for (const obj of OBJECTS) {
31
- KEYWORD_COMBOS.push(`${verb} ${obj}`);
32
- }
33
- }
43
+ "restrictions",
44
+ ].join("|");
45
+ const FILLER = "(?:all|any|the|your|those|these|prior|previous|preceding|earlier|above|following|original|system|of|to)";
46
+ const INJECTION_INTENT_RE = new RegExp(`(?:${VERB_ALT})\\s+(?:${FILLER}\\s+){0,4}(?:${OBJECT_ALT})`, "i");
34
47
  function checkKeywordCombo(lower) {
35
- for (const combo of KEYWORD_COMBOS) {
36
- if (lower.includes(combo))
37
- return true;
38
- }
39
- return false;
48
+ return INJECTION_INTENT_RE.test(lower);
40
49
  }
41
50
  // ---------------------------------------------------------------------------
42
51
  // Layer 2: Role boundary detection