driftdetect-core 0.1.2 → 0.3.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 (193) hide show
  1. package/dist/boundaries/boundary-store.d.ts +92 -0
  2. package/dist/boundaries/boundary-store.d.ts.map +1 -0
  3. package/dist/boundaries/boundary-store.js +458 -0
  4. package/dist/boundaries/boundary-store.js.map +1 -0
  5. package/dist/boundaries/index.d.ts +8 -0
  6. package/dist/boundaries/index.d.ts.map +1 -0
  7. package/dist/boundaries/index.js +8 -0
  8. package/dist/boundaries/index.js.map +1 -0
  9. package/dist/boundaries/types.d.ts +237 -0
  10. package/dist/boundaries/types.d.ts.map +1 -0
  11. package/dist/boundaries/types.js +8 -0
  12. package/dist/boundaries/types.js.map +1 -0
  13. package/dist/dna/ai-context.d.ts +10 -0
  14. package/dist/dna/ai-context.d.ts.map +1 -0
  15. package/dist/dna/ai-context.js +46 -0
  16. package/dist/dna/ai-context.js.map +1 -0
  17. package/dist/dna/dna-analyzer.d.ts +34 -0
  18. package/dist/dna/dna-analyzer.d.ts.map +1 -0
  19. package/dist/dna/dna-analyzer.js +110 -0
  20. package/dist/dna/dna-analyzer.js.map +1 -0
  21. package/dist/dna/dna-store.d.ts +13 -0
  22. package/dist/dna/dna-store.d.ts.map +1 -0
  23. package/dist/dna/dna-store.js +43 -0
  24. package/dist/dna/dna-store.js.map +1 -0
  25. package/dist/dna/gene-extractors/animation-approach.d.ts +15 -0
  26. package/dist/dna/gene-extractors/animation-approach.d.ts.map +1 -0
  27. package/dist/dna/gene-extractors/animation-approach.js +97 -0
  28. package/dist/dna/gene-extractors/animation-approach.js.map +1 -0
  29. package/dist/dna/gene-extractors/base-extractor.d.ts +53 -0
  30. package/dist/dna/gene-extractors/base-extractor.d.ts.map +1 -0
  31. package/dist/dna/gene-extractors/base-extractor.js +76 -0
  32. package/dist/dna/gene-extractors/base-extractor.js.map +1 -0
  33. package/dist/dna/gene-extractors/index.d.ts +16 -0
  34. package/dist/dna/gene-extractors/index.d.ts.map +1 -0
  35. package/dist/dna/gene-extractors/index.js +38 -0
  36. package/dist/dna/gene-extractors/index.js.map +1 -0
  37. package/dist/dna/gene-extractors/responsive-approach.d.ts +10 -0
  38. package/dist/dna/gene-extractors/responsive-approach.d.ts.map +1 -0
  39. package/dist/dna/gene-extractors/responsive-approach.js +30 -0
  40. package/dist/dna/gene-extractors/responsive-approach.js.map +1 -0
  41. package/dist/dna/gene-extractors/spacing-philosophy.d.ts +10 -0
  42. package/dist/dna/gene-extractors/spacing-philosophy.d.ts.map +1 -0
  43. package/dist/dna/gene-extractors/spacing-philosophy.js +30 -0
  44. package/dist/dna/gene-extractors/spacing-philosophy.js.map +1 -0
  45. package/dist/dna/gene-extractors/state-styling.d.ts +10 -0
  46. package/dist/dna/gene-extractors/state-styling.d.ts.map +1 -0
  47. package/dist/dna/gene-extractors/state-styling.js +29 -0
  48. package/dist/dna/gene-extractors/state-styling.js.map +1 -0
  49. package/dist/dna/gene-extractors/theming.d.ts +10 -0
  50. package/dist/dna/gene-extractors/theming.d.ts.map +1 -0
  51. package/dist/dna/gene-extractors/theming.js +30 -0
  52. package/dist/dna/gene-extractors/theming.js.map +1 -0
  53. package/dist/dna/gene-extractors/variant-handling.d.ts +13 -0
  54. package/dist/dna/gene-extractors/variant-handling.d.ts.map +1 -0
  55. package/dist/dna/gene-extractors/variant-handling.js +38 -0
  56. package/dist/dna/gene-extractors/variant-handling.js.map +1 -0
  57. package/dist/dna/health-calculator.d.ts +21 -0
  58. package/dist/dna/health-calculator.d.ts.map +1 -0
  59. package/dist/dna/health-calculator.js +113 -0
  60. package/dist/dna/health-calculator.js.map +1 -0
  61. package/dist/dna/index.d.ts +21 -0
  62. package/dist/dna/index.d.ts.map +1 -0
  63. package/dist/dna/index.js +19 -0
  64. package/dist/dna/index.js.map +1 -0
  65. package/dist/dna/mutation-detector.d.ts +10 -0
  66. package/dist/dna/mutation-detector.d.ts.map +1 -0
  67. package/dist/dna/mutation-detector.js +39 -0
  68. package/dist/dna/mutation-detector.js.map +1 -0
  69. package/dist/dna/playbook-generator.d.ts +6 -0
  70. package/dist/dna/playbook-generator.d.ts.map +1 -0
  71. package/dist/dna/playbook-generator.js +53 -0
  72. package/dist/dna/playbook-generator.js.map +1 -0
  73. package/dist/dna/types.d.ts +95 -0
  74. package/dist/dna/types.d.ts.map +1 -0
  75. package/dist/dna/types.js +8 -0
  76. package/dist/dna/types.js.map +1 -0
  77. package/dist/index.d.ts +7 -0
  78. package/dist/index.d.ts.map +1 -1
  79. package/dist/index.js +10 -0
  80. package/dist/index.js.map +1 -1
  81. package/dist/parsers/parser-manager.d.ts.map +1 -1
  82. package/dist/parsers/parser-manager.js +2 -0
  83. package/dist/parsers/parser-manager.js.map +1 -1
  84. package/dist/parsers/tree-sitter/config.d.ts +82 -0
  85. package/dist/parsers/tree-sitter/config.d.ts.map +1 -0
  86. package/dist/parsers/tree-sitter/config.js +200 -0
  87. package/dist/parsers/tree-sitter/config.js.map +1 -0
  88. package/dist/parsers/tree-sitter/csharp-ast-converter.d.ts +64 -0
  89. package/dist/parsers/tree-sitter/csharp-ast-converter.d.ts.map +1 -0
  90. package/dist/parsers/tree-sitter/csharp-ast-converter.js +271 -0
  91. package/dist/parsers/tree-sitter/csharp-ast-converter.js.map +1 -0
  92. package/dist/parsers/tree-sitter/csharp-loader.d.ts +43 -0
  93. package/dist/parsers/tree-sitter/csharp-loader.d.ts.map +1 -0
  94. package/dist/parsers/tree-sitter/csharp-loader.js +146 -0
  95. package/dist/parsers/tree-sitter/csharp-loader.js.map +1 -0
  96. package/dist/parsers/tree-sitter/index.d.ts +26 -0
  97. package/dist/parsers/tree-sitter/index.d.ts.map +1 -0
  98. package/dist/parsers/tree-sitter/index.js +47 -0
  99. package/dist/parsers/tree-sitter/index.js.map +1 -0
  100. package/dist/parsers/tree-sitter/java/annotation-extractor.d.ts +79 -0
  101. package/dist/parsers/tree-sitter/java/annotation-extractor.d.ts.map +1 -0
  102. package/dist/parsers/tree-sitter/java/annotation-extractor.js +540 -0
  103. package/dist/parsers/tree-sitter/java/annotation-extractor.js.map +1 -0
  104. package/dist/parsers/tree-sitter/java/class-extractor.d.ts +40 -0
  105. package/dist/parsers/tree-sitter/java/class-extractor.d.ts.map +1 -0
  106. package/dist/parsers/tree-sitter/java/class-extractor.js +770 -0
  107. package/dist/parsers/tree-sitter/java/class-extractor.js.map +1 -0
  108. package/dist/parsers/tree-sitter/java/index.d.ts +14 -0
  109. package/dist/parsers/tree-sitter/java/index.d.ts.map +1 -0
  110. package/dist/parsers/tree-sitter/java/index.js +25 -0
  111. package/dist/parsers/tree-sitter/java/index.js.map +1 -0
  112. package/dist/parsers/tree-sitter/java/method-extractor.d.ts +88 -0
  113. package/dist/parsers/tree-sitter/java/method-extractor.d.ts.map +1 -0
  114. package/dist/parsers/tree-sitter/java/method-extractor.js +551 -0
  115. package/dist/parsers/tree-sitter/java/method-extractor.js.map +1 -0
  116. package/dist/parsers/tree-sitter/java/types.d.ts +545 -0
  117. package/dist/parsers/tree-sitter/java/types.d.ts.map +1 -0
  118. package/dist/parsers/tree-sitter/java/types.js +81 -0
  119. package/dist/parsers/tree-sitter/java/types.js.map +1 -0
  120. package/dist/parsers/tree-sitter/loader.d.ts +50 -0
  121. package/dist/parsers/tree-sitter/loader.d.ts.map +1 -0
  122. package/dist/parsers/tree-sitter/loader.js +156 -0
  123. package/dist/parsers/tree-sitter/loader.js.map +1 -0
  124. package/dist/parsers/tree-sitter/pydantic/config-extractor.d.ts +78 -0
  125. package/dist/parsers/tree-sitter/pydantic/config-extractor.d.ts.map +1 -0
  126. package/dist/parsers/tree-sitter/pydantic/config-extractor.js +278 -0
  127. package/dist/parsers/tree-sitter/pydantic/config-extractor.js.map +1 -0
  128. package/dist/parsers/tree-sitter/pydantic/constraint-parser.d.ts +84 -0
  129. package/dist/parsers/tree-sitter/pydantic/constraint-parser.d.ts.map +1 -0
  130. package/dist/parsers/tree-sitter/pydantic/constraint-parser.js +321 -0
  131. package/dist/parsers/tree-sitter/pydantic/constraint-parser.js.map +1 -0
  132. package/dist/parsers/tree-sitter/pydantic/field-extractor.d.ts +74 -0
  133. package/dist/parsers/tree-sitter/pydantic/field-extractor.d.ts.map +1 -0
  134. package/dist/parsers/tree-sitter/pydantic/field-extractor.js +285 -0
  135. package/dist/parsers/tree-sitter/pydantic/field-extractor.js.map +1 -0
  136. package/dist/parsers/tree-sitter/pydantic/index.d.ts +18 -0
  137. package/dist/parsers/tree-sitter/pydantic/index.d.ts.map +1 -0
  138. package/dist/parsers/tree-sitter/pydantic/index.js +23 -0
  139. package/dist/parsers/tree-sitter/pydantic/index.js.map +1 -0
  140. package/dist/parsers/tree-sitter/pydantic/inheritance-resolver.d.ts +70 -0
  141. package/dist/parsers/tree-sitter/pydantic/inheritance-resolver.d.ts.map +1 -0
  142. package/dist/parsers/tree-sitter/pydantic/inheritance-resolver.js +251 -0
  143. package/dist/parsers/tree-sitter/pydantic/inheritance-resolver.js.map +1 -0
  144. package/dist/parsers/tree-sitter/pydantic/pydantic-extractor.d.ts +102 -0
  145. package/dist/parsers/tree-sitter/pydantic/pydantic-extractor.d.ts.map +1 -0
  146. package/dist/parsers/tree-sitter/pydantic/pydantic-extractor.js +399 -0
  147. package/dist/parsers/tree-sitter/pydantic/pydantic-extractor.js.map +1 -0
  148. package/dist/parsers/tree-sitter/pydantic/type-resolver.d.ts +89 -0
  149. package/dist/parsers/tree-sitter/pydantic/type-resolver.d.ts.map +1 -0
  150. package/dist/parsers/tree-sitter/pydantic/type-resolver.js +426 -0
  151. package/dist/parsers/tree-sitter/pydantic/type-resolver.js.map +1 -0
  152. package/dist/parsers/tree-sitter/pydantic/types.d.ts +177 -0
  153. package/dist/parsers/tree-sitter/pydantic/types.d.ts.map +1 -0
  154. package/dist/parsers/tree-sitter/pydantic/types.js +139 -0
  155. package/dist/parsers/tree-sitter/pydantic/types.js.map +1 -0
  156. package/dist/parsers/tree-sitter/pydantic/validator-extractor.d.ts +88 -0
  157. package/dist/parsers/tree-sitter/pydantic/validator-extractor.d.ts.map +1 -0
  158. package/dist/parsers/tree-sitter/pydantic/validator-extractor.js +315 -0
  159. package/dist/parsers/tree-sitter/pydantic/validator-extractor.js.map +1 -0
  160. package/dist/parsers/tree-sitter/python-ast-converter.d.ts +140 -0
  161. package/dist/parsers/tree-sitter/python-ast-converter.d.ts.map +1 -0
  162. package/dist/parsers/tree-sitter/python-ast-converter.js +360 -0
  163. package/dist/parsers/tree-sitter/python-ast-converter.js.map +1 -0
  164. package/dist/parsers/tree-sitter/tree-sitter-csharp-parser.d.ts +465 -0
  165. package/dist/parsers/tree-sitter/tree-sitter-csharp-parser.d.ts.map +1 -0
  166. package/dist/parsers/tree-sitter/tree-sitter-csharp-parser.js +1146 -0
  167. package/dist/parsers/tree-sitter/tree-sitter-csharp-parser.js.map +1 -0
  168. package/dist/parsers/tree-sitter/tree-sitter-python-parser.d.ts +86 -0
  169. package/dist/parsers/tree-sitter/tree-sitter-python-parser.d.ts.map +1 -0
  170. package/dist/parsers/tree-sitter/tree-sitter-python-parser.js +177 -0
  171. package/dist/parsers/tree-sitter/tree-sitter-python-parser.js.map +1 -0
  172. package/dist/parsers/tree-sitter/types.d.ts +399 -0
  173. package/dist/parsers/tree-sitter/types.d.ts.map +1 -0
  174. package/dist/parsers/tree-sitter/types.js +20 -0
  175. package/dist/parsers/tree-sitter/types.js.map +1 -0
  176. package/dist/parsers/types.d.ts +1 -1
  177. package/dist/parsers/types.d.ts.map +1 -1
  178. package/dist/scanner/file-walker.d.ts.map +1 -1
  179. package/dist/scanner/file-walker.js +5 -0
  180. package/dist/scanner/file-walker.js.map +1 -1
  181. package/dist/store/history-store.d.ts +85 -269
  182. package/dist/store/history-store.d.ts.map +1 -1
  183. package/dist/store/history-store.js +272 -624
  184. package/dist/store/history-store.js.map +1 -1
  185. package/dist/types/index.d.ts +1 -0
  186. package/dist/types/index.d.ts.map +1 -1
  187. package/dist/types/index.js +2 -0
  188. package/dist/types/index.js.map +1 -1
  189. package/dist/types/java-type-mapping.d.ts +79 -0
  190. package/dist/types/java-type-mapping.d.ts.map +1 -0
  191. package/dist/types/java-type-mapping.js +290 -0
  192. package/dist/types/java-type-mapping.js.map +1 -0
  193. package/package.json +8 -3
