Ralph/chore/fix.coderabbit.issues (#1432)

This commit is contained in:
Ralph Khreish
2025-11-21 12:40:46 +01:00
committed by GitHub
parent e66150e91c
commit 522d9af580
34 changed files with 183 additions and 229 deletions

View File

@@ -32,7 +32,7 @@ export function registerAutopilotCompleteTool(server: FastMCP) {
server.addTool({ server.addTool({
name: 'autopilot_complete_phase', name: 'autopilot_complete_phase',
description: description:
'Complete the current TDD phase (RED, GREEN, or COMMIT) with test result validation. RED phase: expects failures (if 0 failures, feature is already implemented and subtask auto-completes). GREEN phase: expects all tests passing.', 'Complete the current TDD phase (RED or GREEN) with test result validation. RED phase: expects failures (if 0 failures, feature is already implemented and subtask auto-completes). GREEN phase: expects all tests passing. For COMMIT phase, use autopilot_commit instead.',
parameters: CompletePhaseSchema, parameters: CompletePhaseSchema,
execute: withToolContext( execute: withToolContext(
'autopilot-complete-phase', 'autopilot-complete-phase',

View File

@@ -72,8 +72,9 @@ export function registerGetTasksTool(server: FastMCP) {
); );
// Calculate stats using reduce for cleaner code // Calculate stats using reduce for cleaner code
const tasks = result.tasks ?? [];
const totalTasks = result.total; const totalTasks = result.total;
const taskCounts = result.tasks.reduce( const taskCounts = tasks.reduce(
(acc, task) => { (acc, task) => {
acc[task.status] = (acc[task.status] || 0) + 1; acc[task.status] = (acc[task.status] || 0) + 1;
return acc; return acc;
@@ -85,7 +86,7 @@ export function registerGetTasksTool(server: FastMCP) {
totalTasks > 0 ? ((taskCounts.done || 0) / totalTasks) * 100 : 0; totalTasks > 0 ? ((taskCounts.done || 0) / totalTasks) * 100 : 0;
// Count subtasks using reduce // Count subtasks using reduce
const subtaskCounts = result.tasks.reduce( const subtaskCounts = tasks.reduce(
(acc, task) => { (acc, task) => {
task.subtasks?.forEach((st) => { task.subtasks?.forEach((st) => {
acc.total++; acc.total++;
@@ -105,7 +106,7 @@ export function registerGetTasksTool(server: FastMCP) {
result: { result: {
success: true, success: true,
data: { data: {
tasks: result.tasks as Task[], tasks: tasks as Task[],
filter: status || 'all', filter: status || 'all',
stats: { stats: {
total: totalTasks, total: totalTasks,

View File

@@ -108,13 +108,12 @@ export function registerAddSubtaskTool(server) {
log.error(`Failed to add subtask: ${result.error.message}`); log.error(`Failed to add subtask: ${result.error.message}`);
} }
return handleApiResult( return handleApiResult({
result, result,
log, log: log,
'Error adding subtask', errorPrefix: 'Error adding subtask',
undefined, projectRoot: args.projectRoot
args.projectRoot });
);
} catch (error) { } catch (error) {
log.error(`Error in addSubtask tool: ${error.message}`); log.error(`Error in addSubtask tool: ${error.message}`);
return createErrorResponse(error.message); return createErrorResponse(error.message);

View File

@@ -83,13 +83,12 @@ export function registerAddTagTool(server) {
{ session } { session }
); );
return handleApiResult( return handleApiResult({
result, result,
log, log: log,
'Error creating tag', errorPrefix: 'Error creating tag',
undefined, projectRoot: args.projectRoot
args.projectRoot });
);
} catch (error) { } catch (error) {
log.error(`Error in add-tag tool: ${error.message}`); log.error(`Error in add-tag tool: ${error.message}`);
return createErrorResponse(error.message); return createErrorResponse(error.message);

View File

@@ -88,7 +88,7 @@ export function registerAddTaskTool(server) {
); );
} }
// Call the direct functionP // Call the direct function
const result = await addTaskDirect( const result = await addTaskDirect(
{ {
tasksJsonPath: tasksJsonPath, tasksJsonPath: tasksJsonPath,
@@ -107,13 +107,12 @@ export function registerAddTaskTool(server) {
{ session } { session }
); );
return handleApiResult( return handleApiResult({
result, result,
log, log: log,
'Error adding task', errorPrefix: 'Error adding task',
undefined, projectRoot: args.projectRoot
args.projectRoot });
);
} catch (error) { } catch (error) {
log.error(`Error in add-task tool: ${error.message}`); log.error(`Error in add-task tool: ${error.message}`);
return createErrorResponse(error.message); return createErrorResponse(error.message);

View File

@@ -150,13 +150,12 @@ export function registerAnalyzeProjectComplexityTool(server) {
log.info( log.info(
`${toolName}: Direct function result: success=${result.success}` `${toolName}: Direct function result: success=${result.success}`
); );
return handleApiResult( return handleApiResult({
result, result,
log, log: log,
'Error analyzing task complexity', errorPrefix: 'Error analyzing task complexity',
undefined, projectRoot: args.projectRoot
args.projectRoot });
);
} catch (error) { } catch (error) {
log.error( log.error(
`Critical error in ${toolName} tool execute: ${error.message}` `Critical error in ${toolName} tool execute: ${error.message}`

View File

@@ -87,13 +87,12 @@ export function registerClearSubtasksTool(server) {
); );
} }
return handleApiResult( return handleApiResult({
result, result,
context.log, log: context.log,
'Error clearing subtasks', errorPrefix: 'Error clearing subtasks',
undefined, projectRoot: args.projectRoot
args.projectRoot });
);
} catch (error) { } catch (error) {
context.log.error(`Error in clearSubtasks tool: ${error.message}`); context.log.error(`Error in clearSubtasks tool: ${error.message}`);
return createErrorResponse(error.message); return createErrorResponse(error.message);

View File

@@ -71,13 +71,12 @@ export function registerComplexityReportTool(server) {
); );
} }
return handleApiResult( return handleApiResult({
result, result,
log, log: log,
'Error retrieving complexity report', errorPrefix: 'Error retrieving complexity report',
undefined, projectRoot: args.projectRoot
args.projectRoot });
);
} catch (error) { } catch (error) {
log.error(`Error in complexity-report tool: ${error.message}`); log.error(`Error in complexity-report tool: ${error.message}`);
return createErrorResponse( return createErrorResponse(

View File

@@ -67,13 +67,12 @@ export function registerCopyTagTool(server) {
{ session } { session }
); );
return handleApiResult( return handleApiResult({
result, result,
log, log: log,
'Error copying tag', errorPrefix: 'Error copying tag',
undefined, projectRoot: args.projectRoot
args.projectRoot });
);
} catch (error) { } catch (error) {
log.error(`Error in copy-tag tool: ${error.message}`); log.error(`Error in copy-tag tool: ${error.message}`);
return createErrorResponse(error.message); return createErrorResponse(error.message);

View File

@@ -64,13 +64,12 @@ export function registerDeleteTagTool(server) {
{ session } { session }
); );
return handleApiResult( return handleApiResult({
result, result,
log, log: log,
'Error deleting tag', errorPrefix: 'Error deleting tag',
undefined, projectRoot: args.projectRoot
args.projectRoot });
);
} catch (error) { } catch (error) {
log.error(`Error in delete-tag tool: ${error.message}`); log.error(`Error in delete-tag tool: ${error.message}`);
return createErrorResponse(error.message); return createErrorResponse(error.message);

View File

@@ -111,13 +111,12 @@ export function registerExpandAllTool(server) {
{ session } { session }
); );
return handleApiResult( return handleApiResult({
result, result,
log, log: log,
'Error expanding all tasks', errorPrefix: 'Error expanding all tasks',
undefined, projectRoot: args.projectRoot
args.projectRoot });
);
} catch (error) { } catch (error) {
log.error( log.error(
`Unexpected error in expand_all tool execute: ${error.message}` `Unexpected error in expand_all tool execute: ${error.message}`

View File

@@ -94,13 +94,12 @@ export function registerExpandTaskTool(server) {
{ session } { session }
); );
return handleApiResult( return handleApiResult({
result, result,
log, log: log,
'Error expanding task', errorPrefix: 'Error expanding task',
undefined, projectRoot: args.projectRoot
args.projectRoot });
);
} catch (error) { } catch (error) {
log.error(`Error in expand-task tool: ${error.message}`); log.error(`Error in expand-task tool: ${error.message}`);
return createErrorResponse(error.message); return createErrorResponse(error.message);

View File

@@ -68,13 +68,12 @@ export function registerFixDependenciesTool(server) {
); );
} }
return handleApiResult( return handleApiResult({
result, result,
context.log, log: context.log,
'Error fixing dependencies', errorPrefix: 'Error fixing dependencies',
undefined, projectRoot: args.projectRoot
args.projectRoot });
);
} catch (error) { } catch (error) {
context.log.error(`Error in fixDependencies tool: ${error.message}`); context.log.error(`Error in fixDependencies tool: ${error.message}`);
return createErrorResponse(error.message); return createErrorResponse(error.message);

View File

@@ -1,6 +1,6 @@
// mcp-server/src/tools/get-operation-status.js // mcp-server/src/tools/get-operation-status.js
import { z } from 'zod'; import { z } from 'zod';
import { createErrorResponse, createContentResponse } from '@tm/mcp'; // Assuming these utils exist import { createErrorResponse, createContentResponse } from '@tm/mcp';
/** /**
* Register the get_operation_status tool. * Register the get_operation_status tool.

View File

@@ -65,13 +65,12 @@ export function registerInitializeProjectTool(server) {
const result = await initializeProjectDirect(args, log, { session }); const result = await initializeProjectDirect(args, log, { session });
return handleApiResult( return handleApiResult({
result, result,
log, log: log,
'Initialization failed', errorPrefix: 'Initialization failed',
undefined, projectRoot: args.projectRoot
args.projectRoot });
);
} catch (error) { } catch (error) {
const errorMessage = `Project initialization tool failed: ${error.message || 'Unknown error'}`; const errorMessage = `Project initialization tool failed: ${error.message || 'Unknown error'}`;
log.error(errorMessage, error); log.error(errorMessage, error);

View File

@@ -62,13 +62,12 @@ export function registerListTagsTool(server) {
{ session } { session }
); );
return handleApiResult( return handleApiResult({
result, result,
log, log: log,
'Error listing tags', errorPrefix: 'Error listing tags',
undefined, projectRoot: args.projectRoot
args.projectRoot });
);
} catch (error) { } catch (error) {
log.error(`Error in list-tags tool: ${error.message}`); log.error(`Error in list-tags tool: ${error.message}`);
return createErrorResponse(error.message); return createErrorResponse(error.message);

View File

@@ -85,20 +85,19 @@ export function registerModelsTool(server) {
`Starting models tool with args: ${JSON.stringify(args)}` `Starting models tool with args: ${JSON.stringify(args)}`
); );
// Use args.projectRoot directly (guaranteed by withNormalizedProjectRoot) // Use args.projectRoot directly (normalized by withToolContext)
const result = await modelsDirect( const result = await modelsDirect(
{ ...args, projectRoot: args.projectRoot }, { ...args, projectRoot: args.projectRoot },
context.log, context.log,
{ session: context.session } { session: context.session }
); );
return handleApiResult( return handleApiResult({
result, result,
context.log, log: context.log,
'Error managing models', errorPrefix: 'Error managing models',
undefined, projectRoot: args.projectRoot
args.projectRoot });
);
} catch (error) { } catch (error) {
context.log.error(`Error in models tool: ${error.message}`); context.log.error(`Error in models tool: ${error.message}`);
return createErrorResponse(error.message); return createErrorResponse(error.message);

View File

@@ -3,18 +3,18 @@
* Tool for moving tasks or subtasks to a new position * Tool for moving tasks or subtasks to a new position
*/ */
import { z } from 'zod';
import { import {
handleApiResult,
createErrorResponse, createErrorResponse,
handleApiResult,
withNormalizedProjectRoot withNormalizedProjectRoot
} from '@tm/mcp'; } from '@tm/mcp';
import { z } from 'zod';
import { resolveTag } from '../../../scripts/modules/utils.js';
import { import {
moveTaskDirect, moveTaskCrossTagDirect,
moveTaskCrossTagDirect moveTaskDirect
} from '../core/task-master-core.js'; } from '../core/task-master-core.js';
import { findTasksPath } from '../core/utils/path-utils.js'; import { findTasksPath } from '../core/utils/path-utils.js';
import { resolveTag } from '../../../scripts/modules/utils.js';
/** /**
* Register the moveTask tool with the MCP server * Register the moveTask tool with the MCP server
@@ -83,8 +83,8 @@ export function registerMoveTaskTool(server) {
} }
// Use cross-tag move function // Use cross-tag move function
return handleApiResult( return handleApiResult({
await moveTaskCrossTagDirect( result: await moveTaskCrossTagDirect(
{ {
sourceIds: args.from, sourceIds: args.from,
sourceTag: args.fromTag, sourceTag: args.fromTag,
@@ -98,10 +98,9 @@ export function registerMoveTaskTool(server) {
{ session } { session }
), ),
log, log,
'Error moving tasks between tags', errorPrefix: 'Error moving tasks between tags',
undefined, projectRoot: args.projectRoot
args.projectRoot });
);
} else { } else {
// Within-tag move logic (existing functionality) // Within-tag move logic (existing functionality)
if (!args.to) { if (!args.to) {
@@ -166,8 +165,8 @@ export function registerMoveTaskTool(server) {
} }
} }
return handleApiResult( return handleApiResult({
{ result: {
success: true, success: true,
data: { data: {
moves: results, moves: results,
@@ -176,13 +175,12 @@ export function registerMoveTaskTool(server) {
} }
}, },
log, log,
'Error moving multiple tasks', errorPrefix: 'Error moving multiple tasks',
undefined, projectRoot: args.projectRoot
args.projectRoot });
);
} }
return handleApiResult( return handleApiResult({
{ result: {
success: true, success: true,
data: { data: {
moves: results, moves: results,
@@ -191,14 +189,13 @@ export function registerMoveTaskTool(server) {
} }
}, },
log, log,
'Error moving multiple tasks', errorPrefix: 'Error moving multiple tasks',
undefined, projectRoot: args.projectRoot
args.projectRoot });
);
} else { } else {
// Moving a single task // Moving a single task
return handleApiResult( return handleApiResult({
await moveTaskDirect( result: await moveTaskDirect(
{ {
sourceId: args.from, sourceId: args.from,
destinationId: args.to, destinationId: args.to,
@@ -211,10 +208,9 @@ export function registerMoveTaskTool(server) {
{ session } { session }
), ),
log, log,
'Error moving task', errorPrefix: 'Error moving task',
undefined, projectRoot: args.projectRoot
args.projectRoot });
);
} }
} }
} catch (error) { } catch (error) {

View File

@@ -82,13 +82,12 @@ export function registerNextTaskTool(server) {
); );
log.info(`Next task result: ${result.success ? 'found' : 'none'}`); log.info(`Next task result: ${result.success ? 'found' : 'none'}`);
return handleApiResult( return handleApiResult({
result, result,
log, log: log,
'Error finding next task', errorPrefix: 'Error finding next task',
undefined, projectRoot: args.projectRoot
args.projectRoot });
);
} catch (error) { } catch (error) {
log.error(`Error finding next task: ${error.message}`); log.error(`Error finding next task: ${error.message}`);
return createErrorResponse(error.message); return createErrorResponse(error.message);

View File

@@ -84,13 +84,12 @@ export function registerParsePRDTool(server) {
log, log,
{ session, reportProgress: progressCapability } { session, reportProgress: progressCapability }
); );
return handleApiResult( return handleApiResult({
result, result,
log, log: log,
'Error parsing PRD', errorPrefix: 'Error parsing PRD',
undefined, projectRoot: args.projectRoot
args.projectRoot });
);
} catch (error) { } catch (error) {
log.error(`Error in parse_prd: ${error.message}`); log.error(`Error in parse_prd: ${error.message}`);
return createErrorResponse(`Failed to parse PRD: ${error.message}`); return createErrorResponse(`Failed to parse PRD: ${error.message}`);

View File

@@ -76,13 +76,12 @@ export function registerRemoveDependencyTool(server) {
); );
} }
return handleApiResult( return handleApiResult({
result, result,
context.log, log: context.log,
'Error removing dependency', errorPrefix: 'Error removing dependency',
undefined, projectRoot: args.projectRoot
args.projectRoot });
);
} catch (error) { } catch (error) {
context.log.error(`Error in removeDependency tool: ${error.message}`); context.log.error(`Error in removeDependency tool: ${error.message}`);
return createErrorResponse(error.message); return createErrorResponse(error.message);

View File

@@ -89,13 +89,12 @@ export function registerRemoveSubtaskTool(server) {
log.error(`Failed to remove subtask: ${result.error.message}`); log.error(`Failed to remove subtask: ${result.error.message}`);
} }
return handleApiResult( return handleApiResult({
result, result,
log, log: log,
'Error removing subtask', errorPrefix: 'Error removing subtask',
undefined, projectRoot: args.projectRoot
args.projectRoot });
);
} catch (error) { } catch (error) {
log.error(`Error in removeSubtask tool: ${error.message}`); log.error(`Error in removeSubtask tool: ${error.message}`);
return createErrorResponse(error.message); return createErrorResponse(error.message);

View File

@@ -84,13 +84,12 @@ export function registerRemoveTaskTool(server) {
log.error(`Failed to remove task: ${result.error.message}`); log.error(`Failed to remove task: ${result.error.message}`);
} }
return handleApiResult( return handleApiResult({
result, result,
log, log: log,
'Error removing task', errorPrefix: 'Error removing task',
undefined, projectRoot: args.projectRoot
args.projectRoot });
);
} catch (error) { } catch (error) {
log.error(`Error in remove-task tool: ${error.message}`); log.error(`Error in remove-task tool: ${error.message}`);
return createErrorResponse(`Failed to remove task: ${error.message}`); return createErrorResponse(`Failed to remove task: ${error.message}`);

View File

@@ -61,13 +61,12 @@ export function registerRenameTagTool(server) {
{ session } { session }
); );
return handleApiResult( return handleApiResult({
result, result,
log, log: log,
'Error renaming tag', errorPrefix: 'Error renaming tag',
undefined, projectRoot: args.projectRoot
args.projectRoot });
);
} catch (error) { } catch (error) {
log.error(`Error in rename-tag tool: ${error.message}`); log.error(`Error in rename-tag tool: ${error.message}`);
return createErrorResponse(error.message); return createErrorResponse(error.message);

View File

@@ -94,13 +94,12 @@ export function registerResearchTool(server) {
{ session } { session }
); );
return handleApiResult( return handleApiResult({
result, result,
log, log: log,
'Error performing research', errorPrefix: 'Error performing research',
undefined, projectRoot: args.projectRoot
args.projectRoot });
);
} catch (error) { } catch (error) {
log.error(`Error in research tool: ${error.message}`); log.error(`Error in research tool: ${error.message}`);
return createErrorResponse(error.message); return createErrorResponse(error.message);

View File

@@ -88,13 +88,12 @@ export function registerScopeDownTool(server) {
{ session } { session }
); );
return handleApiResult( return handleApiResult({
result, result,
log, log: log,
'Error scoping down task', errorPrefix: 'Error scoping down task',
undefined, projectRoot: args.projectRoot
args.projectRoot });
);
} catch (error) { } catch (error) {
log.error(`Error in scope-down tool: ${error.message}`); log.error(`Error in scope-down tool: ${error.message}`);
return createErrorResponse(error.message); return createErrorResponse(error.message);

View File

@@ -88,13 +88,12 @@ export function registerScopeUpTool(server) {
{ session } { session }
); );
return handleApiResult( return handleApiResult({
result, result,
log, log: log,
'Error scoping up task', errorPrefix: 'Error scoping up task',
undefined, projectRoot: args.projectRoot
args.projectRoot });
);
} catch (error) { } catch (error) {
log.error(`Error in scope-up tool: ${error.message}`); log.error(`Error in scope-up tool: ${error.message}`);
return createErrorResponse(error.message); return createErrorResponse(error.message);

View File

@@ -113,13 +113,12 @@ export function registerSetTaskStatusTool(server) {
); );
} }
return handleApiResult( return handleApiResult({
result, result,
log, log: log,
'Error setting task status', errorPrefix: 'Error setting task status',
undefined, projectRoot: args.projectRoot
args.projectRoot });
);
} catch (error) { } catch (error) {
log.error(`Error in setTaskStatus tool: ${error.message}`); log.error(`Error in setTaskStatus tool: ${error.message}`);
return createErrorResponse( return createErrorResponse(

View File

@@ -83,13 +83,12 @@ export function registerUpdateSubtaskTool(server) {
); );
} }
return handleApiResult( return handleApiResult({
result, result,
log, log: log,
'Error updating subtask', errorPrefix: 'Error updating subtask',
undefined, projectRoot: args.projectRoot
args.projectRoot });
);
} catch (error) { } catch (error) {
log.error( log.error(
`Critical error in ${toolName} tool execute: ${error.message}` `Critical error in ${toolName} tool execute: ${error.message}`

View File

@@ -91,13 +91,12 @@ export function registerUpdateTaskTool(server) {
log.info( log.info(
`${toolName}: Direct function result: success=${result.success}` `${toolName}: Direct function result: success=${result.success}`
); );
return handleApiResult( return handleApiResult({
result, result,
log, log: log,
'Error updating task', errorPrefix: 'Error updating task',
undefined, projectRoot: args.projectRoot
args.projectRoot });
);
} catch (error) { } catch (error) {
log.error( log.error(
`Critical error in ${toolName} tool execute: ${error.message}` `Critical error in ${toolName} tool execute: ${error.message}`

View File

@@ -88,13 +88,12 @@ export function registerUpdateTool(server) {
log.info( log.info(
`${toolName}: Direct function result: success=${result.success}` `${toolName}: Direct function result: success=${result.success}`
); );
return handleApiResult( return handleApiResult({
result, result,
log, log: log,
'Error updating tasks', errorPrefix: 'Error updating tasks',
undefined, projectRoot: args.projectRoot
args.projectRoot });
);
} catch (error) { } catch (error) {
log.error( log.error(
`Critical error in ${toolName} tool execute: ${error.message}` `Critical error in ${toolName} tool execute: ${error.message}`

View File

@@ -59,13 +59,12 @@ export function registerUseTagTool(server) {
{ session } { session }
); );
return handleApiResult( return handleApiResult({
result, result,
log, log: log,
'Error switching tag', errorPrefix: 'Error switching tag',
undefined, projectRoot: args.projectRoot
args.projectRoot });
);
} catch (error) { } catch (error) {
log.error(`Error in use-tag tool: ${error.message}`); log.error(`Error in use-tag tool: ${error.message}`);
return createErrorResponse(error.message); return createErrorResponse(error.message);

View File

@@ -202,11 +202,8 @@ export class TaskService {
// Delegate to storage layer which handles the specific logic for tasks vs subtasks // Delegate to storage layer which handles the specific logic for tasks vs subtasks
return await this.storage.loadTask(String(taskId), activeTag); return await this.storage.loadTask(String(taskId), activeTag);
} catch (error) { } catch (error) {
// If it's a user-facing error (like NO_BRIEF_SELECTED), don't wrap it // Re-throw all TaskMasterErrors without wrapping
if ( if (error instanceof TaskMasterError) {
error instanceof TaskMasterError &&
error.is(ERROR_CODES.NO_BRIEF_SELECTED)
) {
throw error; throw error;
} }
@@ -551,11 +548,8 @@ export class TaskService {
// Direct update - no AI processing // Direct update - no AI processing
await this.storage.updateTask(taskIdStr, updates, activeTag); await this.storage.updateTask(taskIdStr, updates, activeTag);
} catch (error) { } catch (error) {
// If it's a user-facing error (like NO_BRIEF_SELECTED), don't wrap it // Re-throw all TaskMasterErrors without wrapping
if ( if (error instanceof TaskMasterError) {
error instanceof TaskMasterError &&
error.is(ERROR_CODES.NO_BRIEF_SELECTED)
) {
throw error; throw error;
} }
@@ -741,11 +735,8 @@ export class TaskService {
activeTag activeTag
); );
} catch (error) { } catch (error) {
// If it's a user-facing error (like NO_BRIEF_SELECTED), don't wrap it // Re-throw all TaskMasterErrors without wrapping
if ( if (error instanceof TaskMasterError) {
error instanceof TaskMasterError &&
error.is(ERROR_CODES.NO_BRIEF_SELECTED)
) {
throw error; throw error;
} }
@@ -785,11 +776,8 @@ export class TaskService {
try { try {
return await this.storage.getTagsWithStats(); return await this.storage.getTagsWithStats();
} catch (error) { } catch (error) {
// If it's a user-facing error (like NO_BRIEF_SELECTED), don't wrap it // Re-throw all TaskMasterErrors without wrapping
if ( if (error instanceof TaskMasterError) {
error instanceof TaskMasterError &&
error.is(ERROR_CODES.NO_BRIEF_SELECTED)
) {
throw error; throw error;
} }

View File

@@ -2544,11 +2544,8 @@ ${result.result}
try { try {
// Read data once for checks and confirmation // Read data once for checks and confirmation
const data = readJSON( const tasksPath = taskMaster.getTasksPath();
taskMaster.getTasksPath(), const data = readJSON(tasksPath, taskMaster.getProjectRoot(), tag);
taskMaster.getProjectRoot(),
tag
);
if (!data || !data.tasks) { if (!data || !data.tasks) {
console.error( console.error(
chalk.red(`Error: No valid tasks found in ${tasksPath}`) chalk.red(`Error: No valid tasks found in ${tasksPath}`)