export interface BoxRow { id: string; thread_id: string; seq: number; first_task_id: string; mid_task_id: string; last_task_id: string; task_count: number; summary: string | null; source_tokens: number; summary_tokens: number | null; created_at: string; } export interface BoxSummary { boxId: string; seq: number; taskCount: number; sourceTokens: number; summary: string | null; previewFirst: string; previewMid: string; previewLast: string; createdAt: string; } export interface BoxResponse { id: string; threadId: string; seq: number; firstTaskId: string; lastTaskId: string; taskCount: number; sourceTokens: number; summaryTokens: number | null; summary: string | null; previewFirst: string; previewMid: string; previewLast: string; createdAt: string; } export interface ThreadMessage { id: string; role: 'user' | 'assistant'; content: string; timestamp: string; metadata: Record | null; } export interface ContextBuildParams { maxTokens: number; hotzoneRatio: number; warmzoneRatio: number; } export interface ContextBuildResponse { hot: ThreadMessage[]; warm: BoxSummary[]; hotTokens: number; warmTokens: number; hotOverflow: boolean; totalBudget: number; config: { maxTokens: number; hotzoneRatio: number; warmzoneRatio: number; }; } export interface InsertBoxData { id: string; seq: number; firstTaskId: string; midTaskId: string; lastTaskId: string; taskCount: number; summary: string | null; sourceTokens: number; summaryTokens: number | null; createdAt: string; } export interface CreateBoxParams { seq: number; firstTaskId: string; midTaskId: string; lastTaskId: string; taskCount: number; summary?: string | null; sourceTokens: number; summaryTokens?: number | null; }