@agentguard-run/spend 0.1.9 → 0.2.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 (68) hide show
  1. package/PATENTS.md +37 -0
  2. package/dist/adapters/postgres-store.d.ts +8 -2
  3. package/dist/adapters/postgres-store.d.ts.map +1 -1
  4. package/dist/adapters/postgres-store.js +58 -6
  5. package/dist/adapters/postgres-store.js.map +1 -1
  6. package/dist/adapters/redis-store.d.ts +10 -2
  7. package/dist/adapters/redis-store.d.ts.map +1 -1
  8. package/dist/adapters/redis-store.js +90 -24
  9. package/dist/adapters/redis-store.js.map +1 -1
  10. package/dist/cli/demo.d.ts +2 -2
  11. package/dist/cli/demo.js +4 -4
  12. package/dist/cli/demo.js.map +1 -1
  13. package/dist/cli/doctor.d.ts +1 -1
  14. package/dist/cli/doctor.js +2 -2
  15. package/dist/cli/doctor.js.map +1 -1
  16. package/dist/cli/explain.d.ts +1 -1
  17. package/dist/cli/explain.js +1 -1
  18. package/dist/cli/init.d.ts +1 -1
  19. package/dist/cli/init.js +1 -1
  20. package/dist/cli/main.d.ts.map +1 -1
  21. package/dist/cli/main.js +7 -1
  22. package/dist/cli/main.js.map +1 -1
  23. package/dist/cli/serve.d.ts +1 -1
  24. package/dist/cli/serve.d.ts.map +1 -1
  25. package/dist/cli/serve.js +19 -14
  26. package/dist/cli/serve.js.map +1 -1
  27. package/dist/cli/telemetry.d.ts +2 -0
  28. package/dist/cli/telemetry.d.ts.map +1 -0
  29. package/dist/cli/telemetry.js +37 -0
  30. package/dist/cli/telemetry.js.map +1 -0
  31. package/dist/cli/verify.d.ts +2 -2
  32. package/dist/cli/verify.d.ts.map +1 -1
  33. package/dist/cli/verify.js +53 -36
  34. package/dist/cli/verify.js.map +1 -1
  35. package/dist/cost-table.d.ts +2 -2
  36. package/dist/cost-table.d.ts.map +1 -1
  37. package/dist/cost-table.js +23 -3
  38. package/dist/cost-table.js.map +1 -1
  39. package/dist/decision-log.d.ts +5 -4
  40. package/dist/decision-log.d.ts.map +1 -1
  41. package/dist/decision-log.js +40 -15
  42. package/dist/decision-log.js.map +1 -1
  43. package/dist/i18n.js +3 -3
  44. package/dist/i18n.js.map +1 -1
  45. package/dist/index.d.ts +5 -4
  46. package/dist/index.d.ts.map +1 -1
  47. package/dist/index.js +13 -6
  48. package/dist/index.js.map +1 -1
  49. package/dist/policy.d.ts +8 -21
  50. package/dist/policy.d.ts.map +1 -1
  51. package/dist/policy.js +226 -109
  52. package/dist/policy.js.map +1 -1
  53. package/dist/spend-guard.d.ts +6 -2
  54. package/dist/spend-guard.d.ts.map +1 -1
  55. package/dist/spend-guard.js +95 -26
  56. package/dist/spend-guard.js.map +1 -1
  57. package/dist/store-memory.d.ts +8 -2
  58. package/dist/store-memory.d.ts.map +1 -1
  59. package/dist/store-memory.js +34 -2
  60. package/dist/store-memory.js.map +1 -1
  61. package/dist/telemetry.d.ts +11 -0
  62. package/dist/telemetry.d.ts.map +1 -0
  63. package/dist/telemetry.js +149 -0
  64. package/dist/telemetry.js.map +1 -0
  65. package/dist/types.d.ts +23 -4
  66. package/dist/types.d.ts.map +1 -1
  67. package/dist/types.js +2 -2
  68. package/package.json +22 -8
package/PATENTS.md ADDED
@@ -0,0 +1,37 @@
1
+ # Patent Notice
2
+
3
+ `@agentguard-run/spend` is protected by U.S. patent-pending technology, including the
4
+ following provisional patent applications filed with the United States Patent and
5
+ Trademark Office by Dunecrest Ventures Inc.:
6
+
7
+ | Application No. | Filing Date | Subject Matter (summary) |
8
+ |-----------------|-------------------|---------------------------------------------------------------------|
9
+ | 63/983,615 | February 15, 2026 | Agent identity, scope derivation, and policy substrate |
10
+ | 63/983,621 | February 15, 2026 | Tamper-evident signed decision logging for agent enforcement |
11
+ | 63/983,843 | February 16, 2026 | Capability gating and in-flight model routing |
12
+ | 63/984,626 | February 17, 2026 | DAG Trust Attestation Token framework (§7.3 capability substrate) |
13
+ | 64/071,781 | May 21, 2026 | Hard monetary spend caps with multi-action response and downgrade |
14
+ | 64/071,789 | May 21, 2026 | Hierarchical scope-key resolution and coordination-free windowing |
15
+
16
+ Additional patent applications are pending.
17
+
18
+ ## No Patent License Granted
19
+
20
+ This package and its accompanying LICENSE grant copyright permission for use within the
21
+ thresholds described in Section 1 of the LICENSE. **Nothing in this package grants, expressly
22
+ or by implication, any patent license** to any patent, patent application, or other
23
+ intellectual property right of Dunecrest Ventures Inc. All patent rights are expressly
24
+ reserved.
25
+
26
+ ## Patent marking (35 U.S.C. § 287)
27
+
28
+ This file serves as virtual patent marking pursuant to 35 U.S.C. § 287(a). It is a
29
+ constructive-notice declaration that the technology embodied in `@agentguard-run/spend` is
30
+ the subject of pending United States patent applications.
31
+
32
+ For commercial licensing, OEM agreements, or strategic partnership inquiries, contact
33
+ `invest@agentguard.run`.
34
+
35
+ AgentGuard(TM) is a trademark of Dunecrest Ventures Inc. (USPTO Serial No. 99462472, pending).
36
+ MerchantGuard(TM) is a trademark of Dunecrest Ventures Inc. (USPTO Serial No. 99051215,
37
+ pending).
@@ -35,13 +35,19 @@ export declare class PostgresSpendStore implements SpendStore {
35
35
  constructor(pool: PoolLike);
36
36
  getWindowSpend(scopeKey: string, window: SpendWindow): Promise<number>;
37
37
  incrementWindowSpend(scopeKey: string, window: SpendWindow, cents: number): Promise<number>;
38
+ reserveWindowSpend(scopeKey: string, window: SpendWindow, cents: number, limitCents: number): Promise<{
39
+ allowed: boolean;
40
+ before: number;
41
+ after: number;
42
+ }>;
43
+ settleWindowSpend(scopeKey: string, window: SpendWindow, deltaCents: number): Promise<number>;
38
44
  }
