Skip to main content
Glama
update-tasks.js3.64 kB
/** * update-tasks.js * Direct function implementation for updating tasks based on new context */ import path from 'path'; import { updateTasks } from '../../../../scripts/modules/task-manager.js'; import { disableSilentMode, enableSilentMode } from '../../../../scripts/modules/utils.js'; import { createLogWrapper } from '../../tools/utils.js'; /** * Direct function wrapper for updating tasks based on new context. * * @param {Object} args - Command arguments containing projectRoot, from, prompt, research options. * @param {string} args.from - The ID of the task to update. * @param {string} args.prompt - The prompt to update the task with. * @param {boolean} args.research - Whether to use research mode. * @param {string} args.tasksJsonPath - Path to the tasks.json file. * @param {string} args.projectRoot - Project root path (for MCP/env fallback) * @param {string} args.tag - Tag for the task (optional) * @param {Object} log - Logger object. * @param {Object} context - Context object containing session data. * @returns {Promise<Object>} - Result object with success status and data/error information. */ export async function updateTasksDirect(args, log, context = {}) { const { session } = context; const { from, prompt, research, tasksJsonPath, projectRoot, tag } = args; // Create the standard logger wrapper const logWrapper = createLogWrapper(log); // --- Input Validation --- if (!projectRoot) { logWrapper.error('updateTasksDirect requires a projectRoot argument.'); return { success: false, error: { code: 'MISSING_ARGUMENT', message: 'projectRoot is required.' } }; } if (!from) { logWrapper.error('updateTasksDirect called without from ID'); return { success: false, error: { code: 'MISSING_ARGUMENT', message: 'Starting task ID (from) is required' } }; } if (!prompt) { logWrapper.error('updateTasksDirect called without prompt'); return { success: false, error: { code: 'MISSING_ARGUMENT', message: 'Update prompt is required' } }; } logWrapper.info( `Updating tasks via direct function. From: ${from}, Research: ${research}, File: ${tasksJsonPath}, ProjectRoot: ${projectRoot}` ); enableSilentMode(); // Enable silent mode try { // Call the core updateTasks function const result = await updateTasks( tasksJsonPath, from, prompt, research, { session, mcpLog: logWrapper, projectRoot, tag }, 'json' ); if (result && result.success && Array.isArray(result.updatedTasks)) { logWrapper.success( `Successfully updated ${result.updatedTasks.length} tasks.` ); return { success: true, data: { message: `Successfully updated ${result.updatedTasks.length} tasks.`, tasksPath: tasksJsonPath, updatedCount: result.updatedTasks.length, telemetryData: result.telemetryData, tagInfo: result.tagInfo } }; } else { // Handle case where core function didn't return expected success structure logWrapper.error( 'Core updateTasks function did not return a successful structure.' ); return { success: false, error: { code: 'CORE_FUNCTION_ERROR', message: result?.message || 'Core function failed to update tasks or returned unexpected result.' } }; } } catch (error) { logWrapper.error(`Error executing core updateTasks: ${error.message}`); return { success: false, error: { code: 'UPDATE_TASKS_CORE_ERROR', message: error.message || 'Unknown error updating tasks' } }; } finally { disableSilentMode(); // Ensure silent mode is disabled } }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/eyaltoledano/claude-task-master'

If you have feedback or need assistance with the MCP directory API, please join our Discord server