n8n-nodes-simple 2.6.6 → 3.1.1

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 (83) hide show
  1. package/dist/nodes/shared/api/errorClassifier.d.ts +18 -1
  2. package/dist/nodes/shared/api/errorClassifier.js +95 -32
  3. package/dist/nodes/shared/api/errorClassifier.js.map +1 -1
  4. package/dist/nodes/shared/api/responsesApiConverter.d.ts +6 -0
  5. package/dist/nodes/shared/api/responsesApiConverter.js +264 -0
  6. package/dist/nodes/shared/api/responsesApiConverter.js.map +1 -0
  7. package/dist/nodes/shared/api/types.d.ts +4 -1
  8. package/dist/nodes/shared/config/parameters.d.ts +7 -3
  9. package/dist/nodes/shared/config/parameters.js +16 -10
  10. package/dist/nodes/shared/config/parameters.js.map +1 -1
  11. package/dist/nodes/shared/config/properties/messages.js +45 -16
  12. package/dist/nodes/shared/config/properties/messages.js.map +1 -1
  13. package/dist/nodes/shared/config/properties/options.js +45 -62
  14. package/dist/nodes/shared/config/properties/options.js.map +1 -1
  15. package/dist/nodes/shared/config/properties/output.js +1 -1
  16. package/dist/nodes/shared/config/properties/output.js.map +1 -1
  17. package/dist/nodes/shared/core/execution/errors.js +44 -0
  18. package/dist/nodes/shared/core/execution/errors.js.map +1 -1
  19. package/dist/nodes/shared/core/execution/executionSetup.d.ts +1 -0
  20. package/dist/nodes/shared/core/execution/executionSetup.js +3 -1
  21. package/dist/nodes/shared/core/execution/executionSetup.js.map +1 -1
  22. package/dist/nodes/shared/core/execution/executor.d.ts +1 -1
  23. package/dist/nodes/shared/core/execution/executor.js +9 -5
  24. package/dist/nodes/shared/core/execution/executor.js.map +1 -1
  25. package/dist/nodes/shared/core/execution/messageOperation.js +1 -1
  26. package/dist/nodes/shared/core/execution/messageOperation.js.map +1 -1
  27. package/dist/nodes/shared/core/execution/modelAttempt.d.ts +4 -0
  28. package/dist/nodes/shared/core/execution/modelAttempt.js +55 -10
  29. package/dist/nodes/shared/core/execution/modelAttempt.js.map +1 -1
  30. package/dist/nodes/shared/core/execution/modelConfig.d.ts +5 -1
  31. package/dist/nodes/shared/core/execution/modelConfig.js +55 -8
  32. package/dist/nodes/shared/core/execution/modelConfig.js.map +1 -1
  33. package/dist/nodes/shared/core/execution/outputData.js +13 -5
  34. package/dist/nodes/shared/core/execution/outputData.js.map +1 -1
  35. package/dist/nodes/shared/core/execution/retryHandler.d.ts +2 -2
  36. package/dist/nodes/shared/core/execution/retryHandler.js +7 -7
  37. package/dist/nodes/shared/core/execution/retryHandler.js.map +1 -1
  38. package/dist/nodes/shared/core/execution/router.js +1 -1
  39. package/dist/nodes/shared/core/execution/router.js.map +1 -1
  40. package/dist/nodes/shared/core/execution/usageTracking.js +4 -1
  41. package/dist/nodes/shared/core/execution/usageTracking.js.map +1 -1
  42. package/dist/nodes/shared/core/memory/io.js +18 -8
  43. package/dist/nodes/shared/core/memory/io.js.map +1 -1
  44. package/dist/nodes/shared/core/messages/chatHistory.js +1 -1
  45. package/dist/nodes/shared/core/messages/chatHistory.js.map +1 -1
  46. package/dist/nodes/shared/core/messages/converter.js +22 -26
  47. package/dist/nodes/shared/core/messages/converter.js.map +1 -1
  48. package/dist/nodes/shared/core/messages/types.d.ts +8 -2
  49. package/dist/nodes/shared/core/messages/types.js +20 -0
  50. package/dist/nodes/shared/core/messages/types.js.map +1 -1
  51. package/dist/nodes/shared/core/request/body.d.ts +1 -1
  52. package/dist/nodes/shared/core/request/body.js +12 -27
  53. package/dist/nodes/shared/core/request/body.js.map +1 -1
  54. package/dist/nodes/shared/core/request/sanitization.d.ts +4 -0
  55. package/dist/nodes/shared/core/request/sanitization.js +46 -0
  56. package/dist/nodes/shared/core/request/sanitization.js.map +1 -0
  57. package/dist/nodes/shared/core/tools/executor.d.ts +4 -2
  58. package/dist/nodes/shared/core/tools/executor.js +23 -248
  59. package/dist/nodes/shared/core/tools/executor.js.map +1 -1
  60. package/dist/nodes/shared/core/tools/handoff.d.ts +6 -0
  61. package/dist/nodes/shared/core/tools/handoff.js +25 -0
  62. package/dist/nodes/shared/core/tools/handoff.js.map +1 -0
  63. package/dist/nodes/shared/core/tools/maxIterationsHandler.d.ts +9 -0
  64. package/dist/nodes/shared/core/tools/maxIterationsHandler.js +55 -0
  65. package/dist/nodes/shared/core/tools/maxIterationsHandler.js.map +1 -0
  66. package/dist/nodes/shared/core/tools/skillValidation.d.ts +6 -0
  67. package/dist/nodes/shared/core/tools/skillValidation.js +25 -0
  68. package/dist/nodes/shared/core/tools/skillValidation.js.map +1 -0
  69. package/dist/nodes/shared/core/tools/skillValidator.d.ts +6 -0
  70. package/dist/nodes/shared/core/tools/skillValidator.js +25 -0
  71. package/dist/nodes/shared/core/tools/skillValidator.js.map +1 -0
  72. package/dist/nodes/shared/core/tools/toolCallProcessor.d.ts +26 -0
  73. package/dist/nodes/shared/core/tools/toolCallProcessor.js +127 -0
  74. package/dist/nodes/shared/core/tools/toolCallProcessor.js.map +1 -0
  75. package/dist/nodes/shared/core/tools/toolInvoker.d.ts +7 -0
  76. package/dist/nodes/shared/core/tools/toolInvoker.js +44 -0
  77. package/dist/nodes/shared/core/tools/toolInvoker.js.map +1 -0
  78. package/dist/nodes/shared/core/tools/usageAccumulator.d.ts +4 -0
  79. package/dist/nodes/shared/core/tools/usageAccumulator.js +81 -0
  80. package/dist/nodes/shared/core/tools/usageAccumulator.js.map +1 -0
  81. package/dist/package.json +1 -1
  82. package/dist/tsconfig.tsbuildinfo +1 -1
  83. package/package.json +1 -1
