dino-spec 17.4.3 → 17.6.0

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 (277) hide show
  1. package/README.md +16 -1
  2. package/dist/commands/init.d.ts.map +1 -1
  3. package/dist/commands/init.js +10 -0
  4. package/dist/commands/init.js.map +1 -1
  5. package/dist/core/agents/__tests__/confidence-gate.test.d.ts +5 -0
  6. package/dist/core/agents/__tests__/confidence-gate.test.d.ts.map +1 -0
  7. package/dist/core/agents/__tests__/confidence-gate.test.js +329 -0
  8. package/dist/core/agents/__tests__/confidence-gate.test.js.map +1 -0
  9. package/dist/core/agents/__tests__/gap-detector.test.d.ts +5 -0
  10. package/dist/core/agents/__tests__/gap-detector.test.d.ts.map +1 -0
  11. package/dist/core/agents/__tests__/gap-detector.test.js +609 -0
  12. package/dist/core/agents/__tests__/gap-detector.test.js.map +1 -0
  13. package/dist/core/agents/__tests__/learning-loop.test.d.ts +5 -0
  14. package/dist/core/agents/__tests__/learning-loop.test.d.ts.map +1 -0
  15. package/dist/core/agents/__tests__/learning-loop.test.js +663 -0
  16. package/dist/core/agents/__tests__/learning-loop.test.js.map +1 -0
  17. package/dist/core/agents/__tests__/parallel-executor.test.d.ts +5 -0
  18. package/dist/core/agents/__tests__/parallel-executor.test.d.ts.map +1 -0
  19. package/dist/core/agents/__tests__/parallel-executor.test.js +610 -0
  20. package/dist/core/agents/__tests__/parallel-executor.test.js.map +1 -0
  21. package/dist/core/agents/__tests__/research-validator.test.js +5 -5
  22. package/dist/core/agents/__tests__/research-validator.test.js.map +1 -1
  23. package/dist/core/agents/__tests__/skill-creator.test.d.ts +5 -0
  24. package/dist/core/agents/__tests__/skill-creator.test.d.ts.map +1 -0
  25. package/dist/core/agents/__tests__/skill-creator.test.js +443 -0
  26. package/dist/core/agents/__tests__/skill-creator.test.js.map +1 -0
  27. package/dist/core/agents/__tests__/state-persistence.test.d.ts +2 -0
  28. package/dist/core/agents/__tests__/state-persistence.test.d.ts.map +1 -0
  29. package/dist/core/agents/__tests__/state-persistence.test.js +270 -0
  30. package/dist/core/agents/__tests__/state-persistence.test.js.map +1 -0
  31. package/dist/core/agents/__tests__/validation-cache.test.d.ts +2 -0
  32. package/dist/core/agents/__tests__/validation-cache.test.d.ts.map +1 -0
  33. package/dist/core/agents/__tests__/validation-cache.test.js +181 -0
  34. package/dist/core/agents/__tests__/validation-cache.test.js.map +1 -0
  35. package/dist/core/agents/ambiguity-resolver.d.ts +14 -1
  36. package/dist/core/agents/ambiguity-resolver.d.ts.map +1 -1
  37. package/dist/core/agents/ambiguity-resolver.js +24 -2
  38. package/dist/core/agents/ambiguity-resolver.js.map +1 -1
  39. package/dist/core/agents/blackboard.d.ts +22 -3
  40. package/dist/core/agents/blackboard.d.ts.map +1 -1
  41. package/dist/core/agents/blackboard.js +52 -2
  42. package/dist/core/agents/blackboard.js.map +1 -1
  43. package/dist/core/agents/circuit-breaker.d.ts +79 -1
  44. package/dist/core/agents/circuit-breaker.d.ts.map +1 -1
  45. package/dist/core/agents/circuit-breaker.js +175 -1
  46. package/dist/core/agents/circuit-breaker.js.map +1 -1
  47. package/dist/core/agents/clarification-phase.d.ts +128 -0
  48. package/dist/core/agents/clarification-phase.d.ts.map +1 -0
  49. package/dist/core/agents/clarification-phase.js +375 -0
  50. package/dist/core/agents/clarification-phase.js.map +1 -0
  51. package/dist/core/agents/confidence-gate.d.ts +133 -4
  52. package/dist/core/agents/confidence-gate.d.ts.map +1 -1
  53. package/dist/core/agents/confidence-gate.js +376 -9
  54. package/dist/core/agents/confidence-gate.js.map +1 -1
  55. package/dist/core/agents/correction-tracker.d.ts +197 -0
  56. package/dist/core/agents/correction-tracker.d.ts.map +1 -0
  57. package/dist/core/agents/correction-tracker.js +366 -0
  58. package/dist/core/agents/correction-tracker.js.map +1 -0
  59. package/dist/core/agents/dependency-graph.d.ts +193 -0
  60. package/dist/core/agents/dependency-graph.d.ts.map +1 -0
  61. package/dist/core/agents/dependency-graph.js +462 -0
  62. package/dist/core/agents/dependency-graph.js.map +1 -0
  63. package/dist/core/agents/gap-detector.d.ts +277 -0
  64. package/dist/core/agents/gap-detector.d.ts.map +1 -0
  65. package/dist/core/agents/gap-detector.js +540 -0
  66. package/dist/core/agents/gap-detector.js.map +1 -0
  67. package/dist/core/agents/index.d.ts +14 -1
  68. package/dist/core/agents/index.d.ts.map +1 -1
  69. package/dist/core/agents/index.js +26 -1
  70. package/dist/core/agents/index.js.map +1 -1
  71. package/dist/core/agents/message-protocol.d.ts +13 -2
  72. package/dist/core/agents/message-protocol.d.ts.map +1 -1
  73. package/dist/core/agents/message-protocol.js +20 -1
  74. package/dist/core/agents/message-protocol.js.map +1 -1
  75. package/dist/core/agents/parallel-executor.d.ts +182 -0
  76. package/dist/core/agents/parallel-executor.d.ts.map +1 -0
  77. package/dist/core/agents/parallel-executor.js +474 -0
  78. package/dist/core/agents/parallel-executor.js.map +1 -0
  79. package/dist/core/agents/pattern-detector.d.ts +157 -0
  80. package/dist/core/agents/pattern-detector.d.ts.map +1 -0
  81. package/dist/core/agents/pattern-detector.js +370 -0
  82. package/dist/core/agents/pattern-detector.js.map +1 -0
  83. package/dist/core/agents/registry-client.d.ts +6 -0
  84. package/dist/core/agents/registry-client.d.ts.map +1 -1
  85. package/dist/core/agents/registry-client.js +3 -0
  86. package/dist/core/agents/registry-client.js.map +1 -1
  87. package/dist/core/agents/research-phase.d.ts +114 -0
  88. package/dist/core/agents/research-phase.d.ts.map +1 -0
  89. package/dist/core/agents/research-phase.js +355 -0
  90. package/dist/core/agents/research-phase.js.map +1 -0
  91. package/dist/core/agents/research-validator.d.ts +13 -2
  92. package/dist/core/agents/research-validator.d.ts.map +1 -1
  93. package/dist/core/agents/research-validator.js +63 -31
  94. package/dist/core/agents/research-validator.js.map +1 -1
  95. package/dist/core/agents/skill-creator.d.ts +174 -0
  96. package/dist/core/agents/skill-creator.d.ts.map +1 -0
  97. package/dist/core/agents/skill-creator.js +570 -0
  98. package/dist/core/agents/skill-creator.js.map +1 -0
  99. package/dist/core/agents/state-persistence.d.ts +184 -0
  100. package/dist/core/agents/state-persistence.d.ts.map +1 -0
  101. package/dist/core/agents/state-persistence.js +394 -0
  102. package/dist/core/agents/state-persistence.js.map +1 -0
  103. package/dist/core/agents/validation-cache.d.ts +122 -0
  104. package/dist/core/agents/validation-cache.d.ts.map +1 -0
  105. package/dist/core/agents/validation-cache.js +280 -0
  106. package/dist/core/agents/validation-cache.js.map +1 -0
  107. package/dist/core/agents/validators/__tests__/validators.test.d.ts +5 -0
  108. package/dist/core/agents/validators/__tests__/validators.test.d.ts.map +1 -0
  109. package/dist/core/agents/validators/__tests__/validators.test.js +321 -0
  110. package/dist/core/agents/validators/__tests__/validators.test.js.map +1 -0
  111. package/dist/core/agents/validators/base-validator.d.ts +191 -0
  112. package/dist/core/agents/validators/base-validator.d.ts.map +1 -0
  113. package/dist/core/agents/validators/base-validator.js +192 -0
  114. package/dist/core/agents/validators/base-validator.js.map +1 -0
  115. package/dist/core/agents/validators/index.d.ts +7 -0
  116. package/dist/core/agents/validators/index.d.ts.map +1 -0
  117. package/dist/core/agents/validators/index.js +7 -0
  118. package/dist/core/agents/validators/index.js.map +1 -0
  119. package/dist/core/agents/validators/npm-validator.d.ts +50 -0
  120. package/dist/core/agents/validators/npm-validator.d.ts.map +1 -0
  121. package/dist/core/agents/validators/npm-validator.js +211 -0
  122. package/dist/core/agents/validators/npm-validator.js.map +1 -0
  123. package/dist/core/agents/validators/pip-validator.d.ts +49 -0
  124. package/dist/core/agents/validators/pip-validator.d.ts.map +1 -0
  125. package/dist/core/agents/validators/pip-validator.js +191 -0
  126. package/dist/core/agents/validators/pip-validator.js.map +1 -0
  127. package/dist/core/agents/validators/validator-registry.d.ts +122 -0
  128. package/dist/core/agents/validators/validator-registry.d.ts.map +1 -0
  129. package/dist/core/agents/validators/validator-registry.js +321 -0
  130. package/dist/core/agents/validators/validator-registry.js.map +1 -0
  131. package/dist/core/context/auto-injection-engine.d.ts +7 -1
  132. package/dist/core/context/auto-injection-engine.d.ts.map +1 -1
  133. package/dist/core/context/auto-injection-engine.js +46 -1
  134. package/dist/core/context/auto-injection-engine.js.map +1 -1
  135. package/dist/core/context-repl/types.d.ts +4 -4
  136. package/dist/core/memory/index.d.ts +1 -0
  137. package/dist/core/memory/index.d.ts.map +1 -1
  138. package/dist/core/memory/index.js +2 -0
  139. package/dist/core/memory/index.js.map +1 -1
  140. package/dist/core/memory/learning-store.d.ts +222 -0
  141. package/dist/core/memory/learning-store.d.ts.map +1 -0
  142. package/dist/core/memory/learning-store.js +477 -0
  143. package/dist/core/memory/learning-store.js.map +1 -0
  144. package/dist/core/ralph/__tests__/prd-generator-session-context.test.d.ts +7 -0
  145. package/dist/core/ralph/__tests__/prd-generator-session-context.test.d.ts.map +1 -0
  146. package/dist/core/ralph/__tests__/prd-generator-session-context.test.js +143 -0
  147. package/dist/core/ralph/__tests__/prd-generator-session-context.test.js.map +1 -0
  148. package/dist/core/ralph/index.d.ts +3 -3
  149. package/dist/core/ralph/index.d.ts.map +1 -1
  150. package/dist/core/ralph/index.js +2 -2
  151. package/dist/core/ralph/index.js.map +1 -1
  152. package/dist/core/ralph/prd-generator.d.ts +18 -3
  153. package/dist/core/ralph/prd-generator.d.ts.map +1 -1
  154. package/dist/core/ralph/prd-generator.js +33 -11
  155. package/dist/core/ralph/prd-generator.js.map +1 -1
  156. package/dist/core/ralph/progress-tracker.d.ts.map +1 -1
  157. package/dist/core/ralph/progress-tracker.js +2 -1
  158. package/dist/core/ralph/progress-tracker.js.map +1 -1
  159. package/dist/core/ralph/sub-agent-spawner.d.ts +4 -2
  160. package/dist/core/ralph/sub-agent-spawner.d.ts.map +1 -1
  161. package/dist/core/ralph/sub-agent-spawner.js +48 -3
  162. package/dist/core/ralph/sub-agent-spawner.js.map +1 -1
  163. package/dist/core/ralph/task-integration.d.ts.map +1 -1
  164. package/dist/core/ralph/task-integration.js +6 -3
  165. package/dist/core/ralph/task-integration.js.map +1 -1
  166. package/dist/core/ralph/types.d.ts +62 -3
  167. package/dist/core/ralph/types.d.ts.map +1 -1
  168. package/dist/core/ralph/types.js.map +1 -1
  169. package/dist/core/recommendations/recommendation-engine.d.ts +6 -0
  170. package/dist/core/recommendations/recommendation-engine.d.ts.map +1 -1
  171. package/dist/core/recommendations/recommendation-engine.js.map +1 -1
  172. package/dist/core/spec-analyzer/__tests__/ambiguity-detector.test.d.ts +5 -0
  173. package/dist/core/spec-analyzer/__tests__/ambiguity-detector.test.d.ts.map +1 -0
  174. package/dist/core/spec-analyzer/__tests__/ambiguity-detector.test.js +401 -0
  175. package/dist/core/spec-analyzer/__tests__/ambiguity-detector.test.js.map +1 -0
  176. package/dist/core/spec-analyzer/ambiguity-detector.d.ts +99 -0
  177. package/dist/core/spec-analyzer/ambiguity-detector.d.ts.map +1 -0
  178. package/dist/core/spec-analyzer/ambiguity-detector.js +250 -0
  179. package/dist/core/spec-analyzer/ambiguity-detector.js.map +1 -0
  180. package/dist/core/spec-analyzer/clarification-generator.d.ts +76 -0
  181. package/dist/core/spec-analyzer/clarification-generator.d.ts.map +1 -0
  182. package/dist/core/spec-analyzer/clarification-generator.js +257 -0
  183. package/dist/core/spec-analyzer/clarification-generator.js.map +1 -0
  184. package/dist/core/spec-analyzer/index.d.ts +22 -2
  185. package/dist/core/spec-analyzer/index.d.ts.map +1 -1
  186. package/dist/core/spec-analyzer/index.js +21 -3
  187. package/dist/core/spec-analyzer/index.js.map +1 -1
  188. package/dist/core/spec-analyzer/patterns.d.ts +73 -0
  189. package/dist/core/spec-analyzer/patterns.d.ts.map +1 -0
  190. package/dist/core/spec-analyzer/patterns.js +412 -0
  191. package/dist/core/spec-analyzer/patterns.js.map +1 -0
  192. package/dist/hooks/__tests__/dynamic-generator.test.d.ts +5 -0
  193. package/dist/hooks/__tests__/dynamic-generator.test.d.ts.map +1 -0
  194. package/dist/hooks/__tests__/dynamic-generator.test.js +425 -0
  195. package/dist/hooks/__tests__/dynamic-generator.test.js.map +1 -0
  196. package/dist/hooks/__tests__/hook-agent-bridge.test.d.ts +5 -0
  197. package/dist/hooks/__tests__/hook-agent-bridge.test.d.ts.map +1 -0
  198. package/dist/hooks/__tests__/hook-agent-bridge.test.js +315 -0
  199. package/dist/hooks/__tests__/hook-agent-bridge.test.js.map +1 -0
  200. package/dist/hooks/dynamic-generator.d.ts +158 -0
  201. package/dist/hooks/dynamic-generator.d.ts.map +1 -0
  202. package/dist/hooks/dynamic-generator.js +448 -0
  203. package/dist/hooks/dynamic-generator.js.map +1 -0
  204. package/dist/hooks/hook-agent-bridge.d.ts +252 -0
  205. package/dist/hooks/hook-agent-bridge.d.ts.map +1 -0
  206. package/dist/hooks/hook-agent-bridge.js +489 -0
  207. package/dist/hooks/hook-agent-bridge.js.map +1 -0
  208. package/dist/hooks/index.d.ts +3 -1
  209. package/dist/hooks/index.d.ts.map +1 -1
  210. package/dist/hooks/index.js +5 -1
  211. package/dist/hooks/index.js.map +1 -1
  212. package/dist/mcp/tool-catalog.d.ts.map +1 -1
  213. package/dist/mcp/tool-catalog.js +47 -0
  214. package/dist/mcp/tool-catalog.js.map +1 -1
  215. package/dist/mcp/tool-tiers.d.ts.map +1 -1
  216. package/dist/mcp/tool-tiers.js +4 -0
  217. package/dist/mcp/tool-tiers.js.map +1 -1
  218. package/dist/mcp/tools/auto-inject.d.ts +4 -0
  219. package/dist/mcp/tools/auto-inject.d.ts.map +1 -1
  220. package/dist/mcp/tools/auto-inject.js +13 -4
  221. package/dist/mcp/tools/auto-inject.js.map +1 -1
  222. package/dist/mcp/tools/chunking.d.ts +3 -0
  223. package/dist/mcp/tools/chunking.d.ts.map +1 -1
  224. package/dist/mcp/tools/chunking.js +10 -4
  225. package/dist/mcp/tools/chunking.js.map +1 -1
  226. package/dist/mcp/tools/embeddings.d.ts +4 -0
  227. package/dist/mcp/tools/embeddings.d.ts.map +1 -1
  228. package/dist/mcp/tools/embeddings.js +16 -6
  229. package/dist/mcp/tools/embeddings.js.map +1 -1
  230. package/dist/mcp/tools/index.d.ts +2 -1
  231. package/dist/mcp/tools/index.d.ts.map +1 -1
  232. package/dist/mcp/tools/index.js +15 -1
  233. package/dist/mcp/tools/index.js.map +1 -1
  234. package/dist/mcp/tools/knowledge-graph.d.ts +3 -0
  235. package/dist/mcp/tools/knowledge-graph.d.ts.map +1 -1
  236. package/dist/mcp/tools/knowledge-graph.js +19 -8
  237. package/dist/mcp/tools/knowledge-graph.js.map +1 -1
  238. package/dist/mcp/tools/lazy-context.d.ts +2 -0
  239. package/dist/mcp/tools/lazy-context.d.ts.map +1 -1
  240. package/dist/mcp/tools/lazy-context.js +10 -4
  241. package/dist/mcp/tools/lazy-context.js.map +1 -1
  242. package/dist/mcp/tools/learning-store.d.ts +30 -0
  243. package/dist/mcp/tools/learning-store.d.ts.map +1 -0
  244. package/dist/mcp/tools/learning-store.js +286 -0
  245. package/dist/mcp/tools/learning-store.js.map +1 -0
  246. package/dist/mcp/tools/memory-decay.d.ts.map +1 -1
  247. package/dist/mcp/tools/memory-decay.js +4 -2
  248. package/dist/mcp/tools/memory-decay.js.map +1 -1
  249. package/dist/mcp/tools/prefetch.d.ts +4 -1
  250. package/dist/mcp/tools/prefetch.d.ts.map +1 -1
  251. package/dist/mcp/tools/prefetch.js +18 -7
  252. package/dist/mcp/tools/prefetch.js.map +1 -1
  253. package/dist/mcp/tools/ralph.d.ts +2 -0
  254. package/dist/mcp/tools/ralph.d.ts.map +1 -1
  255. package/dist/mcp/tools/ralph.js +96 -6
  256. package/dist/mcp/tools/ralph.js.map +1 -1
  257. package/dist/mcp/tools/recommendations.d.ts +2 -0
  258. package/dist/mcp/tools/recommendations.d.ts.map +1 -1
  259. package/dist/mcp/tools/recommendations.js +13 -4
  260. package/dist/mcp/tools/recommendations.js.map +1 -1
  261. package/dist/mcp/tools/retrieval.d.ts +4 -0
  262. package/dist/mcp/tools/retrieval.d.ts.map +1 -1
  263. package/dist/mcp/tools/retrieval.js +25 -10
  264. package/dist/mcp/tools/retrieval.js.map +1 -1
  265. package/dist/mcp/tools/spec-feedback.d.ts +2 -0
  266. package/dist/mcp/tools/spec-feedback.d.ts.map +1 -1
  267. package/dist/mcp/tools/spec-feedback.js +33 -16
  268. package/dist/mcp/tools/spec-feedback.js.map +1 -1
  269. package/dist/mcp/utils/index.d.ts +1 -0
  270. package/dist/mcp/utils/index.d.ts.map +1 -1
  271. package/dist/mcp/utils/index.js +2 -0
  272. package/dist/mcp/utils/index.js.map +1 -1
  273. package/dist/mcp/utils/session-context.d.ts +108 -0
  274. package/dist/mcp/utils/session-context.d.ts.map +1 -0
  275. package/dist/mcp/utils/session-context.js +157 -0
  276. package/dist/mcp/utils/session-context.js.map +1 -0
  277. package/package.json +1 -1
