claude-sesh
Version:
Session explorer for Claude Code - find, search, and resume all your past sessions
258 lines • 6.1 kB
TypeScript
export interface ClaudeMessage {
type: 'user' | 'assistant' | 'summary' | 'file-history-snapshot';
uuid: string;
parentUuid: string | null;
timestamp: string;
sessionId: string;
cwd: string;
gitBranch?: string;
version?: string;
message?: {
role: 'user' | 'assistant';
content: string | ContentBlock[];
model?: string;
id?: string;
usage?: TokenUsage;
};
summary?: string;
leafUuid?: string;
toolUseResult?: string;
todos?: TodoItem[];
}
export interface ContentBlock {
type: 'text' | 'tool_use' | 'tool_result' | 'thinking';
text?: string;
thinking?: string;
name?: string;
input?: Record<string, unknown>;
content?: string;
is_error?: boolean;
tool_use_id?: string;
}
export interface TokenUsage {
input_tokens: number;
output_tokens: number;
cache_creation_input_tokens?: number;
cache_read_input_tokens?: number;
}
export interface TodoItem {
content: string;
status: 'pending' | 'in_progress' | 'completed';
}
export interface ParsedSession {
id: string;
projectPath: string;
projectName: string;
startedAt: Date;
endedAt: Date | null;
durationSeconds: number;
gitBranch: string | null;
inputTokens: number;
outputTokens: number;
totalTokens: number;
estimatedCostUsd: number;
summaries: string[];
messageCount: number;
userMessageCount: number;
assistantMessageCount: number;
toolCalls: ToolCall[];
toolCallCount: number;
filesRead: string[];
filesWritten: string[];
filesEdited: string[];
errors: SessionError[];
model: string;
}
export interface ToolCall {
name: string;
timestamp: string;
input: Record<string, unknown>;
result?: string;
isError: boolean;
durationMs?: number;
}
export interface SessionError {
timestamp: string;
message: string;
toolName?: string;
context?: string;
}
export interface SessionListItem {
id: string;
projectName: string;
projectPath: string;
startedAt: Date;
duration: string;
summary: string;
totalTokens: number;
cost: string;
model: string;
messageCount: number;
toolCallCount: number;
}
export interface SessionStats {
totalSessions: number;
totalTokens: number;
totalCost: number;
totalDuration: number;
averageSessionDuration: number;
sessionsToday: number;
tokensToday: number;
projectBreakdown: {
project: string;
sessions: number;
tokens: number;
}[];
modelBreakdown: {
model: string;
sessions: number;
tokens: number;
}[];
dailyActivity: {
date: string;
sessions: number;
tokens: number;
messages: number;
}[];
}
export interface ResumeContext {
session: ParsedSession;
lastSummary: string;
recentFiles: string[];
openTodos: TodoItem[];
lastUserMessage: string;
resumePrompt: string;
}
export interface DailyActivity {
date: string;
messageCount: number;
sessionCount: number;
toolCallCount: number;
tokenCount?: number;
costUsd?: number;
}
export interface StatsCache {
version: number;
lastComputedDate: string;
dailyActivity: DailyActivity[];
}
export interface HourlyActivityMap {
[dayOfWeek: number]: {
[hour: number]: number;
};
}
export interface HeatmapData {
cells: HeatmapCell[];
maxValue: number;
totalDays: number;
weekStart: Date;
weekEnd: Date;
}
export interface HeatmapCell {
date: string;
dayOfWeek: number;
week: number;
value: number;
sessions?: number;
messages?: number;
tools?: number;
tokens?: number;
}
export interface CommandHistoryEntry {
display: string;
timestamp: number;
project: string;
pastedContents?: Record<string, unknown>;
}
export interface PlanFile {
name: string;
path: string;
content: string;
createdAt: Date;
modifiedAt: Date;
size: number;
}
export interface LeaderboardEntry {
rank: number;
name: string;
value: number;
secondaryValue?: number;
trend?: 'up' | 'down' | 'same';
metadata?: Record<string, unknown>;
}
export interface Leaderboard {
type: 'projects' | 'models' | 'tools' | 'days' | 'sessions';
title: string;
entries: LeaderboardEntry[];
metric: string;
secondaryMetric?: string;
}
export interface TimelineEvent {
id: string;
type: 'session_start' | 'session_end' | 'message' | 'tool_call' | 'error';
timestamp: Date;
sessionId: string;
projectName: string;
details?: {
tool?: string;
message?: string;
tokens?: number;
isError?: boolean;
};
}
export interface TimelineData {
events: TimelineEvent[];
sessions: {
id: string;
projectName: string;
startedAt: Date;
endedAt: Date | null;
durationSeconds: number;
model: string;
tokens: number;
}[];
dateRange: {
start: Date;
end: Date;
};
}
export interface EnrichedSession {
sessionId: string;
enrichedAt: Date;
summary: string;
decisions: string[];
problems: {
issue: string;
solution: string;
}[];
knowledge: string[];
tags: string[];
sentiment: 'productive' | 'challenging' | 'exploratory' | 'maintenance';
}
export interface KnowledgeSearchResult {
sessionId: string;
projectName: string;
date: Date;
matchType: 'summary' | 'file' | 'error' | 'tool' | 'enriched';
snippet: string;
relevanceScore: number;
}
export interface TrackedIssue {
id: string;
pattern: string;
errorMessage: string;
occurrences: {
sessionId: string;
timestamp: Date;
context?: string;
}[];
firstSeen: Date;
lastSeen: Date;
status: 'open' | 'resolved' | 'recurring';
resolution?: {
sessionId: string;
timestamp: Date;
description?: string;
};
}
//# sourceMappingURL=index.d.ts.map