Compare commits
7 Commits
fix/normal
...
v0.16.1
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
41d9dbbe6d | ||
|
|
6e0d866756 | ||
|
|
926aa61a4e | ||
|
|
293b59bac6 | ||
|
|
1809c4ed7b | ||
|
|
6e406958c1 | ||
|
|
074b7ec0bc |
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
"task-master-ai": patch
|
|
||||||
---
|
|
||||||
|
|
||||||
Fix bedrock issues
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
"task-master-ai": patch
|
|
||||||
---
|
|
||||||
|
|
||||||
Fix MCP tool calls logging errors
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
'task-master-ai': minor
|
|
||||||
---
|
|
||||||
|
|
||||||
Add AWS bedrock support
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
---
|
|
||||||
'task-master-ai': minor
|
|
||||||
---
|
|
||||||
|
|
||||||
# Add Google Vertex AI Provider Integration
|
|
||||||
|
|
||||||
- Implemented `VertexAIProvider` class extending BaseAIProvider
|
|
||||||
- Added authentication and configuration handling for Vertex AI
|
|
||||||
- Updated configuration manager with Vertex-specific getters
|
|
||||||
- Modified AI services unified system to integrate the provider
|
|
||||||
- Added documentation for Vertex AI setup and configuration
|
|
||||||
- Updated environment variable examples for Vertex AI support
|
|
||||||
- Implemented specialized error handling for Vertex-specific issues
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
'task-master-ai': minor
|
|
||||||
---
|
|
||||||
|
|
||||||
Add support for Azure
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
"task-master-ai": patch
|
|
||||||
---
|
|
||||||
|
|
||||||
Update rules for new directory structure
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
"task-master-ai": minor
|
|
||||||
---
|
|
||||||
|
|
||||||
Increased minimum required node version to > 18 (was > 14)
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
"task-master-ai": patch
|
|
||||||
---
|
|
||||||
|
|
||||||
Fix bug in expand_all mcp tool
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
---
|
|
||||||
"task-master-ai": patch
|
|
||||||
---
|
|
||||||
|
|
||||||
Fix double .taskmaster directory paths in file resolution utilities
|
|
||||||
|
|
||||||
- Closes #636
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
'task-master-ai': minor
|
|
||||||
---
|
|
||||||
|
|
||||||
Renamed baseUrl to baseURL
|
|
||||||
@@ -1,18 +0,0 @@
|
|||||||
{
|
|
||||||
"mode": "exit",
|
|
||||||
"tag": "rc",
|
|
||||||
"initialVersions": {
|
|
||||||
"task-master-ai": "0.15.0"
|
|
||||||
},
|
|
||||||
"changesets": [
|
|
||||||
"hungry-geese-work",
|
|
||||||
"itchy-taxes-sip",
|
|
||||||
"lemon-apes-sort",
|
|
||||||
"new-colts-flow",
|
|
||||||
"plain-bottles-stand",
|
|
||||||
"shaggy-rice-exist",
|
|
||||||
"sharp-flies-call",
|
|
||||||
"spotty-buttons-walk",
|
|
||||||
"tidy-seals-rule"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
'task-master-ai': patch
|
|
||||||
---
|
|
||||||
|
|
||||||
Fix max_tokens error when trying to use claude-sonnet-4 and claude-opus-4
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
---
|
|
||||||
'task-master-ai': minor
|
|
||||||
---
|
|
||||||
|
|
||||||
Add TASK_MASTER_PROJECT_ROOT env variable supported in mcp.json and .env for project root resolution
|
|
||||||
|
|
||||||
- Some users were having issues where the MCP wasn't able to detect the location of their project root, you can now set the `TASK_MASTER_PROJECT_ROOT` environment variable to the root of your project.
|
|
||||||
@@ -1,31 +0,0 @@
|
|||||||
---
|
|
||||||
"task-master-ai": minor
|
|
||||||
---
|
|
||||||
|
|
||||||
Consolidate Task Master files into unified .taskmaster directory structure
|
|
||||||
|
|
||||||
This release introduces a new consolidated directory structure that organizes all Task Master files under a single `.taskmaster/` directory for better project organization and cleaner workspace management.
|
|
||||||
|
|
||||||
**New Directory Structure:**
|
|
||||||
|
|
||||||
- `.taskmaster/tasks/` - Task files (previously `tasks/`)
|
|
||||||
- `.taskmaster/docs/` - Documentation including PRD files (previously `scripts/`)
|
|
||||||
- `.taskmaster/reports/` - Complexity analysis reports (previously `scripts/`)
|
|
||||||
- `.taskmaster/templates/` - Template files like example PRD
|
|
||||||
- `.taskmaster/config.json` - Configuration (previously `.taskmasterconfig`)
|
|
||||||
|
|
||||||
**Migration & Backward Compatibility:**
|
|
||||||
|
|
||||||
- Existing projects continue to work with legacy file locations
|
|
||||||
- New projects use the consolidated structure automatically
|
|
||||||
- Run `task-master migrate` to move existing projects to the new structure
|
|
||||||
- All CLI commands and MCP tools automatically detect and use appropriate file locations
|
|
||||||
|
|
||||||
**Benefits:**
|
|
||||||
|
|
||||||
- Cleaner project root with Task Master files organized in one location
|
|
||||||
- Reduced file scatter across multiple directories
|
|
||||||
- Improved project navigation and maintenance
|
|
||||||
- Consistent file organization across all Task Master projects
|
|
||||||
|
|
||||||
This change maintains full backward compatibility while providing a migration path to the improved structure.
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
"task-master-ai": patch
|
|
||||||
---
|
|
||||||
|
|
||||||
Fix MCP crashing after certain commands due to console logs
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
'task-master-ai': patch
|
|
||||||
---
|
|
||||||
|
|
||||||
Fix add-task MCP command causing an error
|
|
||||||
74
CHANGELOG.md
74
CHANGELOG.md
@@ -1,5 +1,79 @@
|
|||||||
# task-master-ai
|
# task-master-ai
|
||||||
|
|
||||||
|
## 0.16.1
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- [#641](https://github.com/eyaltoledano/claude-task-master/pull/641) [`ad61276`](https://github.com/eyaltoledano/claude-task-master/commit/ad612763ffbdd35aa1b593c9613edc1dc27a8856) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - Fix bedrock issues
|
||||||
|
|
||||||
|
- [#648](https://github.com/eyaltoledano/claude-task-master/pull/648) [`9b4168b`](https://github.com/eyaltoledano/claude-task-master/commit/9b4168bb4e4dfc2f4fb0cf6bd5f81a8565879176) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - Fix MCP tool calls logging errors
|
||||||
|
|
||||||
|
- [#641](https://github.com/eyaltoledano/claude-task-master/pull/641) [`ad61276`](https://github.com/eyaltoledano/claude-task-master/commit/ad612763ffbdd35aa1b593c9613edc1dc27a8856) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - Update rules for new directory structure
|
||||||
|
|
||||||
|
- [#648](https://github.com/eyaltoledano/claude-task-master/pull/648) [`9b4168b`](https://github.com/eyaltoledano/claude-task-master/commit/9b4168bb4e4dfc2f4fb0cf6bd5f81a8565879176) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - Fix bug in expand_all mcp tool
|
||||||
|
|
||||||
|
- [#641](https://github.com/eyaltoledano/claude-task-master/pull/641) [`ad61276`](https://github.com/eyaltoledano/claude-task-master/commit/ad612763ffbdd35aa1b593c9613edc1dc27a8856) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - Fix MCP crashing after certain commands due to console logs
|
||||||
|
|
||||||
|
## 0.16.0
|
||||||
|
|
||||||
|
### Minor Changes
|
||||||
|
|
||||||
|
- [#607](https://github.com/eyaltoledano/claude-task-master/pull/607) [`6a8a68e`](https://github.com/eyaltoledano/claude-task-master/commit/6a8a68e1a3f34dcdf40b355b4602a08d291f8e38) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - Add AWS bedrock support
|
||||||
|
|
||||||
|
- [#607](https://github.com/eyaltoledano/claude-task-master/pull/607) [`6a8a68e`](https://github.com/eyaltoledano/claude-task-master/commit/6a8a68e1a3f34dcdf40b355b4602a08d291f8e38) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - # Add Google Vertex AI Provider Integration
|
||||||
|
|
||||||
|
- Implemented `VertexAIProvider` class extending BaseAIProvider
|
||||||
|
- Added authentication and configuration handling for Vertex AI
|
||||||
|
- Updated configuration manager with Vertex-specific getters
|
||||||
|
- Modified AI services unified system to integrate the provider
|
||||||
|
- Added documentation for Vertex AI setup and configuration
|
||||||
|
- Updated environment variable examples for Vertex AI support
|
||||||
|
- Implemented specialized error handling for Vertex-specific issues
|
||||||
|
|
||||||
|
- [#607](https://github.com/eyaltoledano/claude-task-master/pull/607) [`6a8a68e`](https://github.com/eyaltoledano/claude-task-master/commit/6a8a68e1a3f34dcdf40b355b4602a08d291f8e38) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - Add support for Azure
|
||||||
|
|
||||||
|
- [#612](https://github.com/eyaltoledano/claude-task-master/pull/612) [`669b744`](https://github.com/eyaltoledano/claude-task-master/commit/669b744ced454116a7b29de6c58b4b8da977186a) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - Increased minimum required node version to > 18 (was > 14)
|
||||||
|
|
||||||
|
- [#607](https://github.com/eyaltoledano/claude-task-master/pull/607) [`6a8a68e`](https://github.com/eyaltoledano/claude-task-master/commit/6a8a68e1a3f34dcdf40b355b4602a08d291f8e38) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - Renamed baseUrl to baseURL
|
||||||
|
|
||||||
|
- [#604](https://github.com/eyaltoledano/claude-task-master/pull/604) [`80735f9`](https://github.com/eyaltoledano/claude-task-master/commit/80735f9e60c7dda7207e169697f8ac07b6733634) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - Add TASK_MASTER_PROJECT_ROOT env variable supported in mcp.json and .env for project root resolution
|
||||||
|
|
||||||
|
- Some users were having issues where the MCP wasn't able to detect the location of their project root, you can now set the `TASK_MASTER_PROJECT_ROOT` environment variable to the root of your project.
|
||||||
|
|
||||||
|
- [#619](https://github.com/eyaltoledano/claude-task-master/pull/619) [`3f64202`](https://github.com/eyaltoledano/claude-task-master/commit/3f64202c9feef83f2bf383c79e4367d337c37e20) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - Consolidate Task Master files into unified .taskmaster directory structure
|
||||||
|
|
||||||
|
This release introduces a new consolidated directory structure that organizes all Task Master files under a single `.taskmaster/` directory for better project organization and cleaner workspace management.
|
||||||
|
|
||||||
|
**New Directory Structure:**
|
||||||
|
|
||||||
|
- `.taskmaster/tasks/` - Task files (previously `tasks/`)
|
||||||
|
- `.taskmaster/docs/` - Documentation including PRD files (previously `scripts/`)
|
||||||
|
- `.taskmaster/reports/` - Complexity analysis reports (previously `scripts/`)
|
||||||
|
- `.taskmaster/templates/` - Template files like example PRD
|
||||||
|
- `.taskmaster/config.json` - Configuration (previously `.taskmasterconfig`)
|
||||||
|
|
||||||
|
**Migration & Backward Compatibility:**
|
||||||
|
|
||||||
|
- Existing projects continue to work with legacy file locations
|
||||||
|
- New projects use the consolidated structure automatically
|
||||||
|
- Run `task-master migrate` to move existing projects to the new structure
|
||||||
|
- All CLI commands and MCP tools automatically detect and use appropriate file locations
|
||||||
|
|
||||||
|
**Benefits:**
|
||||||
|
|
||||||
|
- Cleaner project root with Task Master files organized in one location
|
||||||
|
- Reduced file scatter across multiple directories
|
||||||
|
- Improved project navigation and maintenance
|
||||||
|
- Consistent file organization across all Task Master projects
|
||||||
|
|
||||||
|
This change maintains full backward compatibility while providing a migration path to the improved structure.
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- [#607](https://github.com/eyaltoledano/claude-task-master/pull/607) [`6a8a68e`](https://github.com/eyaltoledano/claude-task-master/commit/6a8a68e1a3f34dcdf40b355b4602a08d291f8e38) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - Fix max_tokens error when trying to use claude-sonnet-4 and claude-opus-4
|
||||||
|
|
||||||
|
- [#625](https://github.com/eyaltoledano/claude-task-master/pull/625) [`2d520de`](https://github.com/eyaltoledano/claude-task-master/commit/2d520de2694da3efe537b475ca52baf3c869edda) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - Fix add-task MCP command causing an error
|
||||||
|
|
||||||
## 0.16.0-rc.0
|
## 0.16.0-rc.0
|
||||||
|
|
||||||
### Minor Changes
|
### Minor Changes
|
||||||
|
|||||||
@@ -3,8 +3,7 @@ import {
|
|||||||
findTasksPath as coreFindTasksPath,
|
findTasksPath as coreFindTasksPath,
|
||||||
findPRDPath as coreFindPrdPath,
|
findPRDPath as coreFindPrdPath,
|
||||||
findComplexityReportPath as coreFindComplexityReportPath,
|
findComplexityReportPath as coreFindComplexityReportPath,
|
||||||
findProjectRoot as coreFindProjectRoot,
|
findProjectRoot as coreFindProjectRoot
|
||||||
normalizeProjectRoot
|
|
||||||
} from '../../../../src/utils/path-utils.js';
|
} from '../../../../src/utils/path-utils.js';
|
||||||
import { PROJECT_MARKERS } from '../../../../src/constants/paths.js';
|
import { PROJECT_MARKERS } from '../../../../src/constants/paths.js';
|
||||||
|
|
||||||
@@ -50,24 +49,19 @@ export function findPrdPath(explicitPath, args = null, log = silentLogger) {
|
|||||||
export function resolveTasksPath(args, log = silentLogger) {
|
export function resolveTasksPath(args, log = silentLogger) {
|
||||||
// Get explicit path from args.file if provided
|
// Get explicit path from args.file if provided
|
||||||
const explicitPath = args?.file;
|
const explicitPath = args?.file;
|
||||||
const rawProjectRoot = args?.projectRoot;
|
const projectRoot = args?.projectRoot;
|
||||||
|
|
||||||
// If explicit path is provided and absolute, use it directly
|
// If explicit path is provided and absolute, use it directly
|
||||||
if (explicitPath && path.isAbsolute(explicitPath)) {
|
if (explicitPath && path.isAbsolute(explicitPath)) {
|
||||||
return explicitPath;
|
return explicitPath;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Normalize project root if provided
|
// If explicit path is relative, resolve it relative to projectRoot
|
||||||
const projectRoot = rawProjectRoot
|
|
||||||
? normalizeProjectRoot(rawProjectRoot)
|
|
||||||
: null;
|
|
||||||
|
|
||||||
// If explicit path is relative, resolve it relative to normalized projectRoot
|
|
||||||
if (explicitPath && projectRoot) {
|
if (explicitPath && projectRoot) {
|
||||||
return path.resolve(projectRoot, explicitPath);
|
return path.resolve(projectRoot, explicitPath);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Use core findTasksPath with explicit path and normalized projectRoot context
|
// Use core findTasksPath with explicit path and projectRoot context
|
||||||
if (projectRoot) {
|
if (projectRoot) {
|
||||||
return coreFindTasksPath(explicitPath, { projectRoot }, log);
|
return coreFindTasksPath(explicitPath, { projectRoot }, log);
|
||||||
}
|
}
|
||||||
@@ -85,24 +79,19 @@ export function resolveTasksPath(args, log = silentLogger) {
|
|||||||
export function resolvePrdPath(args, log = silentLogger) {
|
export function resolvePrdPath(args, log = silentLogger) {
|
||||||
// Get explicit path from args.input if provided
|
// Get explicit path from args.input if provided
|
||||||
const explicitPath = args?.input;
|
const explicitPath = args?.input;
|
||||||
const rawProjectRoot = args?.projectRoot;
|
const projectRoot = args?.projectRoot;
|
||||||
|
|
||||||
// If explicit path is provided and absolute, use it directly
|
// If explicit path is provided and absolute, use it directly
|
||||||
if (explicitPath && path.isAbsolute(explicitPath)) {
|
if (explicitPath && path.isAbsolute(explicitPath)) {
|
||||||
return explicitPath;
|
return explicitPath;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Normalize project root if provided
|
// If explicit path is relative, resolve it relative to projectRoot
|
||||||
const projectRoot = rawProjectRoot
|
|
||||||
? normalizeProjectRoot(rawProjectRoot)
|
|
||||||
: null;
|
|
||||||
|
|
||||||
// If explicit path is relative, resolve it relative to normalized projectRoot
|
|
||||||
if (explicitPath && projectRoot) {
|
if (explicitPath && projectRoot) {
|
||||||
return path.resolve(projectRoot, explicitPath);
|
return path.resolve(projectRoot, explicitPath);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Use core findPRDPath with explicit path and normalized projectRoot context
|
// Use core findPRDPath with explicit path and projectRoot context
|
||||||
if (projectRoot) {
|
if (projectRoot) {
|
||||||
return coreFindPrdPath(explicitPath, { projectRoot }, log);
|
return coreFindPrdPath(explicitPath, { projectRoot }, log);
|
||||||
}
|
}
|
||||||
@@ -120,24 +109,19 @@ export function resolvePrdPath(args, log = silentLogger) {
|
|||||||
export function resolveComplexityReportPath(args, log = silentLogger) {
|
export function resolveComplexityReportPath(args, log = silentLogger) {
|
||||||
// Get explicit path from args.complexityReport if provided
|
// Get explicit path from args.complexityReport if provided
|
||||||
const explicitPath = args?.complexityReport;
|
const explicitPath = args?.complexityReport;
|
||||||
const rawProjectRoot = args?.projectRoot;
|
const projectRoot = args?.projectRoot;
|
||||||
|
|
||||||
// If explicit path is provided and absolute, use it directly
|
// If explicit path is provided and absolute, use it directly
|
||||||
if (explicitPath && path.isAbsolute(explicitPath)) {
|
if (explicitPath && path.isAbsolute(explicitPath)) {
|
||||||
return explicitPath;
|
return explicitPath;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Normalize project root if provided
|
// If explicit path is relative, resolve it relative to projectRoot
|
||||||
const projectRoot = rawProjectRoot
|
|
||||||
? normalizeProjectRoot(rawProjectRoot)
|
|
||||||
: null;
|
|
||||||
|
|
||||||
// If explicit path is relative, resolve it relative to normalized projectRoot
|
|
||||||
if (explicitPath && projectRoot) {
|
if (explicitPath && projectRoot) {
|
||||||
return path.resolve(projectRoot, explicitPath);
|
return path.resolve(projectRoot, explicitPath);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Use core findComplexityReportPath with explicit path and normalized projectRoot context
|
// Use core findComplexityReportPath with explicit path and projectRoot context
|
||||||
if (projectRoot) {
|
if (projectRoot) {
|
||||||
return coreFindComplexityReportPath(explicitPath, { projectRoot }, log);
|
return coreFindComplexityReportPath(explicitPath, { projectRoot }, log);
|
||||||
}
|
}
|
||||||
@@ -158,16 +142,13 @@ export function resolveProjectPath(relativePath, args) {
|
|||||||
throw new Error('projectRoot is required in args to resolve project paths');
|
throw new Error('projectRoot is required in args to resolve project paths');
|
||||||
}
|
}
|
||||||
|
|
||||||
// Normalize the project root to prevent double .taskmaster paths
|
|
||||||
const projectRoot = normalizeProjectRoot(args.projectRoot);
|
|
||||||
|
|
||||||
// If already absolute, return as-is
|
// If already absolute, return as-is
|
||||||
if (path.isAbsolute(relativePath)) {
|
if (path.isAbsolute(relativePath)) {
|
||||||
return relativePath;
|
return relativePath;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Resolve relative to normalized projectRoot
|
// Resolve relative to projectRoot
|
||||||
return path.resolve(projectRoot, relativePath);
|
return path.resolve(args.projectRoot, relativePath);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ import {
|
|||||||
} from './utils.js';
|
} from './utils.js';
|
||||||
import { complexityReportDirect } from '../core/task-master-core.js';
|
import { complexityReportDirect } from '../core/task-master-core.js';
|
||||||
import { COMPLEXITY_REPORT_FILE } from '../../../src/constants/paths.js';
|
import { COMPLEXITY_REPORT_FILE } from '../../../src/constants/paths.js';
|
||||||
import { findComplexityReportPath } from '../core/utils/path-utils.js';
|
import path from 'path';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Register the complexityReport tool with the MCP server
|
* Register the complexityReport tool with the MCP server
|
||||||
@@ -38,18 +38,10 @@ export function registerComplexityReportTool(server) {
|
|||||||
`Getting complexity report with args: ${JSON.stringify(args)}`
|
`Getting complexity report with args: ${JSON.stringify(args)}`
|
||||||
);
|
);
|
||||||
|
|
||||||
const pathArgs = {
|
// Use args.projectRoot directly (guaranteed by withNormalizedProjectRoot)
|
||||||
projectRoot: args.projectRoot,
|
const reportPath = args.file
|
||||||
complexityReport: args.file
|
? path.resolve(args.projectRoot, args.file)
|
||||||
};
|
: path.resolve(args.projectRoot, COMPLEXITY_REPORT_FILE);
|
||||||
|
|
||||||
const reportPath = findComplexityReportPath(pathArgs, log);
|
|
||||||
|
|
||||||
if (!reportPath) {
|
|
||||||
return createErrorResponse(
|
|
||||||
'No complexity report found. Run task-master analyze-complexity first.'
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
const result = await complexityReportDirect(
|
const result = await complexityReportDirect(
|
||||||
{
|
{
|
||||||
|
|||||||
23506
package-lock.json
generated
23506
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "task-master-ai",
|
"name": "task-master-ai",
|
||||||
"version": "0.16.0-rc.0",
|
"version": "0.16.1",
|
||||||
"description": "A task management system for ambitious AI-driven development that doesn't overwhelm and confuse Cursor.",
|
"description": "A task management system for ambitious AI-driven development that doesn't overwhelm and confuse Cursor.",
|
||||||
"main": "index.js",
|
"main": "index.js",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
|
|||||||
@@ -16,32 +16,6 @@ import {
|
|||||||
} from '../constants/paths.js';
|
} from '../constants/paths.js';
|
||||||
import { getLoggerOrDefault } from './logger-utils.js';
|
import { getLoggerOrDefault } from './logger-utils.js';
|
||||||
|
|
||||||
/**
|
|
||||||
* Normalize project root to ensure it doesn't end with .taskmaster
|
|
||||||
* This prevents double .taskmaster paths when using constants that include .taskmaster
|
|
||||||
* @param {string} projectRoot - The project root path to normalize
|
|
||||||
* @returns {string} - Normalized project root path
|
|
||||||
*/
|
|
||||||
export function normalizeProjectRoot(projectRoot) {
|
|
||||||
if (!projectRoot) return projectRoot;
|
|
||||||
|
|
||||||
// Split the path into segments
|
|
||||||
const segments = projectRoot.split(path.sep);
|
|
||||||
|
|
||||||
// Find the index of .taskmaster segment
|
|
||||||
const taskmasterIndex = segments.findIndex(
|
|
||||||
(segment) => segment === '.taskmaster'
|
|
||||||
);
|
|
||||||
|
|
||||||
if (taskmasterIndex !== -1) {
|
|
||||||
// If .taskmaster is found, return everything up to but not including .taskmaster
|
|
||||||
const normalizedSegments = segments.slice(0, taskmasterIndex);
|
|
||||||
return normalizedSegments.join(path.sep) || path.sep;
|
|
||||||
}
|
|
||||||
|
|
||||||
return projectRoot;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Find the project root directory by looking for project markers
|
* Find the project root directory by looking for project markers
|
||||||
* @param {string} startDir - Directory to start searching from
|
* @param {string} startDir - Directory to start searching from
|
||||||
@@ -106,17 +80,14 @@ export function findTasksPath(explicitPath = null, args = null, log = null) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 2. Try to get project root from args (MCP) or find it
|
// 2. Try to get project root from args (MCP) or find it
|
||||||
const rawProjectRoot = args?.projectRoot || findProjectRoot();
|
const projectRoot = args?.projectRoot || findProjectRoot();
|
||||||
|
|
||||||
if (!rawProjectRoot) {
|
if (!projectRoot) {
|
||||||
logger.warn?.('Could not determine project root directory');
|
logger.warn?.('Could not determine project root directory');
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 3. Normalize project root to prevent double .taskmaster paths
|
// 3. Check possible locations in order of preference
|
||||||
const projectRoot = normalizeProjectRoot(rawProjectRoot);
|
|
||||||
|
|
||||||
// 4. Check possible locations in order of preference
|
|
||||||
const possiblePaths = [
|
const possiblePaths = [
|
||||||
path.join(projectRoot, TASKMASTER_TASKS_FILE), // .taskmaster/tasks/tasks.json (NEW)
|
path.join(projectRoot, TASKMASTER_TASKS_FILE), // .taskmaster/tasks/tasks.json (NEW)
|
||||||
path.join(projectRoot, 'tasks.json'), // tasks.json in root (LEGACY)
|
path.join(projectRoot, 'tasks.json'), // tasks.json in root (LEGACY)
|
||||||
@@ -180,17 +151,14 @@ export function findPRDPath(explicitPath = null, args = null, log = null) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 2. Try to get project root from args (MCP) or find it
|
// 2. Try to get project root from args (MCP) or find it
|
||||||
const rawProjectRoot = args?.projectRoot || findProjectRoot();
|
const projectRoot = args?.projectRoot || findProjectRoot();
|
||||||
|
|
||||||
if (!rawProjectRoot) {
|
if (!projectRoot) {
|
||||||
logger.warn?.('Could not determine project root directory');
|
logger.warn?.('Could not determine project root directory');
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 3. Normalize project root to prevent double .taskmaster paths
|
// 3. Check possible locations in order of preference
|
||||||
const projectRoot = normalizeProjectRoot(rawProjectRoot);
|
|
||||||
|
|
||||||
// 4. Check possible locations in order of preference
|
|
||||||
const locations = [
|
const locations = [
|
||||||
TASKMASTER_DOCS_DIR, // .taskmaster/docs/ (NEW)
|
TASKMASTER_DOCS_DIR, // .taskmaster/docs/ (NEW)
|
||||||
'scripts/', // Legacy location
|
'scripts/', // Legacy location
|
||||||
@@ -252,17 +220,14 @@ export function findComplexityReportPath(
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 2. Try to get project root from args (MCP) or find it
|
// 2. Try to get project root from args (MCP) or find it
|
||||||
const rawProjectRoot = args?.projectRoot || findProjectRoot();
|
const projectRoot = args?.projectRoot || findProjectRoot();
|
||||||
|
|
||||||
if (!rawProjectRoot) {
|
if (!projectRoot) {
|
||||||
logger.warn?.('Could not determine project root directory');
|
logger.warn?.('Could not determine project root directory');
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 3. Normalize project root to prevent double .taskmaster paths
|
// 3. Check possible locations in order of preference
|
||||||
const projectRoot = normalizeProjectRoot(rawProjectRoot);
|
|
||||||
|
|
||||||
// 4. Check possible locations in order of preference
|
|
||||||
const locations = [
|
const locations = [
|
||||||
TASKMASTER_REPORTS_DIR, // .taskmaster/reports/ (NEW)
|
TASKMASTER_REPORTS_DIR, // .taskmaster/reports/ (NEW)
|
||||||
'scripts/', // Legacy location
|
'scripts/', // Legacy location
|
||||||
@@ -318,13 +283,9 @@ export function resolveTasksOutputPath(
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 2. Try to get project root from args (MCP) or find it
|
// 2. Try to get project root from args (MCP) or find it
|
||||||
const rawProjectRoot =
|
const projectRoot = args?.projectRoot || findProjectRoot() || process.cwd();
|
||||||
args?.projectRoot || findProjectRoot() || process.cwd();
|
|
||||||
|
|
||||||
// 3. Normalize project root to prevent double .taskmaster paths
|
// 3. Use new .taskmaster structure by default
|
||||||
const projectRoot = normalizeProjectRoot(rawProjectRoot);
|
|
||||||
|
|
||||||
// 4. Use new .taskmaster structure by default
|
|
||||||
const defaultPath = path.join(projectRoot, TASKMASTER_TASKS_FILE);
|
const defaultPath = path.join(projectRoot, TASKMASTER_TASKS_FILE);
|
||||||
logger.info?.(`Using default output path: ${defaultPath}`);
|
logger.info?.(`Using default output path: ${defaultPath}`);
|
||||||
|
|
||||||
@@ -365,13 +326,9 @@ export function resolveComplexityReportOutputPath(
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 2. Try to get project root from args (MCP) or find it
|
// 2. Try to get project root from args (MCP) or find it
|
||||||
const rawProjectRoot =
|
const projectRoot = args?.projectRoot || findProjectRoot() || process.cwd();
|
||||||
args?.projectRoot || findProjectRoot() || process.cwd();
|
|
||||||
|
|
||||||
// 3. Normalize project root to prevent double .taskmaster paths
|
// 3. Use new .taskmaster structure by default
|
||||||
const projectRoot = normalizeProjectRoot(rawProjectRoot);
|
|
||||||
|
|
||||||
// 4. Use new .taskmaster structure by default
|
|
||||||
const defaultPath = path.join(projectRoot, COMPLEXITY_REPORT_FILE);
|
const defaultPath = path.join(projectRoot, COMPLEXITY_REPORT_FILE);
|
||||||
logger.info?.(`Using default complexity report output path: ${defaultPath}`);
|
logger.info?.(`Using default complexity report output path: ${defaultPath}`);
|
||||||
|
|
||||||
@@ -412,17 +369,14 @@ export function findConfigPath(explicitPath = null, args = null, log = null) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 2. Try to get project root from args (MCP) or find it
|
// 2. Try to get project root from args (MCP) or find it
|
||||||
const rawProjectRoot = args?.projectRoot || findProjectRoot();
|
const projectRoot = args?.projectRoot || findProjectRoot();
|
||||||
|
|
||||||
if (!rawProjectRoot) {
|
if (!projectRoot) {
|
||||||
logger.warn?.('Could not determine project root directory');
|
logger.warn?.('Could not determine project root directory');
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 3. Normalize project root to prevent double .taskmaster paths
|
// 3. Check possible locations in order of preference
|
||||||
const projectRoot = normalizeProjectRoot(rawProjectRoot);
|
|
||||||
|
|
||||||
// 4. Check possible locations in order of preference
|
|
||||||
const possiblePaths = [
|
const possiblePaths = [
|
||||||
path.join(projectRoot, TASKMASTER_CONFIG_FILE), // NEW location
|
path.join(projectRoot, TASKMASTER_CONFIG_FILE), // NEW location
|
||||||
path.join(projectRoot, LEGACY_CONFIG_FILE) // LEGACY location
|
path.join(projectRoot, LEGACY_CONFIG_FILE) // LEGACY location
|
||||||
|
|||||||
Reference in New Issue
Block a user