UNPKG

openclaw

Version:

Multi-channel AI gateway with extensible messaging integrations

134 lines (133 loc) • 6.78 kB
import { r as normalizeProviderId } from "./provider-id-D1VImdKk.mjs"; import { i as resolvePluginSetupRegistry, n as resolvePluginSetupCliBackend } from "./setup-registry-DNr-Qxd2.mjs"; import { n as mergePluginTextTransforms } from "./plugin-text-transforms-BtsSqs-a.mjs"; import { t as resolveRuntimeTextTransforms } from "./text-transforms.runtime-HB4NABUN.mjs"; import { t as resolveRuntimeCliBackends } from "./cli-backends.runtime.js"; //#region src/agents/cli-backends.ts function resolveCliBackendModelProvider(backend) { const provider = backend.modelProvider?.trim(); return provider ? normalizeProviderId(provider) : void 0; } function addCliRuntimeModelBinding(bindings, backend) { const provider = resolveCliBackendModelProvider(backend); const runtime = normalizeProviderId(backend.id); if (!provider || !runtime) return; bindings.set(`${provider}:${runtime}`, { provider, runtime }); } function listCliRuntimeModelBackendBindings(params = {}) { const bindings = /* @__PURE__ */ new Map(); for (const backend of resolveRuntimeCliBackends("metadata")) addCliRuntimeModelBinding(bindings, backend); if (params.includeSetupRegistry === true) for (const entry of resolvePluginSetupRegistry({ config: params.config, env: params.env }).cliBackends) addCliRuntimeModelBinding(bindings, entry.backend); return [...bindings.values()].toSorted((left, right) => left.provider === right.provider ? left.runtime.localeCompare(right.runtime) : left.provider.localeCompare(right.provider)); } function listCliRuntimeProviderIds(params = {}) { return [...new Set(listCliRuntimeModelBackendBindings(params).map((binding) => binding.runtime))].toSorted(); } function resolveCliRuntimeBinding(runtime, provider, resolveSetup) { if (!runtime) return; const matchesProvider = (candidate) => provider === void 0 || candidate === provider || runtime === provider; const runtimeBinding = listCliRuntimeModelBackendBindings().find((binding) => binding.runtime === runtime && matchesProvider(binding.provider)); if (runtimeBinding) return runtimeBinding; const setupBackend = resolveSetup(); const setupProvider = setupBackend && resolveCliBackendModelProvider(setupBackend.backend); return setupProvider && matchesProvider(setupProvider) ? { provider: setupProvider, runtime } : void 0; } function resolveCliRuntimeCanonicalProvider(params) { const runtime = normalizeProviderId(params.runtime ?? ""); return resolveCliRuntimeBinding(runtime, void 0, () => params.includeSetupRegistry === true && params.metadataSnapshot !== null ? resolvePluginSetupCliBackend({ backend: runtime, config: params.config, env: params.env, metadataSnapshot: params.metadataSnapshot }) : void 0)?.provider; } function resolveCliRuntimeModelBackendBinding(params) { const provider = normalizeProviderId(params.provider ?? ""); const runtime = normalizeProviderId(params.runtime ?? ""); if (!provider || !runtime) return; return resolveCliRuntimeBinding(runtime, provider, () => params.config === void 0 ? void 0 : resolvePluginSetupCliBackend({ backend: runtime, config: params.config })); } function isCliRuntimeModelBackendForProvider(params) { return resolveCliRuntimeModelBackendBinding(params) !== void 0; } function resolveCliBackendLiveTest(provider) { const normalized = normalizeProviderId(provider); const entry = resolvePluginSetupCliBackend({ backend: normalized }) ?? resolveRuntimeCliBackends().find((backend) => normalizeProviderId(backend.id) === normalized); if (!entry) return null; const backend = "backend" in entry ? entry.backend : entry; return { defaultModelRef: backend.liveTest?.defaultModelRef, defaultImageProbe: backend.liveTest?.defaultImageProbe === true, defaultMcpProbe: backend.liveTest?.defaultMcpProbe === true, dockerNpmPackage: backend.liveTest?.docker?.npmPackage, dockerBinaryName: backend.liveTest?.docker?.binaryName }; } /** Whether the backend can branch a native session at a recorded checkpoint. */ function cliBackendSupportsSessionFork(provider, cfg) { const config = resolveCliBackendConfig(provider, cfg)?.config; return Boolean(config?.forkArg && config.resumeAtArg); } function resolveCliBackendConfig(provider, cfg, options = {}) { const normalized = normalizeProviderId(provider); const normalizeContext = { backendId: normalized, ...options.agentId ? { agentId: options.agentId } : {}, ...cfg ? { config: cfg } : {} }; const runtimeTextTransforms = resolveRuntimeTextTransforms(); const registered = resolveRuntimeCliBackends().find((entry) => normalizeProviderId(entry.id) === normalized); const backend = registered ?? resolvePluginSetupCliBackend({ backend: normalized })?.backend; if (!backend) return null; const baseConfig = registered ? { ...backend.config } : backend.config; const config = backend.normalizeConfig ? backend.normalizeConfig(baseConfig, normalizeContext) : baseConfig; const command = config.command?.trim(); if (!command) return null; const modelProvider = resolveCliBackendModelProvider(backend); const bundleMcp = backend.bundleMcp === true; return { id: normalized, ...modelProvider ? { modelProvider } : {}, config: { ...config, command }, bundleMcp, bundleMcpMode: bundleMcp ? backend.bundleMcpMode ?? "claude-config-file" : void 0, ...registered ? { pluginId: registered.pluginId } : {}, transformSystemPrompt: backend.transformSystemPrompt, textTransforms: mergePluginTextTransforms(runtimeTextTransforms, backend.textTransforms), defaultAuthProfileId: backend.defaultAuthProfileId, authEpochMode: backend.authEpochMode, autoSelectAuthProfile: backend.autoSelectAuthProfile, contextEngineHostCapabilities: backend.contextEngineHostCapabilities, ownsNativeCompaction: backend.ownsNativeCompaction, manualCompaction: backend.manualCompaction, prepareExecution: backend.prepareExecution, resolveExecutionArgs: backend.resolveExecutionArgs, resolveModelId: backend.resolveModelId, parseJsonlEvent: backend.parseJsonlEvent, parseJsonlLifecycleEvent: backend.parseJsonlLifecycleEvent, toolAvailabilityEnforcement: backend.toolAvailabilityEnforcement, projectNativeToolAuthority: backend.projectNativeToolAuthority, resolveManagedNativeTools: backend.resolveManagedNativeTools, nativeToolMode: backend.nativeToolMode, hostOwnedTools: backend.hostOwnedTools, sideQuestionToolMode: backend.sideQuestionToolMode, runtimeArtifact: backend.runtimeArtifact }; } //#endregion export { resolveCliBackendConfig as a, resolveCliRuntimeModelBackendBinding as c, listCliRuntimeProviderIds as i, isCliRuntimeModelBackendForProvider as n, resolveCliBackendLiveTest as o, listCliRuntimeModelBackendBindings as r, resolveCliRuntimeCanonicalProvider as s, cliBackendSupportsSessionFork as t };