UNPKG

@nanocollective/nanocoder

Version:

A local-first CLI coding agent that brings the power of agentic coding tools like Claude Code and Gemini CLI to local models or controlled APIs like OpenRouter

189 lines 5.82 kB
/** * Request timing and memory usage tracking * Provides comprehensive monitoring for HTTP requests, AI calls, and MCP operations */ /** * Request tracking metadata */ export interface RequestMetadata { id: string; type: 'http' | 'ai' | 'mcp' | 'database' | 'file' | 'custom'; method?: string; url?: string; endpoint?: string; provider?: string; model?: string; toolName?: string; serverName?: string; correlationId: string; startTime: number; endTime?: number; duration?: number; memoryStart?: NodeJS.MemoryUsage; memoryEnd?: NodeJS.MemoryUsage; memoryDelta?: Record<string, number>; status?: 'pending' | 'success' | 'error' | 'timeout' | 'cancelled'; statusCode?: number; errorType?: string; errorMessage?: string; requestSize?: number; responseSize?: number; retryCount?: number; userId?: string; sessionId?: string; tags?: string[]; customData?: Record<string, unknown>; } /** * Request statistics for monitoring and analysis */ export interface RequestStats { totalRequests: number; requestsByType: Record<string, number>; requestsByStatus: Record<string, number>; averageDuration: number; minDuration: number; maxDuration: number; totalDuration: number; averageMemoryDelta: Record<string, number>; errorRate: number; timeoutRate: number; requestsInLastHour: number; requestsInLastDay: number; busiestHour: number; busiestEndpoint?: string; slowestEndpoint?: string; mostErrorProneEndpoint?: string; timestamp: string; } /** * Request tracker class for monitoring HTTP requests and operations */ export declare class RequestTracker { private activeRequests; private completedRequests; private readonly maxCompletedRequests; private readonly correlationId; constructor(maxCompletedRequests?: number); /** * Start tracking a new request */ startRequest(metadata: Omit<RequestMetadata, 'id' | 'startTime' | 'status' | 'correlationId'>): string; /** * Complete a request successfully */ completeRequest(requestId: string, responseMetadata?: { statusCode?: number; responseSize?: number; customData?: Record<string, unknown>; }): RequestMetadata | null; /** * Mark a request as failed */ failRequest(requestId: string, error: Error | string, errorMetadata?: { errorType?: string; statusCode?: number; customData?: Record<string, unknown>; }): RequestMetadata | null; /** * Mark a request as timed out */ timeoutRequest(requestId: string, timeoutMs: number): RequestMetadata | null; /** * Cancel a request */ cancelRequest(requestId: string, reason?: string): RequestMetadata | null; /** * Get request statistics */ getStats(): RequestStats; /** * Get active requests */ getActiveRequests(): RequestMetadata[]; /** * Get recently completed requests */ getRecentRequests(limit?: number): RequestMetadata[]; /** * Clear all tracking data */ clear(): void; private generateRequestId; private addToCompleted; } /** * Global request tracker instance */ export declare const globalRequestTracker: RequestTracker; /** * Decorator to automatically track function calls as requests */ export declare function trackRequest<T extends (...args: unknown[]) => unknown>(fn: T, options: { type: RequestMetadata['type']; method?: string; endpoint?: string; provider?: string; model?: string; toolName?: string; serverName?: string; tags?: string[]; trackMemory?: boolean; trackRequestSize?: boolean; thresholds?: { duration?: number; memory?: number; }; }): T; /** * HTTP request tracking utilities */ export declare const httpTracker: { /** * Track an HTTP GET request */ get: <T>(url: string, fn: () => Promise<T>, options?: Partial<Parameters<typeof trackRequest>[1]>) => () => Promise<T>; /** * Track an HTTP POST request */ post: <T>(url: string, fn: () => Promise<T>, options?: Partial<Parameters<typeof trackRequest>[1]>) => () => Promise<T>; /** * Track an HTTP PUT request */ put: <T>(url: string, fn: () => Promise<T>, options?: Partial<Parameters<typeof trackRequest>[1]>) => () => Promise<T>; /** * Track an HTTP DELETE request */ delete: <T>(url: string, fn: () => Promise<T>, options?: Partial<Parameters<typeof trackRequest>[1]>) => () => Promise<T>; }; /** * AI request tracking utilities */ export declare const aiTracker: { /** * Track an AI chat request */ chat: <T>(provider: string, model: string, fn: () => Promise<T>, options?: Partial<Parameters<typeof trackRequest>[1]>) => () => Promise<T>; /** * Track an AI completion request */ completion: <T>(provider: string, model: string, fn: () => Promise<T>, options?: Partial<Parameters<typeof trackRequest>[1]>) => () => Promise<T>; /** * Track an AI embedding request */ embedding: <T>(provider: string, model: string, fn: () => Promise<T>, options?: Partial<Parameters<typeof trackRequest>[1]>) => () => Promise<T>; }; /** * MCP request tracking utilities */ export declare const mcpTracker: { /** * Track an MCP tool execution */ tool: <T>(_serverName: string, toolName: string, fn: () => Promise<T>, options?: Partial<Parameters<typeof trackRequest>[1]>) => () => Promise<T>; /** * Track an MCP server connection */ connect: <T>(_serverName: string, fn: () => Promise<T>, options?: Partial<Parameters<typeof trackRequest>[1]>) => () => Promise<T>; }; //# sourceMappingURL=request-tracker.d.ts.map