/** * Confer — mandatory 3-agent quorum SSOT (researcher / architect-tools / code-review). * Triggered automatically at synthesis checkpoint; records consult receipts + plan todos. */ import { type SynthesisConsultReceipt } from './synthesis-consult-receipt.js'; import { InProcessConferHost, SessionConferHost, type ConferHostPort, type ConferHostSeat } from './confer-host.js'; export { InProcessConferHost, SessionConferHost }; export type { ConferHostPort, ConferHostSeat }; export declare const CONFER_AGENTS: readonly ["researcher", "architect-tools", "code-review"]; export interface ConferConfig { enabled: boolean; on_synthesis: boolean; } export interface ConferCheckpointState { version: 1; sessionId: string; triggeredAt: string; dueReason: string | null; status: 'pending' | 'in_progress' | 'completed' | 'failed'; completedAgents: string[]; lastError?: string; } export interface ConferAgentResult { todoId: string; subagent: string; outputText: string; receiptRecorded: boolean; todoCompleted: boolean; verdict: SynthesisConsultReceipt['verdict'] | null; error?: string; } export interface ConferQuorumResult { status: 'completed' | 'partial' | 'skipped' | 'failed' | 'pending'; agents: ConferAgentResult[]; message: string; } export declare function conferCheckpointPath(projectRoot?: string): string; export declare function defaultConferConfig(): ConferConfig; /** Fixture PASS is a test harness. Live orchestrate-task and XRAY_CONFER_FIXTURE cannot reach it. */ export declare const CONFER_FIXTURE_UNREACHABLE = "Confer fixture is unreachable outside tests"; export declare function conferFixtureAllowed(): boolean; /** A suit profile does not enable Confer. Missing confer key stays off, including strict. */ export declare function loadConferConfig(projectRoot?: string): ConferConfig; export declare function isConferEnabled(projectRoot?: string): boolean; export declare function loadConferCheckpoint(projectRoot?: string): ConferCheckpointState | null; export declare function saveConferCheckpoint(state: ConferCheckpointState, projectRoot?: string): string; export declare function triggerConferCheckpoint(sessionId: string, dueReason: string | null, projectRoot?: string): ConferCheckpointState; export declare function isConferPending(projectRoot?: string, sessionId?: string | null): boolean; export declare function buildConferPrompt(subagent: string, todoTask: string, collocatedText: string, dueReason: string | null): string; /** Map confer subagent → MCP server + tool. */ export declare function conferAgentMcpTarget(subagent: string): { server: string; tool: string; args: (prompt: string, projectRoot: string) => Record; }; export declare function invokeConferAgent(subagent: string, prompt: string, projectRoot?: string, host?: ConferHostPort, sessionId?: string, todoId?: string, dueReason?: string | null): Promise; export declare function applyConferConsultResult(todoId: string, subagent: string, sessionId: string, outputText: string, projectRoot?: string): ConferAgentResult; export declare function buildFixtureConferOutput(subagent: string, verdict?: SynthesisConsultReceipt['verdict'], noLlm?: boolean): string; export declare function writeFixtureConferReceipt(todoId: string, subagent: string, sessionId: string, projectRoot?: string, verdict?: SynthesisConsultReceipt['verdict'], noLlm?: boolean): ConferAgentResult; export declare function runConferQuorum(projectRoot: string | undefined, sessionId: string, options?: { collocatedText?: string; dueReason?: string | null; fixture?: boolean; /** Used only when fixture is true. Defaults to PASS. FAIL and UNREVIEWED do not complete the todo. */ fixtureVerdict?: SynthesisConsultReceipt['verdict']; /** Fixture text is the real no-model localConferVote (UNREVIEWED), not a hardcoded PASS. */ fixtureNoLlm?: boolean; /** Used only when fixture is true. Replaces the generated fixture text for every consult. */ fixtureOutput?: string; /** Live path. Default writes an ask for the wearing TUI and does not spawn a server. */ host?: ConferHostPort; }): Promise; export declare function formatConferQuorumReport(result: ConferQuorumResult): string;