@codemieai/code 0.0.14 → 0.0.15

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 (173) hide show
  1. package/README.md +8 -6
  2. package/dist/agents/codemie-code/agent.d.ts.map +1 -1
  3. package/dist/agents/codemie-code/agent.js +4 -4
  4. package/dist/agents/codemie-code/agent.js.map +1 -1
  5. package/dist/agents/codemie-code/config.d.ts.map +1 -1
  6. package/dist/agents/codemie-code/config.js +2 -1
  7. package/dist/agents/codemie-code/config.js.map +1 -1
  8. package/dist/agents/codemie-code/filters.js +12 -12
  9. package/dist/agents/codemie-code/filters.js.map +1 -1
  10. package/dist/agents/codemie-code/index.d.ts.map +1 -1
  11. package/dist/agents/codemie-code/index.js +3 -1
  12. package/dist/agents/codemie-code/index.js.map +1 -1
  13. package/dist/agents/codemie-code/storage/todoStorage.js +1 -1
  14. package/dist/agents/codemie-code/storage/todoStorage.js.map +1 -1
  15. package/dist/agents/codemie-code/tools/planning.d.ts +1 -1
  16. package/dist/agents/codemie-code/ui.js +1 -1
  17. package/dist/agents/codemie-code/ui.js.map +1 -1
  18. package/dist/agents/core/AgentCLI.js +1 -1
  19. package/dist/agents/core/AgentCLI.js.map +1 -1
  20. package/dist/agents/core/types.d.ts +5 -0
  21. package/dist/agents/core/types.d.ts.map +1 -1
  22. package/dist/agents/plugins/codemie-code.plugin.js +1 -1
  23. package/dist/agents/plugins/codemie-code.plugin.js.map +1 -1
  24. package/dist/analytics/aggregation/adapters/claude.adapter.d.ts.map +1 -1
  25. package/dist/analytics/aggregation/adapters/claude.adapter.js +75 -15
  26. package/dist/analytics/aggregation/adapters/claude.adapter.js.map +1 -1
  27. package/dist/analytics/aggregation/adapters/codex.adapter.d.ts.map +1 -1
  28. package/dist/analytics/aggregation/adapters/codex.adapter.js +20 -0
  29. package/dist/analytics/aggregation/adapters/codex.adapter.js.map +1 -1
  30. package/dist/analytics/aggregation/adapters/gemini.adapter.d.ts +8 -0
  31. package/dist/analytics/aggregation/adapters/gemini.adapter.d.ts.map +1 -1
  32. package/dist/analytics/aggregation/adapters/gemini.adapter.js +46 -1
  33. package/dist/analytics/aggregation/adapters/gemini.adapter.js.map +1 -1
  34. package/dist/analytics/aggregation/core/BaseAnalyticsAdapter.d.ts +36 -0
  35. package/dist/analytics/aggregation/core/BaseAnalyticsAdapter.d.ts.map +1 -1
  36. package/dist/analytics/aggregation/core/BaseAnalyticsAdapter.js +52 -0
  37. package/dist/analytics/aggregation/core/BaseAnalyticsAdapter.js.map +1 -1
  38. package/dist/analytics/aggregation/core/adapter.interface.d.ts +11 -0
  39. package/dist/analytics/aggregation/core/adapter.interface.d.ts.map +1 -1
  40. package/dist/analytics/aggregation/core/aggregation-utils.d.ts +20 -0
  41. package/dist/analytics/aggregation/core/aggregation-utils.d.ts.map +1 -1
  42. package/dist/analytics/aggregation/core/aggregation-utils.js +43 -0
  43. package/dist/analytics/aggregation/core/aggregation-utils.js.map +1 -1
  44. package/dist/analytics/aggregation/core/file-utils.d.ts +2 -1
  45. package/dist/analytics/aggregation/core/file-utils.d.ts.map +1 -1
  46. package/dist/analytics/aggregation/core/file-utils.js +20 -85
  47. package/dist/analytics/aggregation/core/file-utils.js.map +1 -1
  48. package/dist/analytics/aggregation/core/index.d.ts +3 -0
  49. package/dist/analytics/aggregation/core/index.d.ts.map +1 -1
  50. package/dist/analytics/aggregation/core/index.js +3 -0
  51. package/dist/analytics/aggregation/core/index.js.map +1 -1
  52. package/dist/analytics/aggregation/core/user-prompt-source.d.ts +81 -0
  53. package/dist/analytics/aggregation/core/user-prompt-source.d.ts.map +1 -0
  54. package/dist/analytics/aggregation/core/user-prompt-source.js +69 -0
  55. package/dist/analytics/aggregation/core/user-prompt-source.js.map +1 -0
  56. package/dist/analytics/aggregation/core/user-prompt-sources/json.d.ts +49 -0
  57. package/dist/analytics/aggregation/core/user-prompt-sources/json.d.ts.map +1 -0
  58. package/dist/analytics/aggregation/core/user-prompt-sources/json.js +66 -0
  59. package/dist/analytics/aggregation/core/user-prompt-sources/json.js.map +1 -0
  60. package/dist/analytics/aggregation/core/user-prompt-sources/jsonl.d.ts +43 -0
  61. package/dist/analytics/aggregation/core/user-prompt-sources/jsonl.d.ts.map +1 -0
  62. package/dist/analytics/aggregation/core/user-prompt-sources/jsonl.js +56 -0
  63. package/dist/analytics/aggregation/core/user-prompt-sources/jsonl.js.map +1 -0
  64. package/dist/analytics/aggregation/types.d.ts +20 -0
  65. package/dist/analytics/aggregation/types.d.ts.map +1 -1
  66. package/dist/analytics/remote-submission/cursor-manager.d.ts +71 -0
  67. package/dist/analytics/remote-submission/cursor-manager.d.ts.map +1 -0
  68. package/dist/analytics/remote-submission/cursor-manager.js +204 -0
  69. package/dist/analytics/remote-submission/cursor-manager.js.map +1 -0
  70. package/dist/analytics/remote-submission/index.d.ts +12 -0
  71. package/dist/analytics/remote-submission/index.d.ts.map +1 -0
  72. package/dist/analytics/remote-submission/index.js +11 -0
  73. package/dist/analytics/remote-submission/index.js.map +1 -0
  74. package/dist/analytics/remote-submission/lock-manager.d.ts +71 -0
  75. package/dist/analytics/remote-submission/lock-manager.d.ts.map +1 -0
  76. package/dist/analytics/remote-submission/lock-manager.js +238 -0
  77. package/dist/analytics/remote-submission/lock-manager.js.map +1 -0
  78. package/dist/analytics/remote-submission/metric-transformer.d.ts +49 -0
  79. package/dist/analytics/remote-submission/metric-transformer.d.ts.map +1 -0
  80. package/dist/analytics/remote-submission/metric-transformer.js +175 -0
  81. package/dist/analytics/remote-submission/metric-transformer.js.map +1 -0
  82. package/dist/analytics/remote-submission/submitter.d.ts +78 -0
  83. package/dist/analytics/remote-submission/submitter.d.ts.map +1 -0
  84. package/dist/analytics/remote-submission/submitter.js +381 -0
  85. package/dist/analytics/remote-submission/submitter.js.map +1 -0
  86. package/dist/analytics/remote-submission/types.d.ts +169 -0
  87. package/dist/analytics/remote-submission/types.d.ts.map +1 -0
  88. package/dist/analytics/remote-submission/types.js +13 -0
  89. package/dist/analytics/remote-submission/types.js.map +1 -0
  90. package/dist/cli/commands/analytics.d.ts.map +1 -1
  91. package/dist/cli/commands/analytics.js +181 -12
  92. package/dist/cli/commands/analytics.js.map +1 -1
  93. package/dist/cli/commands/doctor/index.d.ts.map +1 -1
  94. package/dist/cli/commands/doctor/index.js +13 -1
  95. package/dist/cli/commands/doctor/index.js.map +1 -1
  96. package/dist/cli/commands/doctor/providers/AIRunSSOProviderCheck.d.ts.map +1 -1
  97. package/dist/cli/commands/doctor/providers/AIRunSSOProviderCheck.js +81 -9
  98. package/dist/cli/commands/doctor/providers/AIRunSSOProviderCheck.js.map +1 -1
  99. package/dist/cli/commands/profile.d.ts.map +1 -1
  100. package/dist/cli/commands/profile.js +25 -57
  101. package/dist/cli/commands/profile.js.map +1 -1
  102. package/dist/cli/commands/setup.d.ts.map +1 -1
  103. package/dist/cli/commands/setup.js +10 -0
  104. package/dist/cli/commands/setup.js.map +1 -1
  105. package/dist/cli/commands/workflow.js +1 -1
  106. package/dist/cli/commands/workflow.js.map +1 -1
  107. package/dist/cli/index.js +0 -4
  108. package/dist/cli/index.js.map +1 -1
  109. package/dist/utils/analytics-reader.js +1 -1
  110. package/dist/utils/analytics-reader.js.map +1 -1
  111. package/dist/utils/codemie-model-fetcher.d.ts.map +1 -1
  112. package/dist/utils/codemie-model-fetcher.js +197 -122
  113. package/dist/utils/codemie-model-fetcher.js.map +1 -1
  114. package/dist/utils/codemie-proxy.d.ts +41 -21
  115. package/dist/utils/codemie-proxy.d.ts.map +1 -1
  116. package/dist/utils/codemie-proxy.js +151 -86
  117. package/dist/utils/codemie-proxy.js.map +1 -1
  118. package/dist/utils/config-loader.d.ts +4 -0
  119. package/dist/utils/config-loader.d.ts.map +1 -1
  120. package/dist/utils/config-loader.js +42 -2
  121. package/dist/utils/config-loader.js.map +1 -1
  122. package/dist/utils/first-time.d.ts +0 -4
  123. package/dist/utils/first-time.d.ts.map +1 -1
  124. package/dist/utils/first-time.js +5 -117
  125. package/dist/utils/first-time.js.map +1 -1
  126. package/dist/utils/logger.d.ts +31 -1
  127. package/dist/utils/logger.d.ts.map +1 -1
  128. package/dist/utils/logger.js +112 -2
  129. package/dist/utils/logger.js.map +1 -1
  130. package/dist/utils/proxy/plugins/analytics.plugin.d.ts +19 -0
  131. package/dist/utils/proxy/plugins/analytics.plugin.d.ts.map +1 -0
  132. package/dist/utils/proxy/plugins/analytics.plugin.js +84 -0
  133. package/dist/utils/proxy/plugins/analytics.plugin.js.map +1 -0
  134. package/dist/utils/proxy/plugins/header-injection.plugin.d.ts +16 -0
  135. package/dist/utils/proxy/plugins/header-injection.plugin.d.ts.map +1 -0
  136. package/dist/utils/proxy/plugins/header-injection.plugin.js +48 -0
  137. package/dist/utils/proxy/plugins/header-injection.plugin.js.map +1 -0
  138. package/dist/utils/proxy/plugins/index.d.ts +18 -0
  139. package/dist/utils/proxy/plugins/index.d.ts.map +1 -0
  140. package/dist/utils/proxy/plugins/index.js +30 -0
  141. package/dist/utils/proxy/plugins/index.js.map +1 -0
  142. package/dist/utils/proxy/plugins/registry.d.ts +50 -0
  143. package/dist/utils/proxy/plugins/registry.d.ts.map +1 -0
  144. package/dist/utils/proxy/plugins/registry.js +124 -0
  145. package/dist/utils/proxy/plugins/registry.js.map +1 -0
  146. package/dist/utils/proxy/plugins/sso-auth.plugin.d.ts +16 -0
  147. package/dist/utils/proxy/plugins/sso-auth.plugin.d.ts.map +1 -0
  148. package/dist/utils/proxy/plugins/sso-auth.plugin.js +35 -0
  149. package/dist/utils/proxy/plugins/sso-auth.plugin.js.map +1 -0
  150. package/dist/utils/proxy/plugins/types.d.ts +79 -0
  151. package/dist/utils/proxy/plugins/types.d.ts.map +1 -0
  152. package/dist/utils/proxy/plugins/types.js +8 -0
  153. package/dist/utils/proxy/plugins/types.js.map +1 -0
  154. package/dist/utils/sanitize.d.ts +28 -0
  155. package/dist/utils/sanitize.d.ts.map +1 -0
  156. package/dist/utils/sanitize.js +213 -0
  157. package/dist/utils/sanitize.js.map +1 -0
  158. package/dist/workflows/installer.d.ts.map +1 -1
  159. package/dist/workflows/installer.js +3 -4
  160. package/dist/workflows/installer.js.map +1 -1
  161. package/package.json +1 -1
  162. package/dist/cli/commands/config.d.ts +0 -3
  163. package/dist/cli/commands/config.d.ts.map +0 -1
  164. package/dist/cli/commands/config.js +0 -198
  165. package/dist/cli/commands/config.js.map +0 -1
  166. package/dist/cli/commands/env.d.ts +0 -3
  167. package/dist/cli/commands/env.d.ts.map +0 -1
  168. package/dist/cli/commands/env.js +0 -19
  169. package/dist/cli/commands/env.js.map +0 -1
  170. package/dist/utils/proxy/interceptors.d.ts +0 -69
  171. package/dist/utils/proxy/interceptors.d.ts.map +0 -1
  172. package/dist/utils/proxy/interceptors.js +0 -308
  173. package/dist/utils/proxy/interceptors.js.map +0 -1
