/** * Startup crash nudge. * * One rate-limited status line saying unreported crash signatures exist. * **Nothing is ever transmitted by this piece** — it reads local state only and * points at `gjc crash report`, which has its own consent flow. * * Honest default statement: this is on by default and it *does* change startup * output by design (one bounded line, at most once per 24h per agent dir). * `crashReport.nudge: false` disables it. */ import { type CrashIndex, type CrashStatePaths } from "./index-store"; export declare const CRASH_NUDGE_INTERVAL_MS: number; export interface CrashNudgeGateInput { /** The `crashReport.nudge` setting. */ enabled: boolean; /** True only for a real interactive TUI launch. */ interactive: boolean; /** The `startup.quiet` setting. */ quiet: boolean; } /** * Pure gate for the launch wiring. Print mode, SDK/ACP hosts, workers, daemons * and `--version`/`--help` never reach interactive launch, so gating on the * interactive surface is what suppresses them. */ export declare function crashNudgeGate(input: CrashNudgeGateInput): boolean; export interface CrashNudgeDecision { show: boolean; message?: string; } /** * Decide whether to nudge from the compacted index alone. * * Fires when an unreported, unacknowledged signature gained records since * `lastNudgedAt`, at most once per 24h. Acknowledgement is explicit (the * dismiss action in `gjc crash report`); an ignored line never counts as one. */ export declare function decideCrashNudge(index: CrashIndex, now: number): CrashNudgeDecision; export interface CrashNudgeDeps { paths: CrashStatePaths; index: CrashIndex; now?: () => Date; } /** * Emit the nudge through the caller's status surface and persist the rate-limit * stamp through the journal, so a rebuilt index cannot reset it within the * journal window. Never throws. */ export declare function maybeShowCrashNudge(showStatus: (message: string) => void, deps: CrashNudgeDeps): Promise;