@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,258 @@
1
+ /**
2
+ * CodeMie Analytics Aggregation System - Core Data Models
3
+ *
4
+ * Defines standardized data structures for aggregating analytics
5
+ * from multiple AI coding agents (Gemini, Claude, Codex, CodeMie Native).
6
+ */
7
+ /**
8
+ * Standardized session data across all agents
9
+ */
10
+ export interface CodemieSession {
11
+ sessionId: string;
12
+ agent: 'gemini' | 'claude' | 'codex' | 'codemie-code' | 'deepagents';
13
+ agentVersion: string;
14
+ startTime: Date;
15
+ endTime?: Date;
16
+ durationMs?: number;
17
+ projectPath: string;
18
+ projectHash?: string;
19
+ gitBranch?: string;
20
+ gitCommit?: string;
21
+ model: string;
22
+ provider: string;
23
+ profile?: string;
24
+ userMessageCount: number;
25
+ assistantMessageCount: number;
26
+ toolCallCount: number;
27
+ successfulToolCalls: number;
28
+ failedToolCalls: number;
29
+ fileModifications: number;
30
+ toolUsage: Record<string, number>;
31
+ toolStatus: Record<string, {
32
+ success: number;
33
+ failure: number;
34
+ }>;
35
+ modelUsage: Record<string, number>;
36
+ tokens: {
37
+ input: number;
38
+ output: number;
39
+ cacheRead: number;
40
+ cacheCreation: number;
41
+ reasoning?: number;
42
+ thoughts?: number;
43
+ tool?: number;
44
+ total: number;
45
+ };
46
+ exitReason?: string;
47
+ hadErrors: boolean;
48
+ fileStats?: {
49
+ filesCreated: number;
50
+ filesModified: number;
51
+ filesDeleted: number;
52
+ totalLinesAdded: number;
53
+ totalLinesRemoved: number;
54
+ totalLinesModified: number;
55
+ byLanguage: Record<string, {
56
+ filesCreated: number;
57
+ filesModified: number;
58
+ linesAdded: number;
59
+ linesRemoved: number;
60
+ }>;
61
+ byFormat: Record<string, {
62
+ filesCreated: number;
63
+ filesModified: number;
64
+ linesAdded: number;
65
+ linesRemoved: number;
66
+ }>;
67
+ byTool: Record<string, {
68
+ count: number;
69
+ linesAdded: number;
70
+ linesRemoved: number;
71
+ }>;
72
+ };
73
+ }
74
+ /**
75
+ * Standardized message data
76
+ */
77
+ export interface CodemieMessage {
78
+ messageId: string;
79
+ sessionId: string;
80
+ timestamp: Date;
81
+ role: 'user' | 'assistant';
82
+ content: string;
83
+ tokens?: {
84
+ input?: number;
85
+ output?: number;
86
+ cacheRead?: number;
87
+ cacheCreation?: number;
88
+ reasoning?: number;
89
+ thoughts?: number;
90
+ tool?: number;
91
+ total?: number;
92
+ };
93
+ toolCalls?: CodemieToolCall[];
94
+ model?: string;
95
+ }
96
+ /**
97
+ * Standardized tool call data
98
+ */
99
+ export interface CodemieToolCall {
100
+ toolCallId: string;
101
+ messageId: string;
102
+ sessionId: string;
103
+ timestamp: Date;
104
+ durationMs?: number;
105
+ toolName: string;
106
+ toolArgs: Record<string, unknown>;
107
+ status: 'success' | 'failure' | 'aborted';
108
+ result?: unknown;
109
+ error?: string;
110
+ modifiedFiles?: string[];
111
+ }
112
+ /**
113
+ * File modification tracking
114
+ */
115
+ export interface CodemieFileModification {
116
+ sessionId: string;
117
+ toolCallId: string;
118
+ timestamp: Date;
119
+ filePath: string;
120
+ operation: 'create' | 'update' | 'delete';
121
+ linesAdded: number;
122
+ linesRemoved: number;
123
+ linesModified?: number;
124
+ sizeBytes?: number;
125
+ toolName: string;
126
+ wasNewFile: boolean;
127
+ fileExtension: string;
128
+ language?: string;
129
+ format?: string;
130
+ }
131
+ /**
132
+ * Options for querying sessions
133
+ */
134
+ export interface SessionQueryOptions {
135
+ projectPath?: string;
136
+ dateFrom?: Date;
137
+ dateTo?: Date;
138
+ limit?: number;
139
+ offset?: number;
140
+ }
141
+ /**
142
+ * Session descriptor for lazy loading
143
+ */
144
+ export interface SessionDescriptor {
145
+ sessionId: string;
146
+ agent: string;
147
+ filePaths: string[];
148
+ metadata: Record<string, unknown>;
149
+ }
150
+ /**
151
+ * Options for aggregating sessions
152
+ */
153
+ export interface AggregationOptions extends SessionQueryOptions {
154
+ agent?: string;
155
+ includeMessages?: boolean;
156
+ includeToolCalls?: boolean;
157
+ includeFileModifications?: boolean;
158
+ }
159
+ /**
160
+ * Detailed session information
161
+ */
162
+ export interface SessionDetails {
163
+ session: CodemieSession;
164
+ messages: CodemieMessage[];
165
+ toolCalls: CodemieToolCall[];
166
+ fileModifications: CodemieFileModification[];
167
+ }
168
+ /**
169
+ * Analytics report structure
170
+ */
171
+ export interface AnalyticsReport {
172
+ summary: ReportSummary;
173
+ sessions: CodemieSession[];
174
+ breakdown: {
175
+ byAgent: Record<string, AgentStats>;
176
+ byModel: Record<string, ModelStats>;
177
+ byProject: Record<string, ProjectStats>;
178
+ byDay: Record<string, DayStats>;
179
+ };
180
+ }
181
+ /**
182
+ * Summary statistics
183
+ */
184
+ export interface ReportSummary {
185
+ totalSessions: number;
186
+ totalMessages: number;
187
+ totalTokens: number;
188
+ totalToolCalls: number;
189
+ totalFileModifications: number;
190
+ averageSessionDuration: number;
191
+ successRate: number;
192
+ }
193
+ /**
194
+ * Agent-specific statistics
195
+ */
196
+ export interface AgentStats {
197
+ sessions: number;
198
+ messages: number;
199
+ tokens: number;
200
+ toolCalls: number;
201
+ fileModifications: number;
202
+ averageDuration: number;
203
+ successRate: number;
204
+ }
205
+ /**
206
+ * Model-specific statistics
207
+ */
208
+ export interface ModelStats {
209
+ sessions: number;
210
+ tokens: number;
211
+ averageTokensPerSession: number;
212
+ }
213
+ /**
214
+ * Project-specific statistics
215
+ */
216
+ export interface ProjectStats {
217
+ sessions: number;
218
+ messages: number;
219
+ fileModifications: number;
220
+ }
221
+ /**
222
+ * Daily statistics
223
+ */
224
+ export interface DayStats {
225
+ date: string;
226
+ sessions: number;
227
+ messages: number;
228
+ tokens: number;
229
+ }
230
+ /**
231
+ * Options for generating reports
232
+ */
233
+ export interface ReportOptions extends AggregationOptions {
234
+ format?: 'json' | 'csv' | 'table';
235
+ outputFile?: string;
236
+ }
237
+ /**
238
+ * JSON export format
239
+ */
240
+ export interface JSONExport {
241
+ version: '1.0.0';
242
+ exportedAt: string;
243
+ filters: AggregationOptions;
244
+ sessions: CodemieSession[];
245
+ messages?: CodemieMessage[];
246
+ toolCalls?: CodemieToolCall[];
247
+ fileModifications?: CodemieFileModification[];
248
+ }
249
+ /**
250
+ * Remote analytics batch format
251
+ */
252
+ export interface RemoteAnalyticsBatch {
253
+ installationId: string;
254
+ batchId: string;
255
+ timestamp: string;
256
+ sessions: CodemieSession[];
257
+ }
258
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/analytics/aggregation/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH;;GAEG;AACH,MAAM,WAAW,cAAc;IAE7B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,QAAQ,GAAG,QAAQ,GAAG,OAAO,GAAG,cAAc,GAAG,YAAY,CAAC;IACrE,YAAY,EAAE,MAAM,CAAC;IAGrB,SAAS,EAAE,IAAI,CAAC;IAChB,OAAO,CAAC,EAAE,IAAI,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IAGpB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IAGnB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IAGjB,gBAAgB,EAAE,MAAM,CAAC;IACzB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,aAAa,EAAE,MAAM,CAAC;IACtB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;IAG1B,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAGlC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAGjE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAGnC,MAAM,EAAE;QAEN,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QAGf,SAAS,EAAE,MAAM,CAAC;QAClB,aAAa,EAAE,MAAM,CAAC;QAGtB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,IAAI,CAAC,EAAE,MAAM,CAAC;QAGd,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IAGF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IAGnB,SAAS,CAAC,EAAE;QACV,YAAY,EAAE,MAAM,CAAC;QACrB,aAAa,EAAE,MAAM,CAAC;QACtB,YAAY,EAAE,MAAM,CAAC;QACrB,eAAe,EAAE,MAAM,CAAC;QACxB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,kBAAkB,EAAE,MAAM,CAAC;QAG3B,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE;YACzB,YAAY,EAAE,MAAM,CAAC;YACrB,aAAa,EAAE,MAAM,CAAC;YACtB,UAAU,EAAE,MAAM,CAAC;YACnB,YAAY,EAAE,MAAM,CAAC;SACtB,CAAC,CAAC;QAGH,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE;YACvB,YAAY,EAAE,MAAM,CAAC;YACrB,aAAa,EAAE,MAAM,CAAC;YACtB,UAAU,EAAE,MAAM,CAAC;YACnB,YAAY,EAAE,MAAM,CAAC;SACtB,CAAC,CAAC;QAGH,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE;YACrB,KAAK,EAAE,MAAM,CAAC;YACd,UAAU,EAAE,MAAM,CAAC;YACnB,YAAY,EAAE,MAAM,CAAC;SACtB,CAAC,CAAC;KACJ,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAE7B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAGlB,SAAS,EAAE,IAAI,CAAC;IAGhB,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;IAGhB,MAAM,CAAC,EAAE;QACP,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;IAGF,SAAS,CAAC,EAAE,eAAe,EAAE,CAAC;IAG9B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAE9B,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAGlB,SAAS,EAAE,IAAI,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IAGpB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAGlC,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;IAC1C,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IAGf,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IAEtC,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IAGnB,SAAS,EAAE,IAAI,CAAC;IAGhB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAG1C,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IAGnB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,OAAO,CAAC;IAGpB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAMD;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,IAAI,CAAC;IAChB,MAAM,CAAC,EAAE,IAAI,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAMD;;GAEG;AACH,MAAM,WAAW,kBAAmB,SAAQ,mBAAmB;IAC7D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,wBAAwB,CAAC,EAAE,OAAO,CAAC;CACpC;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,cAAc,CAAC;IACxB,QAAQ,EAAE,cAAc,EAAE,CAAC;IAC3B,SAAS,EAAE,eAAe,EAAE,CAAC;IAC7B,iBAAiB,EAAE,uBAAuB,EAAE,CAAC;CAC9C;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,aAAa,CAAC;IACvB,QAAQ,EAAE,cAAc,EAAE,CAAC;IAC3B,SAAS,EAAE;QACT,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QACpC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QACpC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;QACxC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;KACjC,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,sBAAsB,EAAE,MAAM,CAAC;IAC/B,sBAAsB,EAAE,MAAM,CAAC;IAC/B,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,uBAAuB,EAAE,MAAM,CAAC;CACjC;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB;AAMD;;GAEG;AACH,MAAM,WAAW,aAAc,SAAQ,kBAAkB;IACvD,MAAM,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,OAAO,CAAC;IAClC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAMD;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,kBAAkB,CAAC;IAC5B,QAAQ,EAAE,cAAc,EAAE,CAAC;IAC3B,QAAQ,CAAC,EAAE,cAAc,EAAE,CAAC;IAC5B,SAAS,CAAC,EAAE,eAAe,EAAE,CAAC;IAC9B,iBAAiB,CAAC,EAAE,uBAAuB,EAAE,CAAC;CAC/C;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,cAAc,EAAE,CAAC;CAC5B"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * CodeMie Analytics Aggregation System - Core Data Models
3
+ *
4
+ * Defines standardized data structures for aggregating analytics
5
+ * from multiple AI coding agents (Gemini, Claude, Codex, CodeMie Native).
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/analytics/aggregation/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Event collector with buffering
3
+ * Collects analytics events and flushes them periodically
4
+ */
5
+ import type { AnalyticsEvent, CollectorConfig } from './types.js';
6
+ /**
7
+ * Collects and buffers analytics events
8
+ */
9
+ export declare class EventCollector {
10
+ private buffer;
11
+ private flushTimer;
12
+ private maxBufferSize;
13
+ private flushInterval;
14
+ private flushCallback?;
15
+ constructor(config: CollectorConfig);
16
+ /**
17
+ * Add an event to the buffer
18
+ * Auto-flushes if buffer is full
19
+ */
20
+ add(event: AnalyticsEvent): void;
21
+ /**
22
+ * Get all buffered events
23
+ */
24
+ getBuffered(): AnalyticsEvent[];
25
+ /**
26
+ * Clear the buffer
27
+ */
28
+ clear(): void;
29
+ /**
30
+ * Flush buffered events
31
+ */
32
+ flush(): Promise<void>;
33
+ /**
34
+ * Register flush callback
35
+ */
36
+ onFlush(callback: (events: AnalyticsEvent[]) => Promise<void>): void;
37
+ /**
38
+ * Start periodic flush timer
39
+ */
40
+ private startFlushTimer;
41
+ /**
42
+ * Stop flush timer and cleanup
43
+ */
44
+ destroy(): void;
45
+ }
46
+ //# sourceMappingURL=collector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collector.d.ts","sourceRoot":"","sources":["../../src/analytics/collector.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElE;;GAEG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAwB;IACtC,OAAO,CAAC,UAAU,CAA+B;IACjD,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,aAAa,CAAC,CAA8C;gBAExD,MAAM,EAAE,eAAe;IAMnC;;;OAGG;IACH,GAAG,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI;IAShC;;OAEG;IACH,WAAW,IAAI,cAAc,EAAE;IAI/B;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAY5B;;OAEG;IACH,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,cAAc,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI;IAIpE;;OAEG;IACH,OAAO,CAAC,eAAe;IAWvB;;OAEG;IACH,OAAO,IAAI,IAAI;CAMhB"}
@@ -0,0 +1,83 @@
1
+ /**
2
+ * Event collector with buffering
3
+ * Collects analytics events and flushes them periodically
4
+ */
5
+ /**
6
+ * Collects and buffers analytics events
7
+ */
8
+ export class EventCollector {
9
+ buffer = [];
10
+ flushTimer = null;
11
+ maxBufferSize;
12
+ flushInterval;
13
+ flushCallback;
14
+ constructor(config) {
15
+ this.maxBufferSize = config.maxBufferSize;
16
+ this.flushInterval = config.flushInterval;
17
+ this.startFlushTimer();
18
+ }
19
+ /**
20
+ * Add an event to the buffer
21
+ * Auto-flushes if buffer is full
22
+ */
23
+ add(event) {
24
+ this.buffer.push(event);
25
+ // Auto-flush if buffer is full
26
+ if (this.buffer.length >= this.maxBufferSize) {
27
+ void this.flush();
28
+ }
29
+ }
30
+ /**
31
+ * Get all buffered events
32
+ */
33
+ getBuffered() {
34
+ return [...this.buffer];
35
+ }
36
+ /**
37
+ * Clear the buffer
38
+ */
39
+ clear() {
40
+ this.buffer = [];
41
+ }
42
+ /**
43
+ * Flush buffered events
44
+ */
45
+ async flush() {
46
+ if (this.buffer.length === 0) {
47
+ return;
48
+ }
49
+ if (this.flushCallback) {
50
+ const events = this.getBuffered();
51
+ this.clear();
52
+ await this.flushCallback(events);
53
+ }
54
+ }
55
+ /**
56
+ * Register flush callback
57
+ */
58
+ onFlush(callback) {
59
+ this.flushCallback = callback;
60
+ }
61
+ /**
62
+ * Start periodic flush timer
63
+ */
64
+ startFlushTimer() {
65
+ this.flushTimer = setInterval(() => {
66
+ void this.flush();
67
+ }, this.flushInterval);
68
+ // Don't prevent process from exiting
69
+ if (this.flushTimer.unref) {
70
+ this.flushTimer.unref();
71
+ }
72
+ }
73
+ /**
74
+ * Stop flush timer and cleanup
75
+ */
76
+ destroy() {
77
+ if (this.flushTimer) {
78
+ clearInterval(this.flushTimer);
79
+ this.flushTimer = null;
80
+ }
81
+ }
82
+ }
83
+ //# sourceMappingURL=collector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collector.js","sourceRoot":"","sources":["../../src/analytics/collector.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH;;GAEG;AACH,MAAM,OAAO,cAAc;IACjB,MAAM,GAAqB,EAAE,CAAC;IAC9B,UAAU,GAA0B,IAAI,CAAC;IACzC,aAAa,CAAS;IACtB,aAAa,CAAS;IACtB,aAAa,CAA+C;IAEpE,YAAY,MAAuB;QACjC,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;QAC1C,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;QAC1C,IAAI,CAAC,eAAe,EAAE,CAAC;IACzB,CAAC;IAED;;;OAGG;IACH,GAAG,CAAC,KAAqB;QACvB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAExB,+BAA+B;QAC/B,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YAC7C,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC;QACpB,CAAC;IACH,CAAC;IAED;;OAEG;IACH,WAAW;QACT,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;IACnB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK;QACT,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7B,OAAO;QACT,CAAC;QAED,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;YAClC,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;IAED;;OAEG;IACH,OAAO,CAAC,QAAqD;QAC3D,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC;IAChC,CAAC;IAED;;OAEG;IACK,eAAe;QACrB,IAAI,CAAC,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE;YACjC,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC;QACpB,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QAEvB,qCAAqC;QACrC,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;YAC1B,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;QAC1B,CAAC;IACH,CAAC;IAED;;OAEG;IACH,OAAO;QACL,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC/B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACzB,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Analytics configuration utilities
3
+ * Handles loading and merging analytics config from multiple sources
4
+ */
5
+ import type { AnalyticsConfig } from './types.js';
6
+ /**
7
+ * Load analytics configuration with environment variable overrides
8
+ * Priority: Environment variables > Global config > baseConfig > Defaults
9
+ */
10
+ export declare function loadAnalyticsConfig(baseConfig?: Partial<AnalyticsConfig>): AnalyticsConfig;
11
+ /**
12
+ * Get default analytics path
13
+ */
14
+ export declare function getDefaultAnalyticsPath(): string;
15
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/analytics/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAGlD;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,UAAU,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,GACpC,eAAe,CAqDjB;AAED;;GAEG;AACH,wBAAgB,uBAAuB,IAAI,MAAM,CAEhD"}
@@ -0,0 +1,65 @@
1
+ /**
2
+ * Analytics configuration utilities
3
+ * Handles loading and merging analytics config from multiple sources
4
+ */
5
+ import { join } from 'node:path';
6
+ import { homedir } from 'node:os';
7
+ import { readFileSync } from 'node:fs';
8
+ import { DEFAULT_ANALYTICS_CONFIG } from './types.js';
9
+ /**
10
+ * Load analytics configuration with environment variable overrides
11
+ * Priority: Environment variables > Global config > baseConfig > Defaults
12
+ */
13
+ export function loadAnalyticsConfig(baseConfig) {
14
+ // Start with defaults
15
+ const config = {
16
+ ...DEFAULT_ANALYTICS_CONFIG,
17
+ };
18
+ // Try to load from global config synchronously
19
+ try {
20
+ const configPath = join(homedir(), '.codemie', 'config.json');
21
+ const content = readFileSync(configPath, 'utf-8');
22
+ const parsed = JSON.parse(content);
23
+ // Merge global config if available (multi-provider format)
24
+ if (parsed.version === 2 && parsed.analytics) {
25
+ Object.assign(config, parsed.analytics);
26
+ }
27
+ }
28
+ catch {
29
+ // No global config, continue with defaults
30
+ }
31
+ // Merge base config
32
+ if (baseConfig) {
33
+ Object.assign(config, baseConfig);
34
+ }
35
+ // Environment variable overrides
36
+ if (process.env.CODEMIE_ANALYTICS_ENABLED !== undefined) {
37
+ config.enabled =
38
+ process.env.CODEMIE_ANALYTICS_ENABLED === 'true' ||
39
+ process.env.CODEMIE_ANALYTICS_ENABLED === '1';
40
+ }
41
+ if (process.env.CODEMIE_ANALYTICS_TARGET) {
42
+ const target = process.env.CODEMIE_ANALYTICS_TARGET;
43
+ if (target === 'local' || target === 'remote' || target === 'both') {
44
+ config.target = target;
45
+ }
46
+ }
47
+ if (process.env.CODEMIE_ANALYTICS_ENDPOINT) {
48
+ config.remoteEndpoint = process.env.CODEMIE_ANALYTICS_ENDPOINT;
49
+ }
50
+ if (process.env.CODEMIE_ANALYTICS_PATH) {
51
+ config.localPath = process.env.CODEMIE_ANALYTICS_PATH;
52
+ }
53
+ // Expand ~ in local path
54
+ if (config.localPath.startsWith('~')) {
55
+ config.localPath = config.localPath.replace(/^~/, homedir());
56
+ }
57
+ return config;
58
+ }
59
+ /**
60
+ * Get default analytics path
61
+ */
62
+ export function getDefaultAnalyticsPath() {
63
+ return join(homedir(), '.codemie', 'analytics');
64
+ }
65
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/analytics/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC,OAAO,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAEtD;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CACjC,UAAqC;IAErC,sBAAsB;IACtB,MAAM,MAAM,GAAoB;QAC9B,GAAG,wBAAwB;KAC5B,CAAC;IAEF,+CAA+C;IAC/C,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC;QAC9D,MAAM,OAAO,GAAG,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAClD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAEnC,2DAA2D;QAC3D,IAAI,MAAM,CAAC,OAAO,KAAK,CAAC,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;YAC7C,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,2CAA2C;IAC7C,CAAC;IAED,oBAAoB;IACpB,IAAI,UAAU,EAAE,CAAC;QACf,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACpC,CAAC;IAED,iCAAiC;IACjC,IAAI,OAAO,CAAC,GAAG,CAAC,yBAAyB,KAAK,SAAS,EAAE,CAAC;QACxD,MAAM,CAAC,OAAO;YACZ,OAAO,CAAC,GAAG,CAAC,yBAAyB,KAAK,MAAM;gBAChD,OAAO,CAAC,GAAG,CAAC,yBAAyB,KAAK,GAAG,CAAC;IAClD,CAAC;IAED,IAAI,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,CAAC;QACzC,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC;QACpD,IAAI,MAAM,KAAK,OAAO,IAAI,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;YACnE,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;QACzB,CAAC;IACH,CAAC;IAED,IAAI,OAAO,CAAC,GAAG,CAAC,0BAA0B,EAAE,CAAC;QAC3C,MAAM,CAAC,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC;IACjE,CAAC;IAED,IAAI,OAAO,CAAC,GAAG,CAAC,sBAAsB,EAAE,CAAC;QACvC,MAAM,CAAC,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC;IACxD,CAAC;IAED,yBAAyB;IACzB,IAAI,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACrC,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;IAC/D,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,uBAAuB;IACrC,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;AAClD,CAAC"}
@@ -0,0 +1,99 @@
1
+ /**
2
+ * Analytics system for CodeMie CLI
3
+ * Provides unified analytics tracking across all agents
4
+ */
5
+ import type { AnalyticsConfig, EventType, SessionConfig } from './types.js';
6
+ import { AnalyticsPlugin } from './plugins/types.js';
7
+ /**
8
+ * Main analytics class
9
+ * Handles event tracking, buffering, and persistence
10
+ */
11
+ export declare class Analytics {
12
+ private collector;
13
+ private writer;
14
+ private session;
15
+ private config;
16
+ private installationId;
17
+ private plugins;
18
+ constructor(config?: Partial<AnalyticsConfig>);
19
+ /**
20
+ * Register an analytics plugin (Open/Closed principle)
21
+ * Allows adding custom metrics without modifying core
22
+ */
23
+ registerPlugin(plugin: AnalyticsPlugin): void;
24
+ /**
25
+ * Get all registered plugins
26
+ */
27
+ getPlugins(): AnalyticsPlugin[];
28
+ /**
29
+ * Get current metrics from all plugins
30
+ * Useful for displaying aggregated stats
31
+ */
32
+ getPluginMetrics(): Record<string, Record<string, unknown>>;
33
+ /**
34
+ * Get metrics from a specific plugin by name
35
+ */
36
+ getPluginMetricsByName(pluginName: string): Record<string, unknown> | null;
37
+ /**
38
+ * Initialize analytics components
39
+ */
40
+ private initialize;
41
+ /**
42
+ * Track an analytics event
43
+ */
44
+ track(eventType: EventType, attributes?: Record<string, unknown>, metrics?: Record<string, number>): Promise<void>;
45
+ /**
46
+ * Track API response
47
+ */
48
+ trackAPIResponse(data: {
49
+ latency?: number;
50
+ statusCode?: number;
51
+ responseBody?: unknown;
52
+ requestBody?: unknown;
53
+ }): Promise<void>;
54
+ /**
55
+ * Start analytics session
56
+ */
57
+ startSession(config: SessionConfig): void;
58
+ /**
59
+ * End analytics session
60
+ */
61
+ endSession(exitReason: string, metrics?: Record<string, number>): Promise<void>;
62
+ /**
63
+ * Flush buffered events
64
+ */
65
+ flush(): Promise<void>;
66
+ /**
67
+ * Cleanup and destroy analytics
68
+ */
69
+ destroy(): Promise<void>;
70
+ /**
71
+ * Check if analytics is enabled
72
+ */
73
+ get isEnabled(): boolean;
74
+ }
75
+ /**
76
+ * Initialize global analytics instance
77
+ * Automatically registers default plugins for API tracking
78
+ */
79
+ export declare function initAnalytics(config?: Partial<AnalyticsConfig>, options?: {
80
+ registerDefaultPlugins?: boolean;
81
+ }): void;
82
+ /**
83
+ * Register default analytics plugins
84
+ * Tracks API request/response patterns, success rates, and latency
85
+ */
86
+ export declare function registerDefaultPlugins(analytics: Analytics): void;
87
+ /**
88
+ * Get global analytics instance
89
+ * Auto-initializes if not already initialized
90
+ */
91
+ export declare function getAnalytics(): Analytics;
92
+ /**
93
+ * Destroy global analytics instance
94
+ */
95
+ export declare function destroyAnalytics(): Promise<void>;
96
+ export type { AnalyticsConfig, AnalyticsEvent, EventType, SessionConfig, } from './types.js';
97
+ export { DEFAULT_ANALYTICS_CONFIG } from './types.js';
98
+ export type { AnalyticsPlugin } from './plugins/types.js';
99
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/analytics/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACV,eAAe,EAEf,SAAS,EACT,aAAa,EACd,MAAM,YAAY,CAAC;AAMpB,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD;;;GAGG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,SAAS,CAA+B;IAChD,OAAO,CAAC,MAAM,CAAgC;IAC9C,OAAO,CAAC,OAAO,CAAiB;IAChC,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,cAAc,CAAuB;IAG7C,OAAO,CAAC,OAAO,CAAyB;gBAG5B,MAAM,GAAE,OAAO,CAAC,eAAe,CAAM;IAUjD;;;OAGG;IACH,cAAc,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI;IAW7C;;OAEG;IACH,UAAU,IAAI,eAAe,EAAE;IAI/B;;;OAGG;IACH,gBAAgB,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAiB3D;;OAEG;IACH,sBAAsB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAe1E;;OAEG;IACH,OAAO,CAAC,UAAU;IAmBlB;;OAEG;IACG,KAAK,CACT,SAAS,EAAE,SAAS,EACpB,UAAU,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EACxC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC/B,OAAO,CAAC,IAAI,CAAC;IAwDhB;;OAEG;IACG,gBAAgB,CAAC,IAAI,EAAE;QAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,YAAY,CAAC,EAAE,OAAO,CAAC;QACvB,WAAW,CAAC,EAAE,OAAO,CAAC;KACvB,GAAG,OAAO,CAAC,IAAI,CAAC;IAcjB;;OAEG;IACH,YAAY,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI;IAoBzC;;OAEG;IACG,UAAU,CACd,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC/B,OAAO,CAAC,IAAI,CAAC;IAuBhB;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAM5B;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAO9B;;OAEG;IACH,IAAI,SAAS,IAAI,OAAO,CAEvB;CACF;AAOD;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,MAAM,GAAE,OAAO,CAAC,eAAe,CAAM,EACrC,OAAO,GAAE;IAAE,sBAAsB,CAAC,EAAE,OAAO,CAAA;CAAqC,GAC/E,IAAI,CAON;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI,CAkBjE;AAED;;;GAGG;AACH,wBAAgB,YAAY,IAAI,SAAS,CAMxC;AAED;;GAEG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC,CAKtD;AAGD,YAAY,EACV,eAAe,EACf,cAAc,EACd,SAAS,EACT,aAAa,GACd,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAGtD,YAAY,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC"}