@agenticmail/core 0.9.6 → 0.9.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.cts CHANGED
@@ -37,6 +37,12 @@ interface EmailEnvelope {
37
37
  subject: string;
38
38
  from: AddressInfo[];
39
39
  to: AddressInfo[];
40
+ /** Cc/Bcc from the IMAP ENVELOPE response. Added so message-view's
41
+ * quote-audience backfill can pull the previous rounds' Cc/Bcc
42
+ * without a full FETCH BODY round-trip — ENVELOPE already carries
43
+ * them, we just weren't surfacing them. */
44
+ cc?: AddressInfo[];
45
+ bcc?: AddressInfo[];
40
46
  date: Date;
41
47
  flags: Set<string>;
42
48
  size: number;
@@ -200,6 +206,20 @@ interface AgenticMailConfig {
200
206
  provider?: 'google_voice';
201
207
  configuredAt?: string;
202
208
  };
209
+ /**
210
+ * Operator's notification address. Used by the dispatcher's
211
+ * bridge-escalation path: when sub-agents mail a bridge inbox AND
212
+ * no fresh host session is available for a headless resume, the
213
+ * API forwards a digest to this address so the operator gets a
214
+ * phone push (via Gmail / Apple Mail / whichever app handles
215
+ * their address). Set during install — the host agent (claude /
216
+ * codex) collects it via the `setup_operator_email` MCP tool
217
+ * during bootstrap and persists it here.
218
+ *
219
+ * Optional. When unset, escalations are still recorded as a
220
+ * system event (visible in the web UI) but no email is sent.
221
+ */
222
+ operatorEmail?: string;
203
223
  masterKey: string;
204
224
  dataDir: string;
205
225
  }
