@codemieai/code 0.0.17 → 0.0.18

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 (38) hide show
  1. package/dist/agents/core/AgentCLI.d.ts.map +1 -1
  2. package/dist/agents/core/AgentCLI.js +6 -3
  3. package/dist/agents/core/AgentCLI.js.map +1 -1
  4. package/dist/agents/core/BaseAgentAdapter.d.ts.map +1 -1
  5. package/dist/agents/core/BaseAgentAdapter.js +22 -0
  6. package/dist/agents/core/BaseAgentAdapter.js.map +1 -1
  7. package/dist/agents/plugins/codemie-code.plugin.d.ts.map +1 -1
  8. package/dist/agents/plugins/codemie-code.plugin.js +22 -10
  9. package/dist/agents/plugins/codemie-code.plugin.js.map +1 -1
  10. package/dist/agents/plugins/codex.plugin.js +1 -1
  11. package/dist/cli/commands/doctor/index.d.ts.map +1 -1
  12. package/dist/cli/commands/doctor/index.js +13 -23
  13. package/dist/cli/commands/doctor/index.js.map +1 -1
  14. package/dist/metrics/sync/aggregator.d.ts +3 -2
  15. package/dist/metrics/sync/aggregator.d.ts.map +1 -1
  16. package/dist/metrics/sync/aggregator.js +28 -10
  17. package/dist/metrics/sync/aggregator.js.map +1 -1
  18. package/dist/metrics/sync/types.d.ts +1 -0
  19. package/dist/metrics/sync/types.d.ts.map +1 -1
  20. package/dist/proxy/http-client.d.ts +1 -1
  21. package/dist/proxy/http-client.d.ts.map +1 -1
  22. package/dist/proxy/http-client.js +31 -0
  23. package/dist/proxy/http-client.js.map +1 -1
  24. package/dist/proxy/plugins/logging.plugin.d.ts +9 -1
  25. package/dist/proxy/plugins/logging.plugin.d.ts.map +1 -1
  26. package/dist/proxy/plugins/logging.plugin.js +126 -26
  27. package/dist/proxy/plugins/logging.plugin.js.map +1 -1
  28. package/dist/proxy/plugins/metrics-sync.plugin.js +66 -56
  29. package/dist/proxy/plugins/metrics-sync.plugin.js.map +1 -1
  30. package/dist/proxy/types.d.ts +1 -1
  31. package/dist/utils/ascii-logo.d.ts.map +1 -1
  32. package/dist/utils/ascii-logo.js +21 -11
  33. package/dist/utils/ascii-logo.js.map +1 -1
  34. package/dist/utils/codemie-proxy.d.ts +2 -1
  35. package/dist/utils/codemie-proxy.d.ts.map +1 -1
  36. package/dist/utils/codemie-proxy.js +37 -5
  37. package/dist/utils/codemie-proxy.js.map +1 -1
  38. package/package.json +1 -1
@@ -2,9 +2,17 @@
2
2
  * Logging Plugin - Request/Response Logging
3
3
  * Priority: 50 (runs before analytics)
4
4
  *
5
- * Purpose: Logs detailed proxy request/response information
5
+ * Purpose: Logs detailed proxy request/response information with smart content handling
6
6
  * Separates operational logging from analytics metrics
7
7
  *
8
+ * Logs:
9
+ * - Request: method, URL, content-type, headers, body (parsed JSON or raw)
10
+ * - Response: status, content-type, headers, body (smart handling based on type)
11
+ * - JSON: Parsed and structured
12
+ * - SSE (Server-Sent Events): First/last events + stats (avoids logging full stream)
13
+ * - Other: Raw content (truncated if > 1000 bytes)
14
+ * - Streaming: chunk count, bytes transferred, streaming detection
15
+ *
8
16
  * Log Level: DEBUG (file + console when CODEMIE_DEBUG=1)
9
17
  * Log Location: ~/.codemie/logs/debug-YYYY-MM-DD.log
10
18
  *
