157 lines
8.8 KiB
Plaintext
157 lines
8.8 KiB
Plaintext
# 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
|
|
|