@@ -1493,6 +1513,28 @@ declare class SmsManager {
1493
1513
  getSmsConfig(agentId: string): SmsConfig | null;
1494
1514
  /** Save SMS config to agent metadata */
1495
1515
  saveSmsConfig(agentId: string, config: SmsConfig): void;
1516
+ /**
1517
+ * Resolve the operator's "where do I get pinged" address from an
1518
+ * agent's SMS config. Used by the dispatcher's bridge-escalation
1519
+ * path: when sub-agents mail a bridge with no fresh host session
1520
+ * available, we email the operator a digest at this address. Their
1521
+ * phone's Gmail push notification surfaces it within seconds —
1522
+ * effectively a free, programmatic alert channel.
1523
+ *
1524
+ * Returns the configured `forwardingEmail` (the same Gmail Google
1525
+ * Voice forwards inbound SMS to, which the operator already has
1526
+ * push notifications enabled for) when SMS is configured AND
1527
+ * enabled. Returns null otherwise — caller falls through to a
1528
+ * silent log + system event.
1529
+ *
1530
+ * Why we don't try real-SMS delivery yet: Google Voice's
1531
+ * `<number>@txt.voice.google.com` email-to-SMS gateway was
1532
+ * deprecated by Google years ago. A future `carrier` field on
1533
+ * SmsConfig (Verizon vtext.com / AT&T txt.att.net / etc) will let
1534
+ * the operator opt into actual SMS, but that's a follow-up — the
1535
+ * email path already gets the operator a phone notification.
1536
+ */
1537
+ getAlertEmail(agentId: string): string | null;
1496
1538
  /** Remove SMS config from agent metadata */
1497
1539
  removeSmsConfig(agentId: string): void;
1498
1540
  /** Record an inbound SMS (parsed from email) */
@@ -1764,6 +1806,38 @@ declare function redactSecret(value: unknown): string;
1764
1806
  */
1765
1807
  declare function redactObject<T>(input: T, _depth?: number): T;
1766
1808
 
1809
+ /**
1810
+ * Operator preferences — small per-installation knobs that don't fit
1811
+ * cleanly in the bootstrap-managed `~/.agenticmail/config.json`.
1812
+ *
1813
+ * Currently just `operatorEmail` for bridge-escalation alerts. The
1814
+ * intent is a tiny mutable surface the host agent (claudecode /
1815
+ * codex) can update via MCP without touching the read-only-after-
1816
+ * bootstrap config blob.
1817
+ *
1818
+ * # Storage
1819
+ *
1820
+ * `~/.agenticmail/operator-prefs.json`:
1821
+ *
1822
+ * ```json
1823
+ * { "version": 1, "operatorEmail": "ope@gmail.com" }
1824
+ * ```
1825
+ *
1826
+ * Atomic writes (tmp + rename), tolerant of missing / corrupt
1827
+ * files (returns null and lets the caller decide). Lazy path
1828
+ * resolution so tests can override `homedir()` per-test.
1829
+ */
1830
+ /** Returns the operator's escalation email, or null if not set. */
1831
+ declare function getOperatorEmail(): string | null;
1832
+ /**
1833
+ * Set (or clear) the operator's escalation email. Pass `null` /
1834
+ * empty string to clear. Returns the canonical stored value (trimmed,
1835
+ * lowercased local-part preserved as-is per RFC 5321).
1836
+ */
1837
+ declare function setOperatorEmail(email: string | null): string | null;
1838
+ /** Exposed for tests + diagnostic CLI commands. */
1839
+ declare function operatorPrefsStoragePath(): string;
1840
+
1767
1841
  /**
1768
1842
  * Persisted host-session registry.
1769
1843
  *
@@ -2494,4 +2568,4 @@ declare class AgentMemoryStore {
2494
2568
  renderForPrompt(memory: AgentMemoryRead | null): string;
2495
2569
  }
2496
2570
 
2497
- export { AGENT_ROLES, AccountManager, type AddressInfo, type Agent, AgentDeletionService, type AgentMemoryFields, type AgentMemoryOptions, type AgentMemoryRead, AgentMemoryStore, type AgentRole, AgenticMailClient, type AgenticMailClientOptions, type AgenticMailConfig, type ArchiveAndDeleteOptions, type ArchivedEmail, type Attachment, type AttachmentAdvisory, type CachedMessage, CloudflareClient, type CreateAgentOptions, DEFAULT_AGENT_NAME, DEFAULT_AGENT_ROLE, DEFAULT_SESSION_MAX_AGE_MS, DNSConfigurator, type Database, type DeletionReport, type DeletionSummary, DependencyChecker, DependencyInstaller, type DependencyStatus, type DnsRecord, type DnsSetupResult, type DomainInfo, DomainManager, type DomainModeConfig, type DomainPurchaseResult, DomainPurchaser, type DomainSearchResult, type DomainSetupResult, type EmailEnvelope, type EmailRouteAction, type EmailRouteClass, type EmailRouteClassification, type EmailRouteInput, EmailSearchIndex, type FolderInfo, type GatewayConfig, GatewayManager, type GatewayManagerOptions, type GatewayMode, type GatewayStatus, type HostName, type HostSession, type InboundEmail, type InboxEvent, type InboxExpungeEvent, type InboxFlagsEvent, type InboxNewEvent, InboxWatcher, type InboxWatcherOptions, type InstallProgress, type LinkAdvisory, type LocalSmtpConfig, MailReceiver, type MailReceiverOptions, MailSender, type MailSenderOptions, type MailboxInfo, type OutboundCategory, type OutboundScanInput, type OutboundScanResult, type OutboundWarning, type ParsedAttachment, type ParsedEmail, type ParsedSms, PathTraversalError, type PurchasedDomain, REDACTED, RELAY_PRESETS, RelayBridge, type RelayBridgeOptions, type RelayConfig, RelayGateway, type RelayProvider, type RelaySearchResult, SPAM_THRESHOLD, type SafeJoinOptions, type SanitizeDetection, type SanitizeResult, type SearchCriteria, type SearchableEmail, type SecurityAdvisory, type SendMailOptions, type SendResult, type SendResultWithRaw, ServiceManager, type ServiceStatus, type SetupConfig, SetupManager, type SetupResult, type Severity, type SmsConfig, SmsManager, type SmsMessage, SmsPoller, type SpamCategory, type SpamResult, type SpamRuleMatch, StalwartAdmin, type StalwartAdminOptions, type StalwartPrincipal, ThreadCache, type ThreadCacheEntry, type ThreadCacheOptions, type ThreadIdInput, type TunnelConfig, TunnelManager, UnsafeApiUrlError, WARNING_THRESHOLD, type WatcherOptions, assertWithinBase, buildApiUrl, buildInboundSecurityAdvisory, classifyEmailRoute, closeDatabase, createTestDatabase, debug, debugWarn, ensureDataDir, extractVerificationCode, flushTelemetry, forgetHostSession, getDatabase, hostSessionStoragePath, isInternalEmail, isSessionFresh, isValidPhoneNumber, loadHostSession, normalizeAddress, normalizePhoneNumber, normalizeSubject, parseEmail, parseGoogleVoiceSms, recordToolCall, redactObject, redactSecret, resolveConfig, safeJoin, sanitizeEmail, saveConfig, saveHostSession, scanOutboundEmail, scoreEmail, setTelemetryVersion, startRelayBridge, threadIdFor, tryJoin, validateApiUrl };
2571
+ export { AGENT_ROLES, AccountManager, type AddressInfo, type Agent, AgentDeletionService, type AgentMemoryFields, type AgentMemoryOptions, type AgentMemoryRead, AgentMemoryStore, type AgentRole, AgenticMailClient, type AgenticMailClientOptions, type AgenticMailConfig, type ArchiveAndDeleteOptions, type ArchivedEmail, type Attachment, type AttachmentAdvisory, type CachedMessage, CloudflareClient, type CreateAgentOptions, DEFAULT_AGENT_NAME, DEFAULT_AGENT_ROLE, DEFAULT_SESSION_MAX_AGE_MS, DNSConfigurator, type Database, type DeletionReport, type DeletionSummary, DependencyChecker, DependencyInstaller, type DependencyStatus, type DnsRecord, type DnsSetupResult, type DomainInfo, DomainManager, type DomainModeConfig, type DomainPurchaseResult, DomainPurchaser, type DomainSearchResult, type DomainSetupResult, type EmailEnvelope, type EmailRouteAction, type EmailRouteClass, type EmailRouteClassification, type EmailRouteInput, EmailSearchIndex, type FolderInfo, type GatewayConfig, GatewayManager, type GatewayManagerOptions, type GatewayMode, type GatewayStatus, type HostName, type HostSession, type InboundEmail, type InboxEvent, type InboxExpungeEvent, type InboxFlagsEvent, type InboxNewEvent, InboxWatcher, type InboxWatcherOptions, type InstallProgress, type LinkAdvisory, type LocalSmtpConfig, MailReceiver, type MailReceiverOptions, MailSender, type MailSenderOptions, type MailboxInfo, type OutboundCategory, type OutboundScanInput, type OutboundScanResult, type OutboundWarning, type ParsedAttachment, type ParsedEmail, type ParsedSms, PathTraversalError, type PurchasedDomain, REDACTED, RELAY_PRESETS, RelayBridge, type RelayBridgeOptions, type RelayConfig, RelayGateway, type RelayProvider, type RelaySearchResult, SPAM_THRESHOLD, type SafeJoinOptions, type SanitizeDetection, type SanitizeResult, type SearchCriteria, type SearchableEmail, type SecurityAdvisory, type SendMailOptions, type SendResult, type SendResultWithRaw, ServiceManager, type ServiceStatus, type SetupConfig, SetupManager, type SetupResult, type Severity, type SmsConfig, SmsManager, type SmsMessage, SmsPoller, type SpamCategory, type SpamResult, type SpamRuleMatch, StalwartAdmin, type StalwartAdminOptions, type StalwartPrincipal, ThreadCache, type ThreadCacheEntry, type ThreadCacheOptions, type ThreadIdInput, type TunnelConfig, TunnelManager, UnsafeApiUrlError, WARNING_THRESHOLD, type WatcherOptions, assertWithinBase, buildApiUrl, buildInboundSecurityAdvisory, classifyEmailRoute, closeDatabase, createTestDatabase, debug, debugWarn, ensureDataDir, extractVerificationCode, flushTelemetry, forgetHostSession, getDatabase, getOperatorEmail, hostSessionStoragePath, isInternalEmail, isSessionFresh, isValidPhoneNumber, loadHostSession, normalizeAddress, normalizePhoneNumber, normalizeSubject, operatorPrefsStoragePath, parseEmail, parseGoogleVoiceSms, recordToolCall, redactObject, redactSecret, resolveConfig, safeJoin, sanitizeEmail, saveConfig, saveHostSession, scanOutboundEmail, scoreEmail, setOperatorEmail, setTelemetryVersion, startRelayBridge, threadIdFor, tryJoin, validateApiUrl };
package/dist/index.d.ts CHANGED
@@ -37,6 +37,12 @@ interface EmailEnvelope {
37
37
  subject: string;
38
38
  from: AddressInfo[];
39
39
  to: AddressInfo[];
40
+ /** Cc/Bcc from the IMAP ENVELOPE response. Added so message-view's
41
+ * quote-audience backfill can pull the previous rounds' Cc/Bcc
42
+ * without a full FETCH BODY round-trip — ENVELOPE already carries
43
+ * them, we just weren't surfacing them. */
44
+ cc?: AddressInfo[];
45
+ bcc?: AddressInfo[];
40
46
  date: Date;
41
47
  flags: Set<string>;
42
48
  size: number;
@@ -200,6 +206,20 @@ interface AgenticMailConfig {
200
206
  provider?: 'google_voice';
201
207
  configuredAt?: string;
202
208
  };
209
+ /**
210
+ * Operator's notification address. Used by the dispatcher's
211
+ * bridge-escalation path: when sub-agents mail a bridge inbox AND
212
+ * no fresh host session is available for a headless resume, the
213
+ * API forwards a digest to this address so the operator gets a
214
+ * phone push (via Gmail / Apple Mail / whichever app handles
215
+ * their address). Set during install — the host agent (claude /
216
+ * codex) collects it via the `setup_operator_email` MCP tool
217
+ * during bootstrap and persists it here.
218
+ *
219
+ * Optional. When unset, escalations are still recorded as a
220
+ * system event (visible in the web UI) but no email is sent.
221
+ */
222
+ operatorEmail?: string;
203
223
  masterKey: string;
204
224
  dataDir: string;
205
225
  }
