/** * §9.9's stop sentences, in one place — the list, the fire-time gate and the * stopped run row all print them and have to match byte for byte. */ import { type AutomationRecord } from "@vendoai/core"; import type { Sponsorship } from "./sponsorship.js"; /** What to CALL an automation in a sentence a person reads. A record has no * name field — it is a task, so the task is the name. Capped, because this * goes inside a sentence and a goal prompt can be a paragraph. * * A goal's prompt is already a person's words; a step's tool is an IDENTIFIER, * and design §3's voice law is that no surface prints one at someone — so it * arrives through the same prettifier chrome titles a tool chip with. */ export declare const automationName: (record: AutomationRecord) => string; /** The stopped shape three surfaces read: the reason, and the one sentence that * goes with it. Built here so the list, the gate and the card cannot drift. */ export declare const stopFor: (reason: NonNullable, record: AutomationRecord) => { reason: NonNullable; summary: string; }; /** §9.9 — what a run says when the identity checks could not ANSWER (the host's * memberships callback threw). The raw failure is a host system's error text — * a DSN, a stack, a driver message — and the run row is rendered verbatim to * consumers, so it says what happened and nothing about how. The raw detail * goes to the audit row, which is where an operator looks. */ export declare const IDENTITY_UNAVAILABLE: (name: string) => string; /** The fire-time miss the runner map cannot resolve. LOUD by construction: it * lands as a FAILED run row naming the name nobody registered, because a * fallback brain would run someone's automation through an agent they never * named and nobody would ever find out. */ export declare const NO_SUCH_RUNNER: (name: string) => string; /** * The one phrase every read an automation may make is named by, together. * * Reads are the bulk of any automation's surface and the least interesting thing * about it: naming them one by one is what turned a person's yes to a JOB into a * wall of tool names they could not act on (live 2026-08-18 — three of the four * follow-up asks were reads). They still get granted, they are simply not worth a * line each. Deliberately generic and deliberately not a list: it says what the * automation can SEE, in the words someone would use about their own account, * with no tool identifier anywhere near it. */ export declare const READ_ONLY_POWER = "Read-only access to your data"; /** * What a person is told an automation will hold, in the order they should read * it: the tools that DO something, each by its own human title, then every read * folded into {@link READ_ONLY_POWER}. * * Titles, never identifiers (design §3's voice law) — a descriptor with no title * falls back to its name, which is the same fallback every other consent surface * makes. The list is what rides on the arming approval (`ApprovalRequest.powers`), * so it is a plain array of finished phrases: every surface renders it verbatim * and none of them has to know this rule. */ export declare const powerTitles: (powers: ReadonlyArray<{ descriptor: { name: string; title?: string; risk: string; }; }>) => string[]; //# sourceMappingURL=messages.d.ts.map