@ginkoai/cli 1.7.1 → 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.
- package/README.md +32 -0
- package/dist/commands/graph/api-client.d.ts +53 -0
- package/dist/commands/graph/api-client.d.ts.map +1 -1
- package/dist/commands/graph/api-client.js +10 -0
- package/dist/commands/graph/api-client.js.map +1 -1
- package/dist/commands/insights/index.d.ts +12 -0
- package/dist/commands/insights/index.d.ts.map +1 -0
- package/dist/commands/insights/index.js +12 -0
- package/dist/commands/insights/index.js.map +1 -0
- package/dist/commands/insights/insights-command.d.ts +20 -0
- package/dist/commands/insights/insights-command.d.ts.map +1 -0
- package/dist/commands/insights/insights-command.js +331 -0
- package/dist/commands/insights/insights-command.js.map +1 -0
- package/dist/commands/start/start-reflection.d.ts +6 -0
- package/dist/commands/start/start-reflection.d.ts.map +1 -1
- package/dist/commands/start/start-reflection.js +141 -2
- package/dist/commands/start/start-reflection.js.map +1 -1
- package/dist/index.js +30 -0
- package/dist/index.js.map +1 -1
- package/dist/lib/insights/analyzers/anti-patterns.d.ts +32 -0
- package/dist/lib/insights/analyzers/anti-patterns.d.ts.map +1 -0
- package/dist/lib/insights/analyzers/anti-patterns.js +302 -0
- package/dist/lib/insights/analyzers/anti-patterns.js.map +1 -0
- package/dist/lib/insights/analyzers/efficiency.d.ts +22 -0
- package/dist/lib/insights/analyzers/efficiency.d.ts.map +1 -0
- package/dist/lib/insights/analyzers/efficiency.js +311 -0
- package/dist/lib/insights/analyzers/efficiency.js.map +1 -0
- package/dist/lib/insights/analyzers/index.d.ts +24 -0
- package/dist/lib/insights/analyzers/index.d.ts.map +1 -0
- package/dist/lib/insights/analyzers/index.js +37 -0
- package/dist/lib/insights/analyzers/index.js.map +1 -0
- package/dist/lib/insights/analyzers/patterns.d.ts +21 -0
- package/dist/lib/insights/analyzers/patterns.d.ts.map +1 -0
- package/dist/lib/insights/analyzers/patterns.js +327 -0
- package/dist/lib/insights/analyzers/patterns.js.map +1 -0
- package/dist/lib/insights/analyzers/quality.d.ts +29 -0
- package/dist/lib/insights/analyzers/quality.d.ts.map +1 -0
- package/dist/lib/insights/analyzers/quality.js +366 -0
- package/dist/lib/insights/analyzers/quality.js.map +1 -0
- package/dist/lib/insights/data-collector.d.ts +68 -0
- package/dist/lib/insights/data-collector.d.ts.map +1 -0
- package/dist/lib/insights/data-collector.js +467 -0
- package/dist/lib/insights/data-collector.js.map +1 -0
- package/dist/lib/insights/index.d.ts +14 -0
- package/dist/lib/insights/index.d.ts.map +1 -0
- package/dist/lib/insights/index.js +17 -0
- package/dist/lib/insights/index.js.map +1 -0
- package/dist/lib/insights/types.d.ts +216 -0
- package/dist/lib/insights/types.d.ts.map +1 -0
- package/dist/lib/insights/types.js +12 -0
- package/dist/lib/insights/types.js.map +1 -0
- package/dist/lib/sprint-loader.d.ts.map +1 -1
- package/dist/lib/sprint-loader.js +9 -0
- package/dist/lib/sprint-loader.js.map +1 -1
- package/dist/templates/ai-instructions-template.d.ts +1 -0
- package/dist/templates/ai-instructions-template.d.ts.map +1 -1
- package/dist/templates/ai-instructions-template.js +51 -0
- package/dist/templates/ai-instructions-template.js.map +1 -1
- 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":"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"}
|
|
@@ -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"}
|