@agentguard-run/spend 0.2.2 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (115) hide show
  1. package/CHANGELOG.md +14 -1
  2. package/LICENSE +1 -1
  3. package/README.es-419.md +37 -100
  4. package/README.md +58 -121
  5. package/README.pt-BR.md +37 -100
  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/coach.d.ts +5 -0
  19. package/dist/cli/coach.d.ts.map +1 -0
  20. package/dist/cli/coach.js +257 -0
  21. package/dist/cli/coach.js.map +1 -0
  22. package/dist/cli/colors.d.ts +8 -3
  23. package/dist/cli/colors.d.ts.map +1 -1
  24. package/dist/cli/colors.js +93 -4
  25. package/dist/cli/colors.js.map +1 -1
  26. package/dist/cli/demo.d.ts.map +1 -1
  27. package/dist/cli/demo.js +23 -2
  28. package/dist/cli/demo.js.map +1 -1
  29. package/dist/cli/main.d.ts +0 -6
  30. package/dist/cli/main.d.ts.map +1 -1
  31. package/dist/cli/main.js +42 -16
  32. package/dist/cli/main.js.map +1 -1
  33. package/dist/cli/models.d.ts +18 -0
  34. package/dist/cli/models.d.ts.map +1 -0
  35. package/dist/cli/models.js +277 -0
  36. package/dist/cli/models.js.map +1 -0
  37. package/dist/cli/tips.d.ts +21 -0
  38. package/dist/cli/tips.d.ts.map +1 -0
  39. package/dist/cli/tips.js +191 -0
  40. package/dist/cli/tips.js.map +1 -0
  41. package/dist/cli/wizard.d.ts +27 -0
  42. package/dist/cli/wizard.d.ts.map +1 -0
  43. package/dist/cli/wizard.js +182 -0
  44. package/dist/cli/wizard.js.map +1 -0
  45. package/dist/coach/anomaly.d.ts +26 -0
  46. package/dist/coach/anomaly.d.ts.map +1 -0
  47. package/dist/coach/anomaly.js +119 -0
  48. package/dist/coach/anomaly.js.map +1 -0
  49. package/dist/coach/conversation.d.ts +69 -0
  50. package/dist/coach/conversation.d.ts.map +1 -0
  51. package/dist/coach/conversation.js +228 -0
  52. package/dist/coach/conversation.js.map +1 -0
  53. package/dist/coach/forecast.d.ts +19 -0
  54. package/dist/coach/forecast.d.ts.map +1 -0
  55. package/dist/coach/forecast.js +57 -0
  56. package/dist/coach/forecast.js.map +1 -0
  57. package/dist/coach/llm-client.d.ts +41 -0
  58. package/dist/coach/llm-client.d.ts.map +1 -0
  59. package/dist/coach/llm-client.js +248 -0
  60. package/dist/coach/llm-client.js.map +1 -0
  61. package/dist/coach/output.d.ts +41 -0
  62. package/dist/coach/output.d.ts.map +1 -0
  63. package/dist/coach/output.js +173 -0
  64. package/dist/coach/output.js.map +1 -0
  65. package/dist/coach/system-prompt.d.ts +20 -0
  66. package/dist/coach/system-prompt.d.ts.map +1 -0
  67. package/dist/coach/system-prompt.js +177 -0
  68. package/dist/coach/system-prompt.js.map +1 -0
  69. package/dist/cost-table.d.ts +11 -36
  70. package/dist/cost-table.d.ts.map +1 -1
  71. package/dist/cost-table.js +114 -45
  72. package/dist/cost-table.js.map +1 -1
  73. package/dist/index.d.ts +9 -3
  74. package/dist/index.d.ts.map +1 -1
  75. package/dist/index.js +30 -2
  76. package/dist/index.js.map +1 -1
  77. package/dist/openrouter-catalog.d.ts +56 -0
  78. package/dist/openrouter-catalog.d.ts.map +1 -0
  79. package/dist/openrouter-catalog.js +183 -0
  80. package/dist/openrouter-catalog.js.map +1 -0
  81. package/dist/spend-guard.d.ts +38 -55
  82. package/dist/spend-guard.d.ts.map +1 -1
  83. package/dist/spend-guard.js +268 -83
  84. package/dist/spend-guard.js.map +1 -1
  85. package/dist/telemetry.d.ts.map +1 -1
  86. package/dist/telemetry.js +52 -21
  87. package/dist/telemetry.js.map +1 -1
  88. package/dist/templates/index.d.ts +17 -0
  89. package/dist/templates/index.d.ts.map +1 -0
  90. package/dist/templates/index.js +100 -0
  91. package/dist/templates/index.js.map +1 -0
  92. package/dist/types.d.ts +18 -3
  93. package/dist/types.d.ts.map +1 -1
  94. package/package.json +39 -4
  95. package/src/bindings/anthropic.ts +142 -0
  96. package/src/bindings/bedrock.ts +200 -0
  97. package/src/cli/auth.ts +145 -0
  98. package/src/cli/coach.ts +249 -0
  99. package/src/cli/models.ts +236 -0
  100. package/src/cli/tips.ts +161 -0
  101. package/src/cli/wizard.ts +160 -0
  102. package/src/coach/anomaly.ts +98 -0
  103. package/src/coach/conversation.ts +248 -0
  104. package/src/coach/forecast.ts +64 -0
  105. package/src/coach/llm-client.ts +247 -0
  106. package/src/coach/output.ts +172 -0
  107. package/src/coach/system-prompt.ts +181 -0
  108. package/src/openrouter-catalog.ts +180 -0
  109. package/src/templates/agent-support.yaml +30 -0
  110. package/src/templates/chargeback-evidence.yaml +30 -0
  111. package/src/templates/code-scan.yaml +30 -0
  112. package/src/templates/index.ts +109 -0
  113. package/src/templates/payment-approval.yaml +30 -0
  114. package/src/templates/risk-review.yaml +30 -0
  115. package/tests/fixtures/openrouter-catalog.json +1 -0
