@agentguard-run/spend 0.2.1 → 0.3.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 (80) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/LICENSE +1 -1
  3. package/README.es-419.md +28 -102
  4. package/README.md +50 -124
  5. package/README.pt-BR.md +28 -102
  6. package/dist/bindings/anthropic.d.ts +11 -0
  7. package/dist/bindings/anthropic.d.ts.map +1 -0
  8. package/dist/bindings/anthropic.js +116 -0
  9. package/dist/bindings/anthropic.js.map +1 -0
  10. package/dist/bindings/bedrock.d.ts +11 -0
  11. package/dist/bindings/bedrock.d.ts.map +1 -0
  12. package/dist/bindings/bedrock.js +177 -0
  13. package/dist/bindings/bedrock.js.map +1 -0
  14. package/dist/cli/auth.d.ts +7 -0
  15. package/dist/cli/auth.d.ts.map +1 -0
  16. package/dist/cli/auth.js +189 -0
  17. package/dist/cli/auth.js.map +1 -0
  18. package/dist/cli/colors.d.ts +8 -3
  19. package/dist/cli/colors.d.ts.map +1 -1
  20. package/dist/cli/colors.js +93 -4
  21. package/dist/cli/colors.js.map +1 -1
  22. package/dist/cli/demo.d.ts.map +1 -1
  23. package/dist/cli/demo.js +23 -2
  24. package/dist/cli/demo.js.map +1 -1
  25. package/dist/cli/main.d.ts +0 -6
  26. package/dist/cli/main.d.ts.map +1 -1
  27. package/dist/cli/main.js +36 -16
  28. package/dist/cli/main.js.map +1 -1
  29. package/dist/cli/models.d.ts +18 -0
  30. package/dist/cli/models.d.ts.map +1 -0
  31. package/dist/cli/models.js +277 -0
  32. package/dist/cli/models.js.map +1 -0
  33. package/dist/cli/tips.d.ts +21 -0
  34. package/dist/cli/tips.d.ts.map +1 -0
  35. package/dist/cli/tips.js +191 -0
  36. package/dist/cli/tips.js.map +1 -0
  37. package/dist/cli/wizard.d.ts +27 -0
  38. package/dist/cli/wizard.d.ts.map +1 -0
  39. package/dist/cli/wizard.js +182 -0
  40. package/dist/cli/wizard.js.map +1 -0
  41. package/dist/cost-table.d.ts +11 -36
  42. package/dist/cost-table.d.ts.map +1 -1
  43. package/dist/cost-table.js +114 -45
  44. package/dist/cost-table.js.map +1 -1
  45. package/dist/index.d.ts +6 -3
  46. package/dist/index.d.ts.map +1 -1
  47. package/dist/index.js +25 -8
  48. package/dist/index.js.map +1 -1
  49. package/dist/openrouter-catalog.d.ts +56 -0
  50. package/dist/openrouter-catalog.d.ts.map +1 -0
  51. package/dist/openrouter-catalog.js +183 -0
  52. package/dist/openrouter-catalog.js.map +1 -0
  53. package/dist/spend-guard.d.ts +38 -55
  54. package/dist/spend-guard.d.ts.map +1 -1
  55. package/dist/spend-guard.js +268 -83
  56. package/dist/spend-guard.js.map +1 -1
  57. package/dist/telemetry.d.ts.map +1 -1
  58. package/dist/telemetry.js +52 -21
  59. package/dist/telemetry.js.map +1 -1
  60. package/dist/templates/index.d.ts +17 -0
  61. package/dist/templates/index.d.ts.map +1 -0
  62. package/dist/templates/index.js +100 -0
  63. package/dist/templates/index.js.map +1 -0
  64. package/dist/types.d.ts +18 -3
  65. package/dist/types.d.ts.map +1 -1
  66. package/package.json +32 -4
  67. package/src/bindings/anthropic.ts +142 -0
  68. package/src/bindings/bedrock.ts +200 -0
  69. package/src/cli/auth.ts +145 -0
  70. package/src/cli/models.ts +236 -0
  71. package/src/cli/tips.ts +161 -0
  72. package/src/cli/wizard.ts +160 -0
  73. package/src/openrouter-catalog.ts +180 -0
  74. package/src/templates/agent-support.yaml +30 -0
  75. package/src/templates/chargeback-evidence.yaml +30 -0
  76. package/src/templates/code-scan.yaml +30 -0
  77. package/src/templates/index.ts +109 -0
  78. package/src/templates/payment-approval.yaml +30 -0
  79. package/src/templates/risk-review.yaml +30 -0
  80. package/tests/fixtures/openrouter-catalog.json +1 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"models.js","sourceRoot":"","sources":["../../src/cli/models.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ export interface AgentGuardTip {
2
+ id: string;
3
+ surface: string;
4
+ severity: 'info' | 'warning';
5
+ text: string;
6
+ learn_more_url: string;
7
+ dismissible: boolean;
8
+ }
9
+ interface TipsState {
10
+ seen?: string[];
11
+ }
12
+ export declare const TIPS: AgentGuardTip[];
13
+ export declare function tipsStatePath(): string;
14
+ export declare function readTipsState(filePath?: string): TipsState;
15
+ export declare function writeTipsState(state: TipsState, filePath?: string): void;
16
+ export declare function unseenTips(state?: TipsState): AgentGuardTip[];
17
+ export declare function markTipsSeen(ids: string[], filePath?: string): void;
18
+ export declare function maybeShowStartupTips(force?: boolean): void;
19
+ export declare function runTips(argv: string[]): Promise<number>;
20
+ export {};
21
+ //# sourceMappingURL=tips.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tips.d.ts","sourceRoot":"","sources":["../../src/cli/tips.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,UAAU,SAAS;IACjB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,eAAO,MAAM,IAAI,EAAE,aAAa,EAyE/B,CAAC;AAEF,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED,wBAAgB,aAAa,CAAC,QAAQ,GAAE,MAAwB,GAAG,SAAS,CAO3E;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,GAAE,MAAwB,GAAG,IAAI,CAIzF;AAED,wBAAgB,UAAU,CAAC,KAAK,GAAE,SAA2B,GAAG,aAAa,EAAE,CAG9E;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,QAAQ,GAAE,MAAwB,GAAG,IAAI,CAGpF;AAED,wBAAgB,oBAAoB,CAAC,KAAK,UAAQ,GAAG,IAAI,CASxD;AAED,wBAAsB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CA2B7D"}
@@ -0,0 +1,191 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.TIPS = void 0;
37
+ exports.tipsStatePath = tipsStatePath;
38
+ exports.readTipsState = readTipsState;
39
+ exports.writeTipsState = writeTipsState;
40
+ exports.unseenTips = unseenTips;
41
+ exports.markTipsSeen = markTipsSeen;
42
+ exports.maybeShowStartupTips = maybeShowStartupTips;
43
+ exports.runTips = runTips;
44
+ const fs = __importStar(require("fs"));
45
+ const path = __importStar(require("path"));
46
+ const index_1 = require("../index");
47
+ const colors_1 = require("./colors");
48
+ exports.TIPS = [
49
+ {
50
+ id: 'cheap-read-only',
51
+ surface: 'models',
52
+ severity: 'info',
53
+ text: "Use 'openai/gpt-4o-mini' for read-only tasks. It is far cheaper than gpt-5 with the same audit guarantees.",
54
+ learn_more_url: 'https://agentguard.run/docs/models',
55
+ dismissible: true,
56
+ },
57
+ {
58
+ id: 'openrouter-cfo',
59
+ surface: 'auth',
60
+ severity: 'info',
61
+ text: 'One OpenRouter key gives access to hundreds of models across many providers. Your CFO sees one invoice while AgentGuard enforces who uses what.',
62
+ learn_more_url: 'https://agentguard.run/docs/openrouter',
63
+ dismissible: true,
64
+ },
65
+ {
66
+ id: 'public-verify',
67
+ surface: 'verify',
68
+ severity: 'info',
69
+ text: 'Share https://agentguard.run/verify with your auditor. Paste any receipt and get browser-based cryptographic verification with no install.',
70
+ learn_more_url: 'https://agentguard.run/verify',
71
+ dismissible: true,
72
+ },
73
+ {
74
+ id: 'weekly-pricing',
75
+ surface: 'models',
76
+ severity: 'info',
77
+ text: "Run 'agentguard models --sync-pricing' weekly to keep cost math current with OpenRouter live prices.",
78
+ learn_more_url: 'https://agentguard.run/docs/pricing',
79
+ dismissible: true,
80
+ },
81
+ {
82
+ id: 'payment-attestation',
83
+ surface: 'wizard',
84
+ severity: 'warning',
85
+ text: "Capability tier 'payment_execute' should require a verified attestation. Do not accept caller-supplied claims for real money movement.",
86
+ learn_more_url: 'https://agentguard.run/docs/capabilities',
87
+ dismissible: true,
88
+ },
89
+ {
90
+ id: 'shadow-rollout',
91
+ surface: 'policy',
92
+ severity: 'info',
93
+ text: "Use mode 'shadow' for the first day of a rollout. You get signed decisions before enforcement changes traffic.",
94
+ learn_more_url: 'https://agentguard.run/docs/policies',
95
+ dismissible: true,
96
+ },
97
+ {
98
+ id: 'verify-chain',
99
+ surface: 'verify',
100
+ severity: 'info',
101
+ text: "Run 'agentguard verify <log.jsonl> <pubkey>' before sharing an audit packet. Whole-chain verification catches missing entries.",
102
+ learn_more_url: 'https://agentguard.run/docs/verify',
103
+ dismissible: true,
104
+ },
105
+ {
106
+ id: 'local-overrides',
107
+ surface: 'models',
108
+ severity: 'info',
109
+ text: 'Negotiated rates belong in ~/.agentguard/cost-overrides.json. Keep pricing math local with the rest of the policy state.',
110
+ learn_more_url: 'https://agentguard.run/docs/pricing',
111
+ dismissible: true,
112
+ },
113
+ {
114
+ id: 'bedrock-routing',
115
+ surface: 'bindings',
116
+ severity: 'info',
117
+ text: 'Use the native Bedrock binding when AWS procurement requires direct provider calls. AgentGuard still signs every local decision.',
118
+ learn_more_url: 'https://agentguard.run/docs/bedrock',
119
+ dismissible: true,
120
+ },
121
+ ];
122
+ function tipsStatePath() {
123
+ return path.join((0, colors_1.agentguardHome)(), 'tips-seen.json');
124
+ }
125
+ function readTipsState(filePath = tipsStatePath()) {
126
+ try {
127
+ const parsed = JSON.parse(fs.readFileSync(filePath, 'utf8'));
128
+ return Array.isArray(parsed.seen) ? parsed : { seen: [] };
129
+ }
130
+ catch {
131
+ return { seen: [] };
132
+ }
133
+ }
134
+ function writeTipsState(state, filePath = tipsStatePath()) {
135
+ fs.mkdirSync(path.dirname(filePath), { recursive: true });
136
+ fs.writeFileSync(filePath, JSON.stringify({ seen: [...new Set(state.seen ?? [])] }, null, 2) + '\n', { mode: 0o600 });
137
+ try {
138
+ fs.chmodSync(filePath, 0o600);
139
+ }
140
+ catch {
141
+ return;
142
+ }
143
+ }
144
+ function unseenTips(state = readTipsState()) {
145
+ const seen = new Set(state.seen ?? []);
146
+ return exports.TIPS.filter((tip) => !seen.has(tip.id));
147
+ }
148
+ function markTipsSeen(ids, filePath = tipsStatePath()) {
149
+ const state = readTipsState(filePath);
150
+ writeTipsState({ seen: [...new Set([...(state.seen ?? []), ...ids])] }, filePath);
151
+ }
152
+ function maybeShowStartupTips(force = false) {
153
+ const state = readTipsState();
154
+ const startupIds = ['startup-wizard', 'startup-verify'];
155
+ const seen = new Set(state.seen ?? []);
156
+ if (!force && startupIds.every((id) => seen.has(id)))
157
+ return;
158
+ console.log('');
159
+ console.log(' ' + (0, colors_1.green)("Tip: try 'agentguard wizard' to set up in 90 seconds."));
160
+ console.log(' ' + (0, colors_1.green)('Tip: share https://agentguard.run/verify with your auditor.'));
161
+ markTipsSeen(startupIds);
162
+ }
163
+ async function runTips(argv) {
164
+ if (argv.includes('--help') || argv.includes('-h')) {
165
+ console.log('agentguard tips [--reset] [--json]');
166
+ return 0;
167
+ }
168
+ if (argv.includes('--reset')) {
169
+ writeTipsState({ seen: [] });
170
+ console.log('AgentGuard tips reset.');
171
+ return 0;
172
+ }
173
+ if (argv.includes('--json')) {
174
+ console.log(JSON.stringify(exports.TIPS, null, 2));
175
+ return 0;
176
+ }
177
+ console.log('');
178
+ console.log(' ' + (0, colors_1.banner)(index_1.AGENTGUARD_SPEND_VERSION));
179
+ console.log('');
180
+ for (const tip of exports.TIPS) {
181
+ const label = tip.severity === 'warning' ? 'warning' : 'tip';
182
+ console.log(` ${(0, colors_1.green)(label)} ${tip.text}`);
183
+ console.log(` ${(0, colors_1.dim)(tip.learn_more_url)}`);
184
+ }
185
+ console.log('');
186
+ console.log(' ' + (0, colors_1.statusBar)());
187
+ console.log('');
188
+ markTipsSeen(exports.TIPS.filter((tip) => tip.dismissible).map((tip) => tip.id));
189
+ return 0;
190
+ }
191
+ //# sourceMappingURL=tips.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tips.js","sourceRoot":"","sources":["../../src/cli/tips.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ export interface WizardAnswers {
2
+ building: string;
3
+ template: string;
4
+ capability: string;
5
+ allowedModels: string[];
6
+ fallbackModel: string;
7
+ perCallCents: number;
8
+ perDayCents: number;
9
+ perMonthCents: number;
10
+ systemInstructions: string;
11
+ }
12
+ export declare class WizardStateMachine {
13
+ step: number;
14
+ readonly totalSteps = 7;
15
+ next(answer: string): boolean;
16
+ back(): void;
17
+ validate(step: number, answer: string): boolean;
18
+ }
19
+ export declare function runWizard(argv: string[]): Promise<number>;
20
+ export declare function defaultAnswers(templateSlug?: string): WizardAnswers;
21
+ export declare function writeWizardOutputs(answers: WizardAnswers, home?: string): {
22
+ policyPath: string;
23
+ quickstartTsPath: string;
24
+ quickstartPyPath: string;
25
+ snippet: string;
26
+ };
27
+ //# sourceMappingURL=wizard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wizard.d.ts","sourceRoot":"","sources":["../../src/cli/wizard.ts"],"names":[],"mappings":"AAeA,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAED,qBAAa,kBAAkB;IAC7B,IAAI,SAAK;IACT,QAAQ,CAAC,UAAU,KAAK;IAExB,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAM7B,IAAI,IAAI,IAAI;IAIZ,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO;CAShD;AAED,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAuB/D;AAED,wBAAgB,cAAc,CAAC,YAAY,SAAgB,GAAG,aAAa,CAe1E;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,aAAa,EAAE,IAAI,SAAmB,GAAG;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,gBAAgB,EAAE,MAAM,CAAC;IAAC,gBAAgB,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAY/K"}
@@ -0,0 +1,182 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.WizardStateMachine = void 0;
37
+ exports.runWizard = runWizard;
38
+ exports.defaultAnswers = defaultAnswers;
39
+ exports.writeWizardOutputs = writeWizardOutputs;
40
+ const fs = __importStar(require("fs"));
41
+ const path = __importStar(require("path"));
42
+ const readline = __importStar(require("readline"));
43
+ const index_1 = require("../index");
44
+ const templates_1 = require("../templates");
45
+ const colors_1 = require("./colors");
46
+ const BUILD_TYPES = ['chatbot', 'agent', 'batch job', 'API endpoint'];
47
+ const CAPABILITY_TIERS = [
48
+ ['read_only', 'Read records and produce findings'],
49
+ ['data_write', 'Write allowed fields after policy checks'],
50
+ ['payment_initiate', 'Create or recommend payment intents'],
51
+ ['payment_execute', 'Execute money movement only with verified attestation'],
52
+ ];
53
+ class WizardStateMachine {
54
+ step = 0;
55
+ totalSteps = 7;
56
+ next(answer) {
57
+ if (!this.validate(this.step, answer))
58
+ return false;
59
+ this.step = Math.min(this.step + 1, this.totalSteps - 1);
60
+ return true;
61
+ }
62
+ back() {
63
+ this.step = Math.max(0, this.step - 1);
64
+ }
65
+ validate(step, answer) {
66
+ if (step === 0)
67
+ return BUILD_TYPES.includes(answer);
68
+ if (step === 1)
69
+ return Boolean(templates_1.TASK_TEMPLATES[answer]);
70
+ if (step === 2)
71
+ return CAPABILITY_TIERS.some(([tier]) => tier === answer);
72
+ if (step === 3)
73
+ return answer.split(',').map((item) => item.trim()).filter(Boolean).length > 0;
74
+ if (step === 4)
75
+ return answer.trim().length > 0;
76
+ if (step === 5)
77
+ return answer.split(',').every((item) => Number.isSafeInteger(Number(item.trim())) && Number(item.trim()) >= 0);
78
+ return true;
79
+ }
80
+ }
81
+ exports.WizardStateMachine = WizardStateMachine;
82
+ async function runWizard(argv) {
83
+ if (argv.includes('--help') || argv.includes('-h')) {
84
+ console.log('agentguard wizard [--defaults] [--template <name>]');
85
+ return 0;
86
+ }
87
+ const templateSlug = valueAfter(argv, '--template') ?? 'risk-review';
88
+ const useDefaults = argv.includes('--defaults') || !process.stdin.isTTY;
89
+ const answers = useDefaults ? defaultAnswers(templateSlug) : await promptAnswers(templateSlug);
90
+ const outputs = writeWizardOutputs(answers);
91
+ console.log('');
92
+ console.log(' ' + (0, colors_1.banner)(index_1.AGENTGUARD_SPEND_VERSION));
93
+ console.log('');
94
+ console.log(` ${(0, colors_1.green)('created')} ${outputs.policyPath}`);
95
+ console.log(` ${(0, colors_1.green)('created')} ${outputs.quickstartTsPath}`);
96
+ console.log(` ${(0, colors_1.green)('created')} ${outputs.quickstartPyPath}`);
97
+ console.log('');
98
+ console.log((0, colors_1.cyanBold)('Quickstart snippet'));
99
+ console.log('');
100
+ console.log(outputs.snippet);
101
+ console.log('');
102
+ console.log(' ' + (0, colors_1.statusBar)());
103
+ console.log('');
104
+ return 0;
105
+ }
106
+ function defaultAnswers(templateSlug = 'risk-review') {
107
+ const template = (0, templates_1.getTaskTemplate)(templateSlug) ?? (0, templates_1.getTaskTemplate)('risk-review');
108
+ const perCall = template.caps.find((cap) => cap.window === 'per_call')?.amountCents ?? 100;
109
+ const perDay = template.caps.find((cap) => cap.window === 'per_day')?.amountCents ?? 2500;
110
+ return {
111
+ building: 'agent',
112
+ template: template.slug,
113
+ capability: template.requiredCapability,
114
+ allowedModels: [...template.allowedModels],
115
+ fallbackModel: template.fallbackModel,
116
+ perCallCents: perCall,
117
+ perDayCents: perDay,
118
+ perMonthCents: perDay * 20,
119
+ systemInstructions: template.systemInstructions,
120
+ };
121
+ }
122
+ function writeWizardOutputs(answers, home = (0, colors_1.agentguardHome)()) {
123
+ fs.mkdirSync(home, { recursive: true });
124
+ const policyPath = path.join(home, 'policy.yaml');
125
+ const quickstartTsPath = path.join(home, 'quickstart.ts');
126
+ const quickstartPyPath = path.join(home, 'quickstart.py');
127
+ const policy = policyYaml(answers);
128
+ const ts = quickstartTs(answers);
129
+ const py = quickstartPy(answers);
130
+ fs.writeFileSync(policyPath, policy);
131
+ fs.writeFileSync(quickstartTsPath, ts);
132
+ fs.writeFileSync(quickstartPyPath, py);
133
+ return { policyPath, quickstartTsPath, quickstartPyPath, snippet: tsSnippet(answers) };
134
+ }
135
+ async function promptAnswers(templateSlug) {
136
+ const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
137
+ const ask = (question, fallback) => new Promise((resolve) => {
138
+ rl.question(`${question} (${fallback}): `, (answer) => resolve(answer.trim() || fallback));
139
+ });
140
+ try {
141
+ const seed = defaultAnswers(templateSlug);
142
+ console.log('');
143
+ console.log(' ' + (0, colors_1.banner)(index_1.AGENTGUARD_SPEND_VERSION));
144
+ console.log('');
145
+ const building = await ask(`What are you building? ${BUILD_TYPES.join(', ')}`, seed.building);
146
+ const template = await ask(`Pick a task template: ${(0, templates_1.listTaskTemplates)().map((item) => item.slug).join(', ')}`, seed.template);
147
+ const capability = await ask(`Capability tier: ${CAPABILITY_TIERS.map(([tier, label]) => tier + ' (' + label + ')').join(', ')}`, seed.capability);
148
+ const templateDef = (0, templates_1.getTaskTemplate)(template) ?? (0, templates_1.getTaskTemplate)(seed.template);
149
+ const allowedModels = (await ask('Allowed models, comma separated', templateDef.allowedModels.join(','))).split(',').map((item) => item.trim()).filter(Boolean);
150
+ const fallbackModel = await ask('Fallback on downgrade', templateDef.fallbackModel);
151
+ const caps = await ask('Caps in cents: per-call, per-day, per-month', `${seed.perCallCents},${seed.perDayCents},${seed.perMonthCents}`);
152
+ const [perCallCents, perDayCents, perMonthCents] = caps.split(',').map((item) => Number(item.trim()));
153
+ const systemInstructions = await ask('System instructions', templateDef.systemInstructions);
154
+ return { building, template, capability, allowedModels, fallbackModel, perCallCents, perDayCents, perMonthCents, systemInstructions };
155
+ }
156
+ finally {
157
+ rl.close();
158
+ }
159
+ }
160
+ function policyYaml(answers) {
161
+ const id = `agentguard-${answers.template}-v1`;
162
+ const allowed = answers.allowedModels.map((model) => ` - ${model}`).join('\n');
163
+ return `# AgentGuard Spend policy generated by agentguard wizard\nid: ${id}\nname: ${answers.template} policy\nversion: 1\neffectiveFrom: "${new Date().toISOString()}"\nmode: enforce\nrequiredCapability: ${answers.capability}\nscope:\n tenantId: my-tenant\nmodels:\n allowed:\n${allowed}\n fallback: ${answers.fallbackModel}\ncaps:\n # WHY: Per-call cap bounds one agent action.\n - amountCents: ${answers.perCallCents}\n window: per_call\n action: downgrade\n downgradeTo: ${answers.fallbackModel}\n reason: "Per-call budget reached, routing to fallback model"\n # WHY: Daily cap catches runaway loops and unexpected volume.\n - amountCents: ${answers.perDayCents}\n window: per_day\n action: block\n reason: "Daily budget reached"\n # WHY: Monthly cap keeps the finance view predictable.\n - amountCents: ${answers.perMonthCents}\n window: per_month\n action: block\n reason: "Monthly budget reached"\nsystemInstructions: |\n${indent(answers.systemInstructions, 2)}\n`;
164
+ }
165
+ function quickstartTs(answers) {
166
+ return `import OpenAI from 'openai';\nimport { withSpendGuard, type SpendPolicy } from '@agentguard-run/spend';\n\nconst policy: SpendPolicy = {\n id: 'agentguard-${answers.template}-v1',\n name: '${answers.template} policy',\n scope: { tenantId: 'my-tenant' },\n caps: [\n { amountCents: ${answers.perCallCents}, window: 'per_call', action: 'downgrade', downgradeTo: '${answers.fallbackModel}' },\n { amountCents: ${answers.perDayCents}, window: 'per_day', action: 'block' },\n { amountCents: ${answers.perMonthCents}, window: 'per_month', action: 'block' },\n ],\n mode: 'enforce',\n requiredCapability: '${answers.capability}',\n version: 1,\n effectiveFrom: new Date().toISOString(),\n};\n\nconst openrouter = new OpenAI({\n baseURL: 'https://openrouter.ai/api/v1',\n apiKey: process.env.OPENROUTER_API_KEY,\n});\n\nexport const guardedClient = withSpendGuard(openrouter, {\n policy,\n scope: { tenantId: 'my-tenant', agentId: '${answers.template}' },\n capabilityClaim: '${answers.capability}',\n});\n`;
167
+ }
168
+ function quickstartPy(answers) {
169
+ return `from openai import OpenAI\nfrom agentguard_spend import with_spend_guard\nfrom agentguard_spend.types import SpendPolicy, SpendCap\n\npolicy = SpendPolicy(\n id='agentguard-${answers.template}-v1', name='${answers.template} policy',\n scope={'tenantId': 'my-tenant'},\n caps=[\n SpendCap(amountCents=${answers.perCallCents}, window='per_call', action='downgrade', downgradeTo='${answers.fallbackModel}'),\n SpendCap(amountCents=${answers.perDayCents}, window='per_day', action='block'),\n SpendCap(amountCents=${answers.perMonthCents}, window='per_month', action='block'),\n ],\n mode='enforce', requiredCapability='${answers.capability}',\n version=1, effectiveFrom='2026-05-27T00:00:00Z',\n)\n\nopenrouter = OpenAI(base_url='https://openrouter.ai/api/v1')\nguarded_client = with_spend_guard(openrouter, policy=policy, scope={'tenantId': 'my-tenant', 'agentId': '${answers.template}'}, capability_claim='${answers.capability}')\n`;
170
+ }
171
+ function tsSnippet(answers) {
172
+ return `const response = await guardedClient.chat.completions.create({\n model: '${answers.allowedModels[0] ?? 'openai/gpt-4o-mini'}',\n messages: [{ role: 'user', content: 'Run the governed task.' }],\n});`;
173
+ }
174
+ function indent(value, spaces) {
175
+ const prefix = ' '.repeat(spaces);
176
+ return value.split('\n').map((line) => prefix + line).join('\n');
177
+ }
178
+ function valueAfter(argv, flag) {
179
+ const index = argv.indexOf(flag);
180
+ return index >= 0 ? argv[index + 1] : undefined;
181
+ }
182
+ //# sourceMappingURL=wizard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wizard.js","sourceRoot":"","sources":["../../src/cli/wizard.ts"],"names":[],"mappings":"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"}
@@ -1,53 +1,28 @@
1
1
  /**
2
- * AgentGuard(TM) Spend: Per-model cost table
2
+ * AgentGuard(TM) Spend: Per-model cost table.
3
3
  *
4
- * Costs are USD cents per 1,000 tokens (integer math).
5
- * Values reflect publicly-listed pricing as of May 2026 and are intentionally
6
- * conservative (rounded UP) so spend caps fire early rather than late.
4
+ * Costs are USD cents per 1,000 tokens. Customers can override this table
5
+ * locally via setCostOverride() or ~/.agentguard/cost-overrides.json.
7
6
  *
8
- * Customers can override this table via setCostOverride() when enterprise
9
- * contracts have negotiated rates that differ from public list pricing.
10
- *
11
- * Licensed under the alpha evaluation license; see LICENSE in the package
12
- * root. Patent notice: Protected by U.S. patent-pending technology
7
+ * Patent notice: Protected by U.S. patent-pending technology
13
8
  * (App. Nos. 63/983,615; 63/983,621; 63/983,843; 63/984,626;
14
9
  * 64/071,781; 64/071,789).
15
10
  */
