47 lines
1.4 KiB
TypeScript
47 lines
1.4 KiB
TypeScript
import type { OpenClawConfig } from "../config/config.js";
|
|
import type { ApplyAuthChoiceParams, ApplyAuthChoiceResult } from "./auth-choice.apply.js";
|
|
import { promptAndConfigureVllm } from "./vllm-setup.js";
|
|
|
|
function applyVllmDefaultModel(cfg: OpenClawConfig, modelRef: string): OpenClawConfig {
|
|
const existingModel = cfg.agents?.defaults?.model;
|
|
const fallbacks =
|
|
existingModel && typeof existingModel === "object" && "fallbacks" in existingModel
|
|
? (existingModel as { fallbacks?: string[] }).fallbacks
|
|
: undefined;
|
|
|
|
return {
|
|
...cfg,
|
|
agents: {
|
|
...cfg.agents,
|
|
defaults: {
|
|
...cfg.agents?.defaults,
|
|
model: {
|
|
...(fallbacks ? { fallbacks } : undefined),
|
|
primary: modelRef,
|
|
},
|
|
},
|
|
},
|
|
};
|
|
}
|
|
|
|
export async function applyAuthChoiceVllm(
|
|
params: ApplyAuthChoiceParams,
|
|
): Promise<ApplyAuthChoiceResult | null> {
|
|
if (params.authChoice !== "vllm") {
|
|
return null;
|
|
}
|
|
|
|
const { config: nextConfig, modelRef } = await promptAndConfigureVllm({
|
|
cfg: params.config,
|
|
prompter: params.prompter,
|
|
agentDir: params.agentDir,
|
|
});
|
|
|
|
if (!params.setDefaultModel) {
|
|
return { config: nextConfig, agentModelOverride: modelRef };
|
|
}
|
|
|
|
await params.prompter.note(`Default model set to ${modelRef}`, "Model configured");
|
|
return { config: applyVllmDefaultModel(nextConfig, modelRef) };
|
|
}
|