mcp-think-tank
Version:
Structured thinking and knowledge management tool for Model Context Protocol
133 lines • 3.8 kB
TypeScript
import { EventEmitter } from 'events';
import { Task, TaskStatus } from './model.js';
/**
* Storage for tasks
*/
export declare class TaskStorage extends EventEmitter {
private tasks;
private filePath;
private isLoaded;
private timeouts;
/**
* Create a new TaskStorage instance
* @param filePath Path to the storage file (optional, defaults to ~/.mcp-think-tank/tasks.jsonl)
*/
constructor(filePath?: string);
/**
* Add a new task
* @param task Task to add
* @returns Added task
*/
add(task: Omit<Task, 'id' | 'created'>): Task;
/**
* Get a task by ID
* @param id Task ID
* @returns Task or undefined if not found
*/
get(id: string): Task | undefined;
/**
* Get all tasks
* @returns Array of tasks
*/
getAll(): Task[];
/**
* Update a task
* @param id Task ID
* @param update Task update
* @returns Updated task or undefined if not found
*/
update(id: string, update: Partial<Omit<Task, 'id' | 'created'>>): Task | undefined;
/**
* Delete a task
* @param id Task ID
* @returns True if deleted, false if not found
*/
delete(id: string): boolean;
/**
* Get tasks by status
* @param status Task status
* @returns Array of tasks with the given status
*/
getByStatus(status: TaskStatus): Task[];
/**
* Get highest priority task with the given status
* @param status Task status
* @returns Highest priority task or undefined if none
*/
getHighestPriority(status: TaskStatus): Task | undefined;
/**
* Get related tasks
* @param taskId Task ID
* @returns Array of tasks that depend on or are depended on by the given task
*/
getRelatedTasks(taskId: string): Task[];
/**
* Set a task to automatically transition to the next status after a delay
* @param taskId Task ID
* @param delay Delay in milliseconds
* @param targetStatus Target status
*/
setAutoTransition(taskId: string, delay: number, targetStatus: TaskStatus): void;
/**
* Clear a task auto-transition timeout
* @param taskId Task ID
*/
clearTimeout(taskId: string): void;
/**
* Clear all task auto-transition timeouts
*/
clearAllTimeouts(): void;
/**
* Save tasks to storage
*/
save(): void;
/**
* Save tasks immediately without throttling
*/
saveImmediately(): void;
/**
* Create directory if it doesn't exist
* @param directory Directory path
*/
private createDirectory;
/**
* Load tasks from storage
*/
private load;
/**
* Save timeout
*/
private _saveTimeout;
/**
* Compatibility method for tests - Add a task
* @param task Task to add
* @returns Added task
*/
addTask(task: Task): Promise<Task>;
/**
* Compatibility method for tests - Get all tasks
* @returns Array of tasks
*/
getAllTasks(): Promise<Task[]>;
/**
* Compatibility method for tests - Update a task
* @param id Task ID
* @param update Task update
* @returns Updated task or throws if not found
*/
updateTask(id: string, update: Partial<Task>): Promise<Task>;
/**
* Compatibility method for tests - Delete a task
* @param id Task ID
* @returns True if deleted, false if not found
*/
deleteTask(id: string): Promise<boolean>;
/**
* Compatibility method for tests - Get tasks by criteria
* @param filter Filter criteria
* @returns Array of tasks matching criteria
*/
getTasksBy(filter: Partial<Task>): Promise<Task[]>;
}
export declare const taskStorage: TaskStorage;
//# sourceMappingURL=storage.d.ts.map