type PiEvents = 'agent_start' | 'turn_end' | 'agent_end' | 'agent_settled' | 'session_shutdown' | 'session_start' | 'input' | 'tool_execution_start' | 'tool_execution_end' | 'tool_execution_update' | 'message_update'; /** Universal upper bound for an unfocused broker parked without runnable work. */ export declare const UNATTENDED_PARK_MS: number; /** Production cadence for the bounded-release clock. A shorter test bound also * shortens the cadence, so the full-tier regression need not sleep for a minute. */ export declare const PARK_POLL_MS: number; interface PiLike { on: (event: PiEvents, handler: (event: any, ctx: any) => void | Promise) => void; sendUserMessage: (content: string, options?: { deliverAs?: 'steer' | 'followUp'; }) => void; /** Custom-message injection — used for the 'nextTurn' hold (queued silently, * injected alongside the NEXT user message, never triggers a turn). */ sendMessage: (message: { customType: string; content: string; display?: boolean; details?: Record; }, options?: { deliverAs?: 'steer' | 'followUp' | 'nextTurn'; triggerTurn?: boolean; }) => void; } /** The nudge text for a crossed band, specialized to the node's (mode, * lifecycle) persona + how far along the escalation it is. `crtr node yield` is * the single "keep going past this window" verb for every persona: it refreshes * the node into a clean window, MODE-PRESERVING — a base node stays base, * continuing fresh against its goal and its note. `--promote` is a separate, * explicit opt-in (never steered here as auto-behavior) for when what remains * has genuinely grown into phases to delegate across children — so no persona * is ever steered at a bare `node promote` (which framed promotion as a heavy * "become an orchestrator" step and bred yield-avoidance). * * - orchestrator (terminal OR resident): checkpoint context/roadmap.md, then * yield (it already has a roadmap to bring current first). * - resident/base (root conversation): yield to continue fresh if the chat is * growing into a job, else wrap up — a root can simply end. * - terminal/base (worker): yield to continue if work remains, or `push final` * when close. * * The wording strengthens with depth: gentle < 150k → firm < 185k → pushy at/ * past 185k, where drifting further risks an overflow. */ export declare function steerNote(at: number, lifecycle: string, mode: string): string; /** * Register the canvas turn and settlement handlers on `pi`. * * Returns immediately when CRTR_NODE_ID is absent — the extension is fully * inert in a non-canvas pi session. Safe to call multiple times (each call * re-registers on the same `pi` instance, so it should only be called once * per node lifecycle, matching how pi loads extensions). */ export declare function registerCanvasStophook(pi: PiLike): void; export default registerCanvasStophook;