mirror of https://github.com/openclaw/openclaw.git
36 lines
992 B
TypeScript
36 lines
992 B
TypeScript
import type { StreamFn } from "@mariozechner/pi-agent-core";
|
|
import {
|
|
getApiProvider,
|
|
registerApiProvider,
|
|
type Api,
|
|
type StreamOptions,
|
|
} from "@mariozechner/pi-ai";
|
|
|
|
const CUSTOM_API_SOURCE_PREFIX = "openclaw-custom-api:";
|
|
|
|
export function getCustomApiRegistrySourceId(api: Api): string {
|
|
return `${CUSTOM_API_SOURCE_PREFIX}${api}`;
|
|
}
|
|
|
|
export function ensureCustomApiRegistered(api: Api, streamFn: StreamFn): boolean {
|
|
if (getApiProvider(api)) {
|
|
return false;
|
|
}
|
|
|
|
registerApiProvider(
|
|
{
|
|
api,
|
|
stream: (model, context, options) =>
|
|
streamFn(model, context, options) as unknown as ReturnType<
|
|
NonNullable<ReturnType<typeof getApiProvider>>["stream"]
|
|
>,
|
|
streamSimple: (model, context, options) =>
|
|
streamFn(model, context, options as StreamOptions) as unknown as ReturnType<
|
|
NonNullable<ReturnType<typeof getApiProvider>>["stream"]
|
|
>,
|
|
},
|
|
getCustomApiRegistrySourceId(api),
|
|
);
|
|
return true;
|
|
}
|