mirror of
https://github.com/getcompanion-ai/co-mono.git
synced 2026-04-15 18:01:22 +00:00
Extracted HTTP proxy setup to shared module and imported it from both stream.ts and oauth/index.ts. This ensures fetch() calls during OAuth flows (token exchange, refresh, project discovery) go through the proxy. fixes #1132
60 lines
1.5 KiB
TypeScript
60 lines
1.5 KiB
TypeScript
import "./providers/register-builtins.js";
|
|
import "./utils/http-proxy.js";
|
|
|
|
import { getApiProvider } from "./api-registry.js";
|
|
import type {
|
|
Api,
|
|
AssistantMessage,
|
|
AssistantMessageEventStream,
|
|
Context,
|
|
Model,
|
|
ProviderStreamOptions,
|
|
SimpleStreamOptions,
|
|
StreamOptions,
|
|
} from "./types.js";
|
|
|
|
export { getEnvApiKey } from "./env-api-keys.js";
|
|
|
|
function resolveApiProvider(api: Api) {
|
|
const provider = getApiProvider(api);
|
|
if (!provider) {
|
|
throw new Error(`No API provider registered for api: ${api}`);
|
|
}
|
|
return provider;
|
|
}
|
|
|
|
export function stream<TApi extends Api>(
|
|
model: Model<TApi>,
|
|
context: Context,
|
|
options?: ProviderStreamOptions,
|
|
): AssistantMessageEventStream {
|
|
const provider = resolveApiProvider(model.api);
|
|
return provider.stream(model, context, options as StreamOptions);
|
|
}
|
|
|
|
export async function complete<TApi extends Api>(
|
|
model: Model<TApi>,
|
|
context: Context,
|
|
options?: ProviderStreamOptions,
|
|
): Promise<AssistantMessage> {
|
|
const s = stream(model, context, options);
|
|
return s.result();
|
|
}
|
|
|
|
export function streamSimple<TApi extends Api>(
|
|
model: Model<TApi>,
|
|
context: Context,
|
|
options?: SimpleStreamOptions,
|
|
): AssistantMessageEventStream {
|
|
const provider = resolveApiProvider(model.api);
|
|
return provider.streamSimple(model, context, options);
|
|
}
|
|
|
|
export async function completeSimple<TApi extends Api>(
|
|
model: Model<TApi>,
|
|
context: Context,
|
|
options?: SimpleStreamOptions,
|
|
): Promise<AssistantMessage> {
|
|
const s = streamSimple(model, context, options);
|
|
return s.result();
|
|
}
|