- Integrate for Grok models and for OpenRouter into the AI client factory ().
- Install necessary provider dependencies (, , and other related packages, updated core).
- Update environment variable checks () and client creation logic () for the new providers.
- Add and correct unit tests in to cover xAI and OpenRouter instantiation, error handling, and environment variable resolution.
- Corrected mock paths and names in tests to align with official package names.
- Verify all tests (28 total) pass for .
- Confirm test coverage remains high (~90%) after additions.
- Integrate for Grok models and for OpenRouter into the AI client factory ().
- Install necessary provider dependencies (, , and other related packages, updated core).
- Update environment variable checks () and client creation logic () for the new providers.
- Add and correct unit tests in to cover xAI and OpenRouter instantiation, error handling, and environment variable resolution.
- Corrected mock paths and names in tests to align with official package names.
- Verify all tests (28 total) pass for .
- Confirm test coverage remains high (~90%) after additions.
Introduces a configurable fallback model and adds support for additional AI provider API keys in the environment setup.
- **Add Fallback Model Configuration (.taskmasterconfig):**
- Implemented a new section in .
- Configured as the default fallback model, enhancing resilience if the primary model fails.
- **Update Default Model Configuration (.taskmasterconfig):**
- Changed the default model to .
- Changed the default model to .
- **Add API Key Examples (assets/env.example):**
- Added example environment variables for:
- (for OpenAI/OpenRouter)
- (for Google Gemini)
- (for XAI Grok)
- Included format comments for clarity.
Introduces a configurable fallback model and adds support for additional AI provider API keys in the environment setup.
- **Add Fallback Model Configuration (.taskmasterconfig):**
- Implemented a new section in .
- Configured as the default fallback model, enhancing resilience if the primary model fails.
- **Update Default Model Configuration (.taskmasterconfig):**
- Changed the default model to .
- Changed the default model to .
- **Add API Key Examples (assets/env.example):**
- Added example environment variables for:
- (for OpenAI/OpenRouter)
- (for Google Gemini)
- (for XAI Grok)
- Included format comments for clarity.
Refactored `config-manager.js` to handle different execution contexts (CLI vs. MCP) and fixed related Jest tests.
- Modified `readConfig` and `writeConfig` to accept an optional `explicitRoot` parameter, allowing explicit path specification (e.g., from MCP) while retaining automatic project root finding for CLI usage.
- Updated getter/setter functions (`getMainProvider`, `setMainModel`, etc.) to accept and propagate the `explicitRoot`.
- Resolved Jest testing issues for dynamic imports by using `jest.unstable_mockModule` for `fs` and `chalk` dependencies *before* the dynamic `import()`.
- Corrected console error assertions in tests to match exact logged messages.
- Updated `.cursor/rules/tests.mdc` with guidelines for `jest.unstable_mockModule` and precise console assertions.
Refactored `config-manager.js` to handle different execution contexts (CLI vs. MCP) and fixed related Jest tests.
- Modified `readConfig` and `writeConfig` to accept an optional `explicitRoot` parameter, allowing explicit path specification (e.g., from MCP) while retaining automatic project root finding for CLI usage.
- Updated getter/setter functions (`getMainProvider`, `setMainModel`, etc.) to accept and propagate the `explicitRoot`.
- Resolved Jest testing issues for dynamic imports by using `jest.unstable_mockModule` for `fs` and `chalk` dependencies *before* the dynamic `import()`.
- Corrected console error assertions in tests to match exact logged messages.
- Updated `.cursor/rules/tests.mdc` with guidelines for `jest.unstable_mockModule` and precise console assertions.
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.
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.
Change threshold parameter in analyze_project_complexity from union type to coerce.number with min/max validation. Fix Invalid type error that occurred with certain input formats. Add test implementation to avoid real API calls and proper tests for parameter validation.
Change threshold parameter in analyze_project_complexity from union type to coerce.number with min/max validation. Fix Invalid type error that occurred with certain input formats. Add test implementation to avoid real API calls and proper tests for parameter validation.
Added detailed next_step guidance to the initialize-project MCP tool response,
providing clear instructions about creating a PRD file and using parse-prd
after initialization. This helps users understand the workflow better after
project initialization.
Also added comprehensive unit tests for the initialize-project MCP tool that:
- Verify tool registration with correct parameters
- Test command construction with proper argument formatting
- Check special character escaping in command arguments
- Validate success response formatting including the new next_step field
- Test error handling and fallback mechanisms
- Verify logging behavior
The tests follow the same pattern as other MCP tool tests in the codebase.
Added detailed next_step guidance to the initialize-project MCP tool response,
providing clear instructions about creating a PRD file and using parse-prd
after initialization. This helps users understand the workflow better after
project initialization.
Also added comprehensive unit tests for the initialize-project MCP tool that:
- Verify tool registration with correct parameters
- Test command construction with proper argument formatting
- Check special character escaping in command arguments
- Validate success response formatting including the new next_step field
- Test error handling and fallback mechanisms
- Verify logging behavior
The tests follow the same pattern as other MCP tool tests in the codebase.
- Add support for --title/-t and --description/-d flags in add-task command
- Fix validation for manual creation mode (title + description)
- Implement proper testing for both prompt and manual creation modes
- Update testing documentation with Commander.js testing best practices
- Add guidance on handling variable hoisting and module initialization issues
Changeset: brave-doors-open.md
- Add support for --title/-t and --description/-d flags in add-task command
- Fix validation for manual creation mode (title + description)
- Implement proper testing for both prompt and manual creation modes
- Update testing documentation with Commander.js testing best practices
- Add guidance on handling variable hoisting and module initialization issues
Changeset: brave-doors-open.md
Overhauls the project root detection system with a hierarchical precedence mechanism that intelligently locates tasks.json and identifies project roots. This improves user experience by reducing the need for explicit path parameters and enhances cross-platform compatibility.
Key Improvements:
- Implement hierarchical precedence for project root detection:
* Environment variable override (TASK_MASTER_PROJECT_ROOT)
* Explicitly provided --project-root parameter
* Cached project root from previous successful operations
* Current directory with project markers
* Parent directory traversal to find tasks.json
* Package directory as fallback
- Create comprehensive PROJECT_MARKERS detection system with 20+ common indicators:
* Task Master specific files (tasks.json, tasks/tasks.json)
* Version control directories (.git, .svn)
* Package manifests (package.json, pyproject.toml, Gemfile, go.mod, Cargo.toml)
* IDE/editor configurations (.cursor, .vscode, .idea)
* Dependency directories (node_modules, venv, .venv)
* Configuration files (.env, tsconfig.json, webpack.config.js)
* CI/CD files (.github/workflows, .gitlab-ci.yml, .circleci/config.yml)
- DRY refactoring of path utilities:
* Centralize path-related functions in core/utils/path-utils.js
* Export PROJECT_MARKERS as a single source of truth
* Add caching via lastFoundProjectRoot for performance optimization
- Enhanced user experience:
* Improve error messages with specific troubleshooting guidance
* Add detailed logging to indicate project root detection source
* Update tool parameter descriptions for better clarity
* Add recursive parent directory searching for tasks.json
Testing:
- Verified in local dev environment
- Added unit tests for the progress bar visualization
- Updated "automatically detected" description in MCP tools
This commit addresses Task #38: Implement robust project root handling for file paths.
Overhauls the project root detection system with a hierarchical precedence mechanism that intelligently locates tasks.json and identifies project roots. This improves user experience by reducing the need for explicit path parameters and enhances cross-platform compatibility.
Key Improvements:
- Implement hierarchical precedence for project root detection:
* Environment variable override (TASK_MASTER_PROJECT_ROOT)
* Explicitly provided --project-root parameter
* Cached project root from previous successful operations
* Current directory with project markers
* Parent directory traversal to find tasks.json
* Package directory as fallback
- Create comprehensive PROJECT_MARKERS detection system with 20+ common indicators:
* Task Master specific files (tasks.json, tasks/tasks.json)
* Version control directories (.git, .svn)
* Package manifests (package.json, pyproject.toml, Gemfile, go.mod, Cargo.toml)
* IDE/editor configurations (.cursor, .vscode, .idea)
* Dependency directories (node_modules, venv, .venv)
* Configuration files (.env, tsconfig.json, webpack.config.js)
* CI/CD files (.github/workflows, .gitlab-ci.yml, .circleci/config.yml)
- DRY refactoring of path utilities:
* Centralize path-related functions in core/utils/path-utils.js
* Export PROJECT_MARKERS as a single source of truth
* Add caching via lastFoundProjectRoot for performance optimization
- Enhanced user experience:
* Improve error messages with specific troubleshooting guidance
* Add detailed logging to indicate project root detection source
* Update tool parameter descriptions for better clarity
* Add recursive parent directory searching for tasks.json
Testing:
- Verified in local dev environment
- Added unit tests for the progress bar visualization
- Updated "automatically detected" description in MCP tools
This commit addresses Task #38: Implement robust project root handling for file paths.
Adds unit tests to tests/unit/task-manager.test.js for the parse-prd command confirmation prompt when overwriting an existing tasks.json file. Also fixes the existing directory creation test. Refs #67, Fixes#65