diff --git a/src/agents/cli-runner/helpers.ts b/src/agents/cli-runner/helpers.ts index 95c703a9d8b..572c3c1dea7 100644 --- a/src/agents/cli-runner/helpers.ts +++ b/src/agents/cli-runner/helpers.ts @@ -11,6 +11,7 @@ import type { EmbeddedContextFile } from "../pi-embedded-helpers.js"; import { runExec } from "../../process/exec.js"; import { buildTtsSystemPromptHint } from "../../tts/tts.js"; import { escapeRegExp, isRecord } from "../../utils.js"; +import { buildModelAliasLines } from "../model-alias-lines.js"; import { resolveDefaultModelForAgent } from "../model-selection.js"; import { detectRuntimeShell } from "../shell-utils.js"; import { buildSystemPromptParams } from "../system-prompt-params.js"; @@ -251,25 +252,6 @@ export type CliOutput = { usage?: CliUsage; }; -function buildModelAliasLines(cfg?: OpenClawConfig) { - const models = cfg?.agents?.defaults?.models ?? {}; - const entries: Array<{ alias: string; model: string }> = []; - for (const [keyRaw, entryRaw] of Object.entries(models)) { - const model = String(keyRaw ?? "").trim(); - if (!model) { - continue; - } - const alias = String((entryRaw as { alias?: string } | undefined)?.alias ?? "").trim(); - if (!alias) { - continue; - } - entries.push({ alias, model }); - } - return entries - .toSorted((a, b) => a.alias.localeCompare(b.alias)) - .map((entry) => `- ${entry.alias}: ${entry.model}`); -} - export function buildSystemPrompt(params: { workspaceDir: string; config?: OpenClawConfig; diff --git a/src/agents/model-alias-lines.ts b/src/agents/model-alias-lines.ts new file mode 100644 index 00000000000..d3361171881 --- /dev/null +++ b/src/agents/model-alias-lines.ts @@ -0,0 +1,20 @@ +import type { OpenClawConfig } from "../config/config.js"; + +export function buildModelAliasLines(cfg?: OpenClawConfig) { + const models = cfg?.agents?.defaults?.models ?? {}; + const entries: Array<{ alias: string; model: string }> = []; + for (const [keyRaw, entryRaw] of Object.entries(models)) { + const model = String(keyRaw ?? "").trim(); + if (!model) { + continue; + } + const alias = String((entryRaw as { alias?: string } | undefined)?.alias ?? "").trim(); + if (!alias) { + continue; + } + entries.push({ alias, model }); + } + return entries + .toSorted((a, b) => a.alias.localeCompare(b.alias)) + .map((entry) => `- ${entry.alias}: ${entry.model}`); +} diff --git a/src/agents/pi-embedded-runner/model.ts b/src/agents/pi-embedded-runner/model.ts index cbc21fe2d4f..247600a58e4 100644 --- a/src/agents/pi-embedded-runner/model.ts +++ b/src/agents/pi-embedded-runner/model.ts @@ -3,6 +3,7 @@ import type { OpenClawConfig } from "../../config/config.js"; import type { ModelDefinitionConfig } from "../../config/types.js"; import { resolveOpenClawAgentDir } from "../agent-paths.js"; import { DEFAULT_CONTEXT_TOKENS } from "../defaults.js"; +import { buildModelAliasLines } from "../model-alias-lines.js"; import { normalizeModelCompat } from "../model-compat.js"; import { resolveForwardCompatModel } from "../model-forward-compat.js"; import { normalizeProviderId } from "../model-selection.js"; @@ -20,6 +21,8 @@ type InlineProviderConfig = { models?: ModelDefinitionConfig[]; }; +export { buildModelAliasLines }; + export function buildInlineProviderModels( providers: Record, ): InlineModelEntry[] { @@ -37,25 +40,6 @@ export function buildInlineProviderModels( }); } -export function buildModelAliasLines(cfg?: OpenClawConfig) { - const models = cfg?.agents?.defaults?.models ?? {}; - const entries: Array<{ alias: string; model: string }> = []; - for (const [keyRaw, entryRaw] of Object.entries(models)) { - const model = String(keyRaw ?? "").trim(); - if (!model) { - continue; - } - const alias = String((entryRaw as { alias?: string } | undefined)?.alias ?? "").trim(); - if (!alias) { - continue; - } - entries.push({ alias, model }); - } - return entries - .toSorted((a, b) => a.alias.localeCompare(b.alias)) - .map((entry) => `- ${entry.alias}: ${entry.model}`); -} - export function resolveModel( provider: string, modelId: string,