@nomyx/assistant
Version:
A powerful assistant library and cli for your AI projects. works with Vertex AI (Claude and Gemini)
46 lines (36 loc) • 1.36 kB
text/typescript
import { PromptDefinition } from "../types/common";
export class StructuredPrompt {
constructor(public definition: PromptDefinition) {}
getPriority(): number | undefined {
return this.definition.priority;
}
setPriority(priority: number): void {
this.definition.priority = priority;
}
getConfig(): PromptDefinition['config'] | undefined {
return this.definition.config;
}
setConfig(config: PromptDefinition['config']): void {
this.definition.config = config;
}
render(variables: Record<string, string>, availablePrompts: PromptDefinition[]): string {
let renderedPrompt = this.definition.template;
// Replace variables
for (const [key, value] of Object.entries(variables)) {
renderedPrompt = renderedPrompt.replace(new RegExp(`{{${key}}}`, 'g'), value);
}
// Add available prompts information
const availablePromptsInfo = availablePrompts
.map(p => `- ${p.name}: ${p.description}`)
.join('\n');
renderedPrompt = renderedPrompt.replace('{{available_prompts}}', availablePromptsInfo);
// Add config information if available
if (this.definition.config) {
renderedPrompt += '\nConfig:';
for (const [key, value] of Object.entries(this.definition.config)) {
renderedPrompt += `\n- ${key}: ${value}`;
}
}
return renderedPrompt;
}
}