export interface ChatResponse { response: string confidence: number source: 'direct' | 'chained' | 'corrected' | 'curiosity' | 'fallback' explanation: string chain: ChainResult | null corrected_answer: string | null elapsed_ms: number } export interface ChainResult { success: boolean answer: string original_question: string n_hops: number steps: ChainStep[] } export interface ChainStep { sub_question: string sub_answer: string resolved_question: string } export interface Metrics { model: { D: number n_traces: number n_meta: number vocab_size: number context_window: number theoretical_capacity_log2: number } memory: { mean_weight: number min_weight: number lsh_size: number } conversation: { turns: number n_corrections: number known_questions: number } long_context: { n_chunks: number n_tokens: number n_local_tokens: number chunk_size: number local_window: number max_context_tokens: number top_k_chunks: number } | null config: { kernel_radius: number kernel_min_weight: number temperature: number model_type: string } } export interface Stats { D: number n_traces: number n_meta: number vocab_size: number context_window: number theoretical_capacity_log2: number turns: number n_corrections: number } export interface TeachResponse { success: boolean message: string tokens_written: number explanation: string } export interface MemoryTrace { id: number weight: number meta: boolean tag: string age: number } export interface MemorySamples { traces: MemoryTrace[] total: number } export interface ChatMessage { id: string role: 'user' | 'palimpseste' text: string confidence?: number source?: string explanation?: string chain?: ChainResult | null elapsed_ms?: number timestamp: number }