@shirokuma-library/mcp-knowledge-base
Version:
Shirokuma MCP Server for comprehensive knowledge management including issues, plans, documents, and work sessions. All stored data is structured for AI processing, not human readability.
44 lines (40 loc) • 1.63 kB
JavaScript
import { McpError, ErrorCode } from '@modelcontextprotocol/sdk/types.js';
import { ChangeItemTypeSchema } from '../schemas/change-type-schemas.js';
import { createLogger } from '../utils/logger.js';
export class ChangeTypeHandlers {
db;
logger = createLogger('ChangeTypeHandlers');
handlerName = 'ChangeTypeHandlers';
constructor(db) {
this.db = db;
}
async handleChangeItemType(args) {
this.logger.info('Changing item type');
const { from_type, from_id, to_type } = ChangeItemTypeSchema.parse(args);
const itemRepository = this.db.getItemRepository();
try {
const result = await itemRepository.changeItemType(from_type, from_id, to_type);
if (!result.success) {
throw new McpError(ErrorCode.InvalidRequest, result.error || 'Failed to change item type');
}
return {
content: [{
type: 'text',
text: `## Type Change Successful
Item successfully migrated:
- From: ${from_type}-${from_id}
- To: ${to_type}-${result.newId}
${result.relatedUpdates ? `\nRelated items updated: ${result.relatedUpdates}` : ''}
Note: The original item has been deleted.`
}]
};
}
catch (error) {
if (error instanceof McpError) {
throw error;
}
this.logger.error('Failed to change item type', error);
throw new McpError(ErrorCode.InternalError, `Failed to change item type: ${error instanceof Error ? error.message : String(error)}`);
}
}
}