UNPKG

jezweb-mcp-core

Version:

Jezweb Model Context Protocol (MCP) Core - A universal server for providing AI tools and resources, designed for seamless integration with various AI models and clients. Features adaptable multi-provider support, comprehensive tool and resource management

188 lines 6.36 kB
/** * Assistant Tool Handlers - Handlers for all assistant-related operations * * This file contains handlers for: * - assistant-create: Create a new AI assistant * - assistant-list: List all assistants with pagination * - assistant-get: Get details of a specific assistant * - assistant-update: Update an existing assistant * - assistant-delete: Delete an assistant * * Each handler implements the BaseToolHandler interface and provides * specific validation and execution logic for assistant operations. */ import { BaseToolHandler } from './base-tool-handler.js'; import { validateCreateAssistantParams, validatePaginationParams, validateOpenAIId, validateModel, validateMetadata } from '../../validation/index.js'; /** * Handler for creating new assistants */ export class AssistantCreateHandler extends BaseToolHandler { getToolName() { return 'assistant-create'; } getCategory() { return 'assistant'; } validate(args) { return validateCreateAssistantParams(args); } async execute(args) { try { // Use generic request type const genericRequest = { model: args.model, name: args.name, description: args.description, instructions: args.instructions, tools: args.tools, tool_resources: args.tool_resources, metadata: args.metadata, providerOptions: args.providerOptions }; return await this.context.provider.createAssistant(genericRequest); } catch (error) { throw this.createExecutionError(`Failed to create assistant: ${error instanceof Error ? error.message : 'Unknown error'}`, error); } } } /** * Handler for listing assistants */ export class AssistantListHandler extends BaseToolHandler { getToolName() { return 'assistant-list'; } getCategory() { return 'assistant'; } validate(args) { return validatePaginationParams(args || {}); } async execute(args) { try { // Use generic request type const genericRequest = { limit: args?.limit, order: args?.order, after: args?.after, before: args?.before }; return await this.context.provider.listAssistants(genericRequest); } catch (error) { throw this.createExecutionError(`Failed to list assistants: ${error instanceof Error ? error.message : 'Unknown error'}`, error); } } } /** * Handler for getting assistant details */ export class AssistantGetHandler extends BaseToolHandler { getToolName() { return 'assistant-get'; } getCategory() { return 'assistant'; } validate(args) { return validateOpenAIId(args?.assistant_id, 'assistant', 'assistant_id'); } async execute(args) { try { return await this.context.provider.getAssistant(args.assistant_id); } catch (error) { throw this.createExecutionError(`Failed to get assistant: ${error instanceof Error ? error.message : 'Unknown error'}`, error); } } } /** * Handler for updating assistants */ export class AssistantUpdateHandler extends BaseToolHandler { getToolName() { return 'assistant-update'; } getCategory() { return 'assistant'; } validate(args) { // Validate assistant ID const idValidation = validateOpenAIId(args?.assistant_id, 'assistant', 'assistant_id'); if (!idValidation.isValid) { return idValidation; } const { assistant_id, ...updateData } = args; // Validate model if provided if (updateData.model) { const modelValidation = validateModel(updateData.model); if (!modelValidation.isValid) { return modelValidation; } } // Validate metadata if provided if (updateData.metadata !== undefined) { const metadataValidation = validateMetadata(updateData.metadata); if (!metadataValidation.isValid) { return metadataValidation; } } return { isValid: true }; } async execute(args) { try { const { assistant_id, ...updateData } = args; // Use generic request type const genericRequest = { model: updateData.model, name: updateData.name, description: updateData.description, instructions: updateData.instructions, tools: updateData.tools, tool_resources: updateData.tool_resources, metadata: updateData.metadata, providerOptions: updateData.providerOptions }; return await this.context.provider.updateAssistant(assistant_id, genericRequest); } catch (error) { throw this.createExecutionError(`Failed to update assistant: ${error instanceof Error ? error.message : 'Unknown error'}`, error); } } } /** * Handler for deleting assistants */ export class AssistantDeleteHandler extends BaseToolHandler { getToolName() { return 'assistant-delete'; } getCategory() { return 'assistant'; } validate(args) { return validateOpenAIId(args?.assistant_id, 'assistant', 'assistant_id'); } async execute(args) { try { return await this.context.provider.deleteAssistant(args.assistant_id); } catch (error) { throw this.createExecutionError(`Failed to delete assistant: ${error instanceof Error ? error.message : 'Unknown error'}`, error); } } } /** * Factory function to create all assistant handlers */ export function createAssistantHandlers(context) { return { 'assistant-create': new AssistantCreateHandler(context), 'assistant-list': new AssistantListHandler(context), 'assistant-get': new AssistantGetHandler(context), 'assistant-update': new AssistantUpdateHandler(context), 'assistant-delete': new AssistantDeleteHandler(context) }; } //# sourceMappingURL=assistant-handlers.js.map