mcp-adr-analysis-server
Version:
MCP server for analyzing Architectural Decision Records and project architecture
82 lines • 2.39 kB
TypeScript
/**
* Task Persistence for MCP Tasks Integration
*
* Provides file-based persistence for tasks to survive server restarts.
* Uses JSON files stored in a configurable cache directory.
*
* Implements ADR-018: MCP Tasks Integration Strategy
*
* @experimental MCP Tasks is an experimental feature in the MCP specification
*/
import type { AdrTask } from './task-manager.js';
/**
* Configuration for task persistence
*/
export interface TaskPersistenceConfig {
/** Directory to store task data (default: .mcp-adr-cache/tasks) */
cacheDir: string;
/** Whether persistence is enabled (default: true) */
enabled: boolean;
/** Maximum age of persisted tasks in ms (default: 7 days) */
maxAge: number;
/** Write delay in ms for debouncing (default: 1000) */
writeDelay: number;
}
/**
* Task Persistence Manager
*
* Handles saving and loading tasks to/from disk for durability across
* server restarts. Uses debounced writes to avoid excessive disk I/O.
*/
export declare class TaskPersistence {
private config;
private writeTimer;
private pendingWrite;
private initialized;
constructor(config?: Partial<TaskPersistenceConfig>);
/**
* Initialize persistence - create cache directory if needed
*/
initialize(): Promise<void>;
/**
* Get the path to the tasks file
*/
private getTasksFilePath;
/**
* Load persisted tasks from disk
*/
load(): Promise<{
tasks: Map<string, AdrTask>;
progress: Map<string, number>;
}>;
/**
* Save tasks to disk (debounced)
*/
save(tasks: Map<string, AdrTask>, progress: Map<string, number>): Promise<void>;
/**
* Force immediate save (for shutdown)
*/
saveImmediate(tasks: Map<string, AdrTask>, progress: Map<string, number>): Promise<void>;
/**
* Write data to file
*/
private writeToFile;
/**
* Delete persisted task data
*/
clear(): Promise<void>;
/**
* Cleanup old task files
*/
cleanup(): Promise<number>;
/**
* Shutdown persistence - flush pending writes
*/
shutdown(): Promise<void>;
/**
* Check if persistence is enabled
*/
isEnabled(): boolean;
}
export declare function createTaskPersistence(config?: Partial<TaskPersistenceConfig>): TaskPersistence;
//# sourceMappingURL=task-persistence.d.ts.map