UNPKG

openclaw

Version:

Multi-channel AI gateway with extensible messaging integrations

126 lines (125 loc) 5.75 kB
import { c as normalizeOptionalString } from "./string-coerce-mnp54Vah.js"; import { r as resolveProviderIdForAuth } from "./provider-auth-aliases-BNZrcvHv.js"; import { a as findPersistedAuthProfileCredential, n as ensureAuthProfileStore } from "./store-C8spD0DG.js"; import "./auth-profiles-84rzaGag.js"; import { u as isModelKeyAllowedBySet, y as resolveModelRefFromString } from "./model-selection-shared-b32cUYts.js"; import { i as modelKey } from "./model-selection-normalize-roKDxQ9_.js"; import "./model-selection-CA_65iXi.js"; import { n as resolveModelDirectiveSelection } from "./model-selection-directive-qQ0EudS-.js"; import "./model-selection-DogVFfQv.js"; //#region src/auto-reply/reply/directive-handling.auth-profile.ts /** Resolves a user-selected auth profile override for the requested provider. */ function resolveProfileOverride(params) { const raw = normalizeOptionalString(params.rawProfile); if (!raw) return {}; const persistedProfile = findPersistedAuthProfileCredential({ agentDir: params.agentDir, profileId: raw }); if (persistedProfile) { if (persistedProfile.provider !== params.provider) return { error: `Auth profile "${raw}" is for ${persistedProfile.provider}, not ${params.provider}.` }; return { profileId: raw }; } const profile = ensureAuthProfileStore(params.agentDir, { allowKeychainPrompt: false }).profiles[raw]; if (!profile) return { error: `Auth profile "${raw}" not found.` }; if (profile.provider !== params.provider) return { error: `Auth profile "${raw}" is for ${profile.provider}, not ${params.provider}.` }; return { profileId: raw }; } //#endregion //#region src/auto-reply/reply/directive-handling.model-selection.ts /** Resolves /model directive selections and auth profile overrides. */ function resolveStoredNumericProfileModelDirective(params) { const trimmed = params.raw.trim(); const lastSlash = trimmed.lastIndexOf("/"); const profileDelimiter = trimmed.indexOf("@", lastSlash + 1); if (profileDelimiter <= 0) return null; const profileId = trimmed.slice(profileDelimiter + 1).trim(); if (!/^\d{8}$/.test(profileId)) return null; const modelRaw = trimmed.slice(0, profileDelimiter).trim(); if (!modelRaw) return null; const profile = ensureAuthProfileStore(params.agentDir, { allowKeychainPrompt: false }).profiles[profileId]; if (!profile) return null; return { modelRaw, profileId, profileProvider: profile.provider }; } /** Resolves the requested model/profile override from parsed inline directives. */ function resolveModelSelectionFromDirective(params) { if (!params.directives.hasModelDirective || !params.directives.rawModelDirective) { if (params.directives.rawModelProfile) return { errorText: "Auth profile override requires a model selection." }; return {}; } const raw = params.directives.rawModelDirective.trim(); if (/^default$/i.test(raw)) return { modelSelection: { provider: params.defaultProvider, model: params.defaultModel, isDefault: true } }; const storedNumericProfile = params.directives.rawModelProfile === void 0 ? resolveStoredNumericProfileModelDirective({ raw, agentDir: params.agentDir }) : null; const storedNumericProfileSelection = storedNumericProfile ? resolveModelDirectiveSelection({ raw: storedNumericProfile.modelRaw, defaultProvider: params.defaultProvider, defaultModel: params.defaultModel, aliasIndex: params.aliasIndex, allowedModelKeys: params.allowedModelKeys, rawRuntime: params.directives.rawModelRuntime }) : null; const useStoredNumericProfile = Boolean(storedNumericProfileSelection?.selection) && resolveProviderIdForAuth(storedNumericProfileSelection?.selection?.provider ?? "", { config: params.cfg }) === resolveProviderIdForAuth(storedNumericProfile?.profileProvider ?? "", { config: params.cfg }); const modelRaw = useStoredNumericProfile && storedNumericProfile ? storedNumericProfile.modelRaw : raw; let modelSelection; if (/^[0-9]+$/.test(raw)) return { errorText: [ "Numeric model selection is not supported in chat.", "", "Browse: /models or /models <provider>", "Switch: /model <provider/model>" ].join("\n") }; const explicit = resolveModelRefFromString({ raw: modelRaw, defaultProvider: params.defaultProvider, aliasIndex: params.aliasIndex }); if (explicit) { const explicitKey = modelKey(explicit.ref.provider, explicit.ref.model); if (params.allowedModelKeys.size === 0 || isModelKeyAllowedBySet(params.allowedModelKeys, explicitKey)) modelSelection = { provider: explicit.ref.provider, model: explicit.ref.model, isDefault: explicit.ref.provider === params.defaultProvider && explicit.ref.model === params.defaultModel, ...explicit.alias ? { alias: explicit.alias } : {} }; } if (!modelSelection) { const resolved = resolveModelDirectiveSelection({ raw: modelRaw, defaultProvider: params.defaultProvider, defaultModel: params.defaultModel, aliasIndex: params.aliasIndex, allowedModelKeys: params.allowedModelKeys, rawRuntime: params.directives.rawModelRuntime }); if (resolved.error) return { errorText: resolved.error }; if (resolved.selection) modelSelection = resolved.selection; } let profileOverride; const rawProfile = params.directives.rawModelProfile ?? (useStoredNumericProfile ? storedNumericProfile?.profileId : void 0); if (modelSelection && rawProfile) { const profileResolved = resolveProfileOverride({ rawProfile, provider: modelSelection.provider, cfg: params.cfg, agentDir: params.agentDir }); if (profileResolved.error) return { errorText: profileResolved.error }; profileOverride = profileResolved.profileId; } return { modelSelection, profileOverride }; } //#endregion export { resolveModelSelectionFromDirective as t };