39
45
  export declare class PostgresDecisionLogStore implements DecisionLogStore {
40
46
  private pool;
41
47
  constructor(pool: PoolLike);
42
48
  append(entry: SignedDecisionLogEntry): Promise<void>;
43
- getLatest(): Promise<SignedDecisionLogEntry | null>;
44
- read(fromSequence: number, limit: number): Promise<SignedDecisionLogEntry[]>;
49
+ getLatest(signerFingerprint?: string): Promise<SignedDecisionLogEntry | null>;
50
+ read(fromSequence: number, limit: number, signerFingerprint?: string): Promise<SignedDecisionLogEntry[]>;
45
51
  }
46
52
  export {};
47
53
  //# sourceMappingURL=postgres-store.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"postgres-store.d.ts","sourceRoot":"","sources":["../../src/adapters/postgres-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAKH,OAAO,KAAK,EAAE,sBAAsB,EAAE,UAAU,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAElG,KAAK,QAAQ,GAAG;IACd,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,GAAG,EAAE,CAAC;QAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC,CAAC;CACxF,CAAC;AA6BF,0EAA0E;AAC1E,wBAAsB,YAAY,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAGhE;AAED,qBAAa,kBAAmB,YAAW,UAAU;IACvC,OAAO,CAAC,IAAI;gBAAJ,IAAI,EAAE,QAAQ;IAC5B,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC;IAQtE,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAYlG;AAED,qBAAa,wBAAyB,YAAW,gBAAgB;IACnD,OAAO,CAAC,IAAI;gBAAJ,IAAI,EAAE,QAAQ;IAC5B,MAAM,CAAC,KAAK,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC;IAepD,SAAS,IAAI,OAAO,CAAC,sBAAsB,GAAG,IAAI,CAAC;IAQnD,IAAI,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,EAAE,CAAC;CAQnF"}
1
+ {"version":3,"file":"postgres-store.d.ts","sourceRoot":"","sources":["../../src/adapters/postgres-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAKH,OAAO,KAAK,EAAE,sBAAsB,EAAE,UAAU,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAElG,KAAK,QAAQ,GAAG;IACd,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,GAAG,EAAE,CAAC;QAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC,CAAC;CACxF,CAAC;AA6BF,0EAA0E;AAC1E,wBAAsB,YAAY,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAGhE;AAED,qBAAa,kBAAmB,YAAW,UAAU;IACvC,OAAO,CAAC,IAAI;gBAAJ,IAAI,EAAE,QAAQ;IAC5B,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC;IAQtE,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAc3F,kBAAkB,CACtB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAsBzD,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAoBpG;AAED,qBAAa,wBAAyB,YAAW,gBAAgB;IACnD,OAAO,CAAC,IAAI;gBAAJ,IAAI,EAAE,QAAQ;IAC5B,MAAM,CAAC,KAAK,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC;IAepD,SAAS,CAAC,iBAAiB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,GAAG,IAAI,CAAC;IAc7E,IAAI,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,iBAAiB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,EAAE,CAAC;CAc/G"}
@@ -68,6 +68,7 @@ class PostgresSpendStore {
68
68
  return r.rows[0] ? Number(r.rows[0].cents) : 0;
69
69
  }
70
70
  async incrementWindowSpend(scopeKey, window, cents) {
71
+ validateCents('cents', cents);
71
72
  const startMs = (0, store_memory_1.windowStart)(window, _nowMs());
72
73
  const r = await this.pool.query(`INSERT INTO agentguard_spend (scope_key, window, window_start_ms, cents)
73
74
  VALUES ($1, $2, $3, $4)
@@ -76,6 +77,41 @@ class PostgresSpendStore {
76
77
  RETURNING cents`, [scopeKey, window, startMs, cents]);
77
78
  return Number(r.rows[0].cents);
78
79
  }
80
+ async reserveWindowSpend(scopeKey, window, cents, limitCents) {
81
+ validateCents('cents', cents);
82
+ validateCents('limitCents', limitCents);
83
+ const startMs = (0, store_memory_1.windowStart)(window, _nowMs());
84
+ const r = await this.pool.query(`INSERT INTO agentguard_spend (scope_key, window, window_start_ms, cents)
85
+ SELECT $1, $2, $3, $4
86
+ WHERE $4 <= $5
87
+ ON CONFLICT (scope_key, window, window_start_ms)
88
+ DO UPDATE SET cents = agentguard_spend.cents + EXCLUDED.cents, updated_at = NOW()
89
+ WHERE agentguard_spend.cents + EXCLUDED.cents <= $5
90
+ RETURNING cents`, [scopeKey, window, startMs, cents, limitCents]);
91
+ if (r.rows[0]) {
92
+ const after = Number(r.rows[0].cents);
93
+ return { allowed: true, before: after - cents, after };
94
+ }
95
+ const current = await this.getWindowSpend(scopeKey, window);
96
+ return { allowed: false, before: current, after: current + cents };
97
+ }
98
+ async settleWindowSpend(scopeKey, window, deltaCents) {
99
+ validateDelta(deltaCents);
100
+ const startMs = (0, store_memory_1.windowStart)(window, _nowMs());
101
+ const r = await this.pool.query(`WITH ensured AS (
102
+ INSERT INTO agentguard_spend (scope_key, window, window_start_ms, cents)
103
+ VALUES ($1, $2, $3, 0)
104
+ ON CONFLICT (scope_key, window, window_start_ms) DO NOTHING
105
+ ),
106
+ updated AS (
107
+ UPDATE agentguard_spend
108
+ SET cents = GREATEST(cents + $4, 0), updated_at = NOW()
109
+ WHERE scope_key=$1 AND window=$2 AND window_start_ms=$3
110
+ RETURNING cents
111
+ )
112
+ SELECT cents FROM updated`, [scopeKey, window, startMs, deltaCents]);
113
+ return Number(r.rows[0].cents);
114
+ }
79
115
  }
