@codemieai/code 0.0.10 → 0.0.12

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 (129) hide show
  1. package/README.md +23 -98
  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 +31 -23
  14. package/dist/agents/core/BaseAgentAdapter.js.map +1 -1
  15. package/dist/agents/plugins/codemie-code.plugin.js +1 -1
  16. package/dist/agents/plugins/codemie-code.plugin.js.map +1 -1
  17. package/dist/agents/plugins/gemini.plugin.js +1 -1
  18. package/dist/agents/plugins/gemini.plugin.js.map +1 -1
  19. package/dist/analytics/collector.d.ts +46 -0
  20. package/dist/analytics/collector.d.ts.map +1 -0
  21. package/dist/analytics/collector.js +83 -0
  22. package/dist/analytics/collector.js.map +1 -0
  23. package/dist/analytics/config.d.ts +14 -0
  24. package/dist/analytics/config.d.ts.map +1 -0
  25. package/dist/analytics/config.js +46 -0
  26. package/dist/analytics/config.js.map +1 -0
  27. package/dist/analytics/index.d.ts +108 -0
  28. package/dist/analytics/index.d.ts.map +1 -0
  29. package/dist/analytics/index.js +322 -0
  30. package/dist/analytics/index.js.map +1 -0
  31. package/dist/analytics/plugins/api-metrics.plugin.d.ts +23 -0
  32. package/dist/analytics/plugins/api-metrics.plugin.d.ts.map +1 -0
  33. package/dist/analytics/plugins/api-metrics.plugin.js +113 -0
  34. package/dist/analytics/plugins/api-metrics.plugin.js.map +1 -0
  35. package/dist/analytics/plugins/index.d.ts +15 -0
  36. package/dist/analytics/plugins/index.d.ts.map +1 -0
  37. package/dist/analytics/plugins/index.js +15 -0
  38. package/dist/analytics/plugins/index.js.map +1 -0
  39. package/dist/analytics/plugins/model-metrics.plugin.d.ts +36 -0
  40. package/dist/analytics/plugins/model-metrics.plugin.d.ts.map +1 -0
  41. package/dist/analytics/plugins/model-metrics.plugin.js +115 -0
  42. package/dist/analytics/plugins/model-metrics.plugin.js.map +1 -0
  43. package/dist/analytics/plugins/provider-metrics.plugin.d.ts +38 -0
  44. package/dist/analytics/plugins/provider-metrics.plugin.d.ts.map +1 -0
  45. package/dist/analytics/plugins/provider-metrics.plugin.js +138 -0
  46. package/dist/analytics/plugins/provider-metrics.plugin.js.map +1 -0
  47. package/dist/analytics/plugins/types.d.ts +63 -0
  48. package/dist/analytics/plugins/types.d.ts.map +1 -0
  49. package/dist/analytics/plugins/types.js +54 -0
  50. package/dist/analytics/plugins/types.js.map +1 -0
  51. package/dist/analytics/privacy.d.ts +10 -0
  52. package/dist/analytics/privacy.d.ts.map +1 -0
  53. package/dist/analytics/privacy.js +20 -0
  54. package/dist/analytics/privacy.js.map +1 -0
  55. package/dist/analytics/session.d.ts +56 -0
  56. package/dist/analytics/session.d.ts.map +1 -0
  57. package/dist/analytics/session.js +95 -0
  58. package/dist/analytics/session.js.map +1 -0
  59. package/dist/analytics/types.d.ts +104 -0
  60. package/dist/analytics/types.d.ts.map +1 -0
  61. package/dist/analytics/types.js +15 -0
  62. package/dist/analytics/types.js.map +1 -0
  63. package/dist/analytics/writer.d.ts +18 -0
  64. package/dist/analytics/writer.d.ts.map +1 -0
  65. package/dist/analytics/writer.js +44 -0
  66. package/dist/analytics/writer.js.map +1 -0
  67. package/dist/cli/commands/analytics.d.ts +3 -0
  68. package/dist/cli/commands/analytics.d.ts.map +1 -0
  69. package/dist/cli/commands/analytics.js +319 -0
  70. package/dist/cli/commands/analytics.js.map +1 -0
  71. package/dist/cli/commands/config.d.ts.map +1 -1
  72. package/dist/cli/commands/config.js +14 -0
  73. package/dist/cli/commands/config.js.map +1 -1
  74. package/dist/cli/commands/profile.d.ts.map +1 -1
  75. package/dist/cli/commands/profile.js +41 -0
  76. package/dist/cli/commands/profile.js.map +1 -1
  77. package/dist/cli/index.js +2 -0
  78. package/dist/cli/index.js.map +1 -1
  79. package/dist/env/types.d.ts +2 -0
  80. package/dist/env/types.d.ts.map +1 -1
  81. package/dist/env/types.js.map +1 -1
  82. package/dist/utils/analytics-reader.d.ts +117 -0
  83. package/dist/utils/analytics-reader.d.ts.map +1 -0
  84. package/dist/utils/analytics-reader.js +421 -0
  85. package/dist/utils/analytics-reader.js.map +1 -0
  86. package/dist/utils/codemie-integration-validator.d.ts.map +1 -1
  87. package/dist/utils/codemie-integration-validator.js +3 -16
  88. package/dist/utils/codemie-integration-validator.js.map +1 -1
  89. package/dist/utils/codemie-proxy.d.ts +80 -0
  90. package/dist/utils/codemie-proxy.d.ts.map +1 -0
  91. package/dist/utils/codemie-proxy.js +335 -0
  92. package/dist/utils/codemie-proxy.js.map +1 -0
  93. package/dist/utils/config-loader.d.ts +7 -0
  94. package/dist/utils/config-loader.d.ts.map +1 -1
  95. package/dist/utils/config-loader.js +18 -0
  96. package/dist/utils/config-loader.js.map +1 -1
  97. package/dist/utils/date-formatter.d.ts +88 -0
  98. package/dist/utils/date-formatter.d.ts.map +1 -0
  99. package/dist/utils/date-formatter.js +133 -0
  100. package/dist/utils/date-formatter.js.map +1 -0
  101. package/dist/utils/installation-id.d.ts +10 -0
  102. package/dist/utils/installation-id.d.ts.map +1 -0
  103. package/dist/utils/installation-id.js +30 -0
  104. package/dist/utils/installation-id.js.map +1 -0
  105. package/dist/utils/logger.d.ts +1 -15
  106. package/dist/utils/logger.d.ts.map +1 -1
  107. package/dist/utils/logger.js +5 -86
  108. package/dist/utils/logger.js.map +1 -1
  109. package/dist/utils/proxy/errors.d.ts +45 -0
  110. package/dist/utils/proxy/errors.d.ts.map +1 -0
  111. package/dist/utils/proxy/errors.js +103 -0
  112. package/dist/utils/proxy/errors.js.map +1 -0
  113. package/dist/utils/proxy/http-client.d.ts +46 -0
  114. package/dist/utils/proxy/http-client.d.ts.map +1 -0
  115. package/dist/utils/proxy/http-client.js +133 -0
  116. package/dist/utils/proxy/http-client.js.map +1 -0
  117. package/dist/utils/proxy/interceptors.d.ts +69 -0
  118. package/dist/utils/proxy/interceptors.d.ts.map +1 -0
  119. package/dist/utils/proxy/interceptors.js +319 -0
  120. package/dist/utils/proxy/interceptors.js.map +1 -0
  121. package/dist/utils/proxy/types.d.ts +45 -0
  122. package/dist/utils/proxy/types.d.ts.map +1 -0
  123. package/dist/utils/proxy/types.js +7 -0
  124. package/dist/utils/proxy/types.js.map +1 -0
  125. package/package.json +46 -5
  126. package/dist/utils/sso-gateway.d.ts +0 -75
  127. package/dist/utils/sso-gateway.d.ts.map +0 -1
  128. package/dist/utils/sso-gateway.js +0 -453
  129. package/dist/utils/sso-gateway.js.map +0 -1
