UNPKG

@nomyx/assistant

Version:

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

50 lines (49 loc) 2.04 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.loadPrompts = loadPrompts; exports.loadPromptFromJson = loadPromptFromJson; exports.loadPromptFromJsonFile = loadPromptFromJsonFile; const fs_1 = require("fs"); async function loadPrompts(filePath) { try { const fileContent = await fs_1.promises.readFile(filePath, 'utf-8'); const promptsData = JSON.parse(fileContent); return Object.entries(promptsData).map(([name, data]) => loadPromptFromJson(name, data)); } catch (error) { console.error(`Error loading prompts from ${filePath}:`, error); throw new Error(`Failed to load prompts from ${filePath}: ${error instanceof Error ? error.message : String(error)}`); } } function loadPromptFromJson(name, promptData) { if (!isValidPromptData(promptData)) { throw new Error(`Invalid prompt data for ${name}`); } return { name, description: promptData.description || '', input_schema: promptData.input_schema, output_schema: promptData.output_schema, system_message: promptData.system_message, user_message: promptData.user_message, config: promptData.config || promptData.options || {}, tools: promptData.tools || [] // Add this line to include the tools array }; } function isValidPromptData(promptData) { return (promptData && typeof promptData.input_schema === 'object' && typeof promptData.output_schema === 'object' && typeof promptData.system_message === 'string' && typeof promptData.user_message === 'string' && Array.isArray(promptData.tools) // Add this line to check for the tools array ); } function loadPromptFromJsonFile(promptName) { const promptsJson = require('../config/prompts.json'); const promptData = promptsJson[promptName]; if (!promptData) { throw new Error(`Prompt ${promptName} not found in prompts.json`); } return loadPromptFromJson(promptName, promptData); }