llm-stream-assemble 1.4.0 → 1.5.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/README.md +47 -6
- package/dist/adapters/anthropic.cjs +181 -125
- package/dist/adapters/anthropic.cjs.map +1 -1
- package/dist/adapters/anthropic.d.cts +1 -3
- package/dist/adapters/anthropic.d.ts +1 -3
- package/dist/adapters/anthropic.js +181 -125
- package/dist/adapters/anthropic.js.map +1 -1
- package/dist/adapters/bedrock.cjs +155 -118
- package/dist/adapters/bedrock.cjs.map +1 -1
- package/dist/adapters/bedrock.js +155 -118
- package/dist/adapters/bedrock.js.map +1 -1
- package/dist/adapters/cohere.cjs +594 -0
- package/dist/adapters/cohere.cjs.map +1 -0
- package/dist/adapters/cohere.d.cts +9 -0
- package/dist/adapters/cohere.d.ts +9 -0
- package/dist/adapters/cohere.js +592 -0
- package/dist/adapters/cohere.js.map +1 -0
- package/dist/adapters/gemini.cjs +86 -44
- package/dist/adapters/gemini.cjs.map +1 -1
- package/dist/adapters/gemini.js +86 -44
- package/dist/adapters/gemini.js.map +1 -1
- package/dist/adapters/openai-chat.cjs +20 -8
- package/dist/adapters/openai-chat.cjs.map +1 -1
- package/dist/adapters/openai-chat.js +20 -8
- package/dist/adapters/openai-chat.js.map +1 -1
- package/dist/adapters/openai-compatible.cjs +20 -8
- package/dist/adapters/openai-compatible.cjs.map +1 -1
- package/dist/adapters/openai-compatible.js +20 -8
- package/dist/adapters/openai-compatible.js.map +1 -1
- package/dist/adapters/openai-responses.cjs +37 -27
- package/dist/adapters/openai-responses.cjs.map +1 -1
- package/dist/adapters/openai-responses.js +37 -27
- package/dist/adapters/openai-responses.js.map +1 -1
- package/dist/core/index.cjs +9 -2
- package/dist/core/index.cjs.map +1 -1
- package/dist/core/index.js +9 -2
- package/dist/core/index.js.map +1 -1
- package/dist/index.cjs +715 -297
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +2 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.js +715 -298
- package/dist/index.js.map +1 -1
- package/package.json +9 -2
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
+
// src/core/utils/object.ts
|
|
4
|
+
function stripUndefined(obj) {
|
|
5
|
+
return Object.fromEntries(Object.entries(obj).filter(([, value]) => value !== void 0));
|
|
6
|
+
}
|
|
7
|
+
|
|
3
8
|
// src/adapters/utils.ts
|
|
4
9
|
function isRecord(value) {
|
|
5
10
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
@@ -11,9 +16,7 @@ function asNumber(value) {
|
|
|
11
16
|
return typeof value === "number" && Number.isFinite(value) ? value : void 0;
|
|
12
17
|
}
|
|
13
18
|
function optionalRawChunk(input) {
|
|
14
|
-
return
|
|
15
|
-
Object.entries(input).filter(([, value]) => value !== void 0)
|
|
16
|
-
);
|
|
19
|
+
return stripUndefined(input);
|
|
17
20
|
}
|
|
18
21
|
function prefixedAdapterError(feature, message) {
|
|
19
22
|
return adapterScopedError(feature, message);
|
|
@@ -60,6 +63,96 @@ function providerErrorChunksFromPayload(errorPayload, scope, recoverable, fallba
|
|
|
60
63
|
return providerErrorChunks(error, recoverable);
|
|
61
64
|
}
|
|
62
65
|
|
|
66
|
+
// src/adapters/shared/incremental-json.ts
|
|
67
|
+
function incrementalJsonStringDelta(state, nextInput) {
|
|
68
|
+
const prev = state.lastArgsJson;
|
|
69
|
+
if (nextInput === prev) return void 0;
|
|
70
|
+
const delta = prev.length > 0 && nextInput.startsWith(prev) ? nextInput.slice(prev.length) : nextInput;
|
|
71
|
+
state.lastArgsJson = nextInput;
|
|
72
|
+
return delta.length > 0 ? delta : void 0;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
// src/adapters/shared/parse-payload.ts
|
|
76
|
+
function parseAdapterObjectPayload(raw, scope, options = {}) {
|
|
77
|
+
const { trim = true, allowDone = true } = options;
|
|
78
|
+
const input = trim ? raw.trim() : raw;
|
|
79
|
+
if (input.length === 0 || allowDone && input === "[DONE]") return null;
|
|
80
|
+
const payload = parseAdapterJSON(input, scope);
|
|
81
|
+
if (!isRecord(payload)) {
|
|
82
|
+
throw adapterScopedError(scope, "expected a JSON object");
|
|
83
|
+
}
|
|
84
|
+
return payload;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
// src/adapters/shared/stop-reasons.ts
|
|
88
|
+
function mapAnthropicLikeStopReason(value) {
|
|
89
|
+
switch (value) {
|
|
90
|
+
case "end_turn":
|
|
91
|
+
case "stop_sequence":
|
|
92
|
+
return "stop";
|
|
93
|
+
case "tool_use":
|
|
94
|
+
return "tool_calls";
|
|
95
|
+
case "max_tokens":
|
|
96
|
+
return "length";
|
|
97
|
+
case "content_filtered":
|
|
98
|
+
case "guardrail_intervened":
|
|
99
|
+
case "refusal":
|
|
100
|
+
return "content_filter";
|
|
101
|
+
default:
|
|
102
|
+
return "stop";
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
// src/adapters/shared/text-delta.ts
|
|
107
|
+
function textOrJsonDelta(text, options) {
|
|
108
|
+
if (text.length === 0) return void 0;
|
|
109
|
+
if (options.jsonMode) return { kind: "json-delta", delta: text };
|
|
110
|
+
if (options.choiceIndex !== void 0) {
|
|
111
|
+
return { kind: "text-delta", text, choiceIndex: options.choiceIndex };
|
|
112
|
+
}
|
|
113
|
+
return { kind: "text-delta", text };
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
// src/adapters/shared/usage.ts
|
|
117
|
+
var DEFAULT_ALIASES = {
|
|
118
|
+
input: ["inputTokens", "input_tokens", "promptTokens", "promptTokenCount", "inputTokenCount"],
|
|
119
|
+
output: [
|
|
120
|
+
"outputTokens",
|
|
121
|
+
"output_tokens",
|
|
122
|
+
"completionTokens",
|
|
123
|
+
"candidatesTokenCount",
|
|
124
|
+
"outputTokenCount"
|
|
125
|
+
],
|
|
126
|
+
reasoning: ["reasoningTokens", "reasoning_tokens", "thoughtsTokenCount"],
|
|
127
|
+
total: ["totalTokens", "totalTokenCount", "total_tokens"]
|
|
128
|
+
};
|
|
129
|
+
function firstNumber(value, fields) {
|
|
130
|
+
if (!fields) return void 0;
|
|
131
|
+
for (const field of fields) {
|
|
132
|
+
const number = asNumber(value[field]);
|
|
133
|
+
if (number !== void 0) return number;
|
|
134
|
+
}
|
|
135
|
+
return void 0;
|
|
136
|
+
}
|
|
137
|
+
function buildUsageChunk(value, aliases = DEFAULT_ALIASES, options) {
|
|
138
|
+
if (!isRecord(value)) return void 0;
|
|
139
|
+
const inputTokens = firstNumber(value, aliases.input);
|
|
140
|
+
const outputTokens = firstNumber(value, aliases.output);
|
|
141
|
+
const reasoningTokens = firstNumber(value, aliases.reasoning);
|
|
142
|
+
const totalTokens = firstNumber(value, aliases.total);
|
|
143
|
+
if (inputTokens === void 0 && outputTokens === void 0 && reasoningTokens === void 0 && totalTokens === void 0) {
|
|
144
|
+
return void 0;
|
|
145
|
+
}
|
|
146
|
+
const raw = totalTokens !== void 0 ? { ...value, totalTokens } : value;
|
|
147
|
+
return optionalRawChunk({
|
|
148
|
+
kind: "usage",
|
|
149
|
+
inputTokens,
|
|
150
|
+
outputTokens,
|
|
151
|
+
reasoningTokens,
|
|
152
|
+
raw
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
|
|
63
156
|
// src/adapters/bedrock.ts
|
|
64
157
|
var EXCEPTION_KEYS = [
|
|
65
158
|
"internalServerException",
|
|
@@ -84,12 +177,8 @@ var BedrockStreamParser = class {
|
|
|
84
177
|
messageStarted = false;
|
|
85
178
|
blocks = /* @__PURE__ */ new Map();
|
|
86
179
|
parseChunk(raw) {
|
|
87
|
-
const
|
|
88
|
-
if (
|
|
89
|
-
const payload = parseAdapterJSON(trimmed, "bedrockAdapter.parseChunk");
|
|
90
|
-
if (!isRecord(payload)) {
|
|
91
|
-
throw libraryError("bedrockAdapter.parseChunk expected a JSON object");
|
|
92
|
-
}
|
|
180
|
+
const payload = parseAdapterObjectPayload(raw, "bedrockAdapter.parseChunk");
|
|
181
|
+
if (!payload) return [];
|
|
93
182
|
for (const key of EXCEPTION_KEYS) {
|
|
94
183
|
const exception = payload[key];
|
|
95
184
|
if (isRecord(exception)) {
|
|
@@ -168,15 +257,9 @@ var BedrockStreamParser = class {
|
|
|
168
257
|
if (!delta) return [];
|
|
169
258
|
const chunks = [];
|
|
170
259
|
const text = asString(delta.text);
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
} else {
|
|
175
|
-
chunks.push({ kind: "text-delta", text, choiceIndex: 0 });
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
const reasoning = delta.reasoningContent;
|
|
179
|
-
const reasoningText = reasoningTextFromDelta(reasoning, this.options.modelFamily);
|
|
260
|
+
const textChunk = text ? textOrJsonDelta(text, { jsonMode: this.options.jsonMode, choiceIndex: 0 }) : void 0;
|
|
261
|
+
if (textChunk) chunks.push(textChunk);
|
|
262
|
+
const reasoningText = reasoningTextFromDelta(delta.reasoningContent, this.options.modelFamily);
|
|
180
263
|
if (reasoningText) {
|
|
181
264
|
chunks.push({ kind: "reasoning-delta", text: reasoningText, variant: "detail" });
|
|
182
265
|
}
|
|
@@ -192,9 +275,9 @@ var BedrockStreamParser = class {
|
|
|
192
275
|
const input = toolUse.input;
|
|
193
276
|
let delta;
|
|
194
277
|
if (typeof input === "string") {
|
|
195
|
-
delta =
|
|
278
|
+
delta = incrementalJsonStringDelta(state, input);
|
|
196
279
|
} else if (isRecord(input)) {
|
|
197
|
-
delta =
|
|
280
|
+
delta = incrementalJsonStringDelta(state, JSON.stringify(input));
|
|
198
281
|
}
|
|
199
282
|
if (!delta) return [];
|
|
200
283
|
return [
|
|
@@ -236,13 +319,17 @@ var BedrockStreamParser = class {
|
|
|
236
319
|
}
|
|
237
320
|
})
|
|
238
321
|
);
|
|
239
|
-
chunks.push({
|
|
322
|
+
chunks.push({
|
|
323
|
+
kind: "finish",
|
|
324
|
+
reason: mapAnthropicLikeStopReason(stopReason),
|
|
325
|
+
choiceIndex: 0
|
|
326
|
+
});
|
|
240
327
|
return chunks;
|
|
241
328
|
}
|
|
242
329
|
metadataChunks(value) {
|
|
243
330
|
if (!isRecord(value)) return [];
|
|
244
331
|
const chunks = [];
|
|
245
|
-
const usage =
|
|
332
|
+
const usage = buildUsageChunk(value.usage, void 0);
|
|
246
333
|
if (usage) chunks.push(usage);
|
|
247
334
|
const metrics = value.metrics;
|
|
248
335
|
const trace = value.trace;
|
|
@@ -272,76 +359,69 @@ function parseResponse(body, options) {
|
|
|
272
359
|
);
|
|
273
360
|
}
|
|
274
361
|
}
|
|
362
|
+
const parser = new BedrockStreamParser(options);
|
|
363
|
+
const syntheticEvents = synthesizeConverseStreamEvents(body);
|
|
275
364
|
const chunks = [];
|
|
365
|
+
for (const event of syntheticEvents) {
|
|
366
|
+
chunks.push(...parser.parseChunk(JSON.stringify(event)));
|
|
367
|
+
}
|
|
368
|
+
const stopReason = asString(body.stopReason);
|
|
369
|
+
if (stopReason) {
|
|
370
|
+
chunks.push({
|
|
371
|
+
kind: "finish",
|
|
372
|
+
reason: mapAnthropicLikeStopReason(stopReason),
|
|
373
|
+
choiceIndex: 0
|
|
374
|
+
});
|
|
375
|
+
} else if (!chunks.some((chunk) => chunk.kind === "finish")) {
|
|
376
|
+
chunks.push({ kind: "finish", reason: "stop", choiceIndex: 0 });
|
|
377
|
+
}
|
|
378
|
+
return chunks;
|
|
379
|
+
}
|
|
380
|
+
function synthesizeConverseStreamEvents(body) {
|
|
381
|
+
const events = [];
|
|
276
382
|
const output = isRecord(body.output) ? body.output : void 0;
|
|
277
383
|
const message = output && isRecord(output.message) ? output.message : void 0;
|
|
278
384
|
if (message) {
|
|
279
|
-
|
|
280
|
-
const role = asString(message.role);
|
|
281
|
-
if (role) {
|
|
282
|
-
chunks.push(optionalRawChunk({ kind: "metadata", raw: { role } }));
|
|
283
|
-
}
|
|
385
|
+
events.push({ messageStart: { role: message.role } });
|
|
284
386
|
const content = Array.isArray(message.content) ? message.content : [];
|
|
285
387
|
let blockIndex = 0;
|
|
286
388
|
for (const block of content) {
|
|
287
389
|
if (!isRecord(block)) continue;
|
|
288
|
-
const text = asString(block.text);
|
|
289
|
-
if (text !== void 0 && text.length > 0) {
|
|
290
|
-
if (options.jsonMode) {
|
|
291
|
-
chunks.push({ kind: "json-delta", delta: text });
|
|
292
|
-
} else {
|
|
293
|
-
chunks.push({ kind: "text-delta", text, choiceIndex: 0 });
|
|
294
|
-
}
|
|
295
|
-
}
|
|
296
390
|
const toolUse = isRecord(block.toolUse) ? block.toolUse : void 0;
|
|
297
391
|
if (toolUse) {
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
kind: "tool-start",
|
|
303
|
-
id,
|
|
304
|
-
name,
|
|
305
|
-
index: blockIndex,
|
|
306
|
-
choiceIndex: 0
|
|
307
|
-
})
|
|
308
|
-
);
|
|
309
|
-
const input = toolUse.input;
|
|
310
|
-
if (input !== void 0) {
|
|
311
|
-
const argsJson = typeof input === "string" ? input : JSON.stringify(input);
|
|
312
|
-
if (argsJson.length > 0) {
|
|
313
|
-
chunks.push(
|
|
314
|
-
optionalRawChunk({
|
|
315
|
-
kind: "tool-args-delta",
|
|
316
|
-
id,
|
|
317
|
-
delta: argsJson,
|
|
318
|
-
index: blockIndex,
|
|
319
|
-
choiceIndex: 0
|
|
320
|
-
})
|
|
321
|
-
);
|
|
392
|
+
events.push({
|
|
393
|
+
contentBlockStart: {
|
|
394
|
+
contentBlockIndex: blockIndex,
|
|
395
|
+
start: { toolUse }
|
|
322
396
|
}
|
|
397
|
+
});
|
|
398
|
+
if (toolUse.input !== void 0) {
|
|
399
|
+
events.push({
|
|
400
|
+
contentBlockDelta: {
|
|
401
|
+
contentBlockIndex: blockIndex,
|
|
402
|
+
delta: { toolUse: { input: toolUse.input } }
|
|
403
|
+
}
|
|
404
|
+
});
|
|
405
|
+
}
|
|
406
|
+
events.push({ contentBlockStop: { contentBlockIndex: blockIndex } });
|
|
407
|
+
} else {
|
|
408
|
+
const text = asString(block.text);
|
|
409
|
+
if (text !== void 0 && text.length > 0) {
|
|
410
|
+
events.push({
|
|
411
|
+
contentBlockDelta: {
|
|
412
|
+
contentBlockIndex: blockIndex,
|
|
413
|
+
delta: { text }
|
|
414
|
+
}
|
|
415
|
+
});
|
|
323
416
|
}
|
|
324
|
-
chunks.push(
|
|
325
|
-
optionalRawChunk({
|
|
326
|
-
kind: "tool-done",
|
|
327
|
-
id,
|
|
328
|
-
index: blockIndex,
|
|
329
|
-
choiceIndex: 0
|
|
330
|
-
})
|
|
331
|
-
);
|
|
332
417
|
}
|
|
333
418
|
blockIndex += 1;
|
|
334
419
|
}
|
|
335
420
|
}
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
const stopReason = asString(body.stopReason);
|
|
339
|
-
if (stopReason) {
|
|
340
|
-
chunks.push({ kind: "finish", reason: mapStopReason(stopReason), choiceIndex: 0 });
|
|
341
|
-
} else if (!chunks.some((chunk) => chunk.kind === "finish")) {
|
|
342
|
-
chunks.push({ kind: "finish", reason: "stop" });
|
|
421
|
+
if (body.usage !== void 0) {
|
|
422
|
+
events.push({ metadata: { usage: body.usage } });
|
|
343
423
|
}
|
|
344
|
-
return
|
|
424
|
+
return events;
|
|
345
425
|
}
|
|
346
426
|
function reasoningTextFromDelta(reasoning, modelFamily) {
|
|
347
427
|
if (reasoning === void 0) return void 0;
|
|
@@ -355,49 +435,6 @@ function reasoningTextFromDelta(reasoning, modelFamily) {
|
|
|
355
435
|
}
|
|
356
436
|
return void 0;
|
|
357
437
|
}
|
|
358
|
-
function incrementalArgsDelta(state, nextInput) {
|
|
359
|
-
const prev = state.lastArgsJson;
|
|
360
|
-
if (nextInput === prev) return void 0;
|
|
361
|
-
let delta;
|
|
362
|
-
if (prev.length > 0 && nextInput.startsWith(prev)) {
|
|
363
|
-
delta = nextInput.slice(prev.length);
|
|
364
|
-
} else {
|
|
365
|
-
delta = nextInput;
|
|
366
|
-
}
|
|
367
|
-
state.lastArgsJson = nextInput;
|
|
368
|
-
return delta.length > 0 ? delta : void 0;
|
|
369
|
-
}
|
|
370
|
-
function mapStopReason(value) {
|
|
371
|
-
switch (value) {
|
|
372
|
-
case "end_turn":
|
|
373
|
-
case "stop_sequence":
|
|
374
|
-
return "stop";
|
|
375
|
-
case "tool_use":
|
|
376
|
-
return "tool_calls";
|
|
377
|
-
case "max_tokens":
|
|
378
|
-
return "length";
|
|
379
|
-
case "content_filtered":
|
|
380
|
-
case "guardrail_intervened":
|
|
381
|
-
return "content_filter";
|
|
382
|
-
default:
|
|
383
|
-
return "stop";
|
|
384
|
-
}
|
|
385
|
-
}
|
|
386
|
-
function usageChunk(value) {
|
|
387
|
-
if (!isRecord(value)) return void 0;
|
|
388
|
-
const inputTokens = asNumber(value.inputTokens) ?? asNumber(value.promptTokens) ?? asNumber(value.inputTokenCount);
|
|
389
|
-
const outputTokens = asNumber(value.outputTokens) ?? asNumber(value.completionTokens) ?? asNumber(value.outputTokenCount);
|
|
390
|
-
const totalTokens = asNumber(value.totalTokens) ?? asNumber(value.totalTokenCount);
|
|
391
|
-
if (inputTokens === void 0 && outputTokens === void 0 && totalTokens === void 0) {
|
|
392
|
-
return void 0;
|
|
393
|
-
}
|
|
394
|
-
return optionalRawChunk({
|
|
395
|
-
kind: "usage",
|
|
396
|
-
inputTokens,
|
|
397
|
-
outputTokens,
|
|
398
|
-
raw: { ...value, totalTokens }
|
|
399
|
-
});
|
|
400
|
-
}
|
|
401
438
|
function optionalMetadataRaw(payload) {
|
|
402
439
|
if (Object.keys(payload).length === 0) return [];
|
|
403
440
|
return [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/adapters/utils.ts","../../src/adapters/errors.ts","../../src/adapters/bedrock.ts"],"names":[],"mappings":"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","file":"bedrock.cjs","sourcesContent":["/** Internal adapter utilities. Not part of the public API. */\nimport type { RawChunk, StreamAdapter } from \"../core/types\";\nimport { adapterScopedError } from \"./errors\";\n\nexport function isRecord(value: unknown): value is Record<string, unknown> {\n\treturn typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nexport function asString(value: unknown): string | undefined {\n\treturn typeof value === \"string\" ? value : undefined;\n}\n\nexport function asNumber(value: unknown): number | undefined {\n\treturn typeof value === \"number\" && Number.isFinite(value) ? value : undefined;\n}\n\nexport function optionalRawChunk(input: Record<string, unknown>): RawChunk {\n\treturn Object.fromEntries(\n\t\tObject.entries(input).filter(([, value]) => value !== undefined),\n\t) as RawChunk;\n}\n\nexport function prefixedAdapterError(feature: string, message: string): Error {\n\treturn adapterScopedError(feature, message);\n}\n\nexport function createStreamAdapter<TOptions>(config: {\n\tparser: { parseChunk(raw: string): RawChunk[] };\n\tparseResponse: (body: unknown, options: TOptions) => RawChunk[];\n\toptions: TOptions;\n}): StreamAdapter {\n\treturn {\n\t\tparseChunk(raw) {\n\t\t\treturn config.parser.parseChunk(raw);\n\t\t},\n\t\tparseResponse(body) {\n\t\t\treturn config.parseResponse(body, config.options);\n\t\t},\n\t};\n}\n\nexport function parseAdapterJSON(raw: string, feature: string): unknown {\n\ttry {\n\t\treturn JSON.parse(raw) as unknown;\n\t} catch (error) {\n\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\tthrow prefixedAdapterError(feature, message);\n\t}\n}\n","/** Internal adapter error helpers. Not part of the public API. */\nimport type { RawChunk } from \"../core/types\";\nimport { asString } from \"./utils\";\n\nexport function libraryError(message: string): Error {\n\treturn new Error(`llm-stream-assemble: ${message}`);\n}\n\nexport function adapterScopedError(scope: string, message: string): Error {\n\treturn new Error(`llm-stream-assemble: ${scope}: ${message}`);\n}\n\nexport function providerErrorChunks(error: Error, recoverable = false): RawChunk[] {\n\treturn [\n\t\t{ kind: \"provider-error\", error, recoverable },\n\t\t{ kind: \"finish\", reason: \"error\" },\n\t];\n}\n\nexport function providerErrorChunksFromMessage(message: string, recoverable = false): RawChunk[] {\n\treturn providerErrorChunks(libraryError(message), recoverable);\n}\n\nexport function providerErrorChunksFromPayload(\n\terrorPayload: Record<string, unknown>,\n\tscope: string,\n\trecoverable: boolean,\n\tfallbackMessage: string,\n): RawChunk[] {\n\tconst message = asString(errorPayload.message) ?? fallbackMessage;\n\tconst error = adapterScopedError(scope, message);\n\tObject.defineProperty(error, \"raw\", {\n\t\tvalue: errorPayload,\n\t\tenumerable: false,\n\t});\n\treturn providerErrorChunks(error, recoverable);\n}\n","import type { FinishReason, RawChunk, StreamAdapter } from \"../core/types\";\nimport { libraryError, providerErrorChunksFromPayload } from \"./errors\";\nimport {\n\tasNumber,\n\tasString,\n\tcreateStreamAdapter,\n\tisRecord,\n\toptionalRawChunk,\n\tparseAdapterJSON,\n} from \"./utils\";\n\nexport type BedrockModelFamily = \"anthropic\" | \"openai-like\" | \"nova\" | \"auto\";\n\nexport interface BedrockAdapterOptions {\n\t/**\n\t * Hint which ConverseStream payload dialect to prefer when envelopes overlap.\n\t * \"auto\" uses structural detection (document heuristics in adapter-guide).\n\t */\n\tmodelFamily?: BedrockModelFamily;\n\t/** Map structured JSON text blocks to json-delta instead of text-delta. */\n\tjsonMode?: boolean;\n}\n\ninterface BlockToolState {\n\tid: string;\n\tname: string;\n\tindex: number;\n\topen: boolean;\n\tlastArgsJson: string;\n}\n\nconst EXCEPTION_KEYS = [\n\t\"internalServerException\",\n\t\"modelStreamErrorException\",\n\t\"validationException\",\n\t\"throttlingException\",\n\t\"serviceUnavailableException\",\n] as const;\n\nexport function bedrockAdapter(options: BedrockAdapterOptions = {}): StreamAdapter {\n\tconst parser = new BedrockStreamParser(options);\n\treturn createStreamAdapter({\n\t\tparser,\n\t\tparseResponse,\n\t\toptions,\n\t});\n}\n\nclass BedrockStreamParser {\n\tprivate messageStarted = false;\n\tprivate readonly blocks = new Map<number, BlockToolState>();\n\n\tconstructor(private readonly options: BedrockAdapterOptions) {}\n\n\tparseChunk(raw: string): RawChunk[] {\n\t\tconst trimmed = raw.trim();\n\t\tif (trimmed.length === 0 || trimmed === \"[DONE]\") return [];\n\n\t\tconst payload = parseAdapterJSON(trimmed, \"bedrockAdapter.parseChunk\");\n\t\tif (!isRecord(payload)) {\n\t\t\tthrow libraryError(\"bedrockAdapter.parseChunk expected a JSON object\");\n\t\t}\n\n\t\tfor (const key of EXCEPTION_KEYS) {\n\t\t\tconst exception = payload[key];\n\t\t\tif (isRecord(exception)) {\n\t\t\t\treturn providerErrorChunksFromPayload(\n\t\t\t\t\texception,\n\t\t\t\t\t\"bedrockAdapter.parseChunk\",\n\t\t\t\t\tfalse,\n\t\t\t\t\t`Bedrock ${key}`,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\tif (payload.messageStart !== undefined) {\n\t\t\treturn this.messageStartChunks(payload.messageStart);\n\t\t}\n\t\tif (payload.contentBlockStart !== undefined) {\n\t\t\treturn this.contentBlockStartChunks(payload.contentBlockStart);\n\t\t}\n\t\tif (payload.contentBlockDelta !== undefined) {\n\t\t\treturn this.contentBlockDeltaChunks(payload.contentBlockDelta);\n\t\t}\n\t\tif (payload.contentBlockStop !== undefined) {\n\t\t\treturn this.contentBlockStopChunks(payload.contentBlockStop);\n\t\t}\n\t\tif (payload.messageStop !== undefined) {\n\t\t\treturn this.messageStopChunks(payload.messageStop);\n\t\t}\n\t\tif (payload.metadata !== undefined) {\n\t\t\treturn this.metadataChunks(payload.metadata);\n\t\t}\n\n\t\treturn optionalMetadataRaw(payload);\n\t}\n\n\tprivate messageStartChunks(value: unknown): RawChunk[] {\n\t\tif (!isRecord(value)) return [];\n\t\tif (this.messageStarted) return [];\n\t\tthis.messageStarted = true;\n\t\tconst role = asString(value.role);\n\t\treturn [\n\t\t\t{ kind: \"message-start\" },\n\t\t\t...(role\n\t\t\t\t? [\n\t\t\t\t\t\toptionalRawChunk({\n\t\t\t\t\t\t\tkind: \"metadata\",\n\t\t\t\t\t\t\traw: { role },\n\t\t\t\t\t\t}),\n\t\t\t\t\t]\n\t\t\t\t: []),\n\t\t];\n\t}\n\n\tprivate contentBlockStartChunks(value: unknown): RawChunk[] {\n\t\tif (!isRecord(value)) return [];\n\t\tconst blockIndex = asNumber(value.contentBlockIndex) ?? 0;\n\t\tconst start = isRecord(value.start) ? value.start : undefined;\n\t\tconst toolUse = start && isRecord(start.toolUse) ? start.toolUse : undefined;\n\t\tif (!toolUse) return [];\n\n\t\tconst id = asString(toolUse.toolUseId) ?? `bedrock:${blockIndex}`;\n\t\tconst name = asString(toolUse.name) ?? \"unknown\";\n\t\tthis.blocks.set(blockIndex, {\n\t\t\tid,\n\t\t\tname,\n\t\t\tindex: blockIndex,\n\t\t\topen: true,\n\t\t\tlastArgsJson: \"\",\n\t\t});\n\t\treturn [\n\t\t\toptionalRawChunk({\n\t\t\t\tkind: \"tool-start\",\n\t\t\t\tid,\n\t\t\t\tname,\n\t\t\t\tindex: blockIndex,\n\t\t\t\tchoiceIndex: 0,\n\t\t\t}),\n\t\t];\n\t}\n\n\tprivate contentBlockDeltaChunks(value: unknown): RawChunk[] {\n\t\tif (!isRecord(value)) return [];\n\t\tconst blockIndex = asNumber(value.contentBlockIndex) ?? 0;\n\t\tconst delta = isRecord(value.delta) ? value.delta : undefined;\n\t\tif (!delta) return [];\n\n\t\tconst chunks: RawChunk[] = [];\n\t\tconst text = asString(delta.text);\n\t\tif (text !== undefined && text.length > 0) {\n\t\t\tif (this.options.jsonMode) {\n\t\t\t\tchunks.push({ kind: \"json-delta\", delta: text });\n\t\t\t} else {\n\t\t\t\tchunks.push({ kind: \"text-delta\", text, choiceIndex: 0 });\n\t\t\t}\n\t\t}\n\n\t\tconst reasoning = delta.reasoningContent;\n\t\tconst reasoningText = reasoningTextFromDelta(reasoning, this.options.modelFamily);\n\t\tif (reasoningText) {\n\t\t\tchunks.push({ kind: \"reasoning-delta\", text: reasoningText, variant: \"detail\" });\n\t\t}\n\n\t\tconst toolUse = isRecord(delta.toolUse) ? delta.toolUse : undefined;\n\t\tif (toolUse) {\n\t\t\tchunks.push(...this.toolInputDelta(blockIndex, toolUse));\n\t\t}\n\n\t\treturn chunks;\n\t}\n\n\tprivate toolInputDelta(blockIndex: number, toolUse: Record<string, unknown>): RawChunk[] {\n\t\tconst state = this.blocks.get(blockIndex);\n\t\tif (!state) return [];\n\n\t\tconst input = toolUse.input;\n\t\tlet delta: string | undefined;\n\t\tif (typeof input === \"string\") {\n\t\t\tdelta = incrementalArgsDelta(state, input);\n\t\t} else if (isRecord(input)) {\n\t\t\tdelta = incrementalArgsDelta(state, JSON.stringify(input));\n\t\t}\n\t\tif (!delta) return [];\n\n\t\treturn [\n\t\t\toptionalRawChunk({\n\t\t\t\tkind: \"tool-args-delta\",\n\t\t\t\tid: state.id,\n\t\t\t\tdelta,\n\t\t\t\tindex: state.index,\n\t\t\t\tchoiceIndex: 0,\n\t\t\t}),\n\t\t];\n\t}\n\n\tprivate contentBlockStopChunks(value: unknown): RawChunk[] {\n\t\tif (!isRecord(value)) return [];\n\t\tconst blockIndex = asNumber(value.contentBlockIndex) ?? 0;\n\t\tconst state = this.blocks.get(blockIndex);\n\t\tif (!state?.open) return [];\n\n\t\tstate.open = false;\n\t\treturn [\n\t\t\toptionalRawChunk({\n\t\t\t\tkind: \"tool-done\",\n\t\t\t\tid: state.id,\n\t\t\t\tindex: state.index,\n\t\t\t\tchoiceIndex: 0,\n\t\t\t}),\n\t\t];\n\t}\n\n\tprivate messageStopChunks(value: unknown): RawChunk[] {\n\t\tif (!isRecord(value)) return [];\n\t\tconst stopReason = asString(value.stopReason) ?? \"unknown\";\n\t\tconst additional = value.additionalModelResponseFields;\n\t\tconst chunks: RawChunk[] = [];\n\t\tchunks.push(\n\t\t\toptionalRawChunk({\n\t\t\t\tkind: \"metadata\",\n\t\t\t\traw: {\n\t\t\t\t\tstopReason,\n\t\t\t\t\t...(additional !== undefined ? { additionalModelResponseFields: additional } : {}),\n\t\t\t\t},\n\t\t\t}),\n\t\t);\n\t\tchunks.push({ kind: \"finish\", reason: mapStopReason(stopReason), choiceIndex: 0 });\n\t\treturn chunks;\n\t}\n\n\tprivate metadataChunks(value: unknown): RawChunk[] {\n\t\tif (!isRecord(value)) return [];\n\t\tconst chunks: RawChunk[] = [];\n\n\t\tconst usage = usageChunk(value.usage);\n\t\tif (usage) chunks.push(usage);\n\n\t\tconst metrics = value.metrics;\n\t\tconst trace = value.trace;\n\t\tif (metrics !== undefined || trace !== undefined) {\n\t\t\tchunks.push(\n\t\t\t\toptionalRawChunk({\n\t\t\t\t\tkind: \"metadata\",\n\t\t\t\t\traw: { metrics, trace },\n\t\t\t\t}),\n\t\t\t);\n\t\t}\n\n\t\treturn chunks;\n\t}\n}\n\nfunction parseResponse(body: unknown, options: BedrockAdapterOptions): RawChunk[] {\n\tif (!isRecord(body)) {\n\t\tthrow libraryError(\"bedrockAdapter.parseResponse expected a Converse response object\");\n\t}\n\n\tfor (const key of EXCEPTION_KEYS) {\n\t\tconst exception = body[key];\n\t\tif (isRecord(exception)) {\n\t\t\treturn providerErrorChunksFromPayload(\n\t\t\t\texception,\n\t\t\t\t\"bedrockAdapter.parseResponse\",\n\t\t\t\tfalse,\n\t\t\t\t`Bedrock ${key}`,\n\t\t\t);\n\t\t}\n\t}\n\n\tconst parser = new BedrockStreamParser(options);\n\tconst chunks: RawChunk[] = [];\n\n\tconst output = isRecord(body.output) ? body.output : undefined;\n\tconst message = output && isRecord(output.message) ? output.message : undefined;\n\tif (message) {\n\t\tchunks.push({ kind: \"message-start\" });\n\t\tconst role = asString(message.role);\n\t\tif (role) {\n\t\t\tchunks.push(optionalRawChunk({ kind: \"metadata\", raw: { role } }));\n\t\t}\n\n\t\tconst content = Array.isArray(message.content) ? message.content : [];\n\t\tlet blockIndex = 0;\n\t\tfor (const block of content) {\n\t\t\tif (!isRecord(block)) continue;\n\t\t\tconst text = asString(block.text);\n\t\t\tif (text !== undefined && text.length > 0) {\n\t\t\t\tif (options.jsonMode) {\n\t\t\t\t\tchunks.push({ kind: \"json-delta\", delta: text });\n\t\t\t\t} else {\n\t\t\t\t\tchunks.push({ kind: \"text-delta\", text, choiceIndex: 0 });\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst toolUse = isRecord(block.toolUse) ? block.toolUse : undefined;\n\t\t\tif (toolUse) {\n\t\t\t\tconst id = asString(toolUse.toolUseId) ?? `bedrock:${blockIndex}`;\n\t\t\t\tconst name = asString(toolUse.name) ?? \"unknown\";\n\t\t\t\tchunks.push(\n\t\t\t\t\toptionalRawChunk({\n\t\t\t\t\t\tkind: \"tool-start\",\n\t\t\t\t\t\tid,\n\t\t\t\t\t\tname,\n\t\t\t\t\t\tindex: blockIndex,\n\t\t\t\t\t\tchoiceIndex: 0,\n\t\t\t\t\t}),\n\t\t\t\t);\n\t\t\t\tconst input = toolUse.input;\n\t\t\t\tif (input !== undefined) {\n\t\t\t\t\tconst argsJson = typeof input === \"string\" ? input : JSON.stringify(input);\n\t\t\t\t\tif (argsJson.length > 0) {\n\t\t\t\t\t\tchunks.push(\n\t\t\t\t\t\t\toptionalRawChunk({\n\t\t\t\t\t\t\t\tkind: \"tool-args-delta\",\n\t\t\t\t\t\t\t\tid,\n\t\t\t\t\t\t\t\tdelta: argsJson,\n\t\t\t\t\t\t\t\tindex: blockIndex,\n\t\t\t\t\t\t\t\tchoiceIndex: 0,\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tchunks.push(\n\t\t\t\t\toptionalRawChunk({\n\t\t\t\t\t\tkind: \"tool-done\",\n\t\t\t\t\t\tid,\n\t\t\t\t\t\tindex: blockIndex,\n\t\t\t\t\t\tchoiceIndex: 0,\n\t\t\t\t\t}),\n\t\t\t\t);\n\t\t\t}\n\t\t\tblockIndex += 1;\n\t\t}\n\t}\n\n\tconst usage = usageChunk(body.usage);\n\tif (usage) chunks.push(usage);\n\n\tconst stopReason = asString(body.stopReason);\n\tif (stopReason) {\n\t\tchunks.push({ kind: \"finish\", reason: mapStopReason(stopReason), choiceIndex: 0 });\n\t} else if (!chunks.some((chunk) => chunk.kind === \"finish\")) {\n\t\tchunks.push({ kind: \"finish\", reason: \"stop\" });\n\t}\n\n\t// Touch parser options for modelFamily-specific paths in stream mode parity.\n\tvoid parser;\n\n\treturn chunks;\n}\n\nfunction reasoningTextFromDelta(\n\treasoning: unknown,\n\tmodelFamily: BedrockModelFamily | undefined,\n): string | undefined {\n\tif (reasoning === undefined) return undefined;\n\tif (typeof reasoning === \"string\") return reasoning.length > 0 ? reasoning : undefined;\n\tif (!isRecord(reasoning)) return undefined;\n\n\tconst text = asString(reasoning.text);\n\tif (text !== undefined && text.length > 0) return text;\n\n\tif (modelFamily === \"anthropic\" || modelFamily === \"auto\") {\n\t\tconst thinking = asString(reasoning.thinking);\n\t\tif (thinking !== undefined && thinking.length > 0) return thinking;\n\t}\n\n\treturn undefined;\n}\n\nfunction incrementalArgsDelta(state: BlockToolState, nextInput: string): string | undefined {\n\tconst prev = state.lastArgsJson;\n\tif (nextInput === prev) return undefined;\n\tlet delta: string;\n\tif (prev.length > 0 && nextInput.startsWith(prev)) {\n\t\tdelta = nextInput.slice(prev.length);\n\t} else {\n\t\tdelta = nextInput;\n\t}\n\tstate.lastArgsJson = nextInput;\n\treturn delta.length > 0 ? delta : undefined;\n}\n\nfunction mapStopReason(value: string): FinishReason {\n\tswitch (value) {\n\t\tcase \"end_turn\":\n\t\tcase \"stop_sequence\":\n\t\t\treturn \"stop\";\n\t\tcase \"tool_use\":\n\t\t\treturn \"tool_calls\";\n\t\tcase \"max_tokens\":\n\t\t\treturn \"length\";\n\t\tcase \"content_filtered\":\n\t\tcase \"guardrail_intervened\":\n\t\t\treturn \"content_filter\";\n\t\tdefault:\n\t\t\treturn \"stop\";\n\t}\n}\n\nfunction usageChunk(value: unknown): RawChunk | undefined {\n\tif (!isRecord(value)) return undefined;\n\tconst inputTokens =\n\t\tasNumber(value.inputTokens) ?? asNumber(value.promptTokens) ?? asNumber(value.inputTokenCount);\n\tconst outputTokens =\n\t\tasNumber(value.outputTokens) ??\n\t\tasNumber(value.completionTokens) ??\n\t\tasNumber(value.outputTokenCount);\n\tconst totalTokens = asNumber(value.totalTokens) ?? asNumber(value.totalTokenCount);\n\tif (inputTokens === undefined && outputTokens === undefined && totalTokens === undefined) {\n\t\treturn undefined;\n\t}\n\treturn optionalRawChunk({\n\t\tkind: \"usage\",\n\t\tinputTokens,\n\t\toutputTokens,\n\t\traw: { ...value, totalTokens },\n\t});\n}\n\nfunction optionalMetadataRaw(payload: Record<string, unknown>): RawChunk[] {\n\tif (Object.keys(payload).length === 0) return [];\n\treturn [\n\t\toptionalRawChunk({\n\t\t\tkind: \"metadata\",\n\t\t\traw: payload,\n\t\t}),\n\t];\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/core/utils/object.ts","../../src/adapters/utils.ts","../../src/adapters/errors.ts","../../src/adapters/shared/incremental-json.ts","../../src/adapters/shared/parse-payload.ts","../../src/adapters/shared/stop-reasons.ts","../../src/adapters/shared/text-delta.ts","../../src/adapters/shared/usage.ts","../../src/adapters/bedrock.ts"],"names":[],"mappings":"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","file":"bedrock.cjs","sourcesContent":["/** Strip undefined own properties; preserve explicit null. */\nexport function stripUndefined<T extends Record<string, unknown>>(obj: T): T {\n\treturn Object.fromEntries(Object.entries(obj).filter(([, value]) => value !== undefined)) as T;\n}\n","/** Internal adapter utilities. Not part of the public API. */\nimport type { RawChunk, StreamAdapter } from \"../core/types\";\nimport { stripUndefined } from \"../core/utils/object\";\nimport { adapterScopedError } from \"./errors\";\n\nexport function isRecord(value: unknown): value is Record<string, unknown> {\n\treturn typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nexport function asString(value: unknown): string | undefined {\n\treturn typeof value === \"string\" ? value : undefined;\n}\n\nexport function asNumber(value: unknown): number | undefined {\n\treturn typeof value === \"number\" && Number.isFinite(value) ? value : undefined;\n}\n\nexport function optionalRawChunk(input: Record<string, unknown>): RawChunk {\n\treturn stripUndefined(input) as RawChunk;\n}\n\nexport function prefixedAdapterError(feature: string, message: string): Error {\n\treturn adapterScopedError(feature, message);\n}\n\nexport function createStreamAdapter<TOptions>(config: {\n\tparser: { parseChunk(raw: string): RawChunk[] };\n\tparseResponse: (body: unknown, options: TOptions) => RawChunk[];\n\toptions: TOptions;\n}): StreamAdapter {\n\treturn {\n\t\tparseChunk(raw) {\n\t\t\treturn config.parser.parseChunk(raw);\n\t\t},\n\t\tparseResponse(body) {\n\t\t\treturn config.parseResponse(body, config.options);\n\t\t},\n\t};\n}\n\nexport function parseAdapterJSON(raw: string, feature: string): unknown {\n\ttry {\n\t\treturn JSON.parse(raw) as unknown;\n\t} catch (error) {\n\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\tthrow prefixedAdapterError(feature, message);\n\t}\n}\n","/** Internal adapter error helpers. Not part of the public API. */\nimport type { RawChunk } from \"../core/types\";\nimport { asString } from \"./utils\";\n\nexport function libraryError(message: string): Error {\n\treturn new Error(`llm-stream-assemble: ${message}`);\n}\n\nexport function adapterScopedError(scope: string, message: string): Error {\n\treturn new Error(`llm-stream-assemble: ${scope}: ${message}`);\n}\n\nexport function providerErrorChunks(error: Error, recoverable = false): RawChunk[] {\n\treturn [\n\t\t{ kind: \"provider-error\", error, recoverable },\n\t\t{ kind: \"finish\", reason: \"error\" },\n\t];\n}\n\nexport function providerErrorChunksFromMessage(message: string, recoverable = false): RawChunk[] {\n\treturn providerErrorChunks(libraryError(message), recoverable);\n}\n\nexport function providerErrorChunksFromPayload(\n\terrorPayload: Record<string, unknown>,\n\tscope: string,\n\trecoverable: boolean,\n\tfallbackMessage: string,\n): RawChunk[] {\n\tconst message = asString(errorPayload.message) ?? fallbackMessage;\n\tconst error = adapterScopedError(scope, message);\n\tObject.defineProperty(error, \"raw\", {\n\t\tvalue: errorPayload,\n\t\tenumerable: false,\n\t});\n\treturn providerErrorChunks(error, recoverable);\n}\n","/** Tracks last serialized JSON for prefix-diff tool arg deltas. */\nexport interface IncrementalJsonState {\n\tlastArgsJson: string;\n}\n\n/** Emit only the new suffix when `nextInput` extends `prev`, else full replace. */\nexport function incrementalJsonStringDelta(\n\tstate: IncrementalJsonState,\n\tnextInput: string,\n): string | undefined {\n\tconst prev = state.lastArgsJson;\n\tif (nextInput === prev) return undefined;\n\tconst delta =\n\t\tprev.length > 0 && nextInput.startsWith(prev) ? nextInput.slice(prev.length) : nextInput;\n\tstate.lastArgsJson = nextInput;\n\treturn delta.length > 0 ? delta : undefined;\n}\n","import { adapterScopedError } from \"../errors\";\nimport { isRecord, parseAdapterJSON } from \"../utils\";\n\nexport interface ParseAdapterObjectOptions {\n\ttrim?: boolean;\n\tallowDone?: boolean;\n}\n\n/**\n * Parse a single adapter payload string into a JSON object.\n * Returns null for empty / [DONE] lines when configured.\n */\nexport function parseAdapterObjectPayload(\n\traw: string,\n\tscope: string,\n\toptions: ParseAdapterObjectOptions = {},\n): Record<string, unknown> | null {\n\tconst { trim = true, allowDone = true } = options;\n\tconst input = trim ? raw.trim() : raw;\n\tif (input.length === 0 || (allowDone && input === \"[DONE]\")) return null;\n\n\tconst payload = parseAdapterJSON(input, scope);\n\tif (!isRecord(payload)) {\n\t\tthrow adapterScopedError(scope, \"expected a JSON object\");\n\t}\n\treturn payload;\n}\n","import type { FinishReason } from \"../../core/types\";\n\n/** Anthropic Messages and Bedrock Converse share similar stop-reason strings. */\nexport function mapAnthropicLikeStopReason(value: string): FinishReason {\n\tswitch (value) {\n\t\tcase \"end_turn\":\n\t\tcase \"stop_sequence\":\n\t\t\treturn \"stop\";\n\t\tcase \"tool_use\":\n\t\t\treturn \"tool_calls\";\n\t\tcase \"max_tokens\":\n\t\t\treturn \"length\";\n\t\tcase \"content_filtered\":\n\t\tcase \"guardrail_intervened\":\n\t\tcase \"refusal\":\n\t\t\treturn \"content_filter\";\n\t\tdefault:\n\t\t\treturn \"stop\";\n\t}\n}\n","import type { RawChunk } from \"../../core/types\";\n\nexport interface TextOrJsonDeltaOptions {\n\tjsonMode?: boolean | undefined;\n\tchoiceIndex?: number | undefined;\n}\n\nexport function textOrJsonDelta(\n\ttext: string,\n\toptions: TextOrJsonDeltaOptions,\n): RawChunk | undefined {\n\tif (text.length === 0) return undefined;\n\tif (options.jsonMode) return { kind: \"json-delta\", delta: text };\n\tif (options.choiceIndex !== undefined) {\n\t\treturn { kind: \"text-delta\", text, choiceIndex: options.choiceIndex };\n\t}\n\treturn { kind: \"text-delta\", text };\n}\n","import type { RawChunk } from \"../../core/types\";\nimport { asNumber, isRecord, optionalRawChunk } from \"../utils\";\n\nexport interface UsageFieldAliases {\n\tinput?: string[];\n\toutput?: string[];\n\treasoning?: string[];\n\ttotal?: string[];\n}\n\nconst DEFAULT_ALIASES: UsageFieldAliases = {\n\tinput: [\"inputTokens\", \"input_tokens\", \"promptTokens\", \"promptTokenCount\", \"inputTokenCount\"],\n\toutput: [\n\t\t\"outputTokens\",\n\t\t\"output_tokens\",\n\t\t\"completionTokens\",\n\t\t\"candidatesTokenCount\",\n\t\t\"outputTokenCount\",\n\t],\n\treasoning: [\"reasoningTokens\", \"reasoning_tokens\", \"thoughtsTokenCount\"],\n\ttotal: [\"totalTokens\", \"totalTokenCount\", \"total_tokens\"],\n};\n\nfunction firstNumber(\n\tvalue: Record<string, unknown>,\n\tfields: string[] | undefined,\n): number | undefined {\n\tif (!fields) return undefined;\n\tfor (const field of fields) {\n\t\tconst number = asNumber(value[field]);\n\t\tif (number !== undefined) return number;\n\t}\n\treturn undefined;\n}\n\nexport function buildUsageChunk(\n\tvalue: unknown,\n\taliases: UsageFieldAliases = DEFAULT_ALIASES,\n\toptions?: { mirrorTotalTokens?: boolean },\n): RawChunk | undefined {\n\tif (!isRecord(value)) return undefined;\n\tconst inputTokens = firstNumber(value, aliases.input);\n\tconst outputTokens = firstNumber(value, aliases.output);\n\tconst reasoningTokens = firstNumber(value, aliases.reasoning);\n\tconst totalTokens = firstNumber(value, aliases.total);\n\tif (\n\t\tinputTokens === undefined &&\n\t\toutputTokens === undefined &&\n\t\treasoningTokens === undefined &&\n\t\ttotalTokens === undefined\n\t) {\n\t\treturn undefined;\n\t}\n\tconst raw =\n\t\toptions?.mirrorTotalTokens && totalTokens !== undefined ? { ...value, totalTokens } : value;\n\treturn optionalRawChunk({\n\t\tkind: \"usage\",\n\t\tinputTokens,\n\t\toutputTokens,\n\t\treasoningTokens,\n\t\traw,\n\t});\n}\n","import type { RawChunk, StreamAdapter } from \"../core/types\";\nimport { libraryError, providerErrorChunksFromPayload } from \"./errors\";\nimport { incrementalJsonStringDelta } from \"./shared/incremental-json\";\nimport { parseAdapterObjectPayload } from \"./shared/parse-payload\";\nimport { mapAnthropicLikeStopReason } from \"./shared/stop-reasons\";\nimport { textOrJsonDelta } from \"./shared/text-delta\";\nimport { buildUsageChunk } from \"./shared/usage\";\nimport { asNumber, asString, createStreamAdapter, isRecord, optionalRawChunk } from \"./utils\";\n\nexport type BedrockModelFamily = \"anthropic\" | \"openai-like\" | \"nova\" | \"auto\";\n\nexport interface BedrockAdapterOptions {\n\t/**\n\t * Hint which ConverseStream payload dialect to prefer when envelopes overlap.\n\t * \"auto\" uses structural detection (document heuristics in adapter-guide).\n\t */\n\tmodelFamily?: BedrockModelFamily;\n\t/** Map structured JSON text blocks to json-delta instead of text-delta. */\n\tjsonMode?: boolean;\n}\n\ninterface BlockToolState {\n\tid: string;\n\tname: string;\n\tindex: number;\n\topen: boolean;\n\tlastArgsJson: string;\n}\n\nconst EXCEPTION_KEYS = [\n\t\"internalServerException\",\n\t\"modelStreamErrorException\",\n\t\"validationException\",\n\t\"throttlingException\",\n\t\"serviceUnavailableException\",\n] as const;\n\nexport function bedrockAdapter(options: BedrockAdapterOptions = {}): StreamAdapter {\n\tconst parser = new BedrockStreamParser(options);\n\treturn createStreamAdapter({\n\t\tparser,\n\t\tparseResponse,\n\t\toptions,\n\t});\n}\n\nclass BedrockStreamParser {\n\tprivate messageStarted = false;\n\tprivate readonly blocks = new Map<number, BlockToolState>();\n\n\tconstructor(private readonly options: BedrockAdapterOptions) {}\n\n\tparseChunk(raw: string): RawChunk[] {\n\t\tconst payload = parseAdapterObjectPayload(raw, \"bedrockAdapter.parseChunk\");\n\t\tif (!payload) return [];\n\n\t\tfor (const key of EXCEPTION_KEYS) {\n\t\t\tconst exception = payload[key];\n\t\t\tif (isRecord(exception)) {\n\t\t\t\treturn providerErrorChunksFromPayload(\n\t\t\t\t\texception,\n\t\t\t\t\t\"bedrockAdapter.parseChunk\",\n\t\t\t\t\tfalse,\n\t\t\t\t\t`Bedrock ${key}`,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\tif (payload.messageStart !== undefined) {\n\t\t\treturn this.messageStartChunks(payload.messageStart);\n\t\t}\n\t\tif (payload.contentBlockStart !== undefined) {\n\t\t\treturn this.contentBlockStartChunks(payload.contentBlockStart);\n\t\t}\n\t\tif (payload.contentBlockDelta !== undefined) {\n\t\t\treturn this.contentBlockDeltaChunks(payload.contentBlockDelta);\n\t\t}\n\t\tif (payload.contentBlockStop !== undefined) {\n\t\t\treturn this.contentBlockStopChunks(payload.contentBlockStop);\n\t\t}\n\t\tif (payload.messageStop !== undefined) {\n\t\t\treturn this.messageStopChunks(payload.messageStop);\n\t\t}\n\t\tif (payload.metadata !== undefined) {\n\t\t\treturn this.metadataChunks(payload.metadata);\n\t\t}\n\n\t\treturn optionalMetadataRaw(payload);\n\t}\n\n\tprivate messageStartChunks(value: unknown): RawChunk[] {\n\t\tif (!isRecord(value)) return [];\n\t\tif (this.messageStarted) return [];\n\t\tthis.messageStarted = true;\n\t\tconst role = asString(value.role);\n\t\treturn [\n\t\t\t{ kind: \"message-start\" },\n\t\t\t...(role\n\t\t\t\t? [\n\t\t\t\t\t\toptionalRawChunk({\n\t\t\t\t\t\t\tkind: \"metadata\",\n\t\t\t\t\t\t\traw: { role },\n\t\t\t\t\t\t}),\n\t\t\t\t\t]\n\t\t\t\t: []),\n\t\t];\n\t}\n\n\tprivate contentBlockStartChunks(value: unknown): RawChunk[] {\n\t\tif (!isRecord(value)) return [];\n\t\tconst blockIndex = asNumber(value.contentBlockIndex) ?? 0;\n\t\tconst start = isRecord(value.start) ? value.start : undefined;\n\t\tconst toolUse = start && isRecord(start.toolUse) ? start.toolUse : undefined;\n\t\tif (!toolUse) return [];\n\n\t\tconst id = asString(toolUse.toolUseId) ?? `bedrock:${blockIndex}`;\n\t\tconst name = asString(toolUse.name) ?? \"unknown\";\n\t\tthis.blocks.set(blockIndex, {\n\t\t\tid,\n\t\t\tname,\n\t\t\tindex: blockIndex,\n\t\t\topen: true,\n\t\t\tlastArgsJson: \"\",\n\t\t});\n\t\treturn [\n\t\t\toptionalRawChunk({\n\t\t\t\tkind: \"tool-start\",\n\t\t\t\tid,\n\t\t\t\tname,\n\t\t\t\tindex: blockIndex,\n\t\t\t\tchoiceIndex: 0,\n\t\t\t}),\n\t\t];\n\t}\n\n\tprivate contentBlockDeltaChunks(value: unknown): RawChunk[] {\n\t\tif (!isRecord(value)) return [];\n\t\tconst blockIndex = asNumber(value.contentBlockIndex) ?? 0;\n\t\tconst delta = isRecord(value.delta) ? value.delta : undefined;\n\t\tif (!delta) return [];\n\n\t\tconst chunks: RawChunk[] = [];\n\t\tconst text = asString(delta.text);\n\t\tconst textChunk = text\n\t\t\t? textOrJsonDelta(text, { jsonMode: this.options.jsonMode, choiceIndex: 0 })\n\t\t\t: undefined;\n\t\tif (textChunk) chunks.push(textChunk);\n\n\t\tconst reasoningText = reasoningTextFromDelta(delta.reasoningContent, this.options.modelFamily);\n\t\tif (reasoningText) {\n\t\t\tchunks.push({ kind: \"reasoning-delta\", text: reasoningText, variant: \"detail\" });\n\t\t}\n\n\t\tconst toolUse = isRecord(delta.toolUse) ? delta.toolUse : undefined;\n\t\tif (toolUse) {\n\t\t\tchunks.push(...this.toolInputDelta(blockIndex, toolUse));\n\t\t}\n\n\t\treturn chunks;\n\t}\n\n\tprivate toolInputDelta(blockIndex: number, toolUse: Record<string, unknown>): RawChunk[] {\n\t\tconst state = this.blocks.get(blockIndex);\n\t\tif (!state) return [];\n\n\t\tconst input = toolUse.input;\n\t\tlet delta: string | undefined;\n\t\tif (typeof input === \"string\") {\n\t\t\tdelta = incrementalJsonStringDelta(state, input);\n\t\t} else if (isRecord(input)) {\n\t\t\tdelta = incrementalJsonStringDelta(state, JSON.stringify(input));\n\t\t}\n\t\tif (!delta) return [];\n\n\t\treturn [\n\t\t\toptionalRawChunk({\n\t\t\t\tkind: \"tool-args-delta\",\n\t\t\t\tid: state.id,\n\t\t\t\tdelta,\n\t\t\t\tindex: state.index,\n\t\t\t\tchoiceIndex: 0,\n\t\t\t}),\n\t\t];\n\t}\n\n\tprivate contentBlockStopChunks(value: unknown): RawChunk[] {\n\t\tif (!isRecord(value)) return [];\n\t\tconst blockIndex = asNumber(value.contentBlockIndex) ?? 0;\n\t\tconst state = this.blocks.get(blockIndex);\n\t\tif (!state?.open) return [];\n\n\t\tstate.open = false;\n\t\treturn [\n\t\t\toptionalRawChunk({\n\t\t\t\tkind: \"tool-done\",\n\t\t\t\tid: state.id,\n\t\t\t\tindex: state.index,\n\t\t\t\tchoiceIndex: 0,\n\t\t\t}),\n\t\t];\n\t}\n\n\tprivate messageStopChunks(value: unknown): RawChunk[] {\n\t\tif (!isRecord(value)) return [];\n\t\tconst stopReason = asString(value.stopReason) ?? \"unknown\";\n\t\tconst additional = value.additionalModelResponseFields;\n\t\tconst chunks: RawChunk[] = [];\n\t\tchunks.push(\n\t\t\toptionalRawChunk({\n\t\t\t\tkind: \"metadata\",\n\t\t\t\traw: {\n\t\t\t\t\tstopReason,\n\t\t\t\t\t...(additional !== undefined ? { additionalModelResponseFields: additional } : {}),\n\t\t\t\t},\n\t\t\t}),\n\t\t);\n\t\tchunks.push({\n\t\t\tkind: \"finish\",\n\t\t\treason: mapAnthropicLikeStopReason(stopReason),\n\t\t\tchoiceIndex: 0,\n\t\t});\n\t\treturn chunks;\n\t}\n\n\tprivate metadataChunks(value: unknown): RawChunk[] {\n\t\tif (!isRecord(value)) return [];\n\t\tconst chunks: RawChunk[] = [];\n\n\t\tconst usage = buildUsageChunk(value.usage, undefined, { mirrorTotalTokens: true });\n\t\tif (usage) chunks.push(usage);\n\n\t\tconst metrics = value.metrics;\n\t\tconst trace = value.trace;\n\t\tif (metrics !== undefined || trace !== undefined) {\n\t\t\tchunks.push(\n\t\t\t\toptionalRawChunk({\n\t\t\t\t\tkind: \"metadata\",\n\t\t\t\t\traw: { metrics, trace },\n\t\t\t\t}),\n\t\t\t);\n\t\t}\n\n\t\treturn chunks;\n\t}\n}\n\nfunction parseResponse(body: unknown, options: BedrockAdapterOptions): RawChunk[] {\n\tif (!isRecord(body)) {\n\t\tthrow libraryError(\"bedrockAdapter.parseResponse expected a Converse response object\");\n\t}\n\n\tfor (const key of EXCEPTION_KEYS) {\n\t\tconst exception = body[key];\n\t\tif (isRecord(exception)) {\n\t\t\treturn providerErrorChunksFromPayload(\n\t\t\t\texception,\n\t\t\t\t\"bedrockAdapter.parseResponse\",\n\t\t\t\tfalse,\n\t\t\t\t`Bedrock ${key}`,\n\t\t\t);\n\t\t}\n\t}\n\n\tconst parser = new BedrockStreamParser(options);\n\tconst syntheticEvents = synthesizeConverseStreamEvents(body);\n\tconst chunks: RawChunk[] = [];\n\tfor (const event of syntheticEvents) {\n\t\tchunks.push(...parser.parseChunk(JSON.stringify(event)));\n\t}\n\n\tconst stopReason = asString(body.stopReason);\n\tif (stopReason) {\n\t\tchunks.push({\n\t\t\tkind: \"finish\",\n\t\t\treason: mapAnthropicLikeStopReason(stopReason),\n\t\t\tchoiceIndex: 0,\n\t\t});\n\t} else if (!chunks.some((chunk) => chunk.kind === \"finish\")) {\n\t\tchunks.push({ kind: \"finish\", reason: \"stop\", choiceIndex: 0 });\n\t}\n\n\treturn chunks;\n}\n\nfunction synthesizeConverseStreamEvents(body: Record<string, unknown>): unknown[] {\n\tconst events: unknown[] = [];\n\tconst output = isRecord(body.output) ? body.output : undefined;\n\tconst message = output && isRecord(output.message) ? output.message : undefined;\n\n\tif (message) {\n\t\tevents.push({ messageStart: { role: message.role } });\n\t\tconst content = Array.isArray(message.content) ? message.content : [];\n\t\tlet blockIndex = 0;\n\t\tfor (const block of content) {\n\t\t\tif (!isRecord(block)) continue;\n\t\t\tconst toolUse = isRecord(block.toolUse) ? block.toolUse : undefined;\n\t\t\tif (toolUse) {\n\t\t\t\tevents.push({\n\t\t\t\t\tcontentBlockStart: {\n\t\t\t\t\t\tcontentBlockIndex: blockIndex,\n\t\t\t\t\t\tstart: { toolUse },\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t\tif (toolUse.input !== undefined) {\n\t\t\t\t\tevents.push({\n\t\t\t\t\t\tcontentBlockDelta: {\n\t\t\t\t\t\t\tcontentBlockIndex: blockIndex,\n\t\t\t\t\t\t\tdelta: { toolUse: { input: toolUse.input } },\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tevents.push({ contentBlockStop: { contentBlockIndex: blockIndex } });\n\t\t\t} else {\n\t\t\t\tconst text = asString(block.text);\n\t\t\t\tif (text !== undefined && text.length > 0) {\n\t\t\t\t\tevents.push({\n\t\t\t\t\t\tcontentBlockDelta: {\n\t\t\t\t\t\t\tcontentBlockIndex: blockIndex,\n\t\t\t\t\t\t\tdelta: { text },\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\tblockIndex += 1;\n\t\t}\n\t}\n\n\tif (body.usage !== undefined) {\n\t\tevents.push({ metadata: { usage: body.usage } });\n\t}\n\n\treturn events;\n}\n\nfunction reasoningTextFromDelta(\n\treasoning: unknown,\n\tmodelFamily: BedrockModelFamily | undefined,\n): string | undefined {\n\tif (reasoning === undefined) return undefined;\n\tif (typeof reasoning === \"string\") return reasoning.length > 0 ? reasoning : undefined;\n\tif (!isRecord(reasoning)) return undefined;\n\n\tconst text = asString(reasoning.text);\n\tif (text !== undefined && text.length > 0) return text;\n\n\tif (modelFamily === \"anthropic\" || modelFamily === \"auto\") {\n\t\tconst thinking = asString(reasoning.thinking);\n\t\tif (thinking !== undefined && thinking.length > 0) return thinking;\n\t}\n\n\treturn undefined;\n}\n\nfunction optionalMetadataRaw(payload: Record<string, unknown>): RawChunk[] {\n\tif (Object.keys(payload).length === 0) return [];\n\treturn [\n\t\toptionalRawChunk({\n\t\t\tkind: \"metadata\",\n\t\t\traw: payload,\n\t\t}),\n\t];\n}\n"]}
|