set_file_approval
Mark files as approved for development, code review, or QA stages to manage workflow permissions and track changes in coding sessions.
Instructions
Set approval status for a file
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| filePath | Yes | Path to the file | |
| approvalType | Yes | ||
| approvedBy | Yes | Who approved it |
Implementation Reference
- src/index.ts:817-822 (handler)Executes the 'set_file_approval' tool by parsing input arguments and delegating to the MemoryManager's setFileApproval method.case 'set_file_approval': { const filePath = args.filePath as string; const approvalType = args.approvalType as keyof import('./types').ApprovalStatus; const approvedBy = args.approvedBy as string; await this.memoryManager.setFileApproval(filePath, approvalType, approvedBy); return { content: [{ type: 'text', text: 'File approval set successfully' }] };
- src/index.ts:605-613 (schema)Input schema definition for the 'set_file_approval' tool, defining parameters and validation.inputSchema: { type: 'object', properties: { filePath: { type: 'string', description: 'Path to the file' }, approvalType: { type: 'string', enum: ['devApproved', 'codeReviewApproved', 'qaApproved'] }, approvedBy: { type: 'string', description: 'Who approved it' } }, required: ['filePath', 'approvalType', 'approvedBy'] }
- src/index.ts:603-614 (registration)Registers the 'set_file_approval' tool with the MCP server, including name, description, and input schema.name: 'set_file_approval', description: 'Set approval status for a file', inputSchema: { type: 'object', properties: { filePath: { type: 'string', description: 'Path to the file' }, approvalType: { type: 'string', enum: ['devApproved', 'codeReviewApproved', 'qaApproved'] }, approvedBy: { type: 'string', description: 'Who approved it' } }, required: ['filePath', 'approvalType', 'approvedBy'] } },
- src/memory-manager.ts:184-216 (helper)Core implementation that updates the approval status for a file in the project memory, handling different approval types via a switch statement.async setFileApproval(filePath: string, approvalType: keyof ApprovalStatus, approvedBy: string): Promise<void> { const memory = await this.getProjectMemory(); const relativePath = path.relative(this.projectRoot, filePath); if (!memory.approvalStates[relativePath]) { memory.approvalStates[relativePath] = {}; } const approvals = memory.approvalStates[relativePath]; // Set the approval status switch (approvalType) { case 'devApproved': approvals.devApproved = true; approvals.devApprovedBy = approvedBy; approvals.devApprovedDate = new Date().toISOString(); break; case 'codeReviewApproved': approvals.codeReviewApproved = true; approvals.codeReviewApprovedBy = approvedBy; approvals.codeReviewDate = new Date().toISOString(); break; case 'qaApproved': approvals.qaApproved = true; approvals.qaApprovedBy = approvedBy; approvals.qaApprovedDate = new Date().toISOString(); break; } await this.saveProjectMemory(memory); console.log(chalk.green(`✅ ${approvalType} set for ${relativePath} by ${approvedBy}`)); }
- src/types.ts:52-61 (schema)TypeScript interface defining the structure of ApprovalStatus used for file approvals.export interface ApprovalStatus { devApproved?: boolean; devApprovedBy?: string; devApprovedDate?: string; codeReviewApproved?: boolean; codeReviewApprovedBy?: string; codeReviewDate?: string; qaApproved?: boolean; qaApprovedBy?: string; qaApprovedDate?: string;