@codemieai/code 0.0.11 → 0.0.13

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 (205) hide show
  1. package/README.md +70 -861
  2. package/dist/agents/codemie-code/agent.d.ts.map +1 -1
  3. package/dist/agents/codemie-code/agent.js +35 -4
  4. package/dist/agents/codemie-code/agent.js.map +1 -1
  5. package/dist/agents/codemie-code/tools/index.d.ts.map +1 -1
  6. package/dist/agents/codemie-code/tools/index.js +5 -3
  7. package/dist/agents/codemie-code/tools/index.js.map +1 -1
  8. package/dist/agents/core/AgentCLI.d.ts.map +1 -1
  9. package/dist/agents/core/AgentCLI.js +57 -11
  10. package/dist/agents/core/AgentCLI.js.map +1 -1
  11. package/dist/agents/core/BaseAgentAdapter.d.ts +4 -4
  12. package/dist/agents/core/BaseAgentAdapter.d.ts.map +1 -1
  13. package/dist/agents/core/BaseAgentAdapter.js +59 -23
  14. package/dist/agents/core/BaseAgentAdapter.js.map +1 -1
  15. package/dist/agents/core/types.d.ts +18 -0
  16. package/dist/agents/core/types.d.ts.map +1 -1
  17. package/dist/agents/plugins/claude.plugin.d.ts +0 -3
  18. package/dist/agents/plugins/claude.plugin.d.ts.map +1 -1
  19. package/dist/agents/plugins/claude.plugin.js +12 -1
  20. package/dist/agents/plugins/claude.plugin.js.map +1 -1
  21. package/dist/agents/plugins/codemie-code.plugin.js +1 -1
  22. package/dist/agents/plugins/codemie-code.plugin.js.map +1 -1
  23. package/dist/agents/plugins/codex.plugin.d.ts.map +1 -1
  24. package/dist/agents/plugins/codex.plugin.js +40 -4
  25. package/dist/agents/plugins/codex.plugin.js.map +1 -1
  26. package/dist/agents/plugins/gemini.plugin.d.ts.map +1 -1
  27. package/dist/agents/plugins/gemini.plugin.js +51 -6
  28. package/dist/agents/plugins/gemini.plugin.js.map +1 -1
  29. package/dist/agents/registry.d.ts +15 -2
  30. package/dist/agents/registry.d.ts.map +1 -1
  31. package/dist/agents/registry.js +30 -6
  32. package/dist/agents/registry.js.map +1 -1
  33. package/dist/analytics/aggregation/adapters/claude.adapter.d.ts +37 -0
  34. package/dist/analytics/aggregation/adapters/claude.adapter.d.ts.map +1 -0
  35. package/dist/analytics/aggregation/adapters/claude.adapter.js +471 -0
  36. package/dist/analytics/aggregation/adapters/claude.adapter.js.map +1 -0
  37. package/dist/analytics/aggregation/adapters/codex.adapter.d.ts +25 -0
  38. package/dist/analytics/aggregation/adapters/codex.adapter.d.ts.map +1 -0
  39. package/dist/analytics/aggregation/adapters/codex.adapter.js +376 -0
  40. package/dist/analytics/aggregation/adapters/codex.adapter.js.map +1 -0
  41. package/dist/analytics/aggregation/adapters/gemini.adapter.d.ts +28 -0
  42. package/dist/analytics/aggregation/adapters/gemini.adapter.d.ts.map +1 -0
  43. package/dist/analytics/aggregation/adapters/gemini.adapter.js +320 -0
  44. package/dist/analytics/aggregation/adapters/gemini.adapter.js.map +1 -0
  45. package/dist/analytics/aggregation/adapters/index.d.ts +7 -0
  46. package/dist/analytics/aggregation/adapters/index.d.ts.map +1 -0
  47. package/dist/analytics/aggregation/adapters/index.js +7 -0
  48. package/dist/analytics/aggregation/adapters/index.js.map +1 -0
  49. package/dist/analytics/aggregation/aggregator.d.ts +49 -0
  50. package/dist/analytics/aggregation/aggregator.d.ts.map +1 -0
  51. package/dist/analytics/aggregation/aggregator.js +239 -0
  52. package/dist/analytics/aggregation/aggregator.js.map +1 -0
  53. package/dist/analytics/aggregation/core/BaseAnalyticsAdapter.d.ts +63 -0
  54. package/dist/analytics/aggregation/core/BaseAnalyticsAdapter.d.ts.map +1 -0
  55. package/dist/analytics/aggregation/core/BaseAnalyticsAdapter.js +58 -0
  56. package/dist/analytics/aggregation/core/BaseAnalyticsAdapter.js.map +1 -0
  57. package/dist/analytics/aggregation/core/adapter.interface.d.ts +65 -0
  58. package/dist/analytics/aggregation/core/adapter.interface.d.ts.map +1 -0
  59. package/dist/analytics/aggregation/core/adapter.interface.js +9 -0
  60. package/dist/analytics/aggregation/core/adapter.interface.js.map +1 -0
  61. package/dist/analytics/aggregation/core/aggregation-utils.d.ts +66 -0
  62. package/dist/analytics/aggregation/core/aggregation-utils.d.ts.map +1 -0
  63. package/dist/analytics/aggregation/core/aggregation-utils.js +83 -0
  64. package/dist/analytics/aggregation/core/aggregation-utils.js.map +1 -0
  65. package/dist/analytics/aggregation/core/discovery.d.ts +40 -0
  66. package/dist/analytics/aggregation/core/discovery.d.ts.map +1 -0
  67. package/dist/analytics/aggregation/core/discovery.js +132 -0
  68. package/dist/analytics/aggregation/core/discovery.js.map +1 -0
  69. package/dist/analytics/aggregation/core/file-utils.d.ts +23 -0
  70. package/dist/analytics/aggregation/core/file-utils.d.ts.map +1 -0
  71. package/dist/analytics/aggregation/core/file-utils.js +208 -0
  72. package/dist/analytics/aggregation/core/file-utils.js.map +1 -0
  73. package/dist/analytics/aggregation/core/index.d.ts +11 -0
  74. package/dist/analytics/aggregation/core/index.d.ts.map +1 -0
  75. package/dist/analytics/aggregation/core/index.js +11 -0
  76. package/dist/analytics/aggregation/core/index.js.map +1 -0
  77. package/dist/analytics/aggregation/core/project-mapping.d.ts +50 -0
  78. package/dist/analytics/aggregation/core/project-mapping.d.ts.map +1 -0
  79. package/dist/analytics/aggregation/core/project-mapping.js +102 -0
  80. package/dist/analytics/aggregation/core/project-mapping.js.map +1 -0
  81. package/dist/analytics/aggregation/core/streaming.d.ts +26 -0
  82. package/dist/analytics/aggregation/core/streaming.d.ts.map +1 -0
  83. package/dist/analytics/aggregation/core/streaming.js +58 -0
  84. package/dist/analytics/aggregation/core/streaming.js.map +1 -0
  85. package/dist/analytics/aggregation/index.d.ts +8 -0
  86. package/dist/analytics/aggregation/index.d.ts.map +1 -0
  87. package/dist/analytics/aggregation/index.js +8 -0
  88. package/dist/analytics/aggregation/index.js.map +1 -0
  89. package/dist/analytics/aggregation/types.d.ts +258 -0
  90. package/dist/analytics/aggregation/types.d.ts.map +1 -0
  91. package/dist/analytics/aggregation/types.js +8 -0
  92. package/dist/analytics/aggregation/types.js.map +1 -0
  93. package/dist/analytics/collector.d.ts +46 -0
  94. package/dist/analytics/collector.d.ts.map +1 -0
  95. package/dist/analytics/collector.js +83 -0
  96. package/dist/analytics/collector.js.map +1 -0
  97. package/dist/analytics/config.d.ts +15 -0
  98. package/dist/analytics/config.d.ts.map +1 -0
  99. package/dist/analytics/config.js +65 -0
  100. package/dist/analytics/config.js.map +1 -0
  101. package/dist/analytics/index.d.ts +99 -0
  102. package/dist/analytics/index.d.ts.map +1 -0
  103. package/dist/analytics/index.js +288 -0
  104. package/dist/analytics/index.js.map +1 -0
  105. package/dist/analytics/plugins/api-metrics.plugin.d.ts +26 -0
  106. package/dist/analytics/plugins/api-metrics.plugin.d.ts.map +1 -0
  107. package/dist/analytics/plugins/api-metrics.plugin.js +97 -0
  108. package/dist/analytics/plugins/api-metrics.plugin.js.map +1 -0
  109. package/dist/analytics/plugins/index.d.ts +15 -0
  110. package/dist/analytics/plugins/index.d.ts.map +1 -0
  111. package/dist/analytics/plugins/index.js +15 -0
  112. package/dist/analytics/plugins/index.js.map +1 -0
  113. package/dist/analytics/plugins/model-metrics.plugin.d.ts +39 -0
  114. package/dist/analytics/plugins/model-metrics.plugin.d.ts.map +1 -0
  115. package/dist/analytics/plugins/model-metrics.plugin.js +105 -0
  116. package/dist/analytics/plugins/model-metrics.plugin.js.map +1 -0
  117. package/dist/analytics/plugins/provider-metrics.plugin.d.ts +41 -0
  118. package/dist/analytics/plugins/provider-metrics.plugin.d.ts.map +1 -0
  119. package/dist/analytics/plugins/provider-metrics.plugin.js +123 -0
  120. package/dist/analytics/plugins/provider-metrics.plugin.js.map +1 -0
  121. package/dist/analytics/plugins/types.d.ts +61 -0
  122. package/dist/analytics/plugins/types.d.ts.map +1 -0
  123. package/dist/analytics/plugins/types.js +54 -0
  124. package/dist/analytics/plugins/types.js.map +1 -0
  125. package/dist/analytics/privacy.d.ts +10 -0
  126. package/dist/analytics/privacy.d.ts.map +1 -0
  127. package/dist/analytics/privacy.js +20 -0
  128. package/dist/analytics/privacy.js.map +1 -0
  129. package/dist/analytics/session.d.ts +56 -0
  130. package/dist/analytics/session.d.ts.map +1 -0
  131. package/dist/analytics/session.js +95 -0
  132. package/dist/analytics/session.js.map +1 -0
  133. package/dist/analytics/types.d.ts +104 -0
  134. package/dist/analytics/types.d.ts.map +1 -0
  135. package/dist/analytics/types.js +15 -0
  136. package/dist/analytics/types.js.map +1 -0
  137. package/dist/analytics/writer.d.ts +18 -0
  138. package/dist/analytics/writer.d.ts.map +1 -0
  139. package/dist/analytics/writer.js +44 -0
  140. package/dist/analytics/writer.js.map +1 -0
  141. package/dist/cli/commands/analytics.d.ts +3 -0
  142. package/dist/cli/commands/analytics.d.ts.map +1 -0
  143. package/dist/cli/commands/analytics.js +579 -0
  144. package/dist/cli/commands/analytics.js.map +1 -0
  145. package/dist/cli/commands/config.d.ts.map +1 -1
  146. package/dist/cli/commands/config.js +14 -0
  147. package/dist/cli/commands/config.js.map +1 -1
  148. package/dist/cli/commands/profile.d.ts.map +1 -1
  149. package/dist/cli/commands/profile.js +41 -0
  150. package/dist/cli/commands/profile.js.map +1 -1
  151. package/dist/cli/commands/setup.js +70 -1
  152. package/dist/cli/commands/setup.js.map +1 -1
  153. package/dist/cli/index.js +2 -0
  154. package/dist/cli/index.js.map +1 -1
  155. package/dist/env/types.d.ts +2 -0
  156. package/dist/env/types.d.ts.map +1 -1
  157. package/dist/env/types.js.map +1 -1
  158. package/dist/utils/analytics-reader.d.ts +117 -0
  159. package/dist/utils/analytics-reader.d.ts.map +1 -0
  160. package/dist/utils/analytics-reader.js +421 -0
  161. package/dist/utils/analytics-reader.js.map +1 -0
  162. package/dist/utils/codemie-integration-validator.d.ts.map +1 -1
  163. package/dist/utils/codemie-integration-validator.js +3 -16
  164. package/dist/utils/codemie-integration-validator.js.map +1 -1
  165. package/dist/utils/codemie-proxy.d.ts +80 -0
  166. package/dist/utils/codemie-proxy.d.ts.map +1 -0
  167. package/dist/utils/codemie-proxy.js +348 -0
  168. package/dist/utils/codemie-proxy.js.map +1 -0
  169. package/dist/utils/config-loader.d.ts +7 -0
  170. package/dist/utils/config-loader.d.ts.map +1 -1
  171. package/dist/utils/config-loader.js +18 -0
  172. package/dist/utils/config-loader.js.map +1 -1
  173. package/dist/utils/date-formatter.d.ts +88 -0
  174. package/dist/utils/date-formatter.d.ts.map +1 -0
  175. package/dist/utils/date-formatter.js +133 -0
  176. package/dist/utils/date-formatter.js.map +1 -0
  177. package/dist/utils/installation-id.d.ts +10 -0
  178. package/dist/utils/installation-id.d.ts.map +1 -0
  179. package/dist/utils/installation-id.js +30 -0
  180. package/dist/utils/installation-id.js.map +1 -0
  181. package/dist/utils/logger.d.ts +1 -15
  182. package/dist/utils/logger.d.ts.map +1 -1
  183. package/dist/utils/logger.js +5 -86
  184. package/dist/utils/logger.js.map +1 -1
  185. package/dist/utils/proxy/errors.d.ts +45 -0
  186. package/dist/utils/proxy/errors.d.ts.map +1 -0
  187. package/dist/utils/proxy/errors.js +103 -0
  188. package/dist/utils/proxy/errors.js.map +1 -0
  189. package/dist/utils/proxy/http-client.d.ts +46 -0
  190. package/dist/utils/proxy/http-client.d.ts.map +1 -0
  191. package/dist/utils/proxy/http-client.js +139 -0
  192. package/dist/utils/proxy/http-client.js.map +1 -0
  193. package/dist/utils/proxy/interceptors.d.ts +69 -0
  194. package/dist/utils/proxy/interceptors.d.ts.map +1 -0
  195. package/dist/utils/proxy/interceptors.js +308 -0
  196. package/dist/utils/proxy/interceptors.js.map +1 -0
  197. package/dist/utils/proxy/types.d.ts +45 -0
  198. package/dist/utils/proxy/types.d.ts.map +1 -0
  199. package/dist/utils/proxy/types.js +7 -0
  200. package/dist/utils/proxy/types.js.map +1 -0
  201. package/package.json +43 -6
  202. package/dist/utils/sso-gateway.d.ts +0 -75
  203. package/dist/utils/sso-gateway.d.ts.map +0 -1
  204. package/dist/utils/sso-gateway.js +0 -453
  205. package/dist/utils/sso-gateway.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analytics.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/analytics.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASpC,wBAAgB,sBAAsB,IAAI,OAAO,CAuChD"}
