@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
JavaScript
;
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;
}