handler.ts•2.17 kB
/**
* Workflow Tools Handler
*
* This module handles calls to workflow-related tools.
*/
import { ToolCallResult } from '../../types/index.js';
import { N8nApiError } from '../../errors/index.js';
import {
ListWorkflowsHandler,
GetWorkflowHandler,
CreateWorkflowHandler,
UpdateWorkflowHandler,
DeleteWorkflowHandler,
ActivateWorkflowHandler,
DeactivateWorkflowHandler,
} from './index.js';
/**
* Handle workflow tool calls
*
* @param toolName Name of the tool being called
* @param args Arguments passed to the tool
* @returns Tool call result
*/
export default async function workflowHandler(
toolName: string,
args: Record<string, any>
): Promise<ToolCallResult> {
try {
// Route to the appropriate handler based on the tool name
switch (toolName) {
case 'list_workflows':
return await new ListWorkflowsHandler().execute(args);
case 'get_workflow':
return await new GetWorkflowHandler().execute(args);
case 'create_workflow':
return await new CreateWorkflowHandler().execute(args);
case 'update_workflow':
return await new UpdateWorkflowHandler().execute(args);
case 'delete_workflow':
return await new DeleteWorkflowHandler().execute(args);
case 'activate_workflow':
return await new ActivateWorkflowHandler().execute(args);
case 'deactivate_workflow':
return await new DeactivateWorkflowHandler().execute(args);
default:
throw new N8nApiError(`Unknown workflow tool: ${toolName}`);
}
} catch (error) {
if (error instanceof N8nApiError) {
return {
content: [
{
type: 'text',
text: error.message,
},
],
isError: true,
};
}
// Handle unexpected errors
const errorMessage = error instanceof Error
? error.message
: 'Unknown error occurred';
return {
content: [
{
type: 'text',
text: `Error executing workflow tool: ${errorMessage}`,
},
],
isError: true,
};
}
}