@@ -1493,6 +1513,28 @@ declare class SmsManager {
1493
1513
  getSmsConfig(agentId: string): SmsConfig | null;
1494
1514
  /** Save SMS config to agent metadata */
1495
1515
  saveSmsConfig(agentId: string, config: SmsConfig): void;
1516
+ /**
1517
+ * Resolve the operator's "where do I get pinged" address from an
1518
+ * agent's SMS config. Used by the dispatcher's bridge-escalation
1519
+ * path: when sub-agents mail a bridge with no fresh host session
1520
+ * available, we email the operator a digest at this address. Their
1521
+ * phone's Gmail push notification surfaces it within seconds —
1522
+ * effectively a free, programmatic alert channel.
1523
+ *
1524
+ * Returns the configured `forwardingEmail` (the same Gmail Google
1525
+ * Voice forwards inbound SMS to, which the operator already has
1526
+ * push notifications enabled for) when SMS is configured AND
1527
+ * enabled. Returns null otherwise — caller falls through to a
1528
+ * silent log + system event.
1529
+ *
1530
+ * Why we don't try real-SMS delivery yet: Google Voice's
1531
+ * `<number>@txt.voice.google.com` email-to-SMS gateway was
1532
+ * deprecated by Google years ago. A future `carrier` field on
1533
+ * SmsConfig (Verizon vtext.com / AT&T txt.att.net / etc) will let
1534
+ * the operator opt into actual SMS, but that's a follow-up — the
1535
+ * email path already gets the operator a phone notification.
1536
+ */
1537
+ getAlertEmail(agentId: string): string | null;
1496
1538
  /** Remove SMS config from agent metadata */
1497
1539
  removeSmsConfig(agentId: string): void;
1498
1540
  /** Record an inbound SMS (parsed from email) */
@@ -1764,6 +1806,38 @@ declare function redactSecret(value: unknown): string;
1764
1806
  */
1765
1807
  declare function redactObject<T>(input: T, _depth?: number): T;
1766
1808
 
1809
+ /**
1810
+ * Operator preferences — small per-installation knobs that don't fit
1811
+ * cleanly in the bootstrap-managed `~/.agenticmail/config.json`.
1812
+ *
1813
+ * Currently just `operatorEmail` for bridge-escalation alerts. The
1814
+ * intent is a tiny mutable surface the host agent (claudecode /
1815
+ * codex) can update via MCP without touching the read-only-after-
1816
+ * bootstrap config blob.
1817
+ *
1818
+ * # Storage
1819
+ *
1820
+ * `~/.agenticmail/operator-prefs.json`:
1821
+ *
1822
+ * ```json
1823
+ * { "version": 1, "operatorEmail": "ope@gmail.com" }
1824
+ * ```
1825
+ *
1826
+ * Atomic writes (tmp + rename), tolerant of missing / corrupt
1827
+ * files (returns null and lets the caller decide). Lazy path
1828
+ * resolution so tests can override `homedir()` per-test.
1829
+ */
1830
+ /** Returns the operator's escalation email, or null if not set. */
1831
+ declare function getOperatorEmail(): string | null;
1832
+ /**
1833
+ * Set (or clear) the operator's escalation email. Pass `null` /
1834
+ * empty string to clear. Returns the canonical stored value (trimmed,
1835
+ * lowercased local-part preserved as-is per RFC 5321).
1836
+ */
1837
+ declare function setOperatorEmail(email: string | null): string | null;
1838
+ /** Exposed for tests + diagnostic CLI commands. */
1839
+ declare function operatorPrefsStoragePath(): string;
1840
+
1767
1841
  /**
1768
1842
  * Persisted host-session registry.
1769
1843
  *
@@ -2494,4 +2568,4 @@ declare class AgentMemoryStore {
2494
2568
  renderForPrompt(memory: AgentMemoryRead | null): string;
2495
2569
  }
2496
2570
 
2497
- export { AGENT_ROLES, AccountManager, type AddressInfo, type Agent, AgentDeletionService, type AgentMemoryFields, type AgentMemoryOptions, type AgentMemoryRead, AgentMemoryStore, type AgentRole, AgenticMailClient, type AgenticMailClientOptions, type AgenticMailConfig, type ArchiveAndDeleteOptions, type ArchivedEmail, type Attachment, type AttachmentAdvisory, type CachedMessage, CloudflareClient, type CreateAgentOptions, DEFAULT_AGENT_NAME, DEFAULT_AGENT_ROLE, DEFAULT_SESSION_MAX_AGE_MS, DNSConfigurator, type Database, type DeletionReport, type DeletionSummary, DependencyChecker, DependencyInstaller, type DependencyStatus, type DnsRecord, type DnsSetupResult, type DomainInfo, DomainManager, type DomainModeConfig, type DomainPurchaseResult, DomainPurchaser, type DomainSearchResult, type DomainSetupResult, type EmailEnvelope, type EmailRouteAction, type EmailRouteClass, type EmailRouteClassification, type EmailRouteInput, EmailSearchIndex, type FolderInfo, type GatewayConfig, GatewayManager, type GatewayManagerOptions, type GatewayMode, type GatewayStatus, type HostName, type HostSession, type InboundEmail, type InboxEvent, type InboxExpungeEvent, type InboxFlagsEvent, type InboxNewEvent, InboxWatcher, type InboxWatcherOptions, type InstallProgress, type LinkAdvisory, type LocalSmtpConfig, MailReceiver, type MailReceiverOptions, MailSender, type MailSenderOptions, type MailboxInfo, type OutboundCategory, type OutboundScanInput, type OutboundScanResult, type OutboundWarning, type ParsedAttachment, type ParsedEmail, type ParsedSms, PathTraversalError, type PurchasedDomain, REDACTED, RELAY_PRESETS, RelayBridge, type RelayBridgeOptions, type RelayConfig, RelayGateway, type RelayProvider, type RelaySearchResult, SPAM_THRESHOLD, type SafeJoinOptions, type SanitizeDetection, type SanitizeResult, type SearchCriteria, type SearchableEmail, type SecurityAdvisory, type SendMailOptions, type SendResult, type SendResultWithRaw, ServiceManager, type ServiceStatus, type SetupConfig, SetupManager, type SetupResult, type Severity, type SmsConfig, SmsManager, type SmsMessage, SmsPoller, type SpamCategory, type SpamResult, type SpamRuleMatch, StalwartAdmin, type StalwartAdminOptions, type StalwartPrincipal, ThreadCache, type ThreadCacheEntry, type ThreadCacheOptions, type ThreadIdInput, type TunnelConfig, TunnelManager, UnsafeApiUrlError, WARNING_THRESHOLD, type WatcherOptions, assertWithinBase, buildApiUrl, buildInboundSecurityAdvisory, classifyEmailRoute, closeDatabase, createTestDatabase, debug, debugWarn, ensureDataDir, extractVerificationCode, flushTelemetry, forgetHostSession, getDatabase, hostSessionStoragePath, isInternalEmail, isSessionFresh, isValidPhoneNumber, loadHostSession, normalizeAddress, normalizePhoneNumber, normalizeSubject, parseEmail, parseGoogleVoiceSms, recordToolCall, redactObject, redactSecret, resolveConfig, safeJoin, sanitizeEmail, saveConfig, saveHostSession, scanOutboundEmail, scoreEmail, setTelemetryVersion, startRelayBridge, threadIdFor, tryJoin, validateApiUrl };
2571
+ export { AGENT_ROLES, AccountManager, type AddressInfo, type Agent, AgentDeletionService, type AgentMemoryFields, type AgentMemoryOptions, type AgentMemoryRead, AgentMemoryStore, type AgentRole, AgenticMailClient, type AgenticMailClientOptions, type AgenticMailConfig, type ArchiveAndDeleteOptions, type ArchivedEmail, type Attachment, type AttachmentAdvisory, type CachedMessage, CloudflareClient, type CreateAgentOptions, DEFAULT_AGENT_NAME, DEFAULT_AGENT_ROLE, DEFAULT_SESSION_MAX_AGE_MS, DNSConfigurator, type Database, type DeletionReport, type DeletionSummary, DependencyChecker, DependencyInstaller, type DependencyStatus, type DnsRecord, type DnsSetupResult, type DomainInfo, DomainManager, type DomainModeConfig, type DomainPurchaseResult, DomainPurchaser, type DomainSearchResult, type DomainSetupResult, type EmailEnvelope, type EmailRouteAction, type EmailRouteClass, type EmailRouteClassification, type EmailRouteInput, EmailSearchIndex, type FolderInfo, type GatewayConfig, GatewayManager, type GatewayManagerOptions, type GatewayMode, type GatewayStatus, type HostName, type HostSession, type InboundEmail, type InboxEvent, type InboxExpungeEvent, type InboxFlagsEvent, type InboxNewEvent, InboxWatcher, type InboxWatcherOptions, type InstallProgress, type LinkAdvisory, type LocalSmtpConfig, MailReceiver, type MailReceiverOptions, MailSender, type MailSenderOptions, type MailboxInfo, type OutboundCategory, type OutboundScanInput, type OutboundScanResult, type OutboundWarning, type ParsedAttachment, type ParsedEmail, type ParsedSms, PathTraversalError, type PurchasedDomain, REDACTED, RELAY_PRESETS, RelayBridge, type RelayBridgeOptions, type RelayConfig, RelayGateway, type RelayProvider, type RelaySearchResult, SPAM_THRESHOLD, type SafeJoinOptions, type SanitizeDetection, type SanitizeResult, type SearchCriteria, type SearchableEmail, type SecurityAdvisory, type SendMailOptions, type SendResult, type SendResultWithRaw, ServiceManager, type ServiceStatus, type SetupConfig, SetupManager, type SetupResult, type Severity, type SmsConfig, SmsManager, type SmsMessage, SmsPoller, type SpamCategory, type SpamResult, type SpamRuleMatch, StalwartAdmin, type StalwartAdminOptions, type StalwartPrincipal, ThreadCache, type ThreadCacheEntry, type ThreadCacheOptions, type ThreadIdInput, type TunnelConfig, TunnelManager, UnsafeApiUrlError, WARNING_THRESHOLD, type WatcherOptions, assertWithinBase, buildApiUrl, buildInboundSecurityAdvisory, classifyEmailRoute, closeDatabase, createTestDatabase, debug, debugWarn, ensureDataDir, extractVerificationCode, flushTelemetry, forgetHostSession, getDatabase, getOperatorEmail, hostSessionStoragePath, isInternalEmail, isSessionFresh, isValidPhoneNumber, loadHostSession, normalizeAddress, normalizePhoneNumber, normalizeSubject, operatorPrefsStoragePath, parseEmail, parseGoogleVoiceSms, recordToolCall, redactObject, redactSecret, resolveConfig, safeJoin, sanitizeEmail, saveConfig, saveHostSession, scanOutboundEmail, scoreEmail, setOperatorEmail, setTelemetryVersion, startRelayBridge, threadIdFor, tryJoin, validateApiUrl };