import { type ResolvedConfig } from "../types.js"; /** The coding tools a handoff can be opened in. */ export declare const TOOLS: Record; /** * Where two agents working one issue leave each other notes. * * In the issue's own folder, beside the document and the pixels, because it is * about this issue and it is as disposable as they are. A tree is a poor place * to consult through: the reviewer can see WHAT changed and not why, and "why" * is the whole of what a second opinion is for. */ export declare const CONSULT_FILE = "consult.md"; /** * What to say to an agent that is not working alone, or nothing when it is. * * Deliberately two sentences rather than a protocol document. lookout is not * running a meeting: it hands over an issue, and when it hands the same issue * to a second tool it says so and points at the note. Everything else about how * to fix code belongs to the tool and to the repository's own rules, which the * issue document already lists. */ export declare function consultBrief(tools: string[], turn: number, notes: string): string; /** One coding tool the page can hand an issue to. */ export interface ToolChoice { key: string; label: string; bin: string; installed: boolean; /** The tool's own mark, as inline SVG. Rendered as markup, not as text. */ mark: string; } /** The tools, each with whether its binary is actually here. */ export declare function toolsAvailable(resolved?: ResolvedConfig): Promise; export interface LaunchResult { issue: string; tool: string; toolLabel: string; /** The handoff document, absolute. */ handoff: string; /** What to run, so a caller can copy it when launching is not possible. */ command: string; launched: boolean; /** Why it was not launched, when it was not. */ reason?: string; } /** * Write the handoff and, where the platform allows it, open it in the tool * whose turn it is, in a new terminal. Reports honestly when it cannot: a * button that silently does nothing is worse than one that hands you the * command. * * `tools` is a list because the page's picker is a selector. One name is the * whole story and behaves exactly as it always did. Two mean they consult, and * consulting is turns rather than a committee: `turn` indexes the list, so the * second agent opens on a tree the first has already worked and a note saying * what it did. Nothing here decides when a turn is over; the queue does, on the * only evidence there is that one was spent. */ export declare function launchHandoff(resolved: ResolvedConfig, issueId: string, tools: string[], turn?: number): Promise;