80
116
  exports.PostgresSpendStore = PostgresSpendStore;
81
117
  class PostgresDecisionLogStore {
@@ -95,16 +131,22 @@ class PostgresDecisionLogStore {
95
131
  JSON.stringify(entry.decision),
96
132
  ]);
97
133
  }
98
- async getLatest() {
99
- const r = await this.pool.query(`SELECT sequence, signer_fingerprint, entry_hash, previous_hash, signature, decision_json
100
- FROM agentguard_decision_log ORDER BY id DESC LIMIT 1`);
134
+ async getLatest(signerFingerprint) {
135
+ const r = signerFingerprint
136
+ ? await this.pool.query(`SELECT sequence, signer_fingerprint, entry_hash, previous_hash, signature, decision_json
137
+ FROM agentguard_decision_log WHERE signer_fingerprint=$1 ORDER BY sequence DESC LIMIT 1`, [signerFingerprint])
138
+ : await this.pool.query(`SELECT sequence, signer_fingerprint, entry_hash, previous_hash, signature, decision_json
139
+ FROM agentguard_decision_log ORDER BY id DESC LIMIT 1`);
101
140
  if (!r.rows[0])
102
141
  return null;
103
142
  return rowToEntry(r.rows[0]);
104
143
  }
105
- async read(fromSequence, limit) {
106
- const r = await this.pool.query(`SELECT sequence, signer_fingerprint, entry_hash, previous_hash, signature, decision_json
107
- FROM agentguard_decision_log WHERE sequence >= $1 ORDER BY sequence ASC LIMIT $2`, [fromSequence, limit]);
144
+ async read(fromSequence, limit, signerFingerprint) {
145
+ const r = signerFingerprint
146
+ ? await this.pool.query(`SELECT sequence, signer_fingerprint, entry_hash, previous_hash, signature, decision_json
147
+ FROM agentguard_decision_log WHERE signer_fingerprint=$3 AND sequence >= $1 ORDER BY sequence ASC LIMIT $2`, [fromSequence, limit, signerFingerprint])
148
+ : await this.pool.query(`SELECT sequence, signer_fingerprint, entry_hash, previous_hash, signature, decision_json
149
+ FROM agentguard_decision_log WHERE sequence >= $1 ORDER BY sequence ASC LIMIT $2`, [fromSequence, limit]);
108
150
  return r.rows.map(rowToEntry);
109
151
  }
110
152
  }
@@ -119,4 +161,14 @@ function rowToEntry(row) {
119
161
  decision: row.decision_json,
120
162
  };
121
163
  }
