@@ -127,7 +127,7 @@ function normalizeProviderForComparison(value?: string): string | undefined {
127127 return lowered ;
128128}
129129
130- function normalizeThreadIdForComparison ( value ?: string ) : string | undefined {
130+ function normalizeThreadIdForComparison ( value ?: unknown ) : string | undefined {
131131 return stringifyRouteThreadId ( value ) ;
132132}
133133
@@ -181,6 +181,7 @@ function targetsMatchForDedupe(params: {
181181 provider : string ;
182182 originTarget : string ;
183183 targetKey : string ;
184+ originThreadId ?: string ;
184185 targetThreadId ?: string ;
185186} ) : boolean {
186187 const pluginMatch = getChannelPlugin ( params . provider ) ?. outbound ?. targetsMatchForReplySuppression ;
@@ -191,6 +192,9 @@ function targetsMatchForDedupe(params: {
191192 targetThreadId : normalizeThreadIdForComparison ( params . targetThreadId ) ,
192193 } ) ;
193194 }
195+ if ( params . originThreadId || params . targetThreadId ) {
196+ return false ;
197+ }
194198 return params . targetKey === params . originTarget ;
195199}
196200
@@ -199,6 +203,7 @@ export function shouldDedupeMessagingToolRepliesForRoute(params: {
199203 messagingToolSentTargets ?: MessagingToolSend [ ] ;
200204 originatingTo ?: string ;
201205 accountId ?: string ;
206+ originatingThreadId ?: string | number ;
202207} ) : boolean {
203208 return getMatchingMessagingToolReplyTargets ( params ) . length > 0 ;
204209}
@@ -208,6 +213,7 @@ export function getMatchingMessagingToolReplyTargets(params: {
208213 messagingToolSentTargets ?: MessagingToolSend [ ] ;
209214 originatingTo ?: string ;
210215 accountId ?: string ;
216+ originatingThreadId ?: string | number ;
211217} ) : MessagingToolSend [ ] {
212218 const provider = normalizeProviderForComparison ( params . messageProvider ) ;
213219 if ( ! provider ) {
@@ -237,6 +243,7 @@ export function getMatchingMessagingToolReplyTargets(params: {
237243 provider,
238244 rawTarget : originRawTarget ,
239245 accountId : routeAccount ,
246+ threadId : stringifyRouteThreadId ( params . originatingThreadId ) ,
240247 } ) ;
241248 if ( ! originRoute ) {
242249 return false ;
@@ -257,6 +264,7 @@ export function getMatchingMessagingToolReplyTargets(params: {
257264 provider,
258265 originTarget : originRoute . to ,
259266 targetKey : targetRoute . to ,
267+ originThreadId : normalizeThreadIdForComparison ( originRoute . threadId ) ,
260268 targetThreadId : target . threadId ,
261269 } ) ;
262270 } ) ;
@@ -276,13 +284,15 @@ export function resolveMessagingToolPayloadDedupe(params: {
276284 messagingToolSentTargets ?: MessagingToolSend [ ] ;
277285 originatingTo ?: string ;
278286 accountId ?: string ;
287+ originatingThreadId ?: string | number ;
279288} ) : MessagingToolPayloadDedupeDecision {
280289 const sentTargets = params . messagingToolSentTargets ?? [ ] ;
281290 const matchingTargets = getMatchingMessagingToolReplyTargets ( {
282291 messageProvider : params . messageProvider ,
283292 messagingToolSentTargets : sentTargets ,
284293 originatingTo : params . originatingTo ,
285294 accountId : params . accountId ,
295+ originatingThreadId : params . originatingThreadId ,
286296 } ) ;
287297 const matchingRoute = matchingTargets . length > 0 ;
288298 const routeSentTexts = matchingTargets . flatMap ( ( target ) =>
0 commit comments