n8n-nodes-simple 2.4.13 → 2.5.0

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 (43) hide show
  1. package/dist/nodes/shared/api/errors.d.ts +45 -0
  2. package/dist/nodes/shared/api/errors.js +134 -0
  3. package/dist/nodes/shared/api/errors.js.map +1 -0
  4. package/dist/nodes/shared/config/parameters.d.ts +1 -1
  5. package/dist/nodes/shared/config/parameters.js +1 -1
  6. package/dist/nodes/shared/config/parameters.js.map +1 -1
  7. package/dist/nodes/shared/config/properties/options.js +17 -46
  8. package/dist/nodes/shared/config/properties/options.js.map +1 -1
  9. package/dist/nodes/shared/config/properties/output.js +22 -34
  10. package/dist/nodes/shared/config/properties/output.js.map +1 -1
  11. package/dist/nodes/shared/core/execution/errors.d.ts +14 -0
  12. package/dist/nodes/shared/core/execution/errors.js +65 -0
  13. package/dist/nodes/shared/core/execution/errors.js.map +1 -0
  14. package/dist/nodes/shared/core/execution/executor.d.ts +1 -2
  15. package/dist/nodes/shared/core/execution/executor.js +73 -75
  16. package/dist/nodes/shared/core/execution/executor.js.map +1 -1
  17. package/dist/nodes/shared/core/execution/messageOperation.js +1 -1
  18. package/dist/nodes/shared/core/execution/messageOperation.js.map +1 -1
  19. package/dist/nodes/shared/core/execution/outputData.d.ts +1 -1
  20. package/dist/nodes/shared/core/execution/outputData.js +16 -31
  21. package/dist/nodes/shared/core/execution/outputData.js.map +1 -1
  22. package/dist/nodes/shared/core/execution/retryHandler.d.ts +9 -0
  23. package/dist/nodes/shared/core/execution/retryHandler.js +89 -0
  24. package/dist/nodes/shared/core/execution/retryHandler.js.map +1 -0
  25. package/dist/nodes/shared/core/execution/router.js +4 -24
  26. package/dist/nodes/shared/core/execution/router.js.map +1 -1
  27. package/dist/nodes/shared/core/request/body.d.ts +1 -1
  28. package/dist/nodes/shared/core/request/body.js +1 -7
  29. package/dist/nodes/shared/core/request/body.js.map +1 -1
  30. package/dist/nodes/shared/core/request/validation.d.ts +11 -0
  31. package/dist/nodes/shared/core/request/validation.js +47 -0
  32. package/dist/nodes/shared/core/request/validation.js.map +1 -0
  33. package/dist/nodes/shared/core/request/visualEditor.js +17 -3
  34. package/dist/nodes/shared/core/request/visualEditor.js.map +1 -1
  35. package/dist/nodes/shared/core/tools/executor.d.ts +2 -1
  36. package/dist/nodes/shared/core/tools/executor.js +7 -4
  37. package/dist/nodes/shared/core/tools/executor.js.map +1 -1
  38. package/dist/nodes/shared/core/tools/setup.d.ts +1 -1
  39. package/dist/nodes/shared/core/tools/setup.js +1 -1
  40. package/dist/nodes/shared/core/tools/setup.js.map +1 -1
  41. package/dist/package.json +1 -1
  42. package/dist/tsconfig.tsbuildinfo +1 -1
  43. package/package.json +1 -1
@@ -1,102 +1,100 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.runModel = runModel;
4
- exports.runModelWithFallback = runModelWithFallback;
4
+ const n8n_workflow_1 = require("n8n-workflow");
5
5
  const structuredOutput_1 = require("../request/structuredOutput");
6
6
  const setup_1 = require("../tools/setup");
7
7
  const body_1 = require("../request/body");
8
8
  const executor_1 = require("../tools/executor");
9
9
  const outputData_1 = require("./outputData");
10
10
  const io_1 = require("../memory/io");
