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.
- package/dist/nodes/shared/api/errorClassifier.d.ts +18 -1
- package/dist/nodes/shared/api/errorClassifier.js +95 -32
- package/dist/nodes/shared/api/errorClassifier.js.map +1 -1
- package/dist/nodes/shared/api/responsesApiConverter.d.ts +6 -0
- package/dist/nodes/shared/api/responsesApiConverter.js +264 -0
- package/dist/nodes/shared/api/responsesApiConverter.js.map +1 -0
- package/dist/nodes/shared/api/types.d.ts +4 -1
- package/dist/nodes/shared/config/parameters.d.ts +7 -3
- package/dist/nodes/shared/config/parameters.js +16 -10
- package/dist/nodes/shared/config/parameters.js.map +1 -1
- package/dist/nodes/shared/config/properties/messages.js +45 -16
- package/dist/nodes/shared/config/properties/messages.js.map +1 -1
- package/dist/nodes/shared/config/properties/options.js +45 -62
- package/dist/nodes/shared/config/properties/options.js.map +1 -1
- package/dist/nodes/shared/config/properties/output.js +1 -1
- package/dist/nodes/shared/config/properties/output.js.map +1 -1
- package/dist/nodes/shared/core/execution/errors.js +44 -0
- package/dist/nodes/shared/core/execution/errors.js.map +1 -1
- package/dist/nodes/shared/core/execution/executionSetup.d.ts +1 -0
- package/dist/nodes/shared/core/execution/executionSetup.js +3 -1
- package/dist/nodes/shared/core/execution/executionSetup.js.map +1 -1
- package/dist/nodes/shared/core/execution/executor.d.ts +1 -1
- package/dist/nodes/shared/core/execution/executor.js +9 -5
- package/dist/nodes/shared/core/execution/executor.js.map +1 -1
- package/dist/nodes/shared/core/execution/messageOperation.js +1 -1
- package/dist/nodes/shared/core/execution/messageOperation.js.map +1 -1
- package/dist/nodes/shared/core/execution/modelAttempt.d.ts +4 -0
- package/dist/nodes/shared/core/execution/modelAttempt.js +55 -10
- package/dist/nodes/shared/core/execution/modelAttempt.js.map +1 -1
- package/dist/nodes/shared/core/execution/modelConfig.d.ts +5 -1
- package/dist/nodes/shared/core/execution/modelConfig.js +55 -8
- package/dist/nodes/shared/core/execution/modelConfig.js.map +1 -1
- package/dist/nodes/shared/core/execution/outputData.js +13 -5
- package/dist/nodes/shared/core/execution/outputData.js.map +1 -1
- package/dist/nodes/shared/core/execution/retryHandler.d.ts +2 -2
- package/dist/nodes/shared/core/execution/retryHandler.js +7 -7
- package/dist/nodes/shared/core/execution/retryHandler.js.map +1 -1
- package/dist/nodes/shared/core/execution/router.js +1 -1
- package/dist/nodes/shared/core/execution/router.js.map +1 -1
- package/dist/nodes/shared/core/execution/usageTracking.js +4 -1
- package/dist/nodes/shared/core/execution/usageTracking.js.map +1 -1
- package/dist/nodes/shared/core/memory/io.js +18 -8
- package/dist/nodes/shared/core/memory/io.js.map +1 -1
- package/dist/nodes/shared/core/messages/chatHistory.js +1 -1
- package/dist/nodes/shared/core/messages/chatHistory.js.map +1 -1
- package/dist/nodes/shared/core/messages/converter.js +22 -26
- package/dist/nodes/shared/core/messages/converter.js.map +1 -1
- package/dist/nodes/shared/core/messages/types.d.ts +8 -2
- package/dist/nodes/shared/core/messages/types.js +20 -0
- package/dist/nodes/shared/core/messages/types.js.map +1 -1
- package/dist/nodes/shared/core/request/body.d.ts +1 -1
- package/dist/nodes/shared/core/request/body.js +12 -27
- package/dist/nodes/shared/core/request/body.js.map +1 -1
- package/dist/nodes/shared/core/request/sanitization.d.ts +4 -0
- package/dist/nodes/shared/core/request/sanitization.js +46 -0
- package/dist/nodes/shared/core/request/sanitization.js.map +1 -0
- package/dist/nodes/shared/core/tools/executor.d.ts +4 -2
- package/dist/nodes/shared/core/tools/executor.js +23 -248
- package/dist/nodes/shared/core/tools/executor.js.map +1 -1
- package/dist/nodes/shared/core/tools/handoff.d.ts +6 -0
- package/dist/nodes/shared/core/tools/handoff.js +25 -0
- package/dist/nodes/shared/core/tools/handoff.js.map +1 -0
- package/dist/nodes/shared/core/tools/maxIterationsHandler.d.ts +9 -0
- package/dist/nodes/shared/core/tools/maxIterationsHandler.js +55 -0
- package/dist/nodes/shared/core/tools/maxIterationsHandler.js.map +1 -0
- package/dist/nodes/shared/core/tools/skillValidation.d.ts +6 -0
- package/dist/nodes/shared/core/tools/skillValidation.js +25 -0
- package/dist/nodes/shared/core/tools/skillValidation.js.map +1 -0
- package/dist/nodes/shared/core/tools/skillValidator.d.ts +6 -0
- package/dist/nodes/shared/core/tools/skillValidator.js +25 -0
- package/dist/nodes/shared/core/tools/skillValidator.js.map +1 -0
- package/dist/nodes/shared/core/tools/toolCallProcessor.d.ts +26 -0
- package/dist/nodes/shared/core/tools/toolCallProcessor.js +127 -0
- package/dist/nodes/shared/core/tools/toolCallProcessor.js.map +1 -0
- package/dist/nodes/shared/core/tools/toolInvoker.d.ts +7 -0
- package/dist/nodes/shared/core/tools/toolInvoker.js +44 -0
- package/dist/nodes/shared/core/tools/toolInvoker.js.map +1 -0
- package/dist/nodes/shared/core/tools/usageAccumulator.d.ts +4 -0
- package/dist/nodes/shared/core/tools/usageAccumulator.js +81 -0
- package/dist/nodes/shared/core/tools/usageAccumulator.js.map +1 -0
- package/dist/package.json +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
|
@@ -1 +1,18 @@
|
|
|
1
|
-
export declare
|
|
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.
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
'
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
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
|
-
|
|
31
|
-
|
|
32
|
-
|
|
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
|
|
37
|
-
|
|
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":"
|
|
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
|
-
|
|
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
|
|
10
|
-
const
|
|
11
|
-
const
|
|
12
|
-
const
|
|
13
|
-
const
|
|
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
|
-
|
|
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":";;
|
|
1
|
+
{"version":3,"file":"parameters.js","sourceRoot":"","sources":["../../../../nodes/shared/config/parameters.ts"],"names":[],"mappings":"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"}
|