mirror of
https://github.com/openclaw/openclaw.git
synced 2026-04-06 06:41:08 +00:00
34 lines
1.0 KiB
TypeScript
34 lines
1.0 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";
|
|
|
|
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,
|
|
},
|
|
});
|
|
if (!streamFn) {
|
|
return undefined;
|
|
}
|
|
ensureCustomApiRegistered(params.model.api, streamFn);
|
|
return streamFn;
|
|
}
|