gitcoach-cli 1.1.2 → 1.1.4

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 (51) hide show
  1. package/README.md +97 -73
  2. package/dist/analytics/index.d.ts +1 -2
  3. package/dist/analytics/index.d.ts.map +1 -1
  4. package/dist/analytics/index.js +3 -2
  5. package/dist/analytics/index.js.map +1 -1
  6. package/dist/commands/init.d.ts.map +1 -1
  7. package/dist/commands/init.js +5 -1
  8. package/dist/commands/init.js.map +1 -1
  9. package/dist/commands/quick.d.ts.map +1 -1
  10. package/dist/commands/quick.js +3 -0
  11. package/dist/commands/quick.js.map +1 -1
  12. package/dist/config/defaults.d.ts +3 -1
  13. package/dist/config/defaults.d.ts.map +1 -1
  14. package/dist/config/defaults.js +4 -2
  15. package/dist/config/defaults.js.map +1 -1
  16. package/dist/config/user-config.d.ts.map +1 -1
  17. package/dist/config/user-config.js +7 -1
  18. package/dist/config/user-config.js.map +1 -1
  19. package/dist/i18n/locales/en.json +10 -0
  20. package/dist/i18n/locales/es.json +10 -0
  21. package/dist/i18n/locales/fr.json +10 -0
  22. package/dist/index.d.ts +0 -1
  23. package/dist/index.d.ts.map +1 -1
  24. package/dist/index.js +0 -1
  25. package/dist/index.js.map +1 -1
  26. package/dist/services/analysis-service.js +7 -7
  27. package/dist/services/analysis-service.js.map +1 -1
  28. package/dist/services/copilot-service.d.ts +2 -0
  29. package/dist/services/copilot-service.d.ts.map +1 -1
  30. package/dist/services/copilot-service.js +18 -0
  31. package/dist/services/copilot-service.js.map +1 -1
  32. package/dist/services/prevention-service.d.ts.map +1 -1
  33. package/dist/services/prevention-service.js +0 -8
  34. package/dist/services/prevention-service.js.map +1 -1
  35. package/dist/ui/menus/branch-menu.d.ts.map +1 -1
  36. package/dist/ui/menus/branch-menu.js +3 -0
  37. package/dist/ui/menus/branch-menu.js.map +1 -1
  38. package/dist/ui/menus/push-menu.d.ts.map +1 -1
  39. package/dist/ui/menus/push-menu.js +4 -0
  40. package/dist/ui/menus/push-menu.js.map +1 -1
  41. package/dist/utils/version.d.ts +1 -1
  42. package/dist/utils/version.js +1 -1
  43. package/package.json +2 -2
  44. package/dist/analytics/stats-calculator.d.ts +0 -24
  45. package/dist/analytics/stats-calculator.d.ts.map +0 -1
  46. package/dist/analytics/stats-calculator.js +0 -135
  47. package/dist/analytics/stats-calculator.js.map +0 -1
  48. package/dist/analytics/tracker.d.ts +0 -36
  49. package/dist/analytics/tracker.d.ts.map +0 -1
  50. package/dist/analytics/tracker.js +0 -103
  51. package/dist/analytics/tracker.js.map +0 -1
