UNPKG

openclaw

Version:

Multi-channel AI gateway with extensible messaging integrations

246 lines (245 loc) 9.22 kB
import { a as asOptionalRecord } from "./record-coerce-DItp3I4t.js"; import { i as isSilentReplyPayloadText } from "./tokens-DbeAFqg7.js"; import { l as resolveProviderFollowupFallbackRoute, p as resolveProviderRuntimePluginHandle } from "./provider-hook-runtime-DgKv_Z8O.js"; import { A as resolveProviderTextTransforms, R as transformProviderSystemPrompt, k as resolveProviderSystemPromptContribution } from "./provider-runtime-BRJDPNgk.js"; import { o as hasReplyPayloadContent } from "./payload-DYE7bQ2k.js"; import { a as resolvePreparedExtraParams } from "./extra-params-UGKIp88L.js"; import { C as resolveTranscriptPolicy } from "./helpers-CkZ0XN7O.js"; import { t as buildAgentRuntimeAuthPlan } from "./auth-D2bx7kf3.js"; import { i as normalizeProviderToolSchemas, r as logProviderToolSchemaDiagnostics } from "./tools-CAIhAR2v.js"; import { t as classifyEmbeddedAgentRunResultForModelFallback } from "./result-fallback-classifier-C3DQO8OC.js"; //#region src/agents/runtime-plan/build.ts function formatResolvedRef(params) { return `${params.provider}/${params.modelId}`; } function asOpenClawConfig(value) { return asOptionalRecord(value); } function asProviderRuntimeModel(value) { return value !== void 0 ? value : void 0; } function resolvePreparedMetadataSnapshot(params) { return params.metadataSnapshot; } function resolvePreparedProviderRuntimeHandle(params) { if (params.providerRuntimeHandle?.prepared === true && params.providerRuntimeHandle.provider === params.provider && params.providerRuntimeHandle.modelId === params.modelId && params.providerRuntimeHandle.workspaceDir === params.workspaceDir) return params.providerRuntimeHandle; const metadataSnapshot = resolvePreparedMetadataSnapshot(params); return { ...resolveProviderRuntimePluginHandle({ provider: params.provider, modelId: params.modelId, config: asOpenClawConfig(params.config), workspaceDir: params.workspaceDir, env: process.env, ...metadataSnapshot ? { pluginMetadataSnapshot: metadataSnapshot } : {} }), modelId: params.modelId, prepared: true }; } /** Build delivery-specific runtime decisions for one provider/model. */ function buildAgentRuntimeDeliveryPlan(params) { const config = asOpenClawConfig(params.config); const providerRuntimeHandle = resolvePreparedProviderRuntimeHandle(params); return { isSilentPayload(payload) { return isSilentReplyPayloadText(payload.text, "NO_REPLY") && !hasReplyPayloadContent({ ...payload, text: void 0 }, { trimText: true }); }, resolveFollowupRoute(routeParams) { return resolveProviderFollowupFallbackRoute({ provider: params.provider, config, workspaceDir: params.workspaceDir, runtimeHandle: providerRuntimeHandle, context: { config, agentDir: params.agentDir, workspaceDir: params.workspaceDir, provider: params.provider, modelId: params.modelId, payload: routeParams.payload, originatingChannel: routeParams.originatingChannel, originatingTo: routeParams.originatingTo, originRoutable: routeParams.originRoutable, dispatcherAvailable: routeParams.dispatcherAvailable } }); } }; } /** Build run-outcome classification hooks for model fallback decisions. */ function buildAgentRuntimeOutcomePlan() { return { classifyRunResult: classifyEmbeddedAgentRunResultForModelFallback }; } /** Build the complete runtime plan for an embedded agent attempt. */ function buildAgentRuntimePlan(params) { const config = asOpenClawConfig(params.config); const model = asProviderRuntimeModel(params.model); const modelApi = params.modelApi ?? params.model?.api ?? void 0; const transport = params.resolvedTransport; const toolPlanningMetadataSnapshot = resolvePreparedMetadataSnapshot(params); const preparedPlanning = toolPlanningMetadataSnapshot ? { metadataSnapshot: toolPlanningMetadataSnapshot } : void 0; const providerRuntimeHandleForPlugins = resolvePreparedProviderRuntimeHandle(params); const auth = params.preparedAuthPlan ?? buildAgentRuntimeAuthPlan({ provider: params.provider, modelId: params.modelId, authProfileProvider: params.authProfileProvider, authProfileMode: params.authProfileMode, sessionAuthProfileId: params.sessionAuthProfileId, sessionAuthProfileSource: params.sessionAuthProfileSource, sessionAuthProfileCandidateIds: params.sessionAuthProfileCandidateIds, modelRoute: params.modelRoute, config, workspaceDir: params.workspaceDir, metadataSnapshot: toolPlanningMetadataSnapshot, harnessId: params.harnessId, harnessRuntime: params.harnessRuntime, allowHarnessAuthProfileForwarding: params.allowHarnessAuthProfileForwarding }); const resolvedRef = { provider: params.provider, modelId: params.modelId, ...modelApi ? { modelApi } : {}, ...params.harnessId ? { harnessId: params.harnessId } : {}, ...transport ? { transport } : {} }; const toolContext = { provider: params.provider, config, workspaceDir: params.workspaceDir, env: process.env, runtimeHandle: providerRuntimeHandleForPlugins, modelId: params.modelId, modelApi, model }; const resolveToolContext = (overrides) => ({ ...toolContext, ...overrides?.workspaceDir !== void 0 ? { workspaceDir: overrides.workspaceDir } : {}, ...overrides?.modelApi !== void 0 ? { modelApi: overrides.modelApi } : {}, ...overrides?.model !== void 0 ? { model: asProviderRuntimeModel(overrides.model) } : {} }); const resolveTranscriptRuntimePolicy = (overrides) => resolveTranscriptPolicy({ provider: params.provider, modelId: params.modelId, config, workspaceDir: overrides?.workspaceDir ?? params.workspaceDir, env: process.env, runtimeHandle: providerRuntimeHandleForPlugins, modelApi: overrides?.modelApi ?? modelApi, model: asProviderRuntimeModel(overrides?.model) ?? model }); const resolveTransportExtraParams = (overrides = {}) => resolvePreparedExtraParams({ cfg: config, provider: params.provider, modelId: params.modelId, agentDir: params.agentDir, workspaceDir: overrides.workspaceDir ?? params.workspaceDir, extraParamsOverride: overrides.extraParamsOverride ?? params.extraParamsOverride, thinkingLevel: overrides.thinkingLevel ?? params.thinkingLevel, agentId: overrides.agentId ?? params.agentId, model: asProviderRuntimeModel(overrides.model) ?? model, resolvedTransport: overrides.resolvedTransport ?? transport, providerRuntimeHandle: providerRuntimeHandleForPlugins }); let memoizedTranscriptPolicy; let memoizedTransportExtraParams; const resolveDefaultTranscriptPolicy = () => { memoizedTranscriptPolicy ??= resolveTranscriptRuntimePolicy(); return memoizedTranscriptPolicy; }; const resolveDefaultTransportExtraParams = () => { memoizedTransportExtraParams ??= resolveTransportExtraParams(); return memoizedTransportExtraParams; }; const providerTextTransforms = resolveProviderTextTransforms({ provider: params.provider, config, workspaceDir: params.workspaceDir, env: process.env, runtimeHandle: providerRuntimeHandleForPlugins }); return { resolvedRef, providerRuntimeHandle: providerRuntimeHandleForPlugins, auth, prompt: { provider: params.provider, modelId: params.modelId, textTransforms: providerTextTransforms, resolveSystemPromptContribution(context) { return resolveProviderSystemPromptContribution({ provider: params.provider, config, workspaceDir: context.workspaceDir ?? params.workspaceDir, runtimeHandle: providerRuntimeHandleForPlugins, context: { ...context, config: asOpenClawConfig(context.config) } }); }, transformSystemPrompt(context) { return transformProviderSystemPrompt({ provider: params.provider, config, workspaceDir: context.workspaceDir ?? params.workspaceDir, runtimeHandle: providerRuntimeHandleForPlugins, context: { ...context, config: asOpenClawConfig(context.config) } }); } }, tools: { preparedPlanning, normalize(tools, overrides) { return normalizeProviderToolSchemas({ ...resolveToolContext(overrides), tools }); }, logDiagnostics(tools, overrides) { logProviderToolSchemaDiagnostics({ ...resolveToolContext(overrides), tools }); } }, transcript: { get policy() { return resolveDefaultTranscriptPolicy(); }, resolvePolicy: resolveTranscriptRuntimePolicy }, delivery: buildAgentRuntimeDeliveryPlan({ ...params, providerRuntimeHandle: providerRuntimeHandleForPlugins }), outcome: buildAgentRuntimeOutcomePlan(), transport: { get extraParams() { return resolveDefaultTransportExtraParams(); }, resolveExtraParams: resolveTransportExtraParams }, observability: { resolvedRef: formatResolvedRef({ provider: params.provider, modelId: params.modelId }), provider: params.provider, modelId: params.modelId, ...modelApi ? { modelApi } : {}, ...params.harnessId ? { harnessId: params.harnessId } : {}, ...auth.forwardedAuthProfileId ? { authProfileId: auth.forwardedAuthProfileId } : {}, ...transport ? { transport } : {} } }; } //#endregion export { buildAgentRuntimePlan as n, buildAgentRuntimeDeliveryPlan as t };