@agentguard-run/spend 0.1.4 → 0.1.7

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.
@@ -0,0 +1,9 @@
1
+ #!/usr/bin/env node
2
+ // AgentGuard CLI entry point (executable via `agentguard` after npm install).
3
+ require('../dist/cli/main')
4
+ .main()
5
+ .then((code) => process.exit(code))
6
+ .catch((err) => {
7
+ console.error(err);
8
+ process.exit(1);
9
+ });
@@ -0,0 +1,22 @@
1
+ /**
2
+ * ANSI color helpers with TTY detection.
3
+ *
4
+ * Honors:
5
+ * - NO_COLOR=1 (industry standard; https://no-color.org)
6
+ * - AGENTGUARD_COLOR=0 (product-specific opt-out)
7
+ * - process.stdout.isTTY (no color when piped to file or non-TTY)
8
+ */
9
+ export declare const red: (text: string) => string;
10
+ export declare const green: (text: string) => string;
11
+ export declare const yellow: (text: string) => string;
12
+ export declare const cyan: (text: string) => string;
13
+ export declare const brightRed: (text: string) => string;
14
+ export declare const brightGreen: (text: string) => string;
15
+ export declare const brightCyan: (text: string) => string;
16
+ export declare const bold: (text: string) => string;
17
+ export declare const dim: (text: string) => string;
18
+ export declare function cyanBold(text: string): string;
19
+ export declare function redBold(text: string): string;
20
+ export declare function greenBold(text: string): string;
21
+ export declare function banner(version: string): string;
22
+ //# sourceMappingURL=colors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"colors.d.ts","sourceRoot":"","sources":["../../src/cli/colors.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAeH,eAAO,MAAM,GAAG,SAJoB,MAAM,KAAK,MAIlB,CAAC;AAC9B,eAAO,MAAM,KAAK,SALkB,MAAM,KAAK,MAKhB,CAAC;AAChC,eAAO,MAAM,MAAM,SANiB,MAAM,KAAK,MAMf,CAAC;AACjC,eAAO,MAAM,IAAI,SAPmB,MAAM,KAAK,MAOjB,CAAC;AAC/B,eAAO,MAAM,SAAS,SARc,MAAM,KAAK,MAQZ,CAAC;AACpC,eAAO,MAAM,WAAW,SATY,MAAM,KAAK,MASV,CAAC;AACtC,eAAO,MAAM,UAAU,SAVa,MAAM,KAAK,MAUX,CAAC;AACrC,eAAO,MAAM,IAAI,SAXmB,MAAM,KAAK,MAWlB,CAAC;AAC9B,eAAO,MAAM,GAAG,SAZoB,MAAM,KAAK,MAYnB,CAAC;AAE7B,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE7C;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE5C;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE9C;AAED,wBAAgB,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAE9C"}
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ /**
3
+ * ANSI color helpers with TTY detection.
4
+ *
5
+ * Honors:
6
+ * - NO_COLOR=1 (industry standard; https://no-color.org)
7
+ * - AGENTGUARD_COLOR=0 (product-specific opt-out)
8
+ * - process.stdout.isTTY (no color when piped to file or non-TTY)
9
+ */
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.dim = exports.bold = exports.brightCyan = exports.brightGreen = exports.brightRed = exports.cyan = exports.yellow = exports.green = exports.red = void 0;
12
+ exports.cyanBold = cyanBold;
13
+ exports.redBold = redBold;
14
+ exports.greenBold = greenBold;
15
+ exports.banner = banner;
16
+ function colorEnabled() {
17
+ if (typeof process === 'undefined')
18
+ return false;
19
+ if (process.env.NO_COLOR)
20
+ return false;
21
+ const ag = (process.env.AGENTGUARD_COLOR || '').toLowerCase();
22
+ if (['0', 'false', 'no', 'off'].includes(ag))
23
+ return false;
24
+ if (!process.stdout || !process.stdout.isTTY)
25
+ return false;
26
+ return true;
27
+ }
28
+ function wrap(code) {
29
+ return (text) => (colorEnabled() ? `\x1b[${code}m${text}\x1b[0m` : text);
30
+ }
31
+ exports.red = wrap('31');
32
+ exports.green = wrap('32');
33
+ exports.yellow = wrap('33');
34
+ exports.cyan = wrap('36');
35
+ exports.brightRed = wrap('91');
36
+ exports.brightGreen = wrap('92');
37
+ exports.brightCyan = wrap('96');
38
+ exports.bold = wrap('1');
39
+ exports.dim = wrap('2');
40
+ function cyanBold(text) {
41
+ return colorEnabled() ? `\x1b[1;36m${text}\x1b[0m` : text;
42
+ }
43
+ function redBold(text) {
44
+ return colorEnabled() ? `\x1b[1;31m${text}\x1b[0m` : text;
45
+ }
46
+ function greenBold(text) {
47
+ return colorEnabled() ? `\x1b[1;32m${text}\x1b[0m` : text;
48
+ }
49
+ function banner(version) {
50
+ return cyanBold(`⬡ AGENTGUARD SPEND · v${version}`);
51
+ }
52
+ //# sourceMappingURL=colors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"colors.js","sourceRoot":"","sources":["../../src/cli/colors.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;AAyBH,4BAEC;AAED,0BAEC;AAED,8BAEC;AAED,wBAEC;AArCD,SAAS,YAAY;IACnB,IAAI,OAAO,OAAO,KAAK,WAAW;QAAE,OAAO,KAAK,CAAC;IACjD,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ;QAAE,OAAO,KAAK,CAAC;IACvC,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IAC9D,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC;QAAE,OAAO,KAAK,CAAC;IAC3D,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK;QAAE,OAAO,KAAK,CAAC;IAC3D,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,IAAI,CAAC,IAAY;IACxB,OAAO,CAAC,IAAY,EAAE,EAAE,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,QAAQ,IAAI,IAAI,IAAI,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACnF,CAAC;AAEY,QAAA,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;AACjB,QAAA,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;AACnB,QAAA,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;AACpB,QAAA,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;AAClB,QAAA,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;AACvB,QAAA,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;AACzB,QAAA,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;AACxB,QAAA,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;AACjB,QAAA,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;AAE7B,SAAgB,QAAQ,CAAC,IAAY;IACnC,OAAO,YAAY,EAAE,CAAC,CAAC,CAAC,aAAa,IAAI,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;AAC5D,CAAC;AAED,SAAgB,OAAO,CAAC,IAAY;IAClC,OAAO,YAAY,EAAE,CAAC,CAAC,CAAC,aAAa,IAAI,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;AAC5D,CAAC;AAED,SAAgB,SAAS,CAAC,IAAY;IACpC,OAAO,YAAY,EAAE,CAAC,CAAC,CAAC,aAAa,IAAI,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;AAC5D,CAAC;AAED,SAAgB,MAAM,CAAC,OAAe;IACpC,OAAO,QAAQ,CAAC,2BAA2B,OAAO,EAAE,CAAC,CAAC;AACxD,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * `agentguard demo` — deterministic simulation with real cryptographic receipt.
3
+ *
4
+ * Output matches agentguard.run/the-block/ exactly. Dollar amounts and
5
+ * agent name are simulated parameters (fixed for reproducibility). The
6
+ * Ed25519 signature, SHA-256 chain hash, and canonical-JSON
7
+ * serialization are REAL — the receipt can be verified with
8
+ * `agentguard verify --trace latest`.
9
+ *
10
+ * No network calls. Fully offline. Deterministic across runs.
11
+ */
12
+ export declare function runDemo(argv: string[]): Promise<number>;
13
+ //# sourceMappingURL=demo.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"demo.d.ts","sourceRoot":"","sources":["../../src/cli/demo.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAuBH,wBAAsB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAmI7D"}
@@ -0,0 +1,173 @@
1
+ "use strict";
2
+ /**
3
+ * `agentguard demo` — deterministic simulation with real cryptographic receipt.
4
+ *
5
+ * Output matches agentguard.run/the-block/ exactly. Dollar amounts and
6
+ * agent name are simulated parameters (fixed for reproducibility). The
7
+ * Ed25519 signature, SHA-256 chain hash, and canonical-JSON
8
+ * serialization are REAL — the receipt can be verified with
9
+ * `agentguard verify --trace latest`.
10
+ *
11
+ * No network calls. Fully offline. Deterministic across runs.
12
+ */
13
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ var desc = Object.getOwnPropertyDescriptor(m, k);
16
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
17
+ desc = { enumerable: true, get: function() { return m[k]; } };
18
+ }
19
+ Object.defineProperty(o, k2, desc);
20
+ }) : (function(o, m, k, k2) {
21
+ if (k2 === undefined) k2 = k;
22
+ o[k2] = m[k];
23
+ }));
24
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
25
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
26
+ }) : function(o, v) {
27
+ o["default"] = v;
28
+ });
29
+ var __importStar = (this && this.__importStar) || (function () {
30
+ var ownKeys = function(o) {
31
+ ownKeys = Object.getOwnPropertyNames || function (o) {
32
+ var ar = [];
33
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
34
+ return ar;
35
+ };
36
+ return ownKeys(o);
37
+ };
38
+ return function (mod) {
39
+ if (mod && mod.__esModule) return mod;
40
+ var result = {};
41
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
42
+ __setModuleDefault(result, mod);
43
+ return result;
44
+ };
45
+ })();
46
+ Object.defineProperty(exports, "__esModule", { value: true });
47
+ exports.runDemo = runDemo;
48
+ const fs = __importStar(require("fs"));
49
+ const os = __importStar(require("os"));
50
+ const path = __importStar(require("path"));
51
+ const ed = __importStar(require("@noble/ed25519"));
52
+ const decision_log_1 = require("../decision-log");
53
+ const i18n_1 = require("../i18n");
54
+ const index_1 = require("../index");
55
+ const colors_1 = require("./colors");
56
+ const DEMO_HOME = path.join(os.homedir(), '.agentguard', 'demo');
57
+ const DEMO_PRIVATE_KEY = path.join(DEMO_HOME, 'demo-private.key');
58
+ const DEMO_PUBLIC_KEY = path.join(DEMO_HOME, 'demo-public.key');
59
+ const DEMO_RECEIPT = path.join(DEMO_HOME, 'latest-receipt.json');
60
+ async function runDemo(argv) {
61
+ if (argv.includes('--no-color')) {
62
+ process.env.NO_COLOR = '1';
63
+ }
64
+ if (argv.includes('--help') || argv.includes('-h')) {
65
+ console.log('agentguard demo');
66
+ console.log('Run a deterministic simulation with a real cryptographic receipt.');
67
+ console.log('Options:');
68
+ console.log(' --no-color Disable colored output (same as NO_COLOR=1).');
69
+ return 0;
70
+ }
71
+ // Simulated parameters - match the marketing screenshot at agentguard.run/the-block/.
72
+ const agentId = 'agent-finance-bot-v3';
73
+ const provider = 'anthropic';
74
+ const modelRequested = 'claude-opus-4-7';
75
+ const dailyCapCents = 50000; // $500.00
76
+ const projectedCents = 112241; // $1,122.41
77
+ const windowSpendBefore = 0;
78
+ const timestamp = '2026-05-24T18:00:00.000Z';
79
+ // Deterministic keypair from a fixed seed.
80
+ // Public + reproducible by design - NEVER use for production.
81
+ const privateSeed = new Uint8Array(32);
82
+ for (let i = 0; i < 32; i++)
83
+ privateSeed[i] = i;
84
+ const publicKey = await ed.getPublicKeyAsync(privateSeed);
85
+ const triggeredCap = {
86
+ amountCents: dailyCapCents,
87
+ window: 'per_day',
88
+ action: 'block',
89
+ reason: `Hard daily ceiling ($${(dailyCapCents / 100).toFixed(2)}/day)`,
90
+ };
91
+ const decision = {
92
+ decisionId: 'agentguard-demo-decision-v1',
93
+ timestamp,
94
+ policyId: 'agentguard-demo-policy-v1',
95
+ policyVersion: 1,
96
+ enforcementMode: 'enforce',
97
+ action: 'block',
98
+ reasons: [`Cap 'per_day=${dailyCapCents}c' exceeded`],
99
+ provider,
100
+ modelRequested,
101
+ modelResolved: modelRequested,
102
+ projectedCents,
103
+ windowSpendBefore,
104
+ windowSpendAfter: windowSpendBefore,
105
+ triggeredCap,
106
+ triggeredScopeKey: `tenantId=demo|agentId=${agentId}`,
107
+ };
108
+ // REAL Ed25519 signature over REAL canonical JSON.
109
+ const sequence = 0;
110
+ const previousHash = decision_log_1.GENESIS_PREVIOUS_HASH;
111
+ const entryHash = (0, decision_log_1.computeEntryHash)({ sequence, decision, previousHash });
112
+ void entryHash; // computed for the persisted receipt below
113
+ const signedEntry = await (0, decision_log_1.signDecision)({
114
+ sequence,
115
+ decision,
116
+ previousHash,
117
+ privateKey: privateSeed,
118
+ publicKey,
119
+ });
120
+ const signerFingerprint = (0, decision_log_1.computeSignerFingerprint)(publicKey);
121
+ console.log('');
122
+ console.log(' ' + (0, colors_1.banner)(index_1.AGENTGUARD_SPEND_VERSION));
123
+ console.log('');
124
+ console.log(' ' +
125
+ (0, colors_1.cyanBold)('AgentGuard Demo') +
126
+ (0, colors_1.dim)(' · ') +
127
+ (0, colors_1.dim)('[simulated transaction · real cryptographic receipt]'));
128
+ console.log('');
129
+ console.log((0, i18n_1.formatBlockedTrace)({
130
+ policyId: decision.policyId,
131
+ provider: decision.provider,
132
+ projectedCents: decision.projectedCents,
133
+ windowSpendBefore: decision.windowSpendBefore,
134
+ reasons: decision.reasons,
135
+ triggeredCap: { amountCents: triggeredCap.amountCents, window: triggeredCap.window },
136
+ agentId,
137
+ }));
138
+ console.log('');
139
+ // Persist the receipt so `agentguard verify --trace latest` works.
140
+ try {
141
+ fs.mkdirSync(DEMO_HOME, { recursive: true });
142
+ fs.writeFileSync(DEMO_PRIVATE_KEY, Buffer.from(privateSeed), { mode: 0o600 });
143
+ fs.writeFileSync(DEMO_PUBLIC_KEY, Buffer.from(publicKey));
144
+ fs.writeFileSync(DEMO_RECEIPT, JSON.stringify({
145
+ sequence,
146
+ entryHash,
147
+ previousHash,
148
+ signature: signedEntry.signature,
149
+ signerFingerprint,
150
+ publicKeyHex: Buffer.from(publicKey).toString('hex'),
151
+ decision,
152
+ }, null, 2));
153
+ }
154
+ catch {
155
+ // best-effort persist; demo still prints if disk write fails
156
+ }
157
+ const receiptId = entryHash.slice(0, 16);
158
+ console.log((0, colors_1.dim)(' ───────────────────────────────────────────'));
159
+ console.log(` ${(0, colors_1.dim)('receipt ')} ${receiptId}${(0, colors_1.dim)('...')}`);
160
+ console.log(` ${(0, colors_1.dim)('signer ')} ${signerFingerprint.slice(0, 16)}${(0, colors_1.dim)('...')}`);
161
+ console.log(` ${(0, colors_1.dim)('sequence ')} ${sequence}`);
162
+ console.log((0, colors_1.dim)(' ───────────────────────────────────────────'));
163
+ console.log('');
164
+ console.log(' ' +
165
+ (0, colors_1.green)('→') +
166
+ ' ' +
167
+ (0, colors_1.dim)('verify this receipt:') +
168
+ ' ' +
169
+ (0, colors_1.greenBold)('agentguard verify --trace latest'));
170
+ console.log('');
171
+ return 0;
172
+ }
173
+ //# sourceMappingURL=demo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"demo.js","sourceRoot":"","sources":["../../src/cli/demo.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * `agentguard doctor` — check installation health and configuration.
3
+ */
4
+ export declare function runDoctor(argv: string[]): Promise<number>;
5
+ //# sourceMappingURL=doctor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/cli/doctor.ts"],"names":[],"mappings":"AAAA;;GAEG;AA+FH,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAyF/D"}
@@ -0,0 +1,208 @@
1
+ "use strict";
2
+ /**
3
+ * `agentguard doctor` — check installation health and configuration.
4
+ */
5
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ var desc = Object.getOwnPropertyDescriptor(m, k);
8
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
9
+ desc = { enumerable: true, get: function() { return m[k]; } };
10
+ }
11
+ Object.defineProperty(o, k2, desc);
12
+ }) : (function(o, m, k, k2) {
13
+ if (k2 === undefined) k2 = k;
14
+ o[k2] = m[k];
15
+ }));
16
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
17
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
18
+ }) : function(o, v) {
19
+ o["default"] = v;
20
+ });
21
+ var __importStar = (this && this.__importStar) || (function () {
22
+ var ownKeys = function(o) {
23
+ ownKeys = Object.getOwnPropertyNames || function (o) {
24
+ var ar = [];
25
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
26
+ return ar;
27
+ };
28
+ return ownKeys(o);
29
+ };
30
+ return function (mod) {
31
+ if (mod && mod.__esModule) return mod;
32
+ var result = {};
33
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
34
+ __setModuleDefault(result, mod);
35
+ return result;
36
+ };
37
+ })();
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.runDoctor = runDoctor;
40
+ const fs = __importStar(require("fs"));
41
+ const os = __importStar(require("os"));
42
+ const path = __importStar(require("path"));
43
+ const index_1 = require("../index");
44
+ const colors_1 = require("./colors");
45
+ function checkRequire(name) {
46
+ try {
47
+ const m = require(name);
48
+ const version = m.VERSION || m.version || '?';
49
+ return { ok: true, note: `v${version}` };
50
+ }
51
+ catch {
52
+ return { ok: false, note: 'not installed (optional)' };
53
+ }
54
+ }
55
+ function checkWritable(p) {
56
+ try {
57
+ fs.mkdirSync(p, { recursive: true });
58
+ const testFile = path.join(p, '.doctor-write-test');
59
+ fs.writeFileSync(testFile, 'ok');
60
+ fs.unlinkSync(testFile);
61
+ return { ok: true, note: p };
62
+ }
63
+ catch (e) {
64
+ return { ok: false, note: String(e) };
65
+ }
66
+ }
67
+ async function checkCrypto() {
68
+ try {
69
+ const ed = await Promise.resolve().then(() => __importStar(require('@noble/ed25519')));
70
+ const priv = new Uint8Array(32);
71
+ for (let i = 0; i < 32; i++)
72
+ priv[i] = i;
73
+ const pub = await ed.getPublicKeyAsync(priv);
74
+ if (pub.length === 32) {
75
+ return { ok: true, note: 'Ed25519 key derivation OK (32-byte public key)' };
76
+ }
77
+ return { ok: false, note: `unexpected public key size: ${pub.length}` };
78
+ }
79
+ catch (e) {
80
+ return { ok: false, note: `crypto backend failed: ${e}` };
81
+ }
82
+ }
83
+ async function checkDryRunBlock() {
84
+ try {
85
+ const { SpendGuard } = await Promise.resolve().then(() => __importStar(require('../spend-guard')));
86
+ const { InMemorySpendStore } = await Promise.resolve().then(() => __importStar(require('../store-memory')));
87
+ const { InMemoryDecisionLogStore } = await Promise.resolve().then(() => __importStar(require('../decision-log')));
88
+ const ed = await Promise.resolve().then(() => __importStar(require('@noble/ed25519')));
89
+ const privateKey = new Uint8Array(32);
90
+ for (let i = 0; i < 32; i++)
91
+ privateKey[i] = i;
92
+ const publicKey = await ed.getPublicKeyAsync(privateKey);
93
+ const policy = {
94
+ id: 'doctor-v1',
95
+ name: 'Doctor dry-run policy',
96
+ scope: { tenantId: 'doctor' },
97
+ caps: [
98
+ { amountCents: 0, window: 'per_day', action: 'block', reason: 'doctor check' },
99
+ ],
100
+ mode: 'enforce',
101
+ version: 1,
102
+ effectiveFrom: '2026-01-01T00:00:00.000Z',
103
+ };
104
+ const guard = new SpendGuard({
105
+ policy,
106
+ spendStore: new InMemorySpendStore(),
107
+ logStore: new InMemoryDecisionLogStore(),
108
+ signingKeys: { privateKey, publicKey },
109
+ });
110
+ const result = await guard.decide({
111
+ provider: 'openai',
112
+ model: 'gpt-4o',
113
+ inputTokens: 100,
114
+ outputTokens: 50,
115
+ scope: { tenantId: 'doctor', agentId: 'dry-run' },
116
+ });
117
+ if (result.decision?.action === 'block') {
118
+ return { ok: true, note: 'block path fires correctly' };
119
+ }
120
+ return {
121
+ ok: false,
122
+ note: `expected action=block, got action=${result.decision?.action}`,
123
+ };
124
+ }
125
+ catch (e) {
126
+ return { ok: false, note: `dry-run block failed: ${e}` };
127
+ }
128
+ }
129
+ async function runDoctor(argv) {
130
+ if (argv.includes('--help') || argv.includes('-h')) {
131
+ console.log('agentguard doctor');
132
+ return 0;
133
+ }
134
+ console.log('');
135
+ console.log(' ' + (0, colors_1.banner)(index_1.AGENTGUARD_SPEND_VERSION));
136
+ console.log('');
137
+ console.log(' ' + (0, colors_1.cyanBold)('agentguard doctor') + (0, colors_1.dim)(' · setup health check'));
138
+ console.log('');
139
+ const checks = [];
140
+ // 1. Core package self-check
141
+ checks.push({
142
+ name: '@agentguard-run/spend package',
143
+ ok: true,
144
+ note: `v${index_1.AGENTGUARD_SPEND_VERSION}`,
145
+ });
146
+ // 2. Crypto
147
+ const cryptoCheck = await checkCrypto();
148
+ checks.push({ name: 'Ed25519 crypto backend', ...cryptoCheck });
149
+ // 3. Optional providers
150
+ for (const provider of ['openai', '@anthropic-ai/sdk', '@aws-sdk/client-bedrock-runtime']) {
151
+ const r = checkRequire(provider);
152
+ checks.push({ name: `provider: ${provider}`, ...r, optional: true });
153
+ }
154
+ // 4. ~/.agentguard writable
155
+ checks.push({
156
+ name: '~/.agentguard/ writable',
157
+ ...checkWritable(path.join(os.homedir(), '.agentguard')),
158
+ });
159
+ // 5. Policy file in cwd
160
+ const policyPath = path.join(process.cwd(), 'agentguard.policy.yaml');
161
+ if (fs.existsSync(policyPath)) {
162
+ checks.push({ name: 'policy file (cwd)', ok: true, note: `found: ${path.basename(policyPath)}` });
163
+ }
164
+ else {
165
+ checks.push({
166
+ name: 'policy file (cwd)',
167
+ ok: false,
168
+ note: `not found in ${path.basename(process.cwd())}/ — run 'agentguard init'`,
169
+ });
170
+ }
171
+ // 6. Dry-run block
172
+ const dryRun = await checkDryRunBlock();
173
+ checks.push({ name: 'dry-run block simulation', ...dryRun });
174
+ const labelWidth = Math.max(...checks.map((c) => c.name.length)) + 2;
175
+ let passCount = 0;
176
+ let optionalFailCount = 0;
177
+ let failCount = 0;
178
+ for (const c of checks) {
179
+ let mark;
180
+ if (c.ok) {
181
+ mark = (0, colors_1.green)('✓');
182
+ passCount++;
183
+ }
184
+ else if (c.optional) {
185
+ mark = (0, colors_1.dim)('·');
186
+ optionalFailCount++;
187
+ }
188
+ else {
189
+ mark = (0, colors_1.redBold)('✗');
190
+ failCount++;
191
+ }
192
+ console.log(` ${mark} ${c.name.padEnd(labelWidth)}${(0, colors_1.dim)(c.note)}`);
193
+ }
194
+ console.log('');
195
+ console.log((0, colors_1.dim)(' ───────────────────────────────────────────'));
196
+ if (failCount === 0) {
197
+ console.log(` ${(0, colors_1.greenBold)('healthy')} ` +
198
+ (0, colors_1.dim)(`(${passCount} passing, ${optionalFailCount} optional providers not installed)`));
199
+ console.log('');
200
+ return 0;
201
+ }
202
+ console.log(` ${(0, colors_1.redBold)('issues found')} ` + (0, colors_1.dim)(`(${failCount} failing, ${passCount} passing)`));
203
+ console.log('');
204
+ console.log((0, colors_1.dim)(" fix the ✗ items above, then re-run 'agentguard doctor'."));
205
+ console.log('');
206
+ return 1;
207
+ }
208
+ //# sourceMappingURL=doctor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/cli/doctor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * `agentguard explain` — decode a signed receipt with cap math + signature breakdown.
3
+ */
4
+ export declare function runExplain(argv: string[]): Promise<number>;
5
+ //# sourceMappingURL=explain.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"explain.d.ts","sourceRoot":"","sources":["../../src/cli/explain.ts"],"names":[],"mappings":"AAAA;;GAEG;AAoCH,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CA6GhE"}