export type Role = "system" | "user" | "assistant" | "tool"; export interface ToolCall { id?: string; type: string; function: { name: string; arguments: string; }; } export interface Message { role: Role; content: string; tool_calls?: ToolCall[]; tool_call_id?: string; } export interface ProviderConfig { provider: string; model: string; base_url?: string; enable_tools?: boolean; session_id?: string; } export interface FileEntry { name: string; kind: "file" | "dir"; } export interface SearchResult { path: string; matches: number; } export interface CommandOutput { stdout: string; stderr: string; exit_code: number; } export type WsRequest = | { type: "chat"; messages: Message[]; config: ProviderConfig; } | { type: "cancel"; } | { type: "permission_response"; request_id: string; approved: boolean; always_allow: boolean; }; export type WsResponse = | { type: "token"; content: string } | { type: "update"; messages: Message[] } | { type: "session_id"; session_id: string } | { type: "error"; message: string } | { type: "permission_request"; request_id: string; tool_name: string; tool_input: Record; }; // Re-export API client types for convenience export type { Message as ApiMessage, ProviderConfig as ApiProviderConfig, FileEntry as ApiFileEntry, SearchResult as ApiSearchResult, CommandOutput as ApiCommandOutput, WsRequest as ApiWsRequest, WsResponse as ApiWsResponse, };