mirror of
https://github.com/paperclipai/paperclip.git
synced 2026-10-23 17:33:51 +02:00
Replace periodic Telegram discovery and maintenance scans with bounded startup recovery, connection-specific commit notifications, and durable action deadlines. Preserve ownership, inactive subscription parking, retry and cleanup recovery, and atomic credential binding updates. Verified full typecheck/build, 30 focused scheduler tests, 12 database-backed recovery cases, all current-head CI checks, and Greptile 5/5 with no unresolved threads. Co-Authored-By: Paperclip <noreply@paperclip.ing>
41 lines
1.8 KiB
TypeScript
41 lines
1.8 KiB
TypeScript
import { DELIVERY_QUEUES, notifyDeliveryWork } from "./delivery-work-notifications.js";
|
|
|
|
export async function notifyChatDeliveryWork(tx: object): Promise<void> {
|
|
await notifyDeliveryWork(tx, DELIVERY_QUEUES.chatInbound);
|
|
}
|
|
|
|
export async function notifyChatPublicationWork(tx: object): Promise<void> {
|
|
await notifyDeliveryWork(tx, DELIVERY_QUEUES.chatPublications);
|
|
// Receipt recovery waits for the publication owner to release its claim.
|
|
await notifyDeliveryWork(tx, DELIVERY_QUEUES.chatReceipts);
|
|
}
|
|
|
|
export const CHAT_ACTION_QUEUES = {
|
|
provider_effect: DELIVERY_QUEUES.chatProviderEffects,
|
|
github_webhook_ingress: DELIVERY_QUEUES.chatGitHubIngress,
|
|
failed_run_retry: DELIVERY_QUEUES.chatFailedRunRetries,
|
|
telegram_maintenance: DELIVERY_QUEUES.chatTelegramMaintenance,
|
|
slack_session_sync: DELIVERY_QUEUES.chatSessionSyncs,
|
|
slack_board_message: DELIVERY_QUEUES.chatBoardMessages,
|
|
slash_task_start: DELIVERY_QUEUES.chatTaskStarts,
|
|
receipt_reaction: DELIVERY_QUEUES.chatReceiptReactions,
|
|
slack_session_stop: DELIVERY_QUEUES.chatSessionStops,
|
|
} as const;
|
|
export type ScheduledChatAction = keyof typeof CHAT_ACTION_QUEUES;
|
|
|
|
export async function notifyChatActionWork(tx: object, kind: ScheduledChatAction): Promise<void> {
|
|
await notifyDeliveryWork(tx, CHAT_ACTION_QUEUES[kind]);
|
|
}
|
|
|
|
export async function notifyChatVerificationWork(tx: object): Promise<void> {
|
|
await notifyDeliveryWork(tx, DELIVERY_QUEUES.chatVerification);
|
|
}
|
|
|
|
export async function notifyChatEndpointWork(tx: object, connectionId: string): Promise<void> {
|
|
await notifyChatDeliveryWork(tx);
|
|
await notifyChatPublicationWork(tx);
|
|
for (const queue of Object.values(CHAT_ACTION_QUEUES)) await notifyDeliveryWork(tx, queue);
|
|
await notifyChatVerificationWork(tx);
|
|
await notifyDeliveryWork(tx, DELIVERY_QUEUES.chatTelegramSubscriptions, connectionId);
|
|
}
|