@@ -25,11 +33,35 @@ class LoggingInterceptor {
25
33
  name = 'logging';
26
34
  chunkCount = 0;
27
35
  totalBytes = 0;
36
+ responseChunks = [];
37
+ responseContentType = null;
28
38
  async onRequest(context) {
29
39
  try {
30
40
  // Reset counters for new request
31
41
  this.chunkCount = 0;
32
42
  this.totalBytes = 0;
43
+ this.responseChunks = [];
44
+ this.responseContentType = null;
45
+ // Get request content type
46
+ const contentType = context.headers['content-type'] || context.headers['Content-Type'] || 'unknown';
47
+ // Parse request body based on content type
48
+ let requestBodyParsed = null;
49
+ if (context.requestBody) {
50
+ try {
51
+ const bodyString = context.requestBody.toString('utf-8');
52
+ if (contentType.includes('application/json')) {
53
+ requestBodyParsed = JSON.parse(bodyString);
54
+ }
55
+ else {
56
+ // Log raw for non-JSON
57
+ requestBodyParsed = bodyString;
58
+ }
59
+ }
60
+ catch {
61
+ // Parse error - log as string
62
+ requestBodyParsed = context.requestBody.toString('utf-8');
63
+ }
64
+ }
33
65
  logger.debug(`[proxy-request] ${context.method} ${context.url}`, {
34
66
  requestId: context.requestId,
35
67
  sessionId: context.sessionId,
@@ -38,8 +70,10 @@ class LoggingInterceptor {
38
70
  provider: context.provider,
39
71
  model: context.model,
40
72
  targetUrl: context.targetUrl,
73
+ contentType,
41
74
  bodySize: context.requestBody?.length || 0,
42
- headers: this.sanitizeHeaders(context.headers)
75
+ headers: this.sanitizeHeaders(context.headers),
76
+ requestBody: requestBodyParsed
43
77
  });
44
78
  }
45
79
  catch (error) {
@@ -49,6 +83,11 @@ class LoggingInterceptor {
49
83
  }
50
84
  async onResponseHeaders(context, headers) {
51
85
  try {
86
+ // Capture response content type for use in response body logging
87
+ const contentTypeHeader = headers['content-type'] || headers['Content-Type'];
88
+ this.responseContentType = Array.isArray(contentTypeHeader)
89
+ ? contentTypeHeader[0]
90
+ : contentTypeHeader || 'unknown';
52
91
  logger.debug(`[proxy-response-headers] ${context.url}`, {
53
92
  requestId: context.requestId,
54
93
  sessionId: context.sessionId,
@@ -57,7 +96,7 @@ class LoggingInterceptor {
57
96
  provider: context.provider,
58
97
  model: context.model,
59
98
  headers: {
60
- 'content-type': headers['content-type'],
99
+ 'content-type': this.responseContentType,
61
100
  'content-length': headers['content-length'],
62
101
  'transfer-encoding': headers['transfer-encoding']
63
102
  }
@@ -71,6 +110,8 @@ class LoggingInterceptor {
71
110
  try {
72
111
  this.chunkCount++;
73
112
  this.totalBytes += chunk.length;
113
+ // Collect chunks for full response body
114
+ this.responseChunks.push(Buffer.from(chunk));
74
115
  // Log every 1000th chunk to avoid spam (or first/last chunks)
75
116
  if (this.chunkCount === 1 || this.chunkCount % 1000 === 0) {
76
117
  logger.debug(`[proxy-streaming] ${context.url}`, {
@@ -89,29 +130,88 @@ class LoggingInterceptor {
89
130
  }
90
131
  async onResponseComplete(context, metadata) {
91
132
  try {
92
- logger.debug(`[proxy-response] ${metadata.statusCode} ${context.url} (${metadata.durationMs}ms)`, {
93
- requestId: context.requestId,
94
- sessionId: context.sessionId,
95
- agent: context.agentName,
96
- profile: context.profile,
97
- provider: context.provider,
98
- model: context.model,
99
- statusCode: metadata.statusCode,
100
- statusMessage: metadata.statusMessage,
101
- bytesSent: metadata.bytesSent,
102
- durationMs: metadata.durationMs,
103
- totalChunks: this.chunkCount,
104
- totalBytesStreamed: this.totalBytes
105
- });
106
- // Log completion marker to track if we reach this point
107
- logger.debug(`[proxy-complete] Request fully processed for ${context.url}`, {
108
- requestId: context.requestId,
109
- sessionId: context.sessionId,
110
- agent: context.agentName,
111
- profile: context.profile,
112
- provider: context.provider,
113
- model: context.model,
114
- finalStatus: 'success'
133
+ // Capture chunks for logging (use local reference to avoid race conditions)
134
+ const chunksToLog = this.responseChunks;
135
+ const chunkCount = this.chunkCount;
136
+ const totalBytes = this.totalBytes;
137
+ const contentType = this.responseContentType || 'unknown';
138
+ // CRITICAL: Clear state immediately for next request
139
+ this.responseChunks = [];
140
+ this.chunkCount = 0;
141
+ this.totalBytes = 0;
142
+ this.responseContentType = null;
143
+ // Process response body asynchronously (don't block)
144
+ // Use setImmediate to defer heavy work to next tick
145
+ setImmediate(() => {
146
+ try {
147
+ let responseBodyParsed = null;
148
+ let isStreaming = false;
149
+ if (chunksToLog.length > 0) {
150
+ const fullBody = Buffer.concat(chunksToLog).toString('utf-8');
151
+ // Check if this is a streaming response (SSE)
152
+ isStreaming = contentType.includes('text/event-stream') || fullBody.startsWith('event:');
153
+ if (isStreaming) {
154
+ // For streaming responses, log first and last few events instead of full body
155
+ const lines = fullBody.split('\n').filter(line => line.trim());
156
+ const eventCount = lines.filter(line => line.startsWith('event:')).length;
157
+ responseBodyParsed = {
158
+ type: 'text/event-stream',
159
+ eventCount,
160
+ firstEvents: lines.slice(0, 10).join('\n'),
161
+ lastEvents: lines.slice(-10).join('\n'),
162
+ totalLines: lines.length,
163
+ bodySizeBytes: fullBody.length
164
+ };
165
+ }
166
+ else if (contentType.includes('application/json')) {
167
+ // Parse JSON responses
168
+ try {
169
+ responseBodyParsed = JSON.parse(fullBody);
170
+ }
171
+ catch {
172
+ // Invalid JSON - log as string
173
+ responseBodyParsed = fullBody;
174
+ }
175
+ }
176
+ else {
177
+ // Log raw for other content types (truncate if too long)
178
+ responseBodyParsed = fullBody.length > 1000
179
+ ? fullBody.substring(0, 1000) + '... (truncated)'
180
+ : fullBody;
181
+ }
182
+ }
183
+ logger.debug(`[proxy-response] ${metadata.statusCode} ${context.url} (${metadata.durationMs}ms)`, {
184
+ requestId: context.requestId,
185
+ sessionId: context.sessionId,
186
+ agent: context.agentName,
187
+ profile: context.profile,
188
+ provider: context.provider,
189
+ model: context.model,
190
+ statusCode: metadata.statusCode,
191
+ statusMessage: metadata.statusMessage,
192
+ contentType,
193
+ isStreaming,
194
+ bytesSent: metadata.bytesSent,
195
+ durationMs: metadata.durationMs,
196
+ totalChunks: chunkCount,
197
+ totalBytesStreamed: totalBytes,
198
+ responseBody: responseBodyParsed
199
+ });
200
+ // Log completion marker to track if we reach this point
201
+ logger.debug(`[proxy-complete] Request fully processed for ${context.url}`, {
202
+ requestId: context.requestId,
203
+ sessionId: context.sessionId,
204
+ agent: context.agentName,
205
+ profile: context.profile,
206
+ provider: context.provider,
207
+ model: context.model,
208
+ finalStatus: 'success'
209
+ });
210
+ }
211
+ catch (error) {
212
+ // Don't break proxy flow on logging errors
213
+ logger.error(`[${this.name}] Error logging response (deferred):`, error);
214
+ }
115
215
  });
116
216
  }
117
217
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"logging.plugin.js","sourceRoot":"","sources":["../../../src/proxy/plugins/logging.plugin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"logging.plugin.js","sourceRoot":"","sources":["../../../src/proxy/plugins/logging.plugin.ts"],"names":[],"mappings":"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"}
@@ -215,65 +215,75 @@ class MetricsSyncInterceptor {
215
215
  logger.error(`[${this.name}] Session not found: ${this.sessionId}`);
216
216
  return;
217
217
  }
218
- // 4. Aggregate pending deltas into single metric
219
- const metric = aggregateDeltas(pendingDeltas, session, this.version);
220
- // Debug: Log aggregated metric
221
- logger.debug(`[${this.name}] Aggregated metric:`, {
222
- name: metric.name,
223
- attributes: {
224
- // Identity
225
- agent: metric.attributes.agent,
226
- agent_version: metric.attributes.agent_version,
227
- llm_model: metric.attributes.llm_model,
228
- project: metric.attributes.project,
229
- session_id: metric.attributes.session_id,
230
- // Interaction totals
231
- total_user_prompts: metric.attributes.total_user_prompts,
232
- // Token totals
233
- total_input_tokens: metric.attributes.total_input_tokens,
234
- total_output_tokens: metric.attributes.total_output_tokens,
235
- total_cache_read_input_tokens: metric.attributes.total_cache_read_input_tokens,
236
- total_cache_creation_tokens: metric.attributes.total_cache_creation_tokens,
237
- // Tool totals
238
- total_tool_calls: metric.attributes.total_tool_calls,
239
- successful_tool_calls: metric.attributes.successful_tool_calls,
240
- failed_tool_calls: metric.attributes.failed_tool_calls,
241
- // File operation totals
242
- files_created: metric.attributes.files_created,
243
- files_modified: metric.attributes.files_modified,
244
- files_deleted: metric.attributes.files_deleted,
245
- total_lines_added: metric.attributes.total_lines_added,
246
- total_lines_removed: metric.attributes.total_lines_removed,
247
- // Session info
248
- session_duration_ms: metric.attributes.session_duration_ms,
249
- count: metric.attributes.count
250
- }
251
- });
252
- // 5. Send to API (single aggregated metric) or log in dry-run mode
253
- if (this.dryRun) {
254
- // Dry-run mode: Log what would be sent without actually sending
255
- logger.info(`[${this.name}] [DRY-RUN] Would send metric to API:`, {
256
- endpoint: `${this.apiClient['config'].baseUrl}/v1/metrics`,
257
- method: 'POST',
258
- headers: {
259
- 'Content-Type': 'application/json',
260
- 'User-Agent': `CodeMie-CLI/${this.version}`,
261
- 'X-CodeMie-Client': this.apiClient['config'].clientType,
262
- 'Cookie': '[REDACTED]'
263
- },
264
- payload: {
265
- name: metric.name,
266
- attributes: metric.attributes
218
+ // 4. Aggregate pending deltas into metrics grouped by branch
219
+ const metrics = aggregateDeltas(pendingDeltas, session, this.version);
220
+ logger.info(`[${this.name}] Aggregated ${metrics.length} branch-specific metrics from ${pendingDeltas.length} deltas`);
221
+ // Debug: Log aggregated metrics
222
+ for (const metric of metrics) {
223
+ logger.debug(`[${this.name}] Aggregated metric for branch "${metric.attributes.git_branch}":`, {
224
+ name: metric.name,
225
+ attributes: {
226
+ // Identity
227
+ agent: metric.attributes.agent,
228
+ agent_version: metric.attributes.agent_version,
229
+ llm_model: metric.attributes.llm_model,
230
+ project: metric.attributes.project,
231
+ session_id: metric.attributes.session_id,
232
+ git_branch: metric.attributes.git_branch,
233
+ // Interaction totals
234
+ total_user_prompts: metric.attributes.total_user_prompts,
235
+ // Token totals
236
+ total_input_tokens: metric.attributes.total_input_tokens,
237
+ total_output_tokens: metric.attributes.total_output_tokens,
238
+ total_cache_read_input_tokens: metric.attributes.total_cache_read_input_tokens,
239
+ total_cache_creation_tokens: metric.attributes.total_cache_creation_tokens,
240
+ // Tool totals
241
+ total_tool_calls: metric.attributes.total_tool_calls,
242
+ successful_tool_calls: metric.attributes.successful_tool_calls,
243
+ failed_tool_calls: metric.attributes.failed_tool_calls,
244
+ // File operation totals
245
+ files_created: metric.attributes.files_created,
246
+ files_modified: metric.attributes.files_modified,
247
+ files_deleted: metric.attributes.files_deleted,
248
+ total_lines_added: metric.attributes.total_lines_added,
249
+ total_lines_removed: metric.attributes.total_lines_removed,
250
+ // Session info
251
+ session_duration_ms: metric.attributes.session_duration_ms,
252
+ count: metric.attributes.count
267
253
  }
268
254
  });
269
- logger.info(`[${this.name}] [DRY-RUN] Skipping actual API call - ${pendingDeltas.length} deltas would be synced`);
255
+ }
256
+ // 5. Send each branch metric to API or log in dry-run mode
257
+ if (this.dryRun) {
258
+ // Dry-run mode: Log what would be sent without actually sending
259
+ for (const metric of metrics) {
260
+ logger.info(`[${this.name}] [DRY-RUN] Would send metric for branch "${metric.attributes.git_branch}" to API:`, {
261
+ endpoint: `${this.apiClient['config'].baseUrl}/v1/metrics`,
262
+ method: 'POST',
263
+ headers: {
264
+ 'Content-Type': 'application/json',
265
+ 'User-Agent': `CodeMie-CLI/${this.version}`,
266
+ 'X-CodeMie-Client': this.apiClient['config'].clientType,
267
+ 'Cookie': '[REDACTED]'
268
+ },
269
+ payload: {
270
+ name: metric.name,
271
+ attributes: metric.attributes
272
+ }
273
+ });
274
+ }
275
+ logger.info(`[${this.name}] [DRY-RUN] Skipping actual API calls - ${pendingDeltas.length} deltas across ${metrics.length} branches would be synced`);
270
276
  }
271
277
  else {
272
- // Normal mode: Actually send to API
273
- const response = await this.apiClient.sendMetric(metric);
274
- if (!response.success) {
275
- logger.error(`[${this.name}] Sync failed: ${response.message}`);
276
- return;
278
+ // Normal mode: Send each branch metric to API
279
+ for (const metric of metrics) {
280
+ const response = await this.apiClient.sendMetric(metric);
281
+ if (!response.success) {
282
+ logger.error(`[${this.name}] Sync failed for branch "${metric.attributes.git_branch}": ${response.message}`);
283
+ // Continue with other branches even if one fails
284
+ continue;
285
+ }
286
+ logger.info(`[${this.name}] Successfully synced metric for branch "${metric.attributes.git_branch}"`);
277
287
  }
278
288
  }
279
289
  // 6. Mark deltas as synced in JSONL (atomic rewrite)
@@ -288,7 +298,7 @@ class MetricsSyncInterceptor {
288
298
  }
289
299
  : d);
290
300
  await writeJSONLAtomic(metricsFile, updatedDeltas);
291
- logger.info(`[${this.name}] Successfully synced ${pendingDeltas.length} deltas`);
301
+ logger.info(`[${this.name}] Successfully synced ${pendingDeltas.length} deltas across ${metrics.length} branches`);
292
302
  // Debug: Log which deltas were marked as synced
293
303
  logger.debug(`[${this.name}] Marked deltas as synced:`, {
294
304
  syncedAt: new Date(syncedAt).toISOString(),
@@ -1 +1 @@
1
- {"version":3,"file":"metrics-sync.plugin.js","sourceRoot":"","sources":["../../../src/proxy/plugins/metrics-sync.plugin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"metrics-sync.plugin.js","sourceRoot":"","sources":["../../../src/proxy/plugins/metrics-sync.plugin.ts"],"names":[],"mappings":"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"}
@@ -35,7 +35,7 @@ export interface ProxyContext {
35
35
  method: string;
36
36
  url: string;
37
37
  headers: Record<string, string>;
38
- requestBody: string | null;
38
+ requestBody: Buffer | null;
39
39
  requestStartTime: number;
40
40
  targetUrl?: string;
41
41
  metadata: Record<string, unknown>;
@@ -1 +1 @@
1
- {"version":3,"file":"ascii-logo.d.ts","sourceRoot":"","sources":["../../src/utils/ascii-logo.ts"],"names":[],"mappings":"AAoBA;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE;IACxC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,MAAM,CAmCT;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE;IACxC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG,MAAM,CAsBT"}
1
+ {"version":3,"file":"ascii-logo.d.ts","sourceRoot":"","sources":["../../src/utils/ascii-logo.ts"],"names":[],"mappings":"AAkBA;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE;IACxC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,MAAM,CAyCT;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE;IACxC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG,MAAM,CA4BT"}
@@ -5,21 +5,25 @@ import gradient from 'gradient-string';
5
5
  *
6
6
  * Displays the AI/Run CodeMie CLI logo with configuration details
7
7
  */
8
- const LOGO_ASCII = `
9
- $$$$$$\\ $$$$$$\\ $$\\ $$$$$$$\\ $$\\ $$\\ $$\\ $$\\ $$$$$$\\ $$$$$$\\ $$$$$$$\\ $$$$$$$$\\ $$\\ $$\\ $$$$$$\\ $$$$$$$$\\ $$$$$$\\ $$\\ $$$$$$\\
10
- $$ __$$\\ \\_$$ _| $$ | $$ __$$\\ $$ | $$ |$$$\\ $$ | $$ __$$\\ $$ __$$\\ $$ __$$\\ $$ _____|$$$\\ $$$ |\\_$$ _|$$ _____| $$ __$$\\ $$ | \\_$$ _|
11
- $$ / $$ | $$ | $$ / $$ | $$ |$$ | $$ |$$$$\\ $$ | $$ / \\__|$$ / $$ |$$ | $$ |$$ | $$$$\\ $$$$ | $$ | $$ | $$ / \\__|$$ | $$ |
12
- $$$$$$$$ | $$ | $$ / $$$$$$$ < $$ | $$ |$$ $$\\$$ | $$ | $$ | $$ |$$ | $$ |$$$$$\\ $$\\$$\\$$ $$ | $$ | $$$$$\\ $$ | $$ | $$ |
13
- $$ __$$ | $$ | $$ / $$ __$$ |$$ | $$ |$$ \\$$$$ | $$ | $$ | $$ |$$ | $$ |$$ __| $$ \\$$$ $$ | $$ | $$ __| $$ | $$ | $$ |
14
- $$ | $$ | $$ | $$ / $$ | $$ |$$ | $$ |$$ |\\$$$ | $$ | $$\\ $$ | $$ |$$ | $$ |$$ | $$ |\\$ /$$ | $$ | $$ | $$ | $$\\ $$ | $$ |
15
- $$ | $$ |$$$$$$\\ $$ / $$ | $$ |\\$$$$$$ |$$ | \\$$ | \\$$$$$$ | $$$$$$ |$$$$$$$ |$$$$$$$$\\ $$ | \\_/ $$ |$$$$$$\\ $$$$$$$$\\ \\$$$$$$ |$$$$$$$$\\ $$$$$$\\
16
- \\__| \\__|\\______|\\__/ \\__| \\__| \\______/ \\__| \\__| \\______/ \\______/ \\_______/ \\________|\\__| \\__|\\______|\\________| \\______/ \\________|\\______|
8
+ const LOGO_ASCII = String.raw `
9
+ ██████╗ ██████╗ ██████╗ ███████╗███╗ ███╗██╗███████╗ ██████╗██╗ ██╗
10
+ ██╔════╝██╔═══██╗██╔══██╗██╔════╝████╗ ████║██║██╔════╝ ██╔════╝██║ ██║
11
+ ██║ ██║ ██║██║ ██║█████╗ ██╔████╔██║██║█████╗ ██║ ██║ ██║
12
+ ██║ ██║ ██║██║ ██║██╔══╝ ██║╚██╔╝██║██║██╔══╝ ██║ ██║ ██║
13
+ ╚██████╗╚██████╔╝██████╔╝███████╗██║ ╚═╝ ██║██║███████╗ ╚██████╗███████╗██║
14
+ ╚═════╝ ╚═════╝ ╚═════╝ ╚══════╝╚═╝ ╚═╝╚═╝╚══════╝ ╚═════╝╚══════╝╚═╝
17
15
  `;
18
16
  /**
19
17
  * Renders the CodeMie ASCII logo with configuration details
20
18
  */
21
19
  export function renderCodeMieLogo(config) {
22
- const codeMieGradient = gradient(['#ff00ff', '#9933ff']); // Magenta to purple
20
+ const codeMieGradient = gradient([
21
+ '#ff00ff', // Bright magenta
22
+ '#cc00ff', // Purple-magenta
23
+ '#9933ff', // Purple
24
+ '#6666ff', // Blue-purple
25
+ '#00ccff' // Cyan
26
+ ]);
23
27
  // Build complete output with logo and info
24
28
  const outputLines = [];
25
29
  outputLines.push(''); // Empty line for spacing
@@ -53,7 +57,13 @@ export function renderCodeMieLogo(config) {
53
57
  * Compact version for narrow terminals
54
58
  */
55
59
  export function renderCompactLogo(config) {
56
- const codeMieGradient = gradient(['#ff00ff', '#9933ff']);
60
+ const codeMieGradient = gradient([
61
+ '#ff00ff', // Bright magenta
62
+ '#cc00ff', // Purple-magenta
63
+ '#9933ff', // Purple
64
+ '#6666ff', // Blue-purple
65
+ '#00ccff' // Cyan
66
+ ]);
57
67
  const compactAscii = `
58
68
  ╔════════════════════╗
59
69
  ║ AI/Run CodeMie ║
@@ -1 +1 @@
1
- {"version":3,"file":"ascii-logo.js","sourceRoot":"","sources":["../../src/utils/ascii-logo.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,QAAQ,MAAM,iBAAiB,CAAC;AAEvC;;;;GAIG;AAEH,MAAM,UAAU,GAAG;;;;;;;;;CASlB,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAOjC;IACC,MAAM,eAAe,GAAG,QAAQ,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,oBAAoB;IAE9E,2CAA2C;IAC3C,MAAM,WAAW,GAAa,EAAE,CAAC;IACjC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,yBAAyB;IAE/C,iBAAiB;IACjB,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC7B,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,yBAAyB;IAE/C,wBAAwB;IACxB,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;QACtB,WAAW,CAAC,IAAI,CAAC,kBAAkB,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;IAC1D,CAAC;IACD,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,WAAW,CAAC,IAAI,CAAC,kBAAkB,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;IACvD,CAAC;IACD,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QACpB,WAAW,CAAC,IAAI,CAAC,kBAAkB,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;IACxD,CAAC;IACD,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,WAAW,CAAC,IAAI,CAAC,kBAAkB,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;IACrD,CAAC;IACD,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,WAAW,CAAC,IAAI,CAAC,kBAAkB,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;IACrD,CAAC;IACD,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;QACrB,WAAW,CAAC,IAAI,CAAC,kBAAkB,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;IACzD,CAAC;IAED,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,yBAAyB;IAE/C,kCAAkC;IAClC,OAAO,eAAe,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACjD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAKjC;IACC,MAAM,eAAe,GAAG,QAAQ,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;IAEzD,MAAM,YAAY,GAAG;;;;0BAIG,CAAC;IAEzB,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAChB,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC,CAAC;IAC3C,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAChB,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QACtC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,OAAO,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IACrE,CAAC;IACD,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IACrD,CAAC;IACD,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEhB,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3B,CAAC"}
1
+ {"version":3,"file":"ascii-logo.js","sourceRoot":"","sources":["../../src/utils/ascii-logo.ts"],"names":[],"mappings":"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"}
@@ -68,7 +68,8 @@ export declare class CodeMieProxy {
68
68
  */
69
69
  private buildTargetUrl;
70
70
  /**
71
- * Read request body
71
+ * Read request body as Buffer to preserve byte integrity
72
+ * CRITICAL: Must use Buffer to avoid corrupting multi-byte UTF-8 characters
72
73
  */
73
74
  private readBody;
74
75
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"codemie-proxy.d.ts","sourceRoot":"","sources":["../../src/utils/codemie-proxy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AASH,OAAO,EAAE,WAAW,EAAgB,MAAM,mBAAmB,CAAC;AAI9D,OAAO,2BAA2B,CAAC;AAEnC;;;GAGG;AACH,qBAAa,YAAY;IAMX,OAAO,CAAC,MAAM;IAL1B,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,UAAU,CAAkB;IACpC,OAAO,CAAC,YAAY,CAA0B;IAC9C,OAAO,CAAC,UAAU,CAAa;gBAEX,MAAM,EAAE,WAAW;IAQvC;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IAuErD;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAoB3B;;;;;;;;;;;;OAYG;YACW,aAAa;IAwE3B;;OAEG;YACW,YAAY;IA0B1B;;OAEG;IACH,OAAO,CAAC,cAAc;IAatB;;OAEG;YACW,QAAQ;IAiBtB;;OAEG;YACW,cAAc;IA6D5B;;OAEG;YACW,OAAO;IAcrB;;OAEG;YACW,WAAW;IAkDzB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IA6BzB;;OAEG;YACW,iBAAiB;CAsBhC"}
1
+ {"version":3,"file":"codemie-proxy.d.ts","sourceRoot":"","sources":["../../src/utils/codemie-proxy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AASH,OAAO,EAAE,WAAW,EAAgB,MAAM,mBAAmB,CAAC;AAI9D,OAAO,2BAA2B,CAAC;AAEnC;;;GAGG;AACH,qBAAa,YAAY;IAMX,OAAO,CAAC,MAAM;IAL1B,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,UAAU,CAAkB;IACpC,OAAO,CAAC,YAAY,CAA0B;IAC9C,OAAO,CAAC,UAAU,CAAa;gBAEX,MAAM,EAAE,WAAW;IAQvC;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IAuErD;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAoB3B;;;;;;;;;;;;OAYG;YACW,aAAa;IA0E3B;;OAEG;YACW,YAAY;IA0B1B;;OAEG;IACH,OAAO,CAAC,cAAc;IAatB;;;OAGG;YACW,QAAQ;IAiBtB;;OAEG;YACW,cAAc;IAkG5B;;OAEG;YACW,OAAO;IAcrB;;OAEG;YACW,WAAW;IAkDzB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IA6BzB;;OAEG;YACW,iBAAiB;CAsBhC"}
@@ -159,11 +159,13 @@ export class CodeMieProxy {
159
159
  // 3. Forward request to upstream
160
160
  const targetUrl = this.buildTargetUrl(req.url);
161
161
  context.targetUrl = targetUrl.toString();
162
+ logger.debug(`[proxy] Forwarding request to upstream for ${context.requestId}`);
162
163
  const upstreamResponse = await this.httpClient.forward(targetUrl, {
163
164
  method: req.method,
164
165
  headers: context.headers,
165
166
  body: context.requestBody || undefined
166
167
  });
168
+ logger.debug(`[proxy] Received upstream response object for ${context.requestId}`);
167
169
  // 4. Run onResponseHeaders hooks (BEFORE streaming)
168
170
  await this.runHook('onResponseHeaders', interceptor => interceptor.onResponseHeaders?.(context, upstreamResponse.headers));
169
171
  // 5. Stream response to client
@@ -229,19 +231,20 @@ export class CodeMieProxy {
229
231
  return new URL(targetUrlString);
230
232
  }
231
233
  /**
232
- * Read request body
234
+ * Read request body as Buffer to preserve byte integrity
235
+ * CRITICAL: Must use Buffer to avoid corrupting multi-byte UTF-8 characters
233
236
  */
234
237
  async readBody(req) {
235
238
  if (req.method !== 'POST' && req.method !== 'PUT' && req.method !== 'PATCH') {
236
239
  return null;
237
240
  }
238
241
  return new Promise((resolve, reject) => {
239
- let body = '';
240
- req.on('data', chunk => {
241
- body += chunk.toString();
242
+ const chunks = [];
243
+ req.on('data', (chunk) => {
244
+ chunks.push(chunk);
242
245
  });
243
246
  req.on('end', () => {
244
- resolve(body || null);
247
+ resolve(chunks.length > 0 ? Buffer.concat(chunks) : null);
245
248
  });
246
249
  req.on('error', reject);
247
250
  });
@@ -263,6 +266,25 @@ export class CodeMieProxy {
263
266
  let bytesSent = 0;
264
267
  let chunkCount = 0;
265
268
  logger.debug(`[proxy-stream] Starting chunk iteration for ${context.requestId}`);
269
+ // Track upstream stream lifecycle
270
+ upstream.on('end', () => {
271
+ logger.debug(`[proxy-stream] Upstream 'end' event fired for ${context.requestId}`);
272
+ });
273
+ upstream.on('close', () => {
274
+ logger.debug(`[proxy-stream] Upstream 'close' event fired for ${context.requestId}`);
275
+ });
276
+ // Track downstream connection state
277
+ let downstreamClosed = false;
278
+ downstream.on('close', () => {
279
+ logger.debug(`[proxy-stream] Downstream connection closed during streaming for ${context.requestId}`);
280
+ downstreamClosed = true;
281
+ });
282
+ downstream.on('finish', () => {
283
+ logger.debug(`[proxy-stream] Downstream finished event for ${context.requestId}`);
284
+ });
285
+ downstream.on('error', (error) => {
286
+ logger.debug(`[proxy-stream] Downstream error for ${context.requestId}:`, error);
287
+ });
266
288
  for await (const chunk of upstream) {
267
289
  chunkCount++;
268
290
  let processedChunk = Buffer.from(chunk);
@@ -283,8 +305,18 @@ export class CodeMieProxy {
283
305
  downstream.write(processedChunk);
284
306
  bytesSent += processedChunk.length;
285
307
  }
308
+ // Check if downstream disconnected
309
+ if (downstreamClosed) {
310
+ logger.debug(`[proxy-stream] Downstream closed, stopping chunk iteration for ${context.requestId}`);
311
+ break;
312
+ }
286
313
  }
287
314
  logger.debug(`[proxy-stream] Finished chunk iteration for ${context.requestId}. Total chunks: ${chunkCount}, bytes: ${bytesSent}`);
315
+ // Explicitly destroy upstream to ensure connection closes
316
+ if (!upstream.destroyed) {
317
+ logger.debug(`[proxy-stream] Destroying upstream stream for ${context.requestId}`);
318
+ upstream.destroy();
319
+ }
288
320
  logger.debug(`[proxy-stream] Calling downstream.end() for ${context.requestId}`);
289
321
  downstream.end();
290
322
  logger.debug(`[proxy-stream] downstream.end() completed for ${context.requestId}`);