strray-ai 1.7.2 → 1.7.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (189) hide show
  1. package/.opencode/hooks/post-commit +152 -55
  2. package/.opencode/hooks/post-commit.backup +110 -174
  3. package/.opencode/hooks/post-push +47 -64
  4. package/.opencode/hooks/post-push.backup +34 -38
  5. package/.opencode/strray/features.json +3 -3
  6. package/.opencode/strray/routing-mappings.json +90 -34
  7. package/AGENTS.md +7 -2
  8. package/dist/analytics/anonymization-engine.d.ts +108 -0
  9. package/dist/analytics/anonymization-engine.d.ts.map +1 -0
  10. package/dist/analytics/anonymization-engine.js +352 -0
  11. package/dist/analytics/anonymization-engine.js.map +1 -0
  12. package/dist/analytics/consent-manager.d.ts +94 -0
  13. package/dist/analytics/consent-manager.d.ts.map +1 -0
  14. package/dist/analytics/consent-manager.js +257 -0
  15. package/dist/analytics/consent-manager.js.map +1 -0
  16. package/dist/analytics/emerging-pattern-detector.d.ts +68 -0
  17. package/dist/analytics/emerging-pattern-detector.d.ts.map +1 -0
  18. package/dist/analytics/emerging-pattern-detector.js +250 -0
  19. package/dist/analytics/emerging-pattern-detector.js.map +1 -0
  20. package/dist/analytics/pattern-learning-engine.d.ts +81 -0
  21. package/dist/analytics/pattern-learning-engine.d.ts.map +1 -0
  22. package/dist/analytics/pattern-learning-engine.js +262 -0
  23. package/dist/analytics/pattern-learning-engine.js.map +1 -0
  24. package/dist/analytics/pattern-performance-tracker.d.ts +89 -0
  25. package/dist/analytics/pattern-performance-tracker.d.ts.map +1 -0
  26. package/dist/analytics/pattern-performance-tracker.js +289 -0
  27. package/dist/analytics/pattern-performance-tracker.js.map +1 -0
  28. package/dist/analytics/prompt-pattern-analyzer.d.ts +100 -0
  29. package/dist/analytics/prompt-pattern-analyzer.d.ts.map +1 -0
  30. package/dist/analytics/prompt-pattern-analyzer.js +372 -0
  31. package/dist/analytics/prompt-pattern-analyzer.js.map +1 -0
  32. package/dist/analytics/routing-performance-analyzer.d.ts +102 -0
  33. package/dist/analytics/routing-performance-analyzer.d.ts.map +1 -0
  34. package/dist/analytics/routing-performance-analyzer.js +342 -0
  35. package/dist/analytics/routing-performance-analyzer.js.map +1 -0
  36. package/dist/analytics/routing-refiner.d.ts +105 -0
  37. package/dist/analytics/routing-refiner.d.ts.map +1 -0
  38. package/dist/analytics/routing-refiner.js +381 -0
  39. package/dist/analytics/routing-refiner.js.map +1 -0
  40. package/dist/cli/commands/analytics-disable.d.ts +10 -0
  41. package/dist/cli/commands/analytics-disable.d.ts.map +1 -0
  42. package/dist/cli/commands/analytics-disable.js +73 -0
  43. package/dist/cli/commands/analytics-disable.js.map +1 -0
  44. package/dist/cli/commands/analytics-enable-action.d.ts +9 -0
  45. package/dist/cli/commands/analytics-enable-action.d.ts.map +1 -0
  46. package/dist/cli/commands/analytics-enable-action.js +83 -0
  47. package/dist/cli/commands/analytics-enable-action.js.map +1 -0
  48. package/dist/cli/commands/analytics-preview.d.ts +10 -0
  49. package/dist/cli/commands/analytics-preview.d.ts.map +1 -0
  50. package/dist/cli/commands/analytics-preview.js +107 -0
  51. package/dist/cli/commands/analytics-preview.js.map +1 -0
  52. package/dist/cli/commands/analytics-status.d.ts +10 -0
  53. package/dist/cli/commands/analytics-status.d.ts.map +1 -0
  54. package/dist/cli/commands/analytics-status.js +68 -0
  55. package/dist/cli/commands/analytics-status.js.map +1 -0
  56. package/dist/cli/index.js +6 -3
  57. package/dist/cli/index.js.map +1 -1
  58. package/dist/core/adaptive-kernel.d.ts +110 -0
  59. package/dist/core/adaptive-kernel.d.ts.map +1 -0
  60. package/dist/core/adaptive-kernel.js +193 -0
  61. package/dist/core/adaptive-kernel.js.map +1 -0
  62. package/dist/core/kernel-patterns.d.ts +105 -0
  63. package/dist/core/kernel-patterns.d.ts.map +1 -0
  64. package/dist/core/kernel-patterns.js +328 -0
  65. package/dist/core/kernel-patterns.js.map +1 -0
  66. package/dist/core/orchestrator.d.ts +1 -0
  67. package/dist/core/orchestrator.d.ts.map +1 -1
  68. package/dist/core/orchestrator.js +40 -11
  69. package/dist/core/orchestrator.js.map +1 -1
  70. package/dist/delegation/agent-delegator.d.ts +1 -0
  71. package/dist/delegation/agent-delegator.d.ts.map +1 -1
  72. package/dist/delegation/agent-delegator.js +24 -2
  73. package/dist/delegation/agent-delegator.js.map +1 -1
  74. package/dist/delegation/task-skill-router.d.ts +269 -5
  75. package/dist/delegation/task-skill-router.d.ts.map +1 -1
  76. package/dist/delegation/task-skill-router.js +810 -23
  77. package/dist/delegation/task-skill-router.js.map +1 -1
  78. package/dist/postprocessor/PostProcessor.d.ts +10 -0
  79. package/dist/postprocessor/PostProcessor.d.ts.map +1 -1
  80. package/dist/postprocessor/PostProcessor.js +87 -17
  81. package/dist/postprocessor/PostProcessor.js.map +1 -1
  82. package/dist/processors/agents-md-validation-processor.d.ts +1 -0
  83. package/dist/processors/agents-md-validation-processor.d.ts.map +1 -1
  84. package/dist/processors/agents-md-validation-processor.js +34 -12
  85. package/dist/processors/agents-md-validation-processor.js.map +1 -1
  86. package/dist/processors/processor-manager.d.ts +7 -0
  87. package/dist/processors/processor-manager.d.ts.map +1 -1
  88. package/dist/processors/processor-manager.js +93 -0
  89. package/dist/processors/processor-manager.js.map +1 -1
  90. package/dist/processors/test-auto-creation-processor.d.ts.map +1 -1
  91. package/dist/processors/test-auto-creation-processor.js +52 -38
  92. package/dist/processors/test-auto-creation-processor.js.map +1 -1
  93. package/dist/scripts/analytics/daily-routing-analysis.d.ts +18 -0
  94. package/dist/scripts/analytics/daily-routing-analysis.d.ts.map +1 -0
  95. package/dist/scripts/analytics/daily-routing-analysis.js +268 -0
  96. package/dist/scripts/analytics/daily-routing-analysis.js.map +1 -0
  97. package/dist/scripts/analytics/index.d.ts +15 -0
  98. package/dist/scripts/analytics/index.d.ts.map +1 -0
  99. package/dist/scripts/analytics/index.js +17 -0
  100. package/dist/scripts/analytics/index.js.map +1 -0
  101. package/dist/scripts/test-p9.d.ts +15 -0
  102. package/dist/scripts/test-p9.d.ts.map +1 -0
  103. package/dist/scripts/test-p9.js +220 -0
  104. package/dist/scripts/test-p9.js.map +1 -0
  105. package/package.json +6 -2
  106. package/scripts/node/kernel-e2e-test.mjs +168 -0
  107. package/scripts/node/kernel-framework-test.mjs +127 -0
  108. package/scripts/node/kernel-live-test.mjs +147 -0
  109. package/scripts/node/kernel-real-framework-test.mjs +103 -0
  110. package/scripts/node/kernel-update.cjs +379 -0
  111. package/scripts/node/reflection-check.sh +245 -27
  112. package/scripts/node/test-simple-names-comprehensive.mjs +221 -0
  113. package/scripts/node/test-simple-names.mjs +39 -0
  114. package/dist/agents/documentation-writer.d.ts +0 -9
  115. package/dist/agents/documentation-writer.d.ts.map +0 -1
  116. package/dist/agents/documentation-writer.js +0 -85
  117. package/dist/agents/documentation-writer.js.map +0 -1
  118. package/dist/agents/explore.d.ts +0 -8
  119. package/dist/agents/explore.d.ts.map +0 -1
  120. package/dist/agents/explore.js +0 -55
  121. package/dist/agents/explore.js.map +0 -1
  122. package/dist/agents/librarian.d.ts +0 -3
  123. package/dist/agents/librarian.d.ts.map +0 -1
  124. package/dist/agents/librarian.js +0 -84
  125. package/dist/agents/librarian.js.map +0 -1
  126. package/dist/agents/marketing-expert.d.ts +0 -9
  127. package/dist/agents/marketing-expert.d.ts.map +0 -1
  128. package/dist/agents/marketing-expert.js +0 -112
  129. package/dist/agents/marketing-expert.js.map +0 -1
  130. package/dist/agents/oracle.d.ts +0 -8
  131. package/dist/agents/oracle.d.ts.map +0 -1
  132. package/dist/agents/oracle.js +0 -51
  133. package/dist/agents/oracle.js.map +0 -1
  134. package/dist/agents/seo-copywriter.d.ts +0 -10
  135. package/dist/agents/seo-copywriter.d.ts.map +0 -1
  136. package/dist/agents/seo-copywriter.js +0 -73
  137. package/dist/agents/seo-copywriter.js.map +0 -1
  138. package/dist/agents/seo-specialist.d.ts +0 -9
  139. package/dist/agents/seo-specialist.d.ts.map +0 -1
  140. package/dist/agents/seo-specialist.js +0 -54
  141. package/dist/agents/seo-specialist.js.map +0 -1
  142. package/dist/agents/test-architect.d.ts +0 -3
  143. package/dist/agents/test-architect.d.ts.map +0 -1
  144. package/dist/agents/test-architect.js +0 -96
  145. package/dist/agents/test-architect.js.map +0 -1
  146. package/dist/mcps/enhanced-orchestrator.server.d.ts +0 -14
  147. package/dist/mcps/enhanced-orchestrator.server.d.ts.map +0 -1
  148. package/dist/mcps/enhanced-orchestrator.server.js +0 -266
  149. package/dist/mcps/enhanced-orchestrator.server.js.map +0 -1
  150. package/dist/mcps/knowledge-skills/analyzer.server.d.ts +0 -7
  151. package/dist/mcps/knowledge-skills/analyzer.server.d.ts.map +0 -1
  152. package/dist/mcps/knowledge-skills/analyzer.server.js +0 -282
  153. package/dist/mcps/knowledge-skills/analyzer.server.js.map +0 -1
  154. package/dist/mcps/knowledge-skills/documentation-generation.server.d.ts +0 -48
  155. package/dist/mcps/knowledge-skills/documentation-generation.server.d.ts.map +0 -1
  156. package/dist/mcps/knowledge-skills/documentation-generation.server.js +0 -1238
  157. package/dist/mcps/knowledge-skills/documentation-generation.server.js.map +0 -1
  158. package/dist/mcps/knowledge-skills/explore.server.d.ts +0 -21
  159. package/dist/mcps/knowledge-skills/explore.server.d.ts.map +0 -1
  160. package/dist/mcps/knowledge-skills/explore.server.js +0 -582
  161. package/dist/mcps/knowledge-skills/explore.server.js.map +0 -1
  162. package/dist/mcps/knowledge-skills/marketing-expert.server.d.ts +0 -8
  163. package/dist/mcps/knowledge-skills/marketing-expert.server.d.ts.map +0 -1
  164. package/dist/mcps/knowledge-skills/marketing-expert.server.js +0 -356
  165. package/dist/mcps/knowledge-skills/marketing-expert.server.js.map +0 -1
  166. package/dist/mcps/knowledge-skills/oracle.server.d.ts +0 -25
  167. package/dist/mcps/knowledge-skills/oracle.server.d.ts.map +0 -1
  168. package/dist/mcps/knowledge-skills/oracle.server.js +0 -569
  169. package/dist/mcps/knowledge-skills/oracle.server.js.map +0 -1
  170. package/dist/mcps/knowledge-skills/seo-copywriter.server.d.ts +0 -8
  171. package/dist/mcps/knowledge-skills/seo-copywriter.server.d.ts.map +0 -1
  172. package/dist/mcps/knowledge-skills/seo-copywriter.server.js +0 -251
  173. package/dist/mcps/knowledge-skills/seo-copywriter.server.js.map +0 -1
  174. package/dist/mcps/knowledge-skills/seo-specialist.server.d.ts +0 -8
  175. package/dist/mcps/knowledge-skills/seo-specialist.server.d.ts.map +0 -1
  176. package/dist/mcps/knowledge-skills/seo-specialist.server.js +0 -211
  177. package/dist/mcps/knowledge-skills/seo-specialist.server.js.map +0 -1
  178. package/dist/mcps/librarian.server.d.ts +0 -17
  179. package/dist/mcps/librarian.server.d.ts.map +0 -1
  180. package/dist/mcps/librarian.server.js +0 -382
  181. package/dist/mcps/librarian.server.js.map +0 -1
  182. package/dist/optimization/performance-optimizer.d.ts +0 -179
  183. package/dist/optimization/performance-optimizer.d.ts.map +0 -1
  184. package/dist/optimization/performance-optimizer.js +0 -556
  185. package/dist/optimization/performance-optimizer.js.map +0 -1
  186. package/dist/utils/memory-pool.d.ts +0 -90
  187. package/dist/utils/memory-pool.d.ts.map +0 -1
  188. package/dist/utils/memory-pool.js +0 -245
  189. package/dist/utils/memory-pool.js.map +0 -1
