n8n-nodes-github-copilot 3.31.29 → 3.31.31

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.
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.GitHubCopilotOpenAI = void 0;
4
+ const n8n_workflow_1 = require("n8n-workflow");
4
5
  const nodeProperties_1 = require("./nodeProperties");
5
6
  const utils_1 = require("../GitHubCopilotChatAPI/utils");
6
7
  const GitHubCopilotEndpoints_1 = require("../../shared/utils/GitHubCopilotEndpoints");
@@ -245,6 +246,12 @@ class GitHubCopilotOpenAI {
245
246
  const errorString = JSON.stringify(error);
246
247
  console.error('❌ Error occurred:', errorMessage);
247
248
  console.error('❌ Error details:', errorString);
249
+ let cleanMessage = errorMessage;
250
+ cleanMessage = cleanMessage.replace(/\[Token used: [^\]]+\]/g, '').trim();
251
+ cleanMessage = cleanMessage.replace(/\[Attempt: \d+\/\d+\]/g, '').trim();
252
+ cleanMessage = cleanMessage.replace(/^GitHub Copilot API error:\s*/i, '').trim();
253
+ cleanMessage = cleanMessage.replace(/\s+/g, ' ').trim();
254
+ console.log('🧹 Cleaned error message:', cleanMessage);
248
255
  let apiError = null;
249
256
  try {
250
257
  if (error && typeof error === 'object' && 'cause' in error) {
@@ -266,45 +273,64 @@ class GitHubCopilotOpenAI {
266
273
  let errorType = "invalid_request_error";
267
274
  let errorCode = null;
268
275
  let errorParam = null;
269
- let finalMessage = errorMessage;
276
+ let finalMessage = cleanMessage;
270
277
  if (apiError && apiError.error) {
271
- finalMessage = apiError.error.message || errorMessage;
278
+ finalMessage = apiError.error.message || cleanMessage;
272
279
  errorType = apiError.error.type || errorType;
273
280
  errorCode = apiError.error.code || null;
274
281
  errorParam = apiError.error.param || null;
275
282
  console.log('✅ Using GitHub Copilot API error details');
276
283
  }
277
284
  else {
278
- if (errorMessage.includes("max") && errorMessage.includes("token")) {
285
+ const lowerMessage = cleanMessage.toLowerCase();
286
+ const is400Error = lowerMessage.includes("400") || lowerMessage.includes("bad request");
287
+ if (is400Error) {
279
288
  errorType = "invalid_request_error";
280
- errorCode = "context_length_exceeded";
281
- errorParam = "max_tokens";
289
+ errorCode = "invalid_request";
290
+ finalMessage = cleanMessage;
291
+ console.log('🚫 400 Bad Request detected - throwing non-retryable error');
292
+ throw new n8n_workflow_1.NodeOperationError(this.getNode(), `Bad Request (400): ${finalMessage}`, {
293
+ itemIndex: i,
294
+ description: 'The request was malformed or contains invalid parameters. Retrying will not help.',
295
+ });
282
296
  }
283
- else if (errorMessage.includes("403") || errorMessage.includes("Forbidden")) {
297
+ else if (lowerMessage.includes("403") || lowerMessage.includes("forbidden")) {
284
298
  errorType = "invalid_request_error";
285
299
  errorCode = "insufficient_quota";
300
+ if (lowerMessage.includes("access") && lowerMessage.includes("forbidden")) {
301
+ finalMessage = "You exceeded your current quota, please check your plan and billing details.";
302
+ }
303
+ else {
304
+ finalMessage = cleanMessage;
305
+ }
286
306
  }
287
- else if (errorMessage.includes("401") || errorMessage.includes("Unauthorized")) {
307
+ else if (lowerMessage.includes("max") && lowerMessage.includes("token")) {
288
308
  errorType = "invalid_request_error";
289
- errorCode = "invalid_api_key";
309
+ errorCode = "context_length_exceeded";
310
+ errorParam = "max_tokens";
311
+ finalMessage = "This model's maximum context length is exceeded. Please reduce the length of the messages or completion.";
290
312
  }
291
- else if (errorMessage.includes("400") || errorMessage.includes("Bad Request")) {
313
+ else if (lowerMessage.includes("401") || lowerMessage.includes("unauthorized")) {
292
314
  errorType = "invalid_request_error";
293
- errorCode = "invalid_request";
315
+ errorCode = "invalid_api_key";
316
+ finalMessage = "Incorrect API key provided. You can find your API key at https://platform.openai.com/account/api-keys.";
294
317
  }
295
- else if (errorMessage.includes("429") || errorMessage.includes("rate limit")) {
318
+ else if (lowerMessage.includes("429") || lowerMessage.includes("rate limit")) {
296
319
  errorType = "rate_limit_error";
297
320
  errorCode = "rate_limit_exceeded";
321
+ finalMessage = "Rate limit reached. Please wait before making more requests.";
298
322
  }
299
- else if (errorMessage.includes("timeout")) {
323
+ else if (lowerMessage.includes("timeout")) {
300
324
  errorType = "api_error";
301
325
  errorCode = "timeout";
326
+ finalMessage = "Request timeout. Please try again.";
302
327
  }
303
328
  else {
304
329
  errorType = "api_error";
305
330
  errorCode = "internal_error";
331
+ finalMessage = cleanMessage;
306
332
  }
307
- console.log('⚠️ Using fallback error detection');
333
+ console.log('⚠️ Using fallback error detection with cleaned message');
308
334
  }
309
335
  console.log('📋 Final error format:', {
310
336
  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.31",
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.31",
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",