164
+ function validateCents(name, cents) {
165
+ if (!Number.isSafeInteger(cents) || cents < 0) {
166
+ throw new Error(`${name} must be a non-negative safe integer`);
167
+ }
168
+ }
169
+ function validateDelta(deltaCents) {
170
+ if (!Number.isSafeInteger(deltaCents)) {
171
+ throw new Error('deltaCents must be a safe integer');
172
+ }
173
+ }
122
174
  //# sourceMappingURL=postgres-store.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"postgres-store.js","sourceRoot":"","sources":["../../src/adapters/postgres-store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"postgres-store.js","sourceRoot":"","sources":["../../src/adapters/postgres-store.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;;;AAuCH,oCAGC;AAxCD,kDAA8C;AAE9C,SAAS,MAAM,KAAa,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AAOhD,MAAM,YAAY,GAAG;;;;;;;;;;CAUpB,CAAC;AAEF,MAAM,UAAU,GAAG;;;;;;;;;;;;;CAalB,CAAC;AAEF,0EAA0E;AACnE,KAAK,UAAU,YAAY,CAAC,IAAc;IAC/C,MAAM,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IAC/B,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;AAC/B,CAAC;AAED,MAAa,kBAAkB;IACT;IAApB,YAAoB,IAAc;QAAd,SAAI,GAAJ,IAAI,CAAU;IAAG,CAAC;IACtC,KAAK,CAAC,cAAc,CAAC,QAAgB,EAAE,MAAmB;QACxD,MAAM,OAAO,GAAG,IAAA,0BAAW,EAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QAC9C,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAC7B,4FAA4F,EAC5F,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,CAC5B,CAAC;QACF,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACjD,CAAC;IACD,KAAK,CAAC,oBAAoB,CAAC,QAAgB,EAAE,MAAmB,EAAE,KAAa;QAC7E,aAAa,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAC9B,MAAM,OAAO,GAAG,IAAA,0BAAW,EAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QAC9C,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAC7B;;;;uBAIiB,EACjB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,CACnC,CAAC;QACF,OAAO,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,kBAAkB,CACtB,QAAgB,EAChB,MAAmB,EACnB,KAAa,EACb,UAAkB;QAElB,aAAa,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAC9B,aAAa,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;QACxC,MAAM,OAAO,GAAG,IAAA,0BAAW,EAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QAC9C,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAC7B;;;;;;uBAMiB,EACjB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,CAAC,CAC/C,CAAC;QACF,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YACd,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YACtC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,GAAG,KAAK,EAAE,KAAK,EAAE,CAAC;QACzD,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC5D,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,GAAG,KAAK,EAAE,CAAC;IACrE,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,QAAgB,EAAE,MAAmB,EAAE,UAAkB;QAC/E,aAAa,CAAC,UAAU,CAAC,CAAC;QAC1B,MAAM,OAAO,GAAG,IAAA,0BAAW,EAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QAC9C,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAC7B;;;;;;;;;;;iCAW2B,EAC3B,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,CAAC,CACxC,CAAC;QACF,OAAO,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;CACF;AAvED,gDAuEC;AAED,MAAa,wBAAwB;IACf;IAApB,YAAoB,IAAc;QAAd,SAAI,GAAJ,IAAI,CAAU;IAAG,CAAC;IACtC,KAAK,CAAC,MAAM,CAAC,KAA6B;QACxC,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CACnB;;8CAEwC,EACxC;YACE,KAAK,CAAC,QAAQ;YACd,KAAK,CAAC,iBAAiB;YACvB,KAAK,CAAC,SAAS;YACf,KAAK,CAAC,YAAY;YAClB,KAAK,CAAC,SAAS;YACf,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC;SAC/B,CACF,CAAC;IACJ,CAAC;IACD,KAAK,CAAC,SAAS,CAAC,iBAA0B;QACxC,MAAM,CAAC,GAAG,iBAAiB;YACzB,CAAC,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CACnB;mGACyF,EACzF,CAAC,iBAAiB,CAAC,CACpB;YACH,CAAC,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CACnB;iEACuD,CACxD,CAAC;QACN,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;YAAE,OAAO,IAAI,CAAC;QAC5B,OAAO,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/B,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,YAAoB,EAAE,KAAa,EAAE,iBAA0B;QACxE,MAAM,CAAC,GAAG,iBAAiB;YACzB,CAAC,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CACnB;sHAC4G,EAC5G,CAAC,YAAY,EAAE,KAAK,EAAE,iBAAiB,CAAC,CACzC;YACH,CAAC,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CACnB;4FACkF,EAClF,CAAC,YAAY,EAAE,KAAK,CAAC,CACtB,CAAC;QACN,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAChC,CAAC;CACF;AA7CD,4DA6CC;AAED,SAAS,UAAU,CAAC,GAAQ;IAC1B,OAAO;QACL,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAC9B,iBAAiB,EAAE,GAAG,CAAC,kBAAkB;QACzC,SAAS,EAAE,GAAG,CAAC,UAAU;QACzB,YAAY,EAAE,GAAG,CAAC,aAAa;QAC/B,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,QAAQ,EAAE,GAAG,CAAC,aAAa;KAC5B,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,IAAY,EAAE,KAAa;IAChD,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QAC9C,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,sCAAsC,CAAC,CAAC;IACjE,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CAAC,UAAkB;IACvC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC,EAAE,CAAC;QACtC,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;IACvD,CAAC;AACH,CAAC"}
