chore: cleanup tools to stop using rootFolder and remove unused imports

This commit is contained in:
Ralph Khreish
2025-05-02 21:50:35 +02:00
parent 8f8a3dc45d
commit 9f86306766
16 changed files with 14 additions and 69 deletions

View File

@@ -7,7 +7,6 @@ import { z } from 'zod';
import { import {
handleApiResult, handleApiResult,
createErrorResponse, createErrorResponse,
getProjectRootFromSession,
withNormalizedProjectRoot withNormalizedProjectRoot
} from './utils.js'; } from './utils.js';
import { addSubtaskDirect } from '../core/task-master-core.js'; import { addSubtaskDirect } from '../core/task-master-core.js';

View File

@@ -6,7 +6,6 @@
import { z } from 'zod'; import { z } from 'zod';
import { import {
createErrorResponse, createErrorResponse,
getProjectRootFromSession,
handleApiResult, handleApiResult,
withNormalizedProjectRoot withNormalizedProjectRoot
} from './utils.js'; } from './utils.js';

View File

@@ -7,7 +7,6 @@ import { z } from 'zod';
import { import {
handleApiResult, handleApiResult,
createErrorResponse, createErrorResponse,
getProjectRootFromSession,
withNormalizedProjectRoot withNormalizedProjectRoot
} from './utils.js'; } from './utils.js';
import { clearSubtasksDirect } from '../core/task-master-core.js'; import { clearSubtasksDirect } from '../core/task-master-core.js';

View File

@@ -7,7 +7,6 @@ import { z } from 'zod';
import { import {
handleApiResult, handleApiResult,
createErrorResponse, createErrorResponse,
getProjectRootFromSession,
withNormalizedProjectRoot withNormalizedProjectRoot
} from './utils.js'; } from './utils.js';
import { complexityReportDirect } from '../core/task-master-core.js'; import { complexityReportDirect } from '../core/task-master-core.js';

View File

@@ -7,7 +7,6 @@ import { z } from 'zod';
import { import {
handleApiResult, handleApiResult,
createErrorResponse, createErrorResponse,
getProjectRootFromSession,
withNormalizedProjectRoot withNormalizedProjectRoot
} from './utils.js'; } from './utils.js';
import { expandAllTasksDirect } from '../core/task-master-core.js'; import { expandAllTasksDirect } from '../core/task-master-core.js';

View File

@@ -7,7 +7,6 @@ import { z } from 'zod';
import { import {
handleApiResult, handleApiResult,
createErrorResponse, createErrorResponse,
getProjectRootFromSession,
withNormalizedProjectRoot withNormalizedProjectRoot
} from './utils.js'; } from './utils.js';
import { fixDependenciesDirect } from '../core/task-master-core.js'; import { fixDependenciesDirect } from '../core/task-master-core.js';

View File

@@ -7,7 +7,6 @@ import { z } from 'zod';
import { import {
handleApiResult, handleApiResult,
createErrorResponse, createErrorResponse,
getProjectRootFromSession,
withNormalizedProjectRoot withNormalizedProjectRoot
} from './utils.js'; } from './utils.js';
import { generateTaskFilesDirect } from '../core/task-master-core.js'; import { generateTaskFilesDirect } from '../core/task-master-core.js';

View File

@@ -7,7 +7,6 @@ import { z } from 'zod';
import { import {
createErrorResponse, createErrorResponse,
handleApiResult, handleApiResult,
getProjectRootFromSession,
withNormalizedProjectRoot withNormalizedProjectRoot
} from './utils.js'; } from './utils.js';
import { listTasksDirect } from '../core/task-master-core.js'; import { listTasksDirect } from '../core/task-master-core.js';

View File

