/** * Cron script: email-auto-respond * * Polls IMAP for new messages on EmailAccounts with autoRespond enabled. * For each new message, invokes the assigned public agent via the Anthropic * API and sends the reply via SMTP with threading headers. * * PID lock at $HOME/{configDir}/email-auto-respond.lock prevents overlapping runs. * * PLATFORM_ROOT=... node dist/scripts/email-auto-respond.js * * ┌─────────────────────────────────────────────────────────────────┐ * │ CRON (every 1 min) │ * │ \-> email-auto-respond.ts │ * │ ├── PID lock │ * │ ├── Neo4j: EmailAccounts with autoRespond=true │ * │ │ └── Skip if pollInterval hasn't elapsed │ * │ └── For each account: │ * │ ├── Read rate limit counters from Neo4j │ * │ │ └── Reset if clock hour/day boundary passed │ * │ ├── IMAP: fetch UID > lastRespondedUid │ * │ ├── For each new message: │ * │ │ ├── Skip auto-replies (RFC 3834) │ * │ │ ├── Skip own address │ * │ │ ├── Skip duplicate sender (1 reply/sender/poll) │ * │ │ ├── Check hourly/daily cap → break if hit │ * │ │ │ └── Log + Task node (does NOT disable) │ * │ │ ├── Assemble system prompt (IDENTITY+SOUL+KNOW) │ * │ │ ├── Anthropic API → generate reply │ * │ │ ├── SMTP: send with In-Reply-To/References │ * │ │ ├── Increment send counters │ * │ │ └── Update lastRespondedUid (per-email) │ * │ ├── Update lastPollAt │ * │ └── Circuit breaker (3 fails → disable + Task node) │ * └─────────────────────────────────────────────────────────────────┘ */ export {}; //# sourceMappingURL=email-auto-respond.d.ts.map