/** * Notification delegation policy. * * Root cause of ~50 of ~59 false delegations in one 2.3h window: a single * "Bank of America fraud alert" notification re-fired the pipeline over and * over (no dedup) and the gate's ALWAYS-PASS list included "notification * needing action" and "important email or notification". So one scam-shaped * alert delegated to the smart actor dozens of times. * * Policy: notifications DO NOT delegate to the smart actor. They still land in * the capture store and appear in the proactive context block (ambient * awareness) — they just never trigger the gate/actor on their own. If a future * build opts notifications back in (KOI_NOTIFICATIONS_DELEGATE=1), this module * is the enforcement point: bank/fraud/scam/marketing/system classes are hard * blocked, and identical alerts are deduped within a cooldown so one alert can * NEVER fire repeatedly. */ /** One identical (title+body) alert may delegate at most once per this window. */ export declare const NOTIFICATION_DEDUP_WINDOW_MS: number; /** True when this notification belongs to a permanently non-delegatable class. */ export declare function isSuppressedNotification(app: string, title: string, body: string): boolean; /** * Stateful dedup of identical notifications within a cooldown window. Returns * true only the FIRST time a given (normalized title+body) is seen in the * window — so a re-firing alert delegates at most once per window. */ export declare class NotificationDedup { private seen; isFirstWithinWindow(title: string, body: string, ts?: number): boolean; private prune; } /** * Whether a notification may delegate to the smart actor. DEFAULT: false — * notifications are context-only. When `enabled` (opt-in), suppressed classes * and repeat-fires (dedup) are still blocked. */ export declare function notificationMayDelegate(n: { app: string; title: string; body: string; ts: number; }, dedup: NotificationDedup, enabled: boolean): boolean;