diff --git a/src/auto-reply/reply/agent-runner-payloads.ts b/src/auto-reply/reply/agent-runner-payloads.ts index 6e03e37b8..5694c761c 100644 --- a/src/auto-reply/reply/agent-runner-payloads.ts +++ b/src/auto-reply/reply/agent-runner-payloads.ts @@ -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, diff --git a/src/auto-reply/reply/followup-runner.ts b/src/auto-reply/reply/followup-runner.ts index a9351a5a6..d71f71c12 100644 --- a/src/auto-reply/reply/followup-runner.ts +++ b/src/auto-reply/reply/followup-runner.ts @@ -243,6 +243,7 @@ export function createFollowupRunner(params: { originatingTo: queued.originatingTo, originatingThreadId: queued.originatingThreadId, accountId: queued.run.agentAccountId, + replyToMode, }); const finalPayloads = suppressMessagingToolReplies ? [] : dedupedPayloads; diff --git a/src/auto-reply/reply/reply-payloads.ts b/src/auto-reply/reply/reply-payloads.ts index 6afe2cbb4..ab2d52fad 100644 --- a/src/auto-reply/reply/reply-payloads.ts +++ b/src/auto-reply/reply/reply-payloads.ts @@ -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; }