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(params: { model: Model; 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; }