Spaces:
Running
Running
File size: 1,686 Bytes
fb4d8fe | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | import type { loadConfig } from "../../../config/config.js";
import { normalizeGroupActivation } from "../../../auto-reply/group-activation.js";
import {
resolveChannelGroupPolicy,
resolveChannelGroupRequireMention,
} from "../../../config/group-policy.js";
import {
loadSessionStore,
resolveGroupSessionKey,
resolveStorePath,
} from "../../../config/sessions.js";
export function resolveGroupPolicyFor(cfg: ReturnType<typeof loadConfig>, conversationId: string) {
const groupId = resolveGroupSessionKey({
From: conversationId,
ChatType: "group",
Provider: "whatsapp",
})?.id;
return resolveChannelGroupPolicy({
cfg,
channel: "whatsapp",
groupId: groupId ?? conversationId,
});
}
export function resolveGroupRequireMentionFor(
cfg: ReturnType<typeof loadConfig>,
conversationId: string,
) {
const groupId = resolveGroupSessionKey({
From: conversationId,
ChatType: "group",
Provider: "whatsapp",
})?.id;
return resolveChannelGroupRequireMention({
cfg,
channel: "whatsapp",
groupId: groupId ?? conversationId,
});
}
export function resolveGroupActivationFor(params: {
cfg: ReturnType<typeof loadConfig>;
agentId: string;
sessionKey: string;
conversationId: string;
}) {
const storePath = resolveStorePath(params.cfg.session?.store, {
agentId: params.agentId,
});
const store = loadSessionStore(storePath);
const entry = store[params.sessionKey];
const requireMention = resolveGroupRequireMentionFor(params.cfg, params.conversationId);
const defaultActivation = !requireMention ? "always" : "mention";
return normalizeGroupActivation(entry?.groupActivation) ?? defaultActivation;
}
|