@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,22 +1,147 @@
1
1
  import { CredentialStore } from './credential-store.js';
2
2
  import https from 'https';
3
+ import http from 'http';
3
4
  import { URL } from 'url';
5
+ import { logger } from './logger.js';
6
+ import { sanitizeHeaders } from './sanitize.js';
4
7
  // Common endpoint paths
5
8
  export const CODEMIE_ENDPOINTS = {
6
9
  MODELS: '/v1/llm_models',
7
10
  USER_SETTINGS: '/v1/settings/user'
8
11
  };
12
+ // Configuration
13
+ const MAX_REDIRECTS = 5;
14
+ const MAX_RETRIES = 3;
15
+ /**
16
+ * Make HTTPS/HTTP request with automatic redirect following
17
+ * Handles 301, 302, 303, 307, 308 redirects following HTTP standards
18
+ */
19
+ async function makeRequestWithRedirects(url, requestOptions, redirectCount = 0) {
20
+ if (redirectCount >= MAX_REDIRECTS) {
21
+ throw new Error(`Too many redirects (${redirectCount}). Possible redirect loop.`);
22
+ }
23
+ const parsedUrl = new URL(url);
24
+ const protocol = parsedUrl.protocol === 'https:' ? https : http;
25
+ const options = {
26
+ ...requestOptions,
27
+ hostname: parsedUrl.hostname,
28
+ port: parsedUrl.port || (parsedUrl.protocol === 'https:' ? 443 : 80),
29
+ path: parsedUrl.pathname + parsedUrl.search,
30
+ };
31
+ if (logger.isDebugMode()) {
32
+ logger.debug(`[HTTP Request] ${options.method} ${url}`);
33
+ logger.debug(`[Headers]`, sanitizeHeaders(requestOptions.headers));
34
+ if (redirectCount > 0) {
35
+ logger.debug(`[Redirect] Following redirect #${redirectCount}`);
36
+ }
37
+ }
38
+ return new Promise((resolve, reject) => {
39
+ const req = protocol.request(options, (res) => {
40
+ let data = '';
41
+ res.on('data', (chunk) => {
42
+ data += chunk;
43
+ });
44
+ res.on('end', async () => {
45
+ const statusCode = res.statusCode || 0;
46
+ if (logger.isDebugMode()) {
47
+ logger.debug(`[HTTP Response] ${statusCode} ${res.statusMessage}`);
48
+ logger.debug(`[Response Headers]`, sanitizeHeaders(res.headers));
49
+ }
50
+ // Handle redirects (301, 302, 303, 307, 308)
51
+ if (statusCode >= 300 && statusCode < 400) {
52
+ const location = res.headers['location'];
53
+ if (!location) {
54
+ reject(new Error(`Redirect ${statusCode} without Location header`));
55
+ return;
56
+ }
57
+ // Resolve relative URLs against current URL
58
+ const redirectUrl = new URL(location, url).toString();
59
+ logger.info(`[Redirect] ${statusCode} -> ${redirectUrl}`);
60
+ // Update cookies from Set-Cookie headers if present
61
+ const setCookieHeaders = res.headers['set-cookie'];
62
+ if (setCookieHeaders && requestOptions.headers) {
63
+ const existingCookies = requestOptions.headers['cookie'] || '';
64
+ const newCookies = setCookieHeaders
65
+ .map(cookie => cookie.split(';')[0]) // Extract cookie name=value
66
+ .join('; ');
67
+ requestOptions.headers['cookie'] = existingCookies
68
+ ? `${existingCookies}; ${newCookies}`
69
+ : newCookies;
70
+ }
71
+ // For 303, change POST/PUT to GET
72
+ if (statusCode === 303 && options.method !== 'GET' && options.method !== 'HEAD') {
73
+ requestOptions.method = 'GET';
74
+ delete requestOptions.headers?.['content-length'];
75
+ delete requestOptions.headers?.['content-type'];
76
+ }
77
+ try {
78
+ // Follow the redirect
79
+ const redirectResponse = await makeRequestWithRedirects(redirectUrl, requestOptions, redirectCount + 1);
80
+ resolve(redirectResponse);
81
+ }
82
+ catch (error) {
83
+ reject(error);
84
+ }
85
+ return;
86
+ }
87
+ // Not a redirect, return response
88
+ resolve({
89
+ statusCode,
90
+ statusMessage: res.statusMessage,
91
+ headers: res.headers,
92
+ data
93
+ });
94
+ });
95
+ });
96
+ req.on('error', (error) => {
97
+ if (logger.isDebugMode()) {
98
+ logger.error(`[HTTP Error]`, error);
99
+ }
100
+ reject(error);
101
+ });
102
+ req.on('timeout', () => {
103
+ req.destroy();
104
+ reject(new Error('Request timeout'));
105
+ });
106
+ req.end();
107
+ });
108
+ }
109
+ /**
110
+ * Retry wrapper with exponential backoff
111
+ */
112
+ async function withRetry(fn, operation, maxRetries = MAX_RETRIES) {
113
+ let lastError;
114
+ for (let attempt = 1; attempt <= maxRetries; attempt++) {
115
+ try {
116
+ return await fn();
117
+ }
118
+ catch (error) {
119
+ lastError = error;
120
+ // Don't retry auth errors
121
+ if (lastError.message.includes('SSO session expired') ||
122
+ lastError.message.includes('401') ||
123
+ lastError.message.includes('403')) {
124
+ throw lastError;
125
+ }
126
+ // Log retry attempt
127
+ logger.warn(`[Retry] ${operation} failed (attempt ${attempt}/${maxRetries}): ${lastError.message}`);
128
+ if (attempt < maxRetries) {
129
+ // Exponential backoff: 1s, 2s, 4s
130
+ const delay = Math.pow(2, attempt - 1) * 1000;
131
+ logger.debug(`[Retry] Waiting ${delay}ms before retry...`);
132
+ await new Promise(resolve => setTimeout(resolve, delay));
133
+ }
134
+ }
135
+ }
136
+ throw lastError;
137
+ }
9
138
  export async function fetchCodeMieModels(apiUrl, cookies) {
10
- const cookieString = Object.entries(cookies)
11
- .map(([key, value]) => `${key}=${value}`)
12
- .join(';');
13
- try {
14
- // Use custom HTTPS request to properly handle certificate issues in enterprise environments
15
- const parsedUrl = new URL(`${apiUrl}${CODEMIE_ENDPOINTS.MODELS}`);
139
+ return withRetry(async () => {
140
+ const cookieString = Object.entries(cookies)
141
+ .map(([key, value]) => `${key}=${value}`)
142
+ .join(';');
143
+ const url = `${apiUrl}${CODEMIE_ENDPOINTS.MODELS}`;
16
144
  const requestOptions = {
17
- hostname: parsedUrl.hostname,
18
- port: parsedUrl.port || (parsedUrl.protocol === 'https:' ? 443 : 80),
19
- path: parsedUrl.pathname + parsedUrl.search,
20
145
  method: 'GET',
21
146
  headers: {
22
147
  'cookie': cookieString,
@@ -28,29 +153,7 @@ export async function fetchCodeMieModels(apiUrl, cookies) {
28
153
  rejectUnauthorized: false, // Allow self-signed certificates
29
154
  timeout: 10000
30
155
  };
31
- const response = await new Promise((resolve, reject) => {
32
- const req = https.request(requestOptions, (res) => {
33
- let data = '';
34
- res.on('data', (chunk) => {
35
- data += chunk;
36
- });
37
- res.on('end', () => {
38
- resolve({
39
- statusCode: res.statusCode,
40
- statusMessage: res.statusMessage,
41
- data
42
- });
43
- });
44
- });
45
- req.on('error', (error) => {
46
- reject(error);
47
- });
48
- req.on('timeout', () => {
49
- req.destroy();
50
- reject(new Error('Request timeout'));
51
- });
52
- req.end();
53
- });
156
+ const response = await makeRequestWithRedirects(url, requestOptions);
54
157
  if (!response.statusCode || response.statusCode < 200 || response.statusCode >= 300) {
55
158
  if (response.statusCode === 401 || response.statusCode === 403) {
56
159
  throw new Error('SSO session expired - please run setup again');
@@ -80,11 +183,7 @@ export async function fetchCodeMieModels(apiUrl, cookies) {
80
183
  .filter(id => id !== 'unknown')
81
184
  .sort();
82
185
  return filteredModels;
83
- }
84
- catch (error) {
85
- console.error('Error fetching CodeMie models:', error);
86
- throw error;
87
- }
186
+ }, 'fetchCodeMieModels');
88
187
  }
89
188
  export async function fetchCodeMieModelsFromConfig() {
90
189
  const store = CredentialStore.getInstance();
@@ -134,96 +233,72 @@ export async function fetchCodeMieIntegrations(apiUrl, cookies, endpointPath = C
134
233
  return allIntegrations;
135
234
  }
136
235
  async function fetchIntegrationsPage(fullUrl, cookieString) {
137
- const parsedUrl = new URL(fullUrl);
138
- const requestOptions = {
139
- hostname: parsedUrl.hostname,
140
- port: parsedUrl.port || (parsedUrl.protocol === 'https:' ? 443 : 80),
141
- path: parsedUrl.pathname + parsedUrl.search,
142
- method: 'GET',
143
- headers: {
144
- 'cookie': cookieString,
145
- 'Content-Type': 'application/json',
146
- 'User-Agent': 'CodeMie-CLI/1.0.0',
147
- 'X-CodeMie-Client': 'codemie-cli'
148
- },
149
- // Handle certificate issues commonly found in enterprise environments
150
- rejectUnauthorized: false, // Allow self-signed certificates
151
- timeout: 10000
152
- };
153
- const response = await new Promise((resolve, reject) => {
154
- const req = https.request(requestOptions, (res) => {
155
- let data = '';
156
- res.on('data', (chunk) => {
157
- data += chunk;
158
- });
159
- res.on('end', () => {
160
- resolve({
161
- statusCode: res.statusCode,
162
- statusMessage: res.statusMessage,
163
- data
164
- });
165
- });
166
- });
167
- req.on('error', (error) => {
168
- reject(error);
169
- });
170
- req.on('timeout', () => {
171
- req.destroy();
172
- reject(new Error('Request timeout'));
173
- });
174
- req.end();
175
- });
176
- if (!response.statusCode || response.statusCode < 200 || response.statusCode >= 300) {
177
- if (response.statusCode === 401 || response.statusCode === 403) {
178
- throw new Error('SSO session expired - please run setup again');
236
+ return withRetry(async () => {
237
+ const requestOptions = {
238
+ method: 'GET',
239
+ headers: {
240
+ 'cookie': cookieString,
241
+ 'Content-Type': 'application/json',
242
+ 'User-Agent': 'CodeMie-CLI/1.0.0',
243
+ 'X-CodeMie-Client': 'codemie-cli'
244
+ },
245
+ // Handle certificate issues commonly found in enterprise environments
246
+ rejectUnauthorized: false, // Allow self-signed certificates
247
+ timeout: 10000
248
+ };
249
+ const response = await makeRequestWithRedirects(fullUrl, requestOptions);
250
+ if (!response.statusCode || response.statusCode < 200 || response.statusCode >= 300) {
251
+ if (response.statusCode === 401 || response.statusCode === 403) {
252
+ throw new Error('SSO session expired - please run setup again');
253
+ }
254
+ if (response.statusCode === 404) {
255
+ throw new Error(`Integrations endpoint not found. Response: ${response.data}`);
256
+ }
257
+ throw new Error(`Failed to fetch integrations: ${response.statusCode} ${response.statusMessage}`);
179
258
  }
180
- if (response.statusCode === 404) {
181
- throw new Error(`Integrations endpoint not found. Response: ${response.data}`);
259
+ // Parse the response - handle flexible response structure
260
+ const responseData = JSON.parse(response.data);
261
+ // Extract integrations from response - try all possible locations
262
+ let integrations = [];
263
+ // Try different possible property names and structures
264
+ const possibleArrays = [
265
+ responseData, // Direct array
266
+ responseData.integrations,
267
+ responseData.credentials,
268
+ responseData.data,
269
+ responseData.items,
270
+ responseData.results,
271
+ responseData.user_integrations,
272
+ responseData.personal_integrations,
273
+ responseData.available_integrations
274
+ ].filter(arr => Array.isArray(arr));
275
+ if (possibleArrays.length > 0) {
276
+ integrations = possibleArrays[0];
182
277
  }
183
- throw new Error(`Failed to fetch integrations: ${response.statusCode} ${response.statusMessage}`);
184
- }
185
- // Parse the response - handle flexible response structure
186
- const responseData = JSON.parse(response.data);
187
- // Extract integrations from response - try all possible locations
188
- let integrations = [];
189
- // Try different possible property names and structures
190
- const possibleArrays = [
191
- responseData, // Direct array
192
- responseData.integrations,
193
- responseData.credentials,
194
- responseData.data,
195
- responseData.items,
196
- responseData.results,
197
- responseData.user_integrations,
198
- responseData.personal_integrations,
199
- responseData.available_integrations
200
- ].filter(arr => Array.isArray(arr));
201
- if (possibleArrays.length > 0) {
202
- integrations = possibleArrays[0];
203
- }
204
- else {
205
- // Try to find nested objects that might contain arrays
206
- for (const value of Object.values(responseData)) {
207
- if (typeof value === 'object' && value !== null) {
208
- const nestedArrays = Object.values(value).filter(Array.isArray);
209
- if (nestedArrays.length > 0) {
210
- integrations = nestedArrays[0];
211
- break;
278
+ else {
279
+ // Try to find nested objects that might contain arrays
280
+ for (const value of Object.values(responseData)) {
281
+ if (typeof value === 'object' && value !== null) {
282
+ const nestedArrays = Object.values(value).filter(Array.isArray);
283
+ if (nestedArrays.length > 0) {
284
+ integrations = nestedArrays[0];
285
+ break;
286
+ }
212
287
  }
213
288
  }
214
289
  }
215
- }
216
- // Filter and validate integrations (already filtered by API, but double-check)
217
- const validIntegrations = integrations
218
- .filter(integration => {
219
- return integration &&
220
- integration.alias &&
221
- integration.credential_type &&
222
- integration.alias.trim() !== '' &&
223
- integration.credential_type.trim() !== '';
224
- })
225
- .sort((a, b) => a.alias.localeCompare(b.alias));
226
- return validIntegrations;
290
+ // Filter and validate integrations (already filtered by API, but double-check)
291
+ const validIntegrations = integrations
292
+ .filter(integration => {
293
+ return integration &&
294
+ integration.alias &&
295
+ integration.credential_type &&
296
+ integration.alias.trim() !== '' &&
297
+ integration.credential_type.trim() !== '';
298
+ })
299
+ .sort((a, b) => a.alias.localeCompare(b.alias));
300
+ return validIntegrations;
301
+ }, 'fetchIntegrationsPage');
227
302
  }
228
303
  export async function fetchCodeMieIntegrationsFromConfig() {
229
304
  const store = CredentialStore.getInstance();
@@ -1 +1 @@
1
- {"version":3,"file":"codemie-model-fetcher.js","sourceRoot":"","sources":["../../src/utils/codemie-model-fetcher.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"codemie-model-fetcher.js","sourceRoot":"","sources":["../../src/utils/codemie-model-fetcher.ts"],"names":[],"mappings":"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"}
@@ -1,37 +1,40 @@
1
1
  /**
2
- * CodeMie Proxy Server - Refactored
2
+ * CodeMie Proxy Server - Plugin-Based Architecture
3
3
  *
4
- * Clean, modular proxy implementation following SOLID principles.
5
- * Uses interceptor pattern for extensibility (Open/Closed).
4
+ * KISS: Does ONE thing - forwards HTTP requests with streaming
5
+ * SOLID: Single responsibility, plugins injected via registry
6
+ * NO analytics-specific logic in core!
6
7
  *
7
8
  * Architecture:
8
9
  * - ProxyHTTPClient: Handles HTTP forwarding with streaming
9
- * - Interceptors: Plugin-based request/response/error handling
10
- * - Main Proxy: Orchestrates the flow
10
+ * - PluginRegistry: Manages plugin lifecycle and ordering
11
+ * - ProxyInterceptors: Plugin-based hooks for extensibility
12
+ * - Main Proxy: Orchestrates the flow with zero buffering
11
13
  *
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
14
+ * Flow:
15
+ * 1. Build context
16
+ * 2. Run onRequest hooks
17
+ * 3. Forward to upstream (get response headers)
18
+ * 4. Run onResponseHeaders hooks
19
+ * 5. Stream response body (with optional chunk hooks)
20
+ * 6. Run onResponseComplete hooks
21
+ *
22
+ * NO BUFFERING by default!
15
23
  */
16
24
  import { ProxyConfig } from './proxy/types.js';
17
- export type GatewayConfig = ProxyConfig;
25
+ import './proxy/plugins/index.js';
18
26
  /**
19
- * CodeMie Proxy - Simple HTTP proxy with interceptor support
20
- * KISS: Core responsibility = forward requests + run interceptors
27
+ * CodeMie Proxy - Plugin-based HTTP proxy with streaming
28
+ * KISS: Core responsibility = forward requests + run plugin hooks
21
29
  */
22
30
  export declare class CodeMieProxy {
23
31
  private config;
24
32
  private server;
25
- private credentials;
26
33
  private httpClient;
27
34
  private interceptors;
28
35
  private actualPort;
36
+ private remoteSubmitter;
29
37
  constructor(config: ProxyConfig);
30
- /**
31
- * Register interceptors
32
- * Easy to add new interceptors without modifying handleRequest
33
- */
34
- private registerInterceptors;
35
38
  /**
36
39
  * Start the proxy server
37
40
  */
@@ -39,13 +42,26 @@ export declare class CodeMieProxy {
39
42
  port: number;
40
43
  url: string;
41
44
  }>;
45
+ /**
46
+ * Start remote analytics submitter
47
+ */
48
+ private startRemoteAnalyticsSubmitter;
42
49
  /**
43
50
  * Stop the proxy server
44
51
  */
45
52
  stop(): Promise<void>;
46
53
  /**
47
- * Core request handler - Clean, simple flow
48
- * KISS: Build context → run interceptors → forward → stream
54
+ * Handle incoming request - STREAMING ONLY
55
+ *
56
+ * Flow:
57
+ * 1. Build context
58
+ * 2. Run onRequest hooks
59
+ * 3. Forward to upstream (get response headers)
60
+ * 4. Run onResponseHeaders hooks
61
+ * 5. Stream response body (with optional chunk hooks)
62
+ * 6. Run onResponseComplete hooks
63
+ *
64
+ * NO BUFFERING!
49
65
  */
50
66
  private handleRequest;
51
67
  /**
@@ -61,9 +77,13 @@ export declare class CodeMieProxy {
61
77
  */
62
78
  private readBody;
63
79
  /**
64
- * Send successful response to client
80
+ * Stream response with optional chunk transformation
81
+ */
82
+ private streamResponse;
83
+ /**
84
+ * Run interceptor hook safely (errors don't break flow)
65
85
  */
66
- private sendResponse;
86
+ private runHook;
67
87
  /**
68
88
  * Handle errors with proper status codes and structure
69
89
  */
@@ -1 +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;IAqB3B;;;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;IA6BzB;;OAEG;YACW,iBAAiB;CAsBhC"}
1
+ {"version":3,"file":"codemie-proxy.d.ts","sourceRoot":"","sources":["../../src/utils/codemie-proxy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAWH,OAAO,EAAE,WAAW,EAAgB,MAAM,kBAAkB,CAAC;AAI7D,OAAO,0BAA0B,CAAC;AAElC;;;GAGG;AACH,qBAAa,YAAY;IAOX,OAAO,CAAC,MAAM;IAN1B,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,UAAU,CAAkB;IACpC,OAAO,CAAC,YAAY,CAA0B;IAC9C,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,eAAe,CAAyC;gBAE5C,MAAM,EAAE,WAAW;IAQvC;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IA0ErD;;OAEG;YACW,6BAA6B;IAuB3C;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IA2B3B;;;;;;;;;;;;OAYG;YACW,aAAa;IAgD3B;;OAEG;YACW,YAAY;IA0B1B;;OAEG;IACH,OAAO,CAAC,cAAc;IAatB;;OAEG;YACW,QAAQ;IAiBtB;;OAEG;YACW,cAAc;IAqD5B;;OAEG;YACW,OAAO;IAcrB;;OAEG;YACW,WAAW;IA4CzB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IA6BzB;;OAEG;YACW,iBAAiB;CAsBhC"}