Slack: treat auto-threaded tool sends as same thread
This commit is contained in:
parent
40d2842443
commit
f04ddea9a1
@ -97,6 +97,7 @@ export function buildReplyPayloads(params: {
|
||||
originatingTo: params.originatingTo,
|
||||
originatingThreadId: params.originatingThreadId,
|
||||
accountId: params.accountId,
|
||||
replyToMode: params.replyToMode,
|
||||
});
|
||||
const dedupedPayloads = filterMessagingToolDuplicates({
|
||||
payloads: replyTaggedPayloads,
|
||||
|
||||
@ -243,6 +243,7 @@ export function createFollowupRunner(params: {
|
||||
originatingTo: queued.originatingTo,
|
||||
originatingThreadId: queued.originatingThreadId,
|
||||
accountId: queued.run.agentAccountId,
|
||||
replyToMode,
|
||||
});
|
||||
const finalPayloads = suppressMessagingToolReplies ? [] : dedupedPayloads;
|
||||
|
||||
|
||||
@ -84,6 +84,7 @@ export function shouldSuppressMessagingToolReplies(params: {
|
||||
originatingTo?: string;
|
||||
originatingThreadId?: string | number;
|
||||
accountId?: string;
|
||||
replyToMode?: ReplyToMode;
|
||||
}): boolean {
|
||||
const provider = params.messageProvider?.trim().toLowerCase();
|
||||
if (!provider) return false;
|
||||
@ -99,6 +100,10 @@ export function shouldSuppressMessagingToolReplies(params: {
|
||||
};
|
||||
const originThreadId = normalizeThreadId(params.originatingThreadId);
|
||||
const originAccount = normalizeAccountId(params.accountId);
|
||||
const shouldAssumeAutoThread =
|
||||
provider === "slack" &&
|
||||
(params.replyToMode === "all" || params.replyToMode === "first") &&
|
||||
Boolean(originThreadId);
|
||||
const sentTargets = params.messagingToolSentTargets ?? [];
|
||||
if (sentTargets.length === 0) return false;
|
||||
return sentTargets.some((target) => {
|
||||
@ -110,7 +115,10 @@ export function shouldSuppressMessagingToolReplies(params: {
|
||||
if (originAccount && targetAccount && originAccount !== targetAccount) {
|
||||
return false;
|
||||
}
|
||||
const targetThreadId = normalizeThreadId(target.threadId);
|
||||
let targetThreadId = normalizeThreadId(target.threadId);
|
||||
if (!targetThreadId && shouldAssumeAutoThread) {
|
||||
targetThreadId = originThreadId;
|
||||
}
|
||||
if (originThreadId || targetThreadId) {
|
||||
return originThreadId === targetThreadId;
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user