UNPKG

@nomyx/assistant

Version:

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

55 lines (47 loc) 1.92 kB
import { promises as fs } from 'fs'; import { StructuredPrompt } from '../types'; export async function loadPrompts(filePath: string): Promise<StructuredPrompt[]> { try { const fileContent = await fs.readFile(filePath, 'utf-8'); const promptsData = JSON.parse(fileContent); return Object.entries(promptsData).map(([name, data]: [string, any]) => 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)}`); } } export function loadPromptFromJson(name: string, promptData: any): StructuredPrompt { 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: any): boolean { 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 ); } export function loadPromptFromJsonFile(promptName: string): StructuredPrompt { 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); }