/** * schema-domain-daemon-mailbox.ts, the daemon's OWN mailbox and calendar. * * These keys live under `surfaces.` and so ride the surface domain's ownership * rule, but they are not a chat adapter and they do not belong beside Slack, * Discord and Telegram: those describe an external service the daemon talks * TO, while these describe the mail account and calendar the daemon speaks AS. * Splitting them out keeps `schema-domain-surfaces.ts` a list of adapters and * gives this pair a file whose header can say what they are for. * * ── Why they are declared at all ────────────────────────────────────────── * * The daemon's email and calendar handlers read these long before anything * declared them. `CONFIG_SCHEMA` is what the schema-driven settings modal * renders from, so an undeclared key is a key the modal cannot show, and the * handlers' own failure text names them: * * "Email is not configured. Set surfaces.email.host, surfaces.email.user…" * * goodvibes-webui's CalendarView points operators at * `surfaces.calendar.caldavUrl` / `caldavUser` / `caldavPassword`, and * goodvibes-tui's setup guidance points at `surfaces.email.*`, so two products * were telling operators to set keys their settings UI had no row for. * Declaring them here is what makes those instructions land somewhere real. * * ── Why both spellings ──────────────────────────────────────────────────── * * Both are genuinely read. The inbox provider reads the flat * `imapHost`/`imapPort`/`imapUser`/`imapPassword`; the triage tagger and the * settings resolver read the nested `imap.*`/`smtp.*`. Declaring one spelling * would have stranded exactly the half a given machine happened to use. * * ── Why this also fixes credential storage ──────────────────────────────── * * `config-ownership.ts` derives the daemon-owned SECRET set by walking * `listDaemonOwnedConfigPaths()`, which is `CONFIG_SCHEMA` keys the daemon * owns plus a hand-kept list of non-scalar paths. `surfaces.` has always been * a daemon-owned PREFIX, so `isDaemonOwnedConfigKey` already answered true for * these, but nothing ENUMERATED them, so the walk produced no daemon-owned * credential name for them and `GOODVIBES_SURFACES_EMAIL_PASSWORD` was filed * in whichever client silo the operator happened to be sitting in. The daemon * reads none of those, so a stored mail password looked set and did nothing. * Being real schema keys puts them in that walk, which is why they are here * rather than on the non-scalar list in `config-ownership.ts`. */ import { type ConfigSettingDefinition } from './schema-shared.js'; /** Defaults for the daemon's own mail account and calendar. */ export declare const daemonMailboxConfigDefaults: { email: { host: string; user: string; username: string; from: string; password: string; imapHost: string; imapPort: number; imapUser: string; imapPassword: string; imap: { host: string; port: number; user: string; password: string; secure: boolean; mailbox: string; draftsMailbox: string; }; smtp: { host: string; port: number; password: string; secure: boolean; }; inbound: { enabled: boolean; accounts: string; source: string; gmailPollSecondsExpecting: number; gmailPollSecondsIdle: number; mode: string; pollIntervalSeconds: number; idleReissueMinutes: number; reconnect: { maxBackoffSeconds: number; }; notice: { route: string; mode: string; }; expectationWindowMinutes: number; dedupTtlMinutes: number; retentionDays: number; maxRecords: number; capabilityRecheckMinutes: number; onInsufficientCapability: string; }; }; calendar: { caldavUrl: string; caldavUser: string; caldavPassword: string; defaultCalendarId: string; calendars: string; }; }; /** Schema rows for the daemon's own mail account and calendar. */ export declare const daemonMailboxConfigSettings: ConfigSettingDefinition[]; //# sourceMappingURL=schema-domain-daemon-mailbox.d.ts.map