






















@@ -1,3 +1,4 @@
1+import { channelRouteIdentityKey } from "../../../channels/route/ref.js";
12import { resolveGlobalDedupeCache } from "../../../infra/dedupe.js";
23import { normalizeOptionalString } from "../../../shared/string-coerce.js";
34import { applyQueueDropPolicy, shouldSkipQueueItem } from "../../../utils/queue-helpers.js";
@@ -16,34 +17,32 @@ const RECENT_QUEUE_MESSAGE_IDS = resolveGlobalDedupeCache(RECENT_QUEUE_MESSAGE_I
1617maxSize: 10_000,
1718});
181920+function followupRouteIdentityKey(run: FollowupRun): string {
21+return channelRouteIdentityKey({
22+channel: run.originatingChannel,
23+to: run.originatingTo,
24+accountId: run.originatingAccountId,
25+threadId: run.originatingThreadId,
26+});
27+}
28+1929function buildRecentMessageIdKey(run: FollowupRun, queueKey: string): string | undefined {
2030const messageId = normalizeOptionalString(run.messageId);
2131if (!messageId) {
2232return undefined;
2333}
2434// Use JSON tuple serialization to avoid delimiter-collision edge cases when
2535// channel/to/account values contain "|" characters.
26-return JSON.stringify([
27-"queue",
28-queueKey,
29-run.originatingChannel ?? "",
30-run.originatingTo ?? "",
31-run.originatingAccountId ?? "",
32-run.originatingThreadId == null ? "" : String(run.originatingThreadId),
33-messageId,
34-]);
36+return JSON.stringify(["queue", queueKey, followupRouteIdentityKey(run), messageId]);
3537}
36383739function isRunAlreadyQueued(
3840run: FollowupRun,
3941items: FollowupRun[],
4042allowPromptFallback = false,
4143): boolean {
42-const hasSameRouting = (item: FollowupRun) =>
43-item.originatingChannel === run.originatingChannel &&
44-item.originatingTo === run.originatingTo &&
45-item.originatingAccountId === run.originatingAccountId &&
46-item.originatingThreadId === run.originatingThreadId;
44+const routeKey = followupRouteIdentityKey(run);
45+const hasSameRouting = (item: FollowupRun) => followupRouteIdentityKey(item) === routeKey;
47464847const messageId = normalizeOptionalString(run.messageId);
4948if (messageId) {
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。