@@ -0,0 +1,421 @@
1
+ /**
2
+ * Analytics Reader Utility
3
+ * Reads and aggregates analytics data from JSONL files
4
+ */
5
+ import { readFile, readdir, stat, unlink } from 'node:fs/promises';
6
+ import { join } from 'node:path';
7
+ import { homedir } from 'node:os';
8
+ import { createReadStream, createWriteStream } from 'node:fs';
9
+ import { createInterface } from 'node:readline';
10
+ import { getUTCDateString, localDateToUTCRange, getUTCFilesForLocalDate } from './date-formatter.js';
11
+ import { AgentRegistry } from '../agents/registry.js';
12
+ /**
13
+ * Get analytics directory path
14
+ */
15
+ export function getAnalyticsPath() {
16
+ return join(homedir(), '.codemie', 'analytics');
17
+ }
18
+ /**
19
+ * Get analytics file path for a specific date
20
+ * @param date - Date in YYYY-MM-DD format
21
+ */
22
+ export function getAnalyticsFilePath(date) {
23
+ return join(getAnalyticsPath(), `${date}.jsonl`);
24
+ }
25
+ /**
26
+ * Read analytics events for a specific date
27
+ * @param date - Date in YYYY-MM-DD format (UTC)
28
+ * @returns Array of analytics events
29
+ */
30
+ export async function readAnalyticsForDate(date) {
31
+ const filePath = getAnalyticsFilePath(date);
32
+ const events = [];
33
+ try {
34
+ const content = await readFile(filePath, 'utf-8');
35
+ const lines = content.trim().split('\n');
36
+ for (const line of lines) {
37
+ if (line.trim()) {
38
+ try {
39
+ const event = JSON.parse(line);
40
+ events.push(event);
41
+ }
42
+ catch {
43
+ // Skip invalid lines
44
+ }
45
+ }
46
+ }
47
+ }
48
+ catch (error) {
49
+ if (error.code === 'ENOENT') {
50
+ // File doesn't exist, return empty array
51
+ return [];
52
+ }
53
+ throw error;
54
+ }
55
+ return events;
56
+ }
57
+ /**
58
+ * Read analytics events for a local date
59
+ * Handles timezone conversion to read correct UTC files
60
+ * @param localDate - Date in YYYY-MM-DD format (local timezone)
61
+ * @returns Array of analytics events that fall within the local date
62
+ */
63
+ export async function readAnalyticsForLocalDate(localDate) {
64
+ // Get UTC files that might contain events for this local date
65
+ const utcDates = getUTCFilesForLocalDate(localDate);
66
+ // Get the UTC time range for the local date
67
+ const { start, end } = localDateToUTCRange(localDate);
68
+ // Read all potentially relevant UTC files
69
+ const allEvents = [];
70
+ for (const utcDate of utcDates) {
71
+ const events = await readAnalyticsForDate(utcDate);
72
+ allEvents.push(...events);
73
+ }
74
+ // Filter to only events within the local date range
75
+ return allEvents.filter(event => {
76
+ const eventTime = new Date(event.timestamp);
77
+ return eventTime >= start && eventTime <= end;
78
+ });
79
+ }
80
+ /**
81
+ * Read analytics events for a date range (UTC dates)
82
+ * @param from - Start date (YYYY-MM-DD, UTC)
83
+ * @param to - End date (YYYY-MM-DD, UTC)
84
+ * @returns Array of analytics events
85
+ */
86
+ export async function readAnalyticsForDateRange(from, to) {
87
+ const events = [];
88
+ const fromDate = new Date(from + 'T00:00:00.000Z');
89
+ const toDate = new Date(to + 'T23:59:59.999Z');
90
+ // Iterate through each UTC date in the range
91
+ const currentDate = new Date(fromDate);
92
+ while (currentDate <= toDate) {
93
+ const dateStr = getUTCDateString(currentDate);
94
+ const dateEvents = await readAnalyticsForDate(dateStr);
95
+ events.push(...dateEvents);
96
+ currentDate.setUTCDate(currentDate.getUTCDate() + 1);
97
+ }
98
+ return events;
99
+ }
100
+ /**
101
+ * Read analytics events for a local date range
102
+ * Handles timezone conversion to read correct UTC files
103
+ * @param from - Start date (YYYY-MM-DD, local timezone)
104
+ * @param to - End date (YYYY-MM-DD, local timezone)
105
+ * @returns Array of analytics events that fall within the local date range
106
+ */
107
+ export async function readAnalyticsForLocalDateRange(from, to) {
108
+ // Get UTC time range for the local date range
109
+ const { start: startLocal } = localDateToUTCRange(from);
110
+ const { end: endLocal } = localDateToUTCRange(to);
111
+ // Determine which UTC files to read
112
+ const utcFrom = getUTCDateString(startLocal);
113
+ const utcTo = getUTCDateString(endLocal);
114
+ // Read all events in UTC range
115
+ const allEvents = await readAnalyticsForDateRange(utcFrom, utcTo);
116
+ // Filter to only events within the local date range
117
+ return allEvents.filter(event => {
118
+ const eventTime = new Date(event.timestamp);
119
+ return eventTime >= startLocal && eventTime <= endLocal;
120
+ });
121
+ }
122
+ /**
123
+ * Filter analytics events
124
+ * @param events - Array of events to filter
125
+ * @param filters - Filter criteria
126
+ * @returns Filtered events
127
+ */
128
+ export function filterEvents(events, filters) {
129
+ return events.filter(event => {
130
+ if (filters.agent && event.agent !== filters.agent) {
131
+ return false;
132
+ }
133
+ if (filters.eventType && event.eventType !== filters.eventType) {
134
+ return false;
135
+ }
136
+ if (filters.from || filters.to) {
137
+ const eventDate = new Date(event.timestamp);
138
+ if (filters.from && eventDate < filters.from) {
139
+ return false;
140
+ }
141
+ if (filters.to && eventDate > filters.to) {
142
+ return false;
143
+ }
144
+ }
145
+ return true;
146
+ });
147
+ }
148
+ /**
149
+ * Calculate statistics from analytics events
150
+ * @param events - Array of analytics events
151
+ * @returns Calculated statistics
152
+ */
153
+ export function calculateStats(events) {
154
+ const sessions = new Set();
155
+ let totalLatency = 0;
156
+ let latencyCount = 0;
157
+ // API counters
158
+ let apiRequests = 0;
159
+ let apiErrors = 0;
160
+ // Agent usage tracking
161
+ const agentUsage = {};
162
+ // Model usage tracking
163
+ const modelUsage = {};
164
+ for (const event of events) {
165
+ // Track sessions
166
+ if (event.sessionId) {
167
+ sessions.add(event.sessionId);
168
+ }
169
+ // Track event types
170
+ switch (event.eventType) {
171
+ case 'api_request':
172
+ apiRequests++;
173
+ if (event.agent) {
174
+ if (!agentUsage[event.agent]) {
175
+ agentUsage[event.agent] = { sessions: new Set(), apiCalls: 0 };
176
+ }
177
+ agentUsage[event.agent].apiCalls++;
178
+ }
179
+ if (event.model) {
180
+ if (!modelUsage[event.model]) {
181
+ modelUsage[event.model] = { apiCalls: 0 };
182
+ }
183
+ modelUsage[event.model].apiCalls++;
184
+ }
185
+ break;
186
+ case 'api_error':
187
+ apiErrors++;
188
+ if (event.agent) {
189
+ if (!agentUsage[event.agent]) {
190
+ agentUsage[event.agent] = { sessions: new Set(), apiCalls: 0 };
191
+ }
192
+ agentUsage[event.agent].apiCalls++;
193
+ }
194
+ if (event.model) {
195
+ if (!modelUsage[event.model]) {
196
+ modelUsage[event.model] = { apiCalls: 0 };
197
+ }
198
+ modelUsage[event.model].apiCalls++;
199
+ }
200
+ break;
201
+ }
202
+ // Track latency
203
+ if (event.metrics?.latencyMs) {
204
+ totalLatency += event.metrics.latencyMs;
205
+ latencyCount++;
206
+ }
207
+ // Ensure agent sessions are tracked
208
+ if (event.agent && event.sessionId) {
209
+ if (!agentUsage[event.agent]) {
210
+ agentUsage[event.agent] = { sessions: new Set(), apiCalls: 0 };
211
+ }
212
+ agentUsage[event.agent].sessions.add(event.sessionId);
213
+ }
214
+ }
215
+ // Calculate success rate from API responses
216
+ let apiSuccessCount = 0;
217
+ let apiTotalCount = 0;
218
+ for (const event of events) {
219
+ if (event.eventType === 'api_response' && event.attributes.statusCode) {
220
+ apiTotalCount++;
221
+ const statusCode = Number(event.attributes.statusCode);
222
+ if (statusCode >= 200 && statusCode < 300) {
223
+ apiSuccessCount++;
224
+ }
225
+ }
226
+ }
227
+ const successRate = apiTotalCount > 0 ? (apiSuccessCount / apiTotalCount) * 100 : 0;
228
+ // Convert agent usage to final format with display names from registry
229
+ const finalAgentUsage = {};
230
+ for (const [agentName, data] of Object.entries(agentUsage)) {
231
+ // Get display name from plugin registry
232
+ const adapter = AgentRegistry.getAgent(agentName);
233
+ const displayName = adapter?.displayName || agentName;
234
+ finalAgentUsage[agentName] = {
235
+ displayName,
236
+ sessions: data.sessions.size,
237
+ apiCalls: data.apiCalls
238
+ };
239
+ }
240
+ return {
241
+ totalSessions: sessions.size,
242
+ successRate,
243
+ avgLatency: latencyCount > 0 ? totalLatency / latencyCount : 0,
244
+ apiRequests,
245
+ apiErrors,
246
+ agentUsage: finalAgentUsage,
247
+ modelUsage
248
+ };
249
+ }
250
+ /**
251
+ * Export analytics events to CSV format
252
+ * @param events - Array of events to export
253
+ * @param outputPath - Output file path
254
+ */
255
+ export async function exportToCSV(events, outputPath) {
256
+ const writeStream = createWriteStream(outputPath);
257
+ // Write CSV header
258
+ const headers = [
259
+ 'timestamp',
260
+ 'eventType',
261
+ 'sessionId',
262
+ 'installationId',
263
+ 'agent',
264
+ 'agentVersion',
265
+ 'cliVersion',
266
+ 'profile',
267
+ 'provider',
268
+ 'model',
269
+ 'latencyMs',
270
+ 'attributes'
271
+ ];
272
+ writeStream.write(headers.join(',') + '\n');
273
+ // Write events
274
+ for (const event of events) {
275
+ const row = [
276
+ event.timestamp,
277
+ event.eventType,
278
+ event.sessionId,
279
+ event.installationId,
280
+ event.agent,
281
+ event.agentVersion,
282
+ event.cliVersion,
283
+ event.profile,
284
+ event.provider,
285
+ event.model,
286
+ event.metrics?.latencyMs || '',
287
+ JSON.stringify(event.attributes).replace(/"/g, '""') // Escape quotes
288
+ ];
289
+ writeStream.write(row.join(',') + '\n');
290
+ }
291
+ writeStream.end();
292
+ return new Promise((resolve, reject) => {
293
+ writeStream.on('finish', resolve);
294
+ writeStream.on('error', reject);
295
+ });
296
+ }
297
+ /**
298
+ * Export analytics events to JSON format
299
+ * @param events - Array of events to export
300
+ * @param outputPath - Output file path
301
+ */
302
+ export async function exportToJSON(events, outputPath) {
303
+ const writeStream = createWriteStream(outputPath);
304
+ // Write as JSON array
305
+ writeStream.write('[\n');
306
+ for (let i = 0; i < events.length; i++) {
307
+ const event = events[i];
308
+ const json = JSON.stringify(event, null, 2);
309
+ const indented = json.split('\n').map(line => ' ' + line).join('\n');
310
+ writeStream.write(indented);
311
+ if (i < events.length - 1) {
312
+ writeStream.write(',\n');
313
+ }
314
+ }
315
+ writeStream.write('\n]\n');
316
+ writeStream.end();
317
+ return new Promise((resolve, reject) => {
318
+ writeStream.on('finish', resolve);
319
+ writeStream.on('error', reject);
320
+ });
321
+ }
322
+ /**
323
+ * List all analytics files
324
+ * @returns Array of file info with dates and sizes
325
+ */
326
+ export async function listAnalyticsFiles() {
327
+ const analyticsPath = getAnalyticsPath();
328
+ const files = [];
329
+ try {
330
+ const entries = await readdir(analyticsPath);
331
+ for (const entry of entries) {
332
+ if (entry.endsWith('.jsonl')) {
333
+ const filePath = join(analyticsPath, entry);
334
+ const stats = await stat(filePath);
335
+ const date = entry.replace('.jsonl', '');
336
+ // Count events by counting lines
337
+ let eventCount = 0;
338
+ try {
339
+ const fileStream = createReadStream(filePath);
340
+ const rl = createInterface({
341
+ input: fileStream,
342
+ crlfDelay: Infinity
343
+ });
344
+ for await (const line of rl) {
345
+ if (line.trim()) {
346
+ eventCount++;
347
+ }
348
+ }
349
+ }
350
+ catch {
351
+ // If counting fails, estimate from file size
352
+ eventCount = Math.floor(stats.size / 500); // Rough estimate: 500 bytes per event
353
+ }
354
+ files.push({
355
+ date,
356
+ path: filePath,
357
+ size: stats.size,
358
+ events: eventCount
359
+ });
360
+ }
361
+ }
362
+ // Sort by date descending (newest first)
363
+ files.sort((a, b) => b.date.localeCompare(a.date));
364
+ }
365
+ catch (error) {
366
+ if (error.code === 'ENOENT') {
367
+ // Directory doesn't exist, return empty array
368
+ return [];
369
+ }
370
+ throw error;
371
+ }
372
+ return files;
373
+ }
374
+ /**
375
+ * Delete analytics files older than a threshold
376
+ * @param olderThanDays - Delete files older than this many days
377
+ * @returns Array of deleted file paths
378
+ */
379
+ export async function clearOldAnalytics(olderThanDays) {
380
+ const files = await listAnalyticsFiles();
381
+ const threshold = new Date();
382
+ threshold.setDate(threshold.getDate() - olderThanDays);
383
+ const deletedFiles = [];
384
+ for (const file of files) {
385
+ const fileDate = new Date(file.date);
386
+ if (fileDate < threshold) {
387
+ await unlink(file.path);
388
+ deletedFiles.push(file.path);
389
+ }
390
+ }
391
+ return deletedFiles;
392
+ }
393
+ /**
394
+ * Format file size for display
395
+ * @param bytes - Size in bytes
396
+ * @returns Formatted string
397
+ */
398
+ export function formatFileSize(bytes) {
399
+ if (bytes < 1024)
400
+ return `${bytes} B`;
401
+ if (bytes < 1024 * 1024)
402
+ return `${(bytes / 1024).toFixed(1)} KB`;
403
+ if (bytes < 1024 * 1024 * 1024)
404
+ return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;
405
+ return `${(bytes / (1024 * 1024 * 1024)).toFixed(1)} GB`;
406
+ }
407
+ /**
408
+ * Format duration in milliseconds to human-readable string
409
+ * @param ms - Duration in milliseconds
410
+ * @returns Formatted string
411
+ */
412
+ export function formatDuration(ms) {
413
+ if (ms < 1000)
414
+ return `${ms}ms`;
415
+ if (ms < 60000)
416
+ return `${(ms / 1000).toFixed(1)}s`;
417
+ if (ms < 3600000)
418
+ return `${Math.floor(ms / 60000)}m ${Math.floor((ms % 60000) / 1000)}s`;
419
+ return `${Math.floor(ms / 3600000)}h ${Math.floor((ms % 3600000) / 60000)}m`;
420
+ }
421
+ //# sourceMappingURL=analytics-reader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analytics-reader.js","sourceRoot":"","sources":["../../src/utils/analytics-reader.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"codemie-integration-validator.d.ts","sourceRoot":"","sources":["../../src/utils/codemie-integration-validator.ts"],"names":[],"mappings":"AAEA,OAAO,EAAsB,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGpE;;;GAGG;AACH,wBAAsB,2BAA2B,CAC/C,UAAU,EAAE,aAAa,EACzB,OAAO,CAAC,EAAE,GAAG,GACZ,OAAO,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,CA8B/C;AAwFD;;GAEG;AACH,wBAAsB,wBAAwB,CAC5C,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC/B,gBAAgB,EAAE,MAAM,GACvB,OAAO,CAAC,OAAO,CAAC,CAalB;AAED;;GAEG;AACH,wBAAsB,4BAA4B,CAChD,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC9B,OAAO,CAAC,MAAM,EAAE,CAAC,CASnB"}
1
+ {"version":3,"file":"codemie-integration-validator.d.ts","sourceRoot":"","sources":["../../src/utils/codemie-integration-validator.ts"],"names":[],"mappings":"AAEA,OAAO,EAAsB,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGpE;;;GAGG;AACH,wBAAsB,2BAA2B,CAC/C,UAAU,EAAE,aAAa,EACzB,OAAO,CAAC,EAAE,GAAG,GACZ,OAAO,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,CAc/C;AAwFD;;GAEG;AACH,wBAAsB,wBAAwB,CAC5C,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC/B,gBAAgB,EAAE,MAAM,GACvB,OAAO,CAAC,OAAO,CAAC,CAalB;AAED;;GAEG;AACH,wBAAsB,4BAA4B,CAChD,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC9B,OAAO,CAAC,MAAM,EAAE,CAAC,CASnB"}
@@ -9,22 +9,9 @@ export async function validateCodeMieIntegrations(authResult, spinner) {
9
9
  const integrations = await fetchCodeMieIntegrations(authResult.apiUrl, authResult.cookies, CODEMIE_ENDPOINTS.USER_SETTINGS);
10
10
  // Integrations are already filtered by API for LiteLLM type
11
11
  if (integrations.length === 0) {
12
- console.log(chalk.yellow('\n⚠️ No CodeMie LiteLLM integration found\n'));
13
- console.log(chalk.white('CodeMie integrations allow you to use organization-managed LLM keys.'));
14
- console.log(chalk.white('You can continue without an integration.\n'));
15
- console.log(chalk.yellow('To set up an integration later:'));
16
- console.log(chalk.white(' 1. Contact your support team to request a LiteLLM key'));
17
- console.log(chalk.white(' 2. In CodeMie, go to Integrations → User Integrations'));
18
- console.log(chalk.white(' 3. Add the key as a new integration with type "LiteLLM"'));
19
- console.log(chalk.white(' 4. Re-run: codemie setup\n'));
20
- const { continueWithoutIntegration } = await inquirer.prompt([{
21
- type: 'confirm',
22
- name: 'continueWithoutIntegration',
23
- message: 'Continue without integration?',
24
- default: true
25
- }]);
26
- if (!continueWithoutIntegration) {
27
- throw new Error('Setup cancelled by user');
12
+ // No integrations found - continue without integration
13
+ if (spinner) {
14
+ spinner.info(chalk.white('No CodeMie integrations found - continuing without integration'));
28
15
  }
29
16
  return null;
30
17
  }
@@ -1 +1 @@
1
- {"version":3,"file":"codemie-integration-validator.js","sourceRoot":"","sources":["../../src/utils/codemie-integration-validator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"codemie-integration-validator.js","sourceRoot":"","sources":["../../src/utils/codemie-integration-validator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,80 @@
1
+ /**
2
+ * CodeMie Proxy Server - Refactored
3
+ *
4
+ * Clean, modular proxy implementation following SOLID principles.
5
+ * Uses interceptor pattern for extensibility (Open/Closed).
6
+ *
7
+ * Architecture:
8
+ * - ProxyHTTPClient: Handles HTTP forwarding with streaming
9
+ * - Interceptors: Plugin-based request/response/error handling
10
+ * - Main Proxy: Orchestrates the flow
11
+ *
12
+ * KISS: Simple flow - build context → run interceptors → forward → stream
13
+ * DRY: Reuses Analytics system, delegates to interceptors
14
+ * SOLID: Each component has single responsibility, extensible via plugins
15
+ */
16
+ import { ProxyConfig } from './proxy/types.js';
17
+ export type GatewayConfig = ProxyConfig;
18
+ /**
19
+ * CodeMie Proxy - Simple HTTP proxy with interceptor support
20
+ * KISS: Core responsibility = forward requests + run interceptors
21
+ */
22
+ export declare class CodeMieProxy {
23
+ private config;
24
+ private server;
25
+ private credentials;
26
+ private httpClient;
27
+ private interceptors;
28
+ private actualPort;
29
+ constructor(config: ProxyConfig);
30
+ /**
31
+ * Register interceptors
32
+ * Easy to add new interceptors without modifying handleRequest
33
+ */
34
+ private registerInterceptors;
35
+ /**
36
+ * Start the proxy server
37
+ */
38
+ start(): Promise<{
39
+ port: number;
40
+ url: string;
41
+ }>;
42
+ /**
43
+ * Stop the proxy server
44
+ */
45
+ stop(): Promise<void>;
46
+ /**
47
+ * Core request handler - Clean, simple flow
48
+ * KISS: Build context → run interceptors → forward → stream
49
+ */
50
+ private handleRequest;
51
+ /**
52
+ * Build proxy context from incoming request
53
+ */
54
+ private buildContext;
55
+ /**
56
+ * Build target URL from request path
57
+ */
58
+ private buildTargetUrl;
59
+ /**
60
+ * Read request body
61
+ */
62
+ private readBody;
63
+ /**
64
+ * Send successful response to client
65
+ */
66
+ private sendResponse;
67
+ /**
68
+ * Handle errors with proper status codes and structure
69
+ */
70
+ private handleError;
71
+ /**
72
+ * Send error response to client
73
+ */
74
+ private sendErrorResponse;
75
+ /**
76
+ * Find an available port for the proxy server
77
+ */
78
+ private findAvailablePort;
79
+ }
80
+ //# sourceMappingURL=codemie-proxy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codemie-proxy.d.ts","sourceRoot":"","sources":["../../src/utils/codemie-proxy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAgBH,OAAO,EAAE,WAAW,EAAkC,MAAM,kBAAkB,CAAC;AAI/E,MAAM,MAAM,aAAa,GAAG,WAAW,CAAC;AAExC;;;GAGG;AACH,qBAAa,YAAY;IAOX,OAAO,CAAC,MAAM;IAN1B,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,WAAW,CAA+B;IAClD,OAAO,CAAC,UAAU,CAAkB;IACpC,OAAO,CAAC,YAAY,CAA0B;IAC9C,OAAO,CAAC,UAAU,CAAa;gBAEX,MAAM,EAAE,WAAW;IAWvC;;;OAGG;IACH,OAAO,CAAC,oBAAoB;IAK5B;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IAyErD;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAc3B;;;OAGG;YACW,aAAa;IAmD3B;;OAEG;YACW,YAAY;IA0B1B;;OAEG;IACH,OAAO,CAAC,cAAc;IAatB;;OAEG;YACW,QAAQ;IAiBtB;;OAEG;IACH,OAAO,CAAC,YAAY;IAkBpB;;OAEG;YACW,WAAW;IA4CzB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAuBzB;;OAEG;YACW,iBAAiB;CAsBhC"}