UNPKG

cost-claude

Version:

Claude Code cost monitoring, analytics, and optimization toolkit

72 lines 2.16 kB
import { EventEmitter } from 'events'; import { ClaudeMessage } from '../types/index.js'; export interface SessionCompletionData { sessionId: string; projectName: string; summary: string; totalCost: number; messageCount: number; duration: number; startTime: Date; endTime: Date; lastMessageUuid: string; } export interface TaskCompletionData { sessionId: string; projectName: string; taskCost: number; taskDuration: number; assistantMessageCount: number; lastMessageUuid: string; timestamp: Date; completionType: 'immediate' | 'delayed'; } export interface TaskProgressData { sessionId: string; projectName: string; currentCost: number; currentDuration: number; assistantMessageCount: number; isActive: boolean; estimatedCompletion?: number; } export interface SessionDetectorConfig { inactivityTimeout?: number; summaryMessageTimeout?: number; taskCompletionTimeout?: number; delayedTaskCompletionTimeout?: number; minTaskCost?: number; minTaskMessages?: number; enableProgressNotifications?: boolean; progressCheckInterval?: number; minProgressCost?: number; minProgressDuration?: number; } export declare class SessionDetector extends EventEmitter { private jsonlParser; private costCalculator; private sessions; private config; constructor(config?: SessionDetectorConfig); processMessage(message: ClaudeMessage, filePath?: string): void; private startProgressMonitoring; private checkTaskProgress; private estimateCompletion; private completeTask; private completeSession; private generateSummary; completeAllSessions(): void; getActiveSessions(): string[]; getSessionInfo(sessionId: string): { sessionId: string; projectName: string; totalCost: number; messageCount: number; hasSummary: boolean; lastActivity: Date; duration: number; } | null; isSessionIdle(sessionId: string): boolean; updateConfig(config: Partial<SessionDetectorConfig>): void; } //# sourceMappingURL=session-detector.d.ts.map