import { aggregateClaudeCodeStatsForRange, type StatsDateRange, } from '../../utils/stats.js' import { ApiError, errorResponse } from '../middleware/errorHandler.js' const VALID_RANGES = new Set(['7d', '30d', 'all']) export async function handleActivityStatsApi( req: Request, _url: URL, segments: string[], ): Promise { try { if (req.method !== 'GET') { throw methodNotAllowed(req.method) } const requestedRange = segments[2] const range: StatsDateRange = requestedRange === undefined ? 'all' : parseRange(requestedRange) const stats = await aggregateClaudeCodeStatsForRange(range) return Response.json({ stats, range, generatedAt: new Date().toISOString(), }) } catch (error) { return errorResponse(error) } } function parseRange(range: string): StatsDateRange { if (VALID_RANGES.has(range as StatsDateRange)) { return range as StatsDateRange } throw ApiError.badRequest(`Unknown activity stats range: ${range}`) } function methodNotAllowed(method: string): ApiError { return new ApiError(405, `Method ${method} not allowed`, 'METHOD_NOT_ALLOWED') }