refactor(agents): centralize model fallback resolution

This commit is contained in:
Peter Steinberger
2026-02-25 04:32:25 +00:00
parent dd6ad0da8c
commit 9beec48e9c
7 changed files with 205 additions and 61 deletions

View File

@@ -1,14 +1,13 @@
import { randomBytes } from "node:crypto";
import fs from "node:fs/promises";
import type { ThinkLevel } from "../../auto-reply/thinking.js";
import { resolveAgentModelFallbackValues } from "../../config/model-input.js";
import { generateSecureToken } from "../../infra/secure-random.js";
import { getGlobalHookRunner } from "../../plugins/hook-runner-global.js";
import type { PluginHookBeforeAgentStartResult } from "../../plugins/types.js";
import { enqueueCommandInLane } from "../../process/command-queue.js";
import { isMarkdownCapableMessageChannel } from "../../utils/message-channel.js";
import { resolveOpenClawAgentDir } from "../agent-paths.js";
import { resolveAgentModelFallbacksOverride } from "../agent-scope.js";
import { hasConfiguredModelFallbacks } from "../agent-scope.js";
import {
isProfileInCooldown,
markAuthProfileFailure,
@@ -232,15 +231,11 @@ export async function runEmbeddedPiAgent(
let provider = (params.provider ?? DEFAULT_PROVIDER).trim() || DEFAULT_PROVIDER;
let modelId = (params.model ?? DEFAULT_MODEL).trim() || DEFAULT_MODEL;
const agentDir = params.agentDir ?? resolveOpenClawAgentDir();
const agentFallbacksOverride =
params.config && params.agentId
? resolveAgentModelFallbacksOverride(params.config, params.agentId)
: undefined;
const fallbackConfigured =
(
agentFallbacksOverride ??
resolveAgentModelFallbackValues(params.config?.agents?.defaults?.model)
).length > 0;
const fallbackConfigured = hasConfiguredModelFallbacks({
cfg: params.config,
agentId: params.agentId,
sessionKey: params.sessionKey,
});
await ensureOpenClawModelsJson(params.config, agentDir);
// Run before_model_resolve hooks early so plugins can override the