mirror of
https://github.com/n8n-io/n8n.git
synced 2026-05-30 16:26:59 +02:00
43 lines
1.3 KiB
TypeScript
43 lines
1.3 KiB
TypeScript
import type { INodeTypeDescription } from 'n8n-workflow';
|
|
|
|
import type { ProgrammaticEvaluationInput } from '@/validation/types';
|
|
|
|
import {
|
|
evaluateConnections,
|
|
evaluateTools,
|
|
evaluateAgentPrompt,
|
|
evaluateFromAi,
|
|
evaluateTrigger,
|
|
} from './evaluators';
|
|
import { calculateOverallScore } from '../utils/score';
|
|
|
|
export function programmaticEvaluation(
|
|
input: ProgrammaticEvaluationInput,
|
|
nodeTypes: INodeTypeDescription[],
|
|
) {
|
|
const { generatedWorkflow } = input;
|
|
|
|
const connectionsEvaluationResult = evaluateConnections(generatedWorkflow, nodeTypes);
|
|
const triggerEvaluationResult = evaluateTrigger(generatedWorkflow, nodeTypes);
|
|
const agentPromptEvaluationResult = evaluateAgentPrompt(generatedWorkflow);
|
|
const toolsEvaluationResult = evaluateTools(generatedWorkflow, nodeTypes);
|
|
const fromAiEvaluationResult = evaluateFromAi(generatedWorkflow, nodeTypes);
|
|
|
|
const overallScore = calculateOverallScore({
|
|
connections: connectionsEvaluationResult,
|
|
trigger: triggerEvaluationResult,
|
|
agentPrompt: agentPromptEvaluationResult,
|
|
tools: toolsEvaluationResult,
|
|
fromAi: fromAiEvaluationResult,
|
|
});
|
|
|
|
return {
|
|
overallScore,
|
|
connections: connectionsEvaluationResult,
|
|
trigger: triggerEvaluationResult,
|
|
agentPrompt: agentPromptEvaluationResult,
|
|
tools: toolsEvaluationResult,
|
|
fromAi: fromAiEvaluationResult,
|
|
};
|
|
}
|