mirror of https://github.com/openclaw/openclaw.git
36 lines
1.2 KiB
TypeScript
36 lines
1.2 KiB
TypeScript
import type { StreamFn } from "@mariozechner/pi-agent-core";
|
|
import type { Api, Model } from "@mariozechner/pi-ai";
|
|
import type { OpenClawConfig } from "../config/config.js";
|
|
import { resolveProviderStreamFn } from "../plugins/provider-runtime.js";
|
|
import { ensureCustomApiRegistered } from "./custom-api-registry.js";
|
|
import { createTransportAwareStreamFnForModel } from "./openai-transport-stream.js";
|
|
|
|
export function registerProviderStreamForModel<TApi extends Api>(params: {
|
|
model: Model<TApi>;
|
|
cfg?: OpenClawConfig;
|
|
agentDir?: string;
|
|
workspaceDir?: string;
|
|
env?: NodeJS.ProcessEnv;
|
|
}): StreamFn | undefined {
|
|
const streamFn =
|
|
resolveProviderStreamFn({
|
|
provider: params.model.provider,
|
|
config: params.cfg,
|
|
workspaceDir: params.workspaceDir,
|
|
env: params.env,
|
|
context: {
|
|
config: params.cfg,
|
|
agentDir: params.agentDir,
|
|
workspaceDir: params.workspaceDir,
|
|
provider: params.model.provider,
|
|
modelId: params.model.id,
|
|
model: params.model,
|
|
},
|
|
}) ?? createTransportAwareStreamFnForModel(params.model);
|
|
if (!streamFn) {
|
|
return undefined;
|
|
}
|
|
ensureCustomApiRegistered(params.model.api, streamFn);
|
|
return streamFn;
|
|
}
|