Files
openclaw/src/agents/provider-stream.ts
2026-03-27 05:38:58 +00:00

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