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
TypeScript
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