mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-06 09:20:43 +00:00
42 lines
1.3 KiB
TypeScript
42 lines
1.3 KiB
TypeScript
import type { StreamFn } from "@mariozechner/pi-agent-core";
|
|
import type { Api, Model } from "@mariozechner/pi-ai";
|
|
import type { OpenClawConfig } from "../config/types.openclaw.js";
|
|
import { resolveProviderStreamFn } from "../plugins/provider-runtime.js";
|
|
import { ensureCustomApiRegistered } from "./custom-api-registry.js";
|
|
import { createTransportAwareStreamFnForModel } from "./provider-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, {
|
|
cfg: params.cfg,
|
|
agentDir: params.agentDir,
|
|
workspaceDir: params.workspaceDir,
|
|
env: params.env,
|
|
});
|
|
if (!streamFn) {
|
|
return undefined;
|
|
}
|
|
ensureCustomApiRegistered(params.model.api, streamFn);
|
|
return streamFn;
|
|
}
|