/ src / cron / autoresponder.js
autoresponder.js
 1  /**
 2   * Autoresponder Cron Job
 3   *
 4   * Runs every 5 minutes via the cron_jobs table.
 5   * Processes inbound messages and generates auto-replies using Claude Opus.
 6   */
 7  
 8  import { processInboundQueue } from '../inbound/autoresponder.js';
 9  import Logger from '../utils/logger.js';
10  
11  const logger = new Logger('CronAutoresponder');
12  
13  /**
14   * Cron handler — called by src/cron.js HANDLERS registry
15   *
16   * @returns {Promise<{ summary: string, details: Object, metrics: Object }>}
17   */
18  export async function runAutoresponder() {
19    logger.info('Starting autoresponder cycle...');
20  
21    try {
22      const result = await processInboundQueue();
23  
24      return {
25        summary: `Autoresponder: ${result.sent} sent, ${result.skipped} skipped, ${result.failed} failed`,
26        details: result,
27        metrics: {
28          processed: result.processed,
29          sent: result.sent,
30          skipped: result.skipped,
31          failed: result.failed,
32        },
33      };
34    } catch (err) {
35      logger.error('Autoresponder cron failed', err);
36      throw err;
37    }
38  }
39  
40  export default { runAutoresponder };