@agentguard-run/spend 0.4.0 → 0.4.2
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 +8 -2
- package/README.es-419.md +21 -4
- package/README.md +24 -5
- package/README.pt-BR.md +21 -4
- package/dist/{coach → advisor}/anomaly.d.ts +5 -5
- package/dist/advisor/anomaly.d.ts.map +1 -0
- package/dist/{coach → advisor}/anomaly.js +1 -1
- package/dist/advisor/anomaly.js.map +1 -0
- package/dist/{coach → advisor}/conversation.d.ts +23 -17
- package/dist/advisor/conversation.d.ts.map +1 -0
- package/dist/{coach → advisor}/conversation.js +63 -27
- package/dist/advisor/conversation.js.map +1 -0
- package/dist/{coach → advisor}/forecast.d.ts +4 -4
- package/dist/advisor/forecast.d.ts.map +1 -0
- package/dist/{coach → advisor}/forecast.js +1 -1
- package/dist/advisor/forecast.js.map +1 -0
- package/dist/{coach → advisor}/llm-client.d.ts +10 -10
- package/dist/advisor/llm-client.d.ts.map +1 -0
- package/dist/{coach → advisor}/llm-client.js +12 -12
- package/dist/advisor/llm-client.js.map +1 -0
- package/dist/{coach → advisor}/output.d.ts +12 -12
- package/dist/advisor/output.d.ts.map +1 -0
- package/dist/{coach → advisor}/output.js +42 -13
- package/dist/advisor/output.js.map +1 -0
- package/dist/advisor/posture.d.ts +26 -0
- package/dist/advisor/posture.d.ts.map +1 -0
- package/dist/advisor/posture.js +100 -0
- package/dist/advisor/posture.js.map +1 -0
- package/dist/{coach → advisor}/system-prompt.d.ts +5 -5
- package/dist/advisor/system-prompt.d.ts.map +1 -0
- package/dist/{coach → advisor}/system-prompt.js +21 -8
- package/dist/advisor/system-prompt.js.map +1 -0
- package/dist/cli/advisor.d.ts +5 -0
- package/dist/cli/advisor.d.ts.map +1 -0
- package/dist/cli/{coach.js → advisor.js} +63 -47
- package/dist/cli/advisor.js.map +1 -0
- package/dist/cli/main.d.ts.map +1 -1
- package/dist/cli/main.js +7 -6
- package/dist/cli/main.js.map +1 -1
- package/dist/index.d.ts +4 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +11 -11
- package/dist/index.js.map +1 -1
- package/dist/telemetry.js +1 -1
- package/package.json +7 -7
- package/src/{coach → advisor}/anomaly.ts +9 -9
- package/src/{coach → advisor}/conversation.ts +80 -39
- package/src/{coach → advisor}/forecast.ts +5 -5
- package/src/{coach → advisor}/llm-client.ts +21 -21
- package/src/{coach → advisor}/output.ts +49 -20
- package/src/advisor/posture.ts +112 -0
- package/src/{coach → advisor}/system-prompt.ts +22 -8
- package/src/cli/{coach.ts → advisor.ts} +74 -58
- package/dist/cli/coach.d.ts +0 -5
- package/dist/cli/coach.d.ts.map +0 -1
- package/dist/cli/coach.js.map +0 -1
- package/dist/coach/anomaly.d.ts.map +0 -1
- package/dist/coach/anomaly.js.map +0 -1
- package/dist/coach/conversation.d.ts.map +0 -1
- package/dist/coach/conversation.js.map +0 -1
- package/dist/coach/forecast.d.ts.map +0 -1
- package/dist/coach/forecast.js.map +0 -1
- package/dist/coach/llm-client.d.ts.map +0 -1
- package/dist/coach/llm-client.js.map +0 -1
- package/dist/coach/output.d.ts.map +0 -1
- package/dist/coach/output.js.map +0 -1
- package/dist/coach/system-prompt.d.ts.map +0 -1
- package/dist/coach/system-prompt.js.map +0 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/**
|
|
3
|
-
* `agentguard
|
|
3
|
+
* `agentguard advisor`: local LLM-driven policy setup.
|
|
4
4
|
*/
|
|
5
5
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
6
6
|
if (k2 === undefined) k2 = k;
|
|
@@ -36,66 +36,72 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
36
36
|
};
|
|
37
37
|
})();
|
|
38
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
-
exports.
|
|
39
|
+
exports.runAdvisor = runAdvisor;
|
|
40
40
|
const readline = __importStar(require("readline"));
|
|
41
41
|
const index_1 = require("../index");
|
|
42
|
-
const conversation_1 = require("../
|
|
43
|
-
const
|
|
44
|
-
const
|
|
45
|
-
const
|
|
46
|
-
const
|
|
47
|
-
const
|
|
42
|
+
const conversation_1 = require("../advisor/conversation");
|
|
43
|
+
const posture_1 = require("../advisor/posture");
|
|
44
|
+
const forecast_1 = require("../advisor/forecast");
|
|
45
|
+
const llm_client_1 = require("../advisor/llm-client");
|
|
46
|
+
const anomaly_1 = require("../advisor/anomaly");
|
|
47
|
+
const system_prompt_1 = require("../advisor/system-prompt");
|
|
48
|
+
const output_1 = require("../advisor/output");
|
|
48
49
|
const colors_1 = require("./colors");
|
|
49
|
-
const HELP = `agentguard
|
|
50
|
+
const HELP = `agentguard advisor: local LLM-driven policy setup
|
|
50
51
|
|
|
51
52
|
usage:
|
|
52
|
-
agentguard
|
|
53
|
-
agentguard
|
|
54
|
-
agentguard
|
|
53
|
+
agentguard advisor [--provider openrouter|openai|anthropic|compatible] [--base-url <url>] [--model <model>] [--posture velocity|standard|compliance|custom]
|
|
54
|
+
agentguard advisor review [--scope <name>]
|
|
55
|
+
agentguard advisor forecast [--scope <name>] [--cap-cents <cents>]
|
|
55
56
|
|
|
56
57
|
examples:
|
|
57
58
|
agentguard auth openrouter
|
|
58
|
-
agentguard
|
|
59
|
-
agentguard
|
|
60
|
-
agentguard
|
|
59
|
+
agentguard advisor
|
|
60
|
+
agentguard advisor --posture velocity --provider mock --defaults
|
|
61
|
+
agentguard advisor --base-url https://api.deepseek.com/v1 --model deepseek-chat
|
|
62
|
+
agentguard advisor review
|
|
61
63
|
`;
|
|
62
|
-
async function
|
|
64
|
+
async function runAdvisor(argv) {
|
|
63
65
|
if (argv.includes('--help') || argv.includes('-h')) {
|
|
64
66
|
console.log(HELP);
|
|
65
67
|
return 0;
|
|
66
68
|
}
|
|
67
69
|
if (argv[0] === 'review')
|
|
68
|
-
return
|
|
70
|
+
return runAdvisorReview(argv.slice(1));
|
|
69
71
|
if (argv[0] === 'forecast')
|
|
70
|
-
return
|
|
72
|
+
return runAdvisorForecast(argv.slice(1));
|
|
71
73
|
const options = parseOptions(argv);
|
|
72
|
-
|
|
74
|
+
if (options.posture === 'custom') {
|
|
75
|
+
console.log('Solo tier required for custom governance posture. Choose velocity, standard, or compliance in this release.');
|
|
76
|
+
return 0;
|
|
77
|
+
}
|
|
78
|
+
const apiKey = (0, llm_client_1.resolveAdvisorApiKey)(options.provider);
|
|
73
79
|
if (options.provider !== 'mock' && !apiKey) {
|
|
74
80
|
console.log('');
|
|
75
81
|
console.log(' ' + (0, colors_1.banner)(index_1.AGENTGUARD_SPEND_VERSION));
|
|
76
82
|
console.log('');
|
|
77
|
-
console.log(` ${(0, colors_1.yellow)('agentguard
|
|
78
|
-
console.log(' Run agentguard auth openrouter, set OPENROUTER_API_KEY, or pass --base-url with
|
|
83
|
+
console.log(` ${(0, colors_1.yellow)('agentguard advisor needs a local provider key')}`);
|
|
84
|
+
console.log(' Run agentguard auth openrouter, set OPENROUTER_API_KEY, or pass --base-url with AGENTGUARD_ADVISOR_API_KEY.');
|
|
79
85
|
console.log(' Prompts and policy details stay in your terminal and go only to your chosen provider.');
|
|
80
86
|
console.log('');
|
|
81
87
|
return 0;
|
|
82
88
|
}
|
|
83
89
|
let cancelled = false;
|
|
84
|
-
const logger = (0, output_1.
|
|
90
|
+
const logger = (0, output_1.createAdvisorSessionLogger)();
|
|
85
91
|
const onSigint = () => {
|
|
86
92
|
cancelled = true;
|
|
87
93
|
logger.append('cancelled', { reason: 'sigint' });
|
|
88
|
-
process.stdout.write('\
|
|
94
|
+
process.stdout.write('\nadvisor cancelled. No policy files were written.\n');
|
|
89
95
|
};
|
|
90
96
|
process.once('SIGINT', onSigint);
|
|
91
97
|
try {
|
|
92
|
-
const conversation = new conversation_1.
|
|
93
|
-
const history = [{ role: 'system', content: system_prompt_1.
|
|
94
|
-
const client = (0, llm_client_1.
|
|
98
|
+
const conversation = new conversation_1.AdvisorConversation({ ...(options.language ? { language: options.language } : {}), ...(options.posture ? { posture: options.posture } : {}) });
|
|
99
|
+
const history = [{ role: 'system', content: system_prompt_1.ADVISOR_SYSTEM_PROMPT }];
|
|
100
|
+
const client = (0, llm_client_1.createAdvisorClient)({ provider: options.provider, baseUrl: options.baseUrl, model: options.model, apiKey: apiKey ?? undefined });
|
|
95
101
|
console.log('');
|
|
96
102
|
console.log(' ' + (0, colors_1.banner)(index_1.AGENTGUARD_SPEND_VERSION));
|
|
97
103
|
console.log('');
|
|
98
|
-
console.log((0, colors_1.cyanBold)('AgentGuard
|
|
104
|
+
console.log((0, colors_1.cyanBold)('AgentGuard Advisor'));
|
|
99
105
|
console.log((0, colors_1.dim)('Local LLM setup. No AgentGuard service receives prompts, completions, keys, or policies.'));
|
|
100
106
|
console.log('');
|
|
101
107
|
if (options.defaults || !process.stdin.isTTY) {
|
|
@@ -108,18 +114,20 @@ async function runCoach(argv) {
|
|
|
108
114
|
if (cancelled)
|
|
109
115
|
return 130;
|
|
110
116
|
if (!conversation.isComplete()) {
|
|
111
|
-
console.log((0, colors_1.yellow)('
|
|
117
|
+
console.log((0, colors_1.yellow)('advisor did not collect enough answers to write policy files.'));
|
|
112
118
|
return 0;
|
|
113
119
|
}
|
|
114
120
|
const profile = conversation.profile(process.cwd());
|
|
115
121
|
if (options.language)
|
|
116
122
|
profile.language = options.language;
|
|
123
|
+
if (options.posture)
|
|
124
|
+
profile.posture = options.posture;
|
|
117
125
|
logger.append('profile_built', { profile });
|
|
118
126
|
console.log('');
|
|
119
|
-
await
|
|
127
|
+
await streamAdvisorSummary(client, history, profileSummaryPrompt(profile), logger, () => cancelled);
|
|
120
128
|
if (cancelled)
|
|
121
129
|
return 130;
|
|
122
|
-
const outputs = (0, output_1.
|
|
130
|
+
const outputs = (0, output_1.writeAdvisorOutputs)(profile, { language: profile.language, overwrite: options.yes || options.defaults });
|
|
123
131
|
logger.append('files_written', { policyPath: outputs.policyPath, quickstartPath: outputs.quickstartPath, sessionLogPath: logger.path });
|
|
124
132
|
console.log('');
|
|
125
133
|
console.log(outputs.savingsTable);
|
|
@@ -128,6 +136,9 @@ async function runCoach(argv) {
|
|
|
128
136
|
console.log(`${(0, colors_1.green)('created')} ${outputs.quickstartPath}`);
|
|
129
137
|
console.log(`${(0, colors_1.green)('session')} ${logger.path}`);
|
|
130
138
|
console.log('');
|
|
139
|
+
console.log('AgentGuard now proves what your AI agent attempted, who authorized it,');
|
|
140
|
+
console.log('what it cost, and whether it succeeded.');
|
|
141
|
+
console.log('');
|
|
131
142
|
console.log('Next: agentguard demo --policy ~/.agentguard/policy.yaml');
|
|
132
143
|
console.log('Verify receipts: https://agentguard.run/verify');
|
|
133
144
|
console.log('');
|
|
@@ -137,7 +148,7 @@ async function runCoach(argv) {
|
|
|
137
148
|
process.removeListener('SIGINT', onSigint);
|
|
138
149
|
}
|
|
139
150
|
}
|
|
140
|
-
async function
|
|
151
|
+
async function runAdvisorReview(argv) {
|
|
141
152
|
const scope = valueAfter(argv, '--scope') ?? 'default';
|
|
142
153
|
const anomalies = (0, anomaly_1.reviewAnomalies)((0, anomaly_1.readDecisionSpend)(scope));
|
|
143
154
|
console.log('');
|
|
@@ -153,7 +164,7 @@ async function runCoachReview(argv) {
|
|
|
153
164
|
}
|
|
154
165
|
return 0;
|
|
155
166
|
}
|
|
156
|
-
async function
|
|
167
|
+
async function runAdvisorForecast(argv) {
|
|
157
168
|
const scope = valueAfter(argv, '--scope') ?? 'default';
|
|
158
169
|
const cap = valueAfter(argv, '--cap-cents');
|
|
159
170
|
const forecast = (0, forecast_1.forecastMonthEnd)((0, anomaly_1.readDecisionSpend)(scope), cap ? Number(cap) : null);
|
|
@@ -186,7 +197,7 @@ async function runInteractiveQuestions(conversation, logger, history, client, is
|
|
|
186
197
|
conversation.answer(answer);
|
|
187
198
|
logger.append('answer', { question: question.id, answer });
|
|
188
199
|
history.push({ role: 'user', content: `${question.prompt}\n${answer}` });
|
|
189
|
-
await
|
|
200
|
+
await streamAdvisorSummary(client, history, advisorQuestionPrompt(question.id), logger, isCancelled);
|
|
190
201
|
conversation.next();
|
|
191
202
|
}
|
|
192
203
|
}
|
|
@@ -194,7 +205,7 @@ async function runInteractiveQuestions(conversation, logger, history, client, is
|
|
|
194
205
|
rl.close();
|
|
195
206
|
}
|
|
196
207
|
}
|
|
197
|
-
async function
|
|
208
|
+
async function streamAdvisorSummary(client, history, prompt, logger, isCancelled) {
|
|
198
209
|
history.push({ role: 'user', content: prompt });
|
|
199
210
|
let content = '';
|
|
200
211
|
process.stdout.write('\n');
|
|
@@ -209,28 +220,30 @@ async function streamCoachSummary(client, history, prompt, logger, isCancelled)
|
|
|
209
220
|
}
|
|
210
221
|
catch (err) {
|
|
211
222
|
const message = err instanceof Error ? err.message : String(err);
|
|
212
|
-
content = `
|
|
223
|
+
content = `Advisor provider unavailable: ${message}`;
|
|
213
224
|
console.log(content);
|
|
214
225
|
}
|
|
215
226
|
history.push({ role: 'assistant', content });
|
|
216
227
|
logger.append('assistant', { content });
|
|
217
228
|
}
|
|
218
229
|
function fillDefaults(conversation) {
|
|
219
|
-
const answers =
|
|
220
|
-
'A customer support agent for an ecommerce business',
|
|
221
|
-
|
|
222
|
-
'
|
|
223
|
-
'
|
|
224
|
-
'
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
230
|
+
const answers = {
|
|
231
|
+
building: 'A customer support agent for an ecommerce business',
|
|
232
|
+
posture: '',
|
|
233
|
+
scale: 'Team of 5, around 2000 support tickets and orders per month',
|
|
234
|
+
tasks: 'triage refunds, draft support replies, assemble chargeback evidence',
|
|
235
|
+
budget: '$199 monthly budget with low per-call costs',
|
|
236
|
+
confirm: 'Confirmed',
|
|
237
|
+
};
|
|
238
|
+
while (conversation.currentQuestion()) {
|
|
239
|
+
const question = conversation.currentQuestion();
|
|
240
|
+
if (!question)
|
|
228
241
|
break;
|
|
229
|
-
conversation.answer(
|
|
242
|
+
conversation.answer(answers[question.id] ?? 'Confirmed');
|
|
230
243
|
conversation.next();
|
|
231
244
|
}
|
|
232
245
|
}
|
|
233
|
-
function
|
|
246
|
+
function advisorQuestionPrompt(id) {
|
|
234
247
|
return `Acknowledge the ${id} answer in 2 short sentences. Ask only the next unanswered setup question. Do not write files yet.`;
|
|
235
248
|
}
|
|
236
249
|
function profileSummaryPrompt(profile) {
|
|
@@ -241,11 +254,14 @@ function parseOptions(argv) {
|
|
|
241
254
|
const providerFlag = valueAfter(argv, '--provider');
|
|
242
255
|
const provider = providerFlag ?? (baseUrl ? 'compatible' : 'openrouter');
|
|
243
256
|
const language = valueAfter(argv, '--language');
|
|
257
|
+
const postureValue = valueAfter(argv, '--posture');
|
|
258
|
+
const posture = postureValue === 'custom' ? 'custom' : (0, posture_1.normalizePosture)(postureValue);
|
|
244
259
|
return {
|
|
245
260
|
provider,
|
|
246
261
|
baseUrl,
|
|
247
262
|
model: valueAfter(argv, '--model'),
|
|
248
263
|
language: language === 'py' ? 'py' : language === 'ts' ? 'ts' : undefined,
|
|
264
|
+
posture: posture ?? undefined,
|
|
249
265
|
defaults: argv.includes('--defaults'),
|
|
250
266
|
yes: argv.includes('--yes') || argv.includes('-y'),
|
|
251
267
|
};
|
|
@@ -254,4 +270,4 @@ function valueAfter(argv, flag) {
|
|
|
254
270
|
const index = argv.indexOf(flag);
|
|
255
271
|
return index >= 0 ? argv[index + 1] : undefined;
|
|
256
272
|
}
|
|
257
|
-
//# sourceMappingURL=
|
|
273
|
+
//# sourceMappingURL=advisor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"advisor.js","sourceRoot":"","sources":["../../src/cli/advisor.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsCH,gCAwFC;AA5HD,mDAAqC;AACrC,oCAAoD;AACpD,0DAA2E;AAC3E,gDAA8E;AAC9E,kDAAuD;AACvD,sDAAiI;AACjI,gDAAwE;AACxE,4DAAiE;AACjE,8CAAoF;AACpF,qCAAgE;AAYhE,MAAM,IAAI,GAAG;;;;;;;;;;;;;CAaZ,CAAC;AAEK,KAAK,UAAU,UAAU,CAAC,IAAc;IAC7C,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACnD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClB,OAAO,CAAC,CAAC;IACX,CAAC;IACD,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ;QAAE,OAAO,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACjE,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,UAAU;QAAE,OAAO,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAErE,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IACnC,IAAI,OAAO,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;QACjC,OAAO,CAAC,GAAG,CAAC,6GAA6G,CAAC,CAAC;QAC3H,OAAO,CAAC,CAAC;IACX,CAAC;IACD,MAAM,MAAM,GAAG,IAAA,iCAAoB,EAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACtD,IAAI,OAAO,CAAC,QAAQ,KAAK,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;QAC3C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,IAAA,eAAM,EAAC,gCAAwB,CAAC,CAAC,CAAC;QACrD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,KAAK,IAAA,eAAM,EAAC,+CAA+C,CAAC,EAAE,CAAC,CAAC;QAC5E,OAAO,CAAC,GAAG,CAAC,+GAA+G,CAAC,CAAC;QAC7H,OAAO,CAAC,GAAG,CAAC,yFAAyF,CAAC,CAAC;QACvG,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,MAAM,MAAM,GAAG,IAAA,mCAA0B,GAAE,CAAC;IAC5C,MAAM,QAAQ,GAAG,GAAG,EAAE;QACpB,SAAS,GAAG,IAAI,CAAC;QACjB,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;QACjD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,sDAAsD,CAAC,CAAC;IAC/E,CAAC,CAAC;IACF,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAEjC,IAAI,CAAC;QACH,MAAM,YAAY,GAAG,IAAI,kCAAmB,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACxK,MAAM,OAAO,GAAyB,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,qCAAqB,EAAE,CAAC,CAAC;QAC3F,MAAM,MAAM,GAAG,IAAA,gCAAmB,EAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,IAAI,SAAS,EAAE,CAAC,CAAC;QAEhJ,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,IAAA,eAAM,EAAC,gCAAwB,CAAC,CAAC,CAAC;QACrD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,IAAA,iBAAQ,EAAC,oBAAoB,CAAC,CAAC,CAAC;QAC5C,OAAO,CAAC,GAAG,CAAC,IAAA,YAAG,EAAC,0FAA0F,CAAC,CAAC,CAAC;QAC7G,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAEhB,IAAI,OAAO,CAAC,QAAQ,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YAC7C,YAAY,CAAC,YAAY,CAAC,CAAC;YAC3B,MAAM,CAAC,MAAM,CAAC,mBAAmB,EAAE,EAAE,OAAO,EAAE,YAAY,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QAC3E,CAAC;aAAM,CAAC;YACN,MAAM,uBAAuB,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QACxF,CAAC;QAED,IAAI,SAAS;YAAE,OAAO,GAAG,CAAC;QAC1B,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,EAAE,CAAC;YAC/B,OAAO,CAAC,GAAG,CAAC,IAAA,eAAM,EAAC,+DAA+D,CAAC,CAAC,CAAC;YACrF,OAAO,CAAC,CAAC;QACX,CAAC;QAED,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QACpD,IAAI,OAAO,CAAC,QAAQ;YAAE,OAAO,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QAC1D,IAAI,OAAO,CAAC,OAAO;YAAE,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QACvD,MAAM,CAAC,MAAM,CAAC,eAAe,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;QAE5C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,MAAM,oBAAoB,CAAC,MAAM,EAAE,OAAO,EAAE,oBAAoB,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QACpG,IAAI,SAAS;YAAE,OAAO,GAAG,CAAC;QAE1B,MAAM,OAAO,GAAG,IAAA,4BAAmB,EAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,SAAS,EAAE,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;QACzH,MAAM,CAAC,MAAM,CAAC,eAAe,EAAE,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,cAAc,EAAE,OAAO,CAAC,cAAc,EAAE,cAAc,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QAExI,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAClC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,GAAG,IAAA,cAAK,EAAC,SAAS,CAAC,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;QACzD,OAAO,CAAC,GAAG,CAAC,GAAG,IAAA,cAAK,EAAC,SAAS,CAAC,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;QAC7D,OAAO,CAAC,GAAG,CAAC,GAAG,IAAA,cAAK,EAAC,SAAS,CAAC,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QAClD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,wEAAwE,CAAC,CAAC;QACtF,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;QACvD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,0DAA0D,CAAC,CAAC;QACxE,OAAO,CAAC,GAAG,CAAC,gDAAgD,CAAC,CAAC;QAC9D,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,CAAC;IACX,CAAC;YAAS,CAAC;QACT,OAAO,CAAC,cAAc,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC7C,CAAC;AACH,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAC,IAAc;IAC5C,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,SAAS,CAAC;IACvD,MAAM,SAAS,GAAG,IAAA,yBAAe,EAAC,IAAA,2BAAiB,EAAC,KAAK,CAAC,CAAC,CAAC;IAC5D,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,IAAA,eAAM,EAAC,gCAAwB,CAAC,CAAC,CAAC;IACrD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAC;QACrE,OAAO,CAAC,CAAC;IACX,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;QAC7B,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,KAAK,IAAA,0BAAW,EAAC,IAAI,CAAC,YAAY,CAAC,0BAA0B,IAAA,0BAAW,EAAC,IAAI,CAAC,aAAa,CAAC,WAAW,IAAA,0BAAW,EAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QACjL,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;IAChD,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,KAAK,UAAU,kBAAkB,CAAC,IAAc;IAC9C,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,SAAS,CAAC;IACvD,MAAM,GAAG,GAAG,UAAU,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;IAC5C,MAAM,QAAQ,GAAG,IAAA,2BAAgB,EAAC,IAAA,2BAAiB,EAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACtF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,IAAA,eAAM,EAAC,gCAAwB,CAAC,CAAC,CAAC;IACrD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,kBAAkB,QAAQ,CAAC,YAAY,EAAE,CAAC,CAAC;IACvD,OAAO,CAAC,GAAG,CAAC,wBAAwB,IAAA,0BAAW,EAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;IAC3E,IAAI,QAAQ,CAAC,QAAQ,KAAK,IAAI;QAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAA,0BAAW,EAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IACtF,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC9B,OAAO,CAAC,CAAC;AACX,CAAC;AAED,KAAK,UAAU,uBAAuB,CACpC,YAAiC,EACjC,MAAqD,EACrD,OAA6B,EAC7B,MAA8C,EAC9C,WAA0B;IAE1B,MAAM,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACtF,MAAM,GAAG,GAAG,CAAC,MAAc,EAAE,EAAE,CAAC,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,MAAM,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACxG,IAAI,CAAC;QACH,OAAO,CAAC,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;YACpD,MAAM,QAAQ,GAAG,YAAY,CAAC,eAAe,EAAE,CAAC;YAChD,IAAI,CAAC,QAAQ;gBAAE,MAAM;YACrB,MAAM,MAAM,GAAG,CAAC,MAAM,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YACnD,IAAI,MAAM,CAAC,WAAW,EAAE,KAAK,MAAM,EAAE,CAAC;gBACpC,YAAY,CAAC,IAAI,EAAE,CAAC;gBACpB,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,YAAY,CAAC,eAAe,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;gBAClE,SAAS;YACX,CAAC;YACD,IAAI,CAAC,MAAM;gBAAE,SAAS;YACtB,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAC5B,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;YAC3D,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,QAAQ,CAAC,MAAM,KAAK,MAAM,EAAE,EAAE,CAAC,CAAC;YACzE,MAAM,oBAAoB,CAAC,MAAM,EAAE,OAAO,EAAE,qBAAqB,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;YACrG,YAAY,CAAC,IAAI,EAAE,CAAC;QACtB,CAAC;IACH,CAAC;YAAS,CAAC;QACT,EAAE,CAAC,KAAK,EAAE,CAAC;IACb,CAAC;AACH,CAAC;AAED,KAAK,UAAU,oBAAoB,CACjC,MAA8C,EAC9C,OAA6B,EAC7B,MAAc,EACd,MAAqD,EACrD,WAA0B;IAE1B,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;IAChD,IAAI,OAAO,GAAG,EAAE,CAAC;IACjB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC3B,IAAI,CAAC;QACH,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YACrD,IAAI,WAAW,EAAE;gBAAE,MAAM;YACzB,OAAO,IAAI,KAAK,CAAC;YACjB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC;QACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjE,OAAO,GAAG,iCAAiC,OAAO,EAAE,CAAC;QACrD,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACvB,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,CAAC;IAC7C,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;AAC1C,CAAC;AAED,SAAS,YAAY,CAAC,YAAiC;IACrD,MAAM,OAAO,GAA2B;QACtC,QAAQ,EAAE,oDAAoD;QAC9D,OAAO,EAAE,EAAE;QACX,KAAK,EAAE,6DAA6D;QACpE,KAAK,EAAE,qEAAqE;QAC5E,MAAM,EAAE,6CAA6C;QACrD,OAAO,EAAE,WAAW;KACrB,CAAC;IACF,OAAO,YAAY,CAAC,eAAe,EAAE,EAAE,CAAC;QACtC,MAAM,QAAQ,GAAG,YAAY,CAAC,eAAe,EAAE,CAAC;QAChD,IAAI,CAAC,QAAQ;YAAE,MAAM;QACrB,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,WAAW,CAAC,CAAC;QACzD,YAAY,CAAC,IAAI,EAAE,CAAC;IACtB,CAAC;AACH,CAAC;AAED,SAAS,qBAAqB,CAAC,EAAU;IACvC,OAAO,mBAAmB,EAAE,oGAAoG,CAAC;AACnI,CAAC;AAED,SAAS,oBAAoB,CAAC,OAAmD;IAC/E,OAAO,oFAAoF,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,kFAAkF,CAAC;AACvM,CAAC;AAED,SAAS,YAAY,CAAC,IAAc;IAClC,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IAC/C,MAAM,YAAY,GAAG,UAAU,CAAC,IAAI,EAAE,YAAY,CAAgC,CAAC;IACnF,MAAM,QAAQ,GAAG,YAAY,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;IACzE,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,EAAE,YAAY,CAA4B,CAAC;IAC3E,MAAM,YAAY,GAAG,UAAU,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IACnD,MAAM,OAAO,GAAG,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAA,0BAAgB,EAAC,YAAY,CAAC,CAAC;IACtF,OAAO;QACL,QAAQ;QACR,OAAO;QACP,KAAK,EAAE,UAAU,CAAC,IAAI,EAAE,SAAS,CAAC;QAClC,QAAQ,EAAE,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;QACzE,OAAO,EAAE,OAAO,IAAI,SAAS;QAC7B,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;QACrC,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;KACnD,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,IAAc,EAAE,IAAY;IAC9C,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACjC,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAClD,CAAC"}
|
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;;GAEG;
|
|
1
|
+
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../src/cli/main.ts"],"names":[],"mappings":"AAAA;;GAEG;AAwCH,wBAAsB,IAAI,CAAC,IAAI,GAAE,MAAM,EAA0B,GAAG,OAAO,CAAC,MAAM,CAAC,CAwElF"}
|
package/dist/cli/main.js
CHANGED
|
@@ -39,13 +39,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
39
39
|
exports.main = main;
|
|
40
40
|
const index_1 = require("../index");
|
|
41
41
|
const colors_1 = require("./colors");
|
|
42
|
-
const HELP = `agentguard:
|
|
42
|
+
const HELP = `agentguard: proves what your AI agent attempted, who authorized it, what it cost, and whether it succeeded.
|
|
43
|
+
local-runtime spend caps + Ed25519-signed receipts. zero data plane.
|
|
43
44
|
|
|
44
45
|
usage:
|
|
45
46
|
agentguard <command> [options]
|
|
46
47
|
|
|
47
48
|
commands:
|
|
48
|
-
|
|
49
|
+
advisor Local LLM setup that writes policy.yaml and quickstart code.
|
|
49
50
|
wizard Guided setup for policy.yaml and quickstarts.
|
|
50
51
|
models Browse models, sync OpenRouter pricing, update policy.
|
|
51
52
|
auth Configure local provider keys.
|
|
@@ -62,7 +63,7 @@ commands:
|
|
|
62
63
|
|
|
63
64
|
examples:
|
|
64
65
|
agentguard auth openrouter
|
|
65
|
-
agentguard
|
|
66
|
+
agentguard advisor
|
|
66
67
|
agentguard wizard
|
|
67
68
|
agentguard models --sync-pricing
|
|
68
69
|
agentguard models --task payment-approval
|
|
@@ -89,9 +90,9 @@ async function main(argv = process.argv.slice(2)) {
|
|
|
89
90
|
const { maybeShowStartupTips } = await Promise.resolve().then(() => __importStar(require('./tips')));
|
|
90
91
|
maybeShowStartupTips(showTips);
|
|
91
92
|
}
|
|
92
|
-
if (command === '
|
|
93
|
-
const {
|
|
94
|
-
return
|
|
93
|
+
if (command === 'advisor') {
|
|
94
|
+
const { runAdvisor } = await Promise.resolve().then(() => __importStar(require('./advisor')));
|
|
95
|
+
return runAdvisor(rest);
|
|
95
96
|
}
|
|
96
97
|
if (command === 'wizard') {
|
|
97
98
|
const { runWizard } = await Promise.resolve().then(() => __importStar(require('./wizard')));
|
package/dist/cli/main.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/cli/main.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/cli/main.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -12,14 +12,14 @@ export { canonicalJson, sha256Hex, computeEntryHash, computeSignerFingerprint, s
|
|
|
12
12
|
export { InMemorySpendStore } from './store-memory';
|
|
13
13
|
export { telemetryStatus, enableTelemetry, disableTelemetry, resetTelemetryInstallId, recordTelemetryEvent, type TelemetryStatus, } from './telemetry';
|
|
14
14
|
export { fetchCatalog, getCachedCatalog, syncPricingIntoCostTable, persistOverrides, modelCostFromOpenRouter, type OpenRouterCatalog, type OpenRouterModel, type SyncPricingResult, } from './openrouter-catalog';
|
|
15
|
-
export {
|
|
16
|
-
export {
|
|
17
|
-
export {
|
|
15
|
+
export { AdvisorConversation, buildBusinessProfile, buildPolicyFromProfile, projectedSavings, type AdvisorBusinessProfile, type ProjectedSavings, } from './advisor/conversation';
|
|
16
|
+
export { createAdvisorClient, resolveAdvisorApiKey, type AdvisorClient, type AdvisorProvider } from './advisor/llm-client';
|
|
17
|
+
export { createAdvisorSessionLogger, writeAdvisorOutputs, type AdvisorOutputs } from './advisor/output';
|
|
18
18
|
export { SpendGuard, withSpendGuard, AgentGuardBlockedError, type SpendGuardConfig, type OpenAIBindingOptions, type StreamSettlementOptions, type StreamSettlementResult, } from './spend-guard';
|
|
19
19
|
export { withSpendGuardAnthropic, type AnthropicBindingOptions } from './bindings/anthropic';
|
|
20
20
|
export { withSpendGuardBedrock, type BedrockBindingOptions } from './bindings/bedrock';
|
|
21
21
|
export { DEFAULT_LOCALE, SUPPORTED_LOCALES, TRANSLATIONS, type SupportedLocale, resolveLocale, t, formatBlockedTrace, type BlockedTraceArgs, } from './i18n';
|
|
22
|
-
export declare const AGENTGUARD_SPEND_VERSION = "0.4.
|
|
22
|
+
export declare const AGENTGUARD_SPEND_VERSION = "0.4.2";
|
|
23
23
|
/** Patent marking. 35 U.S.C. § 287 constructive notice. */
|
|
24
24
|
export declare const PATENT_NOTICE: string;
|
|
25
25
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,YAAY,EACV,WAAW,EACX,WAAW,EACX,QAAQ,EACR,eAAe,EACf,cAAc,EACd,QAAQ,EACR,UAAU,EACV,WAAW,EACX,WAAW,EACX,aAAa,EACb,sBAAsB,EACtB,UAAU,EACV,gBAAgB,GACjB,MAAM,SAAS,CAAC;AAGjB,OAAO,EACL,YAAY,EACZ,eAAe,EACf,kBAAkB,EAClB,gBAAgB,EAChB,aAAa,EACb,iBAAiB,EACjB,0BAA0B,EAC1B,oBAAoB,EACpB,eAAe,EACf,KAAK,SAAS,GACf,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,uBAAuB,EAAE,MAAM,UAAU,CAAC;AAGlF,OAAO,EACL,aAAa,EACb,SAAS,EACT,gBAAgB,EAChB,wBAAwB,EACxB,YAAY,EACZ,WAAW,EACX,WAAW,EACX,qBAAqB,EACrB,wBAAwB,GACzB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAGpD,OAAO,EACL,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,uBAAuB,EACvB,oBAAoB,EACpB,KAAK,eAAe,GACrB,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,wBAAwB,EACxB,gBAAgB,EAChB,uBAAuB,EACvB,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,iBAAiB,GACvB,MAAM,sBAAsB,CAAC;AAI9B,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,YAAY,EACV,WAAW,EACX,WAAW,EACX,QAAQ,EACR,eAAe,EACf,cAAc,EACd,QAAQ,EACR,UAAU,EACV,WAAW,EACX,WAAW,EACX,aAAa,EACb,sBAAsB,EACtB,UAAU,EACV,gBAAgB,GACjB,MAAM,SAAS,CAAC;AAGjB,OAAO,EACL,YAAY,EACZ,eAAe,EACf,kBAAkB,EAClB,gBAAgB,EAChB,aAAa,EACb,iBAAiB,EACjB,0BAA0B,EAC1B,oBAAoB,EACpB,eAAe,EACf,KAAK,SAAS,GACf,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,uBAAuB,EAAE,MAAM,UAAU,CAAC;AAGlF,OAAO,EACL,aAAa,EACb,SAAS,EACT,gBAAgB,EAChB,wBAAwB,EACxB,YAAY,EACZ,WAAW,EACX,WAAW,EACX,qBAAqB,EACrB,wBAAwB,GACzB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAGpD,OAAO,EACL,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,uBAAuB,EACvB,oBAAoB,EACpB,KAAK,eAAe,GACrB,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,wBAAwB,EACxB,gBAAgB,EAChB,uBAAuB,EACvB,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,iBAAiB,GACvB,MAAM,sBAAsB,CAAC;AAI9B,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,sBAAsB,EACtB,gBAAgB,EAChB,KAAK,sBAAsB,EAC3B,KAAK,gBAAgB,GACtB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,KAAK,aAAa,EAAE,KAAK,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC3H,OAAO,EAAE,0BAA0B,EAAE,mBAAmB,EAAE,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAGxG,OAAO,EACL,UAAU,EACV,cAAc,EACd,sBAAsB,EACtB,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,EACzB,KAAK,uBAAuB,EAC5B,KAAK,sBAAsB,GAC5B,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,uBAAuB,EAAE,KAAK,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAC7F,OAAO,EAAE,qBAAqB,EAAE,KAAK,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAGvF,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,YAAY,EACZ,KAAK,eAAe,EACpB,aAAa,EACb,CAAC,EACD,kBAAkB,EAClB,KAAK,gBAAgB,GACtB,MAAM,QAAQ,CAAC;AAEhB,eAAO,MAAM,wBAAwB,UAAU,CAAC;AAEhD,2DAA2D;AAC3D,eAAO,MAAM,aAAa,QAG8B,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* 64/071,781; 64/071,789).
|
|
8
8
|
*/
|
|
9
9
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
-
exports.t = exports.resolveLocale = exports.TRANSLATIONS = exports.SUPPORTED_LOCALES = exports.DEFAULT_LOCALE = exports.withSpendGuardBedrock = exports.withSpendGuardAnthropic = exports.AgentGuardBlockedError = exports.withSpendGuard = exports.SpendGuard = exports.
|
|
10
|
+
exports.t = exports.resolveLocale = exports.TRANSLATIONS = exports.SUPPORTED_LOCALES = exports.DEFAULT_LOCALE = exports.withSpendGuardBedrock = exports.withSpendGuardAnthropic = exports.AgentGuardBlockedError = exports.withSpendGuard = exports.SpendGuard = exports.writeAdvisorOutputs = exports.createAdvisorSessionLogger = exports.resolveAdvisorApiKey = exports.createAdvisorClient = exports.projectedSavings = exports.buildPolicyFromProfile = exports.buildBusinessProfile = exports.AdvisorConversation = exports.modelCostFromOpenRouter = exports.persistOverrides = exports.syncPricingIntoCostTable = exports.getCachedCatalog = exports.fetchCatalog = exports.recordTelemetryEvent = exports.resetTelemetryInstallId = exports.disableTelemetry = exports.enableTelemetry = exports.telemetryStatus = exports.InMemorySpendStore = exports.InMemoryDecisionLogStore = exports.GENESIS_PREVIOUS_HASH = exports.verifyChain = exports.verifyEntry = exports.signDecision = exports.computeSignerFingerprint = exports.computeEntryHash = exports.sha256Hex = exports.canonicalJson = exports.adjustPolicyWindowSpend = exports.buildScopeKey = exports.evaluatePolicy = exports.knownModelCosts = exports.persistCostOverrides = exports.loadPersistedCostOverrides = exports.listCostOverrides = exports.inferProvider = exports.computeCallCents = exports.clearCostOverrides = exports.setCostOverride = exports.getModelCost = void 0;
|
|
11
11
|
exports.PATENT_NOTICE = exports.AGENTGUARD_SPEND_VERSION = exports.formatBlockedTrace = void 0;
|
|
12
12
|
const telemetry_1 = require("./telemetry");
|
|
13
13
|
// Cost table
|
|
@@ -54,18 +54,18 @@ Object.defineProperty(exports, "getCachedCatalog", { enumerable: true, get: func
|
|
|
54
54
|
Object.defineProperty(exports, "syncPricingIntoCostTable", { enumerable: true, get: function () { return openrouter_catalog_1.syncPricingIntoCostTable; } });
|
|
55
55
|
Object.defineProperty(exports, "persistOverrides", { enumerable: true, get: function () { return openrouter_catalog_1.persistOverrides; } });
|
|
56
56
|
Object.defineProperty(exports, "modelCostFromOpenRouter", { enumerable: true, get: function () { return openrouter_catalog_1.modelCostFromOpenRouter; } });
|
|
57
|
-
//
|
|
58
|
-
var conversation_1 = require("./
|
|
59
|
-
Object.defineProperty(exports, "
|
|
57
|
+
// Advisor local setup
|
|
58
|
+
var conversation_1 = require("./advisor/conversation");
|
|
59
|
+
Object.defineProperty(exports, "AdvisorConversation", { enumerable: true, get: function () { return conversation_1.AdvisorConversation; } });
|
|
60
60
|
Object.defineProperty(exports, "buildBusinessProfile", { enumerable: true, get: function () { return conversation_1.buildBusinessProfile; } });
|
|
61
61
|
Object.defineProperty(exports, "buildPolicyFromProfile", { enumerable: true, get: function () { return conversation_1.buildPolicyFromProfile; } });
|
|
62
62
|
Object.defineProperty(exports, "projectedSavings", { enumerable: true, get: function () { return conversation_1.projectedSavings; } });
|
|
63
|
-
var llm_client_1 = require("./
|
|
64
|
-
Object.defineProperty(exports, "
|
|
65
|
-
Object.defineProperty(exports, "
|
|
66
|
-
var output_1 = require("./
|
|
67
|
-
Object.defineProperty(exports, "
|
|
68
|
-
Object.defineProperty(exports, "
|
|
63
|
+
var llm_client_1 = require("./advisor/llm-client");
|
|
64
|
+
Object.defineProperty(exports, "createAdvisorClient", { enumerable: true, get: function () { return llm_client_1.createAdvisorClient; } });
|
|
65
|
+
Object.defineProperty(exports, "resolveAdvisorApiKey", { enumerable: true, get: function () { return llm_client_1.resolveAdvisorApiKey; } });
|
|
66
|
+
var output_1 = require("./advisor/output");
|
|
67
|
+
Object.defineProperty(exports, "createAdvisorSessionLogger", { enumerable: true, get: function () { return output_1.createAdvisorSessionLogger; } });
|
|
68
|
+
Object.defineProperty(exports, "writeAdvisorOutputs", { enumerable: true, get: function () { return output_1.writeAdvisorOutputs; } });
|
|
69
69
|
// Core wrapper
|
|
70
70
|
var spend_guard_1 = require("./spend-guard");
|
|
71
71
|
Object.defineProperty(exports, "SpendGuard", { enumerable: true, get: function () { return spend_guard_1.SpendGuard; } });
|
|
@@ -83,7 +83,7 @@ Object.defineProperty(exports, "TRANSLATIONS", { enumerable: true, get: function
|
|
|
83
83
|
Object.defineProperty(exports, "resolveLocale", { enumerable: true, get: function () { return i18n_1.resolveLocale; } });
|
|
84
84
|
Object.defineProperty(exports, "t", { enumerable: true, get: function () { return i18n_1.t; } });
|
|
85
85
|
Object.defineProperty(exports, "formatBlockedTrace", { enumerable: true, get: function () { return i18n_1.formatBlockedTrace; } });
|
|
86
|
-
exports.AGENTGUARD_SPEND_VERSION = '0.4.
|
|
86
|
+
exports.AGENTGUARD_SPEND_VERSION = '0.4.2';
|
|
87
87
|
/** Patent marking. 35 U.S.C. § 287 constructive notice. */
|
|
88
88
|
exports.PATENT_NOTICE = 'Protected by U.S. patent-pending technology ' +
|
|
89
89
|
'(App. Nos. 63/983,615; 63/983,621; 63/983,843; 63/984,626; ' +
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;;AAEH,2CAA8E;AAmB9E,aAAa;AACb,2CAWsB;AAVpB,0GAAA,YAAY,OAAA;AACZ,6GAAA,eAAe,OAAA;AACf,gHAAA,kBAAkB,OAAA;AAClB,8GAAA,gBAAgB,OAAA;AAChB,2GAAA,aAAa,OAAA;AACb,+GAAA,iBAAiB,OAAA;AACjB,wHAAA,0BAA0B,OAAA;AAC1B,kHAAA,oBAAoB,OAAA;AACpB,6GAAA,eAAe,OAAA;AAIjB,gBAAgB;AAChB,mCAAkF;AAAzE,wGAAA,cAAc,OAAA;AAAE,uGAAA,aAAa,OAAA;AAAE,iHAAA,uBAAuB,OAAA;AAE/D,eAAe;AACf,+CAUwB;AATtB,6GAAA,aAAa,OAAA;AACb,yGAAA,SAAS,OAAA;AACT,gHAAA,gBAAgB,OAAA;AAChB,wHAAA,wBAAwB,OAAA;AACxB,4GAAA,YAAY,OAAA;AACZ,2GAAA,WAAW,OAAA;AACX,2GAAA,WAAW,OAAA;AACX,qHAAA,qBAAqB,OAAA;AACrB,wHAAA,wBAAwB,OAAA;AAG1B,wBAAwB;AACxB,+CAAoD;AAA3C,kHAAA,kBAAkB,OAAA;AAE3B,qBAAqB;AACrB,yCAOqB;AANnB,4GAAA,eAAe,OAAA;AACf,4GAAA,eAAe,OAAA;AACf,6GAAA,gBAAgB,OAAA;AAChB,oHAAA,uBAAuB,OAAA;AACvB,iHAAA,oBAAoB,OAAA;AAItB,qBAAqB;AACrB,2DAS8B;AAR5B,kHAAA,YAAY,OAAA;AACZ,sHAAA,gBAAgB,OAAA;AAChB,8HAAA,wBAAwB,OAAA;AACxB,sHAAA,gBAAgB,OAAA;AAChB,6HAAA,uBAAuB,OAAA;AAOzB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;;AAEH,2CAA8E;AAmB9E,aAAa;AACb,2CAWsB;AAVpB,0GAAA,YAAY,OAAA;AACZ,6GAAA,eAAe,OAAA;AACf,gHAAA,kBAAkB,OAAA;AAClB,8GAAA,gBAAgB,OAAA;AAChB,2GAAA,aAAa,OAAA;AACb,+GAAA,iBAAiB,OAAA;AACjB,wHAAA,0BAA0B,OAAA;AAC1B,kHAAA,oBAAoB,OAAA;AACpB,6GAAA,eAAe,OAAA;AAIjB,gBAAgB;AAChB,mCAAkF;AAAzE,wGAAA,cAAc,OAAA;AAAE,uGAAA,aAAa,OAAA;AAAE,iHAAA,uBAAuB,OAAA;AAE/D,eAAe;AACf,+CAUwB;AATtB,6GAAA,aAAa,OAAA;AACb,yGAAA,SAAS,OAAA;AACT,gHAAA,gBAAgB,OAAA;AAChB,wHAAA,wBAAwB,OAAA;AACxB,4GAAA,YAAY,OAAA;AACZ,2GAAA,WAAW,OAAA;AACX,2GAAA,WAAW,OAAA;AACX,qHAAA,qBAAqB,OAAA;AACrB,wHAAA,wBAAwB,OAAA;AAG1B,wBAAwB;AACxB,+CAAoD;AAA3C,kHAAA,kBAAkB,OAAA;AAE3B,qBAAqB;AACrB,yCAOqB;AANnB,4GAAA,eAAe,OAAA;AACf,4GAAA,eAAe,OAAA;AACf,6GAAA,gBAAgB,OAAA;AAChB,oHAAA,uBAAuB,OAAA;AACvB,iHAAA,oBAAoB,OAAA;AAItB,qBAAqB;AACrB,2DAS8B;AAR5B,kHAAA,YAAY,OAAA;AACZ,sHAAA,gBAAgB,OAAA;AAChB,8HAAA,wBAAwB,OAAA;AACxB,sHAAA,gBAAgB,OAAA;AAChB,6HAAA,uBAAuB,OAAA;AAOzB,sBAAsB;AACtB,uDAOgC;AAN9B,mHAAA,mBAAmB,OAAA;AACnB,oHAAA,oBAAoB,OAAA;AACpB,sHAAA,sBAAsB,OAAA;AACtB,gHAAA,gBAAgB,OAAA;AAIlB,mDAA2H;AAAlH,iHAAA,mBAAmB,OAAA;AAAE,kHAAA,oBAAoB,OAAA;AAClD,2CAAwG;AAA/F,oHAAA,0BAA0B,OAAA;AAAE,6GAAA,mBAAmB,OAAA;AAExD,eAAe;AACf,6CAQuB;AAPrB,yGAAA,UAAU,OAAA;AACV,6GAAA,cAAc,OAAA;AACd,qHAAA,sBAAsB,OAAA;AAOxB,kDAA6F;AAApF,oHAAA,uBAAuB,OAAA;AAChC,8CAAuF;AAA9E,gHAAA,qBAAqB,OAAA;AAE9B,sCAAsC;AACtC,+BASgB;AARd,sGAAA,cAAc,OAAA;AACd,yGAAA,iBAAiB,OAAA;AACjB,oGAAA,YAAY,OAAA;AAEZ,qGAAA,aAAa,OAAA;AACb,yFAAA,CAAC,OAAA;AACD,0GAAA,kBAAkB,OAAA;AAIP,QAAA,wBAAwB,GAAG,OAAO,CAAC;AAEhD,2DAA2D;AAC9C,QAAA,aAAa,GACxB,8CAA8C;IAC9C,6DAA6D;IAC7D,sDAAsD,CAAC;AACzD,IAAA,gCAAuB,EAAC,UAAU,CAAC,CAAC"}
|
package/dist/telemetry.js
CHANGED
|
@@ -43,7 +43,7 @@ const https = __importStar(require("https"));
|
|
|
43
43
|
const os = __importStar(require("os"));
|
|
44
44
|
const path = __importStar(require("path"));
|
|
45
45
|
const crypto_1 = require("crypto");
|
|
46
|
-
const AGENTGUARD_SPEND_VERSION = '0.4.
|
|
46
|
+
const AGENTGUARD_SPEND_VERSION = '0.4.1';
|
|
47
47
|
const STATE_DIR = path.join(os.homedir(), '.agentguard');
|
|
48
48
|
const INSTALL_PATH = path.join(STATE_DIR, 'install.json');
|
|
49
49
|
const BEACON_URL = 'https://agentguard.run/api/beacon';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agentguard-run/spend",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.2",
|
|
4
4
|
"description": "Local-runtime spend caps and capability-gated model routing for AI agents. Prompts, API keys, and signing keys stay inside the customer runtime. Zero data plane involvement.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -40,10 +40,10 @@
|
|
|
40
40
|
"require": "./dist/templates/index.js",
|
|
41
41
|
"default": "./dist/templates/index.js"
|
|
42
42
|
},
|
|
43
|
-
"./
|
|
44
|
-
"types": "./dist/
|
|
45
|
-
"require": "./dist/
|
|
46
|
-
"default": "./dist/
|
|
43
|
+
"./advisor": {
|
|
44
|
+
"types": "./dist/advisor/conversation.d.ts",
|
|
45
|
+
"require": "./dist/advisor/conversation.js",
|
|
46
|
+
"default": "./dist/advisor/conversation.js"
|
|
47
47
|
}
|
|
48
48
|
},
|
|
49
49
|
"bin": {
|
|
@@ -64,8 +64,8 @@
|
|
|
64
64
|
"src/cli/tips.ts",
|
|
65
65
|
"src/cli/wizard.ts",
|
|
66
66
|
"src/bindings",
|
|
67
|
-
"src/
|
|
68
|
-
"src/cli/
|
|
67
|
+
"src/advisor",
|
|
68
|
+
"src/cli/advisor.ts"
|
|
69
69
|
],
|
|
70
70
|
"scripts": {
|
|
71
71
|
"build": "tsc",
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* AgentGuard(TM) Spend: local
|
|
2
|
+
* AgentGuard(TM) Spend: local Advisor anomaly review skeleton.
|
|
3
3
|
*
|
|
4
4
|
* Reads local decision logs only. No network calls are made.
|
|
5
5
|
*
|
|
@@ -12,14 +12,14 @@ import * as fs from 'fs';
|
|
|
12
12
|
import * as path from 'path';
|
|
13
13
|
import { agentguardHome } from './output';
|
|
14
14
|
|
|
15
|
-
export interface
|
|
15
|
+
export interface AdvisorSpendPoint {
|
|
16
16
|
ts: string;
|
|
17
17
|
scope: string;
|
|
18
18
|
agentId: string;
|
|
19
19
|
cents: number;
|
|
20
20
|
}
|
|
21
21
|
|
|
22
|
-
export interface
|
|
22
|
+
export interface AdvisorAnomaly {
|
|
23
23
|
scope: string;
|
|
24
24
|
agentId: string;
|
|
25
25
|
last24hCents: number;
|
|
@@ -28,10 +28,10 @@ export interface CoachAnomaly {
|
|
|
28
28
|
suggestion: string;
|
|
29
29
|
}
|
|
30
30
|
|
|
31
|
-
export function readDecisionSpend(scope = 'default', home = agentguardHome()):
|
|
31
|
+
export function readDecisionSpend(scope = 'default', home = agentguardHome()): AdvisorSpendPoint[] {
|
|
32
32
|
const file = path.join(home, scope, 'decisions.ndjson');
|
|
33
33
|
if (!fs.existsSync(file)) return [];
|
|
34
|
-
const points:
|
|
34
|
+
const points: AdvisorSpendPoint[] = [];
|
|
35
35
|
for (const line of fs.readFileSync(file, 'utf8').split('\n')) {
|
|
36
36
|
if (!line.trim()) continue;
|
|
37
37
|
try {
|
|
@@ -53,14 +53,14 @@ export function readDecisionSpend(scope = 'default', home = agentguardHome()): C
|
|
|
53
53
|
return points;
|
|
54
54
|
}
|
|
55
55
|
|
|
56
|
-
export function reviewAnomalies(points:
|
|
56
|
+
export function reviewAnomalies(points: AdvisorSpendPoint[], now = new Date()): AdvisorAnomaly[] {
|
|
57
57
|
const cutoff = now.getTime() - 24 * 60 * 60 * 1000;
|
|
58
|
-
const byAgent = new Map<string,
|
|
58
|
+
const byAgent = new Map<string, AdvisorSpendPoint[]>();
|
|
59
59
|
for (const point of points) {
|
|
60
60
|
const key = `${point.scope}\t${point.agentId}`;
|
|
61
61
|
byAgent.set(key, [...(byAgent.get(key) ?? []), point]);
|
|
62
62
|
}
|
|
63
|
-
const anomalies:
|
|
63
|
+
const anomalies: AdvisorAnomaly[] = [];
|
|
64
64
|
for (const [key, rows] of byAgent) {
|
|
65
65
|
const [scope, agentId] = key.split('\t');
|
|
66
66
|
const daily = bucketDaily(rows);
|
|
@@ -84,7 +84,7 @@ export function reviewAnomalies(points: CoachSpendPoint[], now = new Date()): Co
|
|
|
84
84
|
return anomalies.sort((a, b) => b.last24hCents - a.last24hCents);
|
|
85
85
|
}
|
|
86
86
|
|
|
87
|
-
function bucketDaily(points:
|
|
87
|
+
function bucketDaily(points: AdvisorSpendPoint[]): Array<{ day: string; cents: number }> {
|
|
88
88
|
const buckets = new Map<string, number>();
|
|
89
89
|
for (const point of points) {
|
|
90
90
|
const day = dayKey(new Date(point.ts));
|