@@ -1,314 +1,130 @@
1
1
  /**
2
- * History Store - Pattern change tracking and approval history
2
+ * History Store - Pattern snapshot and trend tracking
3
3
  *
4
- * Tracks pattern changes over time and stores approval history.
5
- * History entries are stored in .drift/history/ directory.
4
+ * Captures pattern state over time to detect regressions and improvements.
5
+ * Stores daily snapshots in .drift/history/snapshots/
6
6
  *
7
- * @requirements 4.4 - THE Pattern_Store SHALL maintain history of pattern changes in .drift/history/
7
+ * @requirements 4.4 - Pattern history SHALL be tracked in .drift/history/
8
8
  */
9
9
  import { EventEmitter } from 'node:events';
10
- import type { PatternCategory, PatternHistoryEvent, PatternHistory, HistoryEventType, Pattern } from './types.js';
10
+ import type { Pattern, PatternCategory } from './types.js';
11
11
  /**
12
- * Error thrown when a history operation fails
12
+ * A snapshot of a single pattern's state at a point in time
13
13
  */
14
- export declare class HistoryStoreError extends Error {
15
- readonly errorCause: Error | undefined;
16
- constructor(message: string, errorCause?: Error);
14
+ export interface PatternSnapshot {
15
+ patternId: string;
16
+ patternName: string;
17
+ category: PatternCategory;
18
+ confidence: number;
19
+ locationCount: number;
20
+ outlierCount: number;
21
+ complianceRate: number;
22
+ status: 'discovered' | 'approved' | 'ignored';
17
23
  }
18
24
  /**
19
- * Error thrown when a pattern history is not found
25
+ * A full snapshot of all patterns at a point in time
20
26
  */
21
- export declare class PatternHistoryNotFoundError extends Error {
22
- readonly patternId: string;
23
- constructor(patternId: string);
27
+ export interface HistorySnapshot {
28
+ timestamp: string;
29
+ date: string;
30
+ patterns: PatternSnapshot[];
31
+ summary: {
32
+ totalPatterns: number;
33
+ avgConfidence: number;
34
+ totalLocations: number;
35
+ totalOutliers: number;
36
+ overallComplianceRate: number;
37
+ byCategory: Record<string, CategorySummary>;
38
+ };
24
39
  }
25
40
  /**
26
- * Configuration options for the history store
41
+ * Summary for a single category
27
42
  */
28
- export interface HistoryStoreConfig {
29
- /** Root directory for .drift folder (defaults to project root) */
30
- rootDir: string;
31
- /** Maximum number of history entries per pattern */
32
- maxEntriesPerPattern: number;
33
- /** Maximum age for history entries in days */
34
- maxAgeDays: number;
35
- /** Whether to auto-save changes */
36
- autoSave: boolean;
37
- /** Debounce time for auto-save in milliseconds */
38
- autoSaveDebounce: number;
43
+ export interface CategorySummary {
44
+ patternCount: number;
45
+ avgConfidence: number;
46
+ totalLocations: number;
47
+ totalOutliers: number;
48
+ complianceRate: number;
39
49
  }
40
50
  /**
41
- * Default history store configuration
51
+ * A detected regression or improvement
42
52
  */
43
- export declare const DEFAULT_HISTORY_STORE_CONFIG: HistoryStoreConfig;
44
- /**
45
- * Query options for filtering history events
46
- */
47
- export interface HistoryQuery {
48
- /** Filter by pattern ID */
49
- patternId?: string;
50
- /** Filter by pattern IDs */
51
- patternIds?: string[];
52
- /** Filter by event type */
53
- eventType?: HistoryEventType | HistoryEventType[];
54
- /** Filter by category */
55
- category?: PatternCategory | PatternCategory[];
56
- /** Filter by user */
57
- user?: string;
58
- /** Filter events after this date (ISO string) */
59
- after?: string;
60
- /** Filter events before this date (ISO string) */
61
- before?: string;
62
- /** Maximum number of results */
63
- limit?: number;
64
- /** Number of results to skip */
65
- offset?: number;
53
+ export interface PatternTrend {
54
+ patternId: string;
55
+ patternName: string;
56
+ category: PatternCategory;
57
+ type: 'regression' | 'improvement' | 'stable';
58
+ metric: 'confidence' | 'compliance' | 'outliers';
59
+ previousValue: number;
60
+ currentValue: number;
61
+ change: number;
62
+ changePercent: number;
63
+ severity: 'critical' | 'warning' | 'info';
64
+ firstSeen: string;
65
+ details: string;
66
66
  }
67
67
  /**
68
- * Result of a history query
68
+ * Aggregated trends for the dashboard
69
69
  */
70
- export interface HistoryQueryResult {
71
- /** Matching history events */
72
- events: PatternHistoryEvent[];
73
- /** Total count (before pagination) */
74
- total: number;
75
- /** Whether there are more results */
76
- hasMore: boolean;
77
- /** Query execution time in milliseconds */
78
- executionTime: number;
70
+ export interface TrendSummary {
71
+ period: '7d' | '30d' | '90d';
72
+ startDate: string;
73
+ endDate: string;
74
+ regressions: PatternTrend[];
75
+ improvements: PatternTrend[];
76
+ stable: number;
77
+ overallTrend: 'improving' | 'declining' | 'stable';
78
+ healthDelta: number;
79
+ categoryTrends: Record<string, {
80
+ trend: 'improving' | 'declining' | 'stable';
81
+ avgConfidenceChange: number;
82
+ complianceChange: number;
83
+ }>;
79
84
  }
80
85
  /**
81
- * Events emitted by the history store
86
+ * Configuration for the history store
82
87
  */
83
- export type HistoryStoreEventType = 'event:recorded' | 'history:pruned' | 'file:loaded' | 'file:saved' | 'error';
84
- /**
85
- * Event payload for history store events
86
- */
87
- export interface HistoryStoreEvent {
88
- /** Event type */
89
- type: HistoryStoreEventType;
90
- /** Pattern ID (if applicable) */
91
- patternId?: string;
92
- /** Additional event data */
93
- data?: Record<string, unknown>;
94
- /** ISO timestamp of the event */
95
- timestamp: string;
88
+ export interface HistoryStoreConfig {
89
+ rootDir: string;
90
+ maxSnapshots: number;
91
+ snapshotInterval: 'scan' | 'daily';
96
92
  }
97
- /**
98
- * History Store - Manages pattern change history
99
- *
100
- * Tracks all pattern changes including:
101
- * - Pattern created
102
- * - Pattern updated
103
- * - Pattern approved
104
- * - Pattern ignored
105
- * - Pattern deleted
106
- * - Confidence changed
107
- * - Locations changed
108
- * - Severity changed
109
- *
110
- * History is stored in .drift/history/patterns.json
111
- *
112
- * @requirements 4.4 - Pattern history tracked in .drift/history/
113
- */
114
93
  export declare class HistoryStore extends EventEmitter {
115
94
  private readonly config;
116
95
  private readonly historyDir;
117
- private readonly historyFilePath;
118
- private histories;
119
- private loaded;
120
- private dirty;
121
- private saveTimeout;
96
+ private readonly snapshotsDir;
122
97
  constructor(config?: Partial<HistoryStoreConfig>);
123
98
  /**
124
99
  * Initialize the history store
125
- *
126
- * Creates necessary directories and loads existing history.
127
100
  */
128
101
  initialize(): Promise<void>;
129
102
  /**
130
- * Load history from disk
131
- *
132
- * @requirements 4.4 - Load history from .drift/history/
133
- */
134
- load(): Promise<void>;
135
- /**
136
- * Save history to disk
137
- *
138
- * @requirements 4.4 - Persist history in .drift/history/
139
- */
140
- save(): Promise<void>;
141
- /**
142
- * Schedule an auto-save if enabled
143
- */
144
- private scheduleAutoSave;
145
- /**
146
- * Record a history event for a pattern
147
- *
148
- * @param patternId - Pattern ID
149
- * @param category - Pattern category
150
- * @param eventType - Type of event
151
- * @param options - Additional event options
152
- */
153
- recordEvent(patternId: string, category: PatternCategory, eventType: HistoryEventType, options?: {
154
- user?: string;
155
- previousValue?: unknown;
156
- newValue?: unknown;
157
- details?: Record<string, unknown>;
158
- }): PatternHistoryEvent;
159
- /**
160
- * Record a pattern creation event
161
- */
162
- recordCreated(pattern: Pattern, user?: string): PatternHistoryEvent;
163
- /**
164
- * Record a pattern update event
165
- */
166
- recordUpdated(pattern: Pattern, previousPattern: Pattern, user?: string): PatternHistoryEvent;
167
- /**
168
- * Record a pattern approval event
169
- */
170
- recordApproved(pattern: Pattern, user?: string): PatternHistoryEvent;
171
- /**
172
- * Record a pattern ignore event
173
- */
174
- recordIgnored(pattern: Pattern, user?: string): PatternHistoryEvent;
175
- /**
176
- * Record a pattern deletion event
177
- */
178
- recordDeleted(pattern: Pattern, user?: string): PatternHistoryEvent;
179
- /**
180
- * Record a confidence change event
181
- */
182
- recordConfidenceChanged(pattern: Pattern, previousScore: number, user?: string): PatternHistoryEvent;
183
- /**
184
- * Record a locations change event
185
- */
186
- recordLocationsChanged(pattern: Pattern, previousCount: number, user?: string): PatternHistoryEvent;
187
- /**
188
- * Record a severity change event
189
- */
190
- recordSeverityChanged(pattern: Pattern, previousSeverity: string, user?: string): PatternHistoryEvent;
191
- /**
192
- * Get history for a specific pattern
193
- *
194
- * @param patternId - Pattern ID
195
- * @returns Pattern history or undefined if not found
196
- */
197
- getPatternHistory(patternId: string): PatternHistory | undefined;
198
- /**
199
- * Get history for a specific pattern, throwing if not found
200
- *
201
- * @param patternId - Pattern ID
202
- * @returns Pattern history
203
- * @throws PatternHistoryNotFoundError if not found
204
- */
205
- getPatternHistoryOrThrow(patternId: string): PatternHistory;
206
- /**
207
- * Check if history exists for a pattern
208
- *
209
- * @param patternId - Pattern ID
210
- * @returns True if history exists
211
- */
212
- hasPatternHistory(patternId: string): boolean;
213
- /**
214
- * Query history events with filtering and pagination
215
- *
216
- * @param query - Query options
217
- * @returns Query result with matching events
218
- */
219
- query(query?: HistoryQuery): HistoryQueryResult;
220
- /**
221
- * Apply filters to events
222
- */
223
- private applyFilters;
224
- /**
225
- * Get all history events
226
- */
227
- getAllEvents(): PatternHistoryEvent[];
228
- /**
229
- * Get events by type
230
- */
231
- getEventsByType(eventType: HistoryEventType): PatternHistoryEvent[];
232
- /**
233
- * Get events by category
234
- */
235
- getEventsByCategory(category: PatternCategory): PatternHistoryEvent[];
236
- /**
237
- * Get events in date range
238
- */
239
- getEventsInDateRange(after: string, before: string): PatternHistoryEvent[];
240
- /**
241
- * Get recent events
242
- *
243
- * @param limit - Maximum number of events to return
244
- */
245
- getRecentEvents(limit?: number): PatternHistoryEvent[];
246
- /**
247
- * Get approval history
248
- */
249
- getApprovalHistory(): PatternHistoryEvent[];
250
- /**
251
- * Get events by user
252
- */
253
- getEventsByUser(user: string): PatternHistoryEvent[];
254
- /**
255
- * Prune history for a specific pattern
256
- *
257
- * Removes old entries based on maxEntriesPerPattern and maxAgeDays config.
258
- *
259
- * @param patternId - Pattern ID to prune
260
- */
261
- private prunePatternHistory;
262
- /**
263
- * Prune all history
264
- *
265
- * Removes old entries based on maxEntriesPerPattern and maxAgeDays config.
266
- */
267
- prune(): void;
268
- /**
269
- * Delete history for a specific pattern
270
- *
271
- * @param patternId - Pattern ID
272
- * @returns True if history was deleted
273
- */
274
- deletePatternHistory(patternId: string): boolean;
275
- /**
276
- * Get statistics about the history store
277
- */
278
- getStats(): {
279
- totalPatterns: number;
280
- totalEvents: number;
281
- eventsByType: Record<HistoryEventType, number>;
282
- oldestEvent: string | null;
283
- newestEvent: string | null;
284
- };
285
- /**
286
- * Emit a history store event
287
- */
288
- private emitEvent;
289
- /**
290
- * Get the number of patterns with history
103
+ * Create a snapshot from current patterns
291
104
  */
292
- get size(): number;
105
+ createSnapshot(patterns: Pattern[]): Promise<HistorySnapshot>;
293
106
  /**
294
- * Check if the store has been loaded
107
+ * Get snapshots for a date range
295
108
  */
296
- get isLoaded(): boolean;
109
+ getSnapshots(startDate?: string, endDate?: string): Promise<HistorySnapshot[]>;
297
110
  /**
298
- * Check if there are unsaved changes
111
+ * Get the most recent snapshot
299
112
  */
300
- get isDirty(): boolean;
113
+ getLatestSnapshot(): Promise<HistorySnapshot | null>;
301
114
  /**
302
- * Get the history directory path
115
+ * Get snapshot from N days ago
303
116
  */
304
- get path(): string;
117
+ getSnapshotFromDaysAgo(days: number): Promise<HistorySnapshot | null>;
305
118
  /**
306
- * Clear all history from memory (does not affect disk)
119
+ * Calculate trends between two snapshots
307
120
  */
308
- clear(): void;
121
+ calculateTrends(current: HistorySnapshot, previous: HistorySnapshot): PatternTrend[];
309
122
  /**
310
- * Dispose of the history store
123
+ * Get trend summary for a period
311
124
  */
312
- dispose(): void;
125
+ getTrendSummary(period?: '7d' | '30d' | '90d'): Promise<TrendSummary | null>;
126
+ private calculateSummary;
127
+ private saveSnapshot;
128
+ private cleanupOldSnapshots;
313
129
  }
314
130
  //# sourceMappingURL=history-store.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"history-store.d.ts","sourceRoot":"","sources":["../../src/store/history-store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"history-store.d.ts","sourceRoot":"","sources":["../../src/store/history-store.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAM3D;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,eAAe,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,YAAY,GAAG,UAAU,GAAG,SAAS,CAAC;CAC/C;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,eAAe,EAAE,CAAC;IAC5B,OAAO,EAAE;QACP,aAAa,EAAE,MAAM,CAAC;QACtB,aAAa,EAAE,MAAM,CAAC;QACtB,cAAc,EAAE,MAAM,CAAC;QACvB,aAAa,EAAE,MAAM,CAAC;QACtB,qBAAqB,EAAE,MAAM,CAAC;QAC9B,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;KAC7C,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,eAAe,CAAC;IAC1B,IAAI,EAAE,YAAY,GAAG,aAAa,GAAG,QAAQ,CAAC;IAC9C,MAAM,EAAE,YAAY,GAAG,YAAY,GAAG,UAAU,CAAC;IACjD,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,UAAU,GAAG,SAAS,GAAG,MAAM,CAAC;IAC1C,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,IAAI,GAAG,KAAK,GAAG,KAAK,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,YAAY,EAAE,CAAC;IAC5B,YAAY,EAAE,YAAY,EAAE,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,WAAW,GAAG,WAAW,GAAG,QAAQ,CAAC;IACnD,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE;QAC7B,KAAK,EAAE,WAAW,GAAG,WAAW,GAAG,QAAQ,CAAC;QAC5C,mBAAmB,EAAE,MAAM,CAAC;QAC5B,gBAAgB,EAAE,MAAM,CAAC;KAC1B,CAAC,CAAC;CACJ;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC;CACpC;AA0DD,qBAAa,YAAa,SAAQ,YAAY;IAC5C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqB;IAC5C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;gBAE1B,MAAM,GAAE,OAAO,CAAC,kBAAkB,CAAM;IAOpD;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAIjC;;OAEG;IACG,cAAc,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,eAAe,CAAC;IAqCnE;;OAEG;IACG,YAAY,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IA6BpF;;OAEG;IACG,iBAAiB,IAAI,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;IAK1D;;OAEG;IACG,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;IAqB3E;;OAEG;IACH,eAAe,CACb,OAAO,EAAE,eAAe,EACxB,QAAQ,EAAE,eAAe,GACxB,YAAY,EAAE;IAmFjB;;OAEG;IACG,eAAe,CAAC,MAAM,GAAE,IAAI,GAAG,KAAK,GAAG,KAAY,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAkExF,OAAO,CAAC,gBAAgB;YAgDV,YAAY;YAKZ,mBAAmB;CAelC"}