feat: Add .taskmaster directory (#619)
This commit is contained in:
156
.taskmaster/tasks/task_034.txt
Normal file
156
.taskmaster/tasks/task_034.txt
Normal file
@@ -0,0 +1,156 @@
|
||||
# Task ID: 34
|
||||
# Title: Implement updateTask Command for Single Task Updates
|
||||
# Status: done
|
||||
# Dependencies: None
|
||||
# Priority: high
|
||||
# Description: Create a new command that allows updating a specific task by ID using AI-driven refinement while preserving completed subtasks and supporting all existing update command options.
|
||||
# Details:
|
||||
Implement a new command called 'updateTask' that focuses on updating a single task rather than all tasks from an ID onwards. The implementation should:
|
||||
|
||||
1. Accept a single task ID as a required parameter
|
||||
2. Use the same AI-driven approach as the existing update command to refine the task
|
||||
3. Preserve the completion status of any subtasks that were previously marked as complete
|
||||
4. Support all options from the existing update command including:
|
||||
- The research flag for Perplexity integration
|
||||
- Any formatting or refinement options
|
||||
- Task context options
|
||||
5. Update the CLI help documentation to include this new command
|
||||
6. Ensure the command follows the same pattern as other commands in the codebase
|
||||
7. Add appropriate error handling for cases where the specified task ID doesn't exist
|
||||
8. Implement the ability to update task title, description, and details separately if needed
|
||||
9. Ensure the command returns appropriate success/failure messages
|
||||
10. Optimize the implementation to only process the single task rather than scanning through all tasks
|
||||
|
||||
The command should reuse existing AI prompt templates where possible but modify them to focus on refining a single task rather than multiple tasks.
|
||||
|
||||
# Test Strategy:
|
||||
Testing should verify the following aspects:
|
||||
|
||||
1. **Basic Functionality Test**: Verify that the command successfully updates a single task when given a valid task ID
|
||||
2. **Preservation Test**: Create a task with completed subtasks, update it, and verify the completion status remains intact
|
||||
3. **Research Flag Test**: Test the command with the research flag and verify it correctly integrates with Perplexity
|
||||
4. **Error Handling Tests**:
|
||||
- Test with non-existent task ID and verify appropriate error message
|
||||
- Test with invalid parameters and verify helpful error messages
|
||||
5. **Integration Test**: Run a complete workflow that creates a task, updates it with updateTask, and then verifies the changes are persisted
|
||||
6. **Comparison Test**: Compare the results of updating a single task with updateTask versus using the original update command on the same task to ensure consistent quality
|
||||
7. **Performance Test**: Measure execution time compared to the full update command to verify efficiency gains
|
||||
8. **CLI Help Test**: Verify the command appears correctly in help documentation with appropriate descriptions
|
||||
|
||||
Create unit tests for the core functionality and integration tests for the complete workflow. Document any edge cases discovered during testing.
|
||||
|
||||
# Subtasks:
|
||||
## 1. Create updateTaskById function in task-manager.js [done]
|
||||
### Dependencies: None
|
||||
### Description: Implement a new function in task-manager.js that focuses on updating a single task by ID using AI-driven refinement while preserving completed subtasks.
|
||||
### Details:
|
||||
Implementation steps:
|
||||
1. Create a new `updateTaskById` function in task-manager.js that accepts parameters: taskId, options object (containing research flag, formatting options, etc.)
|
||||
2. Implement logic to find a specific task by ID in the tasks array
|
||||
3. Add appropriate error handling for cases where the task ID doesn't exist (throw a custom error)
|
||||
4. Reuse existing AI prompt templates but modify them to focus on refining a single task
|
||||
5. Implement logic to preserve completion status of subtasks that were previously marked as complete
|
||||
6. Add support for updating task title, description, and details separately based on options
|
||||
7. Optimize the implementation to only process the single task rather than scanning through all tasks
|
||||
8. Return the updated task and appropriate success/failure messages
|
||||
|
||||
Testing approach:
|
||||
- Unit test the function with various scenarios including:
|
||||
- Valid task ID with different update options
|
||||
- Non-existent task ID
|
||||
- Task with completed subtasks to verify preservation
|
||||
- Different combinations of update options
|
||||
|
||||
## 2. Implement updateTask command in commands.js [done]
|
||||
### Dependencies: 34.1
|
||||
### Description: Create a new command called 'updateTask' in commands.js that leverages the updateTaskById function to update a specific task by ID.
|
||||
### Details:
|
||||
Implementation steps:
|
||||
1. Create a new command object for 'updateTask' in commands.js following the Command pattern
|
||||
2. Define command parameters including a required taskId parameter
|
||||
3. Support all options from the existing update command:
|
||||
- Research flag for Perplexity integration
|
||||
- Formatting and refinement options
|
||||
- Task context options
|
||||
4. Implement the command handler function that calls the updateTaskById function from task-manager.js
|
||||
5. Add appropriate error handling to catch and display user-friendly error messages
|
||||
6. Ensure the command follows the same pattern as other commands in the codebase
|
||||
7. Implement proper validation of input parameters
|
||||
8. Format and return appropriate success/failure messages to the user
|
||||
|
||||
Testing approach:
|
||||
- Unit test the command handler with various input combinations
|
||||
- Test error handling scenarios
|
||||
- Verify command options are correctly passed to the updateTaskById function
|
||||
|
||||
## 3. Add comprehensive error handling and validation [done]
|
||||
### Dependencies: 34.1, 34.2
|
||||
### Description: Implement robust error handling and validation for the updateTask command to ensure proper user feedback and system stability.
|
||||
### Details:
|
||||
Implementation steps:
|
||||
1. Create custom error types for different failure scenarios (TaskNotFoundError, ValidationError, etc.)
|
||||
2. Implement input validation for the taskId parameter and all options
|
||||
3. Add proper error handling for AI service failures with appropriate fallback mechanisms
|
||||
4. Implement concurrency handling to prevent conflicts when multiple updates occur simultaneously
|
||||
5. Add comprehensive logging for debugging and auditing purposes
|
||||
6. Ensure all error messages are user-friendly and actionable
|
||||
7. Implement proper HTTP status codes for API responses if applicable
|
||||
8. Add validation to ensure the task exists before attempting updates
|
||||
|
||||
Testing approach:
|
||||
- Test various error scenarios including invalid inputs, non-existent tasks, and API failures
|
||||
- Verify error messages are clear and helpful
|
||||
- Test concurrency scenarios with multiple simultaneous updates
|
||||
- Verify logging captures appropriate information for troubleshooting
|
||||
|
||||
## 4. Write comprehensive tests for updateTask command [done]
|
||||
### Dependencies: 34.1, 34.2, 34.3
|
||||
### Description: Create a comprehensive test suite for the updateTask command to ensure it works correctly in all scenarios and maintains backward compatibility.
|
||||
### Details:
|
||||
Implementation steps:
|
||||
1. Create unit tests for the updateTaskById function in task-manager.js
|
||||
- Test finding and updating tasks with various IDs
|
||||
- Test preservation of completed subtasks
|
||||
- Test different update options combinations
|
||||
- Test error handling for non-existent tasks
|
||||
2. Create unit tests for the updateTask command in commands.js
|
||||
- Test command parameter parsing
|
||||
- Test option handling
|
||||
- Test error scenarios and messages
|
||||
3. Create integration tests that verify the end-to-end flow
|
||||
- Test the command with actual AI service integration
|
||||
- Test with mock AI responses for predictable testing
|
||||
4. Implement test fixtures and mocks for consistent testing
|
||||
5. Add performance tests to ensure the command is efficient
|
||||
6. Test edge cases such as empty tasks, tasks with many subtasks, etc.
|
||||
|
||||
Testing approach:
|
||||
- Use Jest or similar testing framework
|
||||
- Implement mocks for external dependencies like AI services
|
||||
- Create test fixtures for consistent test data
|
||||
- Use snapshot testing for command output verification
|
||||
|
||||
## 5. Update CLI documentation and help text [done]
|
||||
### Dependencies: 34.2
|
||||
### Description: Update the CLI help documentation to include the new updateTask command and ensure users understand its purpose and options.
|
||||
### Details:
|
||||
Implementation steps:
|
||||
1. Add comprehensive help text for the updateTask command including:
|
||||
- Command description
|
||||
- Required and optional parameters
|
||||
- Examples of usage
|
||||
- Description of all supported options
|
||||
2. Update the main CLI help documentation to include the new command
|
||||
3. Add the command to any relevant command groups or categories
|
||||
4. Create usage examples that demonstrate common scenarios
|
||||
5. Update README.md and other documentation files to include information about the new command
|
||||
6. Add inline code comments explaining the implementation details
|
||||
7. Update any API documentation if applicable
|
||||
8. Create or update user guides with the new functionality
|
||||
|
||||
Testing approach:
|
||||
- Verify help text is displayed correctly when running `--help`
|
||||
- Review documentation for clarity and completeness
|
||||
- Have team members review the documentation for usability
|
||||
- Test examples to ensure they work as documented
|
||||
|
||||
Reference in New Issue
Block a user