UNPKG

openclaw

Version:

Multi-channel AI gateway with extensible messaging integrations

92 lines (91 loc) 4.53 kB
import { l as mergeAlsoAllowPolicy } from "./tool-policy-Wi0C45cX.js"; import { t as isFrozenClawToolAllowPolicy } from "./tool-policy-runtime-ByCJNU4r.js"; import { n as buildDefaultToolPolicyPipelineSteps, t as applyToolPolicyPipeline } from "./tool-policy-pipeline-BwOD5Xc9.js"; //#region src/agents/conversation-tool-policy-pipeline.ts function mergePolicyAllowlist(policy, alsoAllow) { if (isFrozenClawToolAllowPolicy(policy)) return policy; return mergeAlsoAllowPolicy(policy, alsoAllow ? [...alsoAllow] : void 0); } /** * Resolves the shared policy layers once so local and remote fixed tool surfaces cannot * diverge on profile `alsoAllow`, sender, sandbox, delegation, or runtime-cap semantics. */ function resolveConversationToolPolicies(params) { const policy = params.capabilityProfile.policy; const profileAllow = [...policy.profileAlsoAllow ?? [], ...params.additionalProfileAllow ?? []]; const providerProfileAllow = [...policy.providerProfileAlsoAllow ?? [], ...params.additionalProfileAllow ?? []]; return { profilePolicy: mergePolicyAllowlist(policy.profilePolicy, profileAllow), providerProfilePolicy: mergePolicyAllowlist(policy.providerProfilePolicy, providerProfileAllow), globalPolicy: mergePolicyAllowlist(policy.globalPolicy, params.additionalPolicyAllow), globalProviderPolicy: mergePolicyAllowlist(policy.globalProviderPolicy, params.additionalPolicyAllow), agentPolicy: mergePolicyAllowlist(policy.agentPolicy, params.additionalPolicyAllow), agentProviderPolicy: mergePolicyAllowlist(policy.agentProviderPolicy, params.additionalPolicyAllow), groupPolicy: mergePolicyAllowlist(policy.groupPolicy, params.additionalPolicyAllow), senderPolicy: mergePolicyAllowlist(policy.senderPolicy, params.additionalPolicyAllow), sandboxPolicy: mergePolicyAllowlist(policy.sandboxPolicy, params.additionalPolicyAllow), subagentPolicy: mergePolicyAllowlist(policy.subagentPolicy, params.additionalPolicyAllow), runtimeToolPolicy: policy.runtimeToolPolicyForInheritance, inheritedToolPolicy: mergePolicyAllowlist(policy.inheritedToolPolicy, params.additionalInheritedAllow) }; } /** Builds the canonical ordered policy pipeline for a resolved conversation. */ function buildConversationToolPolicyPipelineSteps(params) { const profile = params.capabilityProfile.policy; return [ ...buildDefaultToolPolicyPipelineSteps({ profilePolicy: params.policies.profilePolicy, profile: profile.profile, profileUnavailableCoreWarningAllowlist: profile.profilePolicy?.allow, providerProfilePolicy: params.policies.providerProfilePolicy, providerProfile: profile.providerProfile, providerProfileUnavailableCoreWarningAllowlist: profile.providerProfilePolicy?.allow, globalPolicy: params.policies.globalPolicy, globalProviderPolicy: params.policies.globalProviderPolicy, agentPolicy: params.policies.agentPolicy, agentProviderPolicy: params.policies.agentProviderPolicy, groupPolicy: params.policies.groupPolicy, senderPolicy: params.policies.senderPolicy, agentId: profile.agentId, unavailableCoreToolReason: params.unavailableCoreToolReason }), { policy: params.policies.sandboxPolicy, label: "sandbox tools.allow", unavailableCoreToolReason: params.unavailableCoreToolReason }, ...params.additionalStepsAfterSandbox ?? [], { policy: params.policies.subagentPolicy, label: "subagent tools.allow", unavailableCoreToolReason: params.unavailableCoreToolReason }, ...params.includeRuntimeToolPolicy ? [{ policy: params.policies.runtimeToolPolicy, label: "runtime tools.allow", unavailableCoreToolReason: params.unavailableCoreToolReason }] : [], { policy: params.policies.inheritedToolPolicy, label: "inherited tools", unavailableCoreToolReason: params.unavailableCoreToolReason } ]; } /** Projects a fixed runtime catalog through the exact conversation policy pipeline. */ function projectConversationToolNames(params) { const policies = resolveConversationToolPolicies({ capabilityProfile: params.capabilityProfile }); const tools = params.toolNames.map((name) => ({ name })); return applyToolPolicyPipeline({ tools, toolMeta: () => void 0, warn: params.warn, steps: buildConversationToolPolicyPipelineSteps({ capabilityProfile: params.capabilityProfile, policies, includeRuntimeToolPolicy: true }) }).map((tool) => tool.name); } //#endregion export { projectConversationToolNames as n, resolveConversationToolPolicies as r, buildConversationToolPolicyPipelineSteps as t };