@@ -0,0 +1,197 @@
1
+ /**
2
+ * Correction Tracker - v17.5.0
3
+ *
4
+ * Tracks user corrections to Claude's outputs with full context.
5
+ * Used to learn patterns for future automation.
6
+ *
7
+ * Correction sources:
8
+ * - "no, use X instead" → explicit correction
9
+ * - "actually, it should be Y" → explicit correction
10
+ * - User edits Claude's output → implicit correction
11
+ * - Repeated similar requests → pattern emergence
12
+ *
13
+ * @module correction-tracker
14
+ */
15
+ /**
16
+ * Type of correction detected
17
+ */
18
+ export type CorrectionType = 'explicit' | 'implicit' | 'preference' | 'style';
19
+ /**
20
+ * Context when correction occurred
21
+ */
22
+ export interface CorrectionContext {
23
+ /** What Claude originally suggested/wrote */
24
+ original: string;
25
+ /** What the user corrected it to */
26
+ corrected: string;
27
+ /** File path if applicable */
28
+ filePath?: string;
29
+ /** Line number if applicable */
30
+ lineNumber?: number;
31
+ /** Focus area at time of correction */
32
+ focusArea?: string;
33
+ /** Phase when correction occurred */
34
+ phase?: string;
35
+ /** Relevant code/content surrounding the correction */
36
+ surroundingContext?: string;
37
+ }
38
+ /**
39
+ * A tracked correction entry
40
+ */
41
+ export interface Correction {
42
+ id: string;
43
+ type: CorrectionType;
44
+ context: CorrectionContext;
45
+ timestamp: Date;
46
+ /** Keywords extracted for pattern matching */
47
+ keywords: string[];
48
+ /** Normalized form for comparison */
49
+ normalizedPattern: string;
50
+ /** Whether this has been promoted to a learned pattern */
51
+ promoted: boolean;
52
+ }
53
+ /**
54
+ * Correction cluster (similar corrections grouped)
55
+ */
56
+ export interface CorrectionCluster {
57
+ id: string;
58
+ /** Representative correction from the cluster */
59
+ representative: Correction;
60
+ /** All corrections in this cluster */
61
+ corrections: Correction[];
62
+ /** Number of occurrences */
63
+ count: number;
64
+ /** Average similarity within cluster */
65
+ similarity: number;
66
+ /** When first correction occurred */
67
+ firstSeen: Date;
68
+ /** When last correction occurred */
69
+ lastSeen: Date;
70
+ /** Whether this cluster meets automation threshold */
71
+ meetsThreshold: boolean;
72
+ }
73
+ /**
74
+ * Configuration for correction tracking
75
+ */
76
+ export interface CorrectionTrackerConfig {
77
+ /** Minimum occurrences for automation (default: 3) */
78
+ automationThreshold: number;
79
+ /** Similarity threshold for clustering (default: 0.7) */
80
+ clusteringSimilarity: number;
81
+ /** Maximum corrections to keep (default: 500) */
82
+ maxCorrections: number;
83
+ /** Days to keep corrections (default: 90) */
84
+ retentionDays: number;
85
+ }
86
+ export declare const DEFAULT_TRACKER_CONFIG: CorrectionTrackerConfig;
87
+ /**
88
+ * Tracks and clusters user corrections for pattern learning
89
+ */
90
+ export declare class CorrectionTracker {
91
+ private corrections;
92
+ private clusters;
93
+ private config;
94
+ constructor(config?: Partial<CorrectionTrackerConfig>);
95
+ /**
96
+ * Track a new correction
97
+ */
98
+ track(context: CorrectionContext, type?: CorrectionType): Correction;
99
+ /**
100
+ * Parse user text for explicit corrections
101
+ */
102
+ parseCorrection(userText: string): {
103
+ detected: boolean;
104
+ pattern?: string;
105
+ replacement?: string;
106
+ };
107
+ /**
108
+ * Get all corrections
109
+ */
110
+ getCorrections(): Correction[];
111
+ /**
112
+ * Get correction by ID
113
+ */
114
+ getCorrection(id: string): Correction | undefined;
115
+ /**
116
+ * Get clusters that meet automation threshold
117
+ */
118
+ getPromotableClusters(): CorrectionCluster[];
119
+ /**
120
+ * Get all clusters
121
+ */
122
+ getClusters(): CorrectionCluster[];
123
+ /**
124
+ * Get cluster by ID
125
+ */
126
+ getCluster(id: string): CorrectionCluster | undefined;
127
+ /**
128
+ * Find similar corrections to a new one
129
+ */
130
+ findSimilar(context: CorrectionContext, minSimilarity?: number): Correction[];
131
+ /**
132
+ * Mark a cluster as promoted (pattern learned)
133
+ */
134
+ markPromoted(clusterId: string): boolean;
135
+ /**
136
+ * Get statistics
137
+ */
138
+ getStats(): {
139
+ totalCorrections: number;
140
+ totalClusters: number;
141
+ promotableClusters: number;
142
+ byType: Record<CorrectionType, number>;
143
+ oldestCorrection: Date | null;
144
+ newestCorrection: Date | null;
145
+ };
146
+ /**
147
+ * Clear all corrections
148
+ */
149
+ clear(): void;
150
+ /**
151
+ * Export state for persistence
152
+ */
153
+ export(): {
154
+ corrections: Correction[];
155
+ clusters: CorrectionCluster[];
156
+ };
157
+ /**
158
+ * Import state from persistence
159
+ */
160
+ import(state: {
161
+ corrections: Correction[];
162
+ clusters: CorrectionCluster[];
163
+ }): void;
164
+ private generateId;
165
+ private extractKeywords;
166
+ private normalizePattern;
167
+ private updateClusters;
168
+ private calculateClusterSimilarity;
169
+ private enforceRetention;
170
+ }
171
+ /** Global correction tracker */
172
+ export declare const correctionTracker: CorrectionTracker;
173
+ /**
174
+ * Track a correction using the global tracker
175
+ */
176
+ export declare function trackCorrection(context: CorrectionContext, type?: CorrectionType): Correction;
177
+ /**
178
+ * Get promotable clusters from global tracker
179
+ */
180
+ export declare function getPromotableClusters(): CorrectionCluster[];
181
+ /**
182
+ * Check if user text contains a correction
183
+ */
184
+ export declare function detectCorrection(userText: string): {
185
+ detected: boolean;
186
+ pattern?: string;
187
+ replacement?: string;
188
+ };
189
+ /**
190
+ * Format correction for display
191
+ */
192
+ export declare function formatCorrection(correction: Correction): string;
193
+ /**
194
+ * Format cluster for display
195
+ */
196
+ export declare function formatCluster(cluster: CorrectionCluster): string;
197
+ //# sourceMappingURL=correction-tracker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"correction-tracker.d.ts","sourceRoot":"","sources":["../../../src/core/agents/correction-tracker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,366 @@
1
+ /**
2
+ * Correction Tracker - v17.5.0
3
+ *
4
+ * Tracks user corrections to Claude's outputs with full context.
5
+ * Used to learn patterns for future automation.
6
+ *
7
+ * Correction sources:
8
+ * - "no, use X instead" → explicit correction
9
+ * - "actually, it should be Y" → explicit correction
10
+ * - User edits Claude's output → implicit correction
11
+ * - Repeated similar requests → pattern emergence
12
+ *
13
+ * @module correction-tracker
14
+ */
15
+ import { jaccardSimilarity } from '../memory/similarity-utils.js';
16
+ // =============================================================================
17
+ // Constants
18
+ // =============================================================================
19
+ export const DEFAULT_TRACKER_CONFIG = {
20
+ automationThreshold: 3,
21
+ clusteringSimilarity: 0.7,
22
+ maxCorrections: 500,
23
+ retentionDays: 90,
24
+ };
25
+ /**
26
+ * Patterns that indicate explicit corrections
27
+ */
28
+ const CORRECTION_PATTERNS = [
29
+ /^(?:no|nope|wrong)[,.]?\s*(.+)/i,
30
+ /^actually[,.]?\s*(.+)/i,
31
+ /^(?:use|prefer)\s+(.+?)\s+instead/i,
32
+ /^(?:change|replace)\s+(.+?)\s+(?:to|with)\s+(.+)/i,
33
+ /^(?:it should be|should be)\s+(.+)/i,
34
+ /^(?:not|don't)\s+(.+?)[,.]?\s*(?:use|prefer)\s+(.+)/i,
35
+ ];
36
+ // =============================================================================
37
+ // CorrectionTracker Class
38
+ // =============================================================================
39
+ /**
40
+ * Tracks and clusters user corrections for pattern learning
41
+ */
42
+ export class CorrectionTracker {
43
+ corrections = new Map();
44
+ clusters = new Map();
45
+ config;
46
+ constructor(config = {}) {
47
+ this.config = { ...DEFAULT_TRACKER_CONFIG, ...config };
48
+ }
49
+ /**
50
+ * Track a new correction
51
+ */
52
+ track(context, type = 'explicit') {
53
+ const id = this.generateId();
54
+ const correction = {
55
+ id,
56
+ type,
57
+ context,
58
+ timestamp: new Date(),
59
+ keywords: this.extractKeywords(context),
60
+ normalizedPattern: this.normalizePattern(context),
61
+ promoted: false,
62
+ };
63
+ this.corrections.set(id, correction);
64
+ this.updateClusters(correction);
65
+ this.enforceRetention();
66
+ return correction;
67
+ }
68
+ /**
69
+ * Parse user text for explicit corrections
70
+ */
71
+ parseCorrection(userText) {
72
+ for (const pattern of CORRECTION_PATTERNS) {
73
+ const match = userText.match(pattern);
74
+ if (match) {
75
+ return {
76
+ detected: true,
77
+ pattern: match[1]?.trim(),
78
+ replacement: match[2]?.trim(),
79
+ };
80
+ }
81
+ }
82
+ return { detected: false };
83
+ }
84
+ /**
85
+ * Get all corrections
86
+ */
87
+ getCorrections() {
88
+ return Array.from(this.corrections.values());
89
+ }
90
+ /**
91
+ * Get correction by ID
92
+ */
93
+ getCorrection(id) {
94
+ return this.corrections.get(id);
95
+ }
96
+ /**
97
+ * Get clusters that meet automation threshold
98
+ */
99
+ getPromotableClusters() {
100
+ return Array.from(this.clusters.values()).filter((c) => c.meetsThreshold && !c.representative.promoted);
101
+ }
102
+ /**
103
+ * Get all clusters
104
+ */
105
+ getClusters() {
106
+ return Array.from(this.clusters.values());
107
+ }
108
+ /**
109
+ * Get cluster by ID
110
+ */
111
+ getCluster(id) {
112
+ return this.clusters.get(id);
113
+ }
114
+ /**
115
+ * Find similar corrections to a new one
116
+ */
117
+ findSimilar(context, minSimilarity = 0.5) {
118
+ const normalized = this.normalizePattern(context);
119
+ const similar = [];
120
+ for (const correction of this.corrections.values()) {
121
+ const score = jaccardSimilarity(normalized, correction.normalizedPattern);
122
+ if (score >= minSimilarity) {
123
+ similar.push({ correction, score });
124
+ }
125
+ }
126
+ return similar.sort((a, b) => b.score - a.score).map((s) => s.correction);
127
+ }
128
+ /**
129
+ * Mark a cluster as promoted (pattern learned)
130
+ */
131
+ markPromoted(clusterId) {
132
+ const cluster = this.clusters.get(clusterId);
133
+ if (!cluster)
134
+ return false;
135
+ for (const correction of cluster.corrections) {
136
+ correction.promoted = true;
137
+ }
138
+ return true;
139
+ }
140
+ /**
141
+ * Get statistics
142
+ */
143
+ getStats() {
144
+ const corrections = Array.from(this.corrections.values());
145
+ const byType = {
146
+ explicit: 0,
147
+ implicit: 0,
148
+ preference: 0,
149
+ style: 0,
150
+ };
151
+ for (const c of corrections) {
152
+ byType[c.type]++;
153
+ }
154
+ const sorted = corrections.sort((a, b) => a.timestamp.getTime() - b.timestamp.getTime());
155
+ return {
156
+ totalCorrections: corrections.length,
157
+ totalClusters: this.clusters.size,
158
+ promotableClusters: this.getPromotableClusters().length,
159
+ byType,
160
+ oldestCorrection: sorted[0]?.timestamp ?? null,
161
+ newestCorrection: sorted[sorted.length - 1]?.timestamp ?? null,
162
+ };
163
+ }
164
+ /**
165
+ * Clear all corrections
166
+ */
167
+ clear() {
168
+ this.corrections.clear();
169
+ this.clusters.clear();
170
+ }
171
+ /**
172
+ * Export state for persistence
173
+ */
174
+ export() {
175
+ return {
176
+ corrections: Array.from(this.corrections.values()),
177
+ clusters: Array.from(this.clusters.values()),
178
+ };
179
+ }
180
+ /**
181
+ * Import state from persistence
182
+ */
183
+ import(state) {
184
+ this.corrections.clear();
185
+ this.clusters.clear();
186
+ for (const correction of state.corrections) {
187
+ // Restore Date objects
188
+ correction.timestamp = new Date(correction.timestamp);
189
+ this.corrections.set(correction.id, correction);
190
+ }
191
+ for (const cluster of state.clusters) {
192
+ cluster.firstSeen = new Date(cluster.firstSeen);
193
+ cluster.lastSeen = new Date(cluster.lastSeen);
194
+ this.clusters.set(cluster.id, cluster);
195
+ }
196
+ }
197
+ // ---------------------------------------------------------------------------
198
+ // Private Methods
199
+ // ---------------------------------------------------------------------------
200
+ generateId() {
201
+ return `corr-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;
202
+ }
203
+ extractKeywords(context) {
204
+ const text = `${context.original} ${context.corrected}`.toLowerCase();
205
+ const words = text.split(/\W+/).filter((w) => w.length > 2);
206
+ // Remove common words
207
+ const stopWords = new Set([
208
+ 'the',
209
+ 'and',
210
+ 'for',
211
+ 'are',
212
+ 'but',
213
+ 'not',
214
+ 'you',
215
+ 'all',
216
+ 'can',
217
+ 'had',
218
+ 'her',
219
+ 'was',
220
+ 'one',
221
+ 'our',
222
+ 'out',
223
+ 'use',
224
+ 'with',
225
+ 'this',
226
+ 'that',
227
+ 'from',
228
+ 'have',
229
+ 'been',
230
+ ]);
231
+ return [...new Set(words.filter((w) => !stopWords.has(w)))];
232
+ }
233
+ normalizePattern(context) {
234
+ // Create a normalized representation for comparison
235
+ return `${context.original}→${context.corrected}`.toLowerCase().replace(/\s+/g, ' ').trim();
236
+ }
237
+ updateClusters(correction) {
238
+ // Find the best matching cluster
239
+ let bestCluster = null;
240
+ let bestSimilarity = 0;
241
+ for (const cluster of this.clusters.values()) {
242
+ const sim = jaccardSimilarity(correction.normalizedPattern, cluster.representative.normalizedPattern);
243
+ if (sim >= this.config.clusteringSimilarity && sim > bestSimilarity) {
244
+ bestCluster = cluster;
245
+ bestSimilarity = sim;
246
+ }
247
+ }
248
+ if (bestCluster) {
249
+ // Add to existing cluster
250
+ bestCluster.corrections.push(correction);
251
+ bestCluster.count = bestCluster.corrections.length;
252
+ bestCluster.lastSeen = correction.timestamp;
253
+ bestCluster.similarity = this.calculateClusterSimilarity(bestCluster);
254
+ bestCluster.meetsThreshold = bestCluster.count >= this.config.automationThreshold;
255
+ }
256
+ else {
257
+ // Create new cluster
258
+ const clusterId = `cluster-${Date.now()}-${Math.random().toString(36).slice(2, 6)}`;
259
+ this.clusters.set(clusterId, {
260
+ id: clusterId,
261
+ representative: correction,
262
+ corrections: [correction],
263
+ count: 1,
264
+ similarity: 1.0,
265
+ firstSeen: correction.timestamp,
266
+ lastSeen: correction.timestamp,
267
+ meetsThreshold: 1 >= this.config.automationThreshold,
268
+ });
269
+ }
270
+ }
271
+ calculateClusterSimilarity(cluster) {
272
+ if (cluster.corrections.length <= 1)
273
+ return 1.0;
274
+ const rep = cluster.representative.normalizedPattern;
275
+ let total = 0;
276
+ for (const c of cluster.corrections) {
277
+ if (c.id !== cluster.representative.id) {
278
+ total += jaccardSimilarity(rep, c.normalizedPattern);
279
+ }
280
+ }
281
+ return total / (cluster.corrections.length - 1);
282
+ }
283
+ enforceRetention() {
284
+ // Enforce max corrections limit
285
+ if (this.corrections.size > this.config.maxCorrections) {
286
+ const sorted = Array.from(this.corrections.entries()).sort((a, b) => a[1].timestamp.getTime() - b[1].timestamp.getTime());
287
+ const toRemove = sorted.slice(0, sorted.length - this.config.maxCorrections);
288
+ for (const [id] of toRemove) {
289
+ this.corrections.delete(id);
290
+ }
291
+ }
292
+ // Enforce retention days
293
+ const cutoff = new Date();
294
+ cutoff.setDate(cutoff.getDate() - this.config.retentionDays);
295
+ for (const [id, correction] of this.corrections) {
296
+ if (correction.timestamp < cutoff) {
297
+ this.corrections.delete(id);
298
+ }
299
+ }
300
+ // Clean up empty clusters
301
+ for (const [id, cluster] of this.clusters) {
302
+ cluster.corrections = cluster.corrections.filter((c) => this.corrections.has(c.id));
303
+ if (cluster.corrections.length === 0) {
304
+ this.clusters.delete(id);
305
+ }
306
+ else {
307
+ cluster.count = cluster.corrections.length;
308
+ cluster.meetsThreshold = cluster.count >= this.config.automationThreshold;
309
+ }
310
+ }
311
+ }
312
+ }
313
+ // =============================================================================
314
+ // Singleton Instance
315
+ // =============================================================================
316
+ /** Global correction tracker */
317
+ export const correctionTracker = new CorrectionTracker();
318
+ // =============================================================================
319
+ // Helper Functions
320
+ // =============================================================================
321
+ /**
322
+ * Track a correction using the global tracker
323
+ */
324
+ export function trackCorrection(context, type) {
325
+ return correctionTracker.track(context, type);
326
+ }
327
+ /**
328
+ * Get promotable clusters from global tracker
329
+ */
330
+ export function getPromotableClusters() {
331
+ return correctionTracker.getPromotableClusters();
332
+ }
333
+ /**
334
+ * Check if user text contains a correction
335
+ */
336
+ export function detectCorrection(userText) {
337
+ return correctionTracker.parseCorrection(userText);
338
+ }
339
+ /**
340
+ * Format correction for display
341
+ */
342
+ export function formatCorrection(correction) {
343
+ const lines = [];
344
+ lines.push(`**Correction** (${correction.type})`);
345
+ lines.push(`- Original: ${correction.context.original}`);
346
+ lines.push(`- Corrected: ${correction.context.corrected}`);
347
+ if (correction.context.filePath) {
348
+ lines.push(`- File: ${correction.context.filePath}`);
349
+ }
350
+ lines.push(`- Keywords: ${correction.keywords.join(', ')}`);
351
+ return lines.join('\n');
352
+ }
353
+ /**
354
+ * Format cluster for display
355
+ */
356
+ export function formatCluster(cluster) {
357
+ const lines = [];
358
+ const threshold = cluster.meetsThreshold ? '✅' : '⏳';
359
+ lines.push(`${threshold} **Cluster** (${cluster.count} occurrences)`);
360
+ lines.push(`- Pattern: "${cluster.representative.context.original}" → "${cluster.representative.context.corrected}"`);
361
+ lines.push(`- First seen: ${cluster.firstSeen.toISOString()}`);
362
+ lines.push(`- Last seen: ${cluster.lastSeen.toISOString()}`);
363
+ lines.push(`- Similarity: ${(cluster.similarity * 100).toFixed(1)}%`);
364
+ return lines.join('\n');
365
+ }
366
+ //# sourceMappingURL=correction-tracker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"correction-tracker.js","sourceRoot":"","sources":["../../../src/core/agents/correction-tracker.ts"],"names":[],"mappings":"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"}