mirror of
https://github.com/openclaw/openclaw.git
synced 2026-04-19 21:21:10 +00:00
fix: preserve plugin group policy resolution
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user