/** SDK-owned platform module. This implementation is maintained in goodvibes-sdk. */ /** * notifyCompletion - Emit terminal bell and/or desktop notification on turn completion. * Notification errors are reported and never crash the app. * * @param title - Notification title * @param message - Notification body * @param durationMs - Turn duration in milliseconds * @param options - Optional overrides (see {@link NotifyOptions}). */ /** Escape a string for safe interpolation into an AppleScript string literal. */ export declare function escapeAppleScript(s: string): string; export interface NotifyOptions { /** * Bypass test suppression for this call. Intended only for tests that * exercise the notification shell-out layer itself (e.g. asserting the * notify-send/osascript invocation or the terminal bell byte). Every * other caller should leave this unset. */ force?: boolean; } /** * True when this call must not reach an external side effect: real desktop * notifications (notify-send/osascript) and real webhook HTTP deliveries must * never fire from an automated test run and spam whoever's desktop or endpoint * the tests happen to execute on. * * Note this governs only the external shell-out/HTTP layer. The in-process * terminal bell (a single \x07 byte written to this process's own stdout) has * no external side effect and is NOT gated by this, see {@link notifyCompletion}. * * Suppressed when either: * - `NODE_ENV === 'test'` (set automatically by `bun test`), or * - `GOODVIBES_SUPPRESS_NOTIFY` is set to a truthy value (explicit * override for harnesses that don't run under NODE_ENV=test). * * `options.force: true` bypasses suppression entirely, the one sanctioned * escape hatch, for tests that specifically exercise this shell-out layer. */ export declare function isNotifySuppressed(force?: boolean): boolean; export declare function notifyCompletion(title: string, message: string, durationMs: number, options?: NotifyOptions): void; //# sourceMappingURL=notify.d.ts.map