16
11
  import type { Provider } from './types';
17
12
  export interface ModelCost {
18
- /** Cents per 1,000 input tokens */
13
+ /** Cents per 1,000 input tokens. */
19
14
  inputCentsPerKtok: number;
20
- /** Cents per 1,000 output tokens */
15
+ /** Cents per 1,000 output tokens. */
21
16
  outputCentsPerKtok: number;
22
17
  }
23
- /**
24
- * Override the cost for a specific model. Used when the customer has negotiated
25
- * enterprise rates that differ from list pricing.
26
- */
18
+ export declare const DEFAULT_COST_OVERRIDES_PATH: string;
27
19
  export declare function setCostOverride(model: string, cost: ModelCost): void;
28
- /**
29
- * Clear all cost overrides. Mainly for testing.
30
- */
31
20
  export declare function clearCostOverrides(): void;
32
- /**
33
- * Look up the cost for a model. Returns null if the model is unknown AND no
34
- * override has been registered. Callers should treat unknown models defensively
35
- * (e.g., by registering an override or by rejecting the call).
36
- */
21
+ export declare function listCostOverrides(): Record<string, ModelCost>;
22
+ export declare function persistCostOverrides(filePath?: string): void;
23
+ export declare function loadPersistedCostOverrides(filePath?: string): number;
37
24
  export declare function getModelCost(model: string): ModelCost | null;
