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

1
packages/ai/bedrock-provider.d.ts vendored Normal file
View file

@ -0,0 +1 @@
export * from "./dist/bedrock-provider.js";

View file

@ -0,0 +1 @@
export * from "./dist/bedrock-provider.js";

View file

@ -13,6 +13,10 @@
"./oauth": {
"types": "./oauth.d.ts",
"import": "./oauth.js"
},
"./bedrock-provider": {
"types": "./bedrock-provider.d.ts",
"import": "./bedrock-provider.js"
}
},
"bin": {
@ -22,6 +26,8 @@
"dist",
"oauth.js",
"oauth.d.ts",
"bedrock-provider.js",
"bedrock-provider.d.ts",
"README.md"
],
"scripts": {

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();