openclaw
Version:
Multi-channel AI gateway with extensible messaging integrations
34 lines (33 loc) • 1.74 kB
JavaScript
import { a as collectExplicitDenylist } from "./tool-policy-Wi0C45cX.js";
import { r as getPluginToolMeta } from "./tool-metadata-B5aqo73s.js";
import { t as applyToolPolicyPipeline } from "./tool-policy-pipeline-BwOD5Xc9.js";
import { r as resolveConversationToolPolicies, t as buildConversationToolPolicyPipelineSteps } from "./conversation-tool-policy-pipeline-BzM9yFTb.js";
import { t as buildDeclaredToolAllowlistContext } from "./tool-policy-declared-context-CcJz-5tf.js";
//#region src/agents/embedded-agent-runner/effective-tool-policy.ts
function applyFinalEffectiveToolPolicy(params) {
if (params.bundledTools.length === 0) return params.bundledTools;
const capabilityProfile = params.conversationCapabilityProfile;
const { trustedGroup } = capabilityProfile.policy;
if (trustedGroup.dropped) params.warn("effective tool policy: dropping caller-provided groupId that does not match session-derived group context");
const policies = resolveConversationToolPolicies({ capabilityProfile });
const pipelineSteps = buildConversationToolPolicyPipelineSteps({
capabilityProfile,
policies,
includeRuntimeToolPolicy: false
}).map((step) => Object.assign({}, step, { suppressUnavailableCoreToolWarning: true }));
return applyToolPolicyPipeline({
tools: params.bundledTools,
toolMeta: (tool) => getPluginToolMeta(tool),
warn: params.warn,
steps: pipelineSteps,
onFilter: params.onFilter,
declaredToolAllowlist: buildDeclaredToolAllowlistContext({
config: params.config,
workspaceDir: params.workspaceDir,
metadataSnapshot: params.metadataSnapshot,
toolDenylist: collectExplicitDenylist(pipelineSteps.map((step) => step.policy))
})
});
}
//#endregion
export { applyFinalEffectiveToolPolicy as t };