feat: add worker queue fabric — classify, dnc, p1, review, digest, thread-resolve, outbox, AI modules

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-06-17 15:40:28 +05:30
parent 6aec093516
commit 47f345c4bf
21 changed files with 1097 additions and 0 deletions
@@ -0,0 +1,34 @@
import { createLogger } from '@tower/logger';
const SIX_HOURS_MS = 6 * 60 * 60 * 1000;
export function startExpireScheduler(prisma: any, logger = createLogger('expire-scheduler')): void {
let running = false;
const tick = async () => {
if (running) return;
running = true;
try {
const now = new Date();
const result = await prisma.message.deleteMany({
where: {
expiresAt: { lt: now },
status: { in: ['RAW', 'DNC'] },
},
});
if (result.count > 0) {
logger.info({ deleted: result.count }, 'Expired RAW/DNC messages purged');
}
} catch (err) {
logger.error({ err }, 'Expire scheduler tick failed');
} finally {
running = false;
}
};
// Run once at startup to clear any messages that expired while the worker was down
tick().catch((err: unknown) => logger.error({ err }, 'Expire scheduler initial tick failed'));
setInterval(tick, SIX_HOURS_MS);
logger.info('Expire scheduler started (6h interval)');
}