UNPKG

@nomyx/assistant

Version:

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

42 lines (32 loc) 1.73 kB
import * as path from 'path'; import { ILogger, Tool, StructuredPrompt } from '../types'; import { initializeTools } from './tools'; import { loadPrompts } from './promptLoader'; export class ToolAndPromptLoader { constructor(private logger: ILogger) {} async initializeToolsAndPrompts(toolsPath?: string, promptsPath?: string): Promise<{ tools: Record<string, Tool>, prompts: Record<string, StructuredPrompt> }> { const currentDir = process.cwd(); const defaultToolsPath = path.join(currentDir, 'src', 'config', 'tools.json'); const defaultPromptsPath = path.join(currentDir, 'src', 'config', 'prompts.json'); const finalToolsPath = toolsPath || defaultToolsPath; const finalPromptsPath = promptsPath || defaultPromptsPath; this.logger.info(`Initializing tools from: ${finalToolsPath}`); this.logger.info(`Initializing prompts from: ${finalPromptsPath}`); const tools = await initializeTools(finalToolsPath); const loadedPrompts = await loadPrompts(finalPromptsPath); this.logger.info(`Loaded ${loadedPrompts.length} prompts`); const prompts: Record<string, StructuredPrompt> = {}; for (const prompt of loadedPrompts) { prompts[prompt.name] = prompt; this.logger.debug(`Loaded prompt: ${prompt.name}`); } if ('executeTask' in prompts) { this.logger.info("'executeTask' prompt successfully loaded"); } else { this.logger.warn("'executeTask' prompt not found in loaded prompts"); } this.logger.info(`Initialized ${Object.keys(tools).length} tools and ${Object.keys(prompts).length} prompts`); this.logger.debug(`Loaded prompt names: ${Object.keys(prompts).join(', ')}`); return { tools, prompts }; } }