openclaw
Version:
Multi-channel AI gateway with extensible messaging integrations
37 lines (36 loc) • 1.5 kB
JavaScript
import { c as resolveAgentConfig } from "./agent-scope-config-DcbEhP0R.js";
import { j as parseSessionDeliveryRoute } from "./session-key-BnWWjqNc.js";
import { n as pickSandboxToolPolicy } from "./sandbox-tool-policy-G7E6RfNN.js";
import "./agent-scope-DbtJyKUL.js";
import { o as resolveToolsBySender } from "./group-policy-BXx44oG5.js";
//#region src/agents/sender-tool-policy.ts
/**
* Sender-scoped sandbox tool policy resolver.
* Applies per-agent toolsBySender matches before global sender policy so
* channel delivery can narrow tool access by sender identity.
*/
/** Resolves sender-scoped sandbox tool policy, preferring agent config over global config. */
function resolveSenderToolPolicy(params) {
const cfg = params.config;
if (!cfg) return;
const sender = {
messageProvider: parseSessionDeliveryRoute(params.sessionKey)?.channel ?? params.messageProvider,
senderId: params.senderId,
senderName: params.senderName,
senderUsername: params.senderUsername,
senderE164: params.senderE164
};
const agentTools = params.agentId && params.agentId.trim() ? resolveAgentConfig(cfg, params.agentId)?.tools : void 0;
const agentPolicy = resolveToolsBySender({
toolsBySender: agentTools?.toolsBySender,
...sender
});
if (agentPolicy) return pickSandboxToolPolicy(agentPolicy);
const globalPolicy = resolveToolsBySender({
toolsBySender: cfg.tools?.toolsBySender,
...sender
});
return pickSandboxToolPolicy(globalPolicy);
}
//#endregion
export { resolveSenderToolPolicy as t };