UNPKG

mcp-think-tank

Version:

Structured thinking and knowledge management tool for Model Context Protocol

133 lines 3.8 kB
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