@@ -1 +1,18 @@
1
- export declare function isRetryableApiError(error: unknown): boolean;
1
+ export declare enum ErrorCategory {
2
+ RETRYABLE_API_ERROR = "retryable_api_error",
3
+ FALLBACK_ERROR = "fallback_error",
4
+ FATAL_ERROR = "fatal_error",
5
+ VALIDATION_ERROR = "validation_error",
6
+ PARSE_ERROR = "parse_error"
7
+ }
8
+ export interface ClassifiedError {
9
+ category: ErrorCategory;
10
+ message: string;
11
+ originalError: any;
12
+ statusCode?: number;
13
+ errorCode?: string;
14
+ }
15
+ export declare function classifyError(error: any): ClassifiedError;
16
+ export declare function isRetryableError(error: any): boolean;
17
+ export declare function isFallbackError(error: any): boolean;
18
+ export declare function getErrorDescription(error: any): string;
@@ -1,39 +1,102 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isRetryableApiError = isRetryableApiError;
4
- const errors_1 = require("../core/execution/errors");
5
- function isRetryableApiError(error) {
6
- var _a, _b, _c, _d;
7
- if ((0, errors_1.isNodeApiError)(error)) {
8
- const nodeApiError = error;
9
- const httpCode = nodeApiError.httpCode;
10
- if (httpCode === '429')
11
- return true;
12
- if (httpCode && httpCode.startsWith('5'))
13
- return true;
14
- const cause = nodeApiError.cause;
15
- const errorCode = ((_b = (_a = cause === null || cause === void 0 ? void 0 : cause.error) === null || _a === void 0 ? void 0 : _a.error) === null || _b === void 0 ? void 0 : _b.code) ||
16
- ((_c = cause === null || cause === void 0 ? void 0 : cause.error) === null || _c === void 0 ? void 0 : _c.code) ||
17
- (cause === null || cause === void 0 ? void 0 : cause.code) ||
18
- ((_d = cause === null || cause === void 0 ? void 0 : cause.error) === null || _d === void 0 ? void 0 : _d.type) ||
19
- (cause === null || cause === void 0 ? void 0 : cause.type);
20
- const retryableErrorCodes = [
21
- 'rate_limit_exceeded',
22
- 'insufficient_quota',
23
- 'timeout',
24
- 'server_error',
25
- 'service_unavailable',
26
- ];
27
- if (errorCode && retryableErrorCodes.includes(errorCode)) {
28
- return true;
3
+ exports.ErrorCategory = void 0;
4
+ exports.classifyError = classifyError;
5
+ exports.isRetryableError = isRetryableError;
6
+ exports.isFallbackError = isFallbackError;
7
+ exports.getErrorDescription = getErrorDescription;
8
+ const openai_1 = require("openai");
9
+ var ErrorCategory;
10
+ (function (ErrorCategory) {
11
+ ErrorCategory["RETRYABLE_API_ERROR"] = "retryable_api_error";
12
+ ErrorCategory["FALLBACK_ERROR"] = "fallback_error";
13
+ ErrorCategory["FATAL_ERROR"] = "fatal_error";
14
+ ErrorCategory["VALIDATION_ERROR"] = "validation_error";
15
+ ErrorCategory["PARSE_ERROR"] = "parse_error";
16
+ })(ErrorCategory || (exports.ErrorCategory = ErrorCategory = {}));
17
+ function classifyError(error) {
18
+ if (error instanceof openai_1.RateLimitError) {
19
+ return {
20
+ category: ErrorCategory.RETRYABLE_API_ERROR,
21
+ message: 'Rate limit exceeded',
22
+ originalError: error,
23
+ statusCode: 429,
24
+ errorCode: error.code || undefined,
25
+ };
26
+ }
27
+ if (error instanceof openai_1.OpenAIError) {
28
+ const statusCode = error.status || error.statusCode;
29
+ const errorCode = error.code || undefined;
30
+ if ([408, 500, 502, 503, 504].includes(statusCode)) {
31
+ return {
32
+ category: ErrorCategory.RETRYABLE_API_ERROR,
33
+ message: `Server error (${statusCode})`,
34
+ originalError: error,
35
+ statusCode,
36
+ errorCode,
37
+ };
38
+ }
39
+ if ([401, 403, 404].includes(statusCode)) {
40
+ return {
41
+ category: ErrorCategory.FALLBACK_ERROR,
42
+ message: `Client error (${statusCode})`,
43
+ originalError: error,
44
+ statusCode,
45
+ errorCode,
46
+ };
47
+ }
48
+ return {
49
+ category: ErrorCategory.FALLBACK_ERROR,
50
+ message: error.message || 'OpenAI API error',
51
+ originalError: error,
52
+ statusCode: statusCode || undefined,
53
+ errorCode,
54
+ };
55
+ }
56
+ const statusCode = error.statusCode || error.httpCode;
57
+ if (statusCode) {
58
+ if ([408, 429, 500, 502, 503, 504].includes(statusCode)) {
59
+ return {
60
+ category: ErrorCategory.RETRYABLE_API_ERROR,
61
+ message: `HTTP ${statusCode} error`,
62
+ originalError: error,
63
+ statusCode,
64
+ };
29
65
  }
30
- const errorMessage = nodeApiError.message.toLowerCase();
31
- if (errorMessage.includes('timeout') || errorMessage.includes('timed out')) {
32
- return true;
66
+ if ([401, 403, 404].includes(statusCode)) {
67
+ return {
68
+ category: ErrorCategory.FALLBACK_ERROR,
69
+ message: `HTTP ${statusCode} error`,
70
+ originalError: error,
71
+ statusCode,
72
+ };
33
73
  }
34
- return false;
35
74
  }
36
- const errorMessage = error instanceof Error ? error.message.toLowerCase() : String(error).toLowerCase();
37
- return errorMessage.includes('timeout') || errorMessage.includes('rate limit');
75
+ const errorCode = error.code;
76
+ if (['ECONNREFUSED', 'ETIMEDOUT', 'ENOTFOUND', 'EAI_AGAIN'].includes(errorCode)) {
77
+ return {
78
+ category: ErrorCategory.RETRYABLE_API_ERROR,
79
+ message: `Network error: ${errorCode}`,
80
+ originalError: error,
81
+ errorCode,
82
+ };
83
+ }
84
+ return {
85
+ category: ErrorCategory.FATAL_ERROR,
86
+ message: error.message || String(error),
87
+ originalError: error,
88
+ };
89
+ }
90
+ function isRetryableError(error) {
91
+ const classified = classifyError(error);
92
+ return classified.category === ErrorCategory.RETRYABLE_API_ERROR;
93
+ }
94
+ function isFallbackError(error) {
95
+ const classified = classifyError(error);
96
+ return classified.category === ErrorCategory.FALLBACK_ERROR;
97
+ }
98
+ function getErrorDescription(error) {
99
+ const classified = classifyError(error);
100
+ return classified.message;
38
101
  }
39
102
  //# sourceMappingURL=errorClassifier.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"errorClassifier.js","sourceRoot":"","sources":["../../../../nodes/shared/api/errorClassifier.ts"],"names":[],"mappings":";;AASA,kDA8CC;AAtDD,qDAA0D;AAQ1D,SAAgB,mBAAmB,CAAC,KAAc;;IAEjD,IAAI,IAAA,uBAAc,EAAC,KAAK,CAAC,EAAE,CAAC;QAC3B,MAAM,YAAY,GAAG,KAAqB,CAAC;QAC3C,MAAM,QAAQ,GAAG,YAAY,CAAC,QAAQ,CAAC;QAGvC,IAAI,QAAQ,KAAK,KAAK;YAAE,OAAO,IAAI,CAAC;QAGpC,IAAI,QAAQ,IAAI,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC;QAGtD,MAAM,KAAK,GAAG,YAAY,CAAC,KAAY,CAAC;QACxC,MAAM,SAAS,GACd,CAAA,MAAA,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,KAAK,0CAAE,KAAK,0CAAE,IAAI;aACzB,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,KAAK,0CAAE,IAAI,CAAA;aAClB,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,IAAI,CAAA;aACX,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,KAAK,0CAAE,IAAI,CAAA;aAClB,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,IAAI,CAAA,CAAC;QAGb,MAAM,mBAAmB,GAAG;YAC3B,qBAAqB;YACrB,oBAAoB;YACpB,SAAS;YACT,cAAc;YACd,qBAAqB;SACrB,CAAC;QAEF,IAAI,SAAS,IAAI,mBAAmB,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YAC1D,OAAO,IAAI,CAAC;QACb,CAAC;QAGD,MAAM,YAAY,GAAG,YAAY,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;QACxD,IAAI,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;YAC5E,OAAO,IAAI,CAAC;QACb,CAAC;QAED,OAAO,KAAK,CAAC;IACd,CAAC;IAGD,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;IACxG,OAAO,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;AAChF,CAAC"}
1
+ {"version":3,"file":"errorClassifier.js","sourceRoot":"","sources":["../../../../nodes/shared/api/errorClassifier.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { IExecuteFunctions, IDataObject } from 'n8n-workflow';
2
+ import type { ApiMode, ChatCompletion } from './types';
3
+ import type { PreserveReasoningMode } from '../core/messages/types';
4
+ export declare function convertBodyToResponsesApi(chatBody: IDataObject): IDataObject;
5
+ export declare function convertResponseToCompletion(responsesApiResponse: any): ChatCompletion;
6
+ export declare function sendModelRequest(executeFunctions: IExecuteFunctions, body: IDataObject, apiMode: ApiMode, preserveReasoning?: PreserveReasoningMode): Promise<ChatCompletion>;
@@ -0,0 +1,264 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.convertBodyToResponsesApi = convertBodyToResponsesApi;
4
+ exports.convertResponseToCompletion = convertResponseToCompletion;
5
+ exports.sendModelRequest = sendModelRequest;
6
+ const crypto_1 = require("crypto");
7
+ const openAiApiRequest_1 = require("./openAiApiRequest");
8
+ const types_1 = require("../core/messages/types");
9
+ const HANDLED_FIELDS = new Set([
10
+ 'model',
11
+ 'messages',
12
+ 'tools',
13
+ 'tool_choice',
14
+ 'response_format',
15
+ 'max_token_completions',
16
+ 'temperature',
17
+ 'top_p',
18
+ 'frequency_penalty',
19
+ 'presence_penalty',
20
+ 'n',
21
+ ]);
22
+ function generateId(prefix) {
23
+ return `${prefix}_${(0, crypto_1.randomUUID)().replace(/-/g, '').slice(0, 24)}`;
24
+ }
25
+ function convertMessagesToInput(messages) {
26
+ var _a, _b, _c;
27
+ const input = [];
28
+ for (const msg of messages) {
29
+ const role = msg.role;
30
+ if (role === 'system' || role === 'developer') {
31
+ input.push({
32
+ type: 'message',
33
+ role: 'developer',
34
+ content: Array.isArray(msg.content)
35
+ ? msg.content
36
+ : [{ type: 'input_text', text: String((_a = msg.content) !== null && _a !== void 0 ? _a : '') }],
37
+ });
38
+ }
39
+ else if (role === 'user') {
40
+ input.push({
41
+ type: 'message',
42
+ role: 'user',
43
+ content: Array.isArray(msg.content)
44
+ ? msg.content
45
+ : [{ type: 'input_text', text: String((_b = msg.content) !== null && _b !== void 0 ? _b : '') }],
46
+ });
47
+ }
48
+ else if (role === 'assistant') {
49
+ if (msg.reasoning_details && Array.isArray(msg.reasoning_details)) {
50
+ for (const item of msg.reasoning_details) {
51
+ if (item.type === 'reasoning') {
52
+ input.push(item);
53
+ }
54
+ }
55
+ }
56
+ if (msg.content) {
57
+ input.push({
58
+ type: 'message',
59
+ role: 'assistant',
60
+ id: msg.id || generateId('msg'),
61
+ status: msg.status || 'completed',
62
+ content: Array.isArray(msg.content)
63
+ ? msg.content
64
+ : [{ type: 'output_text', text: String(msg.content), annotations: [] }],
65
+ });
66
+ }
67
+ if (msg.tool_calls && Array.isArray(msg.tool_calls)) {
68
+ for (const tc of msg.tool_calls) {
69
+ const fn = tc.function;
70
+ input.push({
71
+ type: 'function_call',
72
+ id: generateId('fc'),
73
+ call_id: tc.id,
74
+ name: fn.name,
75
+ arguments: fn.arguments,
76
+ });
77
+ }
78
+ }
79
+ }
80
+ else if (role === 'tool') {
81
+ input.push({
82
+ type: 'function_call_output',
83
+ call_id: msg.tool_call_id,
84
+ output: String((_c = msg.content) !== null && _c !== void 0 ? _c : ''),
85
+ });
86
+ }
87
+ }
88
+ return input;
89
+ }
90
+ function convertTools(tools) {
91
+ return tools.map((tool) => {
92
+ if (tool.type === 'function' && tool.function) {
93
+ const fn = tool.function;
94
+ return {
95
+ type: 'function',
96
+ name: fn.name,
97
+ description: fn.description,
98
+ parameters: fn.parameters,
99
+ ...(fn.strict !== undefined ? { strict: fn.strict } : {}),
100
+ };
101
+ }
102
+ return tool;
103
+ });
104
+ }
105
+ function convertToolChoice(toolChoice) {
106
+ if (typeof toolChoice === 'string') {
107
+ return toolChoice;
108
+ }
109
+ if (typeof toolChoice === 'object' && toolChoice !== null) {
110
+ if (toolChoice.type === 'function' && toolChoice.function) {
111
+ return {
112
+ type: 'function',
113
+ name: toolChoice.function.name,
114
+ };
115
+ }
116
+ }
117
+ return toolChoice;
118
+ }
119
+ function convertResponseFormat(responseFormat) {
120
+ if (responseFormat.type === 'json_schema' && responseFormat.json_schema) {
121
+ const js = responseFormat.json_schema;
122
+ return {
123
+ format: {
124
+ type: 'json_schema',
125
+ name: js.name,
126
+ schema: js.schema,
127
+ ...(js.strict !== undefined ? { strict: js.strict } : {}),
128
+ ...(js.description ? { description: js.description } : {}),
129
+ },
130
+ };
131
+ }
132
+ if (responseFormat.type === 'json_object') {
133
+ return { format: { type: 'json_object' } };
134
+ }
135
+ return { format: responseFormat };
136
+ }
137
+ function convertBodyToResponsesApi(chatBody) {
138
+ const responsesBody = {};
139
+ responsesBody.model = chatBody.model;
140
+ if (chatBody.messages && Array.isArray(chatBody.messages)) {
141
+ responsesBody.input = convertMessagesToInput(chatBody.messages);
142
+ }
143
+ if (chatBody.tools && Array.isArray(chatBody.tools) && chatBody.tools.length > 0) {
144
+ responsesBody.tools = convertTools(chatBody.tools);
145
+ }
146
+ if (chatBody.tool_choice !== undefined) {
147
+ responsesBody.tool_choice = convertToolChoice(chatBody.tool_choice);
148
+ }
149
+ if (chatBody.response_format) {
150
+ responsesBody.text = convertResponseFormat(chatBody.response_format);
151
+ }
152
+ if (chatBody.max_token_completions !== undefined) {
153
+ responsesBody.max_output_tokens = chatBody.max_token_completions;
154
+ }
155
+ for (const field of ['temperature', 'top_p', 'frequency_penalty', 'presence_penalty', 'n']) {
156
+ if (chatBody[field] !== undefined) {
157
+ responsesBody[field] = chatBody[field];
158
+ }
159
+ }
160
+ for (const key of Object.keys(chatBody)) {
161
+ if (!HANDLED_FIELDS.has(key) && responsesBody[key] === undefined) {
162
+ responsesBody[key] = chatBody[key];
163
+ }
164
+ }
165
+ return responsesBody;
166
+ }
167
+ function convertResponseToCompletion(responsesApiResponse) {
168
+ const output = responsesApiResponse.output || [];
169
+ let textContent = '';
170
+ const toolCalls = [];
171
+ let reasoning = null;
172
+ const reasoningItems = [];
173
+ let assistantId;
174
+ let assistantStatus;
175
+ for (const item of output) {
176
+ if (item.type === 'message' && item.role === 'assistant') {
177
+ assistantId = item.id;
178
+ assistantStatus = item.status;
179
+ for (const part of item.content || []) {
180
+ if (part.type === 'output_text') {
181
+ textContent += part.text;
182
+ }
183
+ }
184
+ }
185
+ else if (item.type === 'function_call') {
186
+ toolCalls.push({
187
+ id: item.call_id,
188
+ type: 'function',
189
+ function: {
190
+ name: item.name,
191
+ arguments: item.arguments,
192
+ },
193
+ });
194
+ }
195
+ else if (item.type === 'reasoning') {
196
+ reasoningItems.push(item);
197
+ if (item.summary && Array.isArray(item.summary) && item.summary.length > 0) {
198
+ const texts = item.summary.map((s) => { var _a; return typeof s === 'string' ? s : ((_a = s.text) !== null && _a !== void 0 ? _a : String(s)); });
199
+ reasoning = texts.join('\n');
200
+ }
201
+ }
202
+ }
203
+ const message = {
204
+ role: 'assistant',
205
+ content: textContent || null,
206
+ };
207
+ if (toolCalls.length > 0) {
208
+ message.tool_calls = toolCalls;
209
+ }
210
+ if (reasoning !== null) {
211
+ message.reasoning = reasoning;
212
+ }
213
+ if (reasoningItems.length > 0) {
214
+ message.reasoning_details = reasoningItems;
215
+ }
216
+ if (assistantId) {
217
+ message.id = assistantId;
218
+ }
219
+ if (assistantStatus) {
220
+ message.status = assistantStatus;
221
+ }
222
+ const responsesUsage = responsesApiResponse.usage || {};
223
+ const usage = {
224
+ prompt_tokens: responsesUsage.input_tokens || 0,
225
+ completion_tokens: responsesUsage.output_tokens || 0,
226
+ total_tokens: responsesUsage.total_tokens ||
227
+ ((responsesUsage.input_tokens || 0) + (responsesUsage.output_tokens || 0)),
228
+ };
229
+ if (responsesUsage.output_tokens_details) {
230
+ usage.completion_tokens_details = {
231
+ reasoning_tokens: responsesUsage.output_tokens_details.reasoning_tokens || 0,
232
+ };
233
+ }
234
+ return {
235
+ id: responsesApiResponse.id || '',
236
+ object: 'chat.completion',
237
+ created: responsesApiResponse.created_at || Math.floor(Date.now() / 1000),
238
+ model: responsesApiResponse.model || '',
239
+ choices: [{
240
+ index: 0,
241
+ message,
242
+ ...(toolCalls.length > 0 ? { finish_reason: 'tool_calls' } : {}),
243
+ }],
244
+ usage,
245
+ system_fingerprint: '',
246
+ };
247
+ }
248
+ async function sendModelRequest(executeFunctions, body, apiMode, preserveReasoning = 'all') {
249
+ if (preserveReasoning !== 'all') {
250
+ body = {
251
+ ...body,
252
+ messages: (0, types_1.filterMessagesReasoning)(body.messages, preserveReasoning),
253
+ };
254
+ }
255
+ if (apiMode === 'responses') {
256
+ const responsesBody = convertBodyToResponsesApi(body);
257
+ const rawResponse = await openAiApiRequest_1.openAiApiRequest.call(executeFunctions, 'POST', '/responses', { body: responsesBody });
258
+ const completion = convertResponseToCompletion(rawResponse);
259
+ completion._rawResponse = rawResponse;
260
+ return completion;
261
+ }
262
+ return (await openAiApiRequest_1.openAiApiRequest.call(executeFunctions, 'POST', '/chat/completions', { body }));
263
+ }
264
+ //# sourceMappingURL=responsesApiConverter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"responsesApiConverter.js","sourceRoot":"","sources":["../../../../nodes/shared/api/responsesApiConverter.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import type { IDataObject } from 'n8n-workflow';
2
+ export type ApiMode = 'chatCompletions' | 'responses';
2
3
  export type ChatCompletion = {
3
4
  id: string;
4
5
  object: string;
@@ -9,7 +10,8 @@ export type ChatCompletion = {
9
10
  message: {
10
11
  role: string;
11
12
  content: string;
12
- reasoning?: string;
13
+ reasoning?: string | null;
14
+ reasoning_content?: string | null;
13
15
  reasoning_details?: any;
14
16
  tool_calls?: Array<{
15
17
  id: string;
@@ -48,6 +50,7 @@ export type ChatCompletion = {
48
50
  };
49
51
  system_fingerprint: string;
50
52
  error?: object;
53
+ _rawResponse?: any;
51
54
  };
52
55
  export type AccumulatedUsage = {
53
56
  prompt_tokens: number;
@@ -1,9 +1,10 @@
1
1
  import type { IExecuteFunctions, IDataObject } from 'n8n-workflow';
2
2
  import { VisualEditorProperties } from '../core/request/visualEditor';
3
3
  import { RawMessage } from '../core/messages/types';
4
+ import type { PreserveReasoningMode } from '../core/messages/types';
5
+ import type { ApiMode } from '../api/types';
4
6
  export type ExtractedParameters = {
5
7
  model: string;
6
- fallbackModel?: string;
7
8
  agentType: string;
8
9
  rawMessagesToSend: RawMessage[];
9
10
  responseFormat: string;
@@ -11,9 +12,9 @@ export type ExtractedParameters = {
11
12
  addToOutput: string[];
12
13
  outputJsonSchemaDefinition?: string;
13
14
  structuredOutputMode?: string;
14
- tenacityMaxRetries: number;
15
+ maxTries: number;
16
+ retryDelay: number;
15
17
  appendRetryErrorMessages: boolean;
16
- fallbackTenacityMaxRetries?: number;
17
18
  structuredOutputProperties?: VisualEditorProperties[];
18
19
  structuredOutputName?: string;
19
20
  structuredOutputDescription?: string;
@@ -23,10 +24,13 @@ export type ExtractedParameters = {
23
24
  options: IDataObject;
24
25
  maxToolsIterations: number;
25
26
  customParameters: string | IDataObject;
27
+ saveMessagesInChatMemory: boolean;
26
28
  saveToolCallsInChatMemory: boolean;
27
29
  loadToolCallsFromChatMemory: boolean;
28
30
  saveReasoningInChatMemory: boolean;
29
31
  loadReasoningFromChatMemory: boolean;
32
+ preserveReasoning: PreserveReasoningMode;
33
+ apiMode: ApiMode;
30
34
  handoffTools: string[];
31
35
  skillTools: string[];
32
36
  abortSignal: AbortSignal | undefined;
@@ -2,15 +2,20 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.extractParameters = extractParameters;
4
4
  function extractParameters(executeFunctions, index) {
5
- var _a;
5
+ var _a, _b, _c;
6
6
  const get = (path, defaultValue, options) => executeFunctions.getNodeParameter(path, index, defaultValue, options);
7
7
  const rawMessages = get('messagesToSend.values', []);
8
8
  const chatMemoryMessage = rawMessages.find((msg) => msg.role === 'chatMemoryRole');
9
- const chatMemoryOptions = (_a = chatMemoryMessage === null || chatMemoryMessage === void 0 ? void 0 : chatMemoryMessage.chatMemoryOptions) !== null && _a !== void 0 ? _a : ['saveToolCalls', 'loadToolCalls', 'saveReasoning', 'loadReasoning'];
10
- const saveToolCallsInChatMemory = chatMemoryOptions.includes('saveToolCalls');
11
- const loadToolCallsFromChatMemory = chatMemoryOptions.includes('loadToolCalls');
12
- const saveReasoningInChatMemory = chatMemoryOptions.includes('saveReasoning');
13
- const loadReasoningFromChatMemory = chatMemoryOptions.includes('loadReasoning');
9
+ const chatMemorySaveOptions = (_a = chatMemoryMessage === null || chatMemoryMessage === void 0 ? void 0 : chatMemoryMessage.chatMemorySaveOptions) !== null && _a !== void 0 ? _a : ['toolCalls', 'reasoning'];
10
+ const chatMemorySaveMessages = (_b = chatMemoryMessage === null || chatMemoryMessage === void 0 ? void 0 : chatMemoryMessage.chatMemorySaveMessages) !== null && _b !== void 0 ? _b : false;
11
+ const saveMessagesInChatMemory = chatMemorySaveOptions.length > 0 || chatMemorySaveMessages;
12
+ const saveToolCallsInChatMemory = chatMemorySaveOptions.includes('toolCalls');
13
+ const chatMemoryLoadOptions = (_c = chatMemoryMessage === null || chatMemoryMessage === void 0 ? void 0 : chatMemoryMessage.chatMemoryLoadOptions) !== null && _c !== void 0 ? _c : ['toolCalls', 'reasoning'];
14
+ const loadToolCallsFromChatMemory = chatMemoryLoadOptions.includes('toolCalls');
15
+ const apiMode = get('options.apiMode', 'chatCompletions');
16
+ const preserveReasoning = get('options.preserveReasoning', 'all');
17
+ const loadReasoningFromChatMemory = chatMemoryLoadOptions.includes('reasoning');
18
+ const saveReasoningInChatMemory = chatMemorySaveOptions.includes('reasoning');
14
19
  const responseFormat = get('responseFormat', '');
15
20
  const isStructuredOutput = responseFormat === 'structuredOutputVisual' || responseFormat === 'structuredOutputSchema';
16
21
  const extractFirstObjectOnly = get('extractFirstObjectOnly', true);
@@ -43,23 +48,24 @@ function extractParameters(executeFunctions, index) {
43
48
  responseFormat,
44
49
  extractFirstObjectOnly,
45
50
  addToOutput: get('addToOutput', []),
46
- tenacityMaxRetries: get('options.tenacityMaxRetries', 0),
51
+ maxTries: get('options.maxTries', 1),
52
+ retryDelay: get('options.retryDelay', 3),
47
53
  appendRetryErrorMessages: get('options.appendRetryErrorMessages', false),
48
54
  options: get('options', {}),
49
55
  maxToolsIterations: get('options.maxToolsIterations', 15),
50
56
  customParameters: get('options.customParameters', '{}'),
57
+ saveMessagesInChatMemory,
51
58
  saveToolCallsInChatMemory,
52
59
  loadToolCallsFromChatMemory,
53
60
  saveReasoningInChatMemory,
54
61
  loadReasoningFromChatMemory,
62
+ apiMode,
63
+ preserveReasoning,
55
64
  handoffTools,
56
65
  skillTools,
57
66
  abortSignal: executeFunctions.getExecutionCancelSignal(),
58
67
  };
59
68
  if (isStructuredOutput) {
60
- params.fallbackModel = get('options.fallbackModelId', '', { extractValue: true }) || undefined;
61
- const fallbackTenacityMaxRetriesRaw = get('options.fallbackTenacityMaxRetries', -1);
62
- params.fallbackTenacityMaxRetries = fallbackTenacityMaxRetriesRaw === -1 ? undefined : fallbackTenacityMaxRetriesRaw;
63
69
  if (responseFormat === 'structuredOutputSchema') {
64
70
  params.outputJsonSchemaDefinition = get('outputJsonSchemaDefinition', '');
65
71
  }
@@ -1 +1 @@
1
- {"version":3,"file":"parameters.js","sourceRoot":"","sources":["../../../../nodes/shared/config/parameters.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"parameters.js","sourceRoot":"","sources":["../../../../nodes/shared/config/parameters.ts"],"names":[],"mappings":"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"}