Files
claude-task-master/tasks/task_058.txt
Eyal Toledano 7c8d464b82 feat(refactor): Finalize AI service migration and cleanup obsolete files
This commit completes the major refactoring initiative (Task 61) to migrate all AI-interacting task management functions to the unified service layer (`ai-services-unified.js`) and standardized configuration (`config-manager.js`).

Key Changes:

1.  **Refactor `update-task-by-id` & `update-subtask-by-id`:**

    *   Replaced direct AI client logic and config fetching with calls to `generateTextService`.

    *   Preserved original prompt logic while ensuring JSON output format is requested.

    *   Implemented robust manual JSON parsing and Zod validation for text-based AI responses.

    *   Corrected logger implementation (`logFn`/`isMCP`/`report` pattern) for both CLI and MCP contexts.

    *   Ensured correct passing of `session` context to the unified service.

    *   Refactored associated direct function wrappers (`updateTaskByIdDirect`, `updateSubtaskByIdDirect`) to remove AI client initialization and call core logic appropriately.

2.  **CLI Environment Loading:**

    *   Added `dotenv.config()` to `scripts/dev.js` to ensure consistent loading of the `.env` file for CLI operations.

3.  **Obsolete Code Removal:**

    *   Deleted unused helper files:

        *   `scripts/modules/task-manager/get-subtasks-from-ai.js`

        *   `scripts/modules/task-manager/generate-subtask-prompt.js`

        *   `scripts/modules/ai-services.js`

        *   `scripts/modules/ai-client-factory.js`

        *   `mcp-server/src/core/utils/ai-client-utils.js`

    *   Removed corresponding imports/exports from `scripts/modules/task-manager.js` and `mcp-server/src/core/task-master-core.js`.

4.  **Verification:**

    *   Successfully tested `update-task` and `update-subtask` via both CLI and MCP after refactoring.

5.  **Task Management:**

    *   Marked subtasks 61.38, 61.39, 61.40, 61.41, and 61.33 as 'done'.

    *   Includes other task content/status updates as reflected in the diff.

This completes the migration of core AI features to the new architecture, enhancing maintainability and flexibility.
2025-04-25 13:24:15 -04:00

64 lines
2.7 KiB
Plaintext

# Task ID: 58
# Title: Implement Elegant Package Update Mechanism for Task-Master
# Status: done
# Dependencies: None
# Priority: medium
# Description: Create a robust update mechanism that handles package updates gracefully, ensuring all necessary files are updated when the global package is upgraded.
# Details:
Develop a comprehensive update system with these components:
1. **Update Detection**: When task-master runs, check if the current version matches the installed version. If not, notify the user an update is available.
2. **Update Command**: Implement a dedicated `task-master update` command that:
- Updates the global package (`npm -g task-master-ai@latest`)
- Automatically runs necessary initialization steps
- Preserves user configurations while updating system files
3. **Smart File Management**:
- Create a manifest of core files with checksums
- During updates, compare existing files with the manifest
- Only overwrite files that have changed in the update
- Preserve user-modified files with an option to merge changes
4. **Configuration Versioning**:
- Add version tracking to configuration files
- Implement migration paths for configuration changes between versions
- Provide backward compatibility for older configurations
5. **Update Notifications**:
- Add a non-intrusive notification when updates are available
- Include a changelog summary of what's new
This system should work seamlessly with the existing `task-master init` command but provide a more automated and user-friendly update experience.
# Test Strategy:
Test the update mechanism with these specific scenarios:
1. **Version Detection Test**:
- Install an older version, then verify the system correctly detects when a newer version is available
- Test with minor and major version changes
2. **Update Command Test**:
- Verify `task-master update` successfully updates the global package
- Confirm all necessary files are updated correctly
- Test with and without user-modified files present
3. **File Preservation Test**:
- Modify configuration files, then update
- Verify user changes are preserved while system files are updated
- Test with conflicts between user changes and system updates
4. **Rollback Test**:
- Implement and test a rollback mechanism if updates fail
- Verify system returns to previous working state
5. **Integration Test**:
- Create a test project with the current version
- Run through the update process
- Verify all functionality continues to work after update
6. **Edge Case Tests**:
- Test updating with insufficient permissions
- Test updating with network interruptions
- Test updating from very old versions to latest