@@ -5,7 +5,6 @@
import { z } from 'zod'; import { z } from 'zod';
import { import {
getProjectRootFromSession,
handleApiResult, handleApiResult,
createErrorResponse, createErrorResponse,
withNormalizedProjectRoot withNormalizedProjectRoot

View File

@@ -32,22 +32,11 @@ export function registerNextTaskTool(server) {
try { try {
log.info(`Finding next task with args: ${JSON.stringify(args)}`); log.info(`Finding next task with args: ${JSON.stringify(args)}`);
// Get project root from args or session // Use args.projectRoot directly (guaranteed by withNormalizedProjectRoot)
const rootFolder =
args.projectRoot || getProjectRootFromSession(session, log);
// Ensure project root was determined
if (!rootFolder) {
return createErrorResponse(
'Could not determine project root. Please provide it explicitly or ensure your session contains valid root information.'
);
}
// Resolve the path to tasks.json
let tasksJsonPath; let tasksJsonPath;
try { try {
tasksJsonPath = findTasksJsonPath( tasksJsonPath = findTasksJsonPath(
{ projectRoot: rootFolder, file: args.file }, { projectRoot: args.projectRoot, file: args.file },
log log
); );
} catch (error) { } catch (error) {
@@ -59,9 +48,7 @@ export function registerNextTaskTool(server) {
const result = await nextTaskDirect( const result = await nextTaskDirect(
{ {
// Pass the explicitly resolved path
tasksJsonPath: tasksJsonPath tasksJsonPath: tasksJsonPath
// No other args specific to this tool
}, },
log log
); );

View File

@@ -60,35 +60,20 @@ export function registerParsePRDTool(server) {
`Executing ${toolName} tool with args: ${JSON.stringify(args)}` `Executing ${toolName} tool with args: ${JSON.stringify(args)}`
); );
// 1. Get Project Root // Call Direct Function - Pass relevant args including projectRoot
const rootFolder = args.projectRoot;
if (!rootFolder || !path.isAbsolute(rootFolder)) {
log.error(
`${toolName}: projectRoot is required and must be absolute.`
);
return createErrorResponse(
'projectRoot is required and must be absolute.'
);
}
log.info(`${toolName}: Project root: ${rootFolder}`);
// 2. Call Direct Function - Pass relevant args including projectRoot
// Path resolution (input/output) is handled within the direct function now
const result = await parsePRDDirect( const result = await parsePRDDirect(
{ {
// Pass args directly needed by the direct function input: args.input,
input: args.input, // Pass relative or absolute path output: args.output,
output: args.output, // Pass relative or absolute path numTasks: args.numTasks,
numTasks: args.numTasks, // Pass number (direct func handles default)
force: args.force, force: args.force,
append: args.append, append: args.append,
projectRoot: rootFolder projectRoot: args.projectRoot
}, },
log, log,
{ session } // Pass context object with session { session }
); );
// 3. Handle Result
log.info( log.info(
`${toolName}: Direct function result: success=${result.success}` `${toolName}: Direct function result: success=${result.success}`
); );

View File

@@ -7,7 +7,6 @@ import { z } from 'zod';
import { import {
handleApiResult, handleApiResult,
createErrorResponse, createErrorResponse,
getProjectRootFromSession,
withNormalizedProjectRoot withNormalizedProjectRoot
} from './utils.js'; } from './utils.js';
import { removeDependencyDirect } from '../core/task-master-core.js'; import { removeDependencyDirect } from '../core/task-master-core.js';

View File

@@ -7,7 +7,6 @@ import { z } from 'zod';
import { import {
handleApiResult, handleApiResult,
createErrorResponse, createErrorResponse,
getProjectRootFromSession,
withNormalizedProjectRoot withNormalizedProjectRoot
} from './utils.js'; } from './utils.js';
import { removeSubtaskDirect } from '../core/task-master-core.js'; import { removeSubtaskDirect } from '../core/task-master-core.js';
@@ -47,7 +46,7 @@ export function registerRemoveSubtaskTool(server) {
.string() .string()
.describe('The directory of the project. Must be an absolute path.') .describe('The directory of the project. Must be an absolute path.')
}), }),
execute: withNormalizedProjectRoot(async (args, { log, session }) => { execute: withNormalizedProjectRoot(async (args, { log }) => {
try { try {
log.info(`Removing subtask with args: ${JSON.stringify(args)}`); log.info(`Removing subtask with args: ${JSON.stringify(args)}`);

View File

@@ -7,7 +7,6 @@ import { z } from 'zod';
import { import {
handleApiResult, handleApiResult,
createErrorResponse, createErrorResponse,
getProjectRootFromSession,
withNormalizedProjectRoot withNormalizedProjectRoot
} from './utils.js'; } from './utils.js';
import { removeTaskDirect } from '../core/task-master-core.js'; import { removeTaskDirect } from '../core/task-master-core.js';
@@ -36,7 +35,7 @@ export function registerRemoveTaskTool(server) {
.optional() .optional()
.describe('Whether to skip confirmation prompt (default: false)') .describe('Whether to skip confirmation prompt (default: false)')
}), }),
execute: withNormalizedProjectRoot(async (args, { log, session }) => { execute: withNormalizedProjectRoot(async (args, { log }) => {
try { try {
log.info(`Removing task(s) with ID(s): ${args.id}`); log.info(`Removing task(s) with ID(s): ${args.id}`);

View File

@@ -7,7 +7,6 @@ import { z } from 'zod';
import { import {
handleApiResult, handleApiResult,
createErrorResponse, createErrorResponse,
getProjectRootFromSession,
withNormalizedProjectRoot withNormalizedProjectRoot
} from './utils.js'; } from './utils.js';
import { setTaskStatusDirect } from '../core/task-master-core.js'; import { setTaskStatusDirect } from '../core/task-master-core.js';
@@ -37,7 +36,7 @@ export function registerSetTaskStatusTool(server) {
.string() .string()
.describe('The directory of the project. Must be an absolute path.') .describe('The directory of the project. Must be an absolute path.')
}), }),
execute: withNormalizedProjectRoot(async (args, { log, session }) => { execute: withNormalizedProjectRoot(async (args, { log }) => {
try { try {
log.info(`Setting status of task(s) ${args.id} to: ${args.status}`); log.info(`Setting status of task(s) ${args.id} to: ${args.status}`);

View File

@@ -40,40 +40,26 @@ export function registerUpdateSubtaskTool(server) {
try { try {
log.info(`Updating subtask with args: ${JSON.stringify(args)}`); log.info(`Updating subtask with args: ${JSON.stringify(args)}`);
// 1. Get Project Root
const rootFolder = args.projectRoot;
if (!rootFolder || !path.isAbsolute(rootFolder)) {
log.error(
`${toolName}: projectRoot is required and must be absolute.`
);
return createErrorResponse(
'projectRoot is required and must be absolute.'
);
}
log.info(`${toolName}: Project root: ${rootFolder}`);
// 2. Resolve Tasks Path
let tasksJsonPath; let tasksJsonPath;
try { try {
tasksJsonPath = findTasksJsonPath( tasksJsonPath = findTasksJsonPath(
{ projectRoot: rootFolder, file: args.file }, { projectRoot: args.projectRoot, file: args.file },
log log
); );
} catch (error) { } catch (error) {
log.error(`${toolName}: Error finding tasks.json: ${error.message}`); log.error(`${toolName}: Error finding tasks.json: ${error.message}`);
return createErrorResponse( return createErrorResponse(
`Failed to find tasks.json within project root '${rootFolder}': ${error.message}` `Failed to find tasks.json: ${error.message}`
); );
} }
// 3. Call Direct Function - Include projectRoot
const result = await updateSubtaskByIdDirect( const result = await updateSubtaskByIdDirect(
{ {
tasksJsonPath: tasksJsonPath, tasksJsonPath: tasksJsonPath,
id: args.id, id: args.id,
prompt: args.prompt, prompt: args.prompt,
research: args.research, research: args.research,
projectRoot: rootFolder projectRoot: args.projectRoot
}, },
log, log,
{ session } { session }