n8n-nodes-github-copilot 3.31.29 → 3.31.30

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.
@@ -245,6 +245,12 @@ class GitHubCopilotOpenAI {
245
245
  const errorString = JSON.stringify(error);
246
246
  console.error('❌ Error occurred:', errorMessage);
247
247
  console.error('❌ Error details:', errorString);
248
+ let cleanMessage = errorMessage;
249
+ cleanMessage = cleanMessage.replace(/\[Token used: [^\]]+\]/g, '').trim();
250
+ cleanMessage = cleanMessage.replace(/\[Attempt: \d+\/\d+\]/g, '').trim();
251
+ cleanMessage = cleanMessage.replace(/^GitHub Copilot API error:\s*/i, '').trim();
252
+ cleanMessage = cleanMessage.replace(/\s+/g, ' ').trim();
253
+ console.log('🧹 Cleaned error message:', cleanMessage);
248
254
  let apiError = null;
249
255
  try {
250
256
  if (error && typeof error === 'object' && 'cause' in error) {
@@ -266,45 +272,58 @@ class GitHubCopilotOpenAI {
266
272
  let errorType = "invalid_request_error";
267
273
  let errorCode = null;
268
274
  let errorParam = null;
269
- let finalMessage = errorMessage;
275
+ let finalMessage = cleanMessage;
270
276
  if (apiError && apiError.error) {
271
- finalMessage = apiError.error.message || errorMessage;
277
+ finalMessage = apiError.error.message || cleanMessage;
272
278
  errorType = apiError.error.type || errorType;
273
279
  errorCode = apiError.error.code || null;
274
280
  errorParam = apiError.error.param || null;
275
281
  console.log('✅ Using GitHub Copilot API error details');
276
282
  }
277
283
  else {
278
- if (errorMessage.includes("max") && errorMessage.includes("token")) {
284
+ const lowerMessage = cleanMessage.toLowerCase();
285
+ if (lowerMessage.includes("403") || lowerMessage.includes("forbidden")) {
279
286
  errorType = "invalid_request_error";
280
- errorCode = "context_length_exceeded";
281
- errorParam = "max_tokens";
287
+ errorCode = "insufficient_quota";
288
+ if (lowerMessage.includes("access") && lowerMessage.includes("forbidden")) {
289
+ finalMessage = "You exceeded your current quota, please check your plan and billing details.";
290
+ }
291
+ else {
292
+ finalMessage = cleanMessage;
293
+ }
282
294
  }
283
- else if (errorMessage.includes("403") || errorMessage.includes("Forbidden")) {
295
+ else if (lowerMessage.includes("max") && lowerMessage.includes("token")) {
284
296
  errorType = "invalid_request_error";
285
- errorCode = "insufficient_quota";
297
+ errorCode = "context_length_exceeded";
298
+ errorParam = "max_tokens";
299
+ finalMessage = "This model's maximum context length is exceeded. Please reduce the length of the messages or completion.";
286
300
  }
287
- else if (errorMessage.includes("401") || errorMessage.includes("Unauthorized")) {
301
+ else if (lowerMessage.includes("401") || lowerMessage.includes("unauthorized")) {
288
302
  errorType = "invalid_request_error";
289
303
  errorCode = "invalid_api_key";
304
+ finalMessage = "Incorrect API key provided. You can find your API key at https://platform.openai.com/account/api-keys.";
290
305
  }
291
- else if (errorMessage.includes("400") || errorMessage.includes("Bad Request")) {
306
+ else if (lowerMessage.includes("400") || lowerMessage.includes("bad request")) {
292
307
  errorType = "invalid_request_error";
293
308
  errorCode = "invalid_request";
309
+ finalMessage = cleanMessage;
294
310
  }
295
- else if (errorMessage.includes("429") || errorMessage.includes("rate limit")) {
311
+ else if (lowerMessage.includes("429") || lowerMessage.includes("rate limit")) {
296
312
  errorType = "rate_limit_error";
297
313
  errorCode = "rate_limit_exceeded";
314
+ finalMessage = "Rate limit reached. Please wait before making more requests.";
298
315
  }
299
- else if (errorMessage.includes("timeout")) {
316
+ else if (lowerMessage.includes("timeout")) {
300
317
  errorType = "api_error";
301
318
  errorCode = "timeout";
319
+ finalMessage = "Request timeout. Please try again.";
302
320
  }
303
321
  else {
304
322
  errorType = "api_error";
305
323
  errorCode = "internal_error";
324
+ finalMessage = cleanMessage;
306
325
  }
307
- console.log('⚠️ Using fallback error detection');
326
+ console.log('⚠️ Using fallback error detection with cleaned message');
308
327
  }
309
328
  console.log('📋 Final error format:', {
310
329
  message: finalMessage,
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "n8n-nodes-github-copilot",
3
- "version": "3.31.29",
3
+ "version": "3.31.30",
4
4
  "description": "n8n community node for GitHub Copilot with CLI integration, Chat API access, and AI Chat Model for workflows - access GPT-5, Claude, Gemini and more using your Copilot subscription",
5
5
  "license": "MIT",
6
6
  "homepage": "https://github.com/sufficit/n8n-nodes-github-copilot",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "n8n-nodes-github-copilot",
3
- "version": "3.31.29",
3
+ "version": "3.31.30",
4
4
  "description": "n8n community node for GitHub Copilot with CLI integration, Chat API access, and AI Chat Model for workflows - access GPT-5, Claude, Gemini and more using your Copilot subscription",
5
5
  "license": "MIT",
6
6
  "homepage": "https://github.com/sufficit/n8n-nodes-github-copilot",