This commit introduces several improvements and refactorings across MCP tools, core logic, and configuration.
**Major Changes:**
1. **Refactor updateSubtaskById:**
- Switched from generateTextService to generateObjectService for structured AI responses, using a Zod schema (subtaskSchema) for validation.
- Revised prompts to have the AI generate relevant content based on user request and context (parent/sibling tasks), while explicitly preventing AI from handling timestamp/tag formatting.
- Implemented **local timestamp generation (new Date().toISOString()) and formatting** (using <info added on ...> tags) within the function *after* receiving the AI response. This ensures reliable and correctly formatted details are appended.
- Corrected logic to append only the locally formatted, AI-generated content block to the existing subtask.details.
2. **Consolidate MCP Utilities:**
- Moved/consolidated the withNormalizedProjectRoot HOF into mcp-server/src/tools/utils.js.
- Updated MCP tools (like update-subtask.js) to import withNormalizedProjectRoot from the new location.
3. **Refactor Project Initialization:**
- Deleted the redundant mcp-server/src/core/direct-functions/initialize-project-direct.js file.
- Updated mcp-server/src/core/task-master-core.js to import initializeProjectDirect from its correct location (./direct-functions/initialize-project.js).
**Other Changes:**
- Updated .taskmasterconfig fallback model to claude-3-7-sonnet-20250219.
- Clarified model cost representation in the models tool description (taskmaster.mdc and mcp-server/src/tools/models.js).
94 lines
4.0 KiB
JavaScript
94 lines
4.0 KiB
JavaScript
/**
|
|
* task-master-core.js
|
|
* Central module that imports and re-exports all direct function implementations
|
|
* for improved organization and maintainability.
|
|
*/
|
|
|
|
// Import direct function implementations
|
|
import { listTasksDirect } from './direct-functions/list-tasks.js';
|
|
import { getCacheStatsDirect } from './direct-functions/cache-stats.js';
|
|
import { parsePRDDirect } from './direct-functions/parse-prd.js';
|
|
import { updateTasksDirect } from './direct-functions/update-tasks.js';
|
|
import { updateTaskByIdDirect } from './direct-functions/update-task-by-id.js';
|
|
import { updateSubtaskByIdDirect } from './direct-functions/update-subtask-by-id.js';
|
|
import { generateTaskFilesDirect } from './direct-functions/generate-task-files.js';
|
|
import { setTaskStatusDirect } from './direct-functions/set-task-status.js';
|
|
import { showTaskDirect } from './direct-functions/show-task.js';
|
|
import { nextTaskDirect } from './direct-functions/next-task.js';
|
|
import { expandTaskDirect } from './direct-functions/expand-task.js';
|
|
import { addTaskDirect } from './direct-functions/add-task.js';
|
|
import { addSubtaskDirect } from './direct-functions/add-subtask.js';
|
|
import { removeSubtaskDirect } from './direct-functions/remove-subtask.js';
|
|
import { analyzeTaskComplexityDirect } from './direct-functions/analyze-task-complexity.js';
|
|
import { clearSubtasksDirect } from './direct-functions/clear-subtasks.js';
|
|
import { expandAllTasksDirect } from './direct-functions/expand-all-tasks.js';
|
|
import { removeDependencyDirect } from './direct-functions/remove-dependency.js';
|
|
import { validateDependenciesDirect } from './direct-functions/validate-dependencies.js';
|
|
import { fixDependenciesDirect } from './direct-functions/fix-dependencies.js';
|
|
import { complexityReportDirect } from './direct-functions/complexity-report.js';
|
|
import { addDependencyDirect } from './direct-functions/add-dependency.js';
|
|
import { removeTaskDirect } from './direct-functions/remove-task.js';
|
|
import { initializeProjectDirect } from './direct-functions/initialize-project.js';
|
|
import { modelsDirect } from './direct-functions/models.js';
|
|
|
|
// Re-export utility functions
|
|
export { findTasksJsonPath } from './utils/path-utils.js';
|
|
|
|
// Use Map for potential future enhancements like introspection or dynamic dispatch
|
|
export const directFunctions = new Map([
|
|
['listTasksDirect', listTasksDirect],
|
|
['getCacheStatsDirect', getCacheStatsDirect],
|
|
['parsePRDDirect', parsePRDDirect],
|
|
['updateTasksDirect', updateTasksDirect],
|
|
['updateTaskByIdDirect', updateTaskByIdDirect],
|
|
['updateSubtaskByIdDirect', updateSubtaskByIdDirect],
|
|
['generateTaskFilesDirect', generateTaskFilesDirect],
|
|
['setTaskStatusDirect', setTaskStatusDirect],
|
|
['showTaskDirect', showTaskDirect],
|
|
['nextTaskDirect', nextTaskDirect],
|
|
['expandTaskDirect', expandTaskDirect],
|
|
['addTaskDirect', addTaskDirect],
|
|
['addSubtaskDirect', addSubtaskDirect],
|
|
['removeSubtaskDirect', removeSubtaskDirect],
|
|
['analyzeTaskComplexityDirect', analyzeTaskComplexityDirect],
|
|
['clearSubtasksDirect', clearSubtasksDirect],
|
|
['expandAllTasksDirect', expandAllTasksDirect],
|
|
['removeDependencyDirect', removeDependencyDirect],
|
|
['validateDependenciesDirect', validateDependenciesDirect],
|
|
['fixDependenciesDirect', fixDependenciesDirect],
|
|
['complexityReportDirect', complexityReportDirect],
|
|
['addDependencyDirect', addDependencyDirect],
|
|
['removeTaskDirect', removeTaskDirect],
|
|
['initializeProjectDirect', initializeProjectDirect],
|
|
['modelsDirect', modelsDirect]
|
|
]);
|
|
|
|
// Re-export all direct function implementations
|
|
export {
|
|
listTasksDirect,
|
|
getCacheStatsDirect,
|
|
parsePRDDirect,
|
|
updateTasksDirect,
|
|
updateTaskByIdDirect,
|
|
updateSubtaskByIdDirect,
|
|
generateTaskFilesDirect,
|
|
setTaskStatusDirect,
|
|
showTaskDirect,
|
|
nextTaskDirect,
|
|
expandTaskDirect,
|
|
addTaskDirect,
|
|
addSubtaskDirect,
|
|
removeSubtaskDirect,
|
|
analyzeTaskComplexityDirect,
|
|
clearSubtasksDirect,
|
|
expandAllTasksDirect,
|
|
removeDependencyDirect,
|
|
validateDependenciesDirect,
|
|
fixDependenciesDirect,
|
|
complexityReportDirect,
|
|
addDependencyDirect,
|
|
removeTaskDirect,
|
|
initializeProjectDirect,
|
|
modelsDirect
|
|
};
|