@@ -23,6 +23,8 @@ type RedisLike = {
23
23
  get(key: string): Promise<string | null>;
24
24
  incrby(key: string, increment: number): Promise<number>;
25
25
  expire(key: string, seconds: number): Promise<number>;
26
+ set?(key: string, value: string | number): Promise<unknown>;
27
+ eval?(script: string, numKeys: number, ...args: any[]): Promise<any>;
26
28
  xadd(key: string, ...args: any[]): Promise<string | null>;
27
29
  xrevrange(key: string, end: string, start: string, ...args: any[]): Promise<any>;
28
30
  xrange(key: string, start: string, end: string, ...args: any[]): Promise<any>;
@@ -37,6 +39,12 @@ export declare class RedisSpendStore implements SpendStore {
37
39
  private key;
38
40
  getWindowSpend(scopeKey: string, window: SpendWindow): Promise<number>;
39
41
  incrementWindowSpend(scopeKey: string, window: SpendWindow, cents: number): Promise<number>;
42
+ reserveWindowSpend(scopeKey: string, window: SpendWindow, cents: number, limitCents: number): Promise<{
43
+ allowed: boolean;
44
+ before: number;
45
+ after: number;
46
+ }>;
47
+ settleWindowSpend(scopeKey: string, window: SpendWindow, deltaCents: number): Promise<number>;
40
48
  }
41
49
  export interface RedisDecisionLogStoreOptions {
42
50
  streamKey?: string;
@@ -46,8 +54,8 @@ export declare class RedisDecisionLogStore implements DecisionLogStore {
46
54
  private stream;
47
55
  constructor(redis: RedisLike, opts?: RedisDecisionLogStoreOptions);
48
56
  append(entry: SignedDecisionLogEntry): Promise<void>;
49
- getLatest(): Promise<SignedDecisionLogEntry | null>;
50
- read(fromSequence: number, limit: number): Promise<SignedDecisionLogEntry[]>;
57
+ getLatest(signerFingerprint?: string): Promise<SignedDecisionLogEntry | null>;
58
+ read(fromSequence: number, limit: number, signerFingerprint?: string): Promise<SignedDecisionLogEntry[]>;
51
59
  }
52
60
  export {};
53
61
  //# sourceMappingURL=redis-store.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"redis-store.d.ts","sourceRoot":"","sources":["../../src/adapters/redis-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAKH,OAAO,KAAK,EAAE,sBAAsB,EAAE,UAAU,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAIlG,KAAK,SAAS,GAAG;IACf,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACzC,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACxD,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACtD,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC1D,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IACjF,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;CAC/E,CAAC;AAUF,MAAM,WAAW,sBAAsB;IACrC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,eAAgB,YAAW,UAAU;IAEpC,OAAO,CAAC,KAAK;IADzB,OAAO,CAAC,MAAM,CAAS;gBACH,KAAK,EAAE,SAAS,EAAE,IAAI,GAAE,sBAA2B;IAGvE,OAAO,CAAC,GAAG;IAIL,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC;IAItE,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAMlG;AAED,MAAM,WAAW,4BAA4B;IAC3C,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,qBAAsB,YAAW,gBAAgB;IAEhD,OAAO,CAAC,KAAK;IADzB,OAAO,CAAC,MAAM,CAAS;gBACH,KAAK,EAAE,SAAS,EAAE,IAAI,GAAE,4BAAiC;IAGvE,MAAM,CAAC,KAAK,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC;IAIpD,SAAS,IAAI,OAAO,CAAC,sBAAsB,GAAG,IAAI,CAAC;IAcnD,IAAI,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,EAAE,CAAC;CAsBnF"}
1
+ {"version":3,"file":"redis-store.d.ts","sourceRoot":"","sources":["../../src/adapters/redis-store.ts"],"names":[],"mappings":"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"}
@@ -46,11 +46,51 @@ class RedisSpendStore {
46
46
  return v ? parseInt(v, 10) : 0;
47
47
  }
48
48
  async incrementWindowSpend(scopeKey, window, cents) {
49
+ validateCents('cents', cents);
49
50
  const k = this.key(scopeKey, window);
50
51
  const newVal = await this.redis.incrby(k, cents);
51
52
  await this.redis.expire(k, WINDOW_EXPIRY_S[window] ?? 86400);
52
53
  return newVal;
53
54
  }
55
+ async reserveWindowSpend(scopeKey, window, cents, limitCents) {
56
+ validateCents('cents', cents);
57
+ validateCents('limitCents', limitCents);
58
+ const k = this.key(scopeKey, window);
59
+ const expiry = WINDOW_EXPIRY_S[window] ?? 86400;
60
+ if (this.redis.eval) {
61
+ const result = await this.redis.eval(`local current = tonumber(redis.call('GET', KEYS[1]) or '0')
62
+ local inc = tonumber(ARGV[1])
63
+ local limit = tonumber(ARGV[2])
64
+ local expiry = tonumber(ARGV[3])
65
+ local after = current + inc
66
+ if after > limit then
67
+ redis.call('EXPIRE', KEYS[1], expiry)
68
+ return {0, current, after}
69
+ end
70
+ redis.call('SET', KEYS[1], after)
71
+ redis.call('EXPIRE', KEYS[1], expiry)
72
+ return {1, current, after}`, 1, k, cents, limitCents, expiry);
73
+ const [allowed, before, after] = result.map((n) => Number(n));
74
+ return { allowed: allowed === 1, before, after };
75
+ }
76
+ const before = await this.getWindowSpend(scopeKey, window);
77
+ const after = before + cents;
78
+ if (after > limitCents)
79
+ return { allowed: false, before, after };
80
+ const newVal = await this.incrementWindowSpend(scopeKey, window, cents);
81
+ return { allowed: true, before, after: newVal };
82
+ }
83
+ async settleWindowSpend(scopeKey, window, deltaCents) {
84
+ validateDelta(deltaCents);
85
+ const k = this.key(scopeKey, window);
86
+ const newVal = await this.redis.incrby(k, deltaCents);
87
+ const clamped = Math.max(0, newVal);
88
+ if (clamped !== newVal && this.redis.set) {
89
+ await this.redis.set(k, clamped);
90
+ }
91
+ await this.redis.expire(k, WINDOW_EXPIRY_S[window] ?? 86400);
92
+ return clamped;
93
+ }
54
94
  }
55
95
  exports.RedisSpendStore = RedisSpendStore;
56
96
  class RedisDecisionLogStore {
@@ -64,41 +104,43 @@ class RedisDecisionLogStore {
64
104
  const payload = JSON.stringify(entry);
65
105
  await this.redis.xadd(this.stream, '*', 'd', payload);
66
106
  }
67
- async getLatest() {
107
+ async getLatest(signerFingerprint) {
68
108
  try {
69
- const entries = await this.redis.xrevrange(this.stream, '+', '-', 'COUNT', 1);
70
- if (!entries || entries.length === 0)
71
- return null;
72
- // ioredis returns [[id, [field1, val1, field2, val2, ...]], ...]
73
- const [, fields] = entries[0];
74
- const dIdx = fields.indexOf('d');
75
- if (dIdx < 0)
76
- return null;
77
- const raw = fields[dIdx + 1];
78
- return JSON.parse(raw);
109
+ let end = '+';
110
+ for (;;) {
111
+ const entries = await this.redis.xrevrange(this.stream, end, '-', 'COUNT', 100);
112
+ if (!entries?.length)
113
+ return null;
114
+ for (const [id, fields] of entries) {
115
+ const parsed = parseStreamEntry(fields);
116
+ if (parsed && (!signerFingerprint || parsed.signerFingerprint === signerFingerprint))
117
+ return parsed;
118
+ end = `(${id}`;
119
+ }
120
+ }
79
121
  }
80
122
  catch {
81
123
  return null;
82
124
  }
83
125
  }
84
- async read(fromSequence, limit) {
126
+ async read(fromSequence, limit, signerFingerprint) {
85
127
  try {
86
- const entries = await this.redis.xrange(this.stream, '-', '+', 'COUNT', limit * 2);
87
128
  const out = [];
88
- for (const [, fields] of entries) {
89
- const dIdx = fields.indexOf('d');
90
- if (dIdx < 0)
91
- continue;
92
- try {
93
- const parsed = JSON.parse(fields[dIdx + 1]);
94
- if (parsed.sequence >= fromSequence) {
129
+ let start = '-';
130
+ for (;;) {
131
+ const entries = await this.redis.xrange(this.stream, start, '+', 'COUNT', 500);
132
+ if (!entries?.length)
133
+ break;
134
+ for (const [id, fields] of entries) {
135
+ const parsed = parseStreamEntry(fields);
136
+ if (parsed &&
137
+ parsed.sequence >= fromSequence &&
138
+ (!signerFingerprint || parsed.signerFingerprint === signerFingerprint)) {
95
139
  out.push(parsed);
96
140
  if (out.length >= limit)
97
- break;
141
+ return out;
98
142
  }
99
- }
100
- catch {
101
- // skip malformed
143
+ start = `(${id}`;
102
144
  }
103
145
  }
104
146
  return out;
@@ -109,4 +151,28 @@ class RedisDecisionLogStore {
109
151
  }
110
152
  }
111
153
  exports.RedisDecisionLogStore = RedisDecisionLogStore;
154
+ function parseStreamEntry(fields) {
155
+ if (!Array.isArray(fields))
156
+ return null;
157
+ const values = fields.map((v) => Buffer.isBuffer(v) ? v.toString('utf8') : String(v));
158
+ const dIdx = values.indexOf('d');
159
+ if (dIdx < 0)
160
+ return null;
161
+ try {
162
+ return JSON.parse(values[dIdx + 1] ?? '');
163
+ }
164
+ catch {
165
+ return null;
166
+ }
167
+ }
168
+ function validateCents(name, cents) {
169
+ if (!Number.isSafeInteger(cents) || cents < 0) {
170
+ throw new Error(`${name} must be a non-negative safe integer`);
171
+ }
172
+ }
173
+ function validateDelta(deltaCents) {
174
+ if (!Number.isSafeInteger(deltaCents)) {
175
+ throw new Error('deltaCents must be a safe integer');
176
+ }
177
+ }
112
178
  //# sourceMappingURL=redis-store.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"redis-store.js","sourceRoot":"","sources":["../../src/adapters/redis-store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"redis-store.js","sourceRoot":"","sources":["../../src/adapters/redis-store.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;GAmBG;;;AAEH,kDAA8C;AAE9C,SAAS,MAAM,KAAa,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AAgBhD,MAAM,eAAe,GAA2B;IAC9C,QAAQ,EAAE,EAAE;IACZ,UAAU,EAAE,GAAG;IACf,QAAQ,EAAE,IAAI;IACd,OAAO,EAAE,MAAM;IACf,SAAS,EAAE,OAAO;CACnB,CAAC;AAMF,MAAa,eAAe;IAEN;IADZ,MAAM,CAAS;IACvB,YAAoB,KAAgB,EAAE,OAA+B,EAAE;QAAnD,UAAK,GAAL,KAAK,CAAW;QAClC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,IAAI,YAAY,CAAC;IAC/C,CAAC;IACO,GAAG,CAAC,QAAgB,EAAE,MAAmB;QAC/C,MAAM,OAAO,GAAG,IAAA,0BAAW,EAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QAC9C,OAAO,GAAG,IAAI,CAAC,MAAM,UAAU,QAAQ,IAAI,MAAM,IAAI,OAAO,EAAE,CAAC;IACjE,CAAC;IACD,KAAK,CAAC,cAAc,CAAC,QAAgB,EAAE,MAAmB;QACxD,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;QAC3D,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACjC,CAAC;IACD,KAAK,CAAC,oBAAoB,CAAC,QAAgB,EAAE,MAAmB,EAAE,KAAa;QAC7E,aAAa,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAC9B,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACrC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QACjD,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,eAAe,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC;QAC7D,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,kBAAkB,CACtB,QAAgB,EAChB,MAAmB,EACnB,KAAa,EACb,UAAkB;QAElB,aAAa,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAC9B,aAAa,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;QACxC,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACrC,MAAM,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC;QAChD,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YACpB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAClC;;;;;;;;;;;oCAW4B,EAC5B,CAAC,EACD,CAAC,EACD,KAAK,EACL,UAAU,EACV,MAAM,CACP,CAAC;YACF,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAU,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YACvE,OAAO,EAAE,OAAO,EAAE,OAAO,KAAK,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;QACnD,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC3D,MAAM,KAAK,GAAG,MAAM,GAAG,KAAK,CAAC;QAC7B,IAAI,KAAK,GAAG,UAAU;YAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;QACjE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;QACxE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IAClD,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,QAAgB,EAAE,MAAmB,EAAE,UAAkB;QAC/E,aAAa,CAAC,UAAU,CAAC,CAAC;QAC1B,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACrC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;QACtD,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;QACpC,IAAI,OAAO,KAAK,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;YACzC,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QACnC,CAAC;QACD,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,eAAe,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC;QAC7D,OAAO,OAAO,CAAC;IACjB,CAAC;CACF;AAxED,0CAwEC;AAMD,MAAa,qBAAqB;IAEZ;IADZ,MAAM,CAAS;IACvB,YAAoB,KAAgB,EAAE,OAAqC,EAAE;QAAzD,UAAK,GAAL,KAAK,CAAW;QAClC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,IAAI,gBAAgB,CAAC;IACnD,CAAC;IACD,KAAK,CAAC,MAAM,CAAC,KAA6B;QACxC,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACtC,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;IACxD,CAAC;IACD,KAAK,CAAC,SAAS,CAAC,iBAA0B;QACxC,IAAI,CAAC;YACH,IAAI,GAAG,GAAG,GAAG,CAAC;YACd,SAAS,CAAC;gBACR,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;gBAChF,IAAI,CAAC,OAAO,EAAE,MAAM;oBAAE,OAAO,IAAI,CAAC;gBAClC,KAAK,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;oBACnC,MAAM,MAAM,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;oBACxC,IAAI,MAAM,IAAI,CAAC,CAAC,iBAAiB,IAAI,MAAM,CAAC,iBAAiB,KAAK,iBAAiB,CAAC;wBAAE,OAAO,MAAM,CAAC;oBACpG,GAAG,GAAG,IAAI,EAAE,EAAE,CAAC;gBACjB,CAAC;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,YAAoB,EAAE,KAAa,EAAE,iBAA0B;QACxE,IAAI,CAAC;YACH,MAAM,GAAG,GAA6B,EAAE,CAAC;YACzC,IAAI,KAAK,GAAG,GAAG,CAAC;YAChB,SAAS,CAAC;gBACR,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;gBAC/E,IAAI,CAAC,OAAO,EAAE,MAAM;oBAAE,MAAM;gBAC5B,KAAK,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;oBACnC,MAAM,MAAM,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;oBACxC,IACE,MAAM;wBACN,MAAM,CAAC,QAAQ,IAAI,YAAY;wBAC/B,CAAC,CAAC,iBAAiB,IAAI,MAAM,CAAC,iBAAiB,KAAK,iBAAiB,CAAC,EACtE,CAAC;wBACD,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;wBACjB,IAAI,GAAG,CAAC,MAAM,IAAI,KAAK;4BAAE,OAAO,GAAG,CAAC;oBACtC,CAAC;oBACD,KAAK,GAAG,IAAI,EAAE,EAAE,CAAC;gBACnB,CAAC;YACH,CAAC;YACD,OAAO,GAAG,CAAC;QACb,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;CACF;AAlDD,sDAkDC;AAGD,SAAS,gBAAgB,CAAC,MAAe;IACvC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;QAAE,OAAO,IAAI,CAAC;IACxC,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IACtF,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACjC,IAAI,IAAI,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAC1B,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,CAA2B,CAAC;IACtE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CAAC,IAAY,EAAE,KAAa;IAChD,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QAC9C,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,sCAAsC,CAAC,CAAC;IACjE,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CAAC,UAAkB;IACvC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC,EAAE,CAAC;QACtC,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;IACvD,CAAC;AACH,CAAC"}
@@ -1,10 +1,10 @@
1
1
  /**
2
- * `agentguard demo` deterministic simulation with real cryptographic receipt.
2
+ * `agentguard demo`: deterministic simulation with real cryptographic receipt.
3
3
  *
4
4
  * Output matches agentguard.run/the-block/ exactly. Dollar amounts and
5
5
  * agent name are simulated parameters (fixed for reproducibility). The
6
6
  * Ed25519 signature, SHA-256 chain hash, and canonical-JSON
7
- * serialization are REAL the receipt can be verified with
7
+ * serialization are REAL: the receipt can be verified with
8
8
  * `agentguard verify --trace latest`.
9
9
  *
10
10
  * No network calls. Fully offline. Deterministic across runs.
package/dist/cli/demo.js CHANGED
@@ -1,11 +1,11 @@
1
1
  "use strict";
2
2
  /**
3
- * `agentguard demo` deterministic simulation with real cryptographic receipt.
3
+ * `agentguard demo`: deterministic simulation with real cryptographic receipt.
4
4
  *
5
5
  * Output matches agentguard.run/the-block/ exactly. Dollar amounts and
6
6
  * agent name are simulated parameters (fixed for reproducibility). The
7
7
  * Ed25519 signature, SHA-256 chain hash, and canonical-JSON
8
- * serialization are REAL the receipt can be verified with
8
+ * serialization are REAL: the receipt can be verified with
9
9
  * `agentguard verify --trace latest`.
10
10
  *
11
11
  * No network calls. Fully offline. Deterministic across runs.
@@ -108,7 +108,8 @@ async function runDemo(argv) {
108
108
  // REAL Ed25519 signature over REAL canonical JSON.
109
109
  const sequence = 0;
110
110
  const previousHash = decision_log_1.GENESIS_PREVIOUS_HASH;
111
- const entryHash = (0, decision_log_1.computeEntryHash)({ sequence, decision, previousHash });
111
+ const signerFingerprint = (0, decision_log_1.computeSignerFingerprint)(publicKey);
112
+ const entryHash = (0, decision_log_1.computeEntryHash)({ sequence, decision, previousHash, signerFingerprint });
112
113
  void entryHash; // computed for the persisted receipt below
113
114
  const signedEntry = await (0, decision_log_1.signDecision)({
114
115
  sequence,
@@ -117,7 +118,6 @@ async function runDemo(argv) {
117
118
  privateKey: privateSeed,
118
119
  publicKey,
119
120
  });
120
- const signerFingerprint = (0, decision_log_1.computeSignerFingerprint)(publicKey);
121
121
  console.log('');
122
122
  console.log(' ' + (0, colors_1.banner)(index_1.AGENTGUARD_SPEND_VERSION));
123
123
  console.log('');
@@ -1 +1 @@
1
- {"version":3,"file":"demo.js","sourceRoot":"","sources":["../../src/cli/demo.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"demo.js","sourceRoot":"","sources":["../../src/cli/demo.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * `agentguard doctor` check installation health and configuration.
2
+ * `agentguard doctor`: check installation health and configuration.
3
3
  */
4
4
  export declare function runDoctor(argv: string[]): Promise<number>;
5
5
  //# sourceMappingURL=doctor.d.ts.map
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  /**
3
- * `agentguard doctor` check installation health and configuration.
3
+ * `agentguard doctor`: check installation health and configuration.
4
4
  */
5
5
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
6
6
  if (k2 === undefined) k2 = k;
@@ -165,7 +165,7 @@ async function runDoctor(argv) {
165
165
  checks.push({
166
166
  name: 'policy file (cwd)',
167
167
  ok: false,
168
- note: `not found in ${path.basename(process.cwd())}/ run 'agentguard init'`,
168
+ note: `not found in ${path.basename(process.cwd())}/: run 'agentguard init'`,
169
169
  });
170
170
  }
171
171
  // 6. Dry-run block
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/cli/doctor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/cli/doctor.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * `agentguard explain` decode a signed receipt with cap math + signature breakdown.
2
+ * `agentguard explain`: decode a signed receipt with cap math + signature breakdown.
3
3
  */
4
4
  export declare function runExplain(argv: string[]): Promise<number>;
5
5
  //# sourceMappingURL=explain.d.ts.map
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  /**
3
- * `agentguard explain` decode a signed receipt with cap math + signature breakdown.
3
+ * `agentguard explain`: decode a signed receipt with cap math + signature breakdown.
4
4
  */
5
5
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
6
6
  if (k2 === undefined) k2 = k;
@@ -1,5 +1,5 @@
1
1
  /**
2
- * `agentguard init` scaffold a project to use AgentGuard Spend.
2
+ * `agentguard init`: scaffold a project to use AgentGuard Spend.
3
3
  */
4
4
  export declare function runInit(argv: string[]): Promise<number>;
5
5
  //# sourceMappingURL=init.d.ts.map
package/dist/cli/init.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  /**
3
- * `agentguard init` scaffold a project to use AgentGuard Spend.
3
+ * `agentguard init`: scaffold a project to use AgentGuard Spend.
4
4
  */
5
5
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
6
6
  if (k2 === undefined) k2 = k;
@@ -1 +1 @@
1
- {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../src/cli/main.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AA8BH,wBAAsB,IAAI,CAAC,IAAI,GAAE,MAAM,EAA0B,GAAG,OAAO,CAAC,MAAM,CAAC,CAyClF"}
1
+ {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../src/cli/main.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAgCH,wBAAsB,IAAI,CAAC,IAAI,GAAE,MAAM,EAA0B,GAAG,OAAO,CAAC,MAAM,CAAC,CA6ClF"}
package/dist/cli/main.js CHANGED
@@ -44,7 +44,7 @@ var __importStar = (this && this.__importStar) || (function () {
44
44
  Object.defineProperty(exports, "__esModule", { value: true });
45
45
  exports.main = main;
46
46
  const index_1 = require("../index");
47
- const HELP = `agentguard local-runtime spend caps + signed receipts for AI agents
47
+ const HELP = `agentguard: local-runtime spend caps + signed receipts for AI agents
48
48
 
49
49
  usage:
50
50
  agentguard <command> [options]
@@ -56,6 +56,7 @@ commands:
56
56
  doctor Check installation health and configuration.
57
57
  explain Decode a signed receipt with cap math + signature breakdown.
58
58
  serve Open a local dashboard at http://localhost:8787.
59
+ telemetry Manage opt-in anonymous SDK activation metrics.
59
60
  --version Show the installed SDK version.
60
61
  --help Show this help.
61
62
 
@@ -65,6 +66,7 @@ examples:
65
66
  agentguard demo
66
67
  agentguard verify --trace latest
67
68
  agentguard explain latest
69
+ agentguard telemetry status
68
70
 
69
71
  docs: https://agentguard.run
70
72
  install: pip install agentguard-spend / npm install @agentguard-run/spend
@@ -104,6 +106,10 @@ async function main(argv = process.argv.slice(2)) {
104
106
  const { runServe } = await Promise.resolve().then(() => __importStar(require('./serve')));
105
107
  return runServe(rest);
106
108
  }
109
+ if (command === 'telemetry') {
110
+ const { runTelemetry } = await Promise.resolve().then(() => __importStar(require('./telemetry')));
111
+ return runTelemetry(rest);
112
+ }
107
113
  process.stderr.write(`agentguard: unknown command '${command}'\n\n`);
108
114
  process.stderr.write(HELP);
109
115
  return 2;
@@ -1 +1 @@
1
- {"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/cli/main.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8BH,oBAyCC;AArED,oCAAoD;AAEpD,MAAM,IAAI,GAAG;;;;;;;;;;;;;;;;;;;;;;;;CAwBZ,CAAC;AAEK,KAAK,UAAU,IAAI,CAAC,OAAiB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAC/D,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACpE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC3B,OAAO,CAAC,CAAC;IACX,CAAC;IACD,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACrD,OAAO,CAAC,GAAG,CAAC,cAAc,gCAAwB,EAAE,CAAC,CAAC;QACtD,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACxB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAE3B,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;QACvB,MAAM,EAAE,OAAO,EAAE,GAAG,wDAAa,QAAQ,GAAC,CAAC;QAC3C,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,CAAC;IACD,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACzB,MAAM,EAAE,SAAS,EAAE,GAAG,wDAAa,UAAU,GAAC,CAAC;QAC/C,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;IACD,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;QACvB,MAAM,EAAE,OAAO,EAAE,GAAG,wDAAa,QAAQ,GAAC,CAAC;QAC3C,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,CAAC;IACD,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACzB,MAAM,EAAE,SAAS,EAAE,GAAG,wDAAa,UAAU,GAAC,CAAC;QAC/C,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;IACD,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,MAAM,EAAE,UAAU,EAAE,GAAG,wDAAa,WAAW,GAAC,CAAC;QACjD,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IACD,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;QACxB,MAAM,EAAE,QAAQ,EAAE,GAAG,wDAAa,SAAS,GAAC,CAAC;QAC7C,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;IAED,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,gCAAgC,OAAO,OAAO,CAAC,CAAC;IACrE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC3B,OAAO,CAAC,CAAC;AACX,CAAC;AAED,8CAA8C;AAC9C,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;IAC5B,IAAI,EAAE,CAAC,IAAI,CACT,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAC5B,CAAC,GAAG,EAAE,EAAE;QACN,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACnB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/cli/main.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * `agentguard serve` local dashboard at localhost:8787 (configurable).
2
+ * `agentguard serve`: local dashboard at localhost:8787 (configurable).
3
3
  *
4
4
  * Aggregates per-tenant decision logs under ~/.agentguard/<tenant>/decisions.ndjson
5
5
  * + ~/.agentguard/demo/decisions.ndjson and serves a single-page dashboard.