import type { Theme } from "@earendil-works/pi-coding-agent"; import type { CodePreviewSettings } from "pi-code-previews"; import type { Component, Focusable, TUI } from "@earendil-works/pi-tui"; import type { FabricAgentMessageDelivery } from "../main-agent.js"; import type { FabricActorDelivery, FabricActorHostEvent } from "../actors/types.js"; import { type FabricThinking } from "../thinking.js"; import { type ModelSource } from "./model-picker.js"; import type { FabricAgentTranscript } from "./transcript.js"; import type { FabricDashboardSnapshot, FabricUiActor, FabricUiAgent } from "./types.js"; export interface FabricDashboardMessageTarget { id: string; name: string; kind: "main" | "peer" | "agent" | "actor" | "meshParticipant"; } type FabricTranscriptTarget = FabricUiAgent | FabricUiActor; interface FabricDashboardKeybindings { matches(data: string, keybinding: "app.tools.expand"): boolean; getKeys(keybinding: "app.tools.expand"): string[]; } export declare class FabricDashboard implements Component, Focusable { readonly tui: TUI; readonly theme: Theme; readonly snapshot: () => FabricDashboardSnapshot; readonly done: () => void; focused: boolean; private pane; private overviewView; private topologyView; private phaseIndex; private entityIndex; private runIndex; private selectedRunId; private runSelectionTouched; private selectedEntityId; private filter; private phaseSelectionTouched; private selectedPhaseId; private detailId; private detailScroll; private detailMaxScroll; private transcriptPageAnchor; private transcriptToolsExpanded; private detailSelectionRestore; private detailView; private transcriptFollowing; private readonly transcriptMarkdown; private readonly highlightInvalidate; private mode; private picker; private editor; private editorActorName; private agentMessageTarget; private pendingStop; private readonly modelSource; private readonly claudeModelSource; private readonly onAgentSteer; private readonly onAgentFollowUp; private readonly onAgentStop; private readonly onTargetMessage; private readonly agentTranscript; private readonly actorTranscript; private readonly loadOlderTranscript; private readonly loadNewerTranscript; private readonly loadLatestTranscript; private readonly onActorModel; private readonly onActorThinking; private readonly onActorEvents; private readonly onActorDeliveryPolicy; private readonly onGlobalDeliveryPolicy; private readonly onActorTools; private readonly actorDefaultTools; private readonly onClearMessages; private readonly onActorInstructions; private readonly onGlobalInstructions; private readonly onImportActor; private readonly onExportActor; private readonly onRemoveGlobalActor; private readonly codePreviewSettings; private readonly keybindings; private pickerActorName; constructor(tui: TUI, theme: Theme, snapshot: () => FabricDashboardSnapshot, done: () => void, options?: { modelSource?: ModelSource; codePreviewSettings?: CodePreviewSettings; keybindings?: FabricDashboardKeybindings; claudeModelSource?: ModelSource; onAgentSteer?: (agentId: string, message: string) => void; onAgentFollowUp?: (agentId: string, message: string) => void; onAgentStop?: (agentId: string) => void; onTargetMessage?: (target: FabricDashboardMessageTarget, message: string, delivery: FabricAgentMessageDelivery) => void; agentTranscript?: (agent: FabricUiAgent, followLatest: boolean) => FabricAgentTranscript; actorTranscript?: (actor: FabricUiActor, followLatest: boolean) => FabricAgentTranscript; loadOlderTranscript?: (target: FabricTranscriptTarget) => boolean; loadNewerTranscript?: (target: FabricTranscriptTarget) => boolean; loadLatestTranscript?: (target: FabricTranscriptTarget) => boolean; onActorModel?: (actorId: string, model: string | undefined) => void; onActorThinking?: (actorId: string, thinking: FabricThinking | undefined) => void; onActorEvents?: (actorId: string, events: FabricActorHostEvent[]) => void; onActorDeliveryPolicy?: (actorId: string, delivery: FabricActorDelivery, triggerTurn: boolean) => void; onGlobalDeliveryPolicy?: (actorId: string, delivery: FabricActorDelivery, triggerTurn: boolean) => void; onActorTools?: (actorId: string, tools: string[]) => void; actorDefaultTools?: string[]; onClearMessages?: (actorId: string) => void; onActorInstructions?: (actorId: string, instructions: string) => void; onGlobalInstructions?: (globalActorId: string, instructions: string) => void; onImportActor?: (globalActorId: string) => void; onExportActor?: (actorId: string) => void; onRemoveGlobalActor?: (globalActorId: string) => void; }); handleInput(data: string): void; render(width: number): string[]; invalidate(): void; dispose(): void; private transcriptTarget; private hasTranscript; private transcriptFor; private matchesTranscriptToolToggle; private transcriptToolToggleHint; private messageTarget; private canMessage; private openAgentMessageEditor; private closeAgentMessageEditor; private requestAgentStop; private renderAgentMessageEditor; private renderHelp; private modelSourceForActor; private openModelPicker; private openThinkingPicker; private openDeliveryPicker; private openEventsPicker; private openToolsPicker; private closeModelPicker; /** * Open the embedded multi-line editor for an actor's default instruction. * Matches Pi's editor dialog convention (Enter submit, Shift+Enter newline, * Esc/Ctrl+C cancel) so a steering user edits the persona with the same * muscle memory as the chat input. Works for both live project actors and * global templates; the submit routes to the scope-appropriate callback. */ private openInstructionsEditor; private closeInstructionsEditor; private renderPicker; private renderInstructionsEditor; private projectMesh; private renderOverview; private overviewActionHint; private renderPhasePanel; private renderEntityPanel; private renderDetail; private transcriptLines; private transcriptToolLines; private transcriptToolAudit; private transcriptStructuredLines; private markdownTranscriptLines; private markdownLines; private detailActionHint; private detailLines; private syncEntitySelection; private selectRun; private syncPhase; private resetSelection; private pinDetailSelection; private closeDetail; private renderNarrowDetail; private renderNarrowFallback; private topBorder; private middleBorder; private bottomBorder; private row; } export {}; //# sourceMappingURL=dashboard.d.ts.map