UNPKG

@utaba/ucm-mcp-server

Version:

Universal Context Manager MCP Server - AI Productivity Platform

82 lines 3.65 kB
import { BaseToolController } from '../base/BaseToolController.js'; export class DeleteArtifactTool extends BaseToolController { constructor(ucmClient, logger, publishingAuthorId) { super(ucmClient, logger, publishingAuthorId); } get name() { return 'ucm_delete_artifact'; } get description() { return 'Delete a UCM artifact by path and version. This action cannot be undone. Only the latest or specified version is deleted.'; } get inputSchema() { return { type: 'object', properties: { author: { type: 'string', description: `Author name (e.g., ${this.publishingAuthorId || '01234567890'})`, minLength: 1, maxLength: 50 }, repository: { type: 'string', description: 'Repository name (e.g., "main")', minLength: 1, maxLength: 50 }, category: { type: 'string', description: 'Category name (e.g., "commands")', minLength: 1, maxLength: 50 }, subcategory: { type: 'string', description: 'Subcategory name (e.g., "user")', minLength: 1, maxLength: 50 }, filename: { type: 'string', description: 'Filename with optional version suffix (e.g., "CreateUserCommand.ts" or "CreateUserCommand.ts@1.0.0")', minLength: 1, maxLength: 150 } }, required: ['author', 'repository', 'category', 'subcategory', 'filename'] }; } async handleExecute(params) { const { author, repository, category, subcategory, filename } = params; this.logger.debug('DeleteArtifactTool', `Deleting artifact: ${author}/${repository}/${category}/${subcategory}/${filename}`); try { // Parse filename to extract version if present const parts = filename.split('@'); const actualFilename = parts[0]; const version = parts.length > 1 ? parts[1] : undefined; // Delete artifact from API and capture the response const deleteResponse = await this.ucmClient.deleteArtifact(author, repository, category, subcategory, actualFilename, version); const path = `${author}/${repository}/${category}/${subcategory}/${filename}`; this.logger.info('DeleteArtifactTool', `Artifact deleted successfully: ${path}`); // Use actual response data from the server instead of hardcoded values return { success: deleteResponse.success || true, message: `Artifact deleted successfully`, author, repository, category, subcategory, filename: deleteResponse.filename || actualFilename, version: deleteResponse.version, // Use actual version that was deleted from server path, deletedAt: deleteResponse.deletedAt || new Date().toISOString() }; } catch (error) { this.logger.error('DeleteArtifactTool', `Failed to delete artifact: ${author}/${repository}/${category}/${subcategory}/${filename}`, '', error); throw error; } } } //# sourceMappingURL=DeleteArtifactTool.js.map