import { logger } from '../utils/logger.js'; import fs from 'fs-extra'; import path from 'path'; const TASKS_FILE = 'data/tasks.json'; export class TaskUpdateTool { constructor() { this.name = 'task_update'; this.description = 'Update task status (pending/in_progress/completed/cancelled)'; } async execute(args) { const { task_id, status } = args; const validStatuses = ['pending', 'in_progress', 'completed', 'cancelled']; if (!validStatuses.includes(status)) { return `❌ Invalid status. Use: ${validStatuses.join(', ')}`; } try { const tasks = await this._loadTasks(); const task = tasks.find(t => t.id === task_id); if (!task) return `❌ Task not found: #${task_id}`; task.status = status; task.updated = new Date().toISOString(); await this._saveTasks(tasks); return `✅ Task #${task_id} → ${status}`; } catch (e) { return `❌ ${e.message}`; } } async _loadTasks() { try { return await fs.readJson(TASKS_FILE); } catch { return []; } } async _saveTasks(tasks) { await fs.ensureDir(path.dirname(TASKS_FILE)); await fs.writeJson(TASKS_FILE, tasks, { spaces: 2 }); } }