@@ -0,0 +1,289 @@
1
+ /**
2
+ * Pattern Performance Tracker for P9 - ADAPTIVE_PATTERN_LEARNING
3
+ *
4
+ * Monitors pattern effectiveness over time, detects pattern drift,
5
+ * and provides metrics for adaptive kernel modifications.
6
+ *
7
+ * @version 1.0.0
8
+ * @since 2026-03-05
9
+ */
10
+ import { frameworkLogger } from "../core/framework-logger.js";
11
+ export class PatternPerformanceTracker {
12
+ patternMetrics = new Map();
13
+ maxTimeSeriesPoints = 1000;
14
+ driftThreshold = 0.15; // 15% change triggers drift detection
15
+ minSamplesForDrift = 10;
16
+ baselineWindowSize = 100;
17
+ /**
18
+ * Track performance metrics for a pattern
19
+ */
20
+ trackPatternPerformance(patternId, outcome) {
21
+ const existing = this.patternMetrics.get(patternId);
22
+ if (!existing) {
23
+ // Initialize new pattern metrics
24
+ this.patternMetrics.set(patternId, {
25
+ patternId,
26
+ totalUsages: 1,
27
+ successfulUsages: outcome.success ? 1 : 0,
28
+ failedUsages: outcome.success ? 0 : 1,
29
+ successRate: outcome.success ? 1 : 0,
30
+ avgConfidence: outcome.confidence,
31
+ avgResponseTime: outcome.responseTime || 0,
32
+ lastUpdated: new Date(),
33
+ timeSeries: [{
34
+ timestamp: new Date(),
35
+ successRate: outcome.success ? 1 : 0,
36
+ avgConfidence: outcome.confidence,
37
+ usageCount: 1
38
+ }]
39
+ });
40
+ }
41
+ else {
42
+ // Update existing metrics
43
+ existing.totalUsages++;
44
+ if (outcome.success) {
45
+ existing.successfulUsages++;
46
+ }
47
+ else {
48
+ existing.failedUsages++;
49
+ }
50
+ // Update success rate
51
+ existing.successRate = existing.successfulUsages / existing.totalUsages;
52
+ // Update average confidence (exponential moving average)
53
+ existing.avgConfidence = (existing.avgConfidence * 0.7) + (outcome.confidence * 0.3);
54
+ // Update average response time
55
+ if (outcome.responseTime !== undefined) {
56
+ existing.avgResponseTime = (existing.avgResponseTime * 0.8) + (outcome.responseTime * 0.2);
57
+ }
58
+ existing.lastUpdated = new Date();
59
+ // Add to time series
60
+ existing.timeSeries.push({
61
+ timestamp: new Date(),
62
+ successRate: existing.successRate,
63
+ avgConfidence: existing.avgConfidence,
64
+ usageCount: existing.totalUsages
65
+ });
66
+ // Trim time series if too large
67
+ if (existing.timeSeries.length > this.maxTimeSeriesPoints) {
68
+ existing.timeSeries = existing.timeSeries.slice(-this.maxTimeSeriesPoints);
69
+ }
70
+ }
71
+ frameworkLogger.log("pattern-performance-tracker", "metrics-updated", "debug", {
72
+ patternId,
73
+ successRate: this.patternMetrics.get(patternId)?.successRate,
74
+ avgConfidence: this.patternMetrics.get(patternId)?.avgConfidence
75
+ }, undefined);
76
+ }
77
+ /**
78
+ * Detect if a pattern has drifted from its historical baseline
79
+ */
80
+ detectPatternDrift(patternId) {
81
+ const metrics = this.patternMetrics.get(patternId);
82
+ if (!metrics || metrics.totalUsages < this.minSamplesForDrift) {
83
+ return null;
84
+ }
85
+ // Calculate historical baseline (first half of time series)
86
+ const timeSeries = metrics.timeSeries;
87
+ const midpoint = Math.floor(timeSeries.length / 2);
88
+ const historicalData = timeSeries.slice(0, midpoint);
89
+ const recentData = timeSeries.slice(midpoint);
90
+ if (historicalData.length < 5 || recentData.length < 5) {
91
+ return null;
92
+ }
93
+ // Calculate historical baseline
94
+ const historicalSuccessRate = historicalData.reduce((sum, d) => sum + d.successRate, 0) / historicalData.length;
95
+ const historicalAvgConfidence = historicalData.reduce((sum, d) => sum + d.avgConfidence, 0) / historicalData.length;
96
+ // Calculate recent performance
97
+ const recentSuccessRate = recentData.reduce((sum, d) => sum + d.successRate, 0) / recentData.length;
98
+ const recentAvgConfidence = recentData.reduce((sum, d) => sum + d.avgConfidence, 0) / recentData.length;
99
+ // Calculate drift magnitude
100
+ const successRateDrift = Math.abs(recentSuccessRate - historicalSuccessRate);
101
+ const confidenceDrift = Math.abs(recentAvgConfidence - historicalAvgConfidence);
102
+ const driftMagnitude = Math.max(successRateDrift, confidenceDrift);
103
+ // Determine drift direction
104
+ let driftDirection;
105
+ if (recentSuccessRate > historicalSuccessRate + 0.05) {
106
+ driftDirection = 'increasing';
107
+ }
108
+ else if (recentSuccessRate < historicalSuccessRate - 0.05) {
109
+ driftDirection = 'decreasing';
110
+ }
111
+ else {
112
+ driftDirection = 'unstable';
113
+ }
114
+ const drifted = driftMagnitude > this.driftThreshold;
115
+ // Determine recommended action
116
+ let recommendedAction = 'continue';
117
+ if (drifted && driftDirection === 'decreasing') {
118
+ recommendedAction = 'recalibrate';
119
+ }
120
+ else if (drifted && driftMagnitude > 0.25) {
121
+ recommendedAction = 'investigate';
122
+ }
123
+ else if (driftDirection === 'unstable' && driftMagnitude > 0.1) {
124
+ recommendedAction = 'monitor';
125
+ }
126
+ return {
127
+ drifted,
128
+ patternId,
129
+ currentMetrics: metrics,
130
+ historicalBaseline: {
131
+ patternId,
132
+ totalUsages: historicalData.length,
133
+ successfulUsages: Math.round(historicalData.length * historicalSuccessRate),
134
+ failedUsages: Math.round(historicalData.length * (1 - historicalSuccessRate)),
135
+ successRate: historicalSuccessRate,
136
+ avgConfidence: historicalAvgConfidence,
137
+ avgResponseTime: 0,
138
+ lastUpdated: historicalData[0]?.timestamp || new Date(),
139
+ timeSeries: historicalData
140
+ },
141
+ driftMagnitude,
142
+ driftDirection,
143
+ confidence: Math.min(1, driftMagnitude * 2),
144
+ recommendedAction
145
+ };
146
+ }
147
+ /**
148
+ * Get all pattern drift analyses
149
+ */
150
+ getAllDriftAnalyses() {
151
+ const analyses = [];
152
+ for (const patternId of this.patternMetrics.keys()) {
153
+ const analysis = this.detectPatternDrift(patternId);
154
+ if (analysis) {
155
+ analyses.push(analysis);
156
+ }
157
+ }
158
+ return analyses;
159
+ }
160
+ /**
161
+ * Calculate adaptive confidence thresholds based on performance
162
+ */
163
+ calculateAdaptiveThresholds() {
164
+ const perAgent = new Map();
165
+ const perSkill = new Map();
166
+ // Group metrics by agent/skill and calculate thresholds
167
+ const agentMetrics = new Map();
168
+ const skillMetrics = new Map();
169
+ for (const [patternId, metrics] of this.patternMetrics.entries()) {
170
+ // Extract agent/skill from patternId (format: "agent:skill")
171
+ const parts = patternId.includes(':') ? patternId.split(':') : [patternId, 'default'];
172
+ const agent = parts[0] || patternId;
173
+ const skill = parts[1] || 'default';
174
+ if (!agentMetrics.has(agent)) {
175
+ agentMetrics.set(agent, { successRates: [], confidences: [] });
176
+ }
177
+ agentMetrics.get(agent).successRates.push(metrics.successRate);
178
+ agentMetrics.get(agent).confidences.push(metrics.avgConfidence);
179
+ if (!skillMetrics.has(skill)) {
180
+ skillMetrics.set(skill, { successRates: [], confidences: [] });
181
+ }
182
+ skillMetrics.get(skill).successRates.push(metrics.successRate);
183
+ skillMetrics.get(skill).confidences.push(metrics.avgConfidence);
184
+ }
185
+ // Calculate thresholds for each agent
186
+ for (const [agent, data] of agentMetrics.entries()) {
187
+ if (data.successRates.length > 0) {
188
+ const avgSuccessRate = data.successRates.reduce((a, b) => a + b, 0) / data.successRates.length;
189
+ const avgConfidence = data.confidences.reduce((a, b) => a + b, 0) / data.confidences.length;
190
+ // Threshold is based on performance: higher performance = lower threshold needed
191
+ const threshold = Math.max(0.5, Math.min(0.9, avgSuccessRate * 0.8 + avgConfidence * 0.2));
192
+ perAgent.set(agent, threshold);
193
+ }
194
+ }
195
+ // Calculate thresholds for each skill
196
+ for (const [skill, data] of skillMetrics.entries()) {
197
+ if (data.successRates.length > 0) {
198
+ const avgSuccessRate = data.successRates.reduce((a, b) => a + b, 0) / data.successRates.length;
199
+ const avgConfidence = data.confidences.reduce((a, b) => a + b, 0) / data.confidences.length;
200
+ const threshold = Math.max(0.5, Math.min(0.9, avgSuccessRate * 0.8 + avgConfidence * 0.2));
201
+ perSkill.set(skill, threshold);
202
+ }
203
+ }
204
+ // Calculate overall threshold
205
+ const allSuccessRates = Array.from(this.patternMetrics.values()).map(m => m.successRate);
206
+ const overallSuccessRate = allSuccessRates.length > 0
207
+ ? allSuccessRates.reduce((a, b) => a + b, 0) / allSuccessRates.length
208
+ : 0.75;
209
+ const overall = Math.max(0.5, Math.min(0.9, overallSuccessRate));
210
+ return {
211
+ perAgent,
212
+ perSkill,
213
+ overall,
214
+ calibrationDate: new Date()
215
+ };
216
+ }
217
+ /**
218
+ * Get system performance summary
219
+ */
220
+ getSystemPerformanceSummary() {
221
+ const allMetrics = Array.from(this.patternMetrics.values());
222
+ if (allMetrics.length === 0) {
223
+ return {
224
+ overallSuccessRate: 0,
225
+ overallAvgConfidence: 0,
226
+ totalPatternsTracked: 0,
227
+ patternsWithDrift: [],
228
+ patternsNeedingAttention: [],
229
+ recommendations: ['No patterns tracked yet']
230
+ };
231
+ }
232
+ // Calculate overall metrics
233
+ const overallSuccessRate = allMetrics.reduce((sum, m) => sum + m.successRate, 0) / allMetrics.length;
234
+ const overallAvgConfidence = allMetrics.reduce((sum, m) => sum + m.avgConfidence, 0) / allMetrics.length;
235
+ // Get patterns with drift
236
+ const driftAnalyses = this.getAllDriftAnalyses();
237
+ const patternsWithDrift = driftAnalyses
238
+ .filter(a => a.drifted)
239
+ .map(a => a.patternId);
240
+ // Get patterns needing attention (low success rate or high drift)
241
+ const patternsNeedingAttention = allMetrics
242
+ .filter(m => m.successRate < 0.6 || m.totalUsages < 5)
243
+ .map(m => m.patternId);
244
+ // Generate recommendations
245
+ const recommendations = [];
246
+ if (patternsWithDrift.length > 0) {
247
+ recommendations.push(`${patternsWithDrift.length} patterns showing drift - consider recalibration`);
248
+ }
249
+ if (patternsNeedingAttention.length > 0) {
250
+ recommendations.push(`${patternsNeedingAttention.length} patterns need attention due to low performance`);
251
+ }
252
+ if (overallSuccessRate < 0.7) {
253
+ recommendations.push('Overall system performance below target - review routing logic');
254
+ }
255
+ if (recommendations.length === 0) {
256
+ recommendations.push('All patterns performing within normal parameters');
257
+ }
258
+ return {
259
+ overallSuccessRate,
260
+ overallAvgConfidence,
261
+ totalPatternsTracked: allMetrics.length,
262
+ patternsWithDrift,
263
+ patternsNeedingAttention,
264
+ recommendations
265
+ };
266
+ }
267
+ /**
268
+ * Get metrics for a specific pattern
269
+ */
270
+ getPatternMetrics(patternId) {
271
+ return this.patternMetrics.get(patternId) || null;
272
+ }
273
+ /**
274
+ * Get all tracked patterns
275
+ */
276
+ getAllPatternMetrics() {
277
+ return Array.from(this.patternMetrics.values());
278
+ }
279
+ /**
280
+ * Clear all metrics (for testing or reset)
281
+ */
282
+ clear() {
283
+ this.patternMetrics.clear();
284
+ frameworkLogger.log("pattern-performance-tracker", "cleared", "info", {}, undefined);
285
+ }
286
+ }
287
+ // Singleton instance
288
+ export const patternPerformanceTracker = new PatternPerformanceTracker();
289
+ //# sourceMappingURL=pattern-performance-tracker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pattern-performance-tracker.js","sourceRoot":"","sources":["../../src/analytics/pattern-performance-tracker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,100 @@
1
+ /**
2
+ * Prompt Pattern Analyzer for StringRay
3
+ *
4
+ * Analyzes actual vs. template prompts to detect gaps and emerging patterns.
5
+ * Integrates with RoutingOutcomeTracker to provide insights for template optimization.
6
+ *
7
+ * @version 1.0.0
8
+ * @since 2026-03-05
9
+ */
10
+ export interface TemplateGap {
11
+ gapType: "missing_template" | "pattern_mismatch" | "emerging_pattern";
12
+ userRequest: string;
13
+ generatedPrompt: string;
14
+ suggestedAgent: string;
15
+ suggestedSkill: string;
16
+ frequency: number;
17
+ lastSeen: Date;
18
+ confidence: number;
19
+ }
20
+ export interface EmergingPattern {
21
+ patternId: string;
22
+ keywords: string[];
23
+ sampleRequests: string[];
24
+ suggestedAgent: string;
25
+ suggestedSkill: string;
26
+ confidence: number;
27
+ frequency: number;
28
+ avgConfidence: number;
29
+ successRate: number;
30
+ }
31
+ export interface PromptComparisonResult {
32
+ totalPrompts: number;
33
+ templateMatches: number;
34
+ nonTemplatePrompts: number;
35
+ templateMatchRate: number;
36
+ gaps: TemplateGap[];
37
+ emergingPatterns: EmergingPattern[];
38
+ topMissedKeywords: Array<{
39
+ keyword: string;
40
+ count: number;
41
+ suggestedMappings: string[];
42
+ }>;
43
+ agentCoverage: Map<string, {
44
+ total: number;
45
+ withTemplate: number;
46
+ withoutTemplate: number;
47
+ }>;
48
+ }
49
+ export interface TemplateOptimizationSuggestion {
50
+ suggestionType: "add_template" | "update_keywords" | "merge_patterns" | "remove_template";
51
+ templateName?: string;
52
+ keywords: string[];
53
+ targetAgent: string;
54
+ targetSkill: string;
55
+ confidence: number;
56
+ expectedImpact: string;
57
+ reasoning: string;
58
+ }
59
+ declare class PromptPatternAnalyzer {
60
+ private readonly minFrequencyThreshold;
61
+ private readonly confidenceThreshold;
62
+ private readonly emergingPatternMinSamples;
63
+ /**
64
+ * Analyze prompt patterns and compare against templates
65
+ */
66
+ analyzePromptPatterns(): PromptComparisonResult;
67
+ /**
68
+ * Detect gaps where templates don't match user requests
69
+ */
70
+ private detectTemplateGaps;
71
+ /**
72
+ * Identify emerging patterns from real usage
73
+ */
74
+ private identifyEmergingPatterns;
75
+ /**
76
+ * Analyze frequently missed keywords
77
+ */
78
+ private analyzeMissedKeywords;
79
+ /**
80
+ * Calculate agent coverage metrics
81
+ */
82
+ private calculateAgentCoverage;
83
+ /**
84
+ * Generate template optimization suggestions
85
+ */
86
+ generateOptimizationSuggestions(comparisonResult: PromptComparisonResult): TemplateOptimizationSuggestion[];
87
+ /**
88
+ * Get analytics summary as formatted report
89
+ */
90
+ generateReport(comparisonResult: PromptComparisonResult): string;
91
+ private classifyGapType;
92
+ private normalizeRequest;
93
+ private extractKeywords;
94
+ private generatePatternId;
95
+ private selectBestAgent;
96
+ private emptyComparisonResult;
97
+ }
98
+ export declare const promptPatternAnalyzer: PromptPatternAnalyzer;
99
+ export {};
100
+ //# sourceMappingURL=prompt-pattern-analyzer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt-pattern-analyzer.d.ts","sourceRoot":"","sources":["../../src/analytics/prompt-pattern-analyzer.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AASH,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,kBAAkB,GAAG,kBAAkB,GAAG,kBAAkB,CAAC;IACtE,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,IAAI,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,sBAAsB;IACrC,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,IAAI,EAAE,WAAW,EAAE,CAAC;IACpB,gBAAgB,EAAE,eAAe,EAAE,CAAC;IACpC,iBAAiB,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,iBAAiB,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAC;IAC1F,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,eAAe,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC9F;AAED,MAAM,WAAW,8BAA8B;IAC7C,cAAc,EAAE,cAAc,GAAG,iBAAiB,GAAG,gBAAgB,GAAG,iBAAiB,CAAC;IAC1F,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,cAAM,qBAAqB;IACzB,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAK;IAC3C,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAO;IAC3C,OAAO,CAAC,QAAQ,CAAC,yBAAyB,CAAK;IAE/C;;OAEG;IACH,qBAAqB,IAAI,sBAAsB;IAiC/C;;OAEG;IACH,OAAO,CAAC,kBAAkB;IA0C1B;;OAEG;IACH,OAAO,CAAC,wBAAwB;IA2EhC;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAkC7B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IA4B9B;;OAEG;IACH,+BAA+B,CAC7B,gBAAgB,EAAE,sBAAsB,GACvC,8BAA8B,EAAE;IAsDnC;;OAEG;IACH,cAAc,CAAC,gBAAgB,EAAE,sBAAsB,GAAG,MAAM;IAgEhE,OAAO,CAAC,eAAe;IAoBvB,OAAO,CAAC,gBAAgB;IAQxB,OAAO,CAAC,eAAe;IA8BvB,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,eAAe;IAqBvB,OAAO,CAAC,qBAAqB;CAY9B;AAED,eAAO,MAAM,qBAAqB,uBAA8B,CAAC"}