Files
everything-claude-code/scripts/lib/session-manager.d.ts

131 lines
4.1 KiB
TypeScript
Raw Normal View History

/**
* Session Manager Library for Claude Code.
* Provides CRUD operations for session files stored as markdown in ~/.claude/sessions/.
*/
/** Parsed metadata from a session filename */
export interface SessionFilenameMeta {
/** Original filename */
filename: string;
/** Short ID extracted from filename, or "no-id" for old format */
shortId: string;
/** Date string in YYYY-MM-DD format */
date: string;
/** Parsed Date object from the date string */
datetime: Date;
}
/** Metadata parsed from session markdown content */
export interface SessionMetadata {
title: string | null;
date: string | null;
started: string | null;
lastUpdated: string | null;
completed: string[];
inProgress: string[];
notes: string;
context: string;
}
/** Statistics computed from session content */
export interface SessionStats {
totalItems: number;
completedItems: number;
inProgressItems: number;
lineCount: number;
hasNotes: boolean;
hasContext: boolean;
}
/** A session object returned by getAllSessions and getSessionById */
export interface Session extends SessionFilenameMeta {
/** Full filesystem path to the session file */
sessionPath: string;
/** Whether the file has any content */
hasContent?: boolean;
/** File size in bytes */
size: number;
/** Last modification time */
modifiedTime: Date;
/** File creation time (falls back to ctime on Linux) */
createdTime: Date;
/** Session markdown content (only when includeContent=true) */
content?: string | null;
/** Parsed metadata (only when includeContent=true) */
metadata?: SessionMetadata;
/** Session statistics (only when includeContent=true) */
stats?: SessionStats;
}
/** Pagination result from getAllSessions */
export interface SessionListResult {
sessions: Session[];
total: number;
offset: number;
limit: number;
hasMore: boolean;
}
export interface GetAllSessionsOptions {
/** Maximum number of sessions to return (default: 50) */
limit?: number;
/** Number of sessions to skip (default: 0) */
offset?: number;
/** Filter by date in YYYY-MM-DD format */
date?: string | null;
/** Search in short ID */
search?: string | null;
}
/**
* Parse a session filename to extract date and short ID.
* @returns Parsed metadata, or null if the filename doesn't match the expected pattern
*/
export function parseSessionFilename(filename: string): SessionFilenameMeta | null;
/** Get the full filesystem path for a session filename */
export function getSessionPath(filename: string): string;
/**
* Read session markdown content from disk.
* @returns Content string, or null if the file doesn't exist
*/
export function getSessionContent(sessionPath: string): string | null;
/** Parse session metadata from markdown content */
export function parseSessionMetadata(content: string | null): SessionMetadata;
/**
* Calculate statistics for a session.
* Accepts either a file path (ending in .tmp) or pre-read content string.
*/
export function getSessionStats(sessionPathOrContent: string): SessionStats;
/** Get the title from a session file, or "Untitled Session" if none */
export function getSessionTitle(sessionPath: string): string;
/** Get human-readable file size (e.g., "1.2 KB") */
export function getSessionSize(sessionPath: string): string;
/** Get all sessions with optional filtering and pagination */
export function getAllSessions(options?: GetAllSessionsOptions): SessionListResult;
/**
* Find a session by short ID or filename.
* @param sessionId - Short ID prefix, full filename, or filename without .tmp
* @param includeContent - Whether to read and parse the session content
*/
export function getSessionById(sessionId: string, includeContent?: boolean): Session | null;
/** Write markdown content to a session file */
export function writeSessionContent(sessionPath: string, content: string): boolean;
/** Append content to an existing session file */
export function appendSessionContent(sessionPath: string, content: string): boolean;
/** Delete a session file */
export function deleteSession(sessionPath: string): boolean;
/** Check if a session file exists and is a regular file */
export function sessionExists(sessionPath: string): boolean;