feat: added handling for next-task in mcp
This commit is contained in:
@@ -4,7 +4,10 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
import { findNextTask } from '../../../../scripts/modules/task-manager.js';
|
import { findNextTask } from '../../../../scripts/modules/task-manager.js';
|
||||||
import { readJSON } from '../../../../scripts/modules/utils.js';
|
import {
|
||||||
|
readJSON,
|
||||||
|
readComplexityReport
|
||||||
|
} from '../../../../scripts/modules/utils.js';
|
||||||
import { getCachedOrExecute } from '../../tools/utils.js';
|
import { getCachedOrExecute } from '../../tools/utils.js';
|
||||||
import {
|
import {
|
||||||
enableSilentMode,
|
enableSilentMode,
|
||||||
@@ -21,7 +24,7 @@ import {
|
|||||||
*/
|
*/
|
||||||
export async function nextTaskDirect(args, log) {
|
export async function nextTaskDirect(args, log) {
|
||||||
// Destructure expected args
|
// Destructure expected args
|
||||||
const { tasksJsonPath } = args;
|
const { tasksJsonPath, reportPath } = args;
|
||||||
|
|
||||||
if (!tasksJsonPath) {
|
if (!tasksJsonPath) {
|
||||||
log.error('nextTaskDirect called without tasksJsonPath');
|
log.error('nextTaskDirect called without tasksJsonPath');
|
||||||
@@ -36,7 +39,7 @@ export async function nextTaskDirect(args, log) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Generate cache key using the provided task path
|
// Generate cache key using the provided task path
|
||||||
const cacheKey = `nextTask:${tasksJsonPath}`;
|
const cacheKey = `nextTask:${tasksJsonPath}:${reportPath}`;
|
||||||
|
|
||||||
// Define the action function to be executed on cache miss
|
// Define the action function to be executed on cache miss
|
||||||
const coreNextTaskAction = async () => {
|
const coreNextTaskAction = async () => {
|
||||||
@@ -59,8 +62,11 @@ export async function nextTaskDirect(args, log) {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Read the complexity report
|
||||||
|
const complexityReport = readComplexityReport(reportPath);
|
||||||
|
|
||||||
// Find the next task
|
// Find the next task
|
||||||
const nextTask = findNextTask(data.tasks);
|
const nextTask = findNextTask(data.tasks, complexityReport);
|
||||||
|
|
||||||
if (!nextTask) {
|
if (!nextTask) {
|
||||||
log.info(
|
log.info(
|
||||||
|
|||||||
@@ -10,7 +10,10 @@ import {
|
|||||||
getProjectRootFromSession
|
getProjectRootFromSession
|
||||||
} from './utils.js';
|
} from './utils.js';
|
||||||
import { nextTaskDirect } from '../core/task-master-core.js';
|
import { nextTaskDirect } from '../core/task-master-core.js';
|
||||||
import { findTasksJsonPath } from '../core/utils/path-utils.js';
|
import {
|
||||||
|
findTasksJsonPath,
|
||||||
|
findComplexityReportPath
|
||||||
|
} from '../core/utils/path-utils.js';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Register the next-task tool with the MCP server
|
* Register the next-task tool with the MCP server
|
||||||
@@ -23,6 +26,12 @@ export function registerNextTaskTool(server) {
|
|||||||
'Find the next task to work on based on dependencies and status',
|
'Find the next task to work on based on dependencies and status',
|
||||||
parameters: z.object({
|
parameters: z.object({
|
||||||
file: z.string().optional().describe('Absolute path to the tasks file'),
|
file: z.string().optional().describe('Absolute path to the tasks file'),
|
||||||
|
complexityReport: z
|
||||||
|
.string()
|
||||||
|
.optional()
|
||||||
|
.describe(
|
||||||
|
'Path to the complexity report file (relative to project root or absolute)'
|
||||||
|
),
|
||||||
projectRoot: z
|
projectRoot: z
|
||||||
.string()
|
.string()
|
||||||
.describe('The directory of the project. Must be an absolute path.')
|
.describe('The directory of the project. Must be an absolute path.')
|
||||||
@@ -56,10 +65,22 @@ export function registerNextTaskTool(server) {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Resolve the path to complexity report
|
||||||
|
let complexityReportPath;
|
||||||
|
try {
|
||||||
|
complexityReportPath = findComplexityReportPath(
|
||||||
|
rootFolder,
|
||||||
|
args.complexityReport,
|
||||||
|
log
|
||||||
|
);
|
||||||
|
} catch (error) {
|
||||||
|
log.error(`Error finding complexity report: ${error.message}`);
|
||||||
|
}
|
||||||
const result = await nextTaskDirect(
|
const result = await nextTaskDirect(
|
||||||
{
|
{
|
||||||
// Pass the explicitly resolved path
|
// Pass the explicitly resolved path
|
||||||
tasksJsonPath: tasksJsonPath
|
tasksJsonPath: tasksJsonPath,
|
||||||
|
reportPath: complexityReportPath
|
||||||
// No other args specific to this tool
|
// No other args specific to this tool
|
||||||
},
|
},
|
||||||
log
|
log
|
||||||
|
|||||||
Reference in New Issue
Block a user