@agentguard-run/spend 0.2.2 → 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.
- package/CHANGELOG.md +9 -1
- package/LICENSE +1 -1
- package/README.es-419.md +28 -102
- package/README.md +50 -124
- package/README.pt-BR.md +28 -102
- package/dist/bindings/anthropic.d.ts +11 -0
- package/dist/bindings/anthropic.d.ts.map +1 -0
- package/dist/bindings/anthropic.js +116 -0
- package/dist/bindings/anthropic.js.map +1 -0
- package/dist/bindings/bedrock.d.ts +11 -0
- package/dist/bindings/bedrock.d.ts.map +1 -0
- package/dist/bindings/bedrock.js +177 -0
- package/dist/bindings/bedrock.js.map +1 -0
- package/dist/cli/auth.d.ts +7 -0
- package/dist/cli/auth.d.ts.map +1 -0
- package/dist/cli/auth.js +189 -0
- package/dist/cli/auth.js.map +1 -0
- package/dist/cli/colors.d.ts +8 -3
- package/dist/cli/colors.d.ts.map +1 -1
- package/dist/cli/colors.js +93 -4
- package/dist/cli/colors.js.map +1 -1
- package/dist/cli/demo.d.ts.map +1 -1
- package/dist/cli/demo.js +23 -2
- package/dist/cli/demo.js.map +1 -1
- package/dist/cli/main.d.ts +0 -6
- package/dist/cli/main.d.ts.map +1 -1
- package/dist/cli/main.js +36 -16
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/models.d.ts +18 -0
- package/dist/cli/models.d.ts.map +1 -0
- package/dist/cli/models.js +277 -0
- package/dist/cli/models.js.map +1 -0
- package/dist/cli/tips.d.ts +21 -0
- package/dist/cli/tips.d.ts.map +1 -0
- package/dist/cli/tips.js +191 -0
- package/dist/cli/tips.js.map +1 -0
- package/dist/cli/wizard.d.ts +27 -0
- package/dist/cli/wizard.d.ts.map +1 -0
- package/dist/cli/wizard.js +182 -0
- package/dist/cli/wizard.js.map +1 -0
- package/dist/cost-table.d.ts +11 -36
- package/dist/cost-table.d.ts.map +1 -1
- package/dist/cost-table.js +114 -45
- package/dist/cost-table.js.map +1 -1
- package/dist/index.d.ts +6 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +17 -2
- package/dist/index.js.map +1 -1
- package/dist/openrouter-catalog.d.ts +56 -0
- package/dist/openrouter-catalog.d.ts.map +1 -0
- package/dist/openrouter-catalog.js +183 -0
- package/dist/openrouter-catalog.js.map +1 -0
- package/dist/spend-guard.d.ts +38 -55
- package/dist/spend-guard.d.ts.map +1 -1
- package/dist/spend-guard.js +268 -83
- package/dist/spend-guard.js.map +1 -1
- package/dist/telemetry.d.ts.map +1 -1
- package/dist/telemetry.js +52 -21
- package/dist/telemetry.js.map +1 -1
- package/dist/templates/index.d.ts +17 -0
- package/dist/templates/index.d.ts.map +1 -0
- package/dist/templates/index.js +100 -0
- package/dist/templates/index.js.map +1 -0
- package/dist/types.d.ts +18 -3
- package/dist/types.d.ts.map +1 -1
- package/package.json +32 -4
- package/src/bindings/anthropic.ts +142 -0
- package/src/bindings/bedrock.ts +200 -0
- package/src/cli/auth.ts +145 -0
- package/src/cli/models.ts +236 -0
- package/src/cli/tips.ts +161 -0
- package/src/cli/wizard.ts +160 -0
- package/src/openrouter-catalog.ts +180 -0
- package/src/templates/agent-support.yaml +30 -0
- package/src/templates/chargeback-evidence.yaml +30 -0
- package/src/templates/code-scan.yaml +30 -0
- package/src/templates/index.ts +109 -0
- package/src/templates/payment-approval.yaml +30 -0
- package/src/templates/risk-review.yaml +30 -0
- package/tests/fixtures/openrouter-catalog.json +1 -0
package/dist/spend-guard.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* AgentGuard(TM) Spend: Core SDK entry point
|
|
3
3
|
*
|
|
4
|
-
* `withSpendGuard()` wraps
|
|
5
|
-
*
|
|
4
|
+
* `withSpendGuard()` wraps provider SDK clients and enforces a SpendPolicy
|
|
5
|
+
* locally before each call is sent to the provider.
|
|
6
6
|
*
|
|
7
7
|
* Design rule: ZERO DATA PLANE INVOLVEMENT.
|
|
8
8
|
* - Prompts never leave the customer process.
|
|
@@ -15,32 +15,36 @@
|
|
|
15
15
|
* 64/071,781; 64/071,789).
|
|
16
16
|
*/
|
|
17
17
|
import type { SpendPolicy, CallContext, SpendDecision, SpendStore, DecisionLogStore, SignedDecisionLogEntry, CapabilityTier, SpendScope } from './types';
|
|
18
|
-
/**
|
|
19
|
-
* Configuration for an AgentGuard Spend instance.
|
|
20
|
-
*/
|
|
21
18
|
export interface SpendGuardConfig {
|
|
22
|
-
/** The policy to evaluate every call against */
|
|
19
|
+
/** The policy to evaluate every call against. */
|
|
23
20
|
policy: SpendPolicy;
|
|
24
|
-
/** Spend state store
|
|
21
|
+
/** Spend state store. Defaults to in-memory. */
|
|
25
22
|
spendStore?: SpendStore;
|
|
26
|
-
/** Decision log store
|
|
23
|
+
/** Decision log store. Defaults to in-memory. */
|
|
27
24
|
logStore?: DecisionLogStore;
|
|
28
|
-
/** Ed25519 signing keys
|
|
25
|
+
/** Ed25519 signing keys. If omitted, decisions are not signed. */
|
|
29
26
|
signingKeys?: {
|
|
30
|
-
/** 32-byte Ed25519 secret seed */
|
|
27
|
+
/** 32-byte Ed25519 secret seed. */
|
|
31
28
|
privateKey: Uint8Array;
|
|
32
|
-
/** 32-byte Ed25519 public key */
|
|
29
|
+
/** 32-byte Ed25519 public key. */
|
|
33
30
|
publicKey: Uint8Array;
|
|
34
31
|
};
|
|
35
|
-
/** Optional hook fired on every decision
|
|
32
|
+
/** Optional hook fired on every decision and settlement. */
|
|
36
33
|
onDecision?: (decision: SpendDecision, signed: SignedDecisionLogEntry | null) => void | Promise<void>;
|
|
37
34
|
/** Optional token-count estimator. Defaults to `chars / 4` heuristic. */
|
|
38
35
|
tokenEstimator?: (text: string) => number;
|
|
39
|
-
/** Optional locale for localized block traces.
|
|
40
|
-
* via AGENTGUARD_LOCALE env var or system locale, falling back to en-US.
|
|
41
|
-
* Supported in v0.1.4: 'en-US', 'es-419', 'pt-BR'. */
|
|
36
|
+
/** Optional locale for localized block traces. */
|
|
42
37
|
locale?: string;
|
|
43
38
|
}
|
|
39
|
+
export interface StreamSettlementOptions {
|
|
40
|
+
partial?: boolean;
|
|
41
|
+
reason?: string;
|
|
42
|
+
}
|
|
43
|
+
export interface StreamSettlementResult {
|
|
44
|
+
decision: SpendDecision;
|
|
45
|
+
signed: SignedDecisionLogEntry | null;
|
|
46
|
+
deltaCents: number;
|
|
47
|
+
}
|
|
44
48
|
export declare class SpendGuard {
|
|
45
49
|
private config;
|
|
46
50
|
private spendStore;
|
|
@@ -48,55 +52,25 @@ export declare class SpendGuard {
|
|
|
48
52
|
private nextSequence;
|
|
49
53
|
private previousHash;
|
|
50
54
|
private decisionLock;
|
|
55
|
+
private reservations;
|
|
51
56
|
constructor(config: SpendGuardConfig);
|
|
52
|
-
/**
|
|
53
|
-
* Hydrate the chain pointer from the log store. Call this once at startup
|
|
54
|
-
* if the log store is persistent and may already contain entries from a
|
|
55
|
-
* previous run.
|
|
56
|
-
*/
|
|
57
57
|
hydrate(): Promise<void>;
|
|
58
|
-
/**
|
|
59
|
-
* Evaluate the policy for a call and append to the decision log.
|
|
60
|
-
* Returns the decision plus the signed log entry (or null if unsigned).
|
|
61
|
-
*/
|
|
62
58
|
decide(call: CallContext): Promise<{
|
|
63
59
|
decision: SpendDecision;
|
|
64
60
|
signed: SignedDecisionLogEntry | null;
|
|
65
61
|
}>;
|
|
62
|
+
settleStreamUsage(decisionId: string, actualInputTokens: number, actualOutputTokens: number, options?: StreamSettlementOptions): Promise<StreamSettlementResult | null>;
|
|
63
|
+
private signAndAppendDecision;
|
|
64
|
+
private rememberReservation;
|
|
65
|
+
private buildSettlementDecision;
|
|
66
66
|
private getSignerFingerprint;
|
|
67
67
|
private refreshChainHead;
|
|
68
68
|
private withDecisionLock;
|
|
69
|
-
/** Default token estimator: approx 1 token per 4 characters of English. */
|
|
70
69
|
private defaultTokenEstimator;
|
|
71
|
-
/** Estimate tokens for a string using the configured estimator. */
|
|
72
70
|
estimateTokens(text: string): number;
|
|
73
|
-
/** Expose the spend store for tests and dashboards. */
|
|
74
71
|
getSpendStore(): SpendStore;
|
|
75
|
-
/** Expose the log store for tests and dashboards. */
|
|
76
72
|
getLogStore(): DecisionLogStore;
|
|
77
73
|
}
|
|
78
|
-
/**
|
|
79
|
-
* Drop-in wrapper for an OpenAI v5+ client.
|
|
80
|
-
*
|
|
81
|
-
* Usage:
|
|
82
|
-
* import OpenAI from 'openai';
|
|
83
|
-
* import { withSpendGuard } from '@merchantguard/agentguard-spend';
|
|
84
|
-
*
|
|
85
|
-
* const openai = new OpenAI();
|
|
86
|
-
* const policy: SpendPolicy = { ... };
|
|
87
|
-
* const guarded = withSpendGuard(openai, { policy, scope: { tenantId, userId } });
|
|
88
|
-
*
|
|
89
|
-
* const completion = await guarded.chat.completions.create({
|
|
90
|
-
* model: 'gpt-5',
|
|
91
|
-
* messages: [{ role: 'user', content: 'hi' }],
|
|
92
|
-
* });
|
|
93
|
-
*
|
|
94
|
-
* Internals:
|
|
95
|
-
* - On every chat.completions.create call we estimate input tokens, decide
|
|
96
|
-
* under the policy, then either pass through, downgrade the model, or
|
|
97
|
-
* short-circuit with a structured `AgentGuardBlockedError`.
|
|
98
|
-
* - After the call returns, we record the actual output tokens for true-up.
|
|
99
|
-
*/
|
|
100
74
|
export interface OpenAIBindingOptions {
|
|
101
75
|
policy: SpendPolicy;
|
|
102
76
|
scope: SpendScope;
|
|
@@ -109,10 +83,19 @@ export declare class AgentGuardBlockedError extends Error {
|
|
|
109
83
|
locale?: string;
|
|
110
84
|
constructor(decision: SpendDecision, scope?: SpendScope, locale?: string);
|
|
111
85
|
}
|
|
112
|
-
/**
|
|
113
|
-
* Wrap an OpenAI client. Returns a proxy whose chat.completions.create
|
|
114
|
-
* enforces the spend policy. Other endpoints pass through untouched in this
|
|
115
|
-
* alpha; subsequent releases will cover responses, embeddings, and images.
|
|
116
|
-
*/
|
|
117
86
|
export declare function withSpendGuard(client: any, opts: OpenAIBindingOptions): any;
|
|
87
|
+
export declare function serializeMessages(messages: unknown): string;
|
|
88
|
+
export declare function serializeMessageContent(message: unknown): string;
|
|
89
|
+
export declare function extractText(value: unknown): string;
|
|
90
|
+
export declare function outputTokensFromParams(params: unknown): number;
|
|
91
|
+
export interface UsageCounts {
|
|
92
|
+
inputTokens: number;
|
|
93
|
+
outputTokens: number;
|
|
94
|
+
}
|
|
95
|
+
export declare function extractUsage(response: unknown): UsageCounts | null;
|
|
96
|
+
export declare function usageCountsFromObject(usage: unknown): UsageCounts | null;
|
|
97
|
+
export declare function wrapUsageStream<T>(stream: AsyncIterable<T>, hooks: {
|
|
98
|
+
onChunk: (chunk: T) => void;
|
|
99
|
+
settle: (partial: boolean, reason?: string) => Promise<unknown>;
|
|
100
|
+
}): AsyncIterable<T>;
|
|
118
101
|
//# sourceMappingURL=spend-guard.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spend-guard.d.ts","sourceRoot":"","sources":["../src/spend-guard.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;
|
|
1
|
+
{"version":3,"file":"spend-guard.d.ts","sourceRoot":"","sources":["../src/spend-guard.ts"],"names":[],"mappings":"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"}
|
package/dist/spend-guard.js
CHANGED
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* AgentGuard(TM) Spend: Core SDK entry point
|
|
4
4
|
*
|
|
5
|
-
* `withSpendGuard()` wraps
|
|
6
|
-
*
|
|
5
|
+
* `withSpendGuard()` wraps provider SDK clients and enforces a SpendPolicy
|
|
6
|
+
* locally before each call is sent to the provider.
|
|
7
7
|
*
|
|
8
8
|
* Design rule: ZERO DATA PLANE INVOLVEMENT.
|
|
9
9
|
* - Prompts never leave the customer process.
|
|
@@ -18,6 +18,14 @@
|
|
|
18
18
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
19
19
|
exports.AgentGuardBlockedError = exports.SpendGuard = void 0;
|
|
20
20
|
exports.withSpendGuard = withSpendGuard;
|
|
21
|
+
exports.serializeMessages = serializeMessages;
|
|
22
|
+
exports.serializeMessageContent = serializeMessageContent;
|
|
23
|
+
exports.extractText = extractText;
|
|
24
|
+
exports.outputTokensFromParams = outputTokensFromParams;
|
|
25
|
+
exports.extractUsage = extractUsage;
|
|
26
|
+
exports.usageCountsFromObject = usageCountsFromObject;
|
|
27
|
+
exports.wrapUsageStream = wrapUsageStream;
|
|
28
|
+
const crypto_1 = require("crypto");
|
|
21
29
|
const policy_1 = require("./policy");
|
|
22
30
|
const decision_log_1 = require("./decision-log");
|
|
23
31
|
const store_memory_1 = require("./store-memory");
|
|
@@ -32,17 +40,13 @@ class SpendGuard {
|
|
|
32
40
|
nextSequence = 0;
|
|
33
41
|
previousHash = decision_log_1.GENESIS_PREVIOUS_HASH;
|
|
34
42
|
decisionLock = Promise.resolve();
|
|
43
|
+
reservations = new Map();
|
|
35
44
|
constructor(config) {
|
|
36
45
|
this.config = config;
|
|
37
46
|
this.spendStore = config.spendStore ?? new store_memory_1.InMemorySpendStore();
|
|
38
47
|
this.logStore = config.logStore ?? new decision_log_2.InMemoryDecisionLogStore();
|
|
39
48
|
(0, telemetry_1.recordTelemetryEvent)('sdk_init');
|
|
40
49
|
}
|
|
41
|
-
/**
|
|
42
|
-
* Hydrate the chain pointer from the log store. Call this once at startup
|
|
43
|
-
* if the log store is persistent and may already contain entries from a
|
|
44
|
-
* previous run.
|
|
45
|
-
*/
|
|
46
50
|
async hydrate() {
|
|
47
51
|
await this.withDecisionLock(async () => {
|
|
48
52
|
const latest = await this.logStore.getLatest(this.getSignerFingerprint());
|
|
@@ -52,27 +56,11 @@ class SpendGuard {
|
|
|
52
56
|
}
|
|
53
57
|
});
|
|
54
58
|
}
|
|
55
|
-
/**
|
|
56
|
-
* Evaluate the policy for a call and append to the decision log.
|
|
57
|
-
* Returns the decision plus the signed log entry (or null if unsigned).
|
|
58
|
-
*/
|
|
59
59
|
async decide(call) {
|
|
60
60
|
const result = await this.withDecisionLock(async () => {
|
|
61
61
|
const decision = await (0, policy_1.evaluatePolicy)(this.config.policy, call, this.spendStore);
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
await this.refreshChainHead();
|
|
65
|
-
signed = await (0, decision_log_1.signDecision)({
|
|
66
|
-
sequence: this.nextSequence,
|
|
67
|
-
decision,
|
|
68
|
-
previousHash: this.previousHash,
|
|
69
|
-
privateKey: this.config.signingKeys.privateKey,
|
|
70
|
-
publicKey: this.config.signingKeys.publicKey,
|
|
71
|
-
});
|
|
72
|
-
await this.logStore.append(signed);
|
|
73
|
-
this.nextSequence += 1;
|
|
74
|
-
this.previousHash = signed.entryHash;
|
|
75
|
-
}
|
|
62
|
+
const signed = await this.signAndAppendDecision(decision);
|
|
63
|
+
this.rememberReservation(call, decision);
|
|
76
64
|
return { decision, signed };
|
|
77
65
|
});
|
|
78
66
|
if (this.config.onDecision) {
|
|
@@ -80,6 +68,102 @@ class SpendGuard {
|
|
|
80
68
|
}
|
|
81
69
|
return result;
|
|
82
70
|
}
|
|
71
|
+
async settleStreamUsage(decisionId, actualInputTokens, actualOutputTokens, options = {}) {
|
|
72
|
+
validateTokenCount('actualInputTokens', actualInputTokens);
|
|
73
|
+
validateTokenCount('actualOutputTokens', actualOutputTokens);
|
|
74
|
+
const result = await this.withDecisionLock(async () => {
|
|
75
|
+
const reservation = this.reservations.get(decisionId);
|
|
76
|
+
if (!reservation || reservation.settled)
|
|
77
|
+
return null;
|
|
78
|
+
reservation.settled = true;
|
|
79
|
+
const actualCents = (0, cost_table_1.computeCallCents)(reservation.decision.modelResolved, actualInputTokens, actualOutputTokens);
|
|
80
|
+
if (actualCents === null)
|
|
81
|
+
return null;
|
|
82
|
+
const deltaCents = actualCents - reservation.chargedCents;
|
|
83
|
+
if (deltaCents !== 0) {
|
|
84
|
+
await (0, policy_1.adjustPolicyWindowSpend)(reservation.policy, this.spendStore, deltaCents);
|
|
85
|
+
}
|
|
86
|
+
const settlement = this.buildSettlementDecision({
|
|
87
|
+
reservation,
|
|
88
|
+
actualInputTokens,
|
|
89
|
+
actualOutputTokens,
|
|
90
|
+
actualCents,
|
|
91
|
+
deltaCents,
|
|
92
|
+
partial: options.partial === true,
|
|
93
|
+
reason: options.reason,
|
|
94
|
+
});
|
|
95
|
+
const signed = await this.signAndAppendDecision(settlement);
|
|
96
|
+
return { decision: settlement, signed, deltaCents };
|
|
97
|
+
});
|
|
98
|
+
if (result && this.config.onDecision) {
|
|
99
|
+
await this.config.onDecision(result.decision, result.signed);
|
|
100
|
+
}
|
|
101
|
+
return result;
|
|
102
|
+
}
|
|
103
|
+
async signAndAppendDecision(decision) {
|
|
104
|
+
if (!this.config.signingKeys)
|
|
105
|
+
return null;
|
|
106
|
+
await this.refreshChainHead();
|
|
107
|
+
const signed = await (0, decision_log_1.signDecision)({
|
|
108
|
+
sequence: this.nextSequence,
|
|
109
|
+
decision,
|
|
110
|
+
previousHash: this.previousHash,
|
|
111
|
+
privateKey: this.config.signingKeys.privateKey,
|
|
112
|
+
publicKey: this.config.signingKeys.publicKey,
|
|
113
|
+
});
|
|
114
|
+
await this.logStore.append(signed);
|
|
115
|
+
this.nextSequence += 1;
|
|
116
|
+
this.previousHash = signed.entryHash;
|
|
117
|
+
return signed;
|
|
118
|
+
}
|
|
119
|
+
rememberReservation(call, decision) {
|
|
120
|
+
if (decision.action !== 'allow' && decision.action !== 'downgrade' && decision.action !== 'shadow')
|
|
121
|
+
return;
|
|
122
|
+
const chargedCents = (0, cost_table_1.computeCallCents)(decision.modelResolved, call.inputTokens, call.outputTokens);
|
|
123
|
+
if (chargedCents === null)
|
|
124
|
+
return;
|
|
125
|
+
this.reservations.set(decision.decisionId, {
|
|
126
|
+
policy: this.config.policy,
|
|
127
|
+
call,
|
|
128
|
+
decision,
|
|
129
|
+
chargedCents,
|
|
130
|
+
settled: false,
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
buildSettlementDecision(args) {
|
|
134
|
+
const { reservation } = args;
|
|
135
|
+
return {
|
|
136
|
+
decisionId: (0, crypto_1.randomUUID)(),
|
|
137
|
+
timestamp: new Date().toISOString(),
|
|
138
|
+
action: 'allow',
|
|
139
|
+
triggeredCap: reservation.decision.triggeredCap,
|
|
140
|
+
triggeredScopeKey: reservation.decision.triggeredScopeKey,
|
|
141
|
+
projectedCents: args.actualCents,
|
|
142
|
+
windowSpendBefore: reservation.decision.windowSpendAfter,
|
|
143
|
+
windowSpendAfter: Math.max(0, reservation.decision.windowSpendAfter + args.deltaCents),
|
|
144
|
+
provider: reservation.decision.provider,
|
|
145
|
+
modelRequested: reservation.decision.modelRequested,
|
|
146
|
+
modelResolved: reservation.decision.modelResolved,
|
|
147
|
+
policyId: reservation.policy.id,
|
|
148
|
+
policyVersion: reservation.policy.version,
|
|
149
|
+
enforcementMode: reservation.policy.mode,
|
|
150
|
+
reasons: [
|
|
151
|
+
`Usage settlement for decision ${reservation.decision.decisionId}: ` +
|
|
152
|
+
`estimated=${reservation.chargedCents}c actual=${args.actualCents}c delta=${args.deltaCents}c` +
|
|
153
|
+
(args.partial ? ' partial=true' : '') +
|
|
154
|
+
(args.reason ? ` reason=${args.reason}` : ''),
|
|
155
|
+
],
|
|
156
|
+
entryType: 'settlement',
|
|
157
|
+
originalDecisionId: reservation.decision.decisionId,
|
|
158
|
+
estimatedInputTokens: reservation.call.inputTokens,
|
|
159
|
+
estimatedOutputTokens: reservation.call.outputTokens,
|
|
160
|
+
actualInputTokens: args.actualInputTokens,
|
|
161
|
+
actualOutputTokens: args.actualOutputTokens,
|
|
162
|
+
actualCents: args.actualCents,
|
|
163
|
+
deltaCents: args.deltaCents,
|
|
164
|
+
partial: args.partial,
|
|
165
|
+
};
|
|
166
|
+
}
|
|
83
167
|
getSignerFingerprint() {
|
|
84
168
|
return this.config.signingKeys
|
|
85
169
|
? (0, decision_log_1.computeSignerFingerprint)(this.config.signingKeys.publicKey)
|
|
@@ -106,20 +190,18 @@ class SpendGuard {
|
|
|
106
190
|
release();
|
|
107
191
|
}
|
|
108
192
|
}
|
|
109
|
-
/** Default token estimator: approx 1 token per 4 characters of English. */
|
|
110
193
|
defaultTokenEstimator(text) {
|
|
111
194
|
return Math.ceil(text.length / 4);
|
|
112
195
|
}
|
|
113
|
-
/** Estimate tokens for a string using the configured estimator. */
|
|
114
196
|
estimateTokens(text) {
|
|
115
197
|
const fn = this.config.tokenEstimator ?? this.defaultTokenEstimator;
|
|
116
|
-
|
|
198
|
+
const tokens = fn(text);
|
|
199
|
+
validateTokenCount('estimatedTokens', tokens);
|
|
200
|
+
return tokens;
|
|
117
201
|
}
|
|
118
|
-
/** Expose the spend store for tests and dashboards. */
|
|
119
202
|
getSpendStore() {
|
|
120
203
|
return this.spendStore;
|
|
121
204
|
}
|
|
122
|
-
/** Expose the log store for tests and dashboards. */
|
|
123
205
|
getLogStore() {
|
|
124
206
|
return this.logStore;
|
|
125
207
|
}
|
|
@@ -153,90 +235,193 @@ class AgentGuardBlockedError extends Error {
|
|
|
153
235
|
}
|
|
154
236
|
}
|
|
155
237
|
exports.AgentGuardBlockedError = AgentGuardBlockedError;
|
|
156
|
-
|
|
157
|
-
* Wrap an OpenAI client. Returns a proxy whose chat.completions.create
|
|
158
|
-
* enforces the spend policy. Other endpoints pass through untouched in this
|
|
159
|
-
* alpha; subsequent releases will cover responses, embeddings, and images.
|
|
160
|
-
*/
|
|
238
|
+
function withSpendGuard(
|
|
161
239
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
162
|
-
|
|
240
|
+
client, opts) {
|
|
163
241
|
const guard = new SpendGuard({ policy: opts.policy, ...(opts.config ?? {}) });
|
|
164
242
|
const originalCreate = client?.chat?.completions?.create?.bind(client.chat.completions);
|
|
165
243
|
if (!originalCreate) {
|
|
166
|
-
throw new Error('withSpendGuard: expected an OpenAI client with chat.completions.create
|
|
167
|
-
'For Anthropic or AWS Bedrock, use the Python SDK (agentguard-spend) which has dedicated bindings. ' +
|
|
168
|
-
'Native Node bindings for Anthropic + Bedrock are on the roadmap.');
|
|
244
|
+
throw new Error('withSpendGuard: expected an OpenAI client with chat.completions.create');
|
|
169
245
|
}
|
|
170
246
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
171
247
|
client.chat.completions.create = async (params) => {
|
|
172
|
-
const
|
|
173
|
-
const inputTokens = guard.estimateTokens(inputText);
|
|
174
|
-
const outputTokens = typeof params?.max_completion_tokens === 'number'
|
|
175
|
-
? params.max_completion_tokens
|
|
176
|
-
: typeof params?.max_tokens === 'number'
|
|
177
|
-
? params.max_tokens
|
|
178
|
-
: 512;
|
|
179
|
-
const provider = (0, cost_table_1.inferProvider)(params?.model ?? '');
|
|
180
|
-
const call = {
|
|
181
|
-
provider,
|
|
182
|
-
model: params?.model ?? 'unknown',
|
|
183
|
-
inputTokens,
|
|
184
|
-
outputTokens,
|
|
185
|
-
scope: opts.scope,
|
|
186
|
-
capabilityClaim: opts.capabilityClaim,
|
|
187
|
-
label: params?.metadata?.label,
|
|
188
|
-
};
|
|
248
|
+
const call = buildOpenAICall(params, guard, opts);
|
|
189
249
|
const { decision } = await guard.decide(call);
|
|
190
250
|
if (decision.action === 'block') {
|
|
191
251
|
throw new AgentGuardBlockedError(decision, opts.scope, opts.config?.locale);
|
|
192
252
|
}
|
|
253
|
+
let nextParams = params;
|
|
193
254
|
if (decision.action === 'downgrade' && decision.modelResolved !== decision.modelRequested) {
|
|
194
|
-
|
|
255
|
+
nextParams = { ...params, model: decision.modelResolved };
|
|
195
256
|
}
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
257
|
+
if (nextParams?.stream === true) {
|
|
258
|
+
nextParams = {
|
|
259
|
+
...nextParams,
|
|
260
|
+
stream_options: { ...(nextParams.stream_options ?? {}), include_usage: true },
|
|
261
|
+
};
|
|
262
|
+
const stream = await originalCreate(nextParams);
|
|
263
|
+
return wrapOpenAIStream(stream, guard, decision, call);
|
|
264
|
+
}
|
|
265
|
+
const response = await originalCreate(nextParams);
|
|
266
|
+
await trueUpSpend(guard, decision, response);
|
|
199
267
|
return response;
|
|
200
268
|
};
|
|
201
|
-
// Attach the guard so callers can introspect or await hydration.
|
|
202
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
203
269
|
client.__agentguard = guard;
|
|
204
270
|
return client;
|
|
205
271
|
}
|
|
272
|
+
function buildOpenAICall(
|
|
206
273
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
274
|
+
params, guard, opts) {
|
|
275
|
+
const inputText = serializeMessages(params?.messages ?? []);
|
|
276
|
+
const inputTokens = guard.estimateTokens(inputText);
|
|
277
|
+
const outputTokens = outputTokensFromParams(params);
|
|
278
|
+
const provider = (0, cost_table_1.inferProvider)(params?.model ?? '');
|
|
279
|
+
return {
|
|
280
|
+
provider,
|
|
281
|
+
model: params?.model ?? 'unknown',
|
|
282
|
+
inputTokens,
|
|
283
|
+
outputTokens,
|
|
284
|
+
scope: opts.scope,
|
|
285
|
+
capabilityClaim: opts.capabilityClaim,
|
|
286
|
+
label: params?.metadata?.label,
|
|
287
|
+
};
|
|
288
|
+
}
|
|
207
289
|
function serializeMessages(messages) {
|
|
208
290
|
if (!Array.isArray(messages))
|
|
209
291
|
return '';
|
|
210
|
-
return messages
|
|
211
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
212
|
-
.map((m) => (typeof m?.content === 'string' ? m.content : JSON.stringify(m?.content ?? '')))
|
|
213
|
-
.join('\n');
|
|
292
|
+
return messages.map(serializeMessageContent).join('\n');
|
|
214
293
|
}
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
294
|
+
function serializeMessageContent(message) {
|
|
295
|
+
const content = message?.content ?? message;
|
|
296
|
+
return extractText(content);
|
|
297
|
+
}
|
|
298
|
+
function extractText(value) {
|
|
299
|
+
if (typeof value === 'string')
|
|
300
|
+
return value;
|
|
301
|
+
if (Array.isArray(value))
|
|
302
|
+
return value.map(extractText).join('\n');
|
|
303
|
+
if (value && typeof value === 'object') {
|
|
304
|
+
const obj = value;
|
|
305
|
+
if (typeof obj.text === 'string')
|
|
306
|
+
return obj.text;
|
|
307
|
+
if (typeof obj.content === 'string')
|
|
308
|
+
return obj.content;
|
|
309
|
+
if (Array.isArray(obj.content))
|
|
310
|
+
return extractText(obj.content);
|
|
311
|
+
return JSON.stringify(value);
|
|
312
|
+
}
|
|
313
|
+
return value == null ? '' : String(value);
|
|
314
|
+
}
|
|
315
|
+
function outputTokensFromParams(params) {
|
|
316
|
+
const obj = params;
|
|
317
|
+
const value = obj?.max_completion_tokens ?? obj?.max_tokens ?? obj?.maxTokens;
|
|
318
|
+
return Number.isSafeInteger(value) && value >= 0 ? value : 512;
|
|
229
319
|
}
|
|
230
320
|
function extractUsage(response) {
|
|
231
321
|
const usage = response?.usage;
|
|
232
|
-
|
|
322
|
+
return usageCountsFromObject(usage);
|
|
323
|
+
}
|
|
324
|
+
function usageCountsFromObject(usage) {
|
|
325
|
+
if (!usage || typeof usage !== 'object')
|
|
233
326
|
return null;
|
|
234
|
-
const
|
|
235
|
-
const
|
|
327
|
+
const obj = usage;
|
|
328
|
+
const input = obj.prompt_tokens ?? obj.input_tokens ?? obj.inputTokens;
|
|
329
|
+
const output = obj.completion_tokens ?? obj.output_tokens ?? obj.outputTokens;
|
|
236
330
|
if (!Number.isSafeInteger(input) || !Number.isSafeInteger(output))
|
|
237
331
|
return null;
|
|
238
332
|
if (input < 0 || output < 0)
|
|
239
333
|
return null;
|
|
240
334
|
return { inputTokens: input, outputTokens: output };
|
|
241
335
|
}
|
|
336
|
+
async function trueUpSpend(guard, decision, response) {
|
|
337
|
+
if (decision.action !== 'allow' && decision.action !== 'downgrade' && decision.action !== 'shadow')
|
|
338
|
+
return;
|
|
339
|
+
const usage = extractUsage(response);
|
|
340
|
+
if (!usage)
|
|
341
|
+
return;
|
|
342
|
+
await guard.settleStreamUsage(decision.decisionId, usage.inputTokens, usage.outputTokens, { partial: false });
|
|
343
|
+
}
|
|
344
|
+
function wrapOpenAIStream(stream, guard, decision, call) {
|
|
345
|
+
const tracker = new OpenAIStreamUsageTracker(guard, call);
|
|
346
|
+
return wrapUsageStream(stream, {
|
|
347
|
+
onChunk: (chunk) => tracker.observe(chunk),
|
|
348
|
+
settle: (partial, reason) => {
|
|
349
|
+
const usage = tracker.usage();
|
|
350
|
+
return guard.settleStreamUsage(decision.decisionId, usage.inputTokens, usage.outputTokens, { partial, reason });
|
|
351
|
+
},
|
|
352
|
+
});
|
|
353
|
+
}
|
|
354
|
+
class OpenAIStreamUsageTracker {
|
|
355
|
+
guard;
|
|
356
|
+
call;
|
|
357
|
+
usageInput = null;
|
|
358
|
+
usageOutput = null;
|
|
359
|
+
content = '';
|
|
360
|
+
constructor(guard, call) {
|
|
361
|
+
this.guard = guard;
|
|
362
|
+
this.call = call;
|
|
363
|
+
}
|
|
364
|
+
observe(chunk) {
|
|
365
|
+
const usage = extractUsage(chunk);
|
|
366
|
+
if (usage) {
|
|
367
|
+
this.usageInput = usage.inputTokens;
|
|
368
|
+
this.usageOutput = usage.outputTokens;
|
|
369
|
+
}
|
|
370
|
+
const choices = chunk?.choices;
|
|
371
|
+
if (!Array.isArray(choices))
|
|
372
|
+
return;
|
|
373
|
+
for (const choice of choices) {
|
|
374
|
+
const delta = choice?.delta;
|
|
375
|
+
if (typeof delta?.content === 'string')
|
|
376
|
+
this.content += delta.content;
|
|
377
|
+
}
|
|
378
|
+
}
|
|
379
|
+
usage() {
|
|
380
|
+
return {
|
|
381
|
+
inputTokens: this.usageInput ?? this.call.inputTokens,
|
|
382
|
+
outputTokens: this.usageOutput ?? this.guard.estimateTokens(this.content),
|
|
383
|
+
};
|
|
384
|
+
}
|
|
385
|
+
}
|
|
386
|
+
function wrapUsageStream(stream, hooks) {
|
|
387
|
+
return (async function* wrapped() {
|
|
388
|
+
let completed = false;
|
|
389
|
+
let settled = false;
|
|
390
|
+
const settleOnce = async (partial, reason) => {
|
|
391
|
+
if (settled)
|
|
392
|
+
return;
|
|
393
|
+
settled = true;
|
|
394
|
+
try {
|
|
395
|
+
await hooks.settle(partial, reason);
|
|
396
|
+
}
|
|
397
|
+
catch {
|
|
398
|
+
return;
|
|
399
|
+
}
|
|
400
|
+
};
|
|
401
|
+
try {
|
|
402
|
+
for await (const chunk of stream) {
|
|
403
|
+
hooks.onChunk(chunk);
|
|
404
|
+
yield chunk;
|
|
405
|
+
}
|
|
406
|
+
completed = true;
|
|
407
|
+
}
|
|
408
|
+
catch (err) {
|
|
409
|
+
await settleOnce(true, errorReason(err));
|
|
410
|
+
return;
|
|
411
|
+
}
|
|
412
|
+
finally {
|
|
413
|
+
await settleOnce(!completed, completed ? undefined : 'stream_closed_before_completion');
|
|
414
|
+
}
|
|
415
|
+
})();
|
|
416
|
+
}
|
|
417
|
+
function errorReason(err) {
|
|
418
|
+
if (err instanceof Error && err.message)
|
|
419
|
+
return err.message.slice(0, 120);
|
|
420
|
+
return 'stream_error';
|
|
421
|
+
}
|
|
422
|
+
function validateTokenCount(name, value) {
|
|
423
|
+
if (!Number.isSafeInteger(value) || value < 0) {
|
|
424
|
+
throw new Error(`${name} must be a non-negative safe integer`);
|
|
425
|
+
}
|
|
426
|
+
}
|
|
242
427
|
//# sourceMappingURL=spend-guard.js.map
|
package/dist/spend-guard.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spend-guard.js","sourceRoot":"","sources":["../src/spend-guard.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"spend-guard.js","sourceRoot":"","sources":["../src/spend-guard.ts"],"names":[],"mappings":"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"}
|
package/dist/telemetry.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"telemetry.d.ts","sourceRoot":"","sources":["../src/telemetry.ts"],"names":[],"mappings":"AAYA,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,SAAS,EAAE,MAAM,CAAC;CACnB;
|
|
1
|
+
{"version":3,"file":"telemetry.d.ts","sourceRoot":"","sources":["../src/telemetry.ts"],"names":[],"mappings":"AAYA,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,SAAS,EAAE,MAAM,CAAC;CACnB;AAQD,wBAAgB,eAAe,IAAI,eAAe,CAOjD;AAED,wBAAgB,eAAe,IAAI,eAAe,CAOjD;AAED,wBAAgB,gBAAgB,IAAI,eAAe,CAIlD;AAED,wBAAgB,uBAAuB,IAAI,eAAe,CAIzD;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAwCxD"}
|