UNPKG

openclaw

Version:

Multi-channel AI gateway with extensible messaging integrations

159 lines (158 loc) 6.05 kB
import "./agent-scope-MrLta7Pq.js"; import { s as resolveDefaultAgentDir } from "./agent-scope-config-CgCYpZfK.js"; import { t as resolveModelPluginMetadataSnapshot } from "./model-discovery-context-DmaLjfYx.js"; import { i as modelKey } from "./model-selection-normalize-roKDxQ9_.js"; import { n as discoverModels, t as discoverAuthStorage } from "./agent-model-discovery-BSvavgs4.js"; import { i as shouldSuppressBuiltInModelFromManifest, r as shouldSuppressBuiltInModel } from "./model-suppression-DKe1ELlS.js"; import "./shared-B3B7qn2l.js"; import { n as formatErrorWithStack, r as shouldFallbackToAuthHeuristics, t as MODEL_AVAILABILITY_UNAVAILABLE_CODE } from "./list.errors-DDA-CnZS.js"; import "./list.model-row-T9Fdh8B4.js"; //#region src/agents/model-registry-loader.ts /** Load the agent model registry with optional provider filtering/normalization. */ function loadAgentModelRegistry(config, options = {}) { const agentDir = resolveDefaultAgentDir(config); const authStorage = discoverAuthStorage(agentDir, { readOnly: options.readOnly ?? true, skipCredentials: options.skipCredentials, config, workspaceDir: options.workspaceDir }); const pluginMetadataSnapshot = resolveModelPluginMetadataSnapshot({ config, workspaceDir: options.workspaceDir }); return { agentDir, registry: discoverModels(authStorage, agentDir, { config, ...pluginMetadataSnapshot ? { pluginMetadataSnapshot } : {}, providerFilter: options.providerFilter, ...options.workspaceDir ? { workspaceDir: options.workspaceDir } : {}, normalizeModels: options.normalizeModels }) }; } //#endregion //#region src/commands/models/list.registry.ts /** Model registry access helpers for `openclaw models list`. */ function createAvailabilityUnavailableError(message) { const err = new Error(message); err.code = MODEL_AVAILABILITY_UNAVAILABLE_CODE; return err; } function normalizeAvailabilityError(err) { if (shouldFallbackToAuthHeuristics(err) && err instanceof Error) return err; return createAvailabilityUnavailableError(`Model availability unavailable: getAvailable() failed.\n${formatErrorWithStack(err)}`); } function validateAvailableModels(availableModels) { if (!Array.isArray(availableModels)) throw createAvailabilityUnavailableError("Model availability unavailable: getAvailable() returned a non-array value."); for (const model of availableModels) if (!model || typeof model !== "object" || typeof model.provider !== "string" || typeof model.id !== "string") throw createAvailabilityUnavailableError("Model availability unavailable: getAvailable() returned invalid model entries."); return availableModels; } function loadAvailableModels(registry, cfg, opts) { let availableModels; try { availableModels = registry.getAvailable(); } catch (err) { throw normalizeAvailabilityError(err); } try { return validateAvailableModels(availableModels).filter((model) => opts?.runtimeSuppression === false ? !shouldSuppressBuiltInModelFromManifest({ provider: model.provider, id: model.id, config: cfg }) : !shouldSuppressBuiltInModel({ provider: model.provider, id: model.id, baseUrl: model.baseUrl, config: cfg })); } catch (err) { throw normalizeAvailabilityError(err); } } /** Loads registry models and optional availability keys with suppression applied. */ async function loadModelRegistry(cfg, opts) { const runtimeSuppression = opts?.normalizeModels !== false; const { registry } = loadAgentModelRegistry(cfg, { skipCredentials: opts?.loadAvailability === false, workspaceDir: opts?.workspaceDir, providerFilter: opts?.providerFilter, normalizeModels: opts?.normalizeModels }); const models = registry.getAll().filter((model) => runtimeSuppression ? !shouldSuppressBuiltInModel({ provider: model.provider, id: model.id, baseUrl: model.baseUrl, config: cfg }) : !shouldSuppressBuiltInModelFromManifest({ provider: model.provider, id: model.id, config: cfg })); let availableKeys; let availabilityErrorMessage; if (opts?.loadAvailability !== false) try { const availableModels = loadAvailableModels(registry, cfg, { runtimeSuppression }); availableKeys = new Set(availableModels.map((model) => modelKey(model.provider, model.id))); } catch (err) { if (!shouldFallbackToAuthHeuristics(err)) throw err; availableKeys = void 0; if (!availabilityErrorMessage) availabilityErrorMessage = formatErrorWithStack(err); } return { registry, models, availableKeys, availabilityErrorMessage }; } //#endregion //#region src/commands/models/list.registry-load.ts /** Registry-loading adapters for model-list row construction. */ /** Loads the full model registry and tracks discovered provider/model keys. */ async function loadListModelRegistry(cfg, opts) { const loaded = await loadModelRegistry(cfg, opts); return { ...loaded, discoveredKeys: new Set(loaded.models.map((model) => modelKey(model.provider, model.id))) }; } function findConfiguredRegistryModel(params) { const model = params.registry.find(params.entry.ref.provider, params.entry.ref.model); if (!model) return; if (shouldSuppressBuiltInModel({ provider: model.provider, id: model.id, baseUrl: model.baseUrl, config: params.cfg })) return; return model; } /** Loads only configured registry entries and their auth availability. */ function loadConfiguredListModelRegistry(cfg, entries, opts) { const { registry } = loadAgentModelRegistry(cfg, { workspaceDir: opts?.workspaceDir, providerFilter: opts?.providerFilter }); const discoveredKeys = /* @__PURE__ */ new Set(); const availableKeys = /* @__PURE__ */ new Set(); for (const entry of entries) { const model = findConfiguredRegistryModel({ registry, entry, cfg }); if (!model) continue; const key = modelKey(model.provider, model.id); discoveredKeys.add(key); if (registry.hasConfiguredAuth(model)) availableKeys.add(key); } return { registry, discoveredKeys, availableKeys }; } //#endregion export { loadConfiguredListModelRegistry, loadListModelRegistry };