38
- /**
39
- * Compute the cents this call would cost given input + output token counts.
40
- * Returns null if the model is unknown (caller must decide how to handle).
41
- *
42
- * Formula: cents = ceil( (cents_per_ktok * tokens) / 1000 )
43
- *
44
- * Rounds UP so caps fire conservatively (a call that would cost 19.4c
45
- * counts as 20c against the budget).
46
- */
47
25
  export declare function computeCallCents(model: string, inputTokens: number, outputTokens: number): number | null;
48
- /**
49
- * Infer the Provider enum from a model name. Used when callers do not pass
50
- * provider explicitly. Returns 'unknown' if no pattern matches.
51
- */
52
26
  export declare function inferProvider(model: string): Provider;
27
+ export declare function knownModelCosts(): Record<string, ModelCost>;
53
28
  //# sourceMappingURL=cost-table.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cost-table.d.ts","sourceRoot":"","sources":["../src/cost-table.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAExC,MAAM,WAAW,SAAS;IACxB,mCAAmC;IACnC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,oCAAoC;IACpC,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAmCD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,GAAG,IAAI,CAGpE;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,IAAI,CAEzC;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAG5D;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,GACnB,MAAM,GAAG,IAAI,CAcf;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ,CAOrD"}
1
+ {"version":3,"file":"cost-table.d.ts","sourceRoot":"","sources":["../src/cost-table.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAKH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAExC,MAAM,WAAW,SAAS;IACxB,oCAAoC;IACpC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,qCAAqC;IACrC,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAGD,eAAO,MAAM,2BAA2B,QAA8C,CAAC;AAkDvF,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,GAAG,IAAI,CAGpE;AAED,wBAAgB,kBAAkB,IAAI,IAAI,CAEzC;AAED,wBAAgB,iBAAiB,IAAI,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAG7D;AAED,wBAAgB,oBAAoB,CAAC,QAAQ,GAAE,MAAoC,GAAG,IAAI,CAIzF;AAED,wBAAgB,0BAA0B,CAAC,QAAQ,GAAE,MAAoC,GAAG,MAAM,CAejG;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAI5D;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAaxG;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ,CAWrD;AAED,wBAAgB,eAAe,IAAI,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAE3D"}