mirror of
https://github.com/getcompanion-ai/co-mono.git
synced 2026-04-15 09:01:14 +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": {
|
"./oauth": {
|
||||||
"types": "./oauth.d.ts",
|
"types": "./oauth.d.ts",
|
||||||
"import": "./oauth.js"
|
"import": "./oauth.js"
|
||||||
|
},
|
||||||
|
"./bedrock-provider": {
|
||||||
|
"types": "./bedrock-provider.d.ts",
|
||||||
|
"import": "./bedrock-provider.js"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"bin": {
|
"bin": {
|
||||||
|
|
@ -22,6 +26,8 @@
|
||||||
"dist",
|
"dist",
|
||||||
"oauth.js",
|
"oauth.js",
|
||||||
"oauth.d.ts",
|
"oauth.d.ts",
|
||||||
|
"bedrock-provider.js",
|
||||||
|
"bedrock-provider.d.ts",
|
||||||
"README.md"
|
"README.md"
|
||||||
],
|
],
|
||||||
"scripts": {
|
"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">,
|
model: Model<"bedrock-converse-stream">,
|
||||||
context: Context,
|
context: Context,
|
||||||
options?: StreamOptions,
|
options?: StreamOptions,
|
||||||
) => AssistantMessageEventStream;
|
) => AsyncIterable<AssistantMessageEvent>;
|
||||||
streamSimpleBedrock: (
|
streamSimpleBedrock: (
|
||||||
model: Model<"bedrock-converse-stream">,
|
model: Model<"bedrock-converse-stream">,
|
||||||
context: Context,
|
context: Context,
|
||||||
options?: SimpleStreamOptions,
|
options?: SimpleStreamOptions,
|
||||||
) => AssistantMessageEventStream;
|
) => AsyncIterable<AssistantMessageEvent>;
|
||||||
}
|
}
|
||||||
|
|
||||||
type DynamicImport = (specifier: string) => Promise<unknown>;
|
type DynamicImport = (specifier: string) => Promise<unknown>;
|
||||||
|
|
||||||
const dynamicImport = new Function("specifier", "return import(specifier);") as DynamicImport;
|
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> {
|
async function loadBedrockProviderModule(): Promise<BedrockProviderModule> {
|
||||||
|
if (bedrockProviderModuleOverride) {
|
||||||
|
return bedrockProviderModuleOverride;
|
||||||
|
}
|
||||||
const module = await dynamicImport("./amazon-bedrock.js");
|
const module = await dynamicImport("./amazon-bedrock.js");
|
||||||
return module as BedrockProviderModule;
|
return module as BedrockProviderModule;
|
||||||
}
|
}
|
||||||
|
|
||||||
function forwardStream(target: AssistantMessageEventStream, source: AssistantMessageEventStream): void {
|
function forwardStream(target: AssistantMessageEventStream, source: AsyncIterable<AssistantMessageEvent>): void {
|
||||||
(async () => {
|
(async () => {
|
||||||
for await (const event of source as AsyncIterable<AssistantMessageEvent>) {
|
for await (const event of source) {
|
||||||
target.push(event);
|
target.push(event);
|
||||||
}
|
}
|
||||||
target.end();
|
target.end();
|
||||||
|
|
|
||||||
|
|
@ -7,9 +7,12 @@
|
||||||
*/
|
*/
|
||||||
process.title = "pi";
|
process.title = "pi";
|
||||||
|
|
||||||
|
import { setBedrockProviderModule } from "@mariozechner/pi-ai";
|
||||||
|
import { bedrockProviderModule } from "@mariozechner/pi-ai/bedrock-provider";
|
||||||
import { EnvHttpProxyAgent, setGlobalDispatcher } from "undici";
|
import { EnvHttpProxyAgent, setGlobalDispatcher } from "undici";
|
||||||
import { main } from "./main.js";
|
import { main } from "./main.js";
|
||||||
|
|
||||||
setGlobalDispatcher(new EnvHttpProxyAgent());
|
setGlobalDispatcher(new EnvHttpProxyAgent());
|
||||||
|
setBedrockProviderModule(bedrockProviderModule);
|
||||||
|
|
||||||
main(process.argv.slice(2));
|
main(process.argv.slice(2));
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue