UNPKG

@dollhousemcp/mcp-server

Version:

DollhouseMCP - A Model Context Protocol (MCP) server that enables dynamic AI persona management from markdown files, allowing Claude and other compatible AI assistants to activate and switch between different behavioral personas.

109 lines 3.54 kB
/** * Rating management system for element evaluation and feedback processing. * Handles both AI evaluation and user feedback to drive continuous improvement. */ import { IElement, UserFeedback, FeedbackContext } from './IElement.js'; import { ElementType } from '../../portfolio/types.js'; export interface IRatingManager { evaluateElement(element: IElement, metrics: PerformanceMetrics): Promise<number>; processFeedback(element: IElement, feedback: string, context?: FeedbackContext): Promise<void>; analyzeDelta(element: IElement): DeltaAnalysis; suggestImprovements(element: IElement): Improvement[]; getAggregateRatings(elementType?: ElementType): AggregateRatings; getRatingHistory(elementId: string): RatingHistoryEntry[]; evaluateMany(elements: IElement[], metrics: PerformanceMetrics): Promise<Map<string, number>>; } export interface PerformanceMetrics { taskCompletion: number; responseTime: number; errorRate: number; resourceUsage?: ResourceMetrics; customMetrics?: Record<string, number>; } export interface ResourceMetrics { tokenCount?: number; apiCalls?: number; computeTime?: number; memoryUsage?: number; } export interface DeltaAnalysis { delta: number; significance: 'high' | 'medium' | 'low' | 'none'; possibleReasons: string[]; recommendations: string[]; confidence: number; } export interface Improvement { area: string; currentScore: number; targetScore: number; suggestion: string; priority: 'high' | 'medium' | 'low'; estimatedImpact: number; } export interface AggregateRatings { elementType?: ElementType; count: number; averageAiRating: number; averageUserRating: number; averageDelta: number; topRated: ElementRatingSummary[]; bottomRated: ElementRatingSummary[]; mostImproved: ElementRatingSummary[]; distribution: RatingDistribution; } export interface ElementRatingSummary { elementId: string; elementName: string; aiRating: number; userRating?: number; ratingCount: number; trend: 'improving' | 'declining' | 'stable'; } export interface RatingDistribution { stars1: number; stars2: number; stars3: number; stars4: number; stars5: number; } export interface RatingHistoryEntry { timestamp: Date; aiRating: number; userRating?: number; metrics?: PerformanceMetrics; feedback?: UserFeedback; version: string; } export interface IFeedbackProcessor { process(feedback: string): Promise<ProcessedFeedback>; analyzeSentiment(text: string): Promise<'positive' | 'negative' | 'neutral'>; inferRating(text: string): Promise<number | null>; extractSuggestions(text: string): Promise<string[]>; } export interface ProcessedFeedback { originalFeedback: string; sentiment: 'positive' | 'negative' | 'neutral'; inferredRating?: number; confidence: number; keywords: string[]; suggestions: string[]; entities: FeedbackEntity[]; } export interface FeedbackEntity { type: 'feature' | 'issue' | 'praise' | 'criticism'; text: string; relevance: number; } export interface IRatingCalculator<T extends IElement> { calculate(element: T, metrics: PerformanceMetrics): number; getWeights(): RatingWeights; adjustWeights(feedback: ProcessedFeedback[]): RatingWeights; } export interface RatingWeights { effectiveness: number; reliability: number; usability: number; [key: string]: number; } //# sourceMappingURL=IRatingManager.d.ts.map