import { cronJobs, makeFunctionReference } from "convex/server"; // Reconciles attempts whose worker lease expired (crash/restart). The target // is referenced by string so this file does not depend on regenerated codegen. const reconcileRef = makeFunctionReference< "mutation", Record, { reconciled: number } | null >("workExecution:reconcileExpiredAttempts"); const reconcileConversationTurnsRef = makeFunctionReference< "mutation", Record, { reconciled: number } >("conversationMessages:reconcileExpiredTurns"); const reconcileGitConnectionsRef = makeFunctionReference< "action", Record, { checked: number } >("gitConnectionHealth:reconcileStaleConnections"); const backfillConnectionsRef = makeFunctionReference< "mutation", Record, { migrated: number } >("gitConnectionData:backfillConnections"); const crons = cronJobs(); crons.interval( "reconcile expired work attempts", { seconds: 30 }, reconcileRef ); crons.interval( "reconcile expired conversation turns", { seconds: 30 }, reconcileConversationTurnsRef ); crons.cron( "reconcile stale git connections", "0 * * * *", reconcileGitConnectionsRef ); // Backfill legacy connections on startup and every 6 hours until all are migrated. crons.interval( "backfill legacy git connections", { hours: 6 }, backfillConnectionsRef ); export default crons;