mirror of
https://github.com/getcompanion-ai/co-mono.git
synced 2026-04-15 07:04:45 +00:00
parent
12cec4f162
commit
0199abfd11
6 changed files with 30 additions and 4 deletions
1
packages/ai/bedrock-provider.d.ts
vendored
Normal file
1
packages/ai/bedrock-provider.d.ts
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
export * from "./dist/bedrock-provider.js";
|
||||
1
packages/ai/bedrock-provider.js
Normal file
1
packages/ai/bedrock-provider.js
Normal file
|
|
@ -0,0 +1 @@
|
|||
export * from "./dist/bedrock-provider.js";
|
||||
|
|
@ -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": {
|
||||
|
|
|
|||
6
packages/ai/src/bedrock-provider.ts
Normal file
6
packages/ai/src/bedrock-provider.ts
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
import { streamBedrock, streamSimpleBedrock } from "./providers/amazon-bedrock.js";
|
||||
|
||||
export const bedrockProviderModule = {
|
||||
streamBedrock,
|
||||
streamSimpleBedrock,
|
||||
};
|
||||
|
|
@ -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();
|
||||
|
|
|
|||
|
|
@ -7,9 +7,12 @@
|
|||
*/
|
||||
process.title = "pi";
|
||||
|
||||
import { setBedrockProviderModule } from "@mariozechner/pi-ai";
|
||||
import { bedrockProviderModule } from "@mariozechner/pi-ai/bedrock-provider";
|
||||
import { EnvHttpProxyAgent, setGlobalDispatcher } from "undici";
|
||||
import { main } from "./main.js";
|
||||
|
||||
setGlobalDispatcher(new EnvHttpProxyAgent());
|
||||
setBedrockProviderModule(bedrockProviderModule);
|
||||
|
||||
main(process.argv.slice(2));
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue