/** * daemon/dialogs.ts — the modal nobody is there to click. * * WHY THIS EXISTS. Everything else that watches a managed session watches its * TERMINAL: the pane's text, the transcript, the manager's own history. A macOS * modal belongs to a different process and appears in none of them, so a * session can sit blocked behind one for hours while every signal reads * healthy — working, goal armed, screen unchanged for a plausible reason. An * operator discovered this the only way it can be discovered without this file: * by finding the dialog by hand and clicking it a hundred times. * * WHAT IT WILL AND WILL NOT PRESS. Only prompts of the "may this app do the * obvious thing it was just asked to do" kind, from a fixed list of system * agents, with a fixed list of button titles. Anything asking for a credential * is excluded by name and by construction: SecurityAgent is not on the list, * and no button title here is one that a password sheet offers. The rule is * that this may only re-consent to something the operator already set in * motion; it may never grant something new. */ /** A dialog seen on screen, flattened to the few facts worth acting on. */ export interface SeenDialog { process: string; title: string; buttons: string[]; } /** Every dialog currently on screen that belongs to an answerable agent. */ export declare function listDialogs(): SeenDialog[]; /** * Answer one dialog, and say which button was pressed. * * Returns null when nothing was pressed, which includes the case of a dialog * offering none of the safe titles — an unrecognised prompt is left alone and * reported rather than guessed at, because the whole value of a closed list is * lost the moment something falls back to "press the default". */ export declare function answerDialog(d: SeenDialog): string | null; //# sourceMappingURL=dialogs.d.ts.map