@@ -1,135 +0,0 @@
1
- import { tracker } from './tracker.js';
2
- class StatsCalculator {
3
- calculateUsageStats() {
4
- const summary = tracker.getSummary();
5
- const events = tracker.getRecentEvents(1000);
6
- const totalOperations = summary.totalCommits +
7
- summary.totalPushes +
8
- summary.totalPulls +
9
- summary.branchesCreated +
10
- summary.branchesSwitched;
11
- // Calculate most used operation
12
- const operationCounts = {
13
- commits: summary.totalCommits,
14
- pushes: summary.totalPushes,
15
- pulls: summary.totalPulls,
16
- branches: summary.branchesCreated + summary.branchesSwitched
17
- };
18
- const mostUsedOperation = Object.entries(operationCounts)
19
- .sort(([, a], [, b]) => b - a)[0]?.[0] || 'none';
20
- // Calculate days active
21
- const firstUsed = new Date(summary.firstUsed);
22
- const lastUsed = new Date(summary.lastUsed);
23
- const daysActive = Math.max(1, Math.ceil((lastUsed.getTime() - firstUsed.getTime()) / (1000 * 60 * 60 * 24)));
24
- // Average operations per day
25
- const averageOperationsPerDay = totalOperations / daysActive;
26
- // Calculate streak (consecutive days)
27
- const streakDays = this.calculateStreak(events);
28
- // Peak hour analysis
29
- const peakHour = this.calculatePeakHour(events);
30
- // Error prevention rate (errors prevented vs total operations)
31
- const errorPreventionRate = totalOperations > 0
32
- ? (summary.errorsPrevented / totalOperations) * 100
33
- : 0;
34
- // AI assistance rate
35
- const aiAssistanceRate = summary.totalCommits > 0
36
- ? (summary.aiCommitsGenerated / summary.totalCommits) * 100
37
- : 0;
38
- return {
39
- totalOperations,
40
- mostUsedOperation,
41
- averageOperationsPerDay: Math.round(averageOperationsPerDay * 10) / 10,
42
- daysActive,
43
- streakDays,
44
- peakHour,
45
- errorPreventionRate: Math.round(errorPreventionRate),
46
- aiAssistanceRate: Math.round(aiAssistanceRate)
47
- };
48
- }
49
- calculateTimeStats() {
50
- const summary = tracker.getSummary();
51
- // Estimated time saved calculations (in minutes):
52
- // - Each error prevented: ~5 minutes (debugging time saved)
53
- // - Each AI commit message: ~1 minute (thinking time saved)
54
- // - Each branch operation: ~0.5 minutes (navigation time saved)
55
- const timeSavedFromErrors = summary.errorsPrevented * 5;
56
- const timeSavedFromAI = summary.aiCommitsGenerated * 1;
57
- const timeSavedFromBranches = (summary.branchesCreated + summary.branchesSwitched) * 0.5;
58
- const estimatedTimeSaved = timeSavedFromErrors + timeSavedFromAI + timeSavedFromBranches;
59
- return {
60
- estimatedTimeSaved: Math.round(estimatedTimeSaved),
61
- timeByOperation: {
62
- errorPrevention: timeSavedFromErrors,
63
- aiAssistance: timeSavedFromAI,
64
- branchManagement: timeSavedFromBranches
65
- }
66
- };
67
- }
68
- calculateStreak(events) {
69
- if (events.length === 0)
70
- return 0;
71
- // Group events by day
72
- const daySet = new Set();
73
- for (const event of events) {
74
- const day = event.timestamp.substring(0, 10); // YYYY-MM-DD
75
- daySet.add(day);
76
- }
77
- const days = Array.from(daySet).sort().reverse();
78
- if (days.length === 0)
79
- return 0;
80
- let streak = 1;
81
- const today = new Date().toISOString().substring(0, 10);
82
- // Check if used today or yesterday
83
- if (days[0] !== today) {
84
- const yesterday = new Date(Date.now() - 86400000).toISOString().substring(0, 10);
85
- if (days[0] !== yesterday) {
86
- return 0; // Streak broken
87
- }
88
- }
89
- // Count consecutive days
90
- for (let i = 1; i < days.length; i++) {
91
- const prevDate = new Date(days[i - 1]);
92
- const currDate = new Date(days[i]);
93
- const diffDays = (prevDate.getTime() - currDate.getTime()) / (1000 * 60 * 60 * 24);
94
- if (diffDays === 1) {
95
- streak++;
96
- }
97
- else {
98
- break;
99
- }
100
- }
101
- return streak;
102
- }
103
- calculatePeakHour(events) {
104
- if (events.length === 0)
105
- return 12; // Default to noon
106
- const hourCounts = new Array(24).fill(0);
107
- for (const event of events) {
108
- const hour = new Date(event.timestamp).getHours();
109
- hourCounts[hour]++;
110
- }
111
- let maxCount = 0;
112
- let peakHour = 12;
113
- for (let i = 0; i < 24; i++) {
114
- if (hourCounts[i] > maxCount) {
115
- maxCount = hourCounts[i];
116
- peakHour = i;
117
- }
118
- }
119
- return peakHour;
120
- }
121
- formatTimeSaved(minutes) {
122
- if (minutes < 60) {
123
- return `${minutes} minute${minutes !== 1 ? 's' : ''}`;
124
- }
125
- const hours = Math.floor(minutes / 60);
126
- const remainingMinutes = minutes % 60;
127
- if (remainingMinutes === 0) {
128
- return `${hours} hour${hours !== 1 ? 's' : ''}`;
129
- }
130
- return `${hours}h ${remainingMinutes}m`;
131
- }
132
- }
133
- export const statsCalculator = new StatsCalculator();
134
- export default statsCalculator;
135
- //# sourceMappingURL=stats-calculator.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"stats-calculator.js","sourceRoot":"","sources":["../../src/analytics/stats-calculator.ts"],"names":[],"mappings":"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"}
@@ -1,36 +0,0 @@
1
- export type EventType = 'commit' | 'push' | 'pull' | 'branch_create' | 'branch_switch' | 'branch_delete' | 'error_prevented' | 'ai_commit_generated' | 'config_changed';
2
- export interface AnalyticsEvent {
3
- type: EventType;
4
- timestamp: string;
5
- details?: Record<string, unknown>;
6
- }
7
- export interface AnalyticsData {
8
- events: AnalyticsEvent[];
9
- summary: {
10
- totalCommits: number;
11
- totalPushes: number;
12
- totalPulls: number;
13
- branchesCreated: number;
14
- branchesSwitched: number;
15
- branchesDeleted: number;
16
- errorsPrevented: number;
17
- aiCommitsGenerated: number;
18
- firstUsed: string;
19
- lastUsed: string;
20
- };
21
- }
22
- declare class AnalyticsTracker {
23
- private maxEvents;
24
- trackEvent(type: EventType, details?: Record<string, unknown>): void;
25
- private updateSummary;
26
- getSummary(): AnalyticsData['summary'];
27
- getRecentEvents(limit?: number): AnalyticsEvent[];
28
- getEventsByType(type: EventType, limit?: number): AnalyticsEvent[];
29
- getEventCountByType(): Record<EventType, number>;
30
- clearHistory(): void;
31
- reset(): void;
32
- getDataPath(): string;
33
- }
34
- export declare const tracker: AnalyticsTracker;
35
- export default tracker;
36
- //# sourceMappingURL=tracker.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tracker.d.ts","sourceRoot":"","sources":["../../src/analytics/tracker.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,SAAS,GACjB,QAAQ,GACR,MAAM,GACN,MAAM,GACN,eAAe,GACf,eAAe,GACf,eAAe,GACf,iBAAiB,GACjB,qBAAqB,GACrB,gBAAgB,CAAC;AAErB,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,SAAS,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,cAAc,EAAE,CAAC;IACzB,OAAO,EAAE;QACP,YAAY,EAAE,MAAM,CAAC;QACrB,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,EAAE,MAAM,CAAC;QACnB,eAAe,EAAE,MAAM,CAAC;QACxB,gBAAgB,EAAE,MAAM,CAAC;QACzB,eAAe,EAAE,MAAM,CAAC;QACxB,eAAe,EAAE,MAAM,CAAC;QACxB,kBAAkB,EAAE,MAAM,CAAC;QAC3B,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;CACH;AAwBD,cAAM,gBAAgB;IACpB,OAAO,CAAC,SAAS,CAAQ;IAEzB,UAAU,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAsBpE,OAAO,CAAC,aAAa;IAkCrB,UAAU,IAAI,aAAa,CAAC,SAAS,CAAC;IAItC,eAAe,CAAC,KAAK,GAAE,MAAW,GAAG,cAAc,EAAE;IAKrD,eAAe,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,GAAE,MAAW,GAAG,cAAc,EAAE;IAKtE,mBAAmB,IAAI,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC;IAWhD,YAAY,IAAI,IAAI;IAIpB,KAAK,IAAI,IAAI;IAIb,WAAW,IAAI,MAAM;CAGtB;AAED,eAAO,MAAM,OAAO,kBAAyB,CAAC;AAC9C,eAAe,OAAO,CAAC"}
@@ -1,103 +0,0 @@
1
- import Conf from 'conf';
2
- const DEFAULT_ANALYTICS = {
3
- events: [],
4
- summary: {
5
- totalCommits: 0,
6
- totalPushes: 0,
7
- totalPulls: 0,
8
- branchesCreated: 0,
9
- branchesSwitched: 0,
10
- branchesDeleted: 0,
11
- errorsPrevented: 0,
12
- aiCommitsGenerated: 0,
13
- firstUsed: new Date().toISOString(),
14
- lastUsed: new Date().toISOString()
15
- }
16
- };
17
- const analyticsStore = new Conf({
18
- projectName: 'gitcoach',
19
- configName: 'analytics',
20
- defaults: DEFAULT_ANALYTICS
21
- });
22
- class AnalyticsTracker {
23
- maxEvents = 1000; // Keep last 1000 events to prevent file from growing too large
24
- trackEvent(type, details) {
25
- const event = {
26
- type,
27
- timestamp: new Date().toISOString(),
28
- details
29
- };
30
- // Add event to history
31
- const events = analyticsStore.get('events', []);
32
- events.push(event);
33
- // Trim events if exceeds max
34
- if (events.length > this.maxEvents) {
35
- events.splice(0, events.length - this.maxEvents);
36
- }
37
- analyticsStore.set('events', events);
38
- // Update summary
39
- this.updateSummary(type);
40
- }
41
- updateSummary(type) {
42
- const summary = analyticsStore.get('summary', DEFAULT_ANALYTICS.summary);
43
- switch (type) {
44
- case 'commit':
45
- summary.totalCommits++;
46
- break;
47
- case 'push':
48
- summary.totalPushes++;
49
- break;
50
- case 'pull':
51
- summary.totalPulls++;
52
- break;
53
- case 'branch_create':
54
- summary.branchesCreated++;
55
- break;
56
- case 'branch_switch':
57
- summary.branchesSwitched++;
58
- break;
59
- case 'branch_delete':
60
- summary.branchesDeleted++;
61
- break;
62
- case 'error_prevented':
63
- summary.errorsPrevented++;
64
- break;
65
- case 'ai_commit_generated':
66
- summary.aiCommitsGenerated++;
67
- break;
68
- }
69
- summary.lastUsed = new Date().toISOString();
70
- analyticsStore.set('summary', summary);
71
- }
72
- getSummary() {
73
- return analyticsStore.get('summary', DEFAULT_ANALYTICS.summary);
74
- }
75
- getRecentEvents(limit = 50) {
76
- const events = analyticsStore.get('events', []);
77
- return events.slice(-limit);
78
- }
79
- getEventsByType(type, limit = 50) {
80
- const events = analyticsStore.get('events', []);
81
- return events.filter(e => e.type === type).slice(-limit);
82
- }
83
- getEventCountByType() {
84
- const events = analyticsStore.get('events', []);
85
- const counts = {};
86
- for (const event of events) {
87
- counts[event.type] = (counts[event.type] || 0) + 1;
88
- }
89
- return counts;
90
- }
91
- clearHistory() {
92
- analyticsStore.set('events', []);
93
- }
94
- reset() {
95
- analyticsStore.clear();
96
- }
97
- getDataPath() {
98
- return analyticsStore.path;
99
- }
100
- }
101
- export const tracker = new AnalyticsTracker();
102
- export default tracker;
103
- //# sourceMappingURL=tracker.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tracker.js","sourceRoot":"","sources":["../../src/analytics/tracker.ts"],"names":[],"mappings":"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"}