UNPKG

@nomyx/assistant

Version:

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

61 lines (50 loc) 1.67 kB
import { StructuredPrompt } from './StructuredPrompt'; import { PromptDefinition } from '../types/common'; export class PromptRegistry { private prompts: Map<string, StructuredPrompt> = new Map(); register(prompt: StructuredPrompt): void { this.prompts.set(prompt.definition.name, prompt); } get(name: string): StructuredPrompt { const prompt = this.prompts.get(name); if (!prompt) { throw new Error(`Prompt not found: ${name}`); } return prompt; } getAllPrompts(): StructuredPrompt[] { return Array.from(this.prompts.values()); } getPromptNames(): string[] { return Array.from(this.prompts.keys()); } removePrompt(name: string): boolean { return this.prompts.delete(name); } clear(): void { this.prompts.clear(); } size(): number { return this.prompts.size; } getPromptsSortedByPriority(): StructuredPrompt[] { return this.getAllPrompts().sort((a, b) => { const priorityA = a.getPriority() ?? 0; const priorityB = b.getPriority() ?? 0; return priorityB - priorityA; // Sort in descending order }); } getHighestPriorityPrompt(): StructuredPrompt | undefined { const sortedPrompts = this.getPromptsSortedByPriority(); return sortedPrompts[0]; } getPromptsByConfig(config: Partial<NonNullable<PromptDefinition['config']>>): StructuredPrompt[] { return this.getAllPrompts().filter(prompt => { const promptConfig = prompt.getConfig(); if (!promptConfig) return false; return Object.entries(config).every(([key, value]) => promptConfig[key as keyof PromptDefinition['config']] === value ); }); } }