fix: preserve plugin group policy resolution

This commit is contained in:
Peter Steinberger
2026-04-10 23:25:36 +01:00
parent 594a84cfa4
commit 0d1360ed7c

View File

@@ -148,15 +148,21 @@ function resolveGroupContextFromSessionKey(sessionKey?: string | null): {
const conversationKey = threadId ? baseSessionKey : raw;
const conversation = parseRawSessionConversationRef(conversationKey);
if (conversation) {
const resolvedConversation = resolveSessionConversation({
channel: conversation.channel,
kind: conversation.kind,
rawId: conversation.rawId,
});
return {
channel: conversation.channel,
groupId: resolvedConversation?.baseConversationId ?? conversation.rawId,
};
if (/:(?:sender|thread|topic):/iu.test(conversation.rawId)) {
const resolvedConversation = resolveSessionConversation({
channel: conversation.channel,
kind: conversation.kind,
rawId: conversation.rawId,
});
const groupId = resolvedConversation?.baseConversationId;
if (groupId) {
return {
channel: conversation.channel,
groupId,
};
}
}
return { channel: conversation.channel, groupId: conversation.rawId };
}
const base = conversationKey ?? raw;
const parts = base.split(":").filter(Boolean);
@@ -334,37 +340,34 @@ export function resolveGroupToolPolicy(params: {
if (!channel) {
return undefined;
}
const configTools = resolveChannelGroupToolsPolicy({
cfg: params.config,
channel,
groupId,
accountId: params.accountId,
senderId: params.senderId,
senderName: params.senderName,
senderUsername: params.senderUsername,
senderE164: params.senderE164,
});
if (configTools) {
return pickSandboxToolPolicy(configTools);
}
let plugin;
try {
plugin = getChannelPlugin(channel);
} catch {
plugin = undefined;
}
const toolsConfig = plugin?.groups?.resolveToolPolicy?.({
cfg: params.config,
groupId,
groupChannel: params.groupChannel,
groupSpace: params.groupSpace,
accountId: params.accountId,
senderId: params.senderId,
senderName: params.senderName,
senderUsername: params.senderUsername,
senderE164: params.senderE164,
});
const toolsConfig =
plugin?.groups?.resolveToolPolicy?.({
cfg: params.config,
groupId,
groupChannel: params.groupChannel,
groupSpace: params.groupSpace,
accountId: params.accountId,
senderId: params.senderId,
senderName: params.senderName,
senderUsername: params.senderUsername,
senderE164: params.senderE164,
}) ??
resolveChannelGroupToolsPolicy({
cfg: params.config,
channel,
groupId,
accountId: params.accountId,
senderId: params.senderId,
senderName: params.senderName,
senderUsername: params.senderUsername,
senderE164: params.senderE164,
});
return pickSandboxToolPolicy(toolsConfig);
}