UNPKG

openclaw

Version:

Multi-channel AI gateway with extensible messaging integrations

255 lines (254 loc) 11 kB
import { g as sortUniqueStrings } from "./string-normalization-WNUDCpXX.js"; import { i as normalizeProviderId } from "./provider-id-Dq06Bcx6.js"; import { c as hasExplicitPluginIdScope } from "./current-plugin-metadata-snapshot-CfA_n2Nc.js"; import { f as extractPluginInstallRecordsFromInstalledPluginIndex } from "./installed-plugin-index-BSYm7o5l.js"; import { a as resolvePluginMetadataSnapshot } from "./plugin-metadata-snapshot-Ctk9Oarq.js"; import { t as resolveManifestActivationPluginIds } from "./activation-planner-CPLeaE9U.js"; import { _ as withBundledProviderVitestCompat, d as resolveEnabledProviderPluginIds, g as resolveOwningPluginIdsForProviderRef, l as resolveDiscoverableProviderOwnerPluginIds, m as resolveOwningPluginIdsForModelRefs, o as resolveActivatableProviderOwnerPluginIds, s as resolveBundledProviderCompatPluginIds, u as resolveDiscoveredProviderPluginIds } from "./plugin-auto-enable-pAtqig-B.js"; import { r as withActivatedPluginIds, t as resolveBundledPluginCompatibleActivationInputs } from "./activation-context-DZa7Hp0V.js"; import { a as getRuntimePluginRegistryForLoadOptions, c as loadOpenClawPlugins, o as isPluginRegistryLoadInFlight } from "./loader-Dp13N9qc.js"; import { l as getActivePluginRegistryWorkspaceDir } from "./runtime-B2ROiq5l.js"; import { n as getLoadedRuntimePluginRegistry } from "./active-runtime-registry-PnN7H8vW.js"; import { n as buildPluginRuntimeLoadOptionsFromValues, r as createPluginRuntimeLoaderLogger } from "./load-context-DpVH8qxj.js"; //#region src/plugins/provider-config-owner.ts const CORE_BUILT_IN_MODEL_APIS = new Set([ "anthropic-messages", "azure-openai-responses", "google-generative-ai", "google-vertex", "mistral-conversations", "openai-chatgpt-responses", "openai-completions", "openai-responses" ]); /** Returns the plugin API id that owns a provider config when it is not core built-in. */ function resolveProviderConfigApiOwnerHint(params) { const providers = params.config?.models?.providers; if (!providers) return; const normalizedProvider = normalizeProviderId(params.provider); if (!normalizedProvider) return; const providerConfig = providers[params.provider] ?? Object.entries(providers).find(([candidateId]) => normalizeProviderId(candidateId) === normalizedProvider)?.[1]; const api = typeof providerConfig?.api === "string" ? normalizeProviderId(providerConfig.api) : ""; if (!api || api === normalizedProvider || CORE_BUILT_IN_MODEL_APIS.has(api)) return; return api; } //#endregion //#region src/plugins/providers.runtime.ts function dedupeSortedPluginIds(values) { return sortUniqueStrings(values); } function resolveExplicitProviderOwnerPluginIds(params, snapshot) { return dedupeSortedPluginIds(params.providerRefs.flatMap((provider) => { const plannedPluginIds = resolveManifestActivationPluginIds({ trigger: { kind: "provider", provider }, config: params.config, workspaceDir: params.workspaceDir, env: params.env, manifestRecords: snapshot.manifestRegistry.plugins }); if (plannedPluginIds.length > 0) return plannedPluginIds; const apiOwnerHint = resolveProviderConfigApiOwnerHint({ provider, config: params.config }); if (apiOwnerHint) { const apiOwnerPluginIds = resolveManifestActivationPluginIds({ trigger: { kind: "provider", provider: apiOwnerHint }, config: params.config, workspaceDir: params.workspaceDir, env: params.env, manifestRecords: snapshot.manifestRegistry.plugins }); if (apiOwnerPluginIds.length > 0) return apiOwnerPluginIds; } return resolveOwningPluginIdsForProviderRef({ provider, config: params.config, workspaceDir: params.workspaceDir, env: params.env, manifestRegistry: snapshot.manifestRegistry }) ?? []; })); } function mergeExplicitOwnerPluginIds(providerPluginIds, explicitOwnerPluginIds) { if (explicitOwnerPluginIds.length === 0) return [...providerPluginIds]; return dedupeSortedPluginIds([...providerPluginIds, ...explicitOwnerPluginIds]); } function resolvePluginProviderLoadBase(params, snapshot) { const env = params.env ?? process.env; const workspaceDir = params.workspaceDir ?? getActivePluginRegistryWorkspaceDir(); const providerOwnedPluginIds = params.providerRefs?.length ? resolveExplicitProviderOwnerPluginIds({ providerRefs: params.providerRefs, config: params.config, workspaceDir, env }, snapshot) : []; const modelOwnedPluginIds = params.modelRefs?.length ? resolveOwningPluginIdsForModelRefs({ models: params.modelRefs, config: params.config, workspaceDir, env, manifestRegistry: snapshot.manifestRegistry }) : []; return { env, workspaceDir, requestedPluginIds: hasExplicitPluginIdScope(params.onlyPluginIds) || params.providerRefs?.length || params.modelRefs?.length || providerOwnedPluginIds.length > 0 || modelOwnedPluginIds.length > 0 ? dedupeSortedPluginIds([ ...params.onlyPluginIds ?? [], ...providerOwnedPluginIds, ...modelOwnedPluginIds ]) : void 0, explicitOwnerPluginIds: dedupeSortedPluginIds([...providerOwnedPluginIds, ...modelOwnedPluginIds]), rawConfig: params.config }; } function resolveProviderMetadataLookup(params) { const env = params.env ?? process.env; const workspaceDir = params.workspaceDir ?? getActivePluginRegistryWorkspaceDir(); return { env, workspaceDir, snapshot: params.pluginMetadataSnapshot ?? resolvePluginMetadataSnapshot({ config: params.config ?? {}, workspaceDir, env }) }; } function resolveSetupProviderPluginLoadState(params, base, snapshot) { const setupPluginIds = mergeExplicitOwnerPluginIds(resolveDiscoveredProviderPluginIds({ config: params.config, workspaceDir: base.workspaceDir, env: base.env, onlyPluginIds: base.requestedPluginIds, includeUntrustedWorkspacePlugins: params.includeUntrustedWorkspacePlugins, registry: snapshot.index, manifestRegistry: snapshot.manifestRegistry }), resolveDiscoverableProviderOwnerPluginIds({ pluginIds: base.explicitOwnerPluginIds, config: params.config, workspaceDir: base.workspaceDir, env: base.env, includeUntrustedWorkspacePlugins: params.includeUntrustedWorkspacePlugins, registry: snapshot.index, manifestRegistry: snapshot.manifestRegistry })); if (setupPluginIds.length === 0) return; const setupConfig = withActivatedPluginIds({ config: base.rawConfig, pluginIds: setupPluginIds }); return { loadOptions: buildPluginRuntimeLoadOptionsFromValues({ config: setupConfig, activationSourceConfig: setupConfig, autoEnabledReasons: {}, workspaceDir: base.workspaceDir, env: base.env, logger: createPluginRuntimeLoaderLogger(), manifestRegistry: snapshot.manifestRegistry, installRecords: extractPluginInstallRecordsFromInstalledPluginIndex(snapshot.index) }, { onlyPluginIds: setupPluginIds, pluginSdkResolution: params.pluginSdkResolution, cache: params.cache ?? false, activate: params.activate ?? false }) }; } function resolveRuntimeProviderPluginLoadState(params, base, snapshot) { const explicitOwnerPluginIds = resolveActivatableProviderOwnerPluginIds({ pluginIds: base.explicitOwnerPluginIds, config: base.rawConfig, workspaceDir: base.workspaceDir, env: base.env, includeUntrustedWorkspacePlugins: params.includeUntrustedWorkspacePlugins, registry: snapshot.index, manifestRegistry: snapshot.manifestRegistry }); const runtimeRequestedPluginIds = base.requestedPluginIds !== void 0 ? dedupeSortedPluginIds([...params.onlyPluginIds ?? [], ...explicitOwnerPluginIds]) : void 0; const activation = resolveBundledPluginCompatibleActivationInputs({ rawConfig: withActivatedPluginIds({ config: base.rawConfig, pluginIds: explicitOwnerPluginIds }), env: base.env, workspaceDir: base.workspaceDir, onlyPluginIds: runtimeRequestedPluginIds, applyAutoEnable: params.applyAutoEnable ?? true, compatMode: { vitest: params.bundledProviderVitestCompat }, resolveCompatPluginIds: (compatParams) => resolveBundledProviderCompatPluginIds({ ...compatParams, manifestRegistry: snapshot.manifestRegistry }) }); const config = params.bundledProviderVitestCompat ? withBundledProviderVitestCompat({ config: activation.config, pluginIds: activation.compatPluginIds, env: base.env }) : activation.config; const providerPluginIds = mergeExplicitOwnerPluginIds(resolveEnabledProviderPluginIds({ config, workspaceDir: base.workspaceDir, env: base.env, onlyPluginIds: runtimeRequestedPluginIds, registry: snapshot.index, manifestRegistry: snapshot.manifestRegistry }), explicitOwnerPluginIds); return { loadOptions: buildPluginRuntimeLoadOptionsFromValues({ config, activationSourceConfig: activation.activationSourceConfig, autoEnabledReasons: activation.autoEnabledReasons, workspaceDir: base.workspaceDir, env: base.env, logger: createPluginRuntimeLoaderLogger(), manifestRegistry: snapshot.manifestRegistry, installRecords: extractPluginInstallRecordsFromInstalledPluginIndex(snapshot.index) }, { onlyPluginIds: providerPluginIds, pluginSdkResolution: params.pluginSdkResolution, cache: params.cache ?? true, activate: params.activate ?? false }) }; } function isPluginProvidersLoadInFlight(params) { const { env, workspaceDir, snapshot } = resolveProviderMetadataLookup(params); const base = resolvePluginProviderLoadBase({ ...params, workspaceDir, env }, snapshot); const loadState = params.mode === "setup" ? resolveSetupProviderPluginLoadState(params, base, snapshot) : resolveRuntimeProviderPluginLoadState(params, base, snapshot); if (!loadState) return false; return isPluginRegistryLoadInFlight(loadState.loadOptions); } function resolvePluginProviders(params) { const { env, workspaceDir, snapshot } = resolveProviderMetadataLookup(params); const base = resolvePluginProviderLoadBase({ ...params, workspaceDir, env }, snapshot); if (params.mode === "setup") { const loadState = resolveSetupProviderPluginLoadState(params, base, snapshot); if (!loadState) return []; if (params.skipIfLoadInFlight && isPluginRegistryLoadInFlight(loadState.loadOptions)) return []; return loadOpenClawPlugins(loadState.loadOptions).providers.map((entry) => Object.assign({}, entry.provider, { pluginId: entry.pluginId })); } const loadState = resolveRuntimeProviderPluginLoadState(params, base, snapshot); if (params.skipIfLoadInFlight && isPluginRegistryLoadInFlight(loadState.loadOptions)) return []; const registry = loadState.loadOptions.onlyPluginIds?.length === 0 ? void 0 : getLoadedRuntimePluginRegistry({ env: base.env, loadOptions: loadState.loadOptions, workspaceDir: base.workspaceDir, requiredPluginIds: loadState.loadOptions.onlyPluginIds }) ?? getRuntimePluginRegistryForLoadOptions(loadState.loadOptions); if (!registry) return []; return registry.providers.map((entry) => Object.assign({}, entry.provider, { pluginId: entry.pluginId })); } //#endregion export { resolvePluginProviders as n, resolveProviderConfigApiOwnerHint as r, isPluginProvidersLoadInFlight as t };