export type DbSessionStatus = 'init' | 'working' | 'needs_attention' | 'idle'; export type DbAttentionReason = string; export type DbStatusSource = 'hook' | 'tmux'; export interface DbSession { id: number; name: string; project: string; last_event: string | null; last_activity: number; archived_at: number | null; created_at: number; updated_at: number; status: DbSessionStatus | null; status_source: DbStatusSource | null; attention_reason: DbAttentionReason | null; last_status_change: number | null; } export interface DbSchemaVersion { version: number; applied_at: number; } export interface UpsertSessionInput { project?: string; lastEvent?: string | null; lastActivity?: number; status?: DbSessionStatus | null; statusSource?: DbStatusSource | null; attentionReason?: DbAttentionReason | null; } export declare const SCHEMA_VERSION = 17; export declare const CREATE_TABLES_SQL = "\n-- Sessions: current state of terminal sessions with status tracking\nCREATE TABLE IF NOT EXISTS sessions (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n name TEXT NOT NULL UNIQUE,\n project TEXT NOT NULL,\n last_event TEXT,\n last_activity INTEGER NOT NULL,\n archived_at INTEGER,\n created_at INTEGER NOT NULL,\n updated_at INTEGER NOT NULL,\n -- Status tracking (v17)\n status TEXT,\n status_source TEXT,\n attention_reason TEXT,\n last_status_change INTEGER\n);\n\nCREATE INDEX IF NOT EXISTS idx_sessions_name ON sessions(name);\nCREATE INDEX IF NOT EXISTS idx_sessions_project ON sessions(project);\nCREATE INDEX IF NOT EXISTS idx_sessions_last_activity ON sessions(last_activity);\nCREATE INDEX IF NOT EXISTS idx_sessions_status ON sessions(status);\n\n-- Schema version tracking\nCREATE TABLE IF NOT EXISTS schema_version (\n version INTEGER PRIMARY KEY,\n applied_at INTEGER NOT NULL\n);\n"; export declare const MIGRATION_16 = "\n-- Migration v16: Remove status tracking columns\nCREATE TABLE IF NOT EXISTS sessions_new (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n name TEXT NOT NULL UNIQUE,\n project TEXT NOT NULL,\n last_event TEXT,\n last_activity INTEGER NOT NULL,\n archived_at INTEGER,\n created_at INTEGER NOT NULL,\n updated_at INTEGER NOT NULL\n);\n\nINSERT OR IGNORE INTO sessions_new (id, name, project, last_event, last_activity, archived_at, created_at, updated_at)\nSELECT id, name, project, last_event, last_activity, archived_at, created_at, updated_at\nFROM sessions;\n\nDROP TABLE IF EXISTS sessions;\nALTER TABLE sessions_new RENAME TO sessions;\n\nCREATE INDEX IF NOT EXISTS idx_sessions_name ON sessions(name);\nCREATE INDEX IF NOT EXISTS idx_sessions_project ON sessions(project);\nCREATE INDEX IF NOT EXISTS idx_sessions_last_activity ON sessions(last_activity);\n"; export declare const RETENTION_CONFIG: { /** Max age for sessions before cleanup (24 hours) */ sessionMaxAge: number; /** Max age for archived sessions before cleanup (30 days) */ archivedMaxAge: number; /** Cleanup interval (1 hour) */ cleanupInterval: number; }; //# sourceMappingURL=schema.d.ts.map