@@ -0,0 +1,579 @@
1
+ import { Command } from 'commander';
2
+ import chalk from 'chalk';
3
+ import Table from 'cli-table3';
4
+ import { loadAnalyticsConfig } from '../../analytics/config.js';
5
+ import { logger } from '../../utils/logger.js';
6
+ import { AgentRegistry } from '../../agents/registry.js';
7
+ import { ConfigLoader } from '../../utils/config-loader.js';
8
+ import { CodemieAnalyticsAggregator } from '../../analytics/aggregation/index.js';
9
+ export function createAnalyticsCommand() {
10
+ const command = new Command('analytics');
11
+ command
12
+ .description('Analytics management and insights')
13
+ .action(async () => {
14
+ try {
15
+ const config = loadAnalyticsConfig();
16
+ // Show configuration
17
+ console.log(chalk.bold.cyan('\n📊 Analytics Configuration\n'));
18
+ console.log(chalk.cyan('Status: ') + (config.enabled ? chalk.green('Enabled') : chalk.red('Disabled')));
19
+ console.log(chalk.cyan('Target: ') + chalk.white(config.target));
20
+ console.log(chalk.cyan('Local Path: ') + chalk.white(config.localPath));
21
+ if (config.remoteEndpoint) {
22
+ console.log(chalk.cyan('Remote Endpoint: ') + chalk.white(config.remoteEndpoint));
23
+ }
24
+ console.log(chalk.cyan('Flush Interval: ') + chalk.white(`${config.flushInterval}ms`));
25
+ console.log(chalk.cyan('Buffer Size: ') + chalk.white(`${config.maxBufferSize} events`));
26
+ // Show help
27
+ console.log(chalk.bold.cyan('\n📋 Available Commands\n'));
28
+ console.log(chalk.white(' codemie analytics enable ') + chalk.gray('Enable analytics collection'));
29
+ console.log(chalk.white(' codemie analytics disable ') + chalk.gray('Disable analytics collection'));
30
+ console.log(chalk.white(' codemie analytics show ') + chalk.gray('Show analytics from all agents'));
31
+ console.log();
32
+ }
33
+ catch (error) {
34
+ logger.error('Failed to show analytics configuration:', error);
35
+ process.exit(1);
36
+ }
37
+ })
38
+ .addCommand(createEnableCommand())
39
+ .addCommand(createDisableCommand())
40
+ .addCommand(createShowCommand());
41
+ return command;
42
+ }
43
+ function createEnableCommand() {
44
+ const command = new Command('enable');
45
+ command
46
+ .description('Enable analytics collection')
47
+ .action(async () => {
48
+ try {
49
+ await updateAnalyticsEnabled(true);
50
+ logger.success('Analytics enabled');
51
+ console.log(chalk.white('Analytics data will be collected to:'));
52
+ console.log(chalk.cyan(' ~/.codemie/analytics/'));
53
+ console.log();
54
+ }
55
+ catch (error) {
56
+ logger.error('Failed to enable analytics:', error);
57
+ process.exit(1);
58
+ }
59
+ });
60
+ return command;
61
+ }
62
+ function createDisableCommand() {
63
+ const command = new Command('disable');
64
+ command
65
+ .description('Disable analytics collection')
66
+ .action(async () => {
67
+ try {
68
+ await updateAnalyticsEnabled(false);
69
+ logger.success('Analytics disabled');
70
+ console.log(chalk.white('No analytics data will be collected.'));
71
+ console.log();
72
+ }
73
+ catch (error) {
74
+ logger.error('Failed to disable analytics:', error);
75
+ process.exit(1);
76
+ }
77
+ });
78
+ return command;
79
+ }
80
+ function createShowCommand() {
81
+ const command = new Command('show');
82
+ command
83
+ .description('Show analytics from all agents (Gemini, Claude, Codex, etc.)')
84
+ .option('--from <date>', 'Start date (YYYY-MM-DD)')
85
+ .option('--to <date>', 'End date (YYYY-MM-DD)')
86
+ .option('--agent <name>', 'Filter by agent (gemini|claude|codex|codemie-code)')
87
+ .option('--project <path>', 'Filter by project path')
88
+ .option('--format <format>', 'Output format (json|table)', 'table')
89
+ .option('--output <file>', 'Output file (for JSON format)')
90
+ .action(async (options) => {
91
+ try {
92
+ // Check if analytics is disabled
93
+ const config = loadAnalyticsConfig();
94
+ if (!config.enabled) {
95
+ console.log(chalk.yellow('\nAnalytics is disabled. No data is being collected.\n'));
96
+ return;
97
+ }
98
+ console.log(chalk.bold.cyan('\n📊 CodeMie Analytics Aggregation\n'));
99
+ // Parse dates
100
+ const dateFrom = options.from ? new Date(options.from) : undefined;
101
+ const dateTo = options.to ? new Date(options.to) : undefined;
102
+ // Validate dates
103
+ if (dateFrom && isNaN(dateFrom.getTime())) {
104
+ logger.error('Invalid start date format. Use YYYY-MM-DD');
105
+ process.exit(1);
106
+ }
107
+ if (dateTo && isNaN(dateTo.getTime())) {
108
+ logger.error('Invalid end date format. Use YYYY-MM-DD');
109
+ process.exit(1);
110
+ }
111
+ // Validate agent if specified
112
+ if (options.agent) {
113
+ const validAgents = AgentRegistry.getAgentNames();
114
+ if (!validAgents.includes(options.agent)) {
115
+ logger.error(`Invalid agent: ${options.agent}`);
116
+ console.log(chalk.white('Available agents:'));
117
+ validAgents.forEach(name => {
118
+ const adapter = AgentRegistry.getAgent(name);
119
+ console.log(` ${chalk.cyan(name.padEnd(15))} ${chalk.white(adapter?.displayName || '')}`);
120
+ });
121
+ process.exit(1);
122
+ }
123
+ }
124
+ // Create aggregator and fetch sessions
125
+ const aggregator = new CodemieAnalyticsAggregator();
126
+ const sessions = await aggregator.aggregateSessions({
127
+ dateFrom,
128
+ dateTo,
129
+ agent: options.agent,
130
+ projectPath: options.project
131
+ });
132
+ if (sessions.length === 0) {
133
+ console.log(chalk.yellow('No sessions found matching the criteria.\n'));
134
+ return;
135
+ }
136
+ // Output based on format
137
+ if (options.format === 'json') {
138
+ const output = {
139
+ version: '1.0.0',
140
+ exportedAt: new Date().toISOString(),
141
+ filters: {
142
+ dateFrom: dateFrom?.toISOString(),
143
+ dateTo: dateTo?.toISOString(),
144
+ agent: options.agent,
145
+ projectPath: options.project
146
+ },
147
+ sessions
148
+ };
149
+ if (options.output) {
150
+ const { writeFile } = await import('node:fs/promises');
151
+ await writeFile(options.output, JSON.stringify(output, null, 2));
152
+ logger.success(`Exported to ${options.output}`);
153
+ }
154
+ else {
155
+ console.log(JSON.stringify(output, null, 2));
156
+ }
157
+ }
158
+ else {
159
+ // Table format
160
+ console.log(chalk.white(`Found ${chalk.cyan(sessions.length.toString())} sessions\n`));
161
+ // Show date range of found sessions
162
+ if (sessions.length > 0) {
163
+ const startDates = sessions.map(s => s.startTime.getTime());
164
+ const endDates = sessions.map(s => s.endTime?.getTime() || s.startTime.getTime());
165
+ const earliestDate = new Date(Math.min(...startDates));
166
+ const latestDate = new Date(Math.max(...endDates));
167
+ console.log(chalk.bold.white('📅 Date Range\n'));
168
+ const dateRangeTable = new Table({
169
+ head: [chalk.cyan('Period'), chalk.cyan('Date')],
170
+ style: {
171
+ head: [],
172
+ border: ['grey']
173
+ },
174
+ colWidths: [25, 60]
175
+ });
176
+ dateRangeTable.push([chalk.white('From'), chalk.white(earliestDate.toLocaleString())], [chalk.white('To'), chalk.white(latestDate.toLocaleString())]);
177
+ console.log(dateRangeTable.toString());
178
+ console.log();
179
+ }
180
+ // Calculate summary statistics
181
+ const totalMessages = sessions.reduce((sum, s) => sum + s.userMessageCount + s.assistantMessageCount, 0);
182
+ const totalTokens = sessions.reduce((sum, s) => sum + s.tokens.total, 0);
183
+ const totalInputTokens = sessions.reduce((sum, s) => sum + s.tokens.input, 0);
184
+ const totalOutputTokens = sessions.reduce((sum, s) => sum + s.tokens.output, 0);
185
+ const totalCacheRead = sessions.reduce((sum, s) => sum + s.tokens.cacheRead, 0);
186
+ const totalCacheCreation = sessions.reduce((sum, s) => sum + s.tokens.cacheCreation, 0);
187
+ const totalThoughts = sessions.reduce((sum, s) => sum + (s.tokens.thoughts || 0), 0);
188
+ const totalReasoning = sessions.reduce((sum, s) => sum + (s.tokens.reasoning || 0), 0);
189
+ const totalToolTokens = sessions.reduce((sum, s) => sum + (s.tokens.tool || 0), 0);
190
+ const totalToolCalls = sessions.reduce((sum, s) => sum + s.toolCallCount, 0);
191
+ const totalFileModifications = sessions.reduce((sum, s) => sum + s.fileModifications, 0);
192
+ // 1. SUMMARY - Sessions & Messages
193
+ console.log(chalk.bold.white('📈 Summary Statistics\n'));
194
+ const summaryTable = new Table({
195
+ head: [chalk.cyan('Metric'), chalk.cyan('Value')],
196
+ style: {
197
+ head: [],
198
+ border: ['grey']
199
+ },
200
+ colWidths: [25, 60]
201
+ });
202
+ const totalPrompts = sessions.reduce((sum, s) => sum + s.userMessageCount, 0);
203
+ const totalResponses = sessions.reduce((sum, s) => sum + s.assistantMessageCount, 0);
204
+ summaryTable.push([chalk.white('Sessions'), chalk.white(sessions.length.toString())], [chalk.white('Messages'), chalk.white(`${totalMessages.toLocaleString()} (${totalPrompts.toLocaleString()} prompts + ${totalResponses.toLocaleString()} responses)`)]);
205
+ console.log(summaryTable.toString());
206
+ console.log();
207
+ // 2. Code Generation Statistics
208
+ const sessionsWithFileStats = sessions.filter(s => s.fileStats);
209
+ if (sessionsWithFileStats.length > 0) {
210
+ const totalLinesGenerated = sessionsWithFileStats.reduce((sum, s) => sum + (s.fileStats?.totalLinesAdded || 0), 0);
211
+ const totalLinesRemoved = sessionsWithFileStats.reduce((sum, s) => sum + (s.fileStats?.totalLinesRemoved || 0), 0);
212
+ const totalFilesCreated = sessionsWithFileStats.reduce((sum, s) => sum + (s.fileStats?.filesCreated || 0), 0);
213
+ const totalFilesModified = sessionsWithFileStats.reduce((sum, s) => sum + (s.fileStats?.filesModified || 0), 0);
214
+ const netLines = totalLinesGenerated - totalLinesRemoved;
215
+ console.log(chalk.bold.white('📝 Code Generation\n'));
216
+ const codeGenTable = new Table({
217
+ head: [chalk.cyan('Metric'), chalk.cyan('Value')],
218
+ style: {
219
+ head: [],
220
+ border: ['grey']
221
+ },
222
+ colWidths: [25, 60]
223
+ });
224
+ codeGenTable.push([chalk.white('Lines Generated'), chalk.white(totalLinesGenerated.toLocaleString())]);
225
+ if (totalLinesRemoved > 0) {
226
+ codeGenTable.push([chalk.white('Lines Removed'), chalk.white(totalLinesRemoved.toLocaleString())], [chalk.white('Net Lines'), chalk.white(netLines.toLocaleString())]);
227
+ }
228
+ codeGenTable.push([chalk.white('Files Created'), chalk.white(totalFilesCreated.toString())], [chalk.white('Files Modified'), chalk.white(totalFilesModified.toString())], [chalk.white('File Modifications'), chalk.white(totalFileModifications.toString())]);
229
+ console.log(codeGenTable.toString());
230
+ console.log();
231
+ }
232
+ // 3. Token Breakdown
233
+ console.log(chalk.bold.white('💰 Token Usage\n'));
234
+ const tokenTable = new Table({
235
+ head: [chalk.cyan('Type'), chalk.cyan('Tokens')],
236
+ style: {
237
+ head: [],
238
+ border: ['grey']
239
+ },
240
+ colWidths: [25, 60]
241
+ });
242
+ tokenTable.push([chalk.white('Total'), chalk.white(totalTokens.toLocaleString())], [chalk.white('Input'), chalk.white(totalInputTokens.toLocaleString())], [chalk.white('Output'), chalk.white(totalOutputTokens.toLocaleString())], [chalk.white('Cache Read'), chalk.white(totalCacheRead.toLocaleString())]);
243
+ if (totalCacheCreation > 0) {
244
+ tokenTable.push([chalk.white('Cache Creation'), chalk.white(totalCacheCreation.toLocaleString())]);
245
+ }
246
+ if (totalThoughts > 0) {
247
+ tokenTable.push([chalk.white('Thoughts'), chalk.white(totalThoughts.toLocaleString())]);
248
+ }
249
+ if (totalReasoning > 0) {
250
+ tokenTable.push([chalk.white('Reasoning'), chalk.white(totalReasoning.toLocaleString())]);
251
+ }
252
+ if (totalToolTokens > 0) {
253
+ tokenTable.push([chalk.white('Tool'), chalk.white(totalToolTokens.toLocaleString())]);
254
+ }
255
+ console.log(tokenTable.toString());
256
+ console.log();
257
+ // 4. BY AGENT - Agent breakdown
258
+ const byAgent = {};
259
+ for (const session of sessions) {
260
+ if (!byAgent[session.agent]) {
261
+ const adapter = AgentRegistry.getAgent(session.agent);
262
+ byAgent[session.agent] = {
263
+ sessions: 0,
264
+ tokens: 0,
265
+ prompts: 0,
266
+ apiCalls: 0,
267
+ displayName: adapter?.displayName || session.agent
268
+ };
269
+ }
270
+ byAgent[session.agent].sessions++;
271
+ byAgent[session.agent].tokens += session.tokens.total;
272
+ byAgent[session.agent].prompts += session.userMessageCount;
273
+ // Count API calls from model usage
274
+ byAgent[session.agent].apiCalls += Object.values(session.modelUsage).reduce((sum, count) => sum + count, 0);
275
+ }
276
+ console.log(chalk.bold.white('🤖 Breakdown by Agent\n'));
277
+ const sortedAgents = Object.entries(byAgent)
278
+ .sort((a, b) => b[1].sessions - a[1].sessions);
279
+ // Create table for agent breakdown
280
+ const agentTable = new Table({
281
+ head: [chalk.cyan('Agent'), chalk.cyan('Prompts'), chalk.cyan('Sessions'), chalk.cyan('API Calls'), chalk.cyan('Share')],
282
+ style: {
283
+ head: [],
284
+ border: ['grey']
285
+ }
286
+ });
287
+ for (const [, stats] of sortedAgents) {
288
+ const percentage = ((stats.sessions / sessions.length) * 100).toFixed(1);
289
+ agentTable.push([
290
+ chalk.white(stats.displayName),
291
+ chalk.white(stats.prompts.toString()),
292
+ chalk.white(stats.sessions.toString()),
293
+ chalk.white(stats.apiCalls.toString()),
294
+ chalk.white(`${percentage}%`)
295
+ ]);
296
+ }
297
+ console.log(agentTable.toString());
298
+ console.log();
299
+ // Show model usage breakdown
300
+ const modelBreakdown = {};
301
+ for (const session of sessions) {
302
+ for (const [modelName, count] of Object.entries(session.modelUsage)) {
303
+ modelBreakdown[modelName] = (modelBreakdown[modelName] || 0) + count;
304
+ }
305
+ }
306
+ if (Object.keys(modelBreakdown).length > 0) {
307
+ const totalModelCalls = Object.values(modelBreakdown).reduce((sum, count) => sum + count, 0);
308
+ console.log(chalk.bold.white(' Models:\n'));
309
+ const sortedModels = Object.entries(modelBreakdown)
310
+ .sort((a, b) => b[1] - a[1]);
311
+ // Create table for models
312
+ const modelTable = new Table({
313
+ head: [chalk.cyan('Model'), chalk.cyan('Calls'), chalk.cyan('Share')],
314
+ style: {
315
+ head: [],
316
+ border: ['grey']
317
+ },
318
+ colWidths: [55, 12, 12]
319
+ });
320
+ for (const [modelName, count] of sortedModels) {
321
+ const percentage = ((count / totalModelCalls) * 100).toFixed(1);
322
+ modelTable.push([
323
+ chalk.white(modelName),
324
+ chalk.white(count.toString()),
325
+ chalk.white(`${percentage}%`)
326
+ ]);
327
+ }
328
+ console.log(' ' + modelTable.toString().split('\n').join('\n '));
329
+ console.log();
330
+ }
331
+ // 5. TOOL USAGE
332
+ if (totalToolCalls > 0) {
333
+ const toolBreakdown = {};
334
+ const toolStatusBreakdown = {};
335
+ for (const session of sessions) {
336
+ for (const [toolName, count] of Object.entries(session.toolUsage)) {
337
+ toolBreakdown[toolName] = (toolBreakdown[toolName] || 0) + count;
338
+ }
339
+ for (const [toolName, status] of Object.entries(session.toolStatus)) {
340
+ if (!toolStatusBreakdown[toolName]) {
341
+ toolStatusBreakdown[toolName] = { success: 0, failure: 0 };
342
+ }
343
+ toolStatusBreakdown[toolName].success += status.success;
344
+ toolStatusBreakdown[toolName].failure += status.failure;
345
+ }
346
+ }
347
+ if (Object.keys(toolBreakdown).length > 0) {
348
+ console.log(chalk.bold.white('🔧 Tool Usage\n'));
349
+ const sortedTools = Object.entries(toolBreakdown)
350
+ .sort((a, b) => b[1] - a[1]);
351
+ // Create table for tools
352
+ const toolTable = new Table({
353
+ head: [chalk.cyan('Tool'), chalk.cyan('Calls'), chalk.cyan('Share'), chalk.cyan('Status'), chalk.cyan('Success Rate')],
354
+ style: {
355
+ head: [],
356
+ border: ['grey']
357
+ },
358
+ colWidths: [20, 10, 8, 20, 15]
359
+ });
360
+ for (const [toolName, count] of sortedTools) {
361
+ const percentage = ((count / totalToolCalls) * 100).toFixed(1);
362
+ const status = toolStatusBreakdown[toolName];
363
+ const successRate = status ? ((status.success / count) * 100).toFixed(1) : '0.0';
364
+ // Build status text with color coding
365
+ let statusText;
366
+ let successRateText;
367
+ if (status && status.failure > 0 && status.success === 0) {
368
+ // Critical: 0% success rate with failures - RED
369
+ statusText = chalk.red(`(${status.success} ✓, ${status.failure} ✗)`);
370
+ successRateText = chalk.red(`${successRate}%`);
371
+ }
372
+ else if (status && status.failure > 0) {
373
+ // Warning: some failures but has successes - YELLOW
374
+ statusText = chalk.yellow(`(${status.success} ✓, ${status.failure} ✗)`);
375
+ successRateText = chalk.yellow(`${successRate}%`);
376
+ }
377
+ else {
378
+ // Success: no failures - GREEN
379
+ statusText = chalk.green(`(${status?.success || 0} ✓)`);
380
+ successRateText = chalk.green(`${successRate}%`);
381
+ }
382
+ toolTable.push([
383
+ chalk.white(toolName),
384
+ chalk.white(count.toString()),
385
+ chalk.white(`${percentage}%`),
386
+ statusText,
387
+ successRateText
388
+ ]);
389
+ }
390
+ console.log(toolTable.toString());
391
+ console.log();
392
+ }
393
+ }
394
+ // 6. BREAKDOWN BY PROJECT
395
+ const byProject = {};
396
+ for (const session of sessions) {
397
+ const projectPath = session.projectPath || 'other';
398
+ if (!byProject[projectPath]) {
399
+ byProject[projectPath] = {
400
+ sessions: 0,
401
+ tokens: 0,
402
+ linesGenerated: 0,
403
+ filesCreated: 0,
404
+ filesModified: 0,
405
+ languageStats: {},
406
+ formatStats: {}
407
+ };
408
+ }
409
+ const project = byProject[projectPath];
410
+ project.sessions++;
411
+ project.tokens += session.tokens.total;
412
+ project.linesGenerated += session.fileStats?.totalLinesAdded || 0;
413
+ project.filesCreated += session.fileStats?.filesCreated || 0;
414
+ project.filesModified += session.fileStats?.filesModified || 0;
415
+ // Aggregate language stats for this project
416
+ // We track unique sessions per language using Set
417
+ if (session.fileStats?.byLanguage) {
418
+ for (const [lang, stats] of Object.entries(session.fileStats.byLanguage)) {
419
+ if (!project.languageStats[lang]) {
420
+ project.languageStats[lang] = {
421
+ sessionIds: new Set(),
422
+ tokens: 0,
423
+ lines: 0,
424
+ filesCreated: 0,
425
+ filesModified: 0
426
+ };
427
+ }
428
+ // Track unique session ID
429
+ project.languageStats[lang].sessionIds.add(session.sessionId);
430
+ // Attribute tokens proportionally based on lines generated
431
+ const totalLinesInSession = session.fileStats.totalLinesAdded || 1;
432
+ const tokenShare = (stats.linesAdded / totalLinesInSession) * session.tokens.total;
433
+ project.languageStats[lang].tokens += tokenShare;
434
+ project.languageStats[lang].lines += stats.linesAdded;
435
+ project.languageStats[lang].filesCreated += stats.filesCreated;
436
+ project.languageStats[lang].filesModified += stats.filesModified;
437
+ }
438
+ }
439
+ // Aggregate format stats for this project
440
+ if (session.fileStats?.byFormat) {
441
+ for (const [format, stats] of Object.entries(session.fileStats.byFormat)) {
442
+ if (!project.formatStats[format]) {
443
+ project.formatStats[format] = {
444
+ sessionIds: new Set(),
445
+ tokens: 0,
446
+ lines: 0,
447
+ filesCreated: 0,
448
+ filesModified: 0
449
+ };
450
+ }
451
+ // Track unique session ID
452
+ project.formatStats[format].sessionIds.add(session.sessionId);
453
+ // Attribute tokens proportionally based on lines generated
454
+ const totalLinesInSession = session.fileStats.totalLinesAdded || 1;
455
+ const tokenShare = (stats.linesAdded / totalLinesInSession) * session.tokens.total;
456
+ project.formatStats[format].tokens += tokenShare;
457
+ project.formatStats[format].lines += stats.linesAdded;
458
+ project.formatStats[format].filesCreated += stats.filesCreated;
459
+ project.formatStats[format].filesModified += stats.filesModified;
460
+ }
461
+ }
462
+ }
463
+ if (Object.keys(byProject).length > 0) {
464
+ console.log(chalk.bold.white('📁 Breakdown by Project\n'));
465
+ const sortedProjects = Object.entries(byProject)
466
+ .sort((a, b) => b[1].linesGenerated - a[1].linesGenerated);
467
+ for (const [projectPath, stats] of sortedProjects) {
468
+ const totalLinesInProjects = Object.values(byProject).reduce((sum, p) => sum + p.linesGenerated, 0);
469
+ const percentage = totalLinesInProjects > 0 ? ((stats.linesGenerated / totalLinesInProjects) * 100).toFixed(1) : '0.0';
470
+ console.log(chalk.cyan(`\n ${projectPath}\n`));
471
+ // Project summary table
472
+ const projectSummaryTable = new Table({
473
+ head: [chalk.cyan('Sessions'), chalk.cyan('Tokens'), chalk.cyan('Lines'), chalk.cyan('Created'), chalk.cyan('Modified'), chalk.cyan('Share')],
474
+ style: {
475
+ head: [],
476
+ border: ['grey']
477
+ },
478
+ colWidths: [12, 16, 10, 11, 12, 10]
479
+ });
480
+ projectSummaryTable.push([
481
+ chalk.white(stats.sessions.toString()),
482
+ chalk.white(stats.tokens.toLocaleString()),
483
+ chalk.white(stats.linesGenerated.toLocaleString()),
484
+ chalk.white(stats.filesCreated.toString()),
485
+ chalk.white(stats.filesModified.toString()),
486
+ chalk.white(`${percentage}%`)
487
+ ]);
488
+ console.log(' ' + projectSummaryTable.toString().split('\n').join('\n '));
489
+ // Show language breakdown for this project
490
+ if (Object.keys(stats.languageStats).length > 0) {
491
+ console.log(chalk.white('\n By Language:\n'));
492
+ const sortedLangs = Object.entries(stats.languageStats)
493
+ .sort((a, b) => b[1].lines - a[1].lines)
494
+ .slice(0, 10);
495
+ const langTable = new Table({
496
+ head: [chalk.cyan('Language'), chalk.cyan('Sessions'), chalk.cyan('Tokens'), chalk.cyan('Lines'), chalk.cyan('Created'), chalk.cyan('Modified'), chalk.cyan('Share')],
497
+ style: {
498
+ head: [],
499
+ border: ['grey']
500
+ },
501
+ colWidths: [18, 12, 16, 10, 11, 12, 9]
502
+ });
503
+ for (const [lang, langStats] of sortedLangs) {
504
+ const langPercentage = stats.linesGenerated > 0 ? ((langStats.lines / stats.linesGenerated) * 100).toFixed(1) : '0.0';
505
+ const sessionCount = langStats.sessionIds.size;
506
+ langTable.push([
507
+ chalk.white(lang),
508
+ chalk.white(sessionCount.toString()),
509
+ chalk.white(Math.round(langStats.tokens).toLocaleString()),
510
+ chalk.white(langStats.lines.toLocaleString()),
511
+ chalk.white(langStats.filesCreated.toString()),
512
+ chalk.white(langStats.filesModified.toString()),
513
+ chalk.white(`${langPercentage}%`)
514
+ ]);
515
+ }
516
+ console.log(' ' + langTable.toString().split('\n').join('\n '));
517
+ }
518
+ // Show format breakdown for this project
519
+ if (Object.keys(stats.formatStats).length > 0) {
520
+ console.log(chalk.white('\n By Format:\n'));
521
+ const sortedFormats = Object.entries(stats.formatStats)
522
+ .sort((a, b) => b[1].lines - a[1].lines)
523
+ .slice(0, 10);
524
+ const formatTable = new Table({
525
+ head: [chalk.cyan('Format'), chalk.cyan('Sessions'), chalk.cyan('Tokens'), chalk.cyan('Lines'), chalk.cyan('Created'), chalk.cyan('Modified'), chalk.cyan('Share')],
526
+ style: {
527
+ head: [],
528
+ border: ['grey']
529
+ },
530
+ colWidths: [18, 12, 16, 10, 11, 12, 9]
531
+ });
532
+ for (const [format, formatStats] of sortedFormats) {
533
+ const formatPercentage = stats.linesGenerated > 0 ? ((formatStats.lines / stats.linesGenerated) * 100).toFixed(1) : '0.0';
534
+ const sessionCount = formatStats.sessionIds.size;
535
+ formatTable.push([
536
+ chalk.white(format),
537
+ chalk.white(sessionCount.toString()),
538
+ chalk.white(Math.round(formatStats.tokens).toLocaleString()),
539
+ chalk.white(formatStats.lines.toLocaleString()),
540
+ chalk.white(formatStats.filesCreated.toString()),
541
+ chalk.white(formatStats.filesModified.toString()),
542
+ chalk.white(`${formatPercentage}%`)
543
+ ]);
544
+ }
545
+ console.log(' ' + formatTable.toString().split('\n').join('\n '));
546
+ }
547
+ console.log();
548
+ }
549
+ }
550
+ }
551
+ }
552
+ catch (error) {
553
+ logger.error('Failed to aggregate analytics:', error);
554
+ process.exit(1);
555
+ }
556
+ });
557
+ return command;
558
+ }
559
+ // Helper functions
560
+ async function updateAnalyticsEnabled(enabled) {
561
+ // Load current multi-provider config
562
+ const config = await ConfigLoader.loadMultiProviderConfig();
563
+ // Update or create analytics config
564
+ if (!config.analytics) {
565
+ config.analytics = {
566
+ enabled,
567
+ target: 'local',
568
+ localPath: '~/.codemie/analytics',
569
+ flushInterval: 5000,
570
+ maxBufferSize: 100
571
+ };
572
+ }
573
+ else {
574
+ config.analytics.enabled = enabled;
575
+ }
576
+ // Save updated config
577
+ await ConfigLoader.saveMultiProviderConfig(config);
578
+ }
579
+ //# sourceMappingURL=analytics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analytics.js","sourceRoot":"","sources":["../../../src/cli/commands/analytics.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASpC,wBAAgB,mBAAmB,IAAI,OAAO,CAqM7C"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAUpC,wBAAgB,mBAAmB,IAAI,OAAO,CAkN7C"}