ba93da9a93
Stream implementations move from src/providers/ to src/api/, renamed by API id (anthropic.ts -> anthropic-messages.ts, google.ts -> google-generative-ai.ts, mistral.ts -> mistral-conversations.ts, amazon-bedrock.ts -> bedrock-converse-stream.ts). Every module now exports exactly stream/streamSimple; shared helpers move alongside. New ProviderStreams dispatch contract in types.ts, lazyApi() wrapper in api/lazy.ts, and one .lazy.ts wrapper per API. Bedrock's wrapper keeps the node-only variable-specifier import and setBedrockProviderModule() (now taking ProviderStreams). providers/register-builtins.ts deleted; interim until the compat entrypoint lands, builtin api-registry registration lives in stream.ts and lazy wrappers are exported from the root barrel. Old per-API lazy exports (streamAnthropic, ...) are gone; package.json subpaths retarget to dist/api/.
31 lines
1.1 KiB
TypeScript
31 lines
1.1 KiB
TypeScript
import type { ProviderStreams } from "../types.ts";
|
|
import { lazyApi } from "./lazy.ts";
|
|
|
|
/**
|
|
* Loads the bedrock implementation through a variable specifier so bundlers
|
|
* (browser smoke, Bun compile) cannot follow the import into the Node-only
|
|
* AWS SDK. The `.ts`/`.js` rewrite keeps the trick working from both source
|
|
* and built output.
|
|
*/
|
|
const importNodeOnlyApi = (specifier: string): Promise<unknown> => {
|
|
const runtimeSpecifier = import.meta.url.endsWith(".js") ? specifier.replace(/\.ts$/, ".js") : specifier;
|
|
return import(runtimeSpecifier);
|
|
};
|
|
|
|
let bedrockModuleOverride: ProviderStreams | undefined;
|
|
|
|
/**
|
|
* Overrides the dynamically imported bedrock implementation. Used by the Bun
|
|
* binary build, where the variable-specifier import cannot be bundled; the
|
|
* build registers a statically imported module instead.
|
|
*/
|
|
export function setBedrockProviderModule(module: ProviderStreams): void {
|
|
bedrockModuleOverride = module;
|
|
}
|
|
|
|
export const bedrockConverseStreamApi = (): ProviderStreams =>
|
|
lazyApi(
|
|
async () =>
|
|
bedrockModuleOverride ?? ((await importNodeOnlyApi("./bedrock-converse-stream.ts")) as ProviderStreams),
|
|
);
|