feat: add TypeScript declaration files for all core libraries
Add .d.ts type definitions for all four library modules:
- utils.d.ts: Platform detection, file ops, hook I/O, git helpers
- package-manager.d.ts: PM detection with PackageManagerName union type,
DetectionSource union, and typed config interfaces
- session-manager.d.ts: Session CRUD with Session, SessionMetadata,
SessionStats, and SessionListResult interfaces
- session-aliases.d.ts: Alias management with typed result interfaces
for set, delete, rename, and cleanup operations
These provide IDE autocomplete and type-checking for TypeScript
consumers of the npm package without converting the source to TS.
2026-02-12 13:56:48 -08:00
|
|
|
/**
|
|
|
|
|
* 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.
|
2026-02-12 15:57:20 -08:00
|
|
|
* Accepts either a file path (absolute, ending in .tmp) or pre-read content string.
|
|
|
|
|
* Supports both Unix (/path/to/session.tmp) and Windows (C:\path\to\session.tmp) paths.
|
feat: add TypeScript declaration files for all core libraries
Add .d.ts type definitions for all four library modules:
- utils.d.ts: Platform detection, file ops, hook I/O, git helpers
- package-manager.d.ts: PM detection with PackageManagerName union type,
DetectionSource union, and typed config interfaces
- session-manager.d.ts: Session CRUD with Session, SessionMetadata,
SessionStats, and SessionListResult interfaces
- session-aliases.d.ts: Alias management with typed result interfaces
for set, delete, rename, and cleanup operations
These provide IDE autocomplete and type-checking for TypeScript
consumers of the npm package without converting the source to TS.
2026-02-12 13:56:48 -08:00
|
|
|
*/
|
|
|
|
|
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;
|