/** * B7 S6 — Cross-Staff consultation (council mode). * * Pure helper that, given the current Staff member's decision context, * proposes which OTHER Staff members should be consulted before finalising. * Emits a structured consultation plan — the consultation itself is NOT * executed here. Downstream consumers (Librarian conflict path, Attendant * relevance filter, Archivist reasoning pass) can choose to act on the plan * or record it for observability. * * Follows the A4/A5 pattern: propose, don't execute. Deterministic, no LLM, * no I/O. Fully unit-testable. */ import type { StaffComponent } from '../lib/staffEventEmitter'; export type CouncilConsultationBasis = 'conflict_resolution' | 'relevance_check' | 'reasoning_proposal_review' | 'escalation_context' | 'none'; export interface CouncilConsultation { from: StaffComponent; to: StaffComponent; question: string; basis: CouncilConsultationBasis; /** 0-100 — the helper's confidence that this consultation is useful. */ confidence: number; /** Optional hint the consulted Staff member can use to scope its response. */ topicHint: string | null; } export interface CouncilConsultationPlan { consultations: CouncilConsultation[]; note: string; outcome: 'no_context' | 'no_consultations' | 'consultations_proposed' | 'budget_capped'; budgetMax: number; } export interface PlanCouncilConsultationInput { /** Which Staff component is asking for help. */ from: StaffComponent; /** Short description of what that Staff member is trying to decide. */ task: string; /** Optional detail fields — the more context, the better the proposals. */ context?: { hasConflict?: boolean; conflictEntityKey?: string | null; confidenceSpread?: number | null; lowConfidenceCount?: number; relevanceCheckTopic?: string | null; reasoningProposalAction?: 'compress' | 'demote' | 'flag_drift' | 'review_stale' | null; pendingEscalationKey?: string | null; }; /** Max consultations allowed in this plan (default 2). */ budget?: number; } export declare const COUNCIL_DEFAULT_BUDGET = 2; export declare const COUNCIL_MIN_CONFIDENCE = 50; /** * Pure function. Decides whether the calling Staff member should consult one * or more peer Staff members before finalising, and — if so — proposes a * structured plan. Never calls another Staff member. Never hits I/O. * * Consultation rules: * - Librarian with a conflict → consult Attendant for relevance, * consult Archivist when the cluster has high confidence spread. * - Attendant doing relevance filtering → consult Librarian for * source-reliability context when a clear topic is present. * - Attendant with low-confidence injection → consult Archivist for stale * review advice. * - Archivist emitting a reasoning proposal → consult Librarian for * conflict history on the targeted cluster. * - Resolutionist with a pending escalation → consult Archivist for * reasoning-proposal context. */ export declare function planCouncilConsultation(input: PlanCouncilConsultationInput): CouncilConsultationPlan; //# sourceMappingURL=council.d.ts.map