feat(telemetry): Integrate AI usage telemetry into update-tasks

This commit applies the standard telemetry pattern to the update-tasks command and its corresponding MCP tool.

Key Changes:

1.  Core Logic (scripts/modules/task-manager/update-tasks.js):
    -   The call to generateTextService now includes commandName: 'update-tasks' and outputType.
    -   The full response { mainResult, telemetryData } is captured.
    -   mainResult (the AI-generated text) is used for parsing the updated task JSON.
    -   If running in CLI mode (outputFormat === 'text'), displayAiUsageSummary is called with the telemetryData.
    -   The function now returns { success: true, updatedTasks: ..., telemetryData: ... }.

2.  Direct Function (mcp-server/src/core/direct-functions/update-tasks.js):
    -   The call to the core updateTasks function now passes the necessary context for telemetry (commandName, outputType).
    -   The successful response object now correctly extracts coreResult.telemetryData and includes it in the data.telemetryData field returned to the MCP client.
This commit is contained in:
Eyal Toledano
2025-05-08 18:51:29 -04:00
parent c955431753
commit bbc8b9cc1f
7 changed files with 163 additions and 139 deletions

View File

@@ -110,7 +110,7 @@ export async function updateTaskByIdDirect(args, log, context = {}) {
try {
// Execute core updateTaskById function with proper parameters
const updatedTask = await updateTaskById(
const coreResult = await updateTaskById(
tasksPath,
taskId,
prompt,
@@ -118,19 +118,26 @@ export async function updateTaskByIdDirect(args, log, context = {}) {
{
mcpLog: logWrapper,
session,
projectRoot
projectRoot,
commandName: 'update-task',
outputType: 'mcp'
},
'json'
);
// Check if the core function indicated the task wasn't updated (e.g., status was 'done')
if (updatedTask === null) {
// Check if the core function returned null or an object without success
if (!coreResult || coreResult.updatedTask === null) {
// Core function logs the reason, just return success with info
const message = `Task ${taskId} was not updated (likely already completed).`;
logWrapper.info(message);
return {
success: true,
data: { message: message, taskId: taskId, updated: false },
data: {
message: message,
taskId: taskId,
updated: false,
telemetryData: coreResult?.telemetryData
},
fromCache: false
};
}
@@ -146,7 +153,8 @@ export async function updateTaskByIdDirect(args, log, context = {}) {
tasksPath: tasksPath,
useResearch: useResearch,
updated: true,
updatedTask: updatedTask
updatedTask: coreResult.updatedTask,
telemetryData: coreResult.telemetryData
},
fromCache: false
};