import { AgentSessionEngine } from '@tutti-os/agent-activity-core'; import { A as AgentConversationRailRuntimePort } from './agentConversationRailContracts.d-BEVeXdqO.js'; import { A as AgentGUIConversationActivityActivation, f as AgentGUIConversationSummary } from './conversation-activity-projection.d-CunrlV7j.js'; import './agentConversationTitleProjection.d-DlZ1F_oF.js'; interface ConversationRailSectionPageState { hasMore: boolean; isLoading: boolean; nextCursor: string | null; totalCount: number; } interface ConversationRailProjectSummary { createdAtUnixMs?: number; id: string; label: string; lastUsedAtUnixMs?: number; path: string; pinnedAtUnixMs: number; sectionKey?: string; updatedAtUnixMs?: number; } interface ConversationRailSectionMembership { id: string; kind: "conversations" | "pinned" | "project"; project: ConversationRailProjectSummary | null; sessionIds: readonly string[]; } interface ConversationRailQueryState { pending: boolean; reconcilingSessionIds: readonly string[]; resolvedScopeKey: string | null; sectionPageStates: ReadonlyMap; sections: ConversationRailSectionMembership[] | null; } interface AgentGUIConversationRailQuerySnapshot { agentTargetId: string; railSearch: { enabled: boolean; failed: boolean; hasMore: boolean; loadingMore: boolean; pending: boolean; resolvedQuery: string; sessionIds: readonly string[]; }; runtimeSectionsEnabled: boolean; runtimeRailFailed: boolean; runtimeRailMemberships: ConversationRailQueryState["sections"]; runtimeRailReconcilingSessionIds: readonly string[]; runtimeRailResolvedScopeKey: string | null; runtimeRailSectionsPending: boolean; sectionPageStates: ConversationRailQueryState["sectionPageStates"]; } interface ConversationRailQueryScope { conversationFilter: { kind: "all"; } | { agentTargetId: string; kind: "agentTarget"; }; userProjects: readonly { id: string; }[]; } interface AgentGUIConversationActivityControllerInput { available: boolean; conversations: readonly AgentGUIConversationSummary[]; deletedSessionIds?: Readonly>; identityKey: string; scopeKey: string; } interface AgentGUIConversationActivityControllerSnapshot { available: boolean; activation: AgentGUIConversationActivityActivation | null; conversationCache: ReadonlyMap; enabled: boolean; identityKey: string | null; scopeKey: string | null; } interface AgentGUIConversationActivityController { getSnapshot: () => AgentGUIConversationActivityControllerSnapshot; subscribe: (listener: () => void) => () => void; configure: (input: AgentGUIConversationActivityControllerInput) => void; toggle: () => void; } type ConversationRailQueryRuntime = Pick; interface AgentGUIConversationRailQueryControllerInput { engine: AgentSessionEngine; getActiveConversationId(): string | null; runtime: ConversationRailQueryRuntime; scheduler?: { schedule(delayMs: number, task: () => void): { cancel(): void; }; }; sectionPageSize?: number; sectionRefreshLimitMax?: number; workspaceId: string; } interface AgentGUIConversationRailQueryController { activityController: AgentGUIConversationActivityController; attach(): () => void; configure(scope: ConversationRailQueryScope): void; getSnapshot(): AgentGUIConversationRailQuerySnapshot; isInteractionLocked(): boolean; loadMoreSearchResults(): void; loadMoreSectionConversations(section: { id: string; }): void; refresh(): Promise; retrySearchResults(): void; setSearchQuery(value: string): void; subscribe(listener: (snapshot: AgentGUIConversationRailQuerySnapshot) => void): () => void; } declare function createAgentGUIConversationRailQueryController(input: AgentGUIConversationRailQueryControllerInput): AgentGUIConversationRailQueryController; export { type AgentGUIConversationRailQueryController, type AgentGUIConversationRailQueryControllerInput, type AgentGUIConversationRailQuerySnapshot, type ConversationRailQueryRuntime, type ConversationRailQueryScope, createAgentGUIConversationRailQueryController };