import { baseApi } from './baseApi' // Memory statistics at a point in time export interface MemoryStats { alloc: number total_alloc: number heap_inuse: number heap_objects: number sys: number } // CPU statistics export interface CPUStats { usage_percent: number user_time: number system_time: number } // Runtime statistics export interface RuntimeStats { num_goroutine: number num_gc: number gc_pause_ns: number num_cpu: number gomaxprocs: number } // Allocation info for top allocations export interface AllocationInfo { function: string file: string line: number bytes: number count: number stack: string[] } // Single point in the metrics history export interface HistoryPoint { timestamp: string alloc: number heap_inuse: number goroutines: number gc_pause_ns: number cpu_percent: number } // Complete pprof data response export interface PprofData { timestamp: string memory: MemoryStats cpu: CPUStats runtime: RuntimeStats top_allocations: AllocationInfo[] inuse_allocations: AllocationInfo[] history: HistoryPoint[] } // Goroutine group representing goroutines with same stack trace export interface GoroutineGroup { count: number state: string wait_reason?: string wait_minutes?: number top_func: string stack: string[] category: 'background' | 'per-request' | 'unknown' } // Goroutine health summary export interface GoroutineSummary { background: number per_request: number long_waiting: number potentially_stuck: number } // Goroutine profile response export interface GoroutineProfile { timestamp: string total_goroutines: number groups: GoroutineGroup[] summary: GoroutineSummary } export const devApi = baseApi.injectEndpoints({ endpoints: (builder) => ({ // Get dev pprof data - polls every 10 seconds getDevPprof: builder.query({ query: () => ({ url: '/dev/pprof', }), }), // Get goroutine profile for leak detection getDevGoroutines: builder.query({ query: () => ({ url: '/dev/pprof/goroutines', }), }), }), }) export const { useGetDevPprofQuery, useLazyGetDevPprofQuery, useGetDevGoroutinesQuery, useLazyGetDevGoroutinesQuery, } = devApi