@ginkoai/cli 1.7.2 → 1.8.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 (50) hide show
  1. package/dist/commands/insights/index.d.ts +12 -0
  2. package/dist/commands/insights/index.d.ts.map +1 -0
  3. package/dist/commands/insights/index.js +12 -0
  4. package/dist/commands/insights/index.js.map +1 -0
  5. package/dist/commands/insights/insights-command.d.ts +20 -0
  6. package/dist/commands/insights/insights-command.d.ts.map +1 -0
  7. package/dist/commands/insights/insights-command.js +331 -0
  8. package/dist/commands/insights/insights-command.js.map +1 -0
  9. package/dist/commands/start/start-reflection.d.ts.map +1 -1
  10. package/dist/commands/start/start-reflection.js +50 -13
  11. package/dist/commands/start/start-reflection.js.map +1 -1
  12. package/dist/index.js +30 -0
  13. package/dist/index.js.map +1 -1
  14. package/dist/lib/insights/analyzers/anti-patterns.d.ts +32 -0
  15. package/dist/lib/insights/analyzers/anti-patterns.d.ts.map +1 -0
  16. package/dist/lib/insights/analyzers/anti-patterns.js +302 -0
  17. package/dist/lib/insights/analyzers/anti-patterns.js.map +1 -0
  18. package/dist/lib/insights/analyzers/efficiency.d.ts +22 -0
  19. package/dist/lib/insights/analyzers/efficiency.d.ts.map +1 -0
  20. package/dist/lib/insights/analyzers/efficiency.js +311 -0
  21. package/dist/lib/insights/analyzers/efficiency.js.map +1 -0
  22. package/dist/lib/insights/analyzers/index.d.ts +24 -0
  23. package/dist/lib/insights/analyzers/index.d.ts.map +1 -0
  24. package/dist/lib/insights/analyzers/index.js +37 -0
  25. package/dist/lib/insights/analyzers/index.js.map +1 -0
  26. package/dist/lib/insights/analyzers/patterns.d.ts +21 -0
  27. package/dist/lib/insights/analyzers/patterns.d.ts.map +1 -0
  28. package/dist/lib/insights/analyzers/patterns.js +327 -0
  29. package/dist/lib/insights/analyzers/patterns.js.map +1 -0
  30. package/dist/lib/insights/analyzers/quality.d.ts +29 -0
  31. package/dist/lib/insights/analyzers/quality.d.ts.map +1 -0
  32. package/dist/lib/insights/analyzers/quality.js +366 -0
  33. package/dist/lib/insights/analyzers/quality.js.map +1 -0
  34. package/dist/lib/insights/data-collector.d.ts +68 -0
  35. package/dist/lib/insights/data-collector.d.ts.map +1 -0
  36. package/dist/lib/insights/data-collector.js +467 -0
  37. package/dist/lib/insights/data-collector.js.map +1 -0
  38. package/dist/lib/insights/index.d.ts +14 -0
  39. package/dist/lib/insights/index.d.ts.map +1 -0
  40. package/dist/lib/insights/index.js +17 -0
  41. package/dist/lib/insights/index.js.map +1 -0
  42. package/dist/lib/insights/types.d.ts +216 -0
  43. package/dist/lib/insights/types.d.ts.map +1 -0
  44. package/dist/lib/insights/types.js +12 -0
  45. package/dist/lib/insights/types.js.map +1 -0
  46. package/dist/templates/ai-instructions-template.d.ts +1 -0
  47. package/dist/templates/ai-instructions-template.d.ts.map +1 -1
  48. package/dist/templates/ai-instructions-template.js +51 -0
  49. package/dist/templates/ai-instructions-template.js.map +1 -1
  50. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"efficiency.js","sourceRoot":"","sources":["../../../../src/lib/insights/analyzers/efficiency.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * @fileType: module-index
3
+ * @status: current
4
+ * @updated: 2025-12-15
5
+ * @tags: [insights, analyzers, module]
6
+ * @related: [efficiency.ts, patterns.ts, quality.ts, anti-patterns.ts]
7
+ * @priority: high
8
+ * @complexity: low
9
+ * @dependencies: []
10
+ */
11
+ export { EfficiencyAnalyzer } from './efficiency.js';
12
+ export { PatternAnalyzer } from './patterns.js';
13
+ export { QualityAnalyzer } from './quality.js';
14
+ export { AntiPatternDetector } from './anti-patterns.js';
15
+ import type { InsightAnalyzer } from '../types.js';
16
+ /**
17
+ * Get all analyzer instances.
18
+ */
19
+ export declare function getAllAnalyzers(): InsightAnalyzer[];
20
+ /**
21
+ * Get analyzer by category.
22
+ */
23
+ export declare function getAnalyzer(category: string): InsightAnalyzer | undefined;
24
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/insights/analyzers/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAMzD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEnD;;GAEG;AACH,wBAAgB,eAAe,IAAI,eAAe,EAAE,CAOnD;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS,CAGzE"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * @fileType: module-index
3
+ * @status: current
4
+ * @updated: 2025-12-15
5
+ * @tags: [insights, analyzers, module]
6
+ * @related: [efficiency.ts, patterns.ts, quality.ts, anti-patterns.ts]
7
+ * @priority: high
8
+ * @complexity: low
9
+ * @dependencies: []
10
+ */
11
+ export { EfficiencyAnalyzer } from './efficiency.js';
12
+ export { PatternAnalyzer } from './patterns.js';
13
+ export { QualityAnalyzer } from './quality.js';
14
+ export { AntiPatternDetector } from './anti-patterns.js';
15
+ import { EfficiencyAnalyzer } from './efficiency.js';
16
+ import { PatternAnalyzer } from './patterns.js';
17
+ import { QualityAnalyzer } from './quality.js';
18
+ import { AntiPatternDetector } from './anti-patterns.js';
19
+ /**
20
+ * Get all analyzer instances.
21
+ */
22
+ export function getAllAnalyzers() {
23
+ return [
24
+ new EfficiencyAnalyzer(),
25
+ new PatternAnalyzer(),
26
+ new QualityAnalyzer(),
27
+ new AntiPatternDetector(),
28
+ ];
29
+ }
30
+ /**
31
+ * Get analyzer by category.
32
+ */
33
+ export function getAnalyzer(category) {
34
+ const analyzers = getAllAnalyzers();
35
+ return analyzers.find(a => a.category === category);
36
+ }
37
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/lib/insights/analyzers/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAEzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAGzD;;GAEG;AACH,MAAM,UAAU,eAAe;IAC7B,OAAO;QACL,IAAI,kBAAkB,EAAE;QACxB,IAAI,eAAe,EAAE;QACrB,IAAI,eAAe,EAAE;QACrB,IAAI,mBAAmB,EAAE;KAC1B,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,QAAgB;IAC1C,MAAM,SAAS,GAAG,eAAe,EAAE,CAAC;IACpC,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC;AACtD,CAAC"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * @fileType: analyzer
3
+ * @status: current
4
+ * @updated: 2025-12-15
5
+ * @tags: [insights, analyzer, patterns, adr, adoption]
6
+ * @related: [../types.ts, ../data-collector.ts]
7
+ * @priority: high
8
+ * @complexity: medium
9
+ * @dependencies: []
10
+ */
11
+ import { InsightAnalyzer, InsightData, RawInsight } from '../types.js';
12
+ export declare class PatternAnalyzer implements InsightAnalyzer {
13
+ category: "patterns";
14
+ analyze(data: InsightData): Promise<RawInsight[]>;
15
+ private analyzeADRAdoption;
16
+ private analyzePatternUsage;
17
+ private analyzeGotchaAvoidance;
18
+ private analyzeNewPatterns;
19
+ }
20
+ export default PatternAnalyzer;
21
+ //# sourceMappingURL=patterns.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"patterns.d.ts","sourceRoot":"","sources":["../../../../src/lib/insights/analyzers/patterns.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EACL,eAAe,EACf,WAAW,EACX,UAAU,EAEX,MAAM,aAAa,CAAC;AAmCrB,qBAAa,eAAgB,YAAW,eAAe;IACrD,QAAQ,EAAG,UAAU,CAAU;IAEzB,OAAO,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IA8BvD,OAAO,CAAC,kBAAkB;IAqF1B,OAAO,CAAC,mBAAmB;IA0E3B,OAAO,CAAC,sBAAsB;IA0E9B,OAAO,CAAC,kBAAkB;CA+C3B;AAED,eAAe,eAAe,CAAC"}
@@ -0,0 +1,327 @@
1
+ /**
2
+ * @fileType: analyzer
3
+ * @status: current
4
+ * @updated: 2025-12-15
5
+ * @tags: [insights, analyzer, patterns, adr, adoption]
6
+ * @related: [../types.ts, ../data-collector.ts]
7
+ * @priority: high
8
+ * @complexity: medium
9
+ * @dependencies: []
10
+ */
11
+ // ============================================================================
12
+ // Configuration
13
+ // ============================================================================
14
+ const THRESHOLDS = {
15
+ // ADR reference rate (percentage of events mentioning ADRs)
16
+ adrReferenceRate: {
17
+ excellent: 15, // > 15% is excellent
18
+ good: 5, // > 5% is good
19
+ warning: 2, // < 2% is warning
20
+ },
21
+ // Pattern usage count
22
+ patternUsage: {
23
+ excellent: 5, // > 5 patterns is excellent
24
+ good: 2, // > 2 patterns is good
25
+ },
26
+ // Gotcha avoidance rate
27
+ gotchaAvoidance: {
28
+ excellent: 90, // > 90% avoided is excellent
29
+ good: 70, // > 70% is good
30
+ warning: 50, // < 50% is warning
31
+ },
32
+ // New patterns discovered
33
+ newPatterns: {
34
+ excellent: 2, // > 2 new patterns is excellent
35
+ good: 1, // > 1 is good
36
+ },
37
+ };
38
+ // ============================================================================
39
+ // Pattern Adoption Analyzer
40
+ // ============================================================================
41
+ export class PatternAnalyzer {
42
+ category = 'patterns';
43
+ async analyze(data) {
44
+ const insights = [];
45
+ // Skip if no events
46
+ if (data.events.length === 0) {
47
+ insights.push({
48
+ category: this.category,
49
+ severity: 'info',
50
+ title: 'No event data available',
51
+ description: 'Start logging events with `ginko log` to track pattern adoption.',
52
+ scoreImpact: 0,
53
+ evidence: [],
54
+ recommendations: ['Use `ginko log` to capture decisions and insights'],
55
+ });
56
+ return insights;
57
+ }
58
+ // Analyze each metric
59
+ insights.push(...this.analyzeADRAdoption(data));
60
+ insights.push(...this.analyzePatternUsage(data));
61
+ insights.push(...this.analyzeGotchaAvoidance(data));
62
+ insights.push(...this.analyzeNewPatterns(data));
63
+ return insights;
64
+ }
65
+ // ===========================================================================
66
+ // ADR Adoption Analysis
67
+ // ===========================================================================
68
+ analyzeADRAdoption(data) {
69
+ const insights = [];
70
+ // Count ADR references in events
71
+ const eventsWithADR = data.events.filter(e => e.adrRefs.length > 0);
72
+ const adrRate = Math.round((eventsWithADR.length / data.events.length) * 100);
73
+ // Collect unique ADRs referenced
74
+ const uniqueADRs = new Set();
75
+ for (const event of data.events) {
76
+ for (const adr of event.adrRefs) {
77
+ uniqueADRs.add(adr);
78
+ }
79
+ }
80
+ // Also check commits
81
+ const commitsWithADR = data.commits.filter(c => c.adrRefs.length > 0);
82
+ for (const commit of data.commits) {
83
+ for (const adr of commit.adrRefs) {
84
+ uniqueADRs.add(adr);
85
+ }
86
+ }
87
+ const evidence = eventsWithADR.slice(0, 3).map(e => ({
88
+ type: 'event',
89
+ id: e.id,
90
+ description: `Referenced ${e.adrRefs.join(', ')}`,
91
+ timestamp: e.timestamp,
92
+ }));
93
+ if (adrRate >= THRESHOLDS.adrReferenceRate.excellent) {
94
+ insights.push({
95
+ category: this.category,
96
+ severity: 'info',
97
+ title: 'Excellent ADR adoption',
98
+ description: `${uniqueADRs.size} ADRs referenced across ${eventsWithADR.length} events (${adrRate}%). Strong architectural alignment.`,
99
+ metricName: 'adr_reference_rate',
100
+ metricValue: adrRate,
101
+ metricTarget: THRESHOLDS.adrReferenceRate.excellent,
102
+ metricUnit: '%',
103
+ scoreImpact: 15,
104
+ evidence,
105
+ recommendations: [],
106
+ });
107
+ }
108
+ else if (adrRate >= THRESHOLDS.adrReferenceRate.good) {
109
+ insights.push({
110
+ category: this.category,
111
+ severity: 'info',
112
+ title: 'Good ADR awareness',
113
+ description: `${uniqueADRs.size} ADRs referenced (${adrRate}% of events). Consider referencing ADRs more consistently.`,
114
+ metricName: 'adr_reference_rate',
115
+ metricValue: adrRate,
116
+ metricTarget: THRESHOLDS.adrReferenceRate.good,
117
+ metricUnit: '%',
118
+ scoreImpact: 5,
119
+ evidence,
120
+ recommendations: ['Reference relevant ADRs in commit messages'],
121
+ });
122
+ }
123
+ else if (adrRate < THRESHOLDS.adrReferenceRate.warning) {
124
+ insights.push({
125
+ category: this.category,
126
+ severity: 'suggestion',
127
+ title: 'Low ADR reference rate',
128
+ description: `Only ${adrRate}% of events reference ADRs. Architectural decisions may be disconnected from work.`,
129
+ metricName: 'adr_reference_rate',
130
+ metricValue: adrRate,
131
+ metricTarget: THRESHOLDS.adrReferenceRate.good,
132
+ metricUnit: '%',
133
+ scoreImpact: -10,
134
+ evidence: [],
135
+ recommendations: [
136
+ 'Review ADRs before starting new features',
137
+ 'Reference ADRs in `ginko log` entries',
138
+ 'Add ADR references to commit messages',
139
+ ],
140
+ });
141
+ }
142
+ return insights;
143
+ }
144
+ // ===========================================================================
145
+ // Pattern Usage Analysis
146
+ // ===========================================================================
147
+ analyzePatternUsage(data) {
148
+ const insights = [];
149
+ // Count pattern references in events
150
+ const patternsUsed = new Set();
151
+ for (const event of data.events) {
152
+ for (const pattern of event.patternRefs) {
153
+ patternsUsed.add(pattern);
154
+ }
155
+ }
156
+ // Add patterns from patterns list
157
+ const highConfidencePatterns = data.patterns.filter(p => p.confidence === 'high');
158
+ const patternCount = Math.max(patternsUsed.size, highConfidencePatterns.length);
159
+ const evidence = data.patterns.slice(0, 3).map(p => ({
160
+ type: 'pattern',
161
+ id: p.id,
162
+ description: `${p.name} (${p.confidence} confidence)`,
163
+ }));
164
+ if (patternCount >= THRESHOLDS.patternUsage.excellent) {
165
+ insights.push({
166
+ category: this.category,
167
+ severity: 'info',
168
+ title: 'Strong pattern library',
169
+ description: `${patternCount} patterns documented and used. Your codebase has well-established practices.`,
170
+ metricName: 'patterns_used',
171
+ metricValue: patternCount,
172
+ metricTarget: THRESHOLDS.patternUsage.excellent,
173
+ scoreImpact: 10,
174
+ evidence,
175
+ recommendations: [],
176
+ });
177
+ }
178
+ else if (patternCount >= THRESHOLDS.patternUsage.good) {
179
+ insights.push({
180
+ category: this.category,
181
+ severity: 'info',
182
+ title: 'Growing pattern library',
183
+ description: `${patternCount} patterns in use. Consider documenting more recurring solutions.`,
184
+ metricName: 'patterns_used',
185
+ metricValue: patternCount,
186
+ metricTarget: THRESHOLDS.patternUsage.good,
187
+ scoreImpact: 5,
188
+ evidence,
189
+ recommendations: ['Document successful solutions as patterns'],
190
+ });
191
+ }
192
+ else {
193
+ insights.push({
194
+ category: this.category,
195
+ severity: 'suggestion',
196
+ title: 'Few patterns documented',
197
+ description: `Only ${patternCount} patterns found. Capturing patterns prevents reinventing solutions.`,
198
+ metricName: 'patterns_used',
199
+ metricValue: patternCount,
200
+ metricTarget: THRESHOLDS.patternUsage.good,
201
+ scoreImpact: -5,
202
+ evidence: [],
203
+ recommendations: [
204
+ 'When you solve a problem well, document it as a pattern',
205
+ 'Review events for recurring solutions worth documenting',
206
+ 'Add docs/patterns/*.md files for common approaches',
207
+ ],
208
+ });
209
+ }
210
+ return insights;
211
+ }
212
+ // ===========================================================================
213
+ // Gotcha Avoidance Analysis
214
+ // ===========================================================================
215
+ analyzeGotchaAvoidance(data) {
216
+ const insights = [];
217
+ // Calculate gotcha resolution rate
218
+ const gotchasWithEncounters = data.gotchas.filter(g => g.encounters > 0);
219
+ if (gotchasWithEncounters.length === 0) {
220
+ // No gotchas encountered - good or no data
221
+ if (data.gotchas.length > 0) {
222
+ insights.push({
223
+ category: this.category,
224
+ severity: 'info',
225
+ title: 'Clean gotcha record',
226
+ description: `${data.gotchas.length} gotchas documented, none encountered this period. Great avoidance!`,
227
+ scoreImpact: 10,
228
+ evidence: [],
229
+ recommendations: [],
230
+ });
231
+ }
232
+ return insights;
233
+ }
234
+ const totalEncounters = gotchasWithEncounters.reduce((sum, g) => sum + g.encounters, 0);
235
+ const totalResolutions = gotchasWithEncounters.reduce((sum, g) => sum + g.resolutions, 0);
236
+ const avoidanceRate = Math.round(((totalResolutions) / totalEncounters) * 100);
237
+ const evidence = gotchasWithEncounters.slice(0, 3).map(g => ({
238
+ type: 'gotcha',
239
+ id: g.id,
240
+ description: `${g.title} - ${g.encounters} encounters, ${g.resolutions} resolved`,
241
+ }));
242
+ if (avoidanceRate >= THRESHOLDS.gotchaAvoidance.excellent) {
243
+ insights.push({
244
+ category: this.category,
245
+ severity: 'info',
246
+ title: 'Excellent gotcha handling',
247
+ description: `${avoidanceRate}% of encountered gotchas resolved. You're learning from past issues.`,
248
+ metricName: 'gotcha_resolution_rate',
249
+ metricValue: avoidanceRate,
250
+ metricTarget: THRESHOLDS.gotchaAvoidance.excellent,
251
+ metricUnit: '%',
252
+ scoreImpact: 10,
253
+ evidence,
254
+ recommendations: [],
255
+ });
256
+ }
257
+ else if (avoidanceRate < THRESHOLDS.gotchaAvoidance.warning) {
258
+ insights.push({
259
+ category: this.category,
260
+ severity: 'warning',
261
+ title: 'Repeated gotcha encounters',
262
+ description: `Only ${avoidanceRate}% of gotchas resolved. Same issues are recurring.`,
263
+ metricName: 'gotcha_resolution_rate',
264
+ metricValue: avoidanceRate,
265
+ metricTarget: THRESHOLDS.gotchaAvoidance.good,
266
+ metricUnit: '%',
267
+ scoreImpact: -15,
268
+ evidence,
269
+ recommendations: [
270
+ 'Review gotcha documentation before starting related work',
271
+ 'Add gotcha checks to your pre-commit workflow',
272
+ 'Update gotcha docs with clearer prevention steps',
273
+ ],
274
+ });
275
+ }
276
+ return insights;
277
+ }
278
+ // ===========================================================================
279
+ // New Pattern Discovery Analysis
280
+ // ===========================================================================
281
+ analyzeNewPatterns(data) {
282
+ const insights = [];
283
+ // Check for new patterns (created in analysis period)
284
+ const newPatterns = data.patterns.filter(p => {
285
+ if (!p.createdAt)
286
+ return false;
287
+ return p.createdAt >= data.period.start;
288
+ });
289
+ const newPatternCount = newPatterns.length;
290
+ const evidence = newPatterns.slice(0, 3).map(p => ({
291
+ type: 'pattern',
292
+ id: p.id,
293
+ description: `New pattern: ${p.name}`,
294
+ timestamp: p.createdAt,
295
+ }));
296
+ if (newPatternCount >= THRESHOLDS.newPatterns.excellent) {
297
+ insights.push({
298
+ category: this.category,
299
+ severity: 'info',
300
+ title: 'Active pattern discovery',
301
+ description: `${newPatternCount} new patterns documented this period. Knowledge capture is strong.`,
302
+ metricName: 'new_patterns',
303
+ metricValue: newPatternCount,
304
+ scoreImpact: 10,
305
+ evidence,
306
+ recommendations: [],
307
+ });
308
+ }
309
+ else if (newPatternCount >= THRESHOLDS.newPatterns.good) {
310
+ insights.push({
311
+ category: this.category,
312
+ severity: 'info',
313
+ title: 'Pattern documented',
314
+ description: `${newPatternCount} new pattern documented. Keep capturing useful solutions!`,
315
+ metricName: 'new_patterns',
316
+ metricValue: newPatternCount,
317
+ scoreImpact: 5,
318
+ evidence,
319
+ recommendations: [],
320
+ });
321
+ }
322
+ // Don't penalize for no new patterns - not always applicable
323
+ return insights;
324
+ }
325
+ }
326
+ export default PatternAnalyzer;
327
+ //# sourceMappingURL=patterns.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"patterns.js","sourceRoot":"","sources":["../../../../src/lib/insights/analyzers/patterns.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AASH,+EAA+E;AAC/E,gBAAgB;AAChB,+EAA+E;AAE/E,MAAM,UAAU,GAAG;IACjB,4DAA4D;IAC5D,gBAAgB,EAAE;QAChB,SAAS,EAAE,EAAE,EAAK,qBAAqB;QACvC,IAAI,EAAE,CAAC,EAAW,eAAe;QACjC,OAAO,EAAE,CAAC,EAAQ,kBAAkB;KACrC;IACD,sBAAsB;IACtB,YAAY,EAAE;QACZ,SAAS,EAAE,CAAC,EAAM,4BAA4B;QAC9C,IAAI,EAAE,CAAC,EAAW,uBAAuB;KAC1C;IACD,wBAAwB;IACxB,eAAe,EAAE;QACf,SAAS,EAAE,EAAE,EAAK,6BAA6B;QAC/C,IAAI,EAAE,EAAE,EAAU,gBAAgB;QAClC,OAAO,EAAE,EAAE,EAAO,mBAAmB;KACtC;IACD,0BAA0B;IAC1B,WAAW,EAAE;QACX,SAAS,EAAE,CAAC,EAAM,gCAAgC;QAClD,IAAI,EAAE,CAAC,EAAW,cAAc;KACjC;CACF,CAAC;AAEF,+EAA+E;AAC/E,4BAA4B;AAC5B,+EAA+E;AAE/E,MAAM,OAAO,eAAe;IAC1B,QAAQ,GAAG,UAAmB,CAAC;IAE/B,KAAK,CAAC,OAAO,CAAC,IAAiB;QAC7B,MAAM,QAAQ,GAAiB,EAAE,CAAC;QAElC,oBAAoB;QACpB,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7B,QAAQ,CAAC,IAAI,CAAC;gBACZ,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,QAAQ,EAAE,MAAM;gBAChB,KAAK,EAAE,yBAAyB;gBAChC,WAAW,EAAE,kEAAkE;gBAC/E,WAAW,EAAE,CAAC;gBACd,QAAQ,EAAE,EAAE;gBACZ,eAAe,EAAE,CAAC,mDAAmD,CAAC;aACvE,CAAC,CAAC;YACH,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,sBAAsB;QACtB,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;QAChD,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC;QACjD,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC;QACpD,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;QAEhD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,8EAA8E;IAC9E,wBAAwB;IACxB,8EAA8E;IAEtE,kBAAkB,CAAC,IAAiB;QAC1C,MAAM,QAAQ,GAAiB,EAAE,CAAC;QAElC,iCAAiC;QACjC,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACpE,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC;QAE9E,iCAAiC;QACjC,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;QACrC,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChC,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;gBAChC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACtB,CAAC;QACH,CAAC;QAED,qBAAqB;QACrB,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACtE,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAClC,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACjC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACtB,CAAC;QACH,CAAC;QAED,MAAM,QAAQ,GAAsB,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACtE,IAAI,EAAE,OAAgB;YACtB,EAAE,EAAE,CAAC,CAAC,EAAE;YACR,WAAW,EAAE,cAAc,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YACjD,SAAS,EAAE,CAAC,CAAC,SAAS;SACvB,CAAC,CAAC,CAAC;QAEJ,IAAI,OAAO,IAAI,UAAU,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC;YACrD,QAAQ,CAAC,IAAI,CAAC;gBACZ,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,QAAQ,EAAE,MAAM;gBAChB,KAAK,EAAE,wBAAwB;gBAC/B,WAAW,EAAE,GAAG,UAAU,CAAC,IAAI,2BAA2B,aAAa,CAAC,MAAM,YAAY,OAAO,qCAAqC;gBACtI,UAAU,EAAE,oBAAoB;gBAChC,WAAW,EAAE,OAAO;gBACpB,YAAY,EAAE,UAAU,CAAC,gBAAgB,CAAC,SAAS;gBACnD,UAAU,EAAE,GAAG;gBACf,WAAW,EAAE,EAAE;gBACf,QAAQ;gBACR,eAAe,EAAE,EAAE;aACpB,CAAC,CAAC;QACL,CAAC;aAAM,IAAI,OAAO,IAAI,UAAU,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC;YACvD,QAAQ,CAAC,IAAI,CAAC;gBACZ,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,QAAQ,EAAE,MAAM;gBAChB,KAAK,EAAE,oBAAoB;gBAC3B,WAAW,EAAE,GAAG,UAAU,CAAC,IAAI,qBAAqB,OAAO,4DAA4D;gBACvH,UAAU,EAAE,oBAAoB;gBAChC,WAAW,EAAE,OAAO;gBACpB,YAAY,EAAE,UAAU,CAAC,gBAAgB,CAAC,IAAI;gBAC9C,UAAU,EAAE,GAAG;gBACf,WAAW,EAAE,CAAC;gBACd,QAAQ;gBACR,eAAe,EAAE,CAAC,4CAA4C,CAAC;aAChE,CAAC,CAAC;QACL,CAAC;aAAM,IAAI,OAAO,GAAG,UAAU,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC;YACzD,QAAQ,CAAC,IAAI,CAAC;gBACZ,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,QAAQ,EAAE,YAAY;gBACtB,KAAK,EAAE,wBAAwB;gBAC/B,WAAW,EAAE,QAAQ,OAAO,oFAAoF;gBAChH,UAAU,EAAE,oBAAoB;gBAChC,WAAW,EAAE,OAAO;gBACpB,YAAY,EAAE,UAAU,CAAC,gBAAgB,CAAC,IAAI;gBAC9C,UAAU,EAAE,GAAG;gBACf,WAAW,EAAE,CAAC,EAAE;gBAChB,QAAQ,EAAE,EAAE;gBACZ,eAAe,EAAE;oBACf,0CAA0C;oBAC1C,uCAAuC;oBACvC,uCAAuC;iBACxC;aACF,CAAC,CAAC;QACL,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,8EAA8E;IAC9E,yBAAyB;IACzB,8EAA8E;IAEtE,mBAAmB,CAAC,IAAiB;QAC3C,MAAM,QAAQ,GAAiB,EAAE,CAAC;QAElC,qCAAqC;QACrC,MAAM,YAAY,GAAG,IAAI,GAAG,EAAU,CAAC;QACvC,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChC,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;gBACxC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC;QAED,kCAAkC;QAClC,MAAM,sBAAsB,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,MAAM,CAAC,CAAC;QAElF,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE,sBAAsB,CAAC,MAAM,CAAC,CAAC;QAEhF,MAAM,QAAQ,GAAsB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACtE,IAAI,EAAE,SAAkB;YACxB,EAAE,EAAE,CAAC,CAAC,EAAE;YACR,WAAW,EAAE,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,UAAU,cAAc;SACtD,CAAC,CAAC,CAAC;QAEJ,IAAI,YAAY,IAAI,UAAU,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC;YACtD,QAAQ,CAAC,IAAI,CAAC;gBACZ,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,QAAQ,EAAE,MAAM;gBAChB,KAAK,EAAE,wBAAwB;gBAC/B,WAAW,EAAE,GAAG,YAAY,8EAA8E;gBAC1G,UAAU,EAAE,eAAe;gBAC3B,WAAW,EAAE,YAAY;gBACzB,YAAY,EAAE,UAAU,CAAC,YAAY,CAAC,SAAS;gBAC/C,WAAW,EAAE,EAAE;gBACf,QAAQ;gBACR,eAAe,EAAE,EAAE;aACpB,CAAC,CAAC;QACL,CAAC;aAAM,IAAI,YAAY,IAAI,UAAU,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;YACxD,QAAQ,CAAC,IAAI,CAAC;gBACZ,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,QAAQ,EAAE,MAAM;gBAChB,KAAK,EAAE,yBAAyB;gBAChC,WAAW,EAAE,GAAG,YAAY,kEAAkE;gBAC9F,UAAU,EAAE,eAAe;gBAC3B,WAAW,EAAE,YAAY;gBACzB,YAAY,EAAE,UAAU,CAAC,YAAY,CAAC,IAAI;gBAC1C,WAAW,EAAE,CAAC;gBACd,QAAQ;gBACR,eAAe,EAAE,CAAC,2CAA2C,CAAC;aAC/D,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,IAAI,CAAC;gBACZ,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,QAAQ,EAAE,YAAY;gBACtB,KAAK,EAAE,yBAAyB;gBAChC,WAAW,EAAE,QAAQ,YAAY,qEAAqE;gBACtG,UAAU,EAAE,eAAe;gBAC3B,WAAW,EAAE,YAAY;gBACzB,YAAY,EAAE,UAAU,CAAC,YAAY,CAAC,IAAI;gBAC1C,WAAW,EAAE,CAAC,CAAC;gBACf,QAAQ,EAAE,EAAE;gBACZ,eAAe,EAAE;oBACf,yDAAyD;oBACzD,yDAAyD;oBACzD,oDAAoD;iBACrD;aACF,CAAC,CAAC;QACL,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,8EAA8E;IAC9E,4BAA4B;IAC5B,8EAA8E;IAEtE,sBAAsB,CAAC,IAAiB;QAC9C,MAAM,QAAQ,GAAiB,EAAE,CAAC;QAElC,mCAAmC;QACnC,MAAM,qBAAqB,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;QACzE,IAAI,qBAAqB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvC,2CAA2C;YAC3C,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC5B,QAAQ,CAAC,IAAI,CAAC;oBACZ,QAAQ,EAAE,IAAI,CAAC,QAAQ;oBACvB,QAAQ,EAAE,MAAM;oBAChB,KAAK,EAAE,qBAAqB;oBAC5B,WAAW,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,qEAAqE;oBACxG,WAAW,EAAE,EAAE;oBACf,QAAQ,EAAE,EAAE;oBACZ,eAAe,EAAE,EAAE;iBACpB,CAAC,CAAC;YACL,CAAC;YACD,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,MAAM,eAAe,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;QACxF,MAAM,gBAAgB,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;QAC1F,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAC9B,CAAC,CAAC,gBAAgB,CAAC,GAAG,eAAe,CAAC,GAAG,GAAG,CAC7C,CAAC;QAEF,MAAM,QAAQ,GAAsB,qBAAqB,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAC9E,IAAI,EAAE,QAAiB;YACvB,EAAE,EAAE,CAAC,CAAC,EAAE;YACR,WAAW,EAAE,GAAG,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,UAAU,gBAAgB,CAAC,CAAC,WAAW,WAAW;SAClF,CAAC,CAAC,CAAC;QAEJ,IAAI,aAAa,IAAI,UAAU,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC;YAC1D,QAAQ,CAAC,IAAI,CAAC;gBACZ,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,QAAQ,EAAE,MAAM;gBAChB,KAAK,EAAE,2BAA2B;gBAClC,WAAW,EAAE,GAAG,aAAa,sEAAsE;gBACnG,UAAU,EAAE,wBAAwB;gBACpC,WAAW,EAAE,aAAa;gBAC1B,YAAY,EAAE,UAAU,CAAC,eAAe,CAAC,SAAS;gBAClD,UAAU,EAAE,GAAG;gBACf,WAAW,EAAE,EAAE;gBACf,QAAQ;gBACR,eAAe,EAAE,EAAE;aACpB,CAAC,CAAC;QACL,CAAC;aAAM,IAAI,aAAa,GAAG,UAAU,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC;YAC9D,QAAQ,CAAC,IAAI,CAAC;gBACZ,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,QAAQ,EAAE,SAAS;gBACnB,KAAK,EAAE,4BAA4B;gBACnC,WAAW,EAAE,QAAQ,aAAa,mDAAmD;gBACrF,UAAU,EAAE,wBAAwB;gBACpC,WAAW,EAAE,aAAa;gBAC1B,YAAY,EAAE,UAAU,CAAC,eAAe,CAAC,IAAI;gBAC7C,UAAU,EAAE,GAAG;gBACf,WAAW,EAAE,CAAC,EAAE;gBAChB,QAAQ;gBACR,eAAe,EAAE;oBACf,0DAA0D;oBAC1D,+CAA+C;oBAC/C,kDAAkD;iBACnD;aACF,CAAC,CAAC;QACL,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,8EAA8E;IAC9E,iCAAiC;IACjC,8EAA8E;IAEtE,kBAAkB,CAAC,IAAiB;QAC1C,MAAM,QAAQ,GAAiB,EAAE,CAAC;QAElC,sDAAsD;QACtD,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;YAC3C,IAAI,CAAC,CAAC,CAAC,SAAS;gBAAE,OAAO,KAAK,CAAC;YAC/B,OAAO,CAAC,CAAC,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;QAC1C,CAAC,CAAC,CAAC;QAEH,MAAM,eAAe,GAAG,WAAW,CAAC,MAAM,CAAC;QAE3C,MAAM,QAAQ,GAAsB,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACpE,IAAI,EAAE,SAAkB;YACxB,EAAE,EAAE,CAAC,CAAC,EAAE;YACR,WAAW,EAAE,gBAAgB,CAAC,CAAC,IAAI,EAAE;YACrC,SAAS,EAAE,CAAC,CAAC,SAAS;SACvB,CAAC,CAAC,CAAC;QAEJ,IAAI,eAAe,IAAI,UAAU,CAAC,WAAW,CAAC,SAAS,EAAE,CAAC;YACxD,QAAQ,CAAC,IAAI,CAAC;gBACZ,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,QAAQ,EAAE,MAAM;gBAChB,KAAK,EAAE,0BAA0B;gBACjC,WAAW,EAAE,GAAG,eAAe,oEAAoE;gBACnG,UAAU,EAAE,cAAc;gBAC1B,WAAW,EAAE,eAAe;gBAC5B,WAAW,EAAE,EAAE;gBACf,QAAQ;gBACR,eAAe,EAAE,EAAE;aACpB,CAAC,CAAC;QACL,CAAC;aAAM,IAAI,eAAe,IAAI,UAAU,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;YAC1D,QAAQ,CAAC,IAAI,CAAC;gBACZ,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,QAAQ,EAAE,MAAM;gBAChB,KAAK,EAAE,oBAAoB;gBAC3B,WAAW,EAAE,GAAG,eAAe,2DAA2D;gBAC1F,UAAU,EAAE,cAAc;gBAC1B,WAAW,EAAE,eAAe;gBAC5B,WAAW,EAAE,CAAC;gBACd,QAAQ;gBACR,eAAe,EAAE,EAAE;aACpB,CAAC,CAAC;QACL,CAAC;QACD,6DAA6D;QAE7D,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF;AAED,eAAe,eAAe,CAAC"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * @fileType: analyzer
3
+ * @status: current
4
+ * @updated: 2025-12-15
5
+ * @tags: [insights, analyzer, quality, tasks, commits]
6
+ * @related: [../types.ts, ../data-collector.ts]
7
+ * @priority: high
8
+ * @complexity: medium
9
+ * @dependencies: []
10
+ */
11
+ import { InsightAnalyzer, InsightData, RawInsight } from '../types.js';
12
+ export declare class QualityAnalyzer implements InsightAnalyzer {
13
+ category: "quality";
14
+ analyze(data: InsightData): Promise<RawInsight[]>;
15
+ private analyzeTaskCompletion;
16
+ private analyzeCommitFrequency;
17
+ private analyzeCommitSize;
18
+ /**
19
+ * Analyzes event logging rate instead of handoff rate.
20
+ *
21
+ * Per PATTERN-001: Sessions are ephemeral with 2-3 day validity.
22
+ * Context is preserved via defensive logging (events), not handoffs.
23
+ * Handoffs are optional - what matters is continuous event capture.
24
+ */
25
+ private analyzeHandoffQuality;
26
+ private analyzeSprintVelocity;
27
+ }
28
+ export default QualityAnalyzer;
29
+ //# sourceMappingURL=quality.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"quality.d.ts","sourceRoot":"","sources":["../../../../src/lib/insights/analyzers/quality.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EACL,eAAe,EACf,WAAW,EACX,UAAU,EAEX,MAAM,aAAa,CAAC;AAsCrB,qBAAa,eAAgB,YAAW,eAAe;IACrD,QAAQ,EAAG,SAAS,CAAU;IAExB,OAAO,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAiBvD,OAAO,CAAC,qBAAqB;IAoF7B,OAAO,CAAC,sBAAsB;IAiE9B,OAAO,CAAC,iBAAiB;IA8DzB;;;;;;OAMG;IACH,OAAO,CAAC,qBAAqB;IA+E7B,OAAO,CAAC,qBAAqB;CAsC9B;AAED,eAAe,eAAe,CAAC"}