feat(mcp): Refactor initialize_project tool for direct execution
Refactors the initialize_project MCP tool to call a dedicated direct function (initializeProjectDirect) instead of executing the CLI command. This improves reliability and aligns it with other MCP tools. Key changes include: Modified initialize-project.js to call initializeProjectDirect, required projectRoot parameter, implemented handleApiResult for MCP response formatting, enhanced direct function to prioritize args.projectRoot over session-derived paths, added validation to prevent initialization in invalid directories, forces yes:true for non-interactive use, ensures process.chdir() targets validated directory, and added isSilentMode() checks to suppress console output during MCP operations. This resolves issues where the tool previously failed due to incorrect fallback directory resolution when session context was incomplete.
This commit is contained in:
39
tasks/task_060.txt
Normal file
39
tasks/task_060.txt
Normal file
@@ -0,0 +1,39 @@
|
||||
# Task ID: 60
|
||||
# Title: Implement isValidTaskId Utility Function
|
||||
# Status: pending
|
||||
# Dependencies: None
|
||||
# Priority: medium
|
||||
# Description: Create a utility function that validates whether a given string conforms to the project's task ID format specification.
|
||||
# Details:
|
||||
Develop a function named `isValidTaskId` that takes a string parameter and returns a boolean indicating whether the string matches our task ID format. The task ID format follows these rules:
|
||||
|
||||
1. Must start with 'TASK-' prefix (case-sensitive)
|
||||
2. Followed by a numeric value (at least 1 digit)
|
||||
3. The numeric portion should not have leading zeros (unless it's just zero)
|
||||
4. The total length should be between 6 and 12 characters inclusive
|
||||
|
||||
Example valid IDs: 'TASK-1', 'TASK-42', 'TASK-1000'
|
||||
Example invalid IDs: 'task-1' (wrong case), 'TASK-' (missing number), 'TASK-01' (leading zero), 'TASK-A1' (non-numeric), 'TSK-1' (wrong prefix)
|
||||
|
||||
The function should be placed in the utilities directory and properly exported. Include JSDoc comments for clear documentation of parameters and return values.
|
||||
|
||||
# Test Strategy:
|
||||
Testing should include the following cases:
|
||||
|
||||
1. Valid task IDs:
|
||||
- 'TASK-1'
|
||||
- 'TASK-123'
|
||||
- 'TASK-9999'
|
||||
|
||||
2. Invalid task IDs:
|
||||
- Null or undefined input
|
||||
- Empty string
|
||||
- 'task-1' (lowercase prefix)
|
||||
- 'TASK-' (missing number)
|
||||
- 'TASK-01' (leading zero)
|
||||
- 'TASK-ABC' (non-numeric suffix)
|
||||
- 'TSK-1' (incorrect prefix)
|
||||
- 'TASK-12345678901' (too long)
|
||||
- 'TASK1' (missing hyphen)
|
||||
|
||||
Implement unit tests using the project's testing framework. Each test case should have a clear assertion message explaining why the test failed if it does. Also include edge cases such as strings with whitespace ('TASK- 1') or special characters ('TASK-1#').
|
||||
@@ -2726,6 +2726,16 @@
|
||||
"priority": "medium",
|
||||
"details": "Currently, the application is attempting to manually modify users' package.json files, which is not the recommended approach for npm packages. Instead:\n\n1. Review all code that directly manipulates package.json files in users' projects\n2. Remove these manual modifications\n3. Properly define all dependencies in the package.json of task-master-ai itself\n4. Ensure all peer dependencies are correctly specified\n5. For any scripts that need to be available to users, use proper npm bin linking or npx commands\n6. Update the installation process to leverage npm's built-in dependency management\n7. If configuration is needed in users' projects, implement a proper initialization command that creates config files rather than modifying package.json\n8. Document the new approach in the README and any other relevant documentation\n\nThis change will make the package more reliable, follow npm best practices, and prevent potential conflicts or errors when modifying users' project files.",
|
||||
"testStrategy": "1. Create a fresh test project directory\n2. Install the updated task-master-ai package using npm install task-master-ai\n3. Verify that no code attempts to modify the test project's package.json\n4. Confirm all dependencies are properly installed in node_modules\n5. Test all commands to ensure they work without the previous manual package.json modifications\n6. Try installing in projects with various existing configurations to ensure no conflicts occur\n7. Test the uninstall process to verify it cleanly removes the package without leaving unwanted modifications\n8. Verify the package works in different npm environments (npm 6, 7, 8) and with different Node.js versions\n9. Create an integration test that simulates a real user workflow from installation through usage"
|
||||
},
|
||||
{
|
||||
"id": 60,
|
||||
"title": "Implement isValidTaskId Utility Function",
|
||||
"description": "Create a utility function that validates whether a given string conforms to the project's task ID format specification.",
|
||||
"details": "Develop a function named `isValidTaskId` that takes a string parameter and returns a boolean indicating whether the string matches our task ID format. The task ID format follows these rules:\n\n1. Must start with 'TASK-' prefix (case-sensitive)\n2. Followed by a numeric value (at least 1 digit)\n3. The numeric portion should not have leading zeros (unless it's just zero)\n4. The total length should be between 6 and 12 characters inclusive\n\nExample valid IDs: 'TASK-1', 'TASK-42', 'TASK-1000'\nExample invalid IDs: 'task-1' (wrong case), 'TASK-' (missing number), 'TASK-01' (leading zero), 'TASK-A1' (non-numeric), 'TSK-1' (wrong prefix)\n\nThe function should be placed in the utilities directory and properly exported. Include JSDoc comments for clear documentation of parameters and return values.",
|
||||
"testStrategy": "Testing should include the following cases:\n\n1. Valid task IDs:\n - 'TASK-1'\n - 'TASK-123'\n - 'TASK-9999'\n\n2. Invalid task IDs:\n - Null or undefined input\n - Empty string\n - 'task-1' (lowercase prefix)\n - 'TASK-' (missing number)\n - 'TASK-01' (leading zero)\n - 'TASK-ABC' (non-numeric suffix)\n - 'TSK-1' (incorrect prefix)\n - 'TASK-12345678901' (too long)\n - 'TASK1' (missing hyphen)\n\nImplement unit tests using the project's testing framework. Each test case should have a clear assertion message explaining why the test failed if it does. Also include edge cases such as strings with whitespace ('TASK- 1') or special characters ('TASK-1#').",
|
||||
"status": "pending",
|
||||
"dependencies": [],
|
||||
"priority": "medium"
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user