import { api } from './client' export type ActivityStatsRange = '7d' | '30d' | 'all' export type DailyActivity = { date: string messageCount: number sessionCount: number toolCallCount: number } export type DailyModelTokens = { date: string tokensByModel: Record } export type StreakInfo = { currentStreak: number longestStreak: number currentStreakStart: string | null longestStreakStart: string | null longestStreakEnd: string | null } export type SessionStats = { sessionId: string duration: number messageCount: number timestamp: string } export type ActivityStats = { totalSessions: number totalMessages: number totalDays: number activeDays: number streaks: StreakInfo dailyActivity: DailyActivity[] dailyModelTokens: DailyModelTokens[] longestSession: SessionStats | null modelUsage: Record firstSessionDate: string | null lastSessionDate: string | null peakActivityDay: string | null peakActivityHour: number | null totalSpeculationTimeSavedMs: number } export type ActivityStatsApiResponse = { stats: ActivityStats range: ActivityStatsRange generatedAt: string } export type ActivityStatsResponse = ActivityStats & { range: ActivityStatsRange generatedAt: string } export const activityStatsApi = { async getStats(range: ActivityStatsRange = 'all'): Promise { const suffix = range === 'all' ? '' : `/${range}` const response = await api.get(`/api/activity-stats${suffix}`, { timeout: 120_000 }) return { ...response.stats, range: response.range, generatedAt: response.generatedAt, } }, }