UNPKG

cortexweaver

Version:

CortexWeaver is a command-line interface (CLI) tool that orchestrates a swarm of specialized AI agents, powered by Claude Code and Gemini CLI, to assist in software development. It transforms a high-level project plan (plan.md) into a series of coordinate

128 lines 5.38 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.PromptAnalyzer = void 0; /** * PromptAnalyzer handles prompt performance analysis for the Reflector agent */ class PromptAnalyzer { constructor(cognitiveCanvas, currentTask) { this.cognitiveCanvas = cognitiveCanvas; this.currentTask = currentTask; } /** * Analyze prompt performance correlation */ async analyzePromptPerformance() { if (!this.cognitiveCanvas || !this.currentTask) { return { promptVersions: {}, underperforming: [], recommendations: [] }; } try { const tasks = await this.cognitiveCanvas.getTasksByProject(this.currentTask.projectId); const promptVersions = {}; const underperforming = []; // Analyze prompt versions tasks.forEach(task => { const promptVersion = task.metadata?.promptVersion; if (!promptVersion) return; if (!promptVersions[promptVersion]) { promptVersions[promptVersion] = { successRate: 0, avgExecutionTime: 0, sampleSize: 0, lastUsed: task.createdAt }; } const data = promptVersions[promptVersion]; data.sampleSize++; const isSuccess = task.status === 'completed' && (!task.metadata?.testResults || (task.metadata.testResults.passed / (task.metadata.testResults.passed + task.metadata.testResults.failed)) > 0.7); data.successRate = ((data.successRate * (data.sampleSize - 1)) + (isSuccess ? 1 : 0)) / data.sampleSize; if (task.metadata?.performance?.executionTime) { data.avgExecutionTime = ((data.avgExecutionTime * (data.sampleSize - 1)) + task.metadata.performance.executionTime) / data.sampleSize; } if (task.createdAt > data.lastUsed) { data.lastUsed = task.createdAt; } }); // Identify underperforming prompts Object.entries(promptVersions).forEach(([version, data]) => { if (data.successRate < 0.6 && data.sampleSize >= 3) { const issues = []; const suggestedImprovements = []; if (data.successRate < 0.4) { issues.push('Very low success rate'); suggestedImprovements.push('Complete prompt rewrite recommended'); } else { issues.push('Below average success rate'); suggestedImprovements.push('Refine prompt clarity and specificity'); } if (data.avgExecutionTime > 200) { issues.push('High execution time'); suggestedImprovements.push('Optimize for efficiency and reduce complexity'); } underperforming.push({ version, issues, suggestedImprovements }); } }); const recommendations = this.generatePromptRecommendations(promptVersions, underperforming); return { promptVersions, underperforming, recommendations }; } catch (error) { console.warn('Prompt performance analysis failed:', error.message); return { promptVersions: {}, underperforming: [], recommendations: [] }; } } /** * Generate recommendations based on prompt analysis */ generatePromptRecommendations(promptVersions, underperforming) { const recommendations = []; if (underperforming.length > 0) { recommendations.push('Review and revise underperforming prompt versions'); recommendations.push('Consider A/B testing new prompt variations'); } const highPerformingVersions = Object.entries(promptVersions) .filter(([_, data]) => data.successRate > 0.8 && data.sampleSize >= 3) .map(([version, _]) => version); if (highPerformingVersions.length > 0) { recommendations.push(`Replicate successful patterns from versions: ${highPerformingVersions.join(', ')}`); } if (Object.keys(promptVersions).length > 5) { recommendations.push('Consider consolidating prompt versions to reduce complexity'); } return recommendations; } /** * Check if prompt analysis should be performed */ shouldAnalyzePrompts() { // Simplified criteria - could be enhanced with actual performance metrics return true; } /** * Update references for dependency injection */ updateReferences(cognitiveCanvas, currentTask) { this.cognitiveCanvas = cognitiveCanvas; this.currentTask = currentTask; } } exports.PromptAnalyzer = PromptAnalyzer; //# sourceMappingURL=prompt-analyzer.js.map