@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
package/dist/track.js
ADDED
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
// Generic, provider-agnostic AI call-site instrumentation.
|
|
2
|
+
//
|
|
3
|
+
// Where wrapOpenAI/wrapAnthropic/wrapBedrock patch a known client object, this
|
|
4
|
+
// module lets a customer mark ANY function call as an AI call and feed usage
|
|
5
|
+
// data in manually — a custom HTTP call, a CLI shell-out, a gateway/proxy, or a
|
|
6
|
+
// homegrown model wrapper. Two forms: a foolproof callback (`trackAICall`) and a
|
|
7
|
+
// manual start/finish handle (`startAICall`) for calls that cross function
|
|
8
|
+
// boundaries. The callback is built on the handle.
|
|
9
|
+
//
|
|
10
|
+
// Everything here is safe by construction: when the SDK is disabled (no config)
|
|
11
|
+
// every method is a guarded no-op, and no internal failure ever propagates to
|
|
12
|
+
// the caller — the wrapped value/error always passes through untouched.
|
|
13
|
+
import { packageDirFor } from "./caller.js";
|
|
14
|
+
import { loadConfig } from "./config.js";
|
|
15
|
+
import { startCall, } from "./instrument.js";
|
|
16
|
+
import { OP_CHAT, SYSTEM_CUSTOM } from "./semconv.js";
|
|
17
|
+
const NOOP_HANDLE = {
|
|
18
|
+
setUsage() {
|
|
19
|
+
/* no-op */
|
|
20
|
+
},
|
|
21
|
+
end() {
|
|
22
|
+
/* no-op */
|
|
23
|
+
},
|
|
24
|
+
fail() {
|
|
25
|
+
/* no-op */
|
|
26
|
+
},
|
|
27
|
+
};
|
|
28
|
+
// Resolved once — our own package dir, so the caller walk skips every track.ts
|
|
29
|
+
// frame regardless of which entry point (startAICall / trackAICall) was used.
|
|
30
|
+
const SKIP_DIRS = [packageDirFor(import.meta.url)];
|
|
31
|
+
function buildPayload(info) {
|
|
32
|
+
const hasPrompt = info.messages !== undefined ||
|
|
33
|
+
info.system !== undefined ||
|
|
34
|
+
info.tools !== undefined ||
|
|
35
|
+
info.responseFormat !== undefined ||
|
|
36
|
+
info.maxTokens !== undefined;
|
|
37
|
+
if (!hasPrompt)
|
|
38
|
+
return undefined;
|
|
39
|
+
return {
|
|
40
|
+
messages: info.messages,
|
|
41
|
+
system: info.system,
|
|
42
|
+
tools: info.tools,
|
|
43
|
+
responseFormat: info.responseFormat,
|
|
44
|
+
maxTokens: info.maxTokens ?? null,
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Manual/try-finally form. Returns a handle whose methods are guarded no-ops
|
|
49
|
+
* when the SDK is disabled, and which never throws internal errors to the
|
|
50
|
+
* caller. Use `skipFrames: 2` and rely on `skipPackageDirs` to absorb the
|
|
51
|
+
* variable number of internal track.ts frames.
|
|
52
|
+
*/
|
|
53
|
+
export function startAICall(info = {}) {
|
|
54
|
+
let emit;
|
|
55
|
+
try {
|
|
56
|
+
const config = loadConfig();
|
|
57
|
+
if (config === null)
|
|
58
|
+
return NOOP_HANDLE;
|
|
59
|
+
const ctx = {
|
|
60
|
+
system: info.provider ?? SYSTEM_CUSTOM,
|
|
61
|
+
operation: info.operation ?? OP_CHAT,
|
|
62
|
+
requestModel: info.model ?? "<unknown>",
|
|
63
|
+
skipPackageDirs: SKIP_DIRS,
|
|
64
|
+
batched: false,
|
|
65
|
+
requestPayload: buildPayload(info),
|
|
66
|
+
};
|
|
67
|
+
emit = startCall(config, ctx, { skipFrames: 2 });
|
|
68
|
+
}
|
|
69
|
+
catch {
|
|
70
|
+
// Construction must never break the customer's call.
|
|
71
|
+
return NOOP_HANDLE;
|
|
72
|
+
}
|
|
73
|
+
// Local guard so end()/fail() are mutually exclusive and idempotent even
|
|
74
|
+
// before the CallEmitter's own `finalized` guard kicks in.
|
|
75
|
+
let finalized = false;
|
|
76
|
+
const usage = {};
|
|
77
|
+
return {
|
|
78
|
+
setUsage(next) {
|
|
79
|
+
try {
|
|
80
|
+
if (finalized)
|
|
81
|
+
return;
|
|
82
|
+
mergeUsage(usage, next);
|
|
83
|
+
}
|
|
84
|
+
catch {
|
|
85
|
+
/* swallow */
|
|
86
|
+
}
|
|
87
|
+
},
|
|
88
|
+
end(next) {
|
|
89
|
+
try {
|
|
90
|
+
if (finalized)
|
|
91
|
+
return;
|
|
92
|
+
finalized = true;
|
|
93
|
+
if (next)
|
|
94
|
+
mergeUsage(usage, next);
|
|
95
|
+
emit.success(usage);
|
|
96
|
+
}
|
|
97
|
+
catch {
|
|
98
|
+
/* swallow */
|
|
99
|
+
}
|
|
100
|
+
},
|
|
101
|
+
fail(error) {
|
|
102
|
+
try {
|
|
103
|
+
if (finalized)
|
|
104
|
+
return;
|
|
105
|
+
finalized = true;
|
|
106
|
+
emit.error(error);
|
|
107
|
+
}
|
|
108
|
+
catch {
|
|
109
|
+
/* swallow */
|
|
110
|
+
}
|
|
111
|
+
},
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
function mergeUsage(target, next) {
|
|
115
|
+
// Last-write-wins per field — only overwrite fields the caller actually set.
|
|
116
|
+
if (next.responseModel !== undefined)
|
|
117
|
+
target.responseModel = next.responseModel;
|
|
118
|
+
if (next.inputTokens !== undefined)
|
|
119
|
+
target.inputTokens = next.inputTokens;
|
|
120
|
+
if (next.outputTokens !== undefined)
|
|
121
|
+
target.outputTokens = next.outputTokens;
|
|
122
|
+
if (next.cacheReadTokens !== undefined) {
|
|
123
|
+
target.cacheReadTokens = next.cacheReadTokens;
|
|
124
|
+
}
|
|
125
|
+
if (next.cacheWriteTokens !== undefined) {
|
|
126
|
+
target.cacheWriteTokens = next.cacheWriteTokens;
|
|
127
|
+
}
|
|
128
|
+
if (next.reasoningTokens !== undefined) {
|
|
129
|
+
target.reasoningTokens = next.reasoningTokens;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Foolproof callback form, built on startAICall. Runs `fn`, passing a `report`
|
|
134
|
+
* setter to feed usage; finalizes success on return / error on throw. Supports
|
|
135
|
+
* sync and async (thenable) callbacks. The resolved value and any error always
|
|
136
|
+
* pass through untouched.
|
|
137
|
+
*/
|
|
138
|
+
export function trackAICall(info, fn) {
|
|
139
|
+
const handle = startAICall(info);
|
|
140
|
+
const report = (usage) => handle.setUsage(usage);
|
|
141
|
+
let result;
|
|
142
|
+
try {
|
|
143
|
+
result = fn(report);
|
|
144
|
+
}
|
|
145
|
+
catch (err) {
|
|
146
|
+
handle.fail(err);
|
|
147
|
+
throw err;
|
|
148
|
+
}
|
|
149
|
+
if (isPromiseLike(result)) {
|
|
150
|
+
return (async () => {
|
|
151
|
+
try {
|
|
152
|
+
const awaited = await result;
|
|
153
|
+
handle.end();
|
|
154
|
+
return awaited;
|
|
155
|
+
}
|
|
156
|
+
catch (err) {
|
|
157
|
+
handle.fail(err);
|
|
158
|
+
throw err;
|
|
159
|
+
}
|
|
160
|
+
})();
|
|
161
|
+
}
|
|
162
|
+
handle.end();
|
|
163
|
+
return result;
|
|
164
|
+
}
|
|
165
|
+
function isPromiseLike(value) {
|
|
166
|
+
return (value !== null &&
|
|
167
|
+
typeof value === "object" &&
|
|
168
|
+
typeof value.then === "function");
|
|
169
|
+
}
|
|
170
|
+
//# sourceMappingURL=track.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"track.js","sourceRoot":"","sources":["../src/track.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"anthropic.d.ts","sourceRoot":"","sources":["../../src/wrappers/anthropic.ts"],"names":[],"mappings":"AAgCA,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,CAsC7C"}
|
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
// Anthropic client wrapper.
|
|
2
|
+
//
|
|
3
|
+
// Patches messages.create on an Anthropic / AnthropicBedrock / AnthropicVertex
|
|
4
|
+
// client instance (Node SDK). Non-streaming + stream=true. The
|
|
5
|
+
// messages.stream(...) helper API is not yet wrapped (deferred).
|
|
6
|
+
import { packageDirFor } from "../caller.js";
|
|
7
|
+
import { loadConfig } from "../config.js";
|
|
8
|
+
import { startCall, } from "../instrument.js";
|
|
9
|
+
import { getInstruments } from "../otel.js";
|
|
10
|
+
import { FRUGAL_CUSTOMER_ID, FRUGAL_PROJECT_ID, OP_CHAT, SYSTEM_ANTHROPIC, SYSTEM_AWS_BEDROCK, SYSTEM_VERTEX_AI, } from "../semconv.js";
|
|
11
|
+
import { wrapStreamObject } from "../streams.js";
|
|
12
|
+
const FRUGAL_MARK = "__frugalWrapped";
|
|
13
|
+
export function wrapAnthropic(client) {
|
|
14
|
+
const config = loadConfig();
|
|
15
|
+
if (config === null)
|
|
16
|
+
return client;
|
|
17
|
+
const c = client;
|
|
18
|
+
if (c[FRUGAL_MARK])
|
|
19
|
+
return client;
|
|
20
|
+
const messages = c.messages;
|
|
21
|
+
if (!messages || typeof messages.create !== "function")
|
|
22
|
+
return client;
|
|
23
|
+
const original = messages.create.bind(messages);
|
|
24
|
+
if (original[FRUGAL_MARK])
|
|
25
|
+
return client;
|
|
26
|
+
const system = detectSystem(client);
|
|
27
|
+
const skipDirs = [packageDirFor(import.meta.url)];
|
|
28
|
+
const wrapped = makeWrapper(original, {
|
|
29
|
+
config,
|
|
30
|
+
system,
|
|
31
|
+
skipDirs,
|
|
32
|
+
});
|
|
33
|
+
wrapped[FRUGAL_MARK] = true;
|
|
34
|
+
try {
|
|
35
|
+
messages.create = wrapped;
|
|
36
|
+
}
|
|
37
|
+
catch {
|
|
38
|
+
return client;
|
|
39
|
+
}
|
|
40
|
+
try {
|
|
41
|
+
Object.defineProperty(c, FRUGAL_MARK, {
|
|
42
|
+
value: true,
|
|
43
|
+
writable: false,
|
|
44
|
+
enumerable: false,
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
catch {
|
|
48
|
+
// ignore
|
|
49
|
+
}
|
|
50
|
+
return client;
|
|
51
|
+
}
|
|
52
|
+
function detectSystem(client) {
|
|
53
|
+
const name = client && typeof client === "object"
|
|
54
|
+
? client.constructor?.name ?? ""
|
|
55
|
+
: "";
|
|
56
|
+
if (name.includes("Bedrock"))
|
|
57
|
+
return SYSTEM_AWS_BEDROCK;
|
|
58
|
+
if (name.includes("Vertex"))
|
|
59
|
+
return SYSTEM_VERTEX_AI;
|
|
60
|
+
return SYSTEM_ANTHROPIC;
|
|
61
|
+
}
|
|
62
|
+
function makeWrapper(original, opts) {
|
|
63
|
+
return function wrapped(...args) {
|
|
64
|
+
let emit;
|
|
65
|
+
let streaming;
|
|
66
|
+
try {
|
|
67
|
+
const params = (args[0] ?? {});
|
|
68
|
+
streaming = Boolean(params.stream);
|
|
69
|
+
const ctx = {
|
|
70
|
+
system: opts.system,
|
|
71
|
+
operation: OP_CHAT,
|
|
72
|
+
requestModel: typeof params.model === "string" ? params.model : "<unknown>",
|
|
73
|
+
skipPackageDirs: opts.skipDirs,
|
|
74
|
+
batched: false,
|
|
75
|
+
requestPayload: captureAnthropicPayload(params),
|
|
76
|
+
};
|
|
77
|
+
emit = startCall(opts.config, ctx);
|
|
78
|
+
}
|
|
79
|
+
catch (err) {
|
|
80
|
+
recordInternalError("setup_failed", err, opts.config);
|
|
81
|
+
return original(...args);
|
|
82
|
+
}
|
|
83
|
+
let result;
|
|
84
|
+
try {
|
|
85
|
+
result = original(...args);
|
|
86
|
+
}
|
|
87
|
+
catch (err) {
|
|
88
|
+
safe(() => emit.error(err));
|
|
89
|
+
throw err;
|
|
90
|
+
}
|
|
91
|
+
if (isPromiseLike(result)) {
|
|
92
|
+
return (async () => {
|
|
93
|
+
let awaited;
|
|
94
|
+
try {
|
|
95
|
+
awaited = await result;
|
|
96
|
+
}
|
|
97
|
+
catch (err) {
|
|
98
|
+
safe(() => emit.error(err));
|
|
99
|
+
throw err;
|
|
100
|
+
}
|
|
101
|
+
if (streaming) {
|
|
102
|
+
try {
|
|
103
|
+
return wrapStreamObject(awaited, emit, anthropicStreamEvent);
|
|
104
|
+
}
|
|
105
|
+
catch (err) {
|
|
106
|
+
recordInternalError("stream_proxy_failed", err, opts.config);
|
|
107
|
+
return awaited;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
safe(() => emit.success(messagesUsage(awaited)));
|
|
111
|
+
return awaited;
|
|
112
|
+
})();
|
|
113
|
+
}
|
|
114
|
+
if (streaming) {
|
|
115
|
+
try {
|
|
116
|
+
return wrapStreamObject(result, emit, anthropicStreamEvent);
|
|
117
|
+
}
|
|
118
|
+
catch (err) {
|
|
119
|
+
recordInternalError("stream_proxy_failed", err, opts.config);
|
|
120
|
+
return result;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
safe(() => emit.success(messagesUsage(result)));
|
|
124
|
+
return result;
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
function safe(fn) {
|
|
128
|
+
try {
|
|
129
|
+
fn();
|
|
130
|
+
}
|
|
131
|
+
catch (err) {
|
|
132
|
+
recordInternalError("emission", err, null);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
function recordInternalError(stage, err, config) {
|
|
136
|
+
try {
|
|
137
|
+
if (!config)
|
|
138
|
+
return;
|
|
139
|
+
const instruments = getInstruments(config);
|
|
140
|
+
instruments.internalErrors.add(1, {
|
|
141
|
+
...(config.customerId ? { [FRUGAL_CUSTOMER_ID]: config.customerId } : {}),
|
|
142
|
+
[FRUGAL_PROJECT_ID]: config.projectId,
|
|
143
|
+
"frugal.internal_error.stage": stage,
|
|
144
|
+
"frugal.internal_error.type": errorTypeName(err),
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
catch {
|
|
148
|
+
// swallow — nothing left to try
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
function errorTypeName(err) {
|
|
152
|
+
if (err && typeof err === "object" && "name" in err && typeof err.name === "string") {
|
|
153
|
+
return err.name;
|
|
154
|
+
}
|
|
155
|
+
if (err instanceof Error)
|
|
156
|
+
return err.constructor.name;
|
|
157
|
+
return "UnknownError";
|
|
158
|
+
}
|
|
159
|
+
function isPromiseLike(value) {
|
|
160
|
+
return (value !== null &&
|
|
161
|
+
typeof value === "object" &&
|
|
162
|
+
typeof value.then === "function");
|
|
163
|
+
}
|
|
164
|
+
function captureAnthropicPayload(params) {
|
|
165
|
+
const maxTokensRaw = params.max_tokens;
|
|
166
|
+
return {
|
|
167
|
+
messages: params.messages,
|
|
168
|
+
tools: params.tools,
|
|
169
|
+
responseFormat: undefined,
|
|
170
|
+
maxTokens: typeof maxTokensRaw === "number" ? maxTokensRaw : null,
|
|
171
|
+
system: params.system,
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
function attr(obj, key) {
|
|
175
|
+
if (obj === null || obj === undefined)
|
|
176
|
+
return undefined;
|
|
177
|
+
if (typeof obj !== "object")
|
|
178
|
+
return undefined;
|
|
179
|
+
return obj[key];
|
|
180
|
+
}
|
|
181
|
+
function asNumber(v) {
|
|
182
|
+
return typeof v === "number" ? v : null;
|
|
183
|
+
}
|
|
184
|
+
function asString(v) {
|
|
185
|
+
return typeof v === "string" ? v : null;
|
|
186
|
+
}
|
|
187
|
+
function messagesUsage(response) {
|
|
188
|
+
const usage = attr(response, "usage");
|
|
189
|
+
return {
|
|
190
|
+
responseModel: asString(attr(response, "model")),
|
|
191
|
+
inputTokens: asNumber(attr(usage, "input_tokens")),
|
|
192
|
+
outputTokens: asNumber(attr(usage, "output_tokens")),
|
|
193
|
+
cacheReadTokens: asNumber(attr(usage, "cache_read_input_tokens")),
|
|
194
|
+
cacheWriteTokens: asNumber(attr(usage, "cache_creation_input_tokens")),
|
|
195
|
+
};
|
|
196
|
+
}
|
|
197
|
+
function anthropicStreamEvent(event, usage) {
|
|
198
|
+
const type = asString(attr(event, "type"));
|
|
199
|
+
if (type === "message_start") {
|
|
200
|
+
const message = attr(event, "message");
|
|
201
|
+
const model = asString(attr(message, "model"));
|
|
202
|
+
if (model)
|
|
203
|
+
usage.responseModel = model;
|
|
204
|
+
const m = attr(message, "usage");
|
|
205
|
+
if (!m)
|
|
206
|
+
return;
|
|
207
|
+
const input = asNumber(attr(m, "input_tokens"));
|
|
208
|
+
const output = asNumber(attr(m, "output_tokens"));
|
|
209
|
+
if (input !== null)
|
|
210
|
+
usage.inputTokens = input;
|
|
211
|
+
if (output !== null)
|
|
212
|
+
usage.outputTokens = output;
|
|
213
|
+
const cacheRead = asNumber(attr(m, "cache_read_input_tokens"));
|
|
214
|
+
if (cacheRead !== null)
|
|
215
|
+
usage.cacheReadTokens = cacheRead;
|
|
216
|
+
const cacheWrite = asNumber(attr(m, "cache_creation_input_tokens"));
|
|
217
|
+
if (cacheWrite !== null)
|
|
218
|
+
usage.cacheWriteTokens = cacheWrite;
|
|
219
|
+
}
|
|
220
|
+
else if (type === "message_delta") {
|
|
221
|
+
const d = attr(event, "usage");
|
|
222
|
+
if (!d)
|
|
223
|
+
return;
|
|
224
|
+
const output = asNumber(attr(d, "output_tokens"));
|
|
225
|
+
if (output !== null)
|
|
226
|
+
usage.outputTokens = output;
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
//# sourceMappingURL=anthropic.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"anthropic.js","sourceRoot":"","sources":["../../src/wrappers/anthropic.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { UsageReport } from "../instrument.js";
|
|
2
|
+
import type { RequestPayload } from "../prompt-analyzer.js";
|
|
3
|
+
export declare function stripCrossRegionPrefix(modelId: string): string;
|
|
4
|
+
export interface BedrockModelHandler {
|
|
5
|
+
name: string;
|
|
6
|
+
extractInvokeModelUsage(body: Record<string, unknown>): UsageReport;
|
|
7
|
+
extractConverseUsage(response: Record<string, unknown>): UsageReport;
|
|
8
|
+
extractInvokeModelStreamEvent(event: Record<string, unknown>): UsageReport | null;
|
|
9
|
+
captureInvokeModelPayload(body: Record<string, unknown>): RequestPayload | null;
|
|
10
|
+
}
|
|
11
|
+
export declare function extractConverseUsageUniversal(response: Record<string, unknown>): UsageReport;
|
|
12
|
+
export declare function extractConverseStreamEvent(event: Record<string, unknown>): UsageReport | null;
|
|
13
|
+
export declare function extractInvokeModelStreamEventUniversal(event: Record<string, unknown>): UsageReport | null;
|
|
14
|
+
export declare function extractUniversalHeadersUsage(metadata: Record<string, unknown> | null | undefined): UsageReport;
|
|
15
|
+
export declare function decodeInvokeModelBody(rawBody: unknown): Record<string, unknown>;
|
|
16
|
+
export declare function decodeInvokeModelResponseBody(body: unknown): Record<string, unknown>;
|
|
17
|
+
export declare const ANTHROPIC_CLAUDE_HANDLER: BedrockModelHandler;
|
|
18
|
+
export declare const OPENAI_GPT_OSS_HANDLER: BedrockModelHandler;
|
|
19
|
+
export declare const AMAZON_NOVA_HANDLER: BedrockModelHandler;
|
|
20
|
+
export declare const META_LLAMA_HANDLER: BedrockModelHandler;
|
|
21
|
+
export declare const MISTRAL_HANDLER: BedrockModelHandler;
|
|
22
|
+
export declare const UNIVERSAL_FALLBACK_HANDLER: BedrockModelHandler;
|
|
23
|
+
export declare const DISPATCH: ReadonlyArray<readonly [string, BedrockModelHandler]>;
|
|
24
|
+
export declare function lookupHandler(modelId: string): BedrockModelHandler;
|
|
25
|
+
export declare function mergeUsage(into: UsageReport, partial: UsageReport | null): void;
|
|
26
|
+
//# sourceMappingURL=bedrock-models.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bedrock-models.d.ts","sourceRoot":"","sources":["../../src/wrappers/bedrock-models.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAM5D,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAE9D;AAID,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,uBAAuB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,WAAW,CAAC;IACpE,oBAAoB,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,WAAW,CAAC;IACrE,6BAA6B,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,WAAW,GAAG,IAAI,CAAC;IAClF,yBAAyB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,cAAc,GAAG,IAAI,CAAC;CACjF;AA6ED,wBAAgB,6BAA6B,CAC3C,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChC,WAAW,CAQb;AAED,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,WAAW,GAAG,IAAI,CAWpB;AAID,wBAAgB,sCAAsC,CACpD,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,WAAW,GAAG,IAAI,CASpB;AAmDD,wBAAgB,4BAA4B,CAC1C,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GAAG,SAAS,GACnD,WAAW,CAab;AAiCD,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAiB/E;AAED,wBAAgB,6BAA6B,CAC3C,IAAI,EAAE,OAAO,GACZ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAqBzB;AAID,eAAO,MAAM,wBAAwB,EAAE,mBAMtC,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,mBAMpC,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,mBAMjC,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,mBAMhC,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,mBAM7B,CAAC;AAEF,eAAO,MAAM,0BAA0B,EAAE,mBAMxC,CAAC;AAGF,eAAO,MAAM,QAAQ,EAAE,aAAa,CAAC,SAAS,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAO1E,CAAC;AAEF,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,mBAAmB,CAMlE;AAGD,wBAAgB,UAAU,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,GAAG,IAAI,GAAG,IAAI,CAe/E"}
|