fix(binary): preload Bedrock provider module for Bun bundle

refs #1814
This commit is contained in:
Mario Zechner 2026-03-04 20:47:41 +01:00
parent 12cec4f162
commit 0199abfd11
6 changed files with 30 additions and 4 deletions

View file

@ -0,0 +1,6 @@
import { streamBedrock, streamSimpleBedrock } from "./providers/amazon-bedrock.js";
export const bedrockProviderModule = {
streamBedrock,
streamSimpleBedrock,
};

View file

@ -22,26 +22,35 @@ interface BedrockProviderModule {
model: Model<"bedrock-converse-stream">,
context: Context,
options?: StreamOptions,
) => AssistantMessageEventStream;
) => AsyncIterable<AssistantMessageEvent>;
streamSimpleBedrock: (
model: Model<"bedrock-converse-stream">,
context: Context,
options?: SimpleStreamOptions,
) => AssistantMessageEventStream;
) => AsyncIterable<AssistantMessageEvent>;
}
type DynamicImport = (specifier: string) => Promise<unknown>;
const dynamicImport = new Function("specifier", "return import(specifier);") as DynamicImport;
let bedrockProviderModuleOverride: BedrockProviderModule | undefined;
export function setBedrockProviderModule(module: BedrockProviderModule): void {
bedrockProviderModuleOverride = module;
}
async function loadBedrockProviderModule(): Promise<BedrockProviderModule> {
if (bedrockProviderModuleOverride) {
return bedrockProviderModuleOverride;
}
const module = await dynamicImport("./amazon-bedrock.js");
return module as BedrockProviderModule;
}
function forwardStream(target: AssistantMessageEventStream, source: AssistantMessageEventStream): void {
function forwardStream(target: AssistantMessageEventStream, source: AsyncIterable<AssistantMessageEvent>): void {
(async () => {
for await (const event of source as AsyncIterable<AssistantMessageEvent>) {
for await (const event of source) {
target.push(event);
}
target.end();