import { getSystemPrompt } from './prompts/prompts'; import optimized from './prompts/optimized'; export interface PromptOptions { cwd: string; allowedHtmlElements: string[]; modificationTagName: string; } export class PromptLibrary { static library: Record< string, { label: string; description: string; get: (options: PromptOptions) => string; } > = { default: { label: 'Default Prompt', description: 'This is the battle tested default system Prompt', get: (options) => getSystemPrompt(options.cwd), }, optimized: { label: 'Optimized Prompt (experimental)', description: 'an Experimental version of the prompt for lower token usage', get: (options) => optimized(options), }, }; static getList() { return Object.entries(this.library).map(([key, value]) => { const { label, description } = value; return { id: key, label, description, }; }); } static getPropmtFromLibrary(promptId: string, options: PromptOptions) { const prompt = this.library[promptId]; if (!prompt) { throw 'Prompt Now Found'; } return this.library[promptId]?.get(options); } }