UNPKG

selvedge

Version:

A type-safe, declarative DSL for building robust, composable LLM prompts and programs in TypeScript. Selvedge simplifies prompt engineering, structured output, and multi-model orchestration.

132 lines 3.83 kB
import { ProgramBuilder } from './programs'; import { PromptTemplate } from './prompts'; /** * Metadata for tracking item usage */ export interface UsageMetadata { /** When the item was last used */ lastUsed?: Date; /** Total number of times the item has been used */ useCount: number; /** Performance metrics if available */ performance?: { /** Average execution time in ms */ avgExecutionTime?: number; /** Success rate (0-1) */ successRate?: number; }; /** Custom tags for organization */ tags?: string[]; /** User-provided description */ description?: string; } /** * Result of comparing two versions */ export interface ComparisonResult { /** Older version ID */ oldVersion: string; /** Newer version ID */ newVersion: string; /** Differences between versions */ differences: { /** Changes in structure */ structural?: string[]; /** Changes in metadata */ metadata?: string[]; /** Performance difference if available */ performance?: { executionTime?: number; successRate?: number; }; }; } /** * Selvedge Manager for handling stored items with metadata and CLI */ export declare class SelvedgeManager { /** * Create a new SelvedgeManager instance */ constructor(); /** * Initialize usage tracking */ private initializeUsageTracking; /** * Get the path to the metadata file for an item */ private getMetadataPath; /** * Load metadata for an item */ private loadMetadata; /** * Save metadata for an item */ private saveMetadata; /** * Track usage of an item */ trackUsage(type: 'prompt' | 'program', name: string, executionTime?: number, success?: boolean): Promise<void>; /** * Add or update metadata for an item */ updateMetadata(type: 'prompt' | 'program', name: string, updates: Partial<UsageMetadata>): Promise<void>; /** * Compare two versions of an item */ compareVersions(type: 'prompt' | 'program', name: string, v1: string, v2: string): Promise<ComparisonResult>; /** * Load a program with usage tracking */ loadProgram<T = string>(name: string, version?: string): Promise<ProgramBuilder<T>>; /** * Load a prompt with usage tracking */ loadPrompt<T = any>(name: string, version?: string): Promise<PromptTemplate<T>>; /** * Get detailed information about an item */ getItemInfo(type: 'prompt' | 'program', name: string): Promise<{ name: string; type: 'prompt' | 'program'; versions: string[]; metadata: UsageMetadata; }>; /** * Export an item to a file */ exportItem(type: 'prompt' | 'program', name: string, outputPath: string, version?: string): Promise<void>; /** * Import an item from a file */ importItem(filePath: string): Promise<{ type: 'prompt' | 'program'; name: string; version: string; }>; /** * List all items with their metadata */ listAllItems(): Promise<Array<{ name: string; type: 'prompt' | 'program'; versionCount: number; metadata: UsageMetadata; }>>; /** * Add tags to an item */ addTags(type: 'prompt' | 'program', name: string, tags: string[]): Promise<void>; /** * Remove tags from an item */ removeTags(type: 'prompt' | 'program', name: string, tags: string[]): Promise<void>; /** * Set a description for an item */ setDescription(type: 'prompt' | 'program', name: string, description: string): Promise<void>; } export declare const manager: SelvedgeManager; //# sourceMappingURL=manager.d.ts.map