@@ -1,308 +0,0 @@
1
- /**
2
- * Proxy Interceptor System
3
- *
4
- * Plugin-based architecture for extending proxy functionality.
5
- * SOLID: Open/Closed - add features without modifying core proxy.
6
- */
7
- import { getAnalytics } from '../../analytics/index.js';
8
- import { logger } from '../logger.js';
9
- /**
10
- * SSO Authentication Interceptor
11
- * Injects authentication cookies into requests
12
- */
13
- export class SSOAuthInterceptor {
14
- credentials;
15
- name = 'sso-auth';
16
- constructor(credentials) {
17
- this.credentials = credentials;
18
- }
19
- async onRequest(context) {
20
- // Inject SSO cookies
21
- const cookieHeader = Object.entries(this.credentials.cookies)
22
- .map(([key, value]) => `${key}=${value}`)
23
- .join('; ');
24
- context.headers['Cookie'] = cookieHeader;
25
- logger.debug(`[${this.name}] Injected SSO cookies`);
26
- }
27
- }
28
- /**
29
- * Header Injection Interceptor
30
- * Adds CodeMie-specific headers
31
- */
32
- export class HeaderInjectionInterceptor {
33
- config;
34
- name = 'header-injection';
35
- constructor(config) {
36
- this.config = config;
37
- }
38
- async onRequest(context) {
39
- // Request ID header
40
- context.headers['X-CodeMie-Request-ID'] = context.requestId;
41
- // Session ID header
42
- context.headers['X-CodeMie-Session-ID'] = this.config.sessionId;
43
- // Add integration header only for ai-run-sso provider
44
- if (this.config.provider === 'ai-run-sso' && this.config.integrationId) {
45
- context.headers['X-CodeMie-Integration'] = this.config.integrationId;
46
- }
47
- // Add model header if configured (for all providers)
48
- if (this.config.model) {
49
- context.headers['X-CodeMie-CLI-Model'] = this.config.model;
50
- }
51
- // Add timeout header if configured (for all providers)
52
- if (this.config.timeout) {
53
- context.headers['X-CodeMie-CLI-Timeout'] = String(this.config.timeout);
54
- }
55
- // Add client type header
56
- if (this.config.clientType) {
57
- context.headers['X-CodeMie-Client'] = this.config.clientType;
58
- }
59
- logger.debug(`[${this.name}] Injected CodeMie headers`);
60
- }
61
- }
62
- /**
63
- * Analytics Tracking Interceptor
64
- * Uses existing Analytics system - DRY principle
65
- */
66
- export class AnalyticsInterceptor {
67
- name = 'analytics';
68
- async onRequest(context) {
69
- try {
70
- const analytics = getAnalytics();
71
- if (!analytics.isEnabled) {
72
- return;
73
- }
74
- // Track request start time
75
- context.requestStartTime = Date.now();
76
- // Parse request body for analytics
77
- let requestBodyParsed = null;
78
- try {
79
- if (context.requestBody) {
80
- requestBodyParsed = JSON.parse(context.requestBody);
81
- }
82
- }
83
- catch {
84
- // Not JSON, skip parsing
85
- }
86
- // Truncate large request bodies
87
- const MAX_BODY_SIZE = 100000; // 100KB limit
88
- let requestBodyToLog = null;
89
- let requestBodyTruncated = false;
90
- const originalRequestBodySize = context.requestBody?.length || 0;
91
- if (requestBodyParsed) {
92
- const bodyStr = JSON.stringify(requestBodyParsed);
93
- if (bodyStr.length > MAX_BODY_SIZE) {
94
- requestBodyToLog = {
95
- model: requestBodyParsed.model,
96
- temperature: requestBodyParsed.temperature,
97
- max_tokens: requestBodyParsed.max_tokens,
98
- messageCount: requestBodyParsed.messages?.length || 0,
99
- contentTruncated: '[Content truncated - exceeded 100KB limit]',
100
- originalSize: bodyStr.length
101
- };
102
- requestBodyTruncated = true;
103
- }
104
- else {
105
- requestBodyToLog = requestBodyParsed;
106
- }
107
- }
108
- await analytics.track('api_request', {
109
- requestId: context.requestId,
110
- method: context.method,
111
- url: context.url,
112
- targetUrl: context.targetUrl,
113
- hasBody: !!context.requestBody,
114
- bodySize: originalRequestBodySize,
115
- bodyTruncated: requestBodyTruncated,
116
- ...(requestBodyToLog ? { requestBody: requestBodyToLog } : {})
117
- });
118
- logger.debug(`[${this.name}] Tracked API request: ${context.method} ${context.url}`);
119
- }
120
- catch (error) {
121
- // Silently fail - analytics should not block requests
122
- logger.error(`[${this.name}] Error tracking request:`, error);
123
- }
124
- }
125
- async onResponse(context, response) {
126
- try {
127
- const analytics = getAnalytics();
128
- if (!analytics.isEnabled) {
129
- return;
130
- }
131
- const latency = Date.now() - context.requestStartTime;
132
- let responseBodyParsed = null;
133
- const MAX_BODY_SIZE = 100000; // 100KB limit
134
- if (response.body) {
135
- const contentType = response.headers['content-type'] || '';
136
- const isStreaming = contentType.includes('text/event-stream');
137
- if (isStreaming) {
138
- // Store SSE text for response extraction
139
- const sseText = response.body.toString('utf-8');
140
- responseBodyParsed = { _sseContent: sseText, streaming: true };
141
- }
142
- else {
143
- // Standard JSON response
144
- try {
145
- responseBodyParsed = JSON.parse(response.body.toString('utf-8'));
146
- }
147
- catch {
148
- // Not JSON, ignore
149
- }
150
- }
151
- }
152
- // Truncate response body if needed
153
- let responseBodyToLog = null;
154
- let bodyTruncated = false;
155
- const originalBodySize = response.body?.length || 0;
156
- if (responseBodyParsed) {
157
- const bodyStr = JSON.stringify(responseBodyParsed);
158
- if (bodyStr.length > MAX_BODY_SIZE) {
159
- responseBodyToLog = {
160
- usage: responseBodyParsed.usage,
161
- model: responseBodyParsed.model,
162
- id: responseBodyParsed.id,
163
- object: responseBodyParsed.object,
164
- contentTruncated: '[Content truncated - exceeded 100KB limit]',
165
- originalSize: bodyStr.length
166
- };
167
- bodyTruncated = true;
168
- }
169
- else {
170
- responseBodyToLog = responseBodyParsed;
171
- }
172
- }
173
- await analytics.track('api_response', {
174
- requestId: context.requestId,
175
- statusCode: response.statusCode,
176
- statusMessage: response.statusMessage,
177
- headers: response.headers,
178
- ...(responseBodyToLog ? { responseBody: responseBodyToLog } : {}),
179
- bodySize: originalBodySize,
180
- bodyTruncated
181
- }, {
182
- latencyMs: latency
183
- });
184
- logger.debug(`[${this.name}] Tracked API response: ${response.statusCode} ${context.url} (${latency}ms)`);
185
- }
186
- catch (error) {
187
- // Silently fail - analytics should not block requests
188
- logger.error(`[${this.name}] Error tracking response:`, error);
189
- }
190
- }
191
- async onError(context, error) {
192
- try {
193
- const analytics = getAnalytics();
194
- if (!analytics.isEnabled) {
195
- return;
196
- }
197
- await analytics.track('proxy_error', {
198
- requestId: context.requestId,
199
- errorType: error.name,
200
- errorMessage: error.message,
201
- url: context.url
202
- });
203
- logger.debug(`[${this.name}] Tracked error`);
204
- }
205
- catch (trackError) {
206
- logger.error(`[${this.name}] Error tracking error:`, trackError);
207
- }
208
- }
209
- /**
210
- * Extract response content from various API formats
211
- * Reuses logic from original proxy
212
- */
213
- async extractResponseContent(responseBody) {
214
- let responseContent = null;
215
- // SSE streaming content
216
- if (responseBody._sseContent) {
217
- responseContent = await this.extractSSEContent(responseBody._sseContent);
218
- }
219
- // OpenAI/Claude streaming format (choices array)
220
- else if (responseBody.choices && Array.isArray(responseBody.choices) && responseBody.choices.length > 0) {
221
- const choice = responseBody.choices[0];
222
- if (choice.message?.content) {
223
- responseContent = choice.message.content;
224
- }
225
- else if (choice.delta?.content) {
226
- responseContent = choice.delta.content;
227
- }
228
- }
229
- // Claude Messages API format (content array)
230
- else if (responseBody.content && Array.isArray(responseBody.content)) {
231
- responseContent = responseBody.content
232
- .filter((c) => c.type === 'text' && c.text)
233
- .map((c) => c.text)
234
- .join('\n');
235
- }
236
- // Gemini format: candidates with content.parts
237
- else if (responseBody.candidates && Array.isArray(responseBody.candidates) && responseBody.candidates.length > 0) {
238
- const candidate = responseBody.candidates[0];
239
- if (candidate.content?.parts && Array.isArray(candidate.content.parts)) {
240
- const textParts = candidate.content.parts
241
- .filter((p) => p.text)
242
- .map((p) => p.text);
243
- if (textParts.length > 0) {
244
- responseContent = textParts.join('');
245
- }
246
- }
247
- }
248
- // Fallback: check for top-level content field
249
- else if (responseBody.content && typeof responseBody.content === 'string') {
250
- responseContent = responseBody.content;
251
- }
252
- return responseContent;
253
- }
254
- /**
255
- * Extract content from SSE stream
256
- * Simplified from original - focuses on content extraction
257
- */
258
- async extractSSEContent(sseText) {
259
- try {
260
- const lines = sseText.split('\n');
261
- const contentParts = [];
262
- for (const line of lines) {
263
- if (line.startsWith('data: ')) {
264
- const dataStr = line.slice(6).trim();
265
- if (!dataStr || dataStr === '[DONE]') {
266
- continue;
267
- }
268
- try {
269
- const data = JSON.parse(dataStr);
270
- // Claude streaming format
271
- if (data.type === 'content_block_delta' && data.delta?.text) {
272
- contentParts.push(data.delta.text);
273
- }
274
- // OpenAI streaming format
275
- else if (data.choices && Array.isArray(data.choices)) {
276
- for (const choice of data.choices) {
277
- if (choice.delta?.content) {
278
- contentParts.push(choice.delta.content);
279
- }
280
- }
281
- }
282
- // Gemini streaming format
283
- else if (data.candidates && Array.isArray(data.candidates)) {
284
- for (const candidate of data.candidates) {
285
- if (candidate.content?.parts && Array.isArray(candidate.content.parts)) {
286
- for (const part of candidate.content.parts) {
287
- if (part.text) {
288
- contentParts.push(part.text);
289
- }
290
- }
291
- }
292
- }
293
- }
294
- }
295
- catch {
296
- continue;
297
- }
298
- }
299
- }
300
- return contentParts.length > 0 ? contentParts.join('') : null;
301
- }
302
- catch (error) {
303
- logger.debug('SSE content extraction error:', error);
304
- return null;
305
- }
306
- }
307
- }
308
- //# sourceMappingURL=interceptors.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"interceptors.js","sourceRoot":"","sources":["../../../src/utils/proxy/interceptors.ts"],"names":[],"mappings":"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"}