feat: support multiple Gmail accounts for polling (#244)
Add multi-account Gmail polling with per-account seen tracking, updated onboarding flow, and config/env resolution. Based on jasoncarreira's work in #214, rebased onto current main and cleaned up: - parseGmailAccounts() extracted to polling/service.ts with 10 unit tests - Per-account seen email tracking (Map<string, Set<string>>) with legacy migration from single-account format - Onboarding supports multi-select for existing accounts + add new - Config resolution: polling.gmail.accounts > integrations.google.accounts (legacy) > GMAIL_ACCOUNT env (comma-separated) - GoogleAccountConfig type for per-account service selection - Updated docs/configuration.md Closes #214. Written by Cameron ◯ Letta Code "Good artists copy, great artists steal." - Pablo Picasso
This commit is contained in:
@@ -387,15 +387,18 @@ polling:
|
||||
intervalMs: 60000 # Check every 60 seconds (default: 60000)
|
||||
gmail:
|
||||
enabled: true
|
||||
account: user@example.com # Gmail account to poll
|
||||
accounts: # Gmail accounts to poll
|
||||
- user@example.com
|
||||
- other@example.com
|
||||
```
|
||||
|
||||
| Option | Type | Default | Description |
|
||||
|--------|------|---------|-------------|
|
||||
| `polling.enabled` | boolean | auto | Master switch. Defaults to `true` if any sub-config is enabled |
|
||||
| `polling.intervalMs` | number | `60000` | Polling interval in milliseconds |
|
||||
| `polling.gmail.enabled` | boolean | auto | Enable Gmail polling. Auto-detected from `account` |
|
||||
| `polling.gmail.enabled` | boolean | auto | Enable Gmail polling. Auto-detected from `account` or `accounts` |
|
||||
| `polling.gmail.account` | string | - | Gmail account to poll for unread messages |
|
||||
| `polling.gmail.accounts` | string[] | - | Gmail accounts to poll for unread messages |
|
||||
|
||||
### Legacy config path
|
||||
|
||||
@@ -405,7 +408,9 @@ For backward compatibility, Gmail polling can also be configured under `integrat
|
||||
integrations:
|
||||
google:
|
||||
enabled: true
|
||||
account: user@example.com
|
||||
accounts:
|
||||
- account: user@example.com
|
||||
services: [gmail, calendar]
|
||||
pollIntervalSec: 60
|
||||
```
|
||||
|
||||
@@ -415,7 +420,7 @@ The top-level `polling` section takes priority if both are present.
|
||||
|
||||
| Env Variable | Polling Config Equivalent |
|
||||
|--------------|--------------------------|
|
||||
| `GMAIL_ACCOUNT` | `polling.gmail.account` |
|
||||
| `GMAIL_ACCOUNT` | `polling.gmail.account` (comma-separated list allowed) |
|
||||
| `POLLING_INTERVAL_MS` | `polling.intervalMs` |
|
||||
| `PORT` | `api.port` |
|
||||
| `API_HOST` | `api.host` |
|
||||
@@ -547,7 +552,7 @@ Environment variables override config file values:
|
||||
| `WHATSAPP_SELF_CHAT_MODE` | `channels.whatsapp.selfChat` |
|
||||
| `SIGNAL_PHONE_NUMBER` | `channels.signal.phone` |
|
||||
| `OPENAI_API_KEY` | `transcription.apiKey` |
|
||||
| `GMAIL_ACCOUNT` | `polling.gmail.account` |
|
||||
| `GMAIL_ACCOUNT` | `polling.gmail.account` (comma-separated list allowed) |
|
||||
| `POLLING_INTERVAL_MS` | `polling.intervalMs` |
|
||||
|
||||
See [SKILL.md](../SKILL.md) for complete environment variable reference.
|
||||
|
||||
Reference in New Issue
Block a user