import type { SessionMeta, SessionEvent } from '../../../api/types/session' export interface ListParams { days?: number project?: string tool?: string skill?: string q?: string limit?: number offset?: number } export interface ListResponse { total: number items: SessionMeta[] } const API_BASE = import.meta.env.VITE_API_BASE ?? '' function buildQuery(params: Record): string { const entries = Object.entries(params).filter(([, v]) => v !== undefined && v !== '' && v !== null) if (entries.length === 0) return '' return '?' + new URLSearchParams(entries as [string, string][]).toString() } export async function listSessions(params: ListParams): Promise { const res = await fetch(`${API_BASE}/api/sessions${buildQuery(params as Record)}`) if (!res.ok) throw new Error(`listSessions failed: ${res.status}`) return res.json() } export async function getSession(id: string): Promise<{ meta: SessionMeta; events: SessionEvent[] }> { const res = await fetch(`${API_BASE}/api/sessions/${encodeURIComponent(id)}`) if (!res.ok) throw new Error(`getSession failed: ${res.status}`) return res.json() }