UNPKG

@nomyx/assistant

Version:

A powerful assistant library and cli for your AI projects. works with Vertex AI (Claude and Gemini)

57 lines (56 loc) 2.23 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.executePromptAction = executePromptAction; exports.testPromptRouting = testPromptRouting; const conditionEvaluator_1 = require("../utils/conditionEvaluator"); async function executePromptAction(promptAction, params, context) { if (promptAction.routing && promptAction.routing.length > 0) { for (const route of promptAction.routing) { if ((0, conditionEvaluator_1.evaluateCondition)(route.condition, { ...context.state, ...params })) { if (typeof route.prompt === 'string') { return context.executeAction(route.prompt); } else { return executePromptAction(route.prompt, params, context); } } } // If no conditions are met, end execution return null; } // Execute the current prompt if no routing or no conditions met const messages = [ { role: 'system', content: promptAction.content }, { role: 'user', content: JSON.stringify(params) } ]; const options = { ...promptAction.options, ...promptAction.config }; try { const result = await context.aiProvider.chat(messages, options); return result; } catch (error) { context.logger.error('Error executing prompt action:', error); throw error; } } // Export a test function to verify routing function testPromptRouting(promptAction, params, context) { let result = 'Routing Test:\n'; if (promptAction.routing && promptAction.routing.length > 0) { for (const route of promptAction.routing) { const conditionMet = (0, conditionEvaluator_1.evaluateCondition)(route.condition, { ...context.state, ...params }); result += `Condition "${route.condition}": ${conditionMet ? 'Met' : 'Not Met'}\n`; if (conditionMet) { result += `Routing to: ${typeof route.prompt === 'string' ? route.prompt : route.prompt.name}\n`; break; } } } else { result += 'No routing defined. Executing current prompt.\n'; } return result; }