n8n-nodes-simple 2.5.7 → 2.5.10
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/config/constants.d.ts +50 -0
- package/dist/nodes/shared/config/constants.js +54 -0
- package/dist/nodes/shared/config/constants.js.map +1 -0
- package/dist/nodes/shared/config/parameters.d.ts +10 -8
- package/dist/nodes/shared/config/parameters.js +23 -13
- package/dist/nodes/shared/config/parameters.js.map +1 -1
- package/dist/nodes/shared/config/properties/messages.js.map +1 -1
- package/dist/nodes/shared/config/properties/options.js +13 -1
- package/dist/nodes/shared/config/properties/options.js.map +1 -1
- package/dist/nodes/shared/config/properties/output.js +35 -5
- package/dist/nodes/shared/config/properties/output.js.map +1 -1
- package/dist/nodes/shared/core/execution/executionHelpers.d.ts +11 -0
- package/dist/nodes/shared/core/execution/executionHelpers.js +32 -0
- package/dist/nodes/shared/core/execution/executionHelpers.js.map +1 -0
- package/dist/nodes/shared/core/execution/executionSetup.d.ts +22 -3
- package/dist/nodes/shared/core/execution/executionSetup.js +35 -15
- package/dist/nodes/shared/core/execution/executionSetup.js.map +1 -1
- package/dist/nodes/shared/core/execution/executor.d.ts +2 -2
- package/dist/nodes/shared/core/execution/executor.js +26 -86
- package/dist/nodes/shared/core/execution/executor.js.map +1 -1
- package/dist/nodes/shared/core/execution/modelAttempt.d.ts +23 -0
- package/dist/nodes/shared/core/execution/modelAttempt.js +64 -0
- package/dist/nodes/shared/core/execution/modelAttempt.js.map +1 -0
- package/dist/nodes/shared/core/execution/outputData.js.map +1 -1
- package/dist/nodes/shared/core/execution/responseParser.d.ts +1 -1
- package/dist/nodes/shared/core/execution/responseParser.js +18 -6
- package/dist/nodes/shared/core/execution/responseParser.js.map +1 -1
- package/dist/nodes/shared/core/execution/retryHandler.d.ts +2 -2
- package/dist/nodes/shared/core/execution/retryHandler.js +23 -17
- package/dist/nodes/shared/core/execution/retryHandler.js.map +1 -1
- package/dist/nodes/shared/core/request/structuredOutput.d.ts +1 -1
- package/dist/nodes/shared/core/request/structuredOutput.js +4 -4
- package/dist/nodes/shared/core/request/structuredOutput.js.map +1 -1
- package/dist/nodes/shared/core/request/validation.js +4 -4
- package/dist/nodes/shared/core/request/validation.js.map +1 -1
- package/dist/nodes/shared/core/tools/executor.d.ts +2 -1
- package/dist/nodes/shared/core/tools/executor.js +11 -6
- package/dist/nodes/shared/core/tools/executor.js.map +1 -1
- package/dist/nodes/shared/core/tools/setup.d.ts +5 -4
- package/dist/nodes/shared/core/tools/setup.js +3 -1
- package/dist/nodes/shared/core/tools/setup.js.map +1 -1
- package/dist/package.json +3 -2
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +3 -2
|
@@ -1,110 +1,50 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.runModel = runModel;
|
|
4
|
-
const n8n_workflow_1 = require("n8n-workflow");
|
|
5
|
-
const body_1 = require("../request/body");
|
|
6
|
-
const executor_1 = require("../tools/executor");
|
|
7
|
-
const outputData_1 = require("./outputData");
|
|
8
|
-
const io_1 = require("../memory/io");
|
|
9
|
-
const validation_1 = require("../request/validation");
|
|
10
|
-
const errors_1 = require("./errors");
|
|
11
|
-
const retryHandler_1 = require("./retryHandler");
|
|
12
4
|
const usageTracking_1 = require("./usageTracking");
|
|
13
5
|
const modelConfig_1 = require("./modelConfig");
|
|
14
|
-
const responseParser_1 = require("./responseParser");
|
|
15
6
|
const executionSetup_1 = require("./executionSetup");
|
|
7
|
+
const retryHandler_1 = require("./retryHandler");
|
|
8
|
+
const modelAttempt_1 = require("./modelAttempt");
|
|
16
9
|
async function runModel(executeFunctions, params, messages, index, modelToUse, fallbackModelToUse, memory) {
|
|
17
10
|
const context = await (0, executionSetup_1.prepareExecutionContext)(executeFunctions, params);
|
|
18
|
-
const { responseFormat, tools, invokableTools, tool_choice, structuredOutputTool, validationSchema, shouldValidate } = context;
|
|
19
11
|
const modelsToTry = (0, modelConfig_1.buildModelsToTry)(modelToUse, fallbackModelToUse, params.tenacityMaxRetries, params.fallbackTenacityMaxRetries);
|
|
12
|
+
if (modelsToTry.length === 0) {
|
|
13
|
+
throw new Error('No models available to try');
|
|
14
|
+
}
|
|
20
15
|
const totalAccumulatedUsage = (0, usageTracking_1.initializeAccumulatedUsage)();
|
|
21
|
-
let lastError = null;
|
|
22
16
|
for (let modelIndex = 0; modelIndex < modelsToTry.length; modelIndex++) {
|
|
23
17
|
const { model: currentModel, maxRetries } = modelsToTry[modelIndex];
|
|
24
18
|
const isLastModel = modelIndex === modelsToTry.length - 1;
|
|
25
19
|
try {
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
let parseError = null;
|
|
45
|
-
if (!parseResult.success) {
|
|
46
|
-
if (shouldValidate && retryState.retriesRemaining > 0) {
|
|
47
|
-
parseError = parseResult.error;
|
|
48
|
-
}
|
|
49
|
-
else {
|
|
50
|
-
const errorData = (0, errors_1.buildDetailedParseError)(parseResult.error, response, structuredOutputToolResponse, body, totalAccumulatedUsage);
|
|
51
|
-
throw new n8n_workflow_1.NodeOperationError(executeFunctions.getNode(), errorData.message, {
|
|
52
|
-
description: errorData.description,
|
|
53
|
-
itemIndex: index,
|
|
54
|
-
});
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
else {
|
|
58
|
-
output = parseResult.output;
|
|
59
|
-
}
|
|
60
|
-
if (parseError) {
|
|
61
|
-
const shouldRetry = await (0, retryHandler_1.handleParseError)(parseError, response, messagesForThisModel, retryState, params.structuredOutputMode, structuredOutputTool, params.structuredOutputName, tools, validationSchema);
|
|
62
|
-
if (shouldRetry) {
|
|
63
|
-
const model = body.model || 'unknown';
|
|
64
|
-
(0, usageTracking_1.trackFailedRequest)(totalAccumulatedUsage, model, `JSON parse error: ${parseError}`);
|
|
65
|
-
retryState = (0, retryHandler_1.updateRetryState)(retryState);
|
|
66
|
-
(0, usageTracking_1.incrementRetriedRequests)(totalAccumulatedUsage);
|
|
67
|
-
continue;
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
if (shouldValidate) {
|
|
71
|
-
const validationResult = (0, validation_1.validateStructuredOutput)(validationSchema, output);
|
|
72
|
-
if (!validationResult.isValid) {
|
|
73
|
-
const validationError = validationResult.error || 'Unknown validation error';
|
|
74
|
-
const shouldRetry = await (0, retryHandler_1.handleValidationError)(validationError, output, response, messagesForThisModel, retryState, params.structuredOutputMode, structuredOutputTool, params.structuredOutputName);
|
|
75
|
-
if (shouldRetry) {
|
|
76
|
-
const model = body.model || 'unknown';
|
|
77
|
-
(0, usageTracking_1.trackFailedRequest)(totalAccumulatedUsage, model, `Validation error: ${validationError}`);
|
|
78
|
-
retryState = (0, retryHandler_1.updateRetryState)(retryState);
|
|
79
|
-
(0, usageTracking_1.incrementRetriedRequests)(totalAccumulatedUsage);
|
|
80
|
-
continue;
|
|
81
|
-
}
|
|
82
|
-
else {
|
|
83
|
-
const errorData = (0, errors_1.buildValidationError)(maxRetries, validationError, output, body, response, totalAccumulatedUsage);
|
|
84
|
-
throw new n8n_workflow_1.NodeOperationError(executeFunctions.getNode(), errorData.message, {
|
|
85
|
-
description: errorData.description,
|
|
86
|
-
itemIndex: index,
|
|
87
|
-
});
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
const outputData = await (0, outputData_1.prepareOutputData)(response, output, messagesForThisModel, messagesBeforeRetries, params.addToOutput, executeFunctions, index, body, totalAccumulatedUsage);
|
|
92
|
-
if (memory) {
|
|
93
|
-
await (0, io_1.saveToMemory)(messagesForThisModel, output, params.saveToolCallsInChatMemory, memory);
|
|
94
|
-
}
|
|
95
|
-
return outputData;
|
|
96
|
-
}
|
|
20
|
+
return await (0, modelAttempt_1.executeModelAttemptWithRetries)({
|
|
21
|
+
executeFunctions,
|
|
22
|
+
params,
|
|
23
|
+
index,
|
|
24
|
+
currentModel,
|
|
25
|
+
maxRetries,
|
|
26
|
+
messages: messages,
|
|
27
|
+
tools: context.tools,
|
|
28
|
+
tool_choice: context.tool_choice,
|
|
29
|
+
responseFormat: context.responseFormat,
|
|
30
|
+
invokableTools: context.invokableTools,
|
|
31
|
+
structuredOutputTool: context.structuredOutputTool,
|
|
32
|
+
validationSchema: context.validationSchema,
|
|
33
|
+
shouldValidate: context.shouldValidate,
|
|
34
|
+
appendRetryErrorMessages: params.appendRetryErrorMessages,
|
|
35
|
+
totalAccumulatedUsage,
|
|
36
|
+
memory,
|
|
37
|
+
});
|
|
97
38
|
}
|
|
98
39
|
catch (error) {
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
(0, usageTracking_1.trackFailedRequest)(totalAccumulatedUsage, currentModel, errorMessage);
|
|
40
|
+
const errorInstance = error instanceof Error ? error : new Error(String(error));
|
|
41
|
+
(0, usageTracking_1.trackFailedRequest)(totalAccumulatedUsage, currentModel, errorInstance.message);
|
|
102
42
|
if (isLastModel) {
|
|
103
43
|
throw error;
|
|
104
44
|
}
|
|
105
45
|
await (0, retryHandler_1.waitBeforeRetry)();
|
|
106
46
|
}
|
|
107
47
|
}
|
|
108
|
-
throw
|
|
48
|
+
throw new Error('All model attempts exhausted');
|
|
109
49
|
}
|
|
110
50
|
//# sourceMappingURL=executor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executor.js","sourceRoot":"","sources":["../../../../../nodes/shared/core/execution/executor.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"executor.js","sourceRoot":"","sources":["../../../../../nodes/shared/core/execution/executor.ts"],"names":[],"mappings":";;AAYA,4BA6DC;AAtED,mDAAiF;AACjF,+CAAiD;AACjD,qDAA2D;AAC3D,iDAAiD;AACjD,iDAAgE;AAKzD,KAAK,UAAU,QAAQ,CAC7B,gBAAmC,EACnC,MAA2B,EAC3B,QAAgC,EAChC,KAAa,EACb,UAAkB,EAClB,kBAA2B,EAC3B,MAA2B;IAE3B,MAAM,OAAO,GAAG,MAAM,IAAA,wCAAuB,EAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;IACxE,MAAM,WAAW,GAAG,IAAA,8BAAgB,EACnC,UAAU,EACV,kBAAkB,EAClB,MAAM,CAAC,kBAAkB,EACzB,MAAM,CAAC,0BAA0B,CACjC,CAAC;IAEF,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;IAC/C,CAAC;IAED,MAAM,qBAAqB,GAAG,IAAA,0CAA0B,GAAE,CAAC;IAE3D,KAAK,IAAI,UAAU,GAAG,CAAC,EAAE,UAAU,GAAG,WAAW,CAAC,MAAM,EAAE,UAAU,EAAE,EAAE,CAAC;QACxE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC;QACpE,MAAM,WAAW,GAAG,UAAU,KAAK,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;QAE1D,IAAI,CAAC;YACJ,OAAO,MAAM,IAAA,6CAA8B,EAAC;gBAC3C,gBAAgB;gBAChB,MAAM;gBACN,KAAK;gBACL,YAAY;gBACZ,UAAU;gBACV,QAAQ,EAAE,QAAyB;gBACnC,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,WAAW,EAAE,OAAO,CAAC,WAAW;gBAChC,cAAc,EAAE,OAAO,CAAC,cAAc;gBACtC,cAAc,EAAE,OAAO,CAAC,cAAc;gBACtC,oBAAoB,EAAE,OAAO,CAAC,oBAAoB;gBAClD,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;gBAC1C,cAAc,EAAE,OAAO,CAAC,cAAc;gBACtC,wBAAwB,EAAE,MAAM,CAAC,wBAAwB;gBACzD,qBAAqB;gBACrB,MAAM;aACN,CAAC,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,MAAM,aAAa,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YAChF,IAAA,kCAAkB,EAAC,qBAAqB,EAAE,YAAY,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;YAG/E,IAAI,WAAW,EAAE,CAAC;gBACjB,MAAM,KAAK,CAAC;YACb,CAAC;YAED,MAAM,IAAA,8BAAe,GAAE,CAAC;QACzB,CAAC;IACF,CAAC;IAGD,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;AACjD,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { IExecuteFunctions, INodeExecutionData, IDataObject } from 'n8n-workflow';
|
|
2
|
+
import type { BufferWindowMemory } from 'langchain/memory';
|
|
3
|
+
import type { ExtractedParameters } from '../../config/parameters';
|
|
4
|
+
import { type AccumulatedUsage } from './usageTracking';
|
|
5
|
+
export interface ModelAttemptContext {
|
|
6
|
+
executeFunctions: IExecuteFunctions;
|
|
7
|
+
params: ExtractedParameters;
|
|
8
|
+
index: number;
|
|
9
|
+
currentModel: string;
|
|
10
|
+
maxRetries: number;
|
|
11
|
+
messages: IDataObject[];
|
|
12
|
+
tools: any[];
|
|
13
|
+
tool_choice: any;
|
|
14
|
+
responseFormat: any;
|
|
15
|
+
invokableTools: any[];
|
|
16
|
+
structuredOutputTool: any;
|
|
17
|
+
validationSchema: any;
|
|
18
|
+
shouldValidate: boolean;
|
|
19
|
+
appendRetryErrorMessages: boolean;
|
|
20
|
+
totalAccumulatedUsage: AccumulatedUsage;
|
|
21
|
+
memory?: BufferWindowMemory;
|
|
22
|
+
}
|
|
23
|
+
export declare function executeModelAttemptWithRetries(context: ModelAttemptContext): Promise<INodeExecutionData[]>;
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.executeModelAttemptWithRetries = executeModelAttemptWithRetries;
|
|
4
|
+
const body_1 = require("../request/body");
|
|
5
|
+
const executor_1 = require("../tools/executor");
|
|
6
|
+
const outputData_1 = require("./outputData");
|
|
7
|
+
const io_1 = require("../memory/io");
|
|
8
|
+
const validation_1 = require("../request/validation");
|
|
9
|
+
const errors_1 = require("./errors");
|
|
10
|
+
const retryHandler_1 = require("./retryHandler");
|
|
11
|
+
const usageTracking_1 = require("./usageTracking");
|
|
12
|
+
const responseParser_1 = require("./responseParser");
|
|
13
|
+
const executionHelpers_1 = require("./executionHelpers");
|
|
14
|
+
async function executeModelAttemptWithRetries(context) {
|
|
15
|
+
const { executeFunctions, params, index, currentModel, maxRetries, messages, tools, tool_choice, responseFormat, invokableTools, structuredOutputTool, validationSchema, shouldValidate, totalAccumulatedUsage, memory, } = context;
|
|
16
|
+
let retryState = {
|
|
17
|
+
retriesRemaining: maxRetries,
|
|
18
|
+
attemptNumber: 1,
|
|
19
|
+
};
|
|
20
|
+
let messagesCountBeforeValidationRetries = messages.length;
|
|
21
|
+
let currentIteration = 1;
|
|
22
|
+
while (true) {
|
|
23
|
+
let body = (0, body_1.prepareRequestBody)(currentModel, messages, tools, tool_choice, responseFormat, params.options, params.customParameters);
|
|
24
|
+
const { response, structuredOutputToolResponse, finalIteration, finalBody, accumulatedUsage } = await (0, executor_1.processToolCalls)(executeFunctions, body, messages, invokableTools, params.maxToolsIterations, structuredOutputTool, params.abortSignal, currentIteration);
|
|
25
|
+
(0, usageTracking_1.mergeUsageData)(totalAccumulatedUsage, accumulatedUsage);
|
|
26
|
+
currentIteration = finalIteration;
|
|
27
|
+
body = finalBody;
|
|
28
|
+
if (retryState.attemptNumber === 1) {
|
|
29
|
+
messagesCountBeforeValidationRetries = messages.length;
|
|
30
|
+
}
|
|
31
|
+
const parseResult = (0, responseParser_1.parseAssistantResponse)(response, structuredOutputToolResponse, params.responseFormat, params.extractFirstObjectOnly);
|
|
32
|
+
if (!parseResult.success) {
|
|
33
|
+
if (!shouldValidate || !(0, executionHelpers_1.canRetry)(retryState)) {
|
|
34
|
+
const errorData = (0, errors_1.buildDetailedParseError)(parseResult.error, response, structuredOutputToolResponse, body, totalAccumulatedUsage);
|
|
35
|
+
(0, executionHelpers_1.throwOperationError)(executeFunctions, errorData, index);
|
|
36
|
+
}
|
|
37
|
+
const shouldRetry = await (0, retryHandler_1.handleParseError)(parseResult.error, response, messages, retryState, params.structuredOutputMode, structuredOutputTool, params.structuredOutputName, tools, validationSchema, params.appendRetryErrorMessages);
|
|
38
|
+
if (shouldRetry) {
|
|
39
|
+
retryState = (0, executionHelpers_1.processRetry)(retryState, totalAccumulatedUsage, body, 'JSON parse error', parseResult.error);
|
|
40
|
+
continue;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
const parsedOutput = parseResult.output;
|
|
44
|
+
if (shouldValidate) {
|
|
45
|
+
const validationResult = (0, validation_1.validateStructuredOutput)(validationSchema, parsedOutput);
|
|
46
|
+
if (!validationResult.isValid) {
|
|
47
|
+
const validationError = validationResult.error || 'Unknown validation error';
|
|
48
|
+
const shouldRetry = await (0, retryHandler_1.handleValidationError)(validationError, parsedOutput, response, messages, retryState, params.structuredOutputMode, structuredOutputTool, params.structuredOutputName, params.appendRetryErrorMessages);
|
|
49
|
+
if (shouldRetry) {
|
|
50
|
+
retryState = (0, executionHelpers_1.processRetry)(retryState, totalAccumulatedUsage, body, 'Validation error', validationError);
|
|
51
|
+
continue;
|
|
52
|
+
}
|
|
53
|
+
const errorData = (0, errors_1.buildValidationError)(maxRetries, validationError, parsedOutput, body, response, totalAccumulatedUsage);
|
|
54
|
+
(0, executionHelpers_1.throwOperationError)(executeFunctions, errorData, index);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
const outputData = await (0, outputData_1.prepareOutputData)(response, parsedOutput, messages, messagesCountBeforeValidationRetries, params.addToOutput, executeFunctions, index, body, totalAccumulatedUsage);
|
|
58
|
+
if (memory) {
|
|
59
|
+
await (0, io_1.saveToMemory)(messages, parsedOutput, params.saveToolCallsInChatMemory, memory);
|
|
60
|
+
}
|
|
61
|
+
return outputData;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=modelAttempt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"modelAttempt.js","sourceRoot":"","sources":["../../../../../nodes/shared/core/execution/modelAttempt.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"outputData.js","sourceRoot":"","sources":["../../../../../nodes/shared/core/execution/outputData.ts"],"names":[],"mappings":";;AAYA,
|
|
1
|
+
{"version":3,"file":"outputData.js","sourceRoot":"","sources":["../../../../../nodes/shared/core/execution/outputData.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,4 +3,4 @@ export interface ParseResult {
|
|
|
3
3
|
output?: any;
|
|
4
4
|
error?: string;
|
|
5
5
|
}
|
|
6
|
-
export declare function parseAssistantResponse(response: any, structuredOutputToolResponse: any, responseFormat: string): ParseResult;
|
|
6
|
+
export declare function parseAssistantResponse(response: any, structuredOutputToolResponse: any, responseFormat: string, extractFirstObjectOnly?: boolean): ParseResult;
|
|
@@ -1,13 +1,25 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.parseAssistantResponse = parseAssistantResponse;
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
const jsonrepair_1 = require("jsonrepair");
|
|
5
|
+
function parseAssistantResponse(response, structuredOutputToolResponse, responseFormat, extractFirstObjectOnly = true) {
|
|
6
|
+
var _a, _b, _c;
|
|
6
7
|
try {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
8
|
+
let output;
|
|
9
|
+
if (structuredOutputToolResponse) {
|
|
10
|
+
output = JSON.parse(structuredOutputToolResponse);
|
|
11
|
+
}
|
|
12
|
+
else if (responseFormat === "plainText") {
|
|
13
|
+
output = (_a = response === null || response === void 0 ? void 0 : response.choices[0]) === null || _a === void 0 ? void 0 : _a.message.content;
|
|
14
|
+
}
|
|
15
|
+
else {
|
|
16
|
+
const content = (_b = response === null || response === void 0 ? void 0 : response.choices[0]) === null || _b === void 0 ? void 0 : _b.message.content;
|
|
17
|
+
const repairedJson = (0, jsonrepair_1.jsonrepair)(content);
|
|
18
|
+
const parsed = JSON.parse(repairedJson);
|
|
19
|
+
output = (extractFirstObjectOnly && Array.isArray(parsed))
|
|
20
|
+
? ((_c = parsed.find(item => typeof item === 'object' && item !== null && !Array.isArray(item))) !== null && _c !== void 0 ? _c : parsed)
|
|
21
|
+
: parsed;
|
|
22
|
+
}
|
|
11
23
|
return {
|
|
12
24
|
success: true,
|
|
13
25
|
output,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"responseParser.js","sourceRoot":"","sources":["../../../../../nodes/shared/core/execution/responseParser.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"responseParser.js","sourceRoot":"","sources":["../../../../../nodes/shared/core/execution/responseParser.ts"],"names":[],"mappings":";;AAeA,wDAwCC;AAvDD,2CAAwC;AAexC,SAAgB,sBAAsB,CACrC,QAAa,EACb,4BAAiC,EACjC,cAAsB,EACtB,yBAAkC,IAAI;;IAEtC,IAAI,CAAC;QACJ,IAAI,MAAM,CAAC;QAGX,IAAI,4BAA4B,EAAE,CAAC;YAClC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;QACnD,CAAC;aAEI,IAAI,cAAc,KAAK,WAAW,EAAE,CAAC;YACzC,MAAM,GAAG,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,OAAO,CAAC,CAAC,CAAC,0CAAE,OAAO,CAAC,OAAO,CAAC;QAChD,CAAC;aAEI,CAAC;YACL,MAAM,OAAO,GAAG,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,OAAO,CAAC,CAAC,CAAC,0CAAE,OAAO,CAAC,OAAO,CAAC;YACtD,MAAM,YAAY,GAAG,IAAA,uBAAU,EAAC,OAAO,CAAC,CAAC;YACzC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;YAGxC,MAAM,GAAG,CAAC,sBAAsB,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;gBACzD,CAAC,CAAC,CAAC,MAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,mCAAI,MAAM,CAAC;gBACpG,CAAC,CAAC,MAAM,CAAC;QACX,CAAC;QAED,OAAO;YACN,OAAO,EAAE,IAAI;YACb,MAAM;SACN,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC5E,OAAO;YACN,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,YAAY;SACnB,CAAC;IACH,CAAC;AACF,CAAC"}
|
|
@@ -5,5 +5,5 @@ export interface RetryState {
|
|
|
5
5
|
}
|
|
6
6
|
export declare function waitBeforeRetry(delayMs?: number): Promise<void>;
|
|
7
7
|
export declare function updateRetryState(state: RetryState): RetryState;
|
|
8
|
-
export declare function handleParseError(parseError: string, response: any, messages: IDataObject[], retryState: RetryState, structuredOutputMode: string, structuredOutputTool: IDataObject | null | undefined, structuredOutputName: string | undefined, tools: any[], validationSchema: IDataObject | undefined): Promise<boolean>;
|
|
9
|
-
export declare function handleValidationError(validationError: string, output: any, response: any, messages: IDataObject[], retryState: RetryState, structuredOutputMode: string, structuredOutputTool: IDataObject | null | undefined, structuredOutputName
|
|
8
|
+
export declare function handleParseError(parseError: string, response: any, messages: IDataObject[], retryState: RetryState, structuredOutputMode: string | undefined, structuredOutputTool: IDataObject | null | undefined, structuredOutputName: string | undefined, tools: any[], validationSchema: IDataObject | undefined, appendRetryErrorMessages: boolean): Promise<boolean>;
|
|
9
|
+
export declare function handleValidationError(validationError: string, output: any, response: any, messages: IDataObject[], retryState: RetryState, structuredOutputMode: string | undefined, structuredOutputTool: IDataObject | null | undefined, structuredOutputName: string | undefined, appendRetryErrorMessages: boolean): Promise<boolean>;
|
|
@@ -34,11 +34,11 @@ function extractSchemaParameters(schema) {
|
|
|
34
34
|
jsonExample[key] = `[${type}]`;
|
|
35
35
|
}
|
|
36
36
|
const jsonFormat = parameterNames.length > 0
|
|
37
|
-
? `\n\
|
|
37
|
+
? `\n\nExpected JSON output format:\n${JSON.stringify(jsonExample, null, 4)}`
|
|
38
38
|
: '';
|
|
39
39
|
return { parameterNames, jsonFormat };
|
|
40
40
|
}
|
|
41
|
-
async function handleParseError(parseError, response, messages, retryState, structuredOutputMode, structuredOutputTool, structuredOutputName, tools, validationSchema) {
|
|
41
|
+
async function handleParseError(parseError, response, messages, retryState, structuredOutputMode, structuredOutputTool, structuredOutputName, tools, validationSchema, appendRetryErrorMessages) {
|
|
42
42
|
var _a, _b, _c, _d, _e, _f;
|
|
43
43
|
if (retryState.retriesRemaining === 0) {
|
|
44
44
|
return false;
|
|
@@ -48,6 +48,10 @@ async function handleParseError(parseError, response, messages, retryState, stru
|
|
|
48
48
|
await waitBeforeRetry();
|
|
49
49
|
return true;
|
|
50
50
|
}
|
|
51
|
+
if (!appendRetryErrorMessages) {
|
|
52
|
+
await waitBeforeRetry();
|
|
53
|
+
return true;
|
|
54
|
+
}
|
|
51
55
|
if (structuredOutputMode === 'tools') {
|
|
52
56
|
messages.push({
|
|
53
57
|
role: 'assistant',
|
|
@@ -66,10 +70,10 @@ async function handleParseError(parseError, response, messages, retryState, stru
|
|
|
66
70
|
errorMessage += ` did not correctly call a tool.\n\nYou MUST call one of the available tools: ${toolNames}`;
|
|
67
71
|
}
|
|
68
72
|
else if (tools.length > 0) {
|
|
69
|
-
errorMessage += ` had an invalid format.\n\nYou MUST either: (1) call one of the available tools: ${toolNames}; or (2)
|
|
73
|
+
errorMessage += ` had an invalid format.\n\nYou MUST either: (1) call one of the available tools: ${toolNames}; or (2) output the arguments${parameterList} in JSON format matching the \`${schemaName}\` schema${jsonFormat}`;
|
|
70
74
|
}
|
|
71
75
|
else {
|
|
72
|
-
errorMessage += ` had an invalid format.\n\nYou MUST
|
|
76
|
+
errorMessage += ` had an invalid format.\n\nYou MUST output the arguments ${parameterList} in JSON format.${jsonFormat}`;
|
|
73
77
|
}
|
|
74
78
|
messages.push({
|
|
75
79
|
role: 'system',
|
|
@@ -78,7 +82,7 @@ async function handleParseError(parseError, response, messages, retryState, stru
|
|
|
78
82
|
await waitBeforeRetry();
|
|
79
83
|
return true;
|
|
80
84
|
}
|
|
81
|
-
async function handleValidationError(validationError, output, response, messages, retryState, structuredOutputMode, structuredOutputTool, structuredOutputName) {
|
|
85
|
+
async function handleValidationError(validationError, output, response, messages, retryState, structuredOutputMode, structuredOutputTool, structuredOutputName, appendRetryErrorMessages) {
|
|
82
86
|
var _a, _b, _c;
|
|
83
87
|
if (retryState.retriesRemaining === 0) {
|
|
84
88
|
return false;
|
|
@@ -88,21 +92,23 @@ async function handleValidationError(validationError, output, response, messages
|
|
|
88
92
|
await waitBeforeRetry();
|
|
89
93
|
return true;
|
|
90
94
|
}
|
|
91
|
-
if (
|
|
95
|
+
if (appendRetryErrorMessages) {
|
|
96
|
+
if (structuredOutputMode === 'tools') {
|
|
97
|
+
messages.push({
|
|
98
|
+
role: 'assistant',
|
|
99
|
+
content: JSON.stringify(output),
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
messages.push(response.choices[0].message);
|
|
104
|
+
}
|
|
105
|
+
const schemaName = structuredOutputTool ? (_c = structuredOutputTool.function) === null || _c === void 0 ? void 0 : _c.name : structuredOutputName;
|
|
106
|
+
const errorMessage = (0, validation_1.formatValidationErrorMessage)(validationError, retryState.attemptNumber, structuredOutputMode, schemaName);
|
|
92
107
|
messages.push({
|
|
93
|
-
role: '
|
|
94
|
-
content:
|
|
108
|
+
role: 'system',
|
|
109
|
+
content: errorMessage,
|
|
95
110
|
});
|
|
96
111
|
}
|
|
97
|
-
else {
|
|
98
|
-
messages.push(response.choices[0].message);
|
|
99
|
-
}
|
|
100
|
-
const schemaName = structuredOutputTool ? (_c = structuredOutputTool.function) === null || _c === void 0 ? void 0 : _c.name : structuredOutputName;
|
|
101
|
-
const errorMessage = (0, validation_1.formatValidationErrorMessage)(validationError, retryState.attemptNumber, structuredOutputMode, schemaName);
|
|
102
|
-
messages.push({
|
|
103
|
-
role: 'system',
|
|
104
|
-
content: errorMessage,
|
|
105
|
-
});
|
|
106
112
|
await waitBeforeRetry();
|
|
107
113
|
return true;
|
|
108
114
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"retryHandler.js","sourceRoot":"","sources":["../../../../../nodes/shared/core/execution/retryHandler.ts"],"names":[],"mappings":";;AAcA,0CAEC;AAKD,4CAKC;AA+CD,
|
|
1
|
+
{"version":3,"file":"retryHandler.js","sourceRoot":"","sources":["../../../../../nodes/shared/core/execution/retryHandler.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import type { IDataObject } from 'n8n-workflow';
|
|
2
2
|
import { VisualEditorProperties } from './visualEditor';
|
|
3
|
-
export declare function prepareResponseFormatField(responseFormat: string, outputJsonSchemaDefinition
|
|
3
|
+
export declare function prepareResponseFormatField(responseFormat: string, outputJsonSchemaDefinition?: string, structuredOutputName?: string, structuredOutputDescription?: string, structuredOutputProperties?: VisualEditorProperties[], structuredOutputIsArray?: boolean, structuredOutputArrayName?: string, structuredOutputArrayDescription?: string): IDataObject | undefined;
|
|
@@ -5,20 +5,20 @@ const visualEditor_1 = require("./visualEditor");
|
|
|
5
5
|
const constants_1 = require("./constants");
|
|
6
6
|
function prepareResponseFormatField(responseFormat, outputJsonSchemaDefinition, structuredOutputName, structuredOutputDescription, structuredOutputProperties, structuredOutputIsArray, structuredOutputArrayName, structuredOutputArrayDescription) {
|
|
7
7
|
let response_format;
|
|
8
|
-
if (responseFormat === 'structuredOutputSchema') {
|
|
8
|
+
if (responseFormat === 'structuredOutputSchema' && outputJsonSchemaDefinition) {
|
|
9
9
|
const jsonSchema = JSON.parse(outputJsonSchemaDefinition);
|
|
10
10
|
if (!jsonSchema.description) {
|
|
11
11
|
jsonSchema.description = constants_1.DEFAULT_STRUCTURED_OUTPUT_DESCRIPTION;
|
|
12
12
|
}
|
|
13
13
|
response_format = { type: 'json_schema', json_schema: jsonSchema };
|
|
14
14
|
}
|
|
15
|
-
else if (responseFormat === 'structuredOutputVisual') {
|
|
15
|
+
else if (responseFormat === 'structuredOutputVisual' && structuredOutputName && structuredOutputProperties) {
|
|
16
16
|
response_format = {
|
|
17
17
|
type: 'json_schema',
|
|
18
18
|
json_schema: {
|
|
19
19
|
name: structuredOutputName,
|
|
20
|
-
description: structuredOutputDescription.trim() || constants_1.DEFAULT_STRUCTURED_OUTPUT_DESCRIPTION,
|
|
21
|
-
schema: (0, visualEditor_1.convertVisualEditorToSchema)(structuredOutputProperties, structuredOutputIsArray, structuredOutputArrayName, structuredOutputArrayDescription),
|
|
20
|
+
description: (structuredOutputDescription === null || structuredOutputDescription === void 0 ? void 0 : structuredOutputDescription.trim()) || constants_1.DEFAULT_STRUCTURED_OUTPUT_DESCRIPTION,
|
|
21
|
+
schema: (0, visualEditor_1.convertVisualEditorToSchema)(structuredOutputProperties, structuredOutputIsArray !== null && structuredOutputIsArray !== void 0 ? structuredOutputIsArray : false, structuredOutputArrayName !== null && structuredOutputArrayName !== void 0 ? structuredOutputArrayName : '', structuredOutputArrayDescription !== null && structuredOutputArrayDescription !== void 0 ? structuredOutputArrayDescription : ''),
|
|
22
22
|
strict: true,
|
|
23
23
|
},
|
|
24
24
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"structuredOutput.js","sourceRoot":"","sources":["../../../../../nodes/shared/core/request/structuredOutput.ts"],"names":[],"mappings":";;AAOA,gEAsCC;AA5CD,iDAAqF;AACrF,2CAAoE;AAKpE,SAAgB,0BAA0B,CACzC,cAAsB,EACtB,
|
|
1
|
+
{"version":3,"file":"structuredOutput.js","sourceRoot":"","sources":["../../../../../nodes/shared/core/request/structuredOutput.ts"],"names":[],"mappings":";;AAOA,gEAsCC;AA5CD,iDAAqF;AACrF,2CAAoE;AAKpE,SAAgB,0BAA0B,CACzC,cAAsB,EACtB,0BAAmC,EACnC,oBAA6B,EAC7B,2BAAoC,EACpC,0BAAqD,EACrD,uBAAiC,EACjC,yBAAkC,EAClC,gCAAyC;IAEzC,IAAI,eAAe,CAAC;IACpB,IAAI,cAAc,KAAK,wBAAwB,IAAI,0BAA0B,EAAE,CAAC;QAC/E,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAE1D,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;YAC7B,UAAU,CAAC,WAAW,GAAG,iDAAqC,CAAC;QAChE,CAAC;QACD,eAAe,GAAG,EAAE,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;IACpE,CAAC;SAAM,IAAI,cAAc,KAAK,wBAAwB,IAAI,oBAAoB,IAAI,0BAA0B,EAAE,CAAC;QAC9G,eAAe,GAAG;YACjB,IAAI,EAAE,aAAa;YACnB,WAAW,EAAE;gBACZ,IAAI,EAAE,oBAAoB;gBAC1B,WAAW,EAAE,CAAA,2BAA2B,aAA3B,2BAA2B,uBAA3B,2BAA2B,CAAE,IAAI,EAAE,KAAI,iDAAqC;gBACzF,MAAM,EAAE,IAAA,0CAA2B,EAClC,0BAA0B,EAC1B,uBAAuB,aAAvB,uBAAuB,cAAvB,uBAAuB,GAAI,KAAK,EAChC,yBAAyB,aAAzB,yBAAyB,cAAzB,yBAAyB,GAAI,EAAE,EAC/B,gCAAgC,aAAhC,gCAAgC,cAAhC,gCAAgC,GAAI,EAAE,CACtC;gBACD,MAAM,EAAE,IAAI;aACZ;SACD,CAAC;IACH,CAAC;SAAM,IAAI,cAAc,KAAK,UAAU,EAAE,CAAC;QAC1C,eAAe,GAAG,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;IAC3C,CAAC;IAED,OAAO,eAAe,CAAC;AACxB,CAAC"}
|
|
@@ -23,7 +23,7 @@ function validateStructuredOutput(jsonSchema, output) {
|
|
|
23
23
|
.join('\n');
|
|
24
24
|
return {
|
|
25
25
|
isValid: false,
|
|
26
|
-
error:
|
|
26
|
+
error: errorMessage,
|
|
27
27
|
errors,
|
|
28
28
|
};
|
|
29
29
|
}
|
|
@@ -36,12 +36,12 @@ function validateStructuredOutput(jsonSchema, output) {
|
|
|
36
36
|
}
|
|
37
37
|
}
|
|
38
38
|
function formatValidationErrorMessage(validationError, attemptNumber, structuredOutputMode = 'native', schemaName) {
|
|
39
|
-
const baseMessage = `Your previous response (attempt ${attemptNumber})
|
|
39
|
+
const baseMessage = `Your previous response (attempt ${attemptNumber}) failed validation:\n\n${validationError}\n\n`;
|
|
40
40
|
if (structuredOutputMode === 'tools' && schemaName) {
|
|
41
|
-
return baseMessage + `You MUST call the \`${schemaName}\` tool with
|
|
41
|
+
return baseMessage + `You MUST call the \`${schemaName}\` tool with valid arguments.`;
|
|
42
42
|
}
|
|
43
43
|
else {
|
|
44
|
-
return baseMessage + '
|
|
44
|
+
return baseMessage + 'You MUST return a valid JSON object matching the required schema.';
|
|
45
45
|
}
|
|
46
46
|
}
|
|
47
47
|
//# sourceMappingURL=validation.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../../../../nodes/shared/core/request/validation.ts"],"names":[],"mappings":";;AAmBA,4DA2CC;AAUD,oEAaC;AAnFD,8DAAkE;AAiBlE,SAAgB,wBAAwB,CACvC,UAAmC,EACnC,MAAW;IAGX,IAAI,CAAC,UAAU,EAAE,CAAC;QACjB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC1B,CAAC;IAED,IAAI,CAAC;QAEJ,MAAM,SAAS,GAAG,IAAA,wCAAsB,EAAC,UAAyB,CAAC,CAAC;QAGpE,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAE3C,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAC1B,CAAC;aAAM,CAAC;YAEP,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;gBAChD,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;gBACxB,OAAO,EAAE,GAAG,CAAC,OAAO;aACpB,CAAC,CAAC,CAAC;YAGJ,MAAM,YAAY,GAAG,MAAM;iBACzB,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;iBACpE,IAAI,CAAC,IAAI,CAAC,CAAC;YAEb,OAAO;gBACN,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../../../../nodes/shared/core/request/validation.ts"],"names":[],"mappings":";;AAmBA,4DA2CC;AAUD,oEAaC;AAnFD,8DAAkE;AAiBlE,SAAgB,wBAAwB,CACvC,UAAmC,EACnC,MAAW;IAGX,IAAI,CAAC,UAAU,EAAE,CAAC;QACjB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC1B,CAAC;IAED,IAAI,CAAC;QAEJ,MAAM,SAAS,GAAG,IAAA,wCAAsB,EAAC,UAAyB,CAAC,CAAC;QAGpE,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAE3C,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAC1B,CAAC;aAAM,CAAC;YAEP,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;gBAChD,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;gBACxB,OAAO,EAAE,GAAG,CAAC,OAAO;aACpB,CAAC,CAAC,CAAC;YAGJ,MAAM,YAAY,GAAG,MAAM;iBACzB,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;iBACpE,IAAI,CAAC,IAAI,CAAC,CAAC;YAEb,OAAO;gBACN,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,YAAY;gBACnB,MAAM;aACN,CAAC;QACH,CAAC;IACF,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAEhB,OAAO;YACN,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,4BAA4B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;SAC3F,CAAC;IACH,CAAC;AACF,CAAC;AAUD,SAAgB,4BAA4B,CAC3C,eAAuB,EACvB,aAAqB,EACrB,uBAA+B,QAAQ,EACvC,UAAmB;IAEnB,MAAM,WAAW,GAAG,mCAAmC,aAAa,2BAA2B,eAAe,MAAM,CAAC;IAErH,IAAI,oBAAoB,KAAK,OAAO,IAAI,UAAU,EAAE,CAAC;QACpD,OAAO,WAAW,GAAG,uBAAuB,UAAU,+BAA+B,CAAC;IACvF,CAAC;SAAM,CAAC;QACP,OAAO,WAAW,GAAG,mEAAmE,CAAC;IAC1F,CAAC;AACF,CAAC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { IExecuteFunctions, IDataObject } from 'n8n-workflow';
|
|
2
2
|
import type { ChatCompletion, AccumulatedUsage } from '../../api/types';
|
|
3
|
-
|
|
3
|
+
import type { InvokableTool } from '../execution/executionSetup';
|
|
4
|
+
export declare function processToolCalls(executeFunctions: IExecuteFunctions, body: IDataObject, messages: IDataObject[], invokableTools: InvokableTool[], maxToolsIterations: number, structuredOutputTool?: IDataObject, abortSignal?: AbortSignal, startingIteration?: number): Promise<{
|
|
4
5
|
response: ChatCompletion;
|
|
5
6
|
structuredOutputToolResponse: any;
|
|
6
7
|
finalIteration: number;
|
|
@@ -163,12 +163,17 @@ async function processToolCalls(executeFunctions, body, messages, invokableTools
|
|
|
163
163
|
break;
|
|
164
164
|
}
|
|
165
165
|
if (invokableTool.name === calledFunctionName) {
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
166
|
+
if ('invoke' in invokableTool && typeof invokableTool.invoke === 'function') {
|
|
167
|
+
const parsedArgs = (0, n8n_workflow_1.jsonParse)(calledFunctionArgs);
|
|
168
|
+
content = await invokableTool.invoke(parsedArgs);
|
|
169
|
+
content =
|
|
170
|
+
Array.isArray(content) && typeof ((_f = content[0]) === null || _f === void 0 ? void 0 : _f.text) === 'string'
|
|
171
|
+
? content[0].text
|
|
172
|
+
: content;
|
|
173
|
+
}
|
|
174
|
+
else {
|
|
175
|
+
content = null;
|
|
176
|
+
}
|
|
172
177
|
toolFound = true;
|
|
173
178
|
break;
|
|
174
179
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executor.js","sourceRoot":"","sources":["../../../../../nodes/shared/core/tools/executor.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"executor.js","sourceRoot":"","sources":["../../../../../nodes/shared/core/tools/executor.ts"],"names":[],"mappings":";;AAsFA,4CAgPC;AArUD,+CAAyC;AACzC,iEAA8D;AAO9D,SAAS,eAAe,CACvB,WAA6B,EAC7B,QAAiC;IAGjC,MAAM,YAAY,GAAG,CAAC,MAAW,EAAE,MAAW,EAAE,EAAE;QACjD,IAAI,CAAC,MAAM;YAAE,OAAO;QACpB,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;YAC1B,IAAI,OAAO,MAAM,CAAC,GAAG,CAAC,KAAK,QAAQ,EAAE,CAAC;gBAErC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;YAChD,CAAC;iBAAM,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC;gBAEjC,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;YACpB,CAAC;iBAAM,IAAI,OAAO,MAAM,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE,CAAC;gBAE7C,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC;YAC1C,CAAC;iBAAM,IAAI,OAAO,MAAM,CAAC,GAAG,CAAC,KAAK,QAAQ,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC;gBAEpE,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;gBAChC,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YACxC,CAAC;iBAAM,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE,CAAC;gBAEtC,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;YAC3B,CAAC;QACF,CAAC;IACF,CAAC,CAAC;IAGF,WAAW,CAAC,aAAa,IAAI,QAAQ,CAAC,aAAa,IAAI,CAAC,CAAC;IACzD,WAAW,CAAC,iBAAiB,IAAI,QAAQ,CAAC,iBAAiB,IAAI,CAAC,CAAC;IACjE,WAAW,CAAC,YAAY,IAAI,QAAQ,CAAC,YAAY,IAAI,CAAC,CAAC;IAGvD,IAAI,QAAQ,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QACjC,WAAW,CAAC,IAAI,GAAG,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC;IAC5D,CAAC;IAGD,IAAI,QAAQ,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QACpC,WAAW,CAAC,OAAO,GAAG,WAAW,CAAC,OAAO,IAAI,QAAQ,CAAC,OAAO,CAAC;IAC/D,CAAC;IAGD,IAAI,QAAQ,CAAC,qBAAqB,EAAE,CAAC;QACpC,WAAW,CAAC,qBAAqB,GAAG,WAAW,CAAC,qBAAqB,IAAI,EAAE,CAAC;QAC5E,YAAY,CAAC,WAAW,CAAC,qBAAqB,EAAE,QAAQ,CAAC,qBAAqB,CAAC,CAAC;IACjF,CAAC;IAED,IAAI,QAAQ,CAAC,YAAY,EAAE,CAAC;QAC3B,WAAW,CAAC,YAAY,GAAG,WAAW,CAAC,YAAY,IAAI,EAAE,CAAC;QAC1D,YAAY,CAAC,WAAW,CAAC,YAAY,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC;IAC/D,CAAC;IAED,IAAI,QAAQ,CAAC,yBAAyB,EAAE,CAAC;QACxC,WAAW,CAAC,yBAAyB,GAAG,WAAW,CAAC,yBAAyB,IAAI,EAAE,CAAC;QACpF,YAAY,CAAC,WAAW,CAAC,yBAAyB,EAAE,QAAQ,CAAC,yBAAyB,CAAC,CAAC;IACzF,CAAC;IAGD,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC5B,IAAI,CAAC,CAAC,eAAe,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,EAAE,SAAS;YAC5E,uBAAuB,EAAE,cAAc,EAAE,2BAA2B,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACtF,IAAI,OAAO,QAAQ,CAAC,GAAG,CAAC,KAAK,QAAQ,EAAE,CAAC;gBACvC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;YAC5D,CAAC;iBAAM,IAAI,WAAW,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE,CAAC;gBAC3C,WAAW,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;YAClC,CAAC;QACF,CAAC;IACF,CAAC;IAED,OAAO,WAAW,CAAC;AACpB,CAAC;AAKM,KAAK,UAAU,gBAAgB,CACrC,gBAAmC,EACnC,IAAiB,EACjB,QAAuB,EACvB,cAA+B,EAC/B,kBAA0B,EAC1B,oBAAkC,EAClC,WAAyB,EACzB,oBAA4B,CAAC;;IAS7B,MAAM,gBAAgB,GAAqB;QAC1C,aAAa,EAAE,CAAC;QAChB,iBAAiB,EAAE,CAAC;QACpB,YAAY,EAAE,CAAC;QACf,cAAc,EAAE,CAAC;QACjB,gBAAgB,EAAE,CAAC;QACnB,eAAe,EAAE,EAAE;KACnB,CAAC;IAEF,IAAI,SAAS,GAAG,IAAI,CAAC;IACrB,IAAI,QAAwB,CAAC;IAE7B,IAAI,CAAC;QACJ,QAAQ,GAAG,CAAC,MAAM,mCAAgB,CAAC,IAAI,CAAC,gBAAgB,EAAE,MAAM,EAAE,mBAAmB,EAAE;YACtF,IAAI,EAAE,SAAS;SACf,CAAC,CAAmB,CAAC;QAGtB,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;YACpB,eAAe,CAAC,gBAAgB,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;YAClD,gBAAgB,CAAC,cAAc,EAAE,CAAC;QACnC,CAAC;IACF,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAEhB,MAAM,KAAK,GAAI,SAAS,CAAC,KAAgB,IAAI,SAAS,CAAC;QACvD,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC5E,gBAAgB,CAAC,eAAgB,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC;QACvE,MAAM,KAAK,CAAC;IACb,CAAC;IAGD,IAAI,SAAS,GAAG,MAAA,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,OAAO,CAAC,CAAC,CAAC,0CAAE,OAAO,0CAAE,UAAU,CAAC;IAC1D,IAAI,gBAAgB,GAAG,iBAAiB,CAAC;IACzC,IAAI,4BAA4B,GAAG,IAAI,CAAC;IAGxC,MAAM,oBAAoB,GAAG,IAAI,GAAG,EAAU,CAAC;IAE/C,OAAO,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,MAAM,EAAE,CAAC;QAE1B,MAAM,oBAAoB,GAAG,kBAAkB,IAAI,CAAC,IAAI,gBAAgB,GAAG,kBAAkB,CAAC;QAG9F,IAAI,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,OAAO,EAAE,CAAC;YAC1B,MAAM;QACP,CAAC;QAGD,IAAI,oBAAoB,EAAE,CAAC;YAE1B,IAAI,oBAAoB,IAAI,CAAC,4BAA4B,EAAE,CAAC;gBAE3D,SAAS,GAAG;oBACX,GAAG,IAAI;oBACP,QAAQ,EAAE,QAAQ;oBAClB,KAAK,EAAE,CAAC,oBAAoB,CAAC;oBAC7B,WAAW,EAAE;wBACZ,IAAI,EAAE,UAAU;wBAChB,QAAQ,EAAE,EAAE,IAAI,EAAG,oBAAoB,CAAC,QAAwB,CAAC,IAAc,EAAE;qBACjF;iBACD,CAAC;YACH,CAAC;iBAAM,CAAC;gBAEP,SAAS,GAAG;oBACX,GAAG,IAAI;oBACP,QAAQ,EAAE,QAAQ;oBAClB,KAAK,EAAE,EAAE;oBACT,WAAW,EAAE,SAAS;iBACtB,CAAC;YACH,CAAC;YAGD,IAAI,CAAC;gBACJ,QAAQ,GAAG,CAAC,MAAM,mCAAgB,CAAC,IAAI,CAAC,gBAAgB,EAAE,MAAM,EAAE,mBAAmB,EAAE;oBACtF,IAAI,EAAE,SAAS;iBACf,CAAC,CAAmB,CAAC;gBAGtB,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;oBACpB,eAAe,CAAC,gBAAgB,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;oBAClD,gBAAgB,CAAC,cAAc,EAAE,CAAC;gBACnC,CAAC;YACF,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBAEhB,MAAM,KAAK,GAAI,SAAS,CAAC,KAAgB,IAAI,SAAS,CAAC;gBACvD,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBAC5E,gBAAgB,CAAC,eAAgB,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC;gBACvE,MAAM,KAAK,CAAC;YACb,CAAC;YAGD,IAAI,oBAAoB,IAAI,CAAC,4BAA4B,KAAI,MAAA,MAAA,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,OAAO,0CAAG,CAAC,CAAC,0CAAE,OAAO,0CAAE,UAAU,CAAA,EAAE,CAAC;gBAC1G,MAAM,cAAc,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC;gBAC9D,KAAK,MAAM,QAAQ,IAAI,cAAc,EAAE,CAAC;oBACvC,IACG,oBAAoB,CAAC,QAAwB,CAAC,IAAe;wBAC/D,QAAQ,CAAC,QAAQ,CAAC,IAAI,EACrB,CAAC;wBACF,4BAA4B,GAAG,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC;wBAC3D,MAAM;oBACP,CAAC;gBACF,CAAC;YACF,CAAC;YAED,MAAM;QACP,CAAC;QAGD,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YAClC,MAAM,kBAAkB,GAAG,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC;YAClD,MAAM,kBAAkB,GAAG,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC;YACvD,MAAM,UAAU,GAAG,QAAQ,CAAC,EAAE,CAAC;YAG/B,IAAI,oBAAoB,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC1C,OAAO,CAAC,GAAG,CAAC,oCAAoC,UAAU,EAAE,CAAC,CAAC;gBAC9D,SAAS;YACV,CAAC;YACD,oBAAoB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YAGrC,IAAI,OAAO,GAAkB,IAAI,CAAC;YAClC,IAAI,SAAS,GAAG,KAAK,CAAC;YAEtB,IAAI,CAAC;gBACJ,KAAK,MAAM,aAAa,IAAI,cAAc,aAAd,cAAc,cAAd,cAAc,GAAI,EAAE,EAAE,CAAC;oBAElD,IACC,oBAAoB;wBAClB,oBAAoB,CAAC,QAAwB,CAAC,IAAe,KAAK,kBAAkB,EACrF,CAAC;wBACF,4BAA4B,GAAG,kBAAkB,CAAC;wBAClD,SAAS,GAAG,IAAI,CAAC;wBACjB,MAAM;oBACP,CAAC;oBAED,IAAI,aAAa,CAAC,IAAI,KAAK,kBAAkB,EAAE,CAAC;wBAE/C,IAAI,QAAQ,IAAI,aAAa,IAAI,OAAO,aAAa,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;4BAE7E,MAAM,UAAU,GAAsB,IAAA,wBAAS,EAAC,kBAAkB,CAAC,CAAC;4BAGpE,OAAO,GAAG,MAAM,aAAa,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;4BAGjD,OAAO;gCACN,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,CAAA,MAAA,OAAO,CAAC,CAAC,CAAC,0CAAE,IAAI,CAAA,KAAK,QAAQ;oCAC7D,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI;oCACjB,CAAC,CAAC,OAAO,CAAC;wBACb,CAAC;6BAAM,CAAC;4BAEP,OAAO,GAAG,IAAI,CAAC;wBAChB,CAAC;wBAED,SAAS,GAAG,IAAI,CAAC;wBACjB,MAAM;oBACP,CAAC;gBACF,CAAC;gBAED,IAAI,CAAC,SAAS,EAAE,CAAC;oBAChB,OAAO,GAAG,gBAAgB,kBAAkB,gCAAgC,CAAC;oBAC7E,OAAO,CAAC,KAAK,CAAC,mBAAmB,kBAAkB,EAAE,CAAC,CAAC;gBACxD,CAAC;YACF,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBAChB,OAAO,GAAG,yBAAyB,kBAAkB,MAAM,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YACrH,CAAC;YAED,IAAI,4BAA4B,EAAE,CAAC;gBAClC,MAAM;YACP,CAAC;YAGD,IAAI,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBACvC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YAC5C,CAAC;YAGD,IAAI,WAAW,GAAG,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;gBAAC,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC;gBAAC,OAAO,OAAO,CAAC;YAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;YAGrK,QAAQ,CAAC,IAAI,CAAC;gBACb,YAAY,EAAE,UAAU;gBACxB,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE,WAAW;aACpB,CAAC,CAAC;QACJ,CAAC;QAED,IAAI,4BAA4B,EAAE,CAAC;YAClC,MAAM;QACP,CAAC;QAGD,SAAS,GAAG;YACX,GAAG,IAAI;YACP,QAAQ,EAAE,QAAQ;SAClB,CAAC;QAGF,IAAI,CAAC;YACJ,QAAQ,GAAG,CAAC,MAAM,mCAAgB,CAAC,IAAI,CAAC,gBAAgB,EAAE,MAAM,EAAE,mBAAmB,EAAE;gBACtF,IAAI,EAAE,SAAS;aACf,CAAC,CAAmB,CAAC;YAGtB,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;gBACpB,eAAe,CAAC,gBAAgB,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;gBAClD,gBAAgB,CAAC,cAAc,EAAE,CAAC;YACnC,CAAC;QACF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAEhB,MAAM,KAAK,GAAI,SAAS,CAAC,KAAgB,IAAI,SAAS,CAAC;YACvD,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC5E,gBAAgB,CAAC,eAAgB,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC;YACvE,MAAM,KAAK,CAAC;QACb,CAAC;QAGD,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC;QACnD,gBAAgB,IAAI,CAAC,CAAC;IACvB,CAAC;IAED,OAAO,EAAE,QAAQ,EAAE,4BAA4B,EAAE,cAAc,EAAE,gBAAgB,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC;AAClH,CAAC"}
|