/** * Gateway-minted sender identities. * * Three kinds of thing start a turn on a thread: another thread, a transport * (user/webhook), and the gateway itself — a scheduled trigger firing (task 120) * or a background job finishing (task 139). Only the first is repliable. * * The gateway names its own senders `scheme:id`, which collides with the shape * of a federation address (`gateway:thread`). Task 110's `isAgentSender` read any * colon as federation, so `job:job_a1b2` and `schedule:nightly` were classified as * agents and the recipient was told to reply to them — the exact phantom-thread * hint task 110 exists to suppress, reintroduced by the sender names tasks 120 and * 139 chose. Both task docs claimed the opposite; the claim was never tested. * * The scheme list lives here, in a module that imports nothing, so the sites that * MINT these names and the predicate that CLASSIFIES them cannot drift apart: * adding a scheme without making it non-repliable is not expressible. */ export declare const AUTOMATED_SENDER_SCHEMES: readonly ["job", "schedule", "stall"]; export type AutomatedSenderScheme = (typeof AUTOMATED_SENDER_SCHEMES)[number]; /** Mint the sender identity for a gateway-owned, non-repliable sender. */ export declare function automatedSender(scheme: AutomatedSenderScheme, id: string): string; /** * Marker prefixed to a stall-mitigation nudge (task 164) so the chat can drop it * (task 174). Karl does not want the gateway's prods at a stalled thread drawn in * his conversation — they are the gateway talking to itself, and at ~2/hour on a * working thread they had become the bulk of the "user" messages on the thread. * * It lives HERE, beside the scheme list, for the same reason that list does: the * site that mints it and the predicate that recognises it must not drift. The * widget cannot import (it is a served string of plain JS), so it hard-codes the * pattern — `tests/gateway/widget-stall-nudge.test.ts` drives this constant * through the widget's own test to keep the two honest, the arrangement task 173 * used for the job/schedule markers. * * The model still reads it, which is the point: unmarked, the nudge is an * imperative in the user's voice, indistinguishable from Karl typing "Continue." */ export declare const STALL_NUDGE_MARKER = "[Stall nudge]"; /** * Is this sender the gateway itself rather than a thread? * * Checked BEFORE the federation-address rule, since these names share its shape. */ export declare function isAutomatedSender(senderName: string): boolean; //# sourceMappingURL=senders.d.ts.map