openclaw/src/agents/custom-api-registry.ts

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;
}