Files
n8n-enterprise-unlocked/packages/cli/src/controllers/ai.controller.ts
T

56 lines
1.6 KiB
TypeScript

import { Post, RestController } from '@/decorators';
import { AIRequest } from '@/requests';
import { AIService } from '@/services/ai.service';
import { NodeTypes } from '@/NodeTypes';
import { FailedDependencyError } from '@/errors/response-errors/failed-dependency.error';
@RestController('/ai')
export class AIController {
constructor(
private readonly aiService: AIService,
private readonly nodeTypes: NodeTypes,
) {}
/**
* Suggest a solution for a given error using the AI provider.
*/
@Post('/debug-error')
async debugError(req: AIRequest.DebugError): Promise<{ message: string }> {
const { error } = req.body;
let nodeType;
if (error.node?.type) {
nodeType = this.nodeTypes.getByNameAndVersion(error.node.type, error.node.typeVersion);
}
try {
const message = await this.aiService.debugError(error, nodeType);
return {
message,
};
} catch (aiServiceError) {
throw new FailedDependencyError(
(aiServiceError as Error).message ||
'Failed to debug error due to an issue with an external dependency. Please try again later.',
);
}
}
/**
* Generate CURL request and additional HTTP Node metadata for given service and request
*/
@Post('/generate-curl')
async generateCurl(req: AIRequest.GenerateCurl): Promise<{ curl: string; metadata?: object }> {
const { service, request } = req.body;
try {
return await this.aiService.generateCurl(service, request);
} catch (aiServiceError) {
throw new FailedDependencyError(
(aiServiceError as Error).message ||
'Failed to generate HTTP Request Node parameters due to an issue with an external dependency. Please try again later.',
);
}
}
}