@agentguard-run/spend 0.1.10 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +5 -0
- package/PATENTS.md +37 -0
- package/dist/adapters/postgres-store.d.ts +8 -2
- package/dist/adapters/postgres-store.d.ts.map +1 -1
- package/dist/adapters/postgres-store.js +58 -6
- package/dist/adapters/postgres-store.js.map +1 -1
- package/dist/adapters/redis-store.d.ts +10 -2
- package/dist/adapters/redis-store.d.ts.map +1 -1
- package/dist/adapters/redis-store.js +90 -24
- package/dist/adapters/redis-store.js.map +1 -1
- package/dist/cli/demo.d.ts +2 -2
- package/dist/cli/demo.js +4 -4
- package/dist/cli/demo.js.map +1 -1
- package/dist/cli/doctor.d.ts +1 -1
- package/dist/cli/doctor.js +2 -2
- package/dist/cli/doctor.js.map +1 -1
- package/dist/cli/explain.d.ts +1 -1
- package/dist/cli/explain.js +1 -1
- package/dist/cli/init.d.ts +1 -1
- package/dist/cli/init.js +1 -1
- package/dist/cli/main.d.ts.map +1 -1
- package/dist/cli/main.js +7 -1
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/serve.d.ts +1 -1
- package/dist/cli/serve.d.ts.map +1 -1
- package/dist/cli/serve.js +19 -14
- package/dist/cli/serve.js.map +1 -1
- package/dist/cli/telemetry.d.ts +2 -0
- package/dist/cli/telemetry.d.ts.map +1 -0
- package/dist/cli/telemetry.js +37 -0
- package/dist/cli/telemetry.js.map +1 -0
- package/dist/cli/verify.d.ts +2 -2
- package/dist/cli/verify.d.ts.map +1 -1
- package/dist/cli/verify.js +53 -36
- package/dist/cli/verify.js.map +1 -1
- package/dist/cost-table.d.ts +2 -2
- package/dist/cost-table.d.ts.map +1 -1
- package/dist/cost-table.js +23 -3
- package/dist/cost-table.js.map +1 -1
- package/dist/decision-log.d.ts +5 -4
- package/dist/decision-log.d.ts.map +1 -1
- package/dist/decision-log.js +40 -15
- package/dist/decision-log.js.map +1 -1
- package/dist/i18n.js +3 -3
- package/dist/i18n.js.map +1 -1
- package/dist/index.d.ts +5 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +12 -4
- package/dist/index.js.map +1 -1
- package/dist/policy.d.ts +8 -21
- package/dist/policy.d.ts.map +1 -1
- package/dist/policy.js +226 -109
- package/dist/policy.js.map +1 -1
- package/dist/spend-guard.d.ts +5 -1
- package/dist/spend-guard.d.ts.map +1 -1
- package/dist/spend-guard.js +92 -24
- package/dist/spend-guard.js.map +1 -1
- package/dist/store-memory.d.ts +8 -2
- package/dist/store-memory.d.ts.map +1 -1
- package/dist/store-memory.js +34 -2
- package/dist/store-memory.js.map +1 -1
- package/dist/telemetry.d.ts +11 -0
- package/dist/telemetry.d.ts.map +1 -0
- package/dist/telemetry.js +149 -0
- package/dist/telemetry.js.map +1 -0
- package/dist/types.d.ts +23 -4
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +2 -2
- package/package.json +10 -9
package/CHANGELOG.md
ADDED
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;
|
|
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 =
|
|
100
|
-
|
|
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 =
|
|
107
|
-
|
|
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":";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,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;CACF;
|
|
1
|
+
{"version":3,"file":"postgres-store.js","sourceRoot":"","sources":["../../src/adapters/postgres-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -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;
|
|
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
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
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
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
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
|
-
|
|
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":";AAAA;;;;;;;;;;;;;;;;;;;GAmBG;;;AAEH,kDAA8C;AAE9C,SAAS,MAAM,KAAa,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"redis-store.js","sourceRoot":"","sources":["../../src/adapters/redis-store.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/demo.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* `agentguard demo
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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('');
|
package/dist/cli/demo.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"demo.js","sourceRoot":"","sources":["../../src/cli/demo.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuBH,0BAmIC;AAxJD,uCAAyB;AACzB,uCAAyB;AACzB,2CAA6B;AAC7B,mDAAqC;AAErC,kDAKyB;AAEzB,kCAA6C;AAC7C,oCAAoD;AACpD,qCAAmE;AAEnE,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,aAAa,EAAE,MAAM,CAAC,CAAC;AACjE,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAAC;AAClE,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC;AAChE,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,qBAAqB,CAAC,CAAC;AAE1D,KAAK,UAAU,OAAO,CAAC,IAAc;IAC1C,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;QAChC,OAAO,CAAC,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC;IAC7B,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACnD,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;QAC/B,OAAO,CAAC,GAAG,CAAC,mEAAmE,CAAC,CAAC;QACjF,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACxB,OAAO,CAAC,GAAG,CAAC,8DAA8D,CAAC,CAAC;QAC5E,OAAO,CAAC,CAAC;IACX,CAAC;IAED,sFAAsF;IACtF,MAAM,OAAO,GAAG,sBAAsB,CAAC;IACvC,MAAM,QAAQ,GAAG,WAAW,CAAC;IAC7B,MAAM,cAAc,GAAG,iBAAiB,CAAC;IACzC,MAAM,aAAa,GAAG,KAAK,CAAC,CAAC,UAAU;IACvC,MAAM,cAAc,GAAG,MAAM,CAAC,CAAC,YAAY;IAC3C,MAAM,iBAAiB,GAAG,CAAC,CAAC;IAC5B,MAAM,SAAS,GAAG,0BAA0B,CAAC;IAE7C,2CAA2C;IAC3C,8DAA8D;IAC9D,MAAM,WAAW,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;IACvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE;QAAE,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAChD,MAAM,SAAS,GAAG,MAAM,EAAE,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;IAE1D,MAAM,YAAY,GAAa;QAC7B,WAAW,EAAE,aAAa;QAC1B,MAAM,EAAE,SAAS;QACjB,MAAM,EAAE,OAAO;QACf,MAAM,EAAE,wBAAwB,CAAC,aAAa,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO;KACxE,CAAC;IAEF,MAAM,QAAQ,GAAkB;QAC9B,UAAU,EAAE,6BAA6B;QACzC,SAAS;QACT,QAAQ,EAAE,2BAA2B;QACrC,aAAa,EAAE,CAAC;QAChB,eAAe,EAAE,SAAS;QAC1B,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,CAAC,gBAAgB,aAAa,aAAa,CAAC;QACrD,QAAQ;QACR,cAAc;QACd,aAAa,EAAE,cAAc;QAC7B,cAAc;QACd,iBAAiB;QACjB,gBAAgB,EAAE,iBAAiB;QACnC,YAAY;QACZ,iBAAiB,EAAE,yBAAyB,OAAO,EAAE;KACtD,CAAC;IAEF,mDAAmD;IACnD,MAAM,QAAQ,GAAG,CAAC,CAAC;IACnB,MAAM,YAAY,GAAG,oCAAqB,CAAC;IAC3C,MAAM,SAAS,GAAG,IAAA,+BAAgB,EAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"demo.js","sourceRoot":"","sources":["../../src/cli/demo.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/doctor.d.ts
CHANGED
package/dist/cli/doctor.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/**
|
|
3
|
-
* `agentguard doctor
|
|
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())}
|
|
168
|
+
note: `not found in ${path.basename(process.cwd())}/: run 'agentguard init'`,
|
|
169
169
|
});
|
|
170
170
|
}
|
|
171
171
|
// 6. Dry-run block
|
package/dist/cli/doctor.js.map
CHANGED
|
@@ -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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"}
|
package/dist/cli/explain.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* `agentguard explain
|
|
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
|
package/dist/cli/explain.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/**
|
|
3
|
-
* `agentguard explain
|
|
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;
|
package/dist/cli/init.d.ts
CHANGED
package/dist/cli/init.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/**
|
|
3
|
-
* `agentguard init
|
|
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;
|
package/dist/cli/main.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../src/cli/main.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;
|
|
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
|
|
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;
|
package/dist/cli/main.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/cli/main.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/cli/main.ts"],"names":[],"mappings":"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"}
|