@frugalco/frugal-sdk-node 0.1.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/LICENSE +201 -0
- package/README.md +227 -0
- package/dist/block-hash-lru.d.ts +18 -0
- package/dist/block-hash-lru.d.ts.map +1 -0
- package/dist/block-hash-lru.js +48 -0
- package/dist/block-hash-lru.js.map +1 -0
- package/dist/caller.d.ts +23 -0
- package/dist/caller.d.ts.map +1 -0
- package/dist/caller.js +204 -0
- package/dist/caller.js.map +1 -0
- package/dist/config.d.ts +21 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +165 -0
- package/dist/config.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -0
- package/dist/instrument.d.ts +49 -0
- package/dist/instrument.d.ts.map +1 -0
- package/dist/instrument.js +194 -0
- package/dist/instrument.js.map +1 -0
- package/dist/otel.d.ts +27 -0
- package/dist/otel.d.ts.map +1 -0
- package/dist/otel.js +211 -0
- package/dist/otel.js.map +1 -0
- package/dist/prompt-analyzer.d.ts +26 -0
- package/dist/prompt-analyzer.d.ts.map +1 -0
- package/dist/prompt-analyzer.js +210 -0
- package/dist/prompt-analyzer.js.map +1 -0
- package/dist/semconv.d.ts +52 -0
- package/dist/semconv.d.ts.map +1 -0
- package/dist/semconv.js +53 -0
- package/dist/semconv.js.map +1 -0
- package/dist/streams.d.ts +21 -0
- package/dist/streams.d.ts.map +1 -0
- package/dist/streams.js +85 -0
- package/dist/streams.js.map +1 -0
- package/dist/track.d.ts +44 -0
- package/dist/track.d.ts.map +1 -0
- package/dist/track.js +170 -0
- package/dist/track.js.map +1 -0
- package/dist/wrappers/anthropic.d.ts +2 -0
- package/dist/wrappers/anthropic.d.ts.map +1 -0
- package/dist/wrappers/anthropic.js +229 -0
- package/dist/wrappers/anthropic.js.map +1 -0
- package/dist/wrappers/bedrock-models.d.ts +26 -0
- package/dist/wrappers/bedrock-models.d.ts.map +1 -0
- package/dist/wrappers/bedrock-models.js +320 -0
- package/dist/wrappers/bedrock-models.js.map +1 -0
- package/dist/wrappers/bedrock.d.ts +2 -0
- package/dist/wrappers/bedrock.d.ts.map +1 -0
- package/dist/wrappers/bedrock.js +284 -0
- package/dist/wrappers/bedrock.js.map +1 -0
- package/dist/wrappers/openai.d.ts +2 -0
- package/dist/wrappers/openai.d.ts.map +1 -0
- package/dist/wrappers/openai.js +347 -0
- package/dist/wrappers/openai.js.map +1 -0
- package/package.json +60 -0
|
@@ -0,0 +1,320 @@
|
|
|
1
|
+
// Per-provider response-shape dispatch for AWS Bedrock.
|
|
2
|
+
//
|
|
3
|
+
// Mirrors python/src/frugal_metrics/wrappers/bedrock_models.py. v1 ships
|
|
4
|
+
// per-provider extractors for Anthropic Claude, OpenAI gpt-oss, Amazon Nova,
|
|
5
|
+
// Meta Llama, Mistral. Everything else falls through to the universal handler
|
|
6
|
+
// which uses Bedrock's `amazon-bedrock-invocationMetrics` chunk (streaming) /
|
|
7
|
+
// `x-amzn-bedrock-*-token-count` HTTP headers (non-streaming).
|
|
8
|
+
// --- Cross-region inference profile prefixes -----------------------------
|
|
9
|
+
const CROSS_REGION_PREFIX_RE = /^(us|eu|jp|apac|au|global)\./;
|
|
10
|
+
export function stripCrossRegionPrefix(modelId) {
|
|
11
|
+
return modelId.replace(CROSS_REGION_PREFIX_RE, "");
|
|
12
|
+
}
|
|
13
|
+
// --- Tiny helpers --------------------------------------------------------
|
|
14
|
+
function asObject(v) {
|
|
15
|
+
return v && typeof v === "object" ? v : {};
|
|
16
|
+
}
|
|
17
|
+
function asNumber(v) {
|
|
18
|
+
return typeof v === "number" ? v : null;
|
|
19
|
+
}
|
|
20
|
+
function asString(v) {
|
|
21
|
+
return typeof v === "string" ? v : null;
|
|
22
|
+
}
|
|
23
|
+
function tryInt(v) {
|
|
24
|
+
if (typeof v === "number" && Number.isFinite(v))
|
|
25
|
+
return Math.trunc(v);
|
|
26
|
+
if (typeof v === "string") {
|
|
27
|
+
const parsed = Number.parseInt(v, 10);
|
|
28
|
+
return Number.isNaN(parsed) ? null : parsed;
|
|
29
|
+
}
|
|
30
|
+
return null;
|
|
31
|
+
}
|
|
32
|
+
// --- Per-provider InvokeModel response extractors -----------------------
|
|
33
|
+
function anthropicInvokeUsage(body) {
|
|
34
|
+
const usage = asObject(body.usage);
|
|
35
|
+
const thinking = asNumber(usage.thinking_tokens);
|
|
36
|
+
return {
|
|
37
|
+
responseModel: asString(body.model),
|
|
38
|
+
inputTokens: asNumber(usage.input_tokens),
|
|
39
|
+
outputTokens: asNumber(usage.output_tokens),
|
|
40
|
+
cacheReadTokens: asNumber(usage.cache_read_input_tokens),
|
|
41
|
+
cacheWriteTokens: asNumber(usage.cache_creation_input_tokens),
|
|
42
|
+
reasoningTokens: thinking,
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
function openaiGptOssInvokeUsage(body) {
|
|
46
|
+
const usage = asObject(body.usage);
|
|
47
|
+
return {
|
|
48
|
+
responseModel: asString(body.model),
|
|
49
|
+
inputTokens: asNumber(usage.prompt_tokens),
|
|
50
|
+
outputTokens: asNumber(usage.completion_tokens),
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
function amazonNovaInvokeUsage(body) {
|
|
54
|
+
const usage = asObject(body.usage);
|
|
55
|
+
return {
|
|
56
|
+
responseModel: asString(body.model) ?? asString(body.modelId),
|
|
57
|
+
inputTokens: asNumber(usage.inputTokens),
|
|
58
|
+
outputTokens: asNumber(usage.outputTokens),
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
function metaLlamaInvokeUsage(body) {
|
|
62
|
+
return {
|
|
63
|
+
inputTokens: asNumber(body.prompt_token_count),
|
|
64
|
+
outputTokens: asNumber(body.generation_token_count),
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
function mistralInvokeUsage(_body) {
|
|
68
|
+
// Mistral on Bedrock historically didn't include usage in the body — let the
|
|
69
|
+
// universal HTTP-header path in the wrapper fill it in.
|
|
70
|
+
return {};
|
|
71
|
+
}
|
|
72
|
+
function emptyInvokeUsage(_body) {
|
|
73
|
+
return {};
|
|
74
|
+
}
|
|
75
|
+
// --- Universal Converse extractor (every provider returns the same shape) -
|
|
76
|
+
export function extractConverseUsageUniversal(response) {
|
|
77
|
+
const usage = asObject(response.usage);
|
|
78
|
+
return {
|
|
79
|
+
inputTokens: asNumber(usage.inputTokens),
|
|
80
|
+
outputTokens: asNumber(usage.outputTokens),
|
|
81
|
+
cacheReadTokens: asNumber(usage.cacheReadInputTokens),
|
|
82
|
+
cacheWriteTokens: asNumber(usage.cacheWriteInputTokens),
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
export function extractConverseStreamEvent(event) {
|
|
86
|
+
const metadata = asObject(event.metadata);
|
|
87
|
+
if (Object.keys(metadata).length === 0)
|
|
88
|
+
return null;
|
|
89
|
+
const usage = asObject(metadata.usage);
|
|
90
|
+
if (Object.keys(usage).length === 0)
|
|
91
|
+
return null;
|
|
92
|
+
return {
|
|
93
|
+
inputTokens: asNumber(usage.inputTokens),
|
|
94
|
+
outputTokens: asNumber(usage.outputTokens),
|
|
95
|
+
cacheReadTokens: asNumber(usage.cacheReadInputTokens),
|
|
96
|
+
cacheWriteTokens: asNumber(usage.cacheWriteInputTokens),
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
// --- Universal InvokeModel stream extractor (final-chunk metrics) --------
|
|
100
|
+
export function extractInvokeModelStreamEventUniversal(event) {
|
|
101
|
+
const decoded = decodeInvokeModelChunk(event);
|
|
102
|
+
if (decoded === null)
|
|
103
|
+
return null;
|
|
104
|
+
const metrics = asObject(decoded["amazon-bedrock-invocationMetrics"]);
|
|
105
|
+
if (Object.keys(metrics).length === 0)
|
|
106
|
+
return null;
|
|
107
|
+
return {
|
|
108
|
+
inputTokens: asNumber(metrics.inputTokenCount),
|
|
109
|
+
outputTokens: asNumber(metrics.outputTokenCount),
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
function invokeModelStreamEventAnthropic(event) {
|
|
113
|
+
const decoded = decodeInvokeModelChunk(event);
|
|
114
|
+
if (decoded === null)
|
|
115
|
+
return null;
|
|
116
|
+
const eventType = asString(decoded.type);
|
|
117
|
+
if (eventType === "message_start") {
|
|
118
|
+
const message = asObject(decoded.message);
|
|
119
|
+
const usage = asObject(message.usage);
|
|
120
|
+
return {
|
|
121
|
+
responseModel: asString(message.model),
|
|
122
|
+
inputTokens: asNumber(usage.input_tokens),
|
|
123
|
+
outputTokens: asNumber(usage.output_tokens),
|
|
124
|
+
cacheReadTokens: asNumber(usage.cache_read_input_tokens),
|
|
125
|
+
cacheWriteTokens: asNumber(usage.cache_creation_input_tokens),
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
if (eventType === "message_delta") {
|
|
129
|
+
const usage = asObject(decoded.usage);
|
|
130
|
+
const out = asNumber(usage.output_tokens);
|
|
131
|
+
if (out !== null)
|
|
132
|
+
return { outputTokens: out };
|
|
133
|
+
}
|
|
134
|
+
return null;
|
|
135
|
+
}
|
|
136
|
+
function decodeInvokeModelChunk(event) {
|
|
137
|
+
const chunk = asObject(event.chunk);
|
|
138
|
+
const raw = chunk.bytes;
|
|
139
|
+
if (!raw)
|
|
140
|
+
return null;
|
|
141
|
+
let text;
|
|
142
|
+
if (raw instanceof Uint8Array) {
|
|
143
|
+
text = new TextDecoder("utf-8").decode(raw);
|
|
144
|
+
}
|
|
145
|
+
else if (typeof raw === "string") {
|
|
146
|
+
text = raw;
|
|
147
|
+
}
|
|
148
|
+
else {
|
|
149
|
+
return null;
|
|
150
|
+
}
|
|
151
|
+
try {
|
|
152
|
+
const decoded = JSON.parse(text);
|
|
153
|
+
return decoded && typeof decoded === "object" ? decoded : null;
|
|
154
|
+
}
|
|
155
|
+
catch {
|
|
156
|
+
return null;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
// --- Universal HTTP-header extractor (non-streaming InvokeModel fallback) -
|
|
160
|
+
export function extractUniversalHeadersUsage(metadata) {
|
|
161
|
+
// AWS SDK v3 surfaces these as response.$metadata.httpHeaders or as
|
|
162
|
+
// response.$metadata when the SDK doesn't preserve headers. Callers pass
|
|
163
|
+
// the headers map directly.
|
|
164
|
+
const headers = asObject(metadata);
|
|
165
|
+
return {
|
|
166
|
+
inputTokens: tryInt(headers["x-amzn-bedrock-input-token-count"] ?? headers["X-Amzn-Bedrock-Input-Token-Count"]),
|
|
167
|
+
outputTokens: tryInt(headers["x-amzn-bedrock-output-token-count"] ?? headers["X-Amzn-Bedrock-Output-Token-Count"]),
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
// --- Request-payload capture (drives the M5 prompt analyzer) -------------
|
|
171
|
+
function captureAnthropicPayload(body) {
|
|
172
|
+
const maxTokens = body.max_tokens;
|
|
173
|
+
return {
|
|
174
|
+
messages: body.messages,
|
|
175
|
+
tools: body.tools,
|
|
176
|
+
responseFormat: undefined,
|
|
177
|
+
maxTokens: typeof maxTokens === "number" ? maxTokens : null,
|
|
178
|
+
system: body.system,
|
|
179
|
+
};
|
|
180
|
+
}
|
|
181
|
+
function captureOpenAIPayload(body) {
|
|
182
|
+
let max = body.max_tokens;
|
|
183
|
+
if (typeof max !== "number")
|
|
184
|
+
max = body.max_completion_tokens;
|
|
185
|
+
return {
|
|
186
|
+
messages: body.messages,
|
|
187
|
+
tools: body.tools,
|
|
188
|
+
responseFormat: body.response_format,
|
|
189
|
+
maxTokens: typeof max === "number" ? max : null,
|
|
190
|
+
system: undefined,
|
|
191
|
+
};
|
|
192
|
+
}
|
|
193
|
+
function noPayload(_body) {
|
|
194
|
+
return null;
|
|
195
|
+
}
|
|
196
|
+
// --- Body decode helpers --------------------------------------------------
|
|
197
|
+
export function decodeInvokeModelBody(rawBody) {
|
|
198
|
+
if (rawBody === null || rawBody === undefined)
|
|
199
|
+
return {};
|
|
200
|
+
if (rawBody instanceof Uint8Array) {
|
|
201
|
+
rawBody = new TextDecoder("utf-8").decode(rawBody);
|
|
202
|
+
}
|
|
203
|
+
if (typeof rawBody === "string") {
|
|
204
|
+
try {
|
|
205
|
+
const decoded = JSON.parse(rawBody);
|
|
206
|
+
return decoded && typeof decoded === "object" ? decoded : {};
|
|
207
|
+
}
|
|
208
|
+
catch {
|
|
209
|
+
return {};
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
if (typeof rawBody === "object") {
|
|
213
|
+
return rawBody;
|
|
214
|
+
}
|
|
215
|
+
return {};
|
|
216
|
+
}
|
|
217
|
+
export function decodeInvokeModelResponseBody(body) {
|
|
218
|
+
// AWS SDK v3 returns InvokeModel response.body as Uint8Array (NOT a stream
|
|
219
|
+
// like boto3) — single-shot read, no consume/restore dance needed.
|
|
220
|
+
if (body instanceof Uint8Array) {
|
|
221
|
+
try {
|
|
222
|
+
const decoded = JSON.parse(new TextDecoder("utf-8").decode(body));
|
|
223
|
+
return decoded && typeof decoded === "object" ? decoded : {};
|
|
224
|
+
}
|
|
225
|
+
catch {
|
|
226
|
+
return {};
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
if (typeof body === "string") {
|
|
230
|
+
try {
|
|
231
|
+
const decoded = JSON.parse(body);
|
|
232
|
+
return decoded && typeof decoded === "object" ? decoded : {};
|
|
233
|
+
}
|
|
234
|
+
catch {
|
|
235
|
+
return {};
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
if (body && typeof body === "object")
|
|
239
|
+
return body;
|
|
240
|
+
return {};
|
|
241
|
+
}
|
|
242
|
+
// --- Handler registry -----------------------------------------------------
|
|
243
|
+
export const ANTHROPIC_CLAUDE_HANDLER = {
|
|
244
|
+
name: "anthropic.claude",
|
|
245
|
+
extractInvokeModelUsage: anthropicInvokeUsage,
|
|
246
|
+
extractConverseUsage: extractConverseUsageUniversal,
|
|
247
|
+
extractInvokeModelStreamEvent: invokeModelStreamEventAnthropic,
|
|
248
|
+
captureInvokeModelPayload: captureAnthropicPayload,
|
|
249
|
+
};
|
|
250
|
+
export const OPENAI_GPT_OSS_HANDLER = {
|
|
251
|
+
name: "openai.gpt-oss",
|
|
252
|
+
extractInvokeModelUsage: openaiGptOssInvokeUsage,
|
|
253
|
+
extractConverseUsage: extractConverseUsageUniversal,
|
|
254
|
+
extractInvokeModelStreamEvent: extractInvokeModelStreamEventUniversal,
|
|
255
|
+
captureInvokeModelPayload: captureOpenAIPayload,
|
|
256
|
+
};
|
|
257
|
+
export const AMAZON_NOVA_HANDLER = {
|
|
258
|
+
name: "amazon.nova",
|
|
259
|
+
extractInvokeModelUsage: amazonNovaInvokeUsage,
|
|
260
|
+
extractConverseUsage: extractConverseUsageUniversal,
|
|
261
|
+
extractInvokeModelStreamEvent: extractInvokeModelStreamEventUniversal,
|
|
262
|
+
captureInvokeModelPayload: noPayload,
|
|
263
|
+
};
|
|
264
|
+
export const META_LLAMA_HANDLER = {
|
|
265
|
+
name: "meta.llama",
|
|
266
|
+
extractInvokeModelUsage: metaLlamaInvokeUsage,
|
|
267
|
+
extractConverseUsage: extractConverseUsageUniversal,
|
|
268
|
+
extractInvokeModelStreamEvent: extractInvokeModelStreamEventUniversal,
|
|
269
|
+
captureInvokeModelPayload: noPayload,
|
|
270
|
+
};
|
|
271
|
+
export const MISTRAL_HANDLER = {
|
|
272
|
+
name: "mistral",
|
|
273
|
+
extractInvokeModelUsage: mistralInvokeUsage,
|
|
274
|
+
extractConverseUsage: extractConverseUsageUniversal,
|
|
275
|
+
extractInvokeModelStreamEvent: extractInvokeModelStreamEventUniversal,
|
|
276
|
+
captureInvokeModelPayload: noPayload,
|
|
277
|
+
};
|
|
278
|
+
export const UNIVERSAL_FALLBACK_HANDLER = {
|
|
279
|
+
name: "<universal>",
|
|
280
|
+
extractInvokeModelUsage: emptyInvokeUsage,
|
|
281
|
+
extractConverseUsage: extractConverseUsageUniversal,
|
|
282
|
+
extractInvokeModelStreamEvent: extractInvokeModelStreamEventUniversal,
|
|
283
|
+
captureInvokeModelPayload: noPayload,
|
|
284
|
+
};
|
|
285
|
+
// Order matters: longest provider+family prefix first.
|
|
286
|
+
export const DISPATCH = [
|
|
287
|
+
["anthropic.claude-", ANTHROPIC_CLAUDE_HANDLER],
|
|
288
|
+
["openai.gpt-oss-", OPENAI_GPT_OSS_HANDLER],
|
|
289
|
+
["openai.gpt-", OPENAI_GPT_OSS_HANDLER],
|
|
290
|
+
["amazon.nova-", AMAZON_NOVA_HANDLER],
|
|
291
|
+
["meta.llama", META_LLAMA_HANDLER],
|
|
292
|
+
["mistral.", MISTRAL_HANDLER],
|
|
293
|
+
];
|
|
294
|
+
export function lookupHandler(modelId) {
|
|
295
|
+
const stripped = stripCrossRegionPrefix(modelId);
|
|
296
|
+
for (const [prefix, handler] of DISPATCH) {
|
|
297
|
+
if (stripped.startsWith(prefix))
|
|
298
|
+
return handler;
|
|
299
|
+
}
|
|
300
|
+
return UNIVERSAL_FALLBACK_HANDLER;
|
|
301
|
+
}
|
|
302
|
+
// Update `into` in place with non-null fields from `partial`.
|
|
303
|
+
export function mergeUsage(into, partial) {
|
|
304
|
+
if (!partial)
|
|
305
|
+
return;
|
|
306
|
+
for (const key of [
|
|
307
|
+
"responseModel",
|
|
308
|
+
"inputTokens",
|
|
309
|
+
"outputTokens",
|
|
310
|
+
"cacheReadTokens",
|
|
311
|
+
"cacheWriteTokens",
|
|
312
|
+
"reasoningTokens",
|
|
313
|
+
]) {
|
|
314
|
+
const v = partial[key];
|
|
315
|
+
if (v !== null && v !== undefined) {
|
|
316
|
+
into[key] = v;
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
//# sourceMappingURL=bedrock-models.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bedrock-models.js","sourceRoot":"","sources":["../../src/wrappers/bedrock-models.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bedrock.d.ts","sourceRoot":"","sources":["../../src/wrappers/bedrock.ts"],"names":[],"mappings":"AAsEA,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,CA8B3C"}
|
|
@@ -0,0 +1,284 @@
|
|
|
1
|
+
// AWS SDK v3 BedrockRuntimeClient wrapper.
|
|
2
|
+
//
|
|
3
|
+
// Patches `client.send` on a BedrockRuntimeClient instance and dispatches by
|
|
4
|
+
// `command.constructor.name` (with `instanceof`-style fallback for minified
|
|
5
|
+
// bundles). Covers all four bedrock-runtime operations:
|
|
6
|
+
// - InvokeModelCommand
|
|
7
|
+
// - InvokeModelWithResponseStreamCommand
|
|
8
|
+
// - ConverseCommand
|
|
9
|
+
// - ConverseStreamCommand
|
|
10
|
+
//
|
|
11
|
+
// Per-provider response-shape extraction lives in bedrock-models.ts.
|
|
12
|
+
import { packageDirFor } from "../caller.js";
|
|
13
|
+
import { loadConfig } from "../config.js";
|
|
14
|
+
import { startCall, } from "../instrument.js";
|
|
15
|
+
import { getInstruments } from "../otel.js";
|
|
16
|
+
import { FRUGAL_CUSTOMER_ID, FRUGAL_PROJECT_ID, OP_CHAT, SYSTEM_AWS_BEDROCK, } from "../semconv.js";
|
|
17
|
+
import { wrapStreamObject } from "../streams.js";
|
|
18
|
+
import { ANTHROPIC_CLAUDE_HANDLER, decodeInvokeModelBody, decodeInvokeModelResponseBody, extractConverseStreamEvent, extractInvokeModelStreamEventUniversal, extractUniversalHeadersUsage, lookupHandler, mergeUsage, UNIVERSAL_FALLBACK_HANDLER, } from "./bedrock-models.js";
|
|
19
|
+
const FRUGAL_MARK = "__frugalWrapped";
|
|
20
|
+
// AWS SDK v3 command classes — distinguished by constructor.name.
|
|
21
|
+
const COMMAND_CONVERSE = "ConverseCommand";
|
|
22
|
+
const COMMAND_CONVERSE_STREAM = "ConverseStreamCommand";
|
|
23
|
+
const COMMAND_INVOKE_MODEL = "InvokeModelCommand";
|
|
24
|
+
const COMMAND_INVOKE_MODEL_STREAM = "InvokeModelWithResponseStreamCommand";
|
|
25
|
+
const STREAMING_COMMANDS = new Set([
|
|
26
|
+
COMMAND_CONVERSE_STREAM,
|
|
27
|
+
COMMAND_INVOKE_MODEL_STREAM,
|
|
28
|
+
]);
|
|
29
|
+
const INVOKE_MODEL_COMMANDS = new Set([
|
|
30
|
+
COMMAND_INVOKE_MODEL,
|
|
31
|
+
COMMAND_INVOKE_MODEL_STREAM,
|
|
32
|
+
]);
|
|
33
|
+
export function wrapBedrock(client) {
|
|
34
|
+
const config = loadConfig();
|
|
35
|
+
if (config === null)
|
|
36
|
+
return client;
|
|
37
|
+
const c = client;
|
|
38
|
+
if (c[FRUGAL_MARK])
|
|
39
|
+
return client;
|
|
40
|
+
if (typeof c.send !== "function")
|
|
41
|
+
return client;
|
|
42
|
+
if (!isBedrockRuntimeClient(c))
|
|
43
|
+
return client;
|
|
44
|
+
const original = c.send.bind(c);
|
|
45
|
+
if (original[FRUGAL_MARK])
|
|
46
|
+
return client;
|
|
47
|
+
const skipDirs = [packageDirFor(import.meta.url)];
|
|
48
|
+
const wrapped = makeWrapper(original, { config, skipDirs });
|
|
49
|
+
wrapped[FRUGAL_MARK] = true;
|
|
50
|
+
try {
|
|
51
|
+
c.send = wrapped;
|
|
52
|
+
}
|
|
53
|
+
catch {
|
|
54
|
+
return client;
|
|
55
|
+
}
|
|
56
|
+
try {
|
|
57
|
+
Object.defineProperty(c, FRUGAL_MARK, {
|
|
58
|
+
value: true,
|
|
59
|
+
writable: false,
|
|
60
|
+
enumerable: false,
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
catch {
|
|
64
|
+
// ignore
|
|
65
|
+
}
|
|
66
|
+
return client;
|
|
67
|
+
}
|
|
68
|
+
function isBedrockRuntimeClient(c) {
|
|
69
|
+
// AWS SDK v3 puts `serviceId` on client.config. For BedrockRuntimeClient it
|
|
70
|
+
// is "Bedrock Runtime". Guard against accidentally wrapping S3Client etc.
|
|
71
|
+
const serviceId = c.config?.serviceId;
|
|
72
|
+
if (typeof serviceId === "string" && serviceId === "Bedrock Runtime") {
|
|
73
|
+
return true;
|
|
74
|
+
}
|
|
75
|
+
// Fallback: name-sniff the client class.
|
|
76
|
+
const ctorName = c?.constructor?.name ?? "";
|
|
77
|
+
return ctorName === "BedrockRuntimeClient";
|
|
78
|
+
}
|
|
79
|
+
function makeWrapper(original, opts) {
|
|
80
|
+
return function wrapped(...args) {
|
|
81
|
+
const command = args[0];
|
|
82
|
+
const commandName = commandNameOf(command);
|
|
83
|
+
if (!commandName) {
|
|
84
|
+
// Not a recognized bedrock-runtime command — pass through untouched.
|
|
85
|
+
return original(...args);
|
|
86
|
+
}
|
|
87
|
+
let emit;
|
|
88
|
+
try {
|
|
89
|
+
const ctx = buildCallContext(commandName, command, opts.skipDirs);
|
|
90
|
+
emit = startCall(opts.config, ctx);
|
|
91
|
+
}
|
|
92
|
+
catch (err) {
|
|
93
|
+
recordInternalError("setup_failed", err, opts.config);
|
|
94
|
+
return original(...args);
|
|
95
|
+
}
|
|
96
|
+
let result;
|
|
97
|
+
try {
|
|
98
|
+
result = original(...args);
|
|
99
|
+
}
|
|
100
|
+
catch (err) {
|
|
101
|
+
safe(() => emit.error(err));
|
|
102
|
+
throw err;
|
|
103
|
+
}
|
|
104
|
+
// BedrockRuntimeClient.send returns a Promise.
|
|
105
|
+
return (async () => {
|
|
106
|
+
let response;
|
|
107
|
+
try {
|
|
108
|
+
response = (await result);
|
|
109
|
+
}
|
|
110
|
+
catch (err) {
|
|
111
|
+
safe(() => emit.error(err));
|
|
112
|
+
throw err;
|
|
113
|
+
}
|
|
114
|
+
if (STREAMING_COMMANDS.has(commandName)) {
|
|
115
|
+
try {
|
|
116
|
+
return wrapStreamingResponse(commandName, command, response, emit);
|
|
117
|
+
}
|
|
118
|
+
catch (err) {
|
|
119
|
+
recordInternalError("stream_proxy_failed", err, opts.config);
|
|
120
|
+
return response;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
try {
|
|
124
|
+
const usage = extractNonStreamingUsage(commandName, command, response);
|
|
125
|
+
safe(() => emit.success(usage));
|
|
126
|
+
}
|
|
127
|
+
catch {
|
|
128
|
+
safe(() => emit.success({}));
|
|
129
|
+
}
|
|
130
|
+
return response;
|
|
131
|
+
})();
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
function commandNameOf(command) {
|
|
135
|
+
if (!command || typeof command !== "object")
|
|
136
|
+
return "";
|
|
137
|
+
const name = command.constructor?.name;
|
|
138
|
+
if (typeof name !== "string" || name.length === 0)
|
|
139
|
+
return "";
|
|
140
|
+
if (name === COMMAND_CONVERSE ||
|
|
141
|
+
name === COMMAND_CONVERSE_STREAM ||
|
|
142
|
+
name === COMMAND_INVOKE_MODEL ||
|
|
143
|
+
name === COMMAND_INVOKE_MODEL_STREAM) {
|
|
144
|
+
return name;
|
|
145
|
+
}
|
|
146
|
+
return "";
|
|
147
|
+
}
|
|
148
|
+
function buildCallContext(commandName, command, skipDirs) {
|
|
149
|
+
const input = (command?.input ?? {});
|
|
150
|
+
const modelId = typeof input.modelId === "string" ? input.modelId : "<unknown>";
|
|
151
|
+
const handler = lookupHandler(modelId);
|
|
152
|
+
let payload = null;
|
|
153
|
+
if (INVOKE_MODEL_COMMANDS.has(commandName)) {
|
|
154
|
+
const body = decodeInvokeModelBody(input.body);
|
|
155
|
+
payload = handler.captureInvokeModelPayload(body);
|
|
156
|
+
}
|
|
157
|
+
else {
|
|
158
|
+
payload = captureConversePayload(input);
|
|
159
|
+
}
|
|
160
|
+
return {
|
|
161
|
+
system: SYSTEM_AWS_BEDROCK,
|
|
162
|
+
operation: OP_CHAT,
|
|
163
|
+
requestModel: modelId,
|
|
164
|
+
skipPackageDirs: skipDirs,
|
|
165
|
+
batched: false,
|
|
166
|
+
requestPayload: payload ?? undefined,
|
|
167
|
+
};
|
|
168
|
+
}
|
|
169
|
+
function captureConversePayload(input) {
|
|
170
|
+
const inferenceConfig = (input.inferenceConfig ?? {});
|
|
171
|
+
const toolConfig = (input.toolConfig ?? {});
|
|
172
|
+
const maxTokens = typeof inferenceConfig.maxTokens === "number"
|
|
173
|
+
? inferenceConfig.maxTokens
|
|
174
|
+
: null;
|
|
175
|
+
return {
|
|
176
|
+
messages: input.messages,
|
|
177
|
+
tools: toolConfig.tools,
|
|
178
|
+
responseFormat: undefined,
|
|
179
|
+
maxTokens,
|
|
180
|
+
system: input.system,
|
|
181
|
+
};
|
|
182
|
+
}
|
|
183
|
+
function extractNonStreamingUsage(commandName, command, response) {
|
|
184
|
+
const input = (command.input ?? {});
|
|
185
|
+
const modelId = typeof input.modelId === "string" ? input.modelId : "";
|
|
186
|
+
const handler = lookupHandler(modelId);
|
|
187
|
+
const usage = {};
|
|
188
|
+
if (commandName === COMMAND_CONVERSE) {
|
|
189
|
+
mergeUsage(usage, handler.extractConverseUsage(response));
|
|
190
|
+
return usage;
|
|
191
|
+
}
|
|
192
|
+
// InvokeModelCommand → response.body is a Uint8Array of JSON
|
|
193
|
+
if (handler !== UNIVERSAL_FALLBACK_HANDLER) {
|
|
194
|
+
const bodyDict = decodeInvokeModelResponseBody(response.body);
|
|
195
|
+
mergeUsage(usage, handler.extractInvokeModelUsage(bodyDict));
|
|
196
|
+
}
|
|
197
|
+
// Always overlay HTTP-header counts (they're always present and provider-
|
|
198
|
+
// agnostic — gives universal coverage even when body parsing yields nothing).
|
|
199
|
+
const metadata = (response.$metadata ?? {});
|
|
200
|
+
const headers = (metadata.httpHeaders ?? metadata);
|
|
201
|
+
mergeUsage(usage, extractUniversalHeadersUsage(headers));
|
|
202
|
+
return usage;
|
|
203
|
+
}
|
|
204
|
+
function wrapStreamingResponse(commandName, command, response, emit) {
|
|
205
|
+
const input = (command.input ?? {});
|
|
206
|
+
const modelId = typeof input.modelId === "string" ? input.modelId : "";
|
|
207
|
+
const handler = lookupHandler(modelId);
|
|
208
|
+
const streamKey = commandName === COMMAND_CONVERSE_STREAM ? "stream" : "body";
|
|
209
|
+
const inner = response[streamKey];
|
|
210
|
+
if (!inner || !isAsyncIterable(inner))
|
|
211
|
+
return response;
|
|
212
|
+
const handlerFn = makeStreamEventHandler(commandName, handler);
|
|
213
|
+
const proxy = wrapStreamObject(inner, emit, handlerFn);
|
|
214
|
+
// Replace the field with the proxy so customer iteration goes through us.
|
|
215
|
+
response[streamKey] = proxy;
|
|
216
|
+
return response;
|
|
217
|
+
}
|
|
218
|
+
function makeStreamEventHandler(commandName, handler) {
|
|
219
|
+
if (commandName === COMMAND_CONVERSE_STREAM) {
|
|
220
|
+
return (event, usage) => {
|
|
221
|
+
mergeUsage(usage, extractConverseStreamEvent(event));
|
|
222
|
+
};
|
|
223
|
+
}
|
|
224
|
+
// invoke_model_with_response_stream — per-provider extractor first, then
|
|
225
|
+
// universal final-chunk metrics so unrecognized models still get tokens.
|
|
226
|
+
return (event, usage) => {
|
|
227
|
+
const e = event;
|
|
228
|
+
mergeUsage(usage, handler.extractInvokeModelStreamEvent(e));
|
|
229
|
+
if (handler !== ANTHROPIC_CLAUDE_HANDLER) {
|
|
230
|
+
mergeUsage(usage, extractInvokeModelStreamEventUniversal(e));
|
|
231
|
+
}
|
|
232
|
+
else {
|
|
233
|
+
// For Anthropic, only fill in tokens the per-provider extractor missed.
|
|
234
|
+
const partial = extractInvokeModelStreamEventUniversal(e);
|
|
235
|
+
if (partial) {
|
|
236
|
+
if (usage.inputTokens === null || usage.inputTokens === undefined) {
|
|
237
|
+
usage.inputTokens = partial.inputTokens;
|
|
238
|
+
}
|
|
239
|
+
if (usage.outputTokens === null || usage.outputTokens === undefined) {
|
|
240
|
+
usage.outputTokens = partial.outputTokens;
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
};
|
|
245
|
+
}
|
|
246
|
+
function isAsyncIterable(v) {
|
|
247
|
+
return (v !== null &&
|
|
248
|
+
typeof v === "object" &&
|
|
249
|
+
typeof v[Symbol.asyncIterator] ===
|
|
250
|
+
"function");
|
|
251
|
+
}
|
|
252
|
+
function safe(fn) {
|
|
253
|
+
try {
|
|
254
|
+
fn();
|
|
255
|
+
}
|
|
256
|
+
catch (err) {
|
|
257
|
+
recordInternalError("emission", err, null);
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
function recordInternalError(stage, err, config) {
|
|
261
|
+
try {
|
|
262
|
+
if (!config)
|
|
263
|
+
return;
|
|
264
|
+
const instruments = getInstruments(config);
|
|
265
|
+
instruments.internalErrors.add(1, {
|
|
266
|
+
...(config.customerId ? { [FRUGAL_CUSTOMER_ID]: config.customerId } : {}),
|
|
267
|
+
[FRUGAL_PROJECT_ID]: config.projectId,
|
|
268
|
+
"frugal.internal_error.stage": stage,
|
|
269
|
+
"frugal.internal_error.type": errorTypeName(err),
|
|
270
|
+
});
|
|
271
|
+
}
|
|
272
|
+
catch {
|
|
273
|
+
// swallow — nothing left to try
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
function errorTypeName(err) {
|
|
277
|
+
if (err && typeof err === "object" && "name" in err && typeof err.name === "string") {
|
|
278
|
+
return err.name;
|
|
279
|
+
}
|
|
280
|
+
if (err instanceof Error)
|
|
281
|
+
return err.constructor.name;
|
|
282
|
+
return "UnknownError";
|
|
283
|
+
}
|
|
284
|
+
//# sourceMappingURL=bedrock.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bedrock.js","sourceRoot":"","sources":["../../src/wrappers/bedrock.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../../src/wrappers/openai.ts"],"names":[],"mappings":"AAmCA,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,CAyD1C"}
|