track_progress
Use this tool to log progress and update Memory Bank files via SSH, documenting actions like feature implementations or bug fixes with detailed descriptions.
Instructions
Track progress and update Memory Bank files
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Action performed (e.g., 'Implemented feature', 'Fixed bug') | |
| description | Yes | Detailed description of the progress | |
| updateActiveContext | No | Whether to update the active context file |
Implementation Reference
- src/server/tools/ProgressTools.ts:39-53 (handler)Handler function that executes the track_progress tool by calling ProgressTracker.trackProgress and returning a response.export async function handleTrackProgress( progressTracker: ProgressTracker, action: string, description: string ) { await progressTracker.trackProgress(action, { description }); return { content: [ { type: 'text', text: `Progress tracked: ${action} - ${description}`, }, ], }; }
- Input schema definition for the track_progress tool, including parameters for action and description.export const progressTools = [ { name: 'track_progress', description: 'Track progress and update Memory Bank files', inputSchema: { type: 'object', properties: { action: { type: 'string', description: "Action performed (e.g., 'Implemented feature', 'Fixed bug')", }, description: { type: 'string', description: 'Detailed description of the progress', }, updateActiveContext: { type: 'boolean', description: 'Whether to update the active context file', default: true, }, }, required: ['action', 'description'], }, }, ];
- src/server/tools/index.ts:165-190 (registration)Registration and dispatching of the track_progress tool in the main tool call handler switch statement.case 'track_progress': { const progressTracker = getProgressTracker(); if (!progressTracker) { return { content: [ { type: 'text', text: 'Memory Bank not found. Use initialize_memory_bank to create one.', }, ], isError: true, }; } const { action, description } = request.params.arguments as { action: string; description: string; }; if (!action) { throw new McpError(ErrorCode.InvalidParams, 'Action not specified'); } if (!description) { throw new McpError(ErrorCode.InvalidParams, 'Description not specified'); } return handleTrackProgress(progressTracker, action, description); }
- src/core/ProgressTracker.ts:126-145 (helper)Core implementation of progress tracking, updating progress.md and active-context.md files in the Memory Bank.async trackProgress(action: string, details: ProgressDetails): Promise<string> { try { // Add GitHub profile URL to details if not already present if (!details.userId) { details.userId = this.userId; } // Update the progress file const updatedContent = await this.updateProgressFile(action, details); // Update the active context file await this.updateActiveContextFile(action, details); // Return the updated progress content return updatedContent; } catch (error) { console.error(`Error tracking progress: ${error}`); throw new Error(`Failed to track progress: ${error}`); } }