@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.
- package/README.md +70 -861
- package/dist/agents/codemie-code/agent.d.ts.map +1 -1
- package/dist/agents/codemie-code/agent.js +35 -4
- package/dist/agents/codemie-code/agent.js.map +1 -1
- package/dist/agents/codemie-code/tools/index.d.ts.map +1 -1
- package/dist/agents/codemie-code/tools/index.js +5 -3
- package/dist/agents/codemie-code/tools/index.js.map +1 -1
- package/dist/agents/core/AgentCLI.d.ts.map +1 -1
- package/dist/agents/core/AgentCLI.js +57 -11
- package/dist/agents/core/AgentCLI.js.map +1 -1
- package/dist/agents/core/BaseAgentAdapter.d.ts +4 -4
- package/dist/agents/core/BaseAgentAdapter.d.ts.map +1 -1
- package/dist/agents/core/BaseAgentAdapter.js +59 -23
- package/dist/agents/core/BaseAgentAdapter.js.map +1 -1
- package/dist/agents/core/types.d.ts +18 -0
- package/dist/agents/core/types.d.ts.map +1 -1
- package/dist/agents/plugins/claude.plugin.d.ts +0 -3
- package/dist/agents/plugins/claude.plugin.d.ts.map +1 -1
- package/dist/agents/plugins/claude.plugin.js +12 -1
- package/dist/agents/plugins/claude.plugin.js.map +1 -1
- package/dist/agents/plugins/codemie-code.plugin.js +1 -1
- package/dist/agents/plugins/codemie-code.plugin.js.map +1 -1
- package/dist/agents/plugins/codex.plugin.d.ts.map +1 -1
- package/dist/agents/plugins/codex.plugin.js +40 -4
- package/dist/agents/plugins/codex.plugin.js.map +1 -1
- package/dist/agents/plugins/gemini.plugin.d.ts.map +1 -1
- package/dist/agents/plugins/gemini.plugin.js +51 -6
- package/dist/agents/plugins/gemini.plugin.js.map +1 -1
- package/dist/agents/registry.d.ts +15 -2
- package/dist/agents/registry.d.ts.map +1 -1
- package/dist/agents/registry.js +30 -6
- package/dist/agents/registry.js.map +1 -1
- package/dist/analytics/aggregation/adapters/claude.adapter.d.ts +37 -0
- package/dist/analytics/aggregation/adapters/claude.adapter.d.ts.map +1 -0
- package/dist/analytics/aggregation/adapters/claude.adapter.js +471 -0
- package/dist/analytics/aggregation/adapters/claude.adapter.js.map +1 -0
- package/dist/analytics/aggregation/adapters/codex.adapter.d.ts +25 -0
- package/dist/analytics/aggregation/adapters/codex.adapter.d.ts.map +1 -0
- package/dist/analytics/aggregation/adapters/codex.adapter.js +376 -0
- package/dist/analytics/aggregation/adapters/codex.adapter.js.map +1 -0
- package/dist/analytics/aggregation/adapters/gemini.adapter.d.ts +28 -0
- package/dist/analytics/aggregation/adapters/gemini.adapter.d.ts.map +1 -0
- package/dist/analytics/aggregation/adapters/gemini.adapter.js +320 -0
- package/dist/analytics/aggregation/adapters/gemini.adapter.js.map +1 -0
- package/dist/analytics/aggregation/adapters/index.d.ts +7 -0
- package/dist/analytics/aggregation/adapters/index.d.ts.map +1 -0
- package/dist/analytics/aggregation/adapters/index.js +7 -0
- package/dist/analytics/aggregation/adapters/index.js.map +1 -0
- package/dist/analytics/aggregation/aggregator.d.ts +49 -0
- package/dist/analytics/aggregation/aggregator.d.ts.map +1 -0
- package/dist/analytics/aggregation/aggregator.js +239 -0
- package/dist/analytics/aggregation/aggregator.js.map +1 -0
- package/dist/analytics/aggregation/core/BaseAnalyticsAdapter.d.ts +63 -0
- package/dist/analytics/aggregation/core/BaseAnalyticsAdapter.d.ts.map +1 -0
- package/dist/analytics/aggregation/core/BaseAnalyticsAdapter.js +58 -0
- package/dist/analytics/aggregation/core/BaseAnalyticsAdapter.js.map +1 -0
- package/dist/analytics/aggregation/core/adapter.interface.d.ts +65 -0
- package/dist/analytics/aggregation/core/adapter.interface.d.ts.map +1 -0
- package/dist/analytics/aggregation/core/adapter.interface.js +9 -0
- package/dist/analytics/aggregation/core/adapter.interface.js.map +1 -0
- package/dist/analytics/aggregation/core/aggregation-utils.d.ts +66 -0
- package/dist/analytics/aggregation/core/aggregation-utils.d.ts.map +1 -0
- package/dist/analytics/aggregation/core/aggregation-utils.js +83 -0
- package/dist/analytics/aggregation/core/aggregation-utils.js.map +1 -0
- package/dist/analytics/aggregation/core/discovery.d.ts +40 -0
- package/dist/analytics/aggregation/core/discovery.d.ts.map +1 -0
- package/dist/analytics/aggregation/core/discovery.js +132 -0
- package/dist/analytics/aggregation/core/discovery.js.map +1 -0
- package/dist/analytics/aggregation/core/file-utils.d.ts +23 -0
- package/dist/analytics/aggregation/core/file-utils.d.ts.map +1 -0
- package/dist/analytics/aggregation/core/file-utils.js +208 -0
- package/dist/analytics/aggregation/core/file-utils.js.map +1 -0
- package/dist/analytics/aggregation/core/index.d.ts +11 -0
- package/dist/analytics/aggregation/core/index.d.ts.map +1 -0
- package/dist/analytics/aggregation/core/index.js +11 -0
- package/dist/analytics/aggregation/core/index.js.map +1 -0
- package/dist/analytics/aggregation/core/project-mapping.d.ts +50 -0
- package/dist/analytics/aggregation/core/project-mapping.d.ts.map +1 -0
- package/dist/analytics/aggregation/core/project-mapping.js +102 -0
- package/dist/analytics/aggregation/core/project-mapping.js.map +1 -0
- package/dist/analytics/aggregation/core/streaming.d.ts +26 -0
- package/dist/analytics/aggregation/core/streaming.d.ts.map +1 -0
- package/dist/analytics/aggregation/core/streaming.js +58 -0
- package/dist/analytics/aggregation/core/streaming.js.map +1 -0
- package/dist/analytics/aggregation/index.d.ts +8 -0
- package/dist/analytics/aggregation/index.d.ts.map +1 -0
- package/dist/analytics/aggregation/index.js +8 -0
- package/dist/analytics/aggregation/index.js.map +1 -0
- package/dist/analytics/aggregation/types.d.ts +258 -0
- package/dist/analytics/aggregation/types.d.ts.map +1 -0
- package/dist/analytics/aggregation/types.js +8 -0
- package/dist/analytics/aggregation/types.js.map +1 -0
- package/dist/analytics/collector.d.ts +46 -0
- package/dist/analytics/collector.d.ts.map +1 -0
- package/dist/analytics/collector.js +83 -0
- package/dist/analytics/collector.js.map +1 -0
- package/dist/analytics/config.d.ts +15 -0
- package/dist/analytics/config.d.ts.map +1 -0
- package/dist/analytics/config.js +65 -0
- package/dist/analytics/config.js.map +1 -0
- package/dist/analytics/index.d.ts +99 -0
- package/dist/analytics/index.d.ts.map +1 -0
- package/dist/analytics/index.js +288 -0
- package/dist/analytics/index.js.map +1 -0
- package/dist/analytics/plugins/api-metrics.plugin.d.ts +26 -0
- package/dist/analytics/plugins/api-metrics.plugin.d.ts.map +1 -0
- package/dist/analytics/plugins/api-metrics.plugin.js +97 -0
- package/dist/analytics/plugins/api-metrics.plugin.js.map +1 -0
- package/dist/analytics/plugins/index.d.ts +15 -0
- package/dist/analytics/plugins/index.d.ts.map +1 -0
- package/dist/analytics/plugins/index.js +15 -0
- package/dist/analytics/plugins/index.js.map +1 -0
- package/dist/analytics/plugins/model-metrics.plugin.d.ts +39 -0
- package/dist/analytics/plugins/model-metrics.plugin.d.ts.map +1 -0
- package/dist/analytics/plugins/model-metrics.plugin.js +105 -0
- package/dist/analytics/plugins/model-metrics.plugin.js.map +1 -0
- package/dist/analytics/plugins/provider-metrics.plugin.d.ts +41 -0
- package/dist/analytics/plugins/provider-metrics.plugin.d.ts.map +1 -0
- package/dist/analytics/plugins/provider-metrics.plugin.js +123 -0
- package/dist/analytics/plugins/provider-metrics.plugin.js.map +1 -0
- package/dist/analytics/plugins/types.d.ts +61 -0
- package/dist/analytics/plugins/types.d.ts.map +1 -0
- package/dist/analytics/plugins/types.js +54 -0
- package/dist/analytics/plugins/types.js.map +1 -0
- package/dist/analytics/privacy.d.ts +10 -0
- package/dist/analytics/privacy.d.ts.map +1 -0
- package/dist/analytics/privacy.js +20 -0
- package/dist/analytics/privacy.js.map +1 -0
- package/dist/analytics/session.d.ts +56 -0
- package/dist/analytics/session.d.ts.map +1 -0
- package/dist/analytics/session.js +95 -0
- package/dist/analytics/session.js.map +1 -0
- package/dist/analytics/types.d.ts +104 -0
- package/dist/analytics/types.d.ts.map +1 -0
- package/dist/analytics/types.js +15 -0
- package/dist/analytics/types.js.map +1 -0
- package/dist/analytics/writer.d.ts +18 -0
- package/dist/analytics/writer.d.ts.map +1 -0
- package/dist/analytics/writer.js +44 -0
- package/dist/analytics/writer.js.map +1 -0
- package/dist/cli/commands/analytics.d.ts +3 -0
- package/dist/cli/commands/analytics.d.ts.map +1 -0
- package/dist/cli/commands/analytics.js +579 -0
- package/dist/cli/commands/analytics.js.map +1 -0
- package/dist/cli/commands/config.d.ts.map +1 -1
- package/dist/cli/commands/config.js +14 -0
- package/dist/cli/commands/config.js.map +1 -1
- package/dist/cli/commands/profile.d.ts.map +1 -1
- package/dist/cli/commands/profile.js +41 -0
- package/dist/cli/commands/profile.js.map +1 -1
- package/dist/cli/commands/setup.js +70 -1
- package/dist/cli/commands/setup.js.map +1 -1
- package/dist/cli/index.js +2 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/env/types.d.ts +2 -0
- package/dist/env/types.d.ts.map +1 -1
- package/dist/env/types.js.map +1 -1
- package/dist/utils/analytics-reader.d.ts +117 -0
- package/dist/utils/analytics-reader.d.ts.map +1 -0
- package/dist/utils/analytics-reader.js +421 -0
- package/dist/utils/analytics-reader.js.map +1 -0
- package/dist/utils/codemie-integration-validator.d.ts.map +1 -1
- package/dist/utils/codemie-integration-validator.js +3 -16
- package/dist/utils/codemie-integration-validator.js.map +1 -1
- package/dist/utils/codemie-proxy.d.ts +80 -0
- package/dist/utils/codemie-proxy.d.ts.map +1 -0
- package/dist/utils/codemie-proxy.js +348 -0
- package/dist/utils/codemie-proxy.js.map +1 -0
- package/dist/utils/config-loader.d.ts +7 -0
- package/dist/utils/config-loader.d.ts.map +1 -1
- package/dist/utils/config-loader.js +18 -0
- package/dist/utils/config-loader.js.map +1 -1
- package/dist/utils/date-formatter.d.ts +88 -0
- package/dist/utils/date-formatter.d.ts.map +1 -0
- package/dist/utils/date-formatter.js +133 -0
- package/dist/utils/date-formatter.js.map +1 -0
- package/dist/utils/installation-id.d.ts +10 -0
- package/dist/utils/installation-id.d.ts.map +1 -0
- package/dist/utils/installation-id.js +30 -0
- package/dist/utils/installation-id.js.map +1 -0
- package/dist/utils/logger.d.ts +1 -15
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +5 -86
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/proxy/errors.d.ts +45 -0
- package/dist/utils/proxy/errors.d.ts.map +1 -0
- package/dist/utils/proxy/errors.js +103 -0
- package/dist/utils/proxy/errors.js.map +1 -0
- package/dist/utils/proxy/http-client.d.ts +46 -0
- package/dist/utils/proxy/http-client.d.ts.map +1 -0
- package/dist/utils/proxy/http-client.js +139 -0
- package/dist/utils/proxy/http-client.js.map +1 -0
- package/dist/utils/proxy/interceptors.d.ts +69 -0
- package/dist/utils/proxy/interceptors.d.ts.map +1 -0
- package/dist/utils/proxy/interceptors.js +308 -0
- package/dist/utils/proxy/interceptors.js.map +1 -0
- package/dist/utils/proxy/types.d.ts +45 -0
- package/dist/utils/proxy/types.d.ts.map +1 -0
- package/dist/utils/proxy/types.js +7 -0
- package/dist/utils/proxy/types.js.map +1 -0
- package/package.json +43 -6
- package/dist/utils/sso-gateway.d.ts +0 -75
- package/dist/utils/sso-gateway.d.ts.map +0 -1
- package/dist/utils/sso-gateway.js +0 -453
- 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 @@
|
|
|
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"}
|