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