openclaw
Version:
Multi-channel AI gateway with extensible messaging integrations
62 lines (61 loc) • 2.34 kB
JavaScript
import "./session-key-BnWWjqNc.js";
import "./account-id-CETVCrTz.js";
import { b as patchChannelConfigForAccount, t as addWildcardAllowFrom } from "./setup-wizard-helpers-DYc3t3kF.js";
//#region src/plugin-sdk/channel-dm-policy.ts
/** Build an account-aware DM policy descriptor for channel setup flows. */
function createChannelDmPolicy(params) {
const policyPath = params.policyPath ?? "dmPolicy";
const allowFromPath = params.allowFromPath ?? "allowFrom";
const rootPath = `channels.${params.channel}`;
const resolveContext = (cfg, requestedAccountId) => ({
cfg,
requestedAccountId,
account: params.resolveAccount(cfg, requestedAccountId)
});
const resolveDefaultConfigKeys = (context) => {
const prefix = context.account.accountId === "default" ? rootPath : `${rootPath}.accounts.${context.account.accountId}`;
return {
policyKey: `${prefix}.${policyPath}`,
allowFromKey: `${prefix}.${allowFromPath}`
};
};
return {
label: params.label,
channel: params.channel,
policyKey: params.policyKey ?? `${rootPath}.${policyPath}`,
allowFromKey: params.allowFromKey ?? `${rootPath}.${allowFromPath}`,
resolveConfigKeys: (cfg, accountId) => {
const context = resolveContext(cfg, accountId);
return (params.resolveConfigKeys ?? resolveDefaultConfigKeys)(context);
},
getCurrent: (cfg, accountId) => resolveContext(cfg, accountId).account.config.dmPolicy ?? "pairing",
setPolicy: (cfg, policy, accountId) => {
const context = resolveContext(cfg, accountId);
const patchContext = {
...context,
policy,
allowFrom: params.resolveAllowFrom ? params.resolveAllowFrom({
...context,
policy
}) : policy === "open" ? addWildcardAllowFrom(context.account.config.allowFrom) : void 0
};
const patch = params.buildPatch?.(patchContext) ?? {
dmPolicy: policy,
...patchContext.allowFrom === void 0 ? {} : { allowFrom: patchContext.allowFrom }
};
return params.applyPatch ? params.applyPatch({
...context,
patch
}) : patchChannelConfigForAccount({
cfg,
channel: params.channel,
accountId: context.account.accountId,
patch,
setupSurface: typeof params.setupSurface === "function" ? params.setupSurface() : params.setupSurface
});
},
promptAllowFrom: params.promptAllowFrom
};
}
//#endregion
export { createChannelDmPolicy as t };