11
- async function runModel(executeFunctions, params, messages, index, modelToUse, memory, primaryError) {
12
- var _a, _b, _c, _d, _e;
11
+ const validation_1 = require("../request/validation");
12
+ const errors_1 = require("./errors");
13
+ const retryHandler_1 = require("./retryHandler");
14
+ async function runModel(executeFunctions, params, messages, index, modelToUse, memory) {
15
+ var _a, _b, _c, _d;
13
16
  let responseFormat = (0, structuredOutput_1.prepareResponseFormatField)(params.responseFormat, params.outputJsonSchemaDefinition, params.structuredOutputName, params.structuredOutputDescription, params.structuredOutputProperties, params.structuredOutputIsArray, params.structuredOutputArrayName, params.structuredOutputArrayDescription);
14
17
  const { tools, invokableTools, tool_choice, structuredOutputTool } = await (0, setup_1.prepareTools)(executeFunctions, params.structuredOutputToolsMode, params.maxToolsIterations, responseFormat);
15
18
  if (params.structuredOutputToolsMode) {
16
19
  responseFormat = undefined;
17
20
  }
18
21
  ;
19
- const body = (0, body_1.prepareRequestBody)(modelToUse, messages, tools, tool_choice, responseFormat, params.options, params.customParameters);
20
- const { response, structuredOutputToolResponse } = await (0, executor_1.processToolCalls)(executeFunctions, body, messages, invokableTools, params.maxToolsIterations, structuredOutputTool, params.abortSignal);
21
- let output;
22
- try {
23
- output = JSON.parse(structuredOutputToolResponse)
24
- || (params.responseFormat === "plainText"
25
- ? (_a = response === null || response === void 0 ? void 0 : response.choices[0]) === null || _a === void 0 ? void 0 : _a.message.content
26
- : JSON.parse((_b = response === null || response === void 0 ? void 0 : response.choices[0]) === null || _b === void 0 ? void 0 : _b.message.content));
27
- }
28
- catch (error) {
29
- const errorMessage = error instanceof Error ? error.message : String(error);
30
- const showValue = (val) => {
31
- if (val === null)
32
- return 'null';
33
- if (val === undefined)
34
- return 'undefined';
35
- if (val === '')
36
- return '<empty string>';
37
- return String(val);
38
- };
39
- let detailedError = `JSON parse error: ${errorMessage}.`;
40
- detailedError += ` | Assistant message content: ${showValue((_e = (_d = (_c = response === null || response === void 0 ? void 0 : response.choices) === null || _c === void 0 ? void 0 : _c[0]) === null || _d === void 0 ? void 0 : _d.message) === null || _e === void 0 ? void 0 : _e.content)}`;
41
- detailedError += ` | Structured output tool response: ${showValue(structuredOutputToolResponse)}`;
42
- detailedError += ` | Full response: ${JSON.stringify(response, null, 2)}`;
43
- throw new Error(detailedError);
44
- }
45
- const outputData = await (0, outputData_1.prepareOutputData)(response, output, messages, params.addToOutput, executeFunctions, index, body, primaryError);
46
- if (memory) {
47
- await (0, io_1.saveToMemory)(messages, output, params.saveToolCallsInChatMemory, memory);
48
- }
49
- return outputData;
50
- }
51
- function extractErrorInfo(error) {
52
- const message = error instanceof Error ? error.message : String(error);
53
- const description = error.description;
54
- const requestBody = error.requestBody;
55
- const httpCode = error.httpCode;
56
- return { message, description, requestBody, httpCode };
57
- }
58
- async function runModelWithFallback(executeFunctions, params, messages, index, memory) {
59
- var _a, _b;
60
- try {
61
- const item = await runModel(executeFunctions, params, messages, index, params.model, memory);
62
- if (!item || item.length === 0) {
63
- throw new Error(`Model returned no data: ${JSON.stringify(item)}`);
22
+ const shouldValidate = params.tenacityMaxRetries > 0 &&
23
+ (params.responseFormat === 'structuredOutputSchema' || params.responseFormat === 'structuredOutputVisual');
24
+ let validationSchema;
25
+ if (shouldValidate) {
26
+ if (params.structuredOutputToolsMode && structuredOutputTool) {
27
+ validationSchema = (_a = structuredOutputTool.function) === null || _a === void 0 ? void 0 : _a.parameters;
64
28
  }
65
- if (!((_a = item[0].json) === null || _a === void 0 ? void 0 : _a.output)) {
66
- throw new Error(`Model returned invalid output: ${JSON.stringify((_b = item[0].json) === null || _b === void 0 ? void 0 : _b.output)}`);
29
+ else if (responseFormat === null || responseFormat === void 0 ? void 0 : responseFormat.json_schema) {
30
+ validationSchema = (_b = responseFormat.json_schema) === null || _b === void 0 ? void 0 : _b.schema;
67
31
  }
68
- return item;
69
32
  }
70
- catch (error) {
71
- if (params.fallbackModel) {
72
- const primaryErrorInfo = extractErrorInfo(error);
73
- let primaryErrorMessage = primaryErrorInfo.message;
74
- if (primaryErrorInfo.description) {
75
- primaryErrorMessage += ` (${primaryErrorInfo.description})`;
33
+ let retryState = {
34
+ retriesRemaining: params.tenacityMaxRetries,
35
+ attemptNumber: 1,
36
+ };
37
+ let messagesBeforeRetries = messages.length;
38
+ let currentIteration = 1;
39
+ while (true) {
40
+ const body = (0, body_1.prepareRequestBody)(modelToUse, messages, tools, tool_choice, responseFormat, params.options, params.customParameters);
41
+ const { response, structuredOutputToolResponse, finalIteration } = await (0, executor_1.processToolCalls)(executeFunctions, body, messages, invokableTools, params.maxToolsIterations, structuredOutputTool, params.abortSignal, currentIteration);
42
+ currentIteration = finalIteration;
43
+ body.messages = messages;
44
+ if (retryState.attemptNumber === 1) {
45
+ messagesBeforeRetries = messages.length;
46
+ }
47
+ let output;
48
+ let parseError = null;
49
+ try {
50
+ output = JSON.parse(structuredOutputToolResponse)
51
+ || (params.responseFormat === "plainText"
52
+ ? (_c = response === null || response === void 0 ? void 0 : response.choices[0]) === null || _c === void 0 ? void 0 : _c.message.content
53
+ : JSON.parse((_d = response === null || response === void 0 ? void 0 : response.choices[0]) === null || _d === void 0 ? void 0 : _d.message.content));
54
+ }
55
+ catch (error) {
56
+ const simpleErrorMessage = error instanceof Error ? error.message : String(error);
57
+ if (shouldValidate && retryState.retriesRemaining > 0) {
58
+ parseError = simpleErrorMessage;
76
59
  }
77
- try {
78
- console.error('Running fallback model');
79
- return await runModel(executeFunctions, params, messages, index, params.fallbackModel, memory, primaryErrorMessage);
60
+ else {
61
+ const errorData = (0, errors_1.buildDetailedParseError)(simpleErrorMessage, response, structuredOutputToolResponse, body);
62
+ throw new n8n_workflow_1.NodeOperationError(executeFunctions.getNode(), errorData.message, {
63
+ description: errorData.description,
64
+ itemIndex: index,
65
+ });
80
66
  }
81
- catch (fallbackError) {
82
- console.error(`Fallback model ${params.fallbackModel} also failed:`, fallbackError);
83
- const fallbackErrorInfo = extractErrorInfo(fallbackError);
84
- let primaryFullError = primaryErrorInfo.message;
85
- if (primaryErrorInfo.description) {
86
- primaryFullError += ` (${primaryErrorInfo.description})`;
87
- }
88
- let fallbackFullError = fallbackErrorInfo.message;
89
- if (fallbackErrorInfo.description) {
90
- fallbackFullError += ` (${fallbackErrorInfo.description})`;
67
+ }
68
+ if (parseError) {
69
+ const shouldRetry = await (0, retryHandler_1.handleParseError)(parseError, response, messages, retryState, params.structuredOutputToolsMode, structuredOutputTool, params.structuredOutputName, tools);
70
+ if (shouldRetry) {
71
+ retryState = (0, retryHandler_1.updateRetryState)(retryState);
72
+ continue;
73
+ }
74
+ }
75
+ if (shouldValidate) {
76
+ const validationResult = (0, validation_1.validateStructuredOutput)(validationSchema, output);
77
+ if (!validationResult.isValid) {
78
+ const validationError = validationResult.error || 'Unknown validation error';
79
+ const shouldRetry = await (0, retryHandler_1.handleValidationError)(validationError, output, response, messages, retryState, params.structuredOutputToolsMode, structuredOutputTool, params.structuredOutputName);
80
+ if (shouldRetry) {
81
+ retryState = (0, retryHandler_1.updateRetryState)(retryState);
82
+ continue;
91
83
  }
92
- const combinedError = new Error(`● [Primary] ${primaryErrorInfo.httpCode} ${primaryFullError} ● [Fallback] ${fallbackErrorInfo.httpCode} ${fallbackFullError}`);
93
- if (primaryErrorInfo.requestBody || fallbackErrorInfo.requestBody) {
94
- combinedError.description = `Primary Request Body: ${primaryErrorInfo.requestBody}`;
84
+ else {
85
+ const errorData = (0, errors_1.buildValidationError)(params.tenacityMaxRetries, validationError, output, body, response);
86
+ throw new n8n_workflow_1.NodeOperationError(executeFunctions.getNode(), errorData.message, {
87
+ description: errorData.description,
88
+ itemIndex: index,
89
+ });
95
90
  }
96
- throw combinedError;
97
91
  }
98
92
  }
99
- throw error;
93
+ const outputData = await (0, outputData_1.prepareOutputData)(response, output, messages, messagesBeforeRetries, params.addToOutput, executeFunctions, index, body);
94
+ if (memory) {
95
+ await (0, io_1.saveToMemory)(messages, output, params.saveToolCallsInChatMemory, memory);
96
+ }
97
+ return outputData;
100
98
  }
101
99
  }
102
100
  //# sourceMappingURL=executor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"executor.js","sourceRoot":"","sources":["../../../../../nodes/shared/core/execution/executor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"executor.js","sourceRoot":"","sources":["../../../../../nodes/shared/core/execution/executor.ts"],"names":[],"mappings":"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"}
@@ -9,6 +9,6 @@ async function execute(i) {
9
9
  const params = (0, parameters_1.extractParameters)(this, i);
10
10
  const memory = await (0, io_1.getOptionalMemory)(this);
11
11
  const messages = await (0, chatHistory_1.unpackChatHistoryAndMemory)(params.rawMessagesToSend, params.loadToolCallsFromChatMemory, memory);
12
- return await (0, executor_1.runModelWithFallback)(this, params, messages, i, memory);
12
+ return await (0, executor_1.runModel)(this, params, messages, i, params.model, memory);
13
13
  }
14
14
  //# sourceMappingURL=messageOperation.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"messageOperation.js","sourceRoot":"","sources":["../../../../../nodes/shared/core/execution/messageOperation.ts"],"names":[],"mappings":";;AAUA,0BAyBC;AAjCD,wDAA4D;AAC5D,qCAAiD;AACjD,yDAAqE;AACrE,yCAAkD;AAK3C,KAAK,UAAU,OAAO,CAE5B,CAAS;IAGT,MAAM,MAAM,GAAG,IAAA,8BAAiB,EAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAG1C,MAAM,MAAM,GAAG,MAAM,IAAA,sBAAiB,EAAC,IAAI,CAAC,CAAC;IAG7C,MAAM,QAAQ,GAAG,MAAM,IAAA,wCAA0B,EAChD,MAAM,CAAC,iBAAiB,EACxB,MAAM,CAAC,2BAA2B,EAClC,MAAM,CACN,CAAC;IAGF,OAAO,MAAM,IAAA,+BAAoB,EAChC,IAAI,EACJ,MAAM,EACN,QAAQ,EACR,CAAC,EACD,MAAM,CACN,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"messageOperation.js","sourceRoot":"","sources":["../../../../../nodes/shared/core/execution/messageOperation.ts"],"names":[],"mappings":";;AAUA,0BA0BC;AAlCD,wDAA4D;AAC5D,qCAAiD;AACjD,yDAAqE;AACrE,yCAAsC;AAK/B,KAAK,UAAU,OAAO,CAE5B,CAAS;IAGT,MAAM,MAAM,GAAG,IAAA,8BAAiB,EAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAG1C,MAAM,MAAM,GAAG,MAAM,IAAA,sBAAiB,EAAC,IAAI,CAAC,CAAC;IAG7C,MAAM,QAAQ,GAAG,MAAM,IAAA,wCAA0B,EAChD,MAAM,CAAC,iBAAiB,EACxB,MAAM,CAAC,2BAA2B,EAClC,MAAM,CACN,CAAC;IAGF,OAAO,MAAM,IAAA,mBAAQ,EACpB,IAAI,EACJ,MAAM,EACN,QAAQ,EACR,CAAC,EACD,MAAM,CAAC,KAAK,EACZ,MAAM,CACN,CAAC;AACH,CAAC"}
@@ -1,4 +1,4 @@
1
1
  import type { IExecuteFunctions, INodeExecutionData, IDataObject } from 'n8n-workflow';
2
2
  import type { ChatCompletion } from '../../api/types';
3
- export declare function prepareOutputData(response: ChatCompletion, output: any, messages: IDataObject[], addToOutput: string[], executeFunctions: IExecuteFunctions, index: number, body: IDataObject, primaryError?: string): Promise<INodeExecutionData[]>;
3
+ export declare function prepareOutputData(response: ChatCompletion, output: any, messages: IDataObject[], messagesBeforeRetries: number, addToOutput: string[], executeFunctions: IExecuteFunctions, index: number, body: IDataObject): Promise<INodeExecutionData[]>;
4
4
  export declare function reorderOutputFields(outputData: INodeExecutionData[]): void;
@@ -2,56 +2,42 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.prepareOutputData = prepareOutputData;
4
4
  exports.reorderOutputFields = reorderOutputFields;
5
- const messageExtractor_1 = require("../tools/messageExtractor");
6
- async function prepareOutputData(response, output, messages, addToOutput, executeFunctions, index, body, primaryError) {
5
+ async function prepareOutputData(response, output, messages, messagesBeforeRetries, addToOutput, executeFunctions, index, body) {
7
6
  const outputData = [];
8
7
  outputData.push({ json: { output: output }, pairedItem: { item: index } });
9
- if (primaryError) {
10
- outputData.forEach((item) => {
11
- item.json.error = primaryError;
12
- });
13
- }
14
8
  if (addToOutput.includes('fullResponse')) {
15
9
  outputData.forEach((item) => {
16
10
  item.json.response = response;
17
11
  });
18
12
  }
19
- const newMessages = (i => i === -1 ? [] : messages.slice(i + 1))(messages.map(o => o.role).lastIndexOf("user"));
20
- if (addToOutput.includes('toolCalls')) {
21
- outputData.forEach((item) => {
22
- item.json.tool_calls = (0, messageExtractor_1.extractToolMessages)(newMessages);
23
- });
24
- }
25
13
  if (addToOutput.includes('chatHistory')) {
26
- const includeToolCallsInChatHistory = executeFunctions.getNodeParameter('includeToolCallsInChatHistory', index, true);
27
- const includeSystemMessagesInChatHistory = executeFunctions.getNodeParameter('includeSystemMessagesInChatHistory', index, true);
28
- const includeReasoningInChatHistory = executeFunctions.getNodeParameter('includeReasoningInChatHistory', index, true);
29
- let chatHistoryMessages = structuredClone(messages);
30
- if (!includeToolCallsInChatHistory) {
14
+ const includeInChatHistory = executeFunctions.getNodeParameter('includeInChatHistory', index, []);
15
+ const includeToolCalls = includeInChatHistory.includes('toolCalls');
16
+ const includeSystemMessages = includeInChatHistory.includes('systemMessages');
17
+ const includeReasoning = includeInChatHistory.includes('reasoning');
18
+ let chatHistoryMessages = structuredClone(messages.slice(0, messagesBeforeRetries));
19
+ if (!includeToolCalls) {
31
20
  chatHistoryMessages = chatHistoryMessages
32
21
  .filter((msg) => msg.content !== null && msg.content !== '' && msg.role !== 'tool')
33
22
  .map(({ role, content }) => ({ role, content }));
34
23
  }
35
- if (!includeSystemMessagesInChatHistory) {
24
+ if (!includeSystemMessages) {
36
25
  chatHistoryMessages = chatHistoryMessages.filter((msg) => msg.role !== 'system');
37
26
  }
38
27
  const finalMessage = response === null || response === void 0 ? void 0 : response.choices[0].message;
39
28
  if (finalMessage) {
40
- let rootMessage = includeReasoningInChatHistory
41
- ? {
42
- ...finalMessage,
43
- content: typeof output === 'string' ? output : JSON.stringify(output)
44
- }
45
- : {
46
- role: finalMessage.role,
47
- content: typeof output === 'string' ? output : JSON.stringify(output)
48
- };
29
+ let rootMessage = {
30
+ role: finalMessage.role,
31
+ content: typeof output === 'string' ? output : JSON.stringify(output),
32
+ reasoning: finalMessage.reasoning,
33
+ reasoning_details: finalMessage.reasoning_details,
34
+ };
49
35
  chatHistoryMessages.push(rootMessage);
50
36
  }
51
37
  for (const msg of chatHistoryMessages) {
52
- if (!includeReasoningInChatHistory && msg.role === 'assistant') {
53
- delete msg.reasoning_details;
38
+ if (!includeReasoning && msg.role === 'assistant') {
54
39
  delete msg.reasoning;
40
+ delete msg.reasoning_details;
55
41
  }
56
42
  }
57
43
  outputData.forEach((item) => {
@@ -72,7 +58,6 @@ function reorderOutputFields(outputData) {
72
58
  output: item.json.output,
73
59
  error: item.json.error,
74
60
  request: item.json.request,
75
- tool_calls: item.json.tool_calls,
76
61
  response: item.json.response,
77
62
  chat_history: item.json.chat_history,
78
63
  };
@@ -1 +1 @@
1
- {"version":3,"file":"outputData.js","sourceRoot":"","sources":["../../../../../nodes/shared/core/execution/outputData.ts"],"names":[],"mappings":";;AAYA,8CA+GC;AAMD,kDAgBC;AA3ID,gEAAgE;AAMzD,KAAK,UAAU,iBAAiB,CACtC,QAAwB,EACxB,MAAW,EACX,QAAuB,EACvB,WAAqB,EACrB,gBAAmC,EACnC,KAAa,EACb,IAAiB,EACjB,YAAqB;IAErB,MAAM,UAAU,GAAyB,EAAE,CAAC;IAG5C,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;IAG3E,IAAI,YAAY,EAAE,CAAC;QAClB,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YAC3B,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,YAAY,CAAC;QAChC,CAAC,CAAC,CAAC;IACJ,CAAC;IAGD,IAAI,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;QAC1C,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YAC3B,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAC/B,CAAC,CAAC,CAAC;IACJ,CAAC;IAGD,MAAM,WAAW,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;IAGhH,IAAI,WAAW,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QACvC,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YAC3B,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,IAAA,sCAAmB,EAAC,WAAwB,CAAC,CAAC;QACtE,CAAC,CAAC,CAAC;IACJ,CAAC;IAGD,IAAI,WAAW,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;QACzC,MAAM,6BAA6B,GAAG,gBAAgB,CAAC,gBAAgB,CACtE,+BAA+B,EAC/B,KAAK,EACL,IAAI,CACO,CAAC;QACb,MAAM,kCAAkC,GAAG,gBAAgB,CAAC,gBAAgB,CAC3E,oCAAoC,EACpC,KAAK,EACL,IAAI,CACO,CAAC;QACb,MAAM,6BAA6B,GAAG,gBAAgB,CAAC,gBAAgB,CACtE,+BAA+B,EAC/B,KAAK,EACL,IAAI,CACO,CAAC;QAEb,IAAI,mBAAmB,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;QAEpD,IAAI,CAAC,6BAA6B,EAAE,CAAC;YAEpC,mBAAmB,GAAG,mBAAmB;iBACvC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,KAAK,IAAI,IAAI,GAAG,CAAC,OAAO,KAAK,EAAE,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,CAAC;iBAClF,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;QACnD,CAAC;QAED,IAAI,CAAC,kCAAkC,EAAE,CAAC;YAEzC,mBAAmB,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;QAClF,CAAC;QAGD,MAAM,YAAY,GAAG,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC;QACjD,IAAI,YAAY,EAAE,CAAC;YAClB,IAAI,WAAW,GAAQ,6BAA6B;gBACnD,CAAC,CAAC;oBACD,GAAG,YAAY;oBACf,OAAO,EAAE,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;iBACrE;gBACD,CAAC,CAAC;oBACD,IAAI,EAAE,YAAY,CAAC,IAAI;oBACvB,OAAO,EAAE,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;iBACrE,CAAC;YACH,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACvC,CAAC;QAGF,KAAK,MAAM,GAAG,IAAI,mBAAmB,EAAE,CAAC;YACvC,IAAI,CAAC,6BAA6B,IAAI,GAAG,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;gBAChE,OAAO,GAAG,CAAC,iBAAiB,CAAC;gBAC7B,OAAO,GAAG,CAAC,SAAS,CAAC;YACtB,CAAC;QACF,CAAC;QAGD,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YAC3B,IAAI,CAAC,IAAI,CAAC,YAAY,GAAG,mBAAmB,CAAC;QAC9C,CAAC,CAAC,CAAC;IACJ,CAAC;IAGD,IAAI,WAAW,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QACrC,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YAC3B,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QAC1B,CAAC,CAAC,CAAC;IACJ,CAAC;IAGD,mBAAmB,CAAC,UAAU,CAAC,CAAC;IAEhC,OAAO,UAAU,CAAC;AACnB,CAAC;AAMD,SAAgB,mBAAmB,CAAC,UAAgC;IACnE,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QAC3B,MAAM,SAAS,GAAG;YACjB,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM;YACxB,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK;YACtB,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO;YAC1B,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU;YAChC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ;YAC5B,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY;SACpC,CAAC;QAGF,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,WAAW,CAC7B,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,KAAK,SAAS,CAAC,CACrE,CAAC;IACH,CAAC,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"outputData.js","sourceRoot":"","sources":["../../../../../nodes/shared/core/execution/outputData.ts"],"names":[],"mappings":";;AAYA,8CAiGC;AAMD,kDAgBC;AAvHM,KAAK,UAAU,iBAAiB,CACtC,QAAwB,EACxB,MAAW,EACX,QAAuB,EACvB,qBAA6B,EAC7B,WAAqB,EACrB,gBAAmC,EACnC,KAAa,EACb,IAAiB;IAEjB,MAAM,UAAU,GAAyB,EAAE,CAAC;IAG5C,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;IAG3E,IAAI,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;QAC1C,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YAC3B,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAC/B,CAAC,CAAC,CAAC;IACJ,CAAC;IAcD,IAAI,WAAW,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;QACzC,MAAM,oBAAoB,GAAG,gBAAgB,CAAC,gBAAgB,CAC7D,sBAAsB,EACtB,KAAK,EACL,EAAE,CACU,CAAC;QAEd,MAAM,gBAAgB,GAAG,oBAAoB,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QACpE,MAAM,qBAAqB,GAAG,oBAAoB,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;QAC9E,MAAM,gBAAgB,GAAG,oBAAoB,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QAGpE,IAAI,mBAAmB,GAAG,eAAe,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,qBAAqB,CAAC,CAAC,CAAC;QAEpF,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAEvB,mBAAmB,GAAG,mBAAmB;iBACvC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,KAAK,IAAI,IAAI,GAAG,CAAC,OAAO,KAAK,EAAE,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,CAAC;iBAClF,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;QACnD,CAAC;QAED,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAE5B,mBAAmB,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;QAClF,CAAC;QAGD,MAAM,YAAY,GAAG,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC;QACjD,IAAI,YAAY,EAAE,CAAC;YAClB,IAAI,WAAW,GAAG;gBAChB,IAAI,EAAE,YAAY,CAAC,IAAI;gBACvB,OAAO,EAAE,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;gBACrE,SAAS,EAAE,YAAY,CAAC,SAAS;gBACjC,iBAAiB,EAAE,YAAY,CAAC,iBAAiB;aACjD,CAAC;YACH,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACvC,CAAC;QAGF,KAAK,MAAM,GAAG,IAAI,mBAAmB,EAAE,CAAC;YACvC,IAAI,CAAC,gBAAgB,IAAI,GAAG,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;gBACnD,OAAO,GAAG,CAAC,SAAS,CAAC;gBACrB,OAAO,GAAG,CAAC,iBAAiB,CAAC;YAC9B,CAAC;QACF,CAAC;QAGD,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YAC3B,IAAI,CAAC,IAAI,CAAC,YAAY,GAAG,mBAAmB,CAAC;QAC9C,CAAC,CAAC,CAAC;IACJ,CAAC;IAGD,IAAI,WAAW,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QACrC,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YAC3B,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QAC1B,CAAC,CAAC,CAAC;IACJ,CAAC;IAGD,mBAAmB,CAAC,UAAU,CAAC,CAAC;IAEhC,OAAO,UAAU,CAAC;AACnB,CAAC;AAMD,SAAgB,mBAAmB,CAAC,UAAgC;IACnE,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QAC3B,MAAM,SAAS,GAAG;YACjB,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM;YACxB,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK;YACtB,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO;YAE1B,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ;YAC5B,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY;SACpC,CAAC;QAGF,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,WAAW,CAC7B,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,KAAK,SAAS,CAAC,CACrE,CAAC;IACH,CAAC,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { IDataObject } from 'n8n-workflow';
2
+ export interface RetryState {
3
+ retriesRemaining: number;
4
+ attemptNumber: number;
5
+ }
6
+ export declare function waitBeforeRetry(delayMs?: number): Promise<void>;
7
+ export declare function updateRetryState(state: RetryState): RetryState;
8
+ export declare function handleParseError(parseError: string, response: any, messages: IDataObject[], retryState: RetryState, structuredOutputToolsMode: boolean, structuredOutputTool: IDataObject | null | undefined, structuredOutputName: string | undefined, tools: any[]): Promise<boolean>;
9
+ export declare function handleValidationError(validationError: string, output: any, response: any, messages: IDataObject[], retryState: RetryState, structuredOutputToolsMode: boolean, structuredOutputTool: IDataObject | null | undefined, structuredOutputName?: string): Promise<boolean>;
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.waitBeforeRetry = waitBeforeRetry;
4
+ exports.updateRetryState = updateRetryState;
5
+ exports.handleParseError = handleParseError;
6
+ exports.handleValidationError = handleValidationError;
7
+ const validation_1 = require("../request/validation");
8
+ async function waitBeforeRetry(delayMs = 3000) {
9
+ await new Promise(resolve => setTimeout(resolve, delayMs));
10
+ }
11
+ function updateRetryState(state) {
12
+ return {
13
+ retriesRemaining: state.retriesRemaining - 1,
14
+ attemptNumber: state.attemptNumber + 1,
15
+ };
16
+ }
17
+ function isAssistantMessageEmpty(assistantMessage) {
18
+ const content = assistantMessage === null || assistantMessage === void 0 ? void 0 : assistantMessage.content;
19
+ const hasContent = content !== null && content !== undefined && content !== '';
20
+ const hasToolCalls = (assistantMessage === null || assistantMessage === void 0 ? void 0 : assistantMessage.tool_calls) && assistantMessage.tool_calls.length > 0;
21
+ return !hasContent && !hasToolCalls;
22
+ }
23
+ async function handleParseError(parseError, response, messages, retryState, structuredOutputToolsMode, structuredOutputTool, structuredOutputName, tools) {
24
+ var _a, _b, _c, _d, _e, _f;
25
+ if (retryState.retriesRemaining === 0) {
26
+ return false;
27
+ }
28
+ const assistantMessage = (_b = (_a = response === null || response === void 0 ? void 0 : response.choices) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.message;
29
+ if (isAssistantMessageEmpty(assistantMessage)) {
30
+ await waitBeforeRetry();
31
+ return true;
32
+ }
33
+ if (structuredOutputToolsMode) {
34
+ messages.push({
35
+ role: 'assistant',
36
+ content: ((_e = (_d = (_c = response === null || response === void 0 ? void 0 : response.choices) === null || _c === void 0 ? void 0 : _c[0]) === null || _d === void 0 ? void 0 : _d.message) === null || _e === void 0 ? void 0 : _e.content) || '',
37
+ });
38
+ }
39
+ else {
40
+ messages.push(response.choices[0].message);
41
+ }
42
+ const schemaName = structuredOutputTool ? (_f = structuredOutputTool.function) === null || _f === void 0 ? void 0 : _f.name : structuredOutputName || 'final_response';
43
+ const toolNames = tools.map(tool => { var _a; return ((_a = tool.function) === null || _a === void 0 ? void 0 : _a.name) || 'unknown'; }).join(', ');
44
+ let errorMessage = `Your previous response (attempt ${retryState.attemptNumber})`;
45
+ if (structuredOutputToolsMode) {
46
+ errorMessage += ` did not correctly call a tool.\n\nYou MUST call one of the available tools: ${toolNames}`;
47
+ }
48
+ else if (tools.length > 0) {
49
+ errorMessage += ` had an invalid format.\n\nYou MUST either respond with valid JSON that strictly follows the \`${schemaName}\` schema, or call one of the available tools: ${toolNames}`;
50
+ }
51
+ else {
52
+ errorMessage += ` had an invalid format.\n\nYou MUST respond with valid JSON that strictly follows the \`${schemaName}\` schema.`;
53
+ }
54
+ messages.push({
55
+ role: 'system',
56
+ content: errorMessage,
57
+ });
58
+ await waitBeforeRetry();
59
+ return true;
60
+ }
61
+ async function handleValidationError(validationError, output, response, messages, retryState, structuredOutputToolsMode, structuredOutputTool, structuredOutputName) {
62
+ var _a, _b, _c;
63
+ if (retryState.retriesRemaining === 0) {
64
+ return false;
65
+ }
66
+ const assistantMessage = (_b = (_a = response === null || response === void 0 ? void 0 : response.choices) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.message;
67
+ if (isAssistantMessageEmpty(assistantMessage)) {
68
+ await waitBeforeRetry();
69
+ return true;
70
+ }
71
+ if (structuredOutputToolsMode) {
72
+ messages.push({
73
+ role: 'assistant',
74
+ content: JSON.stringify(output),
75
+ });
76
+ }
77
+ else {
78
+ messages.push(response.choices[0].message);
79
+ }
80
+ const schemaName = structuredOutputTool ? (_c = structuredOutputTool.function) === null || _c === void 0 ? void 0 : _c.name : structuredOutputName;
81
+ const errorMessage = (0, validation_1.formatValidationErrorMessage)(validationError, retryState.attemptNumber, structuredOutputToolsMode, schemaName);
82
+ messages.push({
83
+ role: 'system',
84
+ content: errorMessage,
85
+ });
86
+ await waitBeforeRetry();
87
+ return true;
88
+ }
89
+ //# sourceMappingURL=retryHandler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retryHandler.js","sourceRoot":"","sources":["../../../../../nodes/shared/core/execution/retryHandler.ts"],"names":[],"mappings":"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"}
@@ -36,16 +36,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.router = router;
37
37
  const n8n_workflow_1 = require("n8n-workflow");
38
38
  const messageOperation = __importStar(require("./messageOperation"));
39
- const errorHandling_1 = require("../../api/errorHandling");
40
- function isNodeApiError(error) {
41
- return error instanceof n8n_workflow_1.NodeApiError || error.name === 'NodeApiError';
42
- }
43
- function normalizeError(error) {
44
- if (error instanceof Error) {
45
- return error;
46
- }
47
- return new Error(String(error));
48
- }
39
+ const errors_1 = require("./errors");
49
40
  function initializeRouter(executeFunctions) {
50
41
  return {
51
42
  returnData: [],
@@ -57,8 +48,7 @@ async function executeItem(execute, executeFunctions, itemIndex) {
57
48
  return await execute.call(executeFunctions, itemIndex);
58
49
  }
59
50
  function handleError(error, executeFunctions, itemIndex, continueOnFail, returnData) {
60
- var _a, _b, _c;
61
- const normalizedError = normalizeError(error);
51
+ const normalizedError = (0, errors_1.normalizeError)(error);
62
52
  if (continueOnFail) {
63
53
  returnData.push({
64
54
  json: { error: normalizedError.message },
@@ -66,18 +56,8 @@ function handleError(error, executeFunctions, itemIndex, continueOnFail, returnD
66
56
  });
67
57
  return returnData;
68
58
  }
69
- if (isNodeApiError(normalizedError)) {
70
- const nodeApiError = normalizedError;
71
- const errorCode = (_c = (_b = (_a = nodeApiError.cause) === null || _a === void 0 ? void 0 : _a.error) === null || _b === void 0 ? void 0 : _b.error) === null || _c === void 0 ? void 0 : _c.code;
72
- if (errorCode) {
73
- const customErrorMessage = (0, errorHandling_1.getCustomErrorMessage)(errorCode);
74
- if (customErrorMessage) {
75
- nodeApiError.message = customErrorMessage;
76
- }
77
- }
78
- if (nodeApiError.requestBody) {
79
- nodeApiError.description += ` | Request Body: ${nodeApiError.requestBody}`;
80
- }
59
+ if ((0, errors_1.isNodeApiError)(normalizedError)) {
60
+ const nodeApiError = (0, errors_1.customizeNodeApiError)(normalizedError);
81
61
  nodeApiError.context = {
82
62
  itemIndex,
83
63
  description: nodeApiError.description,
@@ -1 +1 @@
1
- {"version":3,"file":"router.js","sourceRoot":"","sources":["../../../../../nodes/shared/core/execution/router.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"router.js","sourceRoot":"","sources":["../../../../../nodes/shared/core/execution/router.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsHA,wBASC;AA9HD,+CAIsB;AAEtB,qEAAuD;AACvD,qCAAiF;AAKjF,SAAS,gBAAgB,CAAC,gBAAmC;IAC5D,OAAO;QACN,UAAU,EAAE,EAA0B;QACtC,KAAK,EAAE,gBAAgB,CAAC,YAAY,EAAE;QACtC,OAAO,EAAE,gBAAgB,CAAC,OAAO;KACjC,CAAC;AACH,CAAC;AAKD,KAAK,UAAU,WAAW,CACzB,OAAwC,EACxC,gBAAmC,EACnC,SAAiB;IAEjB,OAAO,MAAM,OAAO,CAAC,IAAI,CACxB,gBAAgB,EAChB,SAAS,CACT,CAAC;AACH,CAAC;AAKD,SAAS,WAAW,CACnB,KAAc,EACd,gBAAmC,EACnC,SAAiB,EACjB,cAAuB,EACvB,UAAgC;IAGhC,MAAM,eAAe,GAAG,IAAA,uBAAc,EAAC,KAAK,CAAC,CAAC;IAE9C,IAAI,cAAc,EAAE,CAAC;QACpB,UAAU,CAAC,IAAI,CAAC;YACf,IAAI,EAAE,EAAE,KAAK,EAAE,eAAe,CAAC,OAAO,EAAE;YACxC,UAAU,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;SAC/B,CAAC,CAAC;QACH,OAAO,UAAU,CAAC;IACnB,CAAC;IAED,IAAI,IAAA,uBAAc,EAAC,eAAe,CAAC,EAAE,CAAC;QAErC,MAAM,YAAY,GAAG,IAAA,8BAAqB,EAAC,eAAe,CAAC,CAAC;QAE5D,YAAY,CAAC,OAAO,GAAG;YACtB,SAAS;YACT,WAAW,EAAG,YAAoB,CAAC,WAAW;SAC9C,CAAC;QAEF,MAAM,YAAY,CAAC;IACpB,CAAC;IAGD,MAAM,IAAI,iCAAkB,CAAC,gBAAgB,CAAC,OAAO,EAAE,EAAE,eAAe,EAAE;QACzE,SAAS;QACT,WAAW,EAAG,eAAuB,CAAC,WAAW;KACjD,CAAC,CAAC;AACJ,CAAC;AAKD,KAAK,UAAU,YAAY,CAC1B,MAA2C,EAC3C,gBAAmC;IAEnC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;IAE9C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACvC,IAAI,CAAC;YACJ,MAAM,YAAY,GAAG,MAAM,WAAW,CACrC,OAAO,EACP,gBAAgB,EAChB,CAAC,CACD,CAAC;YACF,UAAU,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,CAAC;QAClC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,MAAM,MAAM,GAAG,WAAW,CACzB,KAAK,EACL,gBAAgB,EAChB,CAAC,EACD,gBAAgB,CAAC,cAAc,EAAE,EACjC,UAAU,CACV,CAAC;YAEF,IAAI,MAAM,EAAE,CAAC;gBAEZ,OAAO,CAAC,GAAG,CACV,kCAAkC,CAAC,uBAAuB,KAAK,CAAC,MAAM,SAAS,CAC/E,CAAC;gBACF,SAAS;YACV,CAAC;QAEF,CAAC;IACF,CAAC;IAED,OAAO,UAAU,CAAC;AACnB,CAAC;AAKM,KAAK,UAAU,MAAM;IAG3B,MAAM,MAAM,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACtC,MAAM,aAAa,GAAG,MAAM,YAAY,CACvC,MAAM,EACN,IAAI,CACJ,CAAC;IACF,OAAO,CAAC,aAAa,CAAC,CAAC;AACxB,CAAC"}
@@ -1,2 +1,2 @@
1
1
  import type { IDataObject } from 'n8n-workflow';
2
- export declare function prepareRequestBody(model: string, messages: IDataObject[], tools: any[], tool_choice: string | undefined, response_format: IDataObject | undefined, options: IDataObject, customParameters: string | IDataObject): IDataObject;
2
+ export declare function prepareRequestBody(model: string, messages: IDataObject[], tools: any[], tool_choice: string | IDataObject | undefined, response_format: IDataObject | undefined, options: IDataObject, customParameters: string | IDataObject): IDataObject;
@@ -25,21 +25,15 @@ function prepareRequestBody(model, messages, tools, tool_choice, response_format
25
25
  }
26
26
  const cleanOptions = (0, omit_1.default)(options, [
27
27
  'customParameters',
28
- 'fallbackModelId',
29
28
  'maxToolsIterations',
30
- 'reasoning_effort',
29
+ 'tenacityMaxRetries'
31
30
  ]);
32
- const reasoningEffort = options.reasoning_effort;
33
- const reasoning = reasoningEffort && reasoningEffort !== ''
34
- ? { reasoning: { effort: reasoningEffort } }
35
- : undefined;
36
31
  const body = {
37
32
  model,
38
33
  messages,
39
34
  ...(tools.length > 0 ? { tools } : {}),
40
35
  tool_choice,
41
36
  response_format,
42
- ...reasoning,
43
37
  ...cleanOptions,
44
38
  ...customParamsObj,
45
39
  };
@@ -1 +1 @@
1
- {"version":3,"file":"body.js","sourceRoot":"","sources":["../../../../../nodes/shared/core/request/body.ts"],"names":[],"mappings":";;;;;AAOA,gDAwDC;AA9DD,uDAAgC;AAChC,6CAAqD;AAKrD,SAAgB,kBAAkB,CACjC,KAAa,EACb,QAAuB,EACvB,KAAY,EACZ,WAA+B,EAC/B,eAAwC,EACxC,OAAoB,EACpB,gBAAsC;IAGtC,IAAA,wBAAgB,EAAC,QAAQ,CAAC,CAAC;IAG3B,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAQ,EAAE,EAAE,CACvC,GAAG,CAAC,OAAO,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,WAAW,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAC/F,CAAC;IAEF,IAAI,eAAe,GAAgB,EAAE,CAAC;IACtC,IAAI,gBAAgB,EAAE,CAAC;QACtB,IAAI,OAAO,gBAAgB,KAAK,QAAQ,IAAI,gBAAgB,CAAC,IAAI,EAAE,EAAE,CAAC;YACrE,IAAI,CAAC;gBACJ,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;YAChD,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBAChB,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;YACrD,CAAC;QACF,CAAC;aAAM,IAAI,OAAO,gBAAgB,KAAK,QAAQ,EAAE,CAAC;YACjD,eAAe,GAAG,gBAAgB,CAAC;QACpC,CAAC;IACF,CAAC;IAGD,MAAM,YAAY,GAAG,IAAA,cAAK,EAAC,OAAO,EAAE;QACnC,kBAAkB;QAClB,iBAAiB;QACjB,oBAAoB;QACpB,kBAAkB;KAClB,CAAC,CAAC;IAGH,MAAM,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAC;IACjD,MAAM,SAAS,GAAG,eAAe,IAAI,eAAe,KAAK,EAAE;QAC1D,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,eAAe,EAAE,EAAE;QAC5C,CAAC,CAAC,SAAS,CAAC;IAEb,MAAM,IAAI,GAAgB;QACzB,KAAK;QACL,QAAQ;QACR,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACtC,WAAW;QACX,eAAe;QACf,GAAG,SAAS;QACZ,GAAG,YAAY;QACf,GAAG,eAAe;KAClB,CAAC;IAEF,OAAO,IAAI,CAAC;AACb,CAAC"}
1
+ {"version":3,"file":"body.js","sourceRoot":"","sources":["../../../../../nodes/shared/core/request/body.ts"],"names":[],"mappings":";;;;;AAOA,gDAgDC;AAtDD,uDAAgC;AAChC,6CAAqD;AAKrD,SAAgB,kBAAkB,CACjC,KAAa,EACb,QAAuB,EACvB,KAAY,EACZ,WAA6C,EAC7C,eAAwC,EACxC,OAAoB,EACpB,gBAAsC;IAGtC,IAAA,wBAAgB,EAAC,QAAQ,CAAC,CAAC;IAG3B,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAQ,EAAE,EAAE,CACvC,GAAG,CAAC,OAAO,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,WAAW,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAC/F,CAAC;IAEF,IAAI,eAAe,GAAgB,EAAE,CAAC;IACtC,IAAI,gBAAgB,EAAE,CAAC;QACtB,IAAI,OAAO,gBAAgB,KAAK,QAAQ,IAAI,gBAAgB,CAAC,IAAI,EAAE,EAAE,CAAC;YACrE,IAAI,CAAC;gBACJ,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;YAChD,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBAChB,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;YACrD,CAAC;QACF,CAAC;aAAM,IAAI,OAAO,gBAAgB,KAAK,QAAQ,EAAE,CAAC;YACjD,eAAe,GAAG,gBAAgB,CAAC;QACpC,CAAC;IACF,CAAC;IAGD,MAAM,YAAY,GAAG,IAAA,cAAK,EAAC,OAAO,EAAE;QACnC,kBAAkB;QAClB,oBAAoB;QACpB,oBAAoB;KACpB,CAAC,CAAC;IAEH,MAAM,IAAI,GAAgB;QACzB,KAAK;QACL,QAAQ;QACR,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACtC,WAAW;QACX,eAAe;QACf,GAAG,YAAY;QACf,GAAG,eAAe;KAClB,CAAC;IAEF,OAAO,IAAI,CAAC;AACb,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type { IDataObject } from 'n8n-workflow';
2
+ export type ValidationResult = {
3
+ isValid: boolean;
4
+ error?: string;
5
+ errors?: Array<{
6
+ path: string;
7
+ message: string;
8
+ }>;
9
+ };
10
+ export declare function validateStructuredOutput(jsonSchema: IDataObject | undefined, output: any): ValidationResult;
11
+ export declare function formatValidationErrorMessage(validationError: string, attemptNumber: number, structuredOutputToolsMode?: boolean, schemaName?: string): string;
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.validateStructuredOutput = validateStructuredOutput;
4
+ exports.formatValidationErrorMessage = formatValidationErrorMessage;
5
+ const schemaGenerator_1 = require("../tools/schemaGenerator");
6
+ function validateStructuredOutput(jsonSchema, output) {
7
+ if (!jsonSchema) {
8
+ return { isValid: true };
9
+ }
10
+ try {
11
+ const zodSchema = (0, schemaGenerator_1.convertJsonSchemaToZod)(jsonSchema);
12
+ const result = zodSchema.safeParse(output);
13
+ if (result.success) {
14
+ return { isValid: true };
15
+ }
16
+ else {
17
+ const errors = result.error.errors.map((err) => ({
18
+ path: err.path.join('.'),
19
+ message: err.message,
20
+ }));
21
+ const errorMessage = errors
22
+ .map((err) => ` - ${err.path ? `${err.path}: ` : ''}${err.message}`)
23
+ .join('\n');
24
+ return {
25
+ isValid: false,
26
+ error: `Validation failed:\n${errorMessage}`,
27
+ errors,
28
+ };
29
+ }
30
+ }
31
+ catch (error) {
32
+ return {
33
+ isValid: false,
34
+ error: `Schema validation error: ${error instanceof Error ? error.message : String(error)}`,
35
+ };
36
+ }
37
+ }
38
+ function formatValidationErrorMessage(validationError, attemptNumber, structuredOutputToolsMode = false, schemaName) {
39
+ const baseMessage = `Your previous response (attempt ${attemptNumber}) did not conform to the required JSON schema. Please correct the following validation errors and try again:\n\n${validationError}\n\n`;
40
+ if (structuredOutputToolsMode && schemaName) {
41
+ return baseMessage + `You MUST call the \`${schemaName}\` tool with corrected arguments that strictly follow the required schema.`;
42
+ }
43
+ else {
44
+ return baseMessage + 'Ensure your response strictly follows the schema requirements.';
45
+ }
46
+ }
47
+ //# sourceMappingURL=validation.js.map