From 864213725242f8b70d4e39a950bf560bebba910f Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Mon, 20 Apr 2026 15:02:43 +0100 Subject: [PATCH] refactor: share model allowlist entry helper --- .../.generated/plugin-sdk-api-baseline.sha256 | 4 +- src/agents/model-allowlist-entry.ts | 41 ++++++++++++++++++ src/plugin-sdk/provider-onboard.ts | 35 +--------------- src/plugins/provider-model-allowlist.ts | 42 +------------------ 4 files changed, 46 insertions(+), 76 deletions(-) create mode 100644 src/agents/model-allowlist-entry.ts diff --git a/docs/.generated/plugin-sdk-api-baseline.sha256 b/docs/.generated/plugin-sdk-api-baseline.sha256 index 852bf85044d..f14a40ced34 100644 --- a/docs/.generated/plugin-sdk-api-baseline.sha256 +++ b/docs/.generated/plugin-sdk-api-baseline.sha256 @@ -1,2 +1,2 @@ -9ea6b1d14500054ef8ce6fae3b08a4f2e401fa2aa5e48056dcdfa94bf330c3fb plugin-sdk-api-baseline.json -e3f04797748cb35e1f10d6451d206744fdc188cdbc0251aad01211b94087f565 plugin-sdk-api-baseline.jsonl +d4f327b3e09b0ac0a6fa3a96ee8042f8cd3197c1204270d2566abec6bf851876 plugin-sdk-api-baseline.json +d7544ea5d45f90526bba0e4501e4f5728d43a1f42b2ea7f39cbd18330e0229ef plugin-sdk-api-baseline.jsonl diff --git a/src/agents/model-allowlist-entry.ts b/src/agents/model-allowlist-entry.ts new file mode 100644 index 00000000000..1ec068102ef --- /dev/null +++ b/src/agents/model-allowlist-entry.ts @@ -0,0 +1,41 @@ +import type { OpenClawConfig } from "../config/types.openclaw.js"; +import { DEFAULT_PROVIDER } from "./defaults.js"; +import { resolveStaticAllowlistModelKey } from "./model-ref-shared.js"; + +export function ensureStaticModelAllowlistEntry(params: { + cfg: OpenClawConfig; + modelRef: string; + defaultProvider?: string; +}): OpenClawConfig { + const rawModelRef = params.modelRef.trim(); + if (!rawModelRef) { + return params.cfg; + } + + const models = { ...params.cfg.agents?.defaults?.models }; + const keySet = new Set([rawModelRef]); + const canonicalKey = resolveStaticAllowlistModelKey( + rawModelRef, + params.defaultProvider ?? DEFAULT_PROVIDER, + ); + if (canonicalKey) { + keySet.add(canonicalKey); + } + + for (const key of keySet) { + models[key] = { + ...models[key], + }; + } + + return { + ...params.cfg, + agents: { + ...params.cfg.agents, + defaults: { + ...params.cfg.agents?.defaults, + models, + }, + }, + }; +} diff --git a/src/plugin-sdk/provider-onboard.ts b/src/plugin-sdk/provider-onboard.ts index 0c0dd38658a..f08b7b73663 100644 --- a/src/plugin-sdk/provider-onboard.ts +++ b/src/plugin-sdk/provider-onboard.ts @@ -1,8 +1,7 @@ // Keep provider onboarding helpers dependency-light so bundled provider plugins // do not pull heavyweight runtime graphs at activation time. -import { DEFAULT_PROVIDER } from "../agents/defaults.js"; -import { resolveStaticAllowlistModelKey } from "../agents/model-ref-shared.js"; +import { ensureStaticModelAllowlistEntry } from "../agents/model-allowlist-entry.js"; import { findNormalizedProviderKey } from "../agents/provider-id.js"; import type { AgentModelEntryConfig } from "../config/types.agent-defaults.js"; import type { @@ -453,35 +452,5 @@ export function ensureModelAllowlistEntry(params: { modelRef: string; defaultProvider?: string; }): OpenClawConfig { - const rawModelRef = params.modelRef.trim(); - if (!rawModelRef) { - return params.cfg; - } - - const models = { ...params.cfg.agents?.defaults?.models }; - const keySet = new Set([rawModelRef]); - const canonicalKey = resolveStaticAllowlistModelKey( - rawModelRef, - params.defaultProvider ?? DEFAULT_PROVIDER, - ); - if (canonicalKey) { - keySet.add(canonicalKey); - } - - for (const key of keySet) { - models[key] = { - ...models[key], - }; - } - - return { - ...params.cfg, - agents: { - ...params.cfg.agents, - defaults: { - ...params.cfg.agents?.defaults, - models, - }, - }, - }; + return ensureStaticModelAllowlistEntry(params); } diff --git a/src/plugins/provider-model-allowlist.ts b/src/plugins/provider-model-allowlist.ts index 835788a9a56..94936317f09 100644 --- a/src/plugins/provider-model-allowlist.ts +++ b/src/plugins/provider-model-allowlist.ts @@ -1,41 +1 @@ -import { DEFAULT_PROVIDER } from "../agents/defaults.js"; -import { resolveAllowlistModelKey } from "../agents/model-allowlist-ref.js"; -import type { OpenClawConfig } from "../config/types.openclaw.js"; - -export function ensureModelAllowlistEntry(params: { - cfg: OpenClawConfig; - modelRef: string; - defaultProvider?: string; -}): OpenClawConfig { - const rawModelRef = params.modelRef.trim(); - if (!rawModelRef) { - return params.cfg; - } - - const models = { ...params.cfg.agents?.defaults?.models }; - const keySet = new Set([rawModelRef]); - const canonicalKey = resolveAllowlistModelKey( - rawModelRef, - params.defaultProvider ?? DEFAULT_PROVIDER, - ); - if (canonicalKey) { - keySet.add(canonicalKey); - } - - for (const key of keySet) { - models[key] = { - ...models[key], - }; - } - - return { - ...params.cfg, - agents: { - ...params.cfg.agents, - defaults: { - ...params.cfg.agents?.defaults, - models, - }, - }, - }; -} +export { ensureStaticModelAllowlistEntry as ensureModelAllowlistEntry } from "../agents/model-allowlist-entry.js";