cost-claude
Version:
Claude Code cost monitoring, analytics, and optimization toolkit
72 lines • 2.16 kB
TypeScript
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