* Version Packages
* chore: add eyal instead of crunchyman to eyal's feature
* chore: run format
---------
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Ralph Khreish <35776126+Crunchyman-ralph@users.noreply.github.com>
* feat(task-104): Complete task 104 - Implement scope-up and scope-down CLI Commands
- Added new CLI commands 'scope-up' and 'scope-down' with comma-separated ID support
- Implemented strength levels (light/regular/heavy) and custom prompt functionality
- Created core complexity adjustment logic with AI integration
- Added MCP tool equivalents for integrated environments
- Comprehensive error handling and task validation
- Full test coverage with TDD approach
- Updated task manager core and UI components
Task 104: Implement 'scope-up' and 'scope-down' CLI Commands for Dynamic Task Complexity Adjustment - Complete implementation with CLI, MCP integration, and testing
* chore: Add changeset for scope-up and scope-down features
- Comprehensive user-facing description with usage examples
- Key features and benefits explanation
- CLI and MCP integration details
- Real-world use cases for agile workflows
* feat(extension): Add scope-up and scope-down to VS Code extension task details
- Added useScopeUpTask and useScopeDownTask hooks in useTaskQueries.ts
- Enhanced AIActionsSection with Task Complexity Adjustment section
- Added strength selection (light/regular/heavy) and custom prompt support
- Integrated scope buttons with proper loading states and error handling
- Uses existing mcpRequest handler for scope_up_task and scope_down_task tools
- Maintains consistent UI patterns with existing AI actions
Extension now supports dynamic task complexity adjustment directly from task details view.
* fix: normalize task IDs to numbers on load to fix comparison issues
When tasks.json contains string IDs (e.g., "5" instead of 5), task lookups
fail because the code uses parseInt() and strict equality (===) for comparisons.
This fix normalizes all task and subtask IDs to numbers when loading the JSON,
ensuring consistent comparisons throughout the codebase without requiring
changes to multiple comparison locations.
Fixes task not found errors when using string IDs in tasks.json.
* Added test
* Don't mess up formatting
* Fix formatting once and for all
* Update scripts/modules/utils.js
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
* Update scripts/modules/utils.js
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
* Update scripts/modules/utils.js
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
* fix: normalize task IDs to numbers on load to fix comparison issues
- Added normalizeTaskIds function to convert string IDs to numbers
- Applied normalization in readJSON for all code paths
- Fixed set-task-status, add-task, and move-task to normalize IDs when working with raw data
- Exported normalizeTaskIds function for use in other modules
- Added test case for string ID normalization
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
* Simplified implementation
* refactor: normalize IDs once when loading JSON instead of scattered calls
- Normalize all tags' data when creating _rawTaggedData in readJSON
- Add support for handling malformed dotted subtask IDs (e.g., "5.1" -> 1)
- Remove redundant normalizeTaskIds calls from set-task-status, add-task, and move-task
- Add comprehensive test for mixed ID formats (string IDs and dotted notation)
- Cleaner, more maintainable solution that normalizes IDs at load time
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
* chore: run format to resolve CI issues
---------
Co-authored-by: Carl Mercier <carl@carlmercier.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: Claude <noreply@anthropic.com>
Removes the default empty array value from the complexity report option to properly detect when tags are explicitly provided vs when no tags are provided, fixing the expand --all command behavior with tagged tasks.
Co-authored-by: Ben Vargas <ben@example.com>
* Version Packages
* chore: fix release 0.22
todo: fix CI
* chore: run format
---------
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Ralph Khreish <35776126+Crunchyman-ralph@users.noreply.github.com>
* feat: Add Kiro hooks and configuration for Taskmaster integration
- Introduced multiple Kiro hooks to automate task management workflows, including:
- Code Change Task Tracker
- Complexity Analyzer
- Daily Standup Assistant
- Git Commit Task Linker
- Import Cleanup on Delete
- New File Boilerplate
- PR Readiness Checker
- Task Dependency Auto-Progression
- Test Success Task Completer
- Added .mcp.json configuration for Taskmaster AI integration.
- Updated development workflow documentation to reflect new hook-driven processes and best practices.
This commit enhances the automation capabilities of Taskmaster, streamlining task management and improving developer efficiency.
* chore: run format
* chore: improve unit tests on kiro rules
* chore: run format
* chore: run format
* feat: improve PR and add changeset
* fix: bump ai-sdk-provider-gemini-cli to v0.1.1
Updates ai-sdk-provider-gemini-cli from v0.0.4 to v0.1.1 to fix a breaking change
introduced in @google/gemini-cli-core v0.1.12+ where createContentGeneratorConfig
signature changed, causing "config.getModel is not a function" errors.
The new version includes:
- Fixed compatibility with @google/gemini-cli-core ^0.1.13
- Added proxy support via configuration
- Resolved the breaking API change
Fixes compatibility issues when using newer versions of gemini-cli-core.
See: https://github.com/ben-vargas/ai-sdk-provider-gemini-cli/releases/tag/v0.1.1
* chore: fix package-lock.json being too big
---------
Co-authored-by: Ben Vargas <ben@example.com>
Co-authored-by: Ralph Khreish <35776126+Crunchyman-ralph@users.noreply.github.com>
* fix(profiles): fix vscode profile generation
- Add .instructions.md extension for VSCode Copilot instructions file.
- Add customReplacement to remove unsupported property `alwaysApply` from YAML front-matter in VSCode instructions files.
- Add missing property `targetExtension` to the base profile object to
support the change to file extension.
* chore: run format
---------
Co-authored-by: Ralph Khreish <35776126+Crunchyman-ralph@users.noreply.github.com>
* Don't generate task files unless requested
* add changeset
* switch to optional generate flag instead of skip-generate based on new default
* switch generate default to false and update flags and docs
* revert DO/DON'T section
* use simpler non ANSI-C quoting
* fix: improve projectRoot
* fix: improve task-master lang command
* feat: add documentation to the readme so more people can access it
* fix: expand command subtask dependency validation
* fix: update command more reliable with perplexity and other models
* chore: fix CI
* chore: implement requested changes
* chore: fix CI
* remove dash in server name
* add OLLAMA_API_KEY to VS Code MCP instructions
* transform vscode mcp to correct format
* add changeset
* switch back to task-master-ai
* use task-master-ai
* refactor(context): Standardize tag and projectRoot handling across all task tools
This commit unifies context management by adopting a boundary-first resolution strategy. All task-scoped tools now resolve `tag` and `projectRoot` at their entry point and forward these values to the underlying direct functions.
This approach centralizes context logic, ensuring consistent behavior and enhanced flexibility in multi-tag environments.
* fix(tag): Clean up tag handling in task functions and sync process
This commit refines the handling of the `tag` parameter across multiple functions, ensuring consistent context management. The `tag` is now passed more efficiently in `listTasksDirect`, `setTaskStatusDirect`, and `syncTasksToReadme`, improving clarity and reducing redundancy. Additionally, a TODO comment has been added in `sync-readme.js` to address future tag support enhancements.
* feat(tag): Implement Boundary-First Tag Resolution for consistent tag handling
This commit introduces Boundary-First Tag Resolution in the task manager, ensuring consistent and deterministic tag handling across CLI and MCP. This change resolves potential race conditions and improves the reliability of tag-specific operations.
Additionally, the `expandTask` function has been updated to use the resolved tag when writing JSON, enhancing data integrity during task updates.
* chore(biome): formatting
* fix(expand-task): Update writeJSON call to use tag instead of resolvedTag
* fix(commands): Enhance complexity report path resolution and task initialization
`resolveComplexityReportPath` function to streamline output path generation based on tag context and user-defined output.
- Improved clarity and maintainability of command handling by centralizing path resolution logic.
* Fix: unknown currentTag
* fix(task-manager): Update generateTaskFiles calls to include tag and projectRoot parameters
This commit modifies the `moveTask` and `updateSubtaskById` functions to pass the `tag` and `projectRoot` parameters to the `generateTaskFiles` function. This ensures that task files are generated with the correct context when requested, enhancing consistency in task management operations.
* fix(commands): Refactor tag handling and complexity report path resolution
This commit updates the `registerCommands` function to utilize `taskMaster.getCurrentTag()` for consistent tag retrieval across command actions. It also enhances the initialization of `TaskMaster` by passing the tag directly, improving clarity and maintainability. The complexity report path resolution is streamlined to ensure correct file naming based on the current tag context.
* fix(task-master): Update complexity report path expectations in tests
This commit modifies the `initTaskMaster` test to expect a valid string for the complexity report path, ensuring it matches the expected file naming convention. This change enhances test reliability by verifying the correct output format when the path is generated.
* fix(set-task-status): Enhance logging and tag resolution in task status updates
This commit improves the logging output in the `registerSetTaskStatusTool` function to include the tag context when setting task statuses. It also updates the tag handling by resolving the tag using the `resolveTag` utility, ensuring that the correct tag is used when updating task statuses. Additionally, the `setTaskStatus` function is modified to remove the tag parameter from the `readJSON` and `writeJSON` calls, streamlining the data handling process.
* fix(commands, expand-task, task-manager): Add complexity report option and enhance path handling
This commit introduces a new `--complexity-report` option in the `registerCommands` function, allowing users to specify a custom path for the complexity report. The `expandTask` function is updated to accept the `complexityReportPath` from the context, ensuring it is utilized correctly during task expansion. Additionally, the `setTaskStatus` function now includes the `tag` parameter in the `readJSON` and `writeJSON` calls, improving task status updates with proper context. The `initTaskMaster` function is also modified to create parent directories for output paths, enhancing file handling robustness.
* fix(expand-task): Add complexityReportPath to context for task expansion tests
This commit updates the test for the `expandTask` function by adding the `complexityReportPath` to the context object. This change ensures that the complexity report path is correctly utilized in the test, aligning with recent enhancements to complexity report handling in the task manager.
* chore: implement suggested changes
* fix(parse-prd): Clarify tag parameter description for task organization
Updated the documentation for the `tag` parameter in the `parse-prd.js` file to provide a clearer context on its purpose for organizing tasks into separate task lists.
* Fix Inconsistent tag resolution pattern.
* fix: Enhance complexity report path handling with tag support
This commit updates various functions to incorporate the `tag` parameter when resolving complexity report paths. The `expandTaskDirect`, `resolveComplexityReportPath`, and related tools now utilize the current tag context, improving consistency in task management. Additionally, the complexity report path is now correctly passed through the context in the `expand-task` and `set-task-status` tools, ensuring accurate report retrieval based on the active tag.
* Updated the JSDoc for the `tag` parameter in the `show-task.js` file.
* Remove redundant comment on tag parameter in readJSON call
* Remove unused import for getTagAwareFilePath
* Add missed complexityReportPath to args for task expansion
* fix(tests): Enhance research tests with tag-aware functionality
This commit updates the `research.test.js` file to improve the testing of the `performResearch` function by incorporating tag-aware functionality. Key changes include mocking the `findProjectRoot` to return a valid path, enhancing the `ContextGatherer` and `FuzzyTaskSearch` mocks, and adding comprehensive tests for tag parameter handling in various scenarios. The tests now cover passing different tag values, ensuring correct behavior when tags are provided, undefined, or null, and validating the integration of tags in task discovery and context gathering processes.
* Remove unused import for
* fix: Refactor complexity report path handling and improve argument destructuring
This commit enhances the `expandTaskDirect` function by improving the destructuring of arguments for better readability. It also updates the `analyze.js` and `analyze-task-complexity.js` files to utilize the new `resolveComplexityReportOutputPath` function, ensuring tag-aware resolution of output paths. Additionally, logging has been added to provide clarity on the report path being used.
* test: Add complexity report tag isolation tests and improve path handling
This commit introduces a new test file for complexity report tag isolation, ensuring that different tags maintain separate complexity reports. It enhances the existing tests in `analyze-task-complexity.test.js` by updating expectations to use `expect.stringContaining` for file paths, improving robustness against path changes. The new tests cover various scenarios, including path resolution and report generation for both master and feature tags, ensuring no cross-tag contamination occurs.
* Update scripts/modules/task-manager/list-tasks.js
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
* Update scripts/modules/task-manager/list-tasks.js
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
* test(complexity-report): Fix tag slugification in filename expectations
- Update mocks to use slugifyTagForFilePath for cross-platform compatibility
- Replace raw tag values with slugified versions in expected filenames
- Fix test expecting 'feature/user-auth-v2' to expect 'feature-user-auth-v2'
- Align test with actual filename generation logic that sanitizes special chars
---------
Co-authored-by: Ralph Khreish <35776126+Crunchyman-ralph@users.noreply.github.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
* update MCP server name to task-master-ai for consistency
* add changeset
* update cursor link & switch to https
* switch back to Add to Cursor button (https link)
* update changeset
* update changeset
* update changeset
* update changeset
* use GitHub markdown format
* add opencode to profile lists
* add opencode profile / modify mcp config after add
* add changeset
* not necessary; main config being updated
* add issue link
* add/fix tests
* fix url and docsUrl
* update test for new urls
* fix formatting
* update/fix tests
* Amp profile + tests
* generatlize to Agent instead of Claude Code to support any agent
* add changeset
* unnecessary tab formatting
* fix exports
* fix formatting
* feat: complete Groq provider integration and add Kimi K2 model
- Add missing getRequiredApiKeyName() method to GroqProvider class
- Register GroqProvider in ai-services-unified.js PROVIDERS object
- Add Groq API key handling to config-manager.js (isApiKeySet and getMcpApiKeyStatus)
- Add GROQ_API_KEY to env.example with format hint
- Add moonshotai/kimi-k2-instruct model to Groq provider ($1/$3 per 1M tokens, 16k max)
- Fix import sorting for linting compliance
- Add GroqProvider mock to ai-services-unified tests
Fixes missing implementation pieces that prevented Groq provider from working.
* chore: improve changeset
---------
Co-authored-by: Ben Vargas <ben@example.com>
Co-authored-by: Ralph Khreish <35776126+Crunchyman-ralph@users.noreply.github.com>
* fix: prevent CLAUDE.md overwrite by using imports
- Copy Task Master instructions to .taskmaster/CLAUDE.md
- Add import section to user's CLAUDE.md instead of overwriting
- Preserve existing user content
- Clean removal of Task Master content on uninstall
Closes#929
* chore: add changeset for Claude import fix
- Add grok-4 to supported models with $3/$15 per 1M token pricing
- Enable main, fallback, and research roles for grok-4
- Update models.md documentation to include grok-4 in all tables
* move claude rules and commands to assets/claude
* update claude profile to copy assets/claude to .claude
* fix formatting
* feat(profiles): Implement unified profile system
- Convert Claude and Codex profiles to use createProfile() factory
- Remove simple vs complex profile distinction in rule transformer
- Unify convertAllRulesToProfileRules() to handle all profiles consistently
- Fix mcpConfigPath construction in base-profile.js for null mcpConfigName
- Update terminology from 'simpleProfiles' to 'assetOnlyProfiles' throughout
- Ensure Claude .claude directory copying works in both CLI and MCP contexts
- All profiles now follow same execution flow with proper lifecycle functions
Changes:
- src/profiles/claude.js: Convert to createProfile() factory pattern
- src/profiles/codex.js: Convert to createProfile() factory pattern
- src/utils/rule-transformer.js: Unified profile handling logic
- src/utils/profiles.js: Remove simple profile categorization
- src/profiles/base-profile.js: Fix mcpConfigPath construction
- scripts/modules/commands.js: Update variable naming
- tests/: Update all tests for unified system and terminology
Fixes Claude profile asset copying issue in MCP context.
All tests passing (617 passed, 11 skipped).
* re-checkin claude files
* fix formatting
* chore: clean up test Claude rules files
* chore: add changeset for unified profile system
* add claude files back
* add changeset
* restore proper gitignore
* remove claude agents file from root
* remove incorrect doc
* simplify profiles and update tests
* update changeset
* update changeset
* remove profile specific code
* streamline profiles with defaults and update tests
* update changeset
* add newline at end of gitignore
* restore changes
* streamline profiles with defaults; update tests and add vscode test
* update rule profile tests
* update wording for clearer profile management
* refactor and clarify terminology
* use original projectRoot var name
* revert param desc
* use updated claude assets from neno
* add "YOUR_" before api key here
* streamline codex profile
* add gemini profile
* update gemini profile
* update tests
* relocate function
* update rules interactive setup Gemini desc
* remove duplicative code
* add comma
* feat: support MCP sampling
* support provider registry
* use standard config options for MCP provider
* update fastmcp to support passing params to requestSampling
* move key name definition to base provider
* moved check for required api key to provider class
* remove unused code
* more cleanup
* more cleanup
* refactor provider
* remove not needed files
* more cleanup
* more cleanup
* more cleanup
* update docs
* fix tests
* add tests
* format fix
* clean files
* merge fixes
* format fix
* feat: add support for MCP Sampling as AI provider
* initial mcp ai sdk
* fix references to old provider
* update models
* lint
* fix gemini-cli conflicts
* ran format
* Update src/provider-registry/index.js
Co-authored-by: Ralph Khreish <35776126+Crunchyman-ralph@users.noreply.github.com>
* fix circular dependency
Circular Dependency Issue ✅ FIXED
Root Cause: BaseAIProvider was importing from index.js, which includes commands.js and other modules that eventually import back to AI providers
Solution: Changed imports to use direct paths to avoid circular dependencies:
Updated base-provider.js to import log directly from utils.js
Updated gemini-cli.js to import log directly from utils.js
Result: Fixed 11 failing tests in mcp-provider.test.js
* fix gemini test
* fix(claude-code): recover from CLI JSON truncation bug (#913) (#920)
Gracefully handle SyntaxError thrown by @anthropic-ai/claude-code when the CLI truncates large JSON outputs (4–16 kB cut-offs).\n\nKey points:\n• Detect JSON parse error + existing buffered text in both doGenerate() and doStream() code paths.\n• Convert the failure into a recoverable 'truncated' finish state and push a provider-warning.\n• Allows Task Master to continue parsing long PRDs / expand-task operations instead of crashing.\n\nA patch changeset (.changeset/claude-code-json-truncation.md) is included for the next release.\n\nRef: eyaltoledano/claude-task-master#913
* docs: fix gemini-cli authentication documentation (#923)
Remove erroneous 'gemini auth login' command references and replace with correct 'gemini' command authentication flow. Update documentation to reflect proper OAuth setup process via the gemini CLI interactive interface.
* fix tests
* fix: update ai-sdk-provider-gemini-cli to 0.0.4 for improved authentication (#932)
- Fixed authentication compatibility issues with Google auth
- Added support for 'api-key' auth type alongside 'gemini-api-key'
- Resolved "Unsupported authType: undefined" runtime errors
- Updated @google/gemini-cli-core dependency to 0.1.9
- Improved documentation and removed invalid auth references
- Maintained backward compatibility while enhancing type validation
* call logging directly
Need to patch upstream fastmcp to allow easier access and bootstrap the TM mcp logger to use the fastmcp logger which today is only exposed in the tools handler
* fix tests
* removing logs until we figure out how to pass mcp logger
* format
* fix tests
* format
* clean up
* cleanup
* readme fix
---------
Co-authored-by: Oren Melamed <oren.m@gloat.com>
Co-authored-by: Ralph Khreish <35776126+Crunchyman-ralph@users.noreply.github.com>
Co-authored-by: Ben Vargas <ben@vargas.com>
* feat: Add GROQ API key support and integrate GROQ provider
* feat: Add support for Groq provider
- Added a new changeset documenting the addition of Groq provider support.
-Ran npm run format
* feat: Add support for Groq provider
- Added a new changeset documenting the addition of Groq provider support.
-Ran npm run format
Gracefully handle SyntaxError thrown by @anthropic-ai/claude-code when the CLI truncates large JSON outputs (4–16 kB cut-offs).\n\nKey points:\n• Detect JSON parse error + existing buffered text in both doGenerate() and doStream() code paths.\n• Convert the failure into a recoverable 'truncated' finish state and push a provider-warning.\n• Allows Task Master to continue parsing long PRDs / expand-task operations instead of crashing.\n\nA patch changeset (.changeset/claude-code-json-truncation.md) is included for the next release.\n\nRef: eyaltoledano/claude-task-master#913
* Feat: Implemented advanced settings for Claude Code AI provider
- Added new 'claudeCode' property to default config
- Added getters and validation functions to 'config-manager.js'
- Added new 'isEmpty' utility to 'utils.js'
- Added new constants file 'commands.js' for AI_COMMAND_NAMES
- Updated Claude Code AI provider to use new config functions
- Updated 'claude-code-usage.md' documentation
- Added 'config-manager.test.js' tests to cover new settings
* chore: run format
---------
Co-authored-by: Ralph Khreish <35776126+Crunchyman-ralph@users.noreply.github.com>