@@ -0,0 +1,18 @@
1
+ import { type OpenRouterModel } from '../openrouter-catalog';
2
+ export interface ModelRow {
3
+ id: string;
4
+ name: string;
5
+ inputCentsPerMtok: number | null;
6
+ outputCentsPerMtok: number | null;
7
+ capability: string;
8
+ }
9
+ export declare function rowsFromCatalog(models: OpenRouterModel[]): ModelRow[];
10
+ export declare function rowsFromCostTable(): ModelRow[];
11
+ export declare function filterRows(rows: ModelRow[], opts: {
12
+ search?: string;
13
+ capability?: string;
14
+ task?: string;
15
+ }): ModelRow[];
16
+ export declare function suggestedAssignments(task: string): Record<string, string[]>;
17
+ export declare function runModels(argv: string[]): Promise<number>;
18
+ //# sourceMappingURL=models.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../src/cli/models.ts"],"names":[],"mappings":"AAIA,OAAO,EAA4D,KAAK,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAKvH,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,eAAe,EAAE,GAAG,QAAQ,EAAE,CAYrE;AAED,wBAAgB,iBAAiB,IAAI,QAAQ,EAAE,CAQ9C;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,QAAQ,EAAE,CAetH;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAQ3E;AAED,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CA0C/D"}
@@ -0,0 +1,277 @@
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.rowsFromCatalog = rowsFromCatalog;
37
+ exports.rowsFromCostTable = rowsFromCostTable;
38
+ exports.filterRows = filterRows;
39
+ exports.suggestedAssignments = suggestedAssignments;
40
+ exports.runModels = runModels;
41
+ const fs = __importStar(require("fs"));
42
+ const path = __importStar(require("path"));
43
+ const readline = __importStar(require("readline"));
44
+ const index_1 = require("../index");
45
+ const openrouter_catalog_1 = require("../openrouter-catalog");
46
+ const cost_table_1 = require("../cost-table");
47
+ const templates_1 = require("../templates");
48
+ const colors_1 = require("./colors");
49
+ function rowsFromCatalog(models) {
50
+ return models.map((model) => {
51
+ const input = Number(model.pricing?.prompt);
52
+ const output = Number(model.pricing?.completion);
53
+ return {
54
+ id: model.id,
55
+ name: model.name ?? model.id,
56
+ inputCentsPerMtok: Number.isFinite(input) ? input * 100 * 1_000_000 : null,
57
+ outputCentsPerMtok: Number.isFinite(output) ? output * 100 * 1_000_000 : null,
58
+ capability: capabilityForModel(model.id),
59
+ };
60
+ });
61
+ }
62
+ function rowsFromCostTable() {
63
+ return Object.entries((0, cost_table_1.knownModelCosts)()).map(([id, cost]) => ({
64
+ id,
65
+ name: id,
66
+ inputCentsPerMtok: cost.inputCentsPerKtok * 1000,
67
+ outputCentsPerMtok: cost.outputCentsPerKtok * 1000,
68
+ capability: capabilityForModel(id),
69
+ }));
70
+ }
71
+ function filterRows(rows, opts) {
72
+ let out = rows;
73
+ if (opts.task) {
74
+ const template = (0, templates_1.getTaskTemplate)(opts.task);
75
+ if (template) {
76
+ const allowed = new Set(template.allowedModels);
77
+ out = out.filter((row) => allowed.has(row.id) || row.capability === template.requiredCapability);
78
+ }
79
+ }
80
+ if (opts.capability)
81
+ out = out.filter((row) => row.capability === opts.capability);
82
+ if (opts.search) {
83
+ const needle = opts.search.toLowerCase();
84
+ out = out.filter((row) => row.id.toLowerCase().includes(needle) || row.name.toLowerCase().includes(needle));
85
+ }
86
+ return out.sort((a, b) => displayCost(a) - displayCost(b) || a.id.localeCompare(b.id));
87
+ }
88
+ function suggestedAssignments(task) {
89
+ const template = (0, templates_1.getTaskTemplate)(task);
90
+ if (!template)
91
+ return {};
92
+ return {
93
+ primary: [template.primaryModel],
94
+ fallback: [template.fallbackModel],
95
+ allowed: template.allowedModels,
96
+ };
97
+ }
98
+ async function runModels(argv) {
99
+ if (argv.includes('--help') || argv.includes('-h')) {
100
+ console.log('agentguard models [--sync-pricing] [--search <term>] [--capability <tier>] [--task <template>] [--json]');
101
+ return 0;
102
+ }
103
+ const sync = argv.includes('--sync-pricing');
104
+ const json = argv.includes('--json');
105
+ const search = argValue(argv, '--search');
106
+ const capability = argValue(argv, '--capability');
107
+ const task = argValue(argv, '--task');
108
+ if (sync) {
109
+ const result = await (0, openrouter_catalog_1.syncPricingIntoCostTable)({ force: true });
110
+ if (json) {
111
+ console.log(JSON.stringify(result, null, 2));
112
+ }
113
+ else {
114
+ console.log('');
115
+ console.log(' ' + (0, colors_1.banner)(index_1.AGENTGUARD_SPEND_VERSION));
116
+ console.log('');
117
+ console.log(` ${(0, colors_1.green)('applied')} ${result.count} OpenRouter pricing overrides`);
118
+ console.log(` ${(0, colors_1.dim)('saved')} ${(0, colors_1.agentguardHome)()}/cost-overrides.json`);
119
+ console.log('');
120
+ }
121
+ return 0;
122
+ }
123
+ const rows = await loadRows();
124
+ const filtered = filterRows(rows, { search, capability, task });
125
+ if (json) {
126
+ console.log(JSON.stringify({ models: filtered, assignments: task ? suggestedAssignments(task) : undefined }, null, 2));
127
+ return 0;
128
+ }
129
+ if (process.stdin.isTTY && !search && !capability && !task) {
130
+ const selected = await interactivePick(filtered);
131
+ if (selected.length > 0)
132
+ writeSelectedModels(selected);
133
+ return 0;
134
+ }
135
+ printRows(filtered, task);
136
+ return 0;
137
+ }
138
+ async function loadRows() {
139
+ const cached = (0, openrouter_catalog_1.getCachedCatalog)();
140
+ if (cached)
141
+ return rowsFromCatalog(cached.data);
142
+ try {
143
+ const catalog = await (0, openrouter_catalog_1.fetchCatalog)();
144
+ return rowsFromCatalog(catalog.data);
145
+ }
146
+ catch {
147
+ return rowsFromCostTable();
148
+ }
149
+ }
150
+ function printRows(rows, task) {
151
+ console.log('');
152
+ console.log(' ' + (0, colors_1.banner)(index_1.AGENTGUARD_SPEND_VERSION));
153
+ console.log('');
154
+ if (task && templates_1.TASK_TEMPLATES[task]) {
155
+ const assignment = suggestedAssignments(task);
156
+ console.log(' ' + (0, colors_1.cyanBold)(`task: ${task}`));
157
+ console.log(` primary: ${assignment.primary?.join(', ') ?? 'n/a'}`);
158
+ console.log(` fallback: ${assignment.fallback?.join(', ') ?? 'n/a'}`);
159
+ console.log('');
160
+ }
161
+ for (const row of rows.slice(0, 80)) {
162
+ console.log(` ${(0, colors_1.green)(row.id.padEnd(38))} ${formatCost(row).padEnd(22)} ${(0, colors_1.dim)(row.capability)}`);
163
+ }
164
+ if (rows.length > 80)
165
+ console.log(` ${(0, colors_1.yellow)(String(rows.length - 80) + ' more')} refine with agentguard models --search <term>`);
166
+ console.log('');
167
+ console.log(' ' + (0, colors_1.statusBar)());
168
+ console.log('');
169
+ }
170
+ async function interactivePick(rows) {
171
+ const selected = new Set();
172
+ let cursor = 0;
173
+ let filtered = rows.slice(0, 80);
174
+ let query = '';
175
+ readline.emitKeypressEvents(process.stdin);
176
+ if (process.stdin.isTTY)
177
+ process.stdin.setRawMode(true);
178
+ const render = () => {
179
+ process.stdout.write('\x1b[2J\x1b[H');
180
+ console.log((0, colors_1.banner)(index_1.AGENTGUARD_SPEND_VERSION));
181
+ console.log('');
182
+ console.log(`Search: ${query || (0, colors_1.dim)('press / to filter')} Selected: ${selected.size}`);
183
+ console.log('');
184
+ filtered.slice(0, 18).forEach((row, index) => {
185
+ const marker = selected.has(row.id) ? '[x]' : '[ ]';
186
+ const pointer = index === cursor ? '>' : ' ';
187
+ console.log(`${pointer} ${marker} ${row.id.padEnd(40)} ${formatCost(row).padEnd(20)} ${row.capability}`);
188
+ });
189
+ console.log('');
190
+ console.log((0, colors_1.dim)('[/] search [space] select [enter] confirm [q] quit'));
191
+ };
192
+ render();
193
+ return new Promise((resolve) => {
194
+ const onKey = (_chunk, key) => {
195
+ if (key.name === 'q' || (key.ctrl && key.name === 'c'))
196
+ finish([]);
197
+ else if (key.name === 'return')
198
+ finish([...selected]);
199
+ else if (key.name === 'down') {
200
+ cursor = Math.min(cursor + 1, Math.max(0, filtered.length - 1));
201
+ render();
202
+ }
203
+ else if (key.name === 'up') {
204
+ cursor = Math.max(cursor - 1, 0);
205
+ render();
206
+ }
207
+ else if (key.name === 'space') {
208
+ const row = filtered[cursor];
209
+ if (row)
210
+ selected.has(row.id) ? selected.delete(row.id) : selected.add(row.id);
211
+ render();
212
+ }
213
+ else if (key.name === 'backspace') {
214
+ query = query.slice(0, -1);
215
+ filtered = filterRows(rows, { search: query });
216
+ cursor = 0;
217
+ render();
218
+ }
219
+ else if (key.sequence && key.sequence.length === 1 && key.sequence !== '/') {
220
+ query += key.sequence;
221
+ filtered = filterRows(rows, { search: query });
222
+ cursor = 0;
223
+ render();
224
+ }
225
+ };
226
+ const finish = (value) => {
227
+ process.stdin.off('keypress', onKey);
228
+ if (process.stdin.isTTY)
229
+ process.stdin.setRawMode(false);
230
+ process.stdout.write('\n');
231
+ resolve(value);
232
+ };
233
+ process.stdin.on('keypress', onKey);
234
+ });
235
+ }
236
+ function writeSelectedModels(models) {
237
+ const filePath = path.join((0, colors_1.agentguardHome)(), 'policy.yaml');
238
+ fs.mkdirSync(path.dirname(filePath), { recursive: true });
239
+ let existing = '';
240
+ try {
241
+ existing = fs.readFileSync(filePath, 'utf8');
242
+ }
243
+ catch {
244
+ existing = defaultPolicy();
245
+ }
246
+ const block = ['allowedModels:', ...models.map((model) => ` - ${model}`)].join('\n') + '\n';
247
+ const next = existing.match(/^allowedModels:/m)
248
+ ? existing.replace(/^allowedModels:\n(?: - .*\n)*/m, block)
249
+ : existing.trimEnd() + '\n' + block;
250
+ fs.writeFileSync(filePath, next);
251
+ console.log(`${(0, colors_1.green)('saved')} ${filePath}`);
252
+ }
253
+ function defaultPolicy() {
254
+ return 'id: local-policy-v1\nname: Local AgentGuard policy\nversion: 1\neffectiveFrom: "' + new Date().toISOString() + '"\nmode: enforce\nscope:\n tenantId: local\ncaps:\n - amountCents: 100\n window: per_call\n action: allow\n';
255
+ }
256
+ function formatCost(row) {
257
+ if (row.inputCentsPerMtok === null || row.outputCentsPerMtok === null)
258
+ return '$n/a per 1M';
259
+ return `$${(row.inputCentsPerMtok / 100).toFixed(2)}/$${(row.outputCentsPerMtok / 100).toFixed(2)} per 1M`;
260
+ }
261
+ function displayCost(row) {
262
+ return row.inputCentsPerMtok ?? Number.MAX_SAFE_INTEGER;
263
+ }
264
+ function capabilityForModel(model) {
265
+ if (model.includes('gpt-5') || model.includes('opus') || model.includes('sonnet'))
266
+ return 'payment_initiate';
267
+ if (model.includes('mini') || model.includes('haiku') || model.includes('flash'))
268
+ return 'read_only';
269
+ if ((0, cost_table_1.getModelCost)(model))
270
+ return 'data_write';
271
+ return 'read_only';
272
+ }
273
+ function argValue(argv, flag) {
274
+ const index = argv.indexOf(flag);
275
+ return index >= 0 ? argv[index + 1] : undefined;
276
+ }
277
+ //# sourceMappingURL=models.js.map
@@ -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"}