n8n-nodes-simple 2.5.4 → 2.5.6
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/types.d.ts +4 -0
- package/dist/nodes/shared/config/parameters.d.ts +2 -0
- package/dist/nodes/shared/config/parameters.js +4 -0
- package/dist/nodes/shared/config/parameters.js.map +1 -1
- package/dist/nodes/shared/config/properties/options.js +45 -0
- package/dist/nodes/shared/config/properties/options.js.map +1 -1
- package/dist/nodes/shared/core/execution/errors.js +7 -2
- package/dist/nodes/shared/core/execution/errors.js.map +1 -1
- package/dist/nodes/shared/core/execution/executionSetup.d.ts +12 -0
- package/dist/nodes/shared/core/execution/executionSetup.js +34 -0
- package/dist/nodes/shared/core/execution/executionSetup.js.map +1 -0
- package/dist/nodes/shared/core/execution/executor.d.ts +1 -1
- package/dist/nodes/shared/core/execution/executor.js +87 -104
- 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/modelConfig.d.ts +5 -0
- package/dist/nodes/shared/core/execution/modelConfig.js +16 -0
- package/dist/nodes/shared/core/execution/modelConfig.js.map +1 -0
- package/dist/nodes/shared/core/execution/responseParser.d.ts +6 -0
- package/dist/nodes/shared/core/execution/responseParser.js +24 -0
- package/dist/nodes/shared/core/execution/responseParser.js.map +1 -0
- package/dist/nodes/shared/core/execution/usageTracking.d.ts +16 -0
- package/dist/nodes/shared/core/execution/usageTracking.js +43 -0
- package/dist/nodes/shared/core/execution/usageTracking.js.map +1 -0
- package/dist/nodes/shared/core/request/body.js +3 -1
- package/dist/nodes/shared/core/request/body.js.map +1 -1
- package/dist/nodes/shared/core/request/constants.d.ts +2 -0
- package/dist/nodes/shared/core/request/constants.js +6 -0
- package/dist/nodes/shared/core/request/constants.js.map +1 -0
- package/dist/nodes/shared/core/request/structuredOutput.js +3 -2
- package/dist/nodes/shared/core/request/structuredOutput.js.map +1 -1
- package/dist/nodes/shared/core/tools/executor.js +44 -18
- package/dist/nodes/shared/core/tools/executor.js.map +1 -1
- package/dist/nodes/shared/core/tools/setup.js +7 -2
- package/dist/nodes/shared/core/tools/setup.js.map +1 -1
- package/dist/package.json +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
|
@@ -3,6 +3,7 @@ import { VisualEditorProperties } from '../core/request/visualEditor';
|
|
|
3
3
|
import { RawMessage } from '../core/messages/types';
|
|
4
4
|
export type ExtractedParameters = {
|
|
5
5
|
model: string;
|
|
6
|
+
fallbackModel?: string;
|
|
6
7
|
agentType: string;
|
|
7
8
|
rawMessagesToSend: RawMessage[];
|
|
8
9
|
responseFormat: string;
|
|
@@ -10,6 +11,7 @@ export type ExtractedParameters = {
|
|
|
10
11
|
outputJsonSchemaDefinition: string;
|
|
11
12
|
structuredOutputToolsMode: boolean;
|
|
12
13
|
tenacityMaxRetries: number;
|
|
14
|
+
fallbackTenacityMaxRetries?: number;
|
|
13
15
|
structuredOutputProperties: VisualEditorProperties[];
|
|
14
16
|
structuredOutputName: string;
|
|
15
17
|
structuredOutputDescription: string;
|
|
@@ -8,8 +8,11 @@ function extractParameters(executeFunctions, index) {
|
|
|
8
8
|
const chatMemoryMessage = rawMessages.find((msg) => msg.role === 'chatMemoryRole');
|
|
9
9
|
const saveToolCallsInChatMemory = (_a = chatMemoryMessage === null || chatMemoryMessage === void 0 ? void 0 : chatMemoryMessage.saveToolCallsInChatMemory) !== null && _a !== void 0 ? _a : true;
|
|
10
10
|
const loadToolCallsFromChatMemory = (_b = chatMemoryMessage === null || chatMemoryMessage === void 0 ? void 0 : chatMemoryMessage.loadToolCallsFromChatMemory) !== null && _b !== void 0 ? _b : true;
|
|
11
|
+
const fallbackModelRaw = get('options.fallbackModelId', '', { extractValue: true });
|
|
12
|
+
const fallbackTenacityMaxRetriesRaw = get('options.fallbackTenacityMaxRetries', -1);
|
|
11
13
|
const params = {
|
|
12
14
|
model: get('modelId', '', { extractValue: true }),
|
|
15
|
+
fallbackModel: fallbackModelRaw || undefined,
|
|
13
16
|
agentType: get('agentType', 'coreAgent'),
|
|
14
17
|
rawMessagesToSend: rawMessages,
|
|
15
18
|
responseFormat: get('responseFormat', ''),
|
|
@@ -17,6 +20,7 @@ function extractParameters(executeFunctions, index) {
|
|
|
17
20
|
outputJsonSchemaDefinition: get('outputJsonSchemaDefinition', ''),
|
|
18
21
|
structuredOutputToolsMode: get('structuredOutputToolsMode', false),
|
|
19
22
|
tenacityMaxRetries: get('options.tenacityMaxRetries', 0),
|
|
23
|
+
fallbackTenacityMaxRetries: fallbackTenacityMaxRetriesRaw === -1 ? undefined : fallbackTenacityMaxRetriesRaw,
|
|
20
24
|
structuredOutputProperties: get('structuredOutputProperties.values', []),
|
|
21
25
|
structuredOutputName: get('structuredOutputName', ''),
|
|
22
26
|
structuredOutputDescription: get('structuredOutputDescription', ''),
|
|
@@ -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":";;AAgCA,8CA8CC;AA9CD,SAAgB,iBAAiB,CAChC,gBAAmC,EACnC,KAAa;;IAEb,MAAM,GAAG,GAAG,CAAI,IAAY,EAAE,YAAe,EAAE,OAAkC,EAAE,EAAE,CACpF,gBAAgB,CAAC,gBAAgB,CAAC,IAAI,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,CAAM,CAAC;IAE5E,MAAM,WAAW,GAAG,GAAG,CAAe,uBAAuB,EAAE,EAAE,CAAC,CAAC;IAGnE,MAAM,iBAAiB,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,gBAAgB,CAAC,CAAC;IACnF,MAAM,yBAAyB,GAAG,MAAA,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,CAAE,yBAAyB,mCAAI,IAAI,CAAC;IACvF,MAAM,2BAA2B,GAAG,MAAA,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,CAAE,2BAA2B,mCAAI,IAAI,CAAC;IAE3F,MAAM,gBAAgB,GAAG,GAAG,CAAS,yBAAyB,EAAE,EAAE,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5F,MAAM,6BAA6B,GAAG,GAAG,CAAS,oCAAoC,EAAE,CAAC,CAAC,CAAC,CAAC;IAE5F,MAAM,MAAM,GAAwB;QACnC,KAAK,EAAE,GAAG,CAAS,SAAS,EAAE,EAAE,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;QACzD,aAAa,EAAE,gBAAgB,IAAI,SAAS;QAC5C,SAAS,EAAE,GAAG,CAAS,WAAW,EAAE,WAAW,CAAC;QAChD,iBAAiB,EAAE,WAAW;QAC9B,cAAc,EAAE,GAAG,CAAS,gBAAgB,EAAE,EAAE,CAAC;QACjD,WAAW,EAAE,GAAG,CAAW,aAAa,EAAE,EAAE,CAAC;QAC7C,0BAA0B,EAAE,GAAG,CAAS,4BAA4B,EAAE,EAAE,CAAC;QACzE,yBAAyB,EAAE,GAAG,CAAU,2BAA2B,EAAE,KAAK,CAAC;QAC3E,kBAAkB,EAAE,GAAG,CAAS,4BAA4B,EAAE,CAAC,CAAC;QAChE,0BAA0B,EAAE,6BAA6B,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,6BAA6B;QAC5G,0BAA0B,EAAE,GAAG,CAC9B,mCAAmC,EACnC,EAAE,CACF;QACD,oBAAoB,EAAE,GAAG,CAAS,sBAAsB,EAAE,EAAE,CAAC;QAC7D,2BAA2B,EAAE,GAAG,CAAS,6BAA6B,EAAE,EAAE,CAAC;QAC3E,uBAAuB,EAAE,GAAG,CAAU,yBAAyB,EAAE,KAAK,CAAC;QACvE,yBAAyB,EAAE,GAAG,CAAS,2BAA2B,EAAE,EAAE,CAAC;QACvE,gCAAgC,EAAE,GAAG,CAAS,kCAAkC,EAAE,EAAE,CAAC;QACrF,OAAO,EAAE,GAAG,CAAc,SAAS,EAAE,EAAE,CAAC;QACxC,kBAAkB,EAAE,GAAG,CAAS,4BAA4B,EAAE,EAAE,CAAC;QACjE,gBAAgB,EAAE,GAAG,CAAuB,0BAA0B,EAAE,IAAI,CAAC;QAC7E,yBAAyB;QACzB,2BAA2B;QAC3B,WAAW,EAAE,gBAAgB,CAAC,wBAAwB,EAAE;KACxD,CAAC;IAEF,OAAO,MAAM,CAAC;AACf,CAAC"}
|
|
@@ -19,6 +19,51 @@ exports.optionsProperties = [
|
|
|
19
19
|
validateType: 'object',
|
|
20
20
|
ignoreValidationDuringExecution: true,
|
|
21
21
|
},
|
|
22
|
+
{
|
|
23
|
+
displayName: 'Fallback Max Validation Retries',
|
|
24
|
+
name: 'fallbackTenacityMaxRetries',
|
|
25
|
+
type: 'number',
|
|
26
|
+
default: -1,
|
|
27
|
+
description: 'Maximum validation retries for the fallback model. Use -1 to inherit the primary model\'s retry count, or specify a different value (0-10).',
|
|
28
|
+
typeOptions: {
|
|
29
|
+
minValue: -1,
|
|
30
|
+
maxValue: 10,
|
|
31
|
+
},
|
|
32
|
+
displayOptions: {
|
|
33
|
+
show: {
|
|
34
|
+
'/responseFormat': ['structuredOutputVisual', 'structuredOutputSchema'],
|
|
35
|
+
},
|
|
36
|
+
},
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
displayName: 'Fallback Model',
|
|
40
|
+
name: 'fallbackModelId',
|
|
41
|
+
type: 'resourceLocator',
|
|
42
|
+
default: { mode: 'list', value: '' },
|
|
43
|
+
description: 'Model to use if the primary model fails all validation retries. If specified, this fallback model will be tried after the primary model exhausts its retries.',
|
|
44
|
+
modes: [
|
|
45
|
+
{
|
|
46
|
+
displayName: 'From List',
|
|
47
|
+
name: 'list',
|
|
48
|
+
type: 'list',
|
|
49
|
+
typeOptions: {
|
|
50
|
+
searchListMethod: 'modelSearch',
|
|
51
|
+
searchable: true,
|
|
52
|
+
},
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
displayName: 'ID',
|
|
56
|
+
name: 'id',
|
|
57
|
+
type: 'string',
|
|
58
|
+
placeholder: 'e.g., gpt-4',
|
|
59
|
+
},
|
|
60
|
+
],
|
|
61
|
+
displayOptions: {
|
|
62
|
+
show: {
|
|
63
|
+
'/responseFormat': ['structuredOutputVisual', 'structuredOutputSchema'],
|
|
64
|
+
},
|
|
65
|
+
},
|
|
66
|
+
},
|
|
22
67
|
{
|
|
23
68
|
displayName: 'Frequency Penalty',
|
|
24
69
|
name: 'frequency_penalty',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"options.js","sourceRoot":"","sources":["../../../../../nodes/shared/config/properties/options.ts"],"names":[],"mappings":";;;AAEa,QAAA,iBAAiB,GAAsB;IACnD;QACC,WAAW,EAAE,SAAS;QACtB,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,YAAY;QACzB,IAAI,EAAE,YAAY;QAClB,OAAO,EAAE,EAAE;QACX,OAAO,EAAE;YACR;gBACC,WAAW,EAAE,mBAAmB;gBAChC,IAAI,EAAE,kBAAkB;gBACxB,OAAO,EAAE,IAAI;gBACb,WAAW,EACV,uQAAuQ;gBACxQ,IAAI,EAAE,MAAM;gBACZ,WAAW,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE;gBACxB,YAAY,EAAE,QAAQ;gBACtB,+BAA+B,EAAE,IAAI;aACrC;YACD;gBACC,WAAW,EAAE,mBAAmB;gBAChC,IAAI,EAAE,mBAAmB;gBACzB,OAAO,EAAE,CAAC;gBACV,WAAW,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,eAAe,EAAE,CAAC,EAAE;gBAC9D,WAAW,EACV,8JAA8J;gBAC/J,IAAI,EAAE,QAAQ;aACd;YACD;gBACC,WAAW,EAAE,YAAY;gBACzB,IAAI,EAAE,uBAAuB;gBAC7B,OAAO,EAAE,IAAI;gBACb,WAAW,EAAE,4DAA4D;gBACzE,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE;oBACZ,QAAQ,EAAE,KAAK;iBACf;aACD;YACD;gBACC,WAAW,EAAE,qBAAqB;gBAClC,IAAI,EAAE,oBAAoB;gBAC1B,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,EAAE;gBACX,WAAW,EACV,0MAA0M;aAC3M;YACD;gBACC,WAAW,EAAE,wBAAwB;gBACrC,IAAI,EAAE,oBAAoB;gBAC1B,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,CAAC;gBACV,WAAW,EACV,gNAAgN;gBACjN,WAAW,EAAE;oBACZ,QAAQ,EAAE,CAAC;oBACX,QAAQ,EAAE,EAAE;iBACZ;gBACD,cAAc,EAAE;oBACf,IAAI,EAAE;wBACL,iBAAiB,EAAE,CAAC,wBAAwB,EAAE,wBAAwB,CAAC;qBACvE;iBACD;aACD;YACD;gBACC,WAAW,EAAE,uBAAuB;gBACpC,IAAI,EAAE,GAAG;gBACT,OAAO,EAAE,CAAC;gBACV,WAAW,EACV,4UAA4U;gBAC7U,IAAI,EAAE,QAAQ;aACd;YACD;gBACC,WAAW,EAAE,kBAAkB;gBAC/B,IAAI,EAAE,kBAAkB;gBACxB,OAAO,EAAE,CAAC;gBACV,WAAW,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,eAAe,EAAE,CAAC,EAAE;gBAC9D,WAAW,EACV,iJAAiJ;gBAClJ,IAAI,EAAE,QAAQ;aACd;YACD;gBACC,WAAW,EAAE,aAAa;gBAC1B,IAAI,EAAE,aAAa;gBACnB,OAAO,EAAE,CAAC;gBACV,WAAW,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,eAAe,EAAE,CAAC,EAAE;gBAC7D,WAAW,EACV,2SAA2S;gBAC5S,IAAI,EAAE,QAAQ;aACd;YACD;gBACC,WAAW,EAAE,OAAO;gBACpB,IAAI,EAAE,OAAO;gBACb,OAAO,EAAE,CAAC;gBACV,WAAW,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,eAAe,EAAE,CAAC,EAAE;gBAC7D,WAAW,EACV,6OAA6O;gBAC9O,IAAI,EAAE,QAAQ;aACd;SACD;KACD;CACD,CAAC"}
|
|
1
|
+
{"version":3,"file":"options.js","sourceRoot":"","sources":["../../../../../nodes/shared/config/properties/options.ts"],"names":[],"mappings":";;;AAEa,QAAA,iBAAiB,GAAsB;IACnD;QACC,WAAW,EAAE,SAAS;QACtB,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,YAAY;QACzB,IAAI,EAAE,YAAY;QAClB,OAAO,EAAE,EAAE;QACX,OAAO,EAAE;YACR;gBACC,WAAW,EAAE,mBAAmB;gBAChC,IAAI,EAAE,kBAAkB;gBACxB,OAAO,EAAE,IAAI;gBACb,WAAW,EACV,uQAAuQ;gBACxQ,IAAI,EAAE,MAAM;gBACZ,WAAW,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE;gBACxB,YAAY,EAAE,QAAQ;gBACtB,+BAA+B,EAAE,IAAI;aACrC;YACD;gBACC,WAAW,EAAE,iCAAiC;gBAC9C,IAAI,EAAE,4BAA4B;gBAClC,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,CAAC,CAAC;gBACX,WAAW,EACV,6IAA6I;gBAC9I,WAAW,EAAE;oBACZ,QAAQ,EAAE,CAAC,CAAC;oBACZ,QAAQ,EAAE,EAAE;iBACZ;gBACD,cAAc,EAAE;oBACf,IAAI,EAAE;wBACL,iBAAiB,EAAE,CAAC,wBAAwB,EAAE,wBAAwB,CAAC;qBACvE;iBACD;aACD;YACD;gBACC,WAAW,EAAE,gBAAgB;gBAC7B,IAAI,EAAE,iBAAiB;gBACvB,IAAI,EAAE,iBAAiB;gBACvB,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE;gBACpC,WAAW,EACV,+JAA+J;gBAChK,KAAK,EAAE;oBACN;wBACC,WAAW,EAAE,WAAW;wBACxB,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,MAAM;wBACZ,WAAW,EAAE;4BACZ,gBAAgB,EAAE,aAAa;4BAC/B,UAAU,EAAE,IAAI;yBAChB;qBACD;oBACD;wBACC,WAAW,EAAE,IAAI;wBACjB,IAAI,EAAE,IAAI;wBACV,IAAI,EAAE,QAAQ;wBACd,WAAW,EAAE,aAAa;qBAC1B;iBACD;gBACD,cAAc,EAAE;oBACf,IAAI,EAAE;wBACL,iBAAiB,EAAE,CAAC,wBAAwB,EAAE,wBAAwB,CAAC;qBACvE;iBACD;aACD;YACD;gBACC,WAAW,EAAE,mBAAmB;gBAChC,IAAI,EAAE,mBAAmB;gBACzB,OAAO,EAAE,CAAC;gBACV,WAAW,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,eAAe,EAAE,CAAC,EAAE;gBAC9D,WAAW,EACV,8JAA8J;gBAC/J,IAAI,EAAE,QAAQ;aACd;YACD;gBACC,WAAW,EAAE,YAAY;gBACzB,IAAI,EAAE,uBAAuB;gBAC7B,OAAO,EAAE,IAAI;gBACb,WAAW,EAAE,4DAA4D;gBACzE,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE;oBACZ,QAAQ,EAAE,KAAK;iBACf;aACD;YACD;gBACC,WAAW,EAAE,qBAAqB;gBAClC,IAAI,EAAE,oBAAoB;gBAC1B,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,EAAE;gBACX,WAAW,EACV,0MAA0M;aAC3M;YACD;gBACC,WAAW,EAAE,wBAAwB;gBACrC,IAAI,EAAE,oBAAoB;gBAC1B,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,CAAC;gBACV,WAAW,EACV,gNAAgN;gBACjN,WAAW,EAAE;oBACZ,QAAQ,EAAE,CAAC;oBACX,QAAQ,EAAE,EAAE;iBACZ;gBACD,cAAc,EAAE;oBACf,IAAI,EAAE;wBACL,iBAAiB,EAAE,CAAC,wBAAwB,EAAE,wBAAwB,CAAC;qBACvE;iBACD;aACD;YACD;gBACC,WAAW,EAAE,uBAAuB;gBACpC,IAAI,EAAE,GAAG;gBACT,OAAO,EAAE,CAAC;gBACV,WAAW,EACV,4UAA4U;gBAC7U,IAAI,EAAE,QAAQ;aACd;YACD;gBACC,WAAW,EAAE,kBAAkB;gBAC/B,IAAI,EAAE,kBAAkB;gBACxB,OAAO,EAAE,CAAC;gBACV,WAAW,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,eAAe,EAAE,CAAC,EAAE;gBAC9D,WAAW,EACV,iJAAiJ;gBAClJ,IAAI,EAAE,QAAQ;aACd;YACD;gBACC,WAAW,EAAE,aAAa;gBAC1B,IAAI,EAAE,aAAa;gBACnB,OAAO,EAAE,CAAC;gBACV,WAAW,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,eAAe,EAAE,CAAC,EAAE;gBAC7D,WAAW,EACV,2SAA2S;gBAC5S,IAAI,EAAE,QAAQ;aACd;YACD;gBACC,WAAW,EAAE,OAAO;gBACpB,IAAI,EAAE,OAAO;gBACb,OAAO,EAAE,CAAC;gBACV,WAAW,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,eAAe,EAAE,CAAC,EAAE;gBAC7D,WAAW,EACV,6OAA6O;gBAC9O,IAAI,EAAE,QAAQ;aACd;SACD;KACD;CACD,CAAC"}
|
|
@@ -18,8 +18,13 @@ function normalizeError(error) {
|
|
|
18
18
|
return new Error(String(error));
|
|
19
19
|
}
|
|
20
20
|
function customizeNodeApiError(nodeApiError) {
|
|
21
|
-
var _a, _b, _c;
|
|
22
|
-
const
|
|
21
|
+
var _a, _b, _c, _d;
|
|
22
|
+
const cause = nodeApiError.cause;
|
|
23
|
+
const errorCode = ((_b = (_a = cause === null || cause === void 0 ? void 0 : cause.error) === null || _a === void 0 ? void 0 : _a.error) === null || _b === void 0 ? void 0 : _b.code) ||
|
|
24
|
+
((_c = cause === null || cause === void 0 ? void 0 : cause.error) === null || _c === void 0 ? void 0 : _c.code) ||
|
|
25
|
+
(cause === null || cause === void 0 ? void 0 : cause.code) ||
|
|
26
|
+
((_d = cause === null || cause === void 0 ? void 0 : cause.error) === null || _d === void 0 ? void 0 : _d.type) ||
|
|
27
|
+
(cause === null || cause === void 0 ? void 0 : cause.type);
|
|
23
28
|
if (errorCode) {
|
|
24
29
|
const customErrorMessage = (0, errorHandling_1.getCustomErrorMessage)(errorCode);
|
|
25
30
|
if (customErrorMessage) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../../../nodes/shared/core/execution/errors.ts"],"names":[],"mappings":";;AAmBA,wCAEC;AAKD,wCAKC;AAOD,
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../../../nodes/shared/core/execution/errors.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { IExecuteFunctions, IDataObject } from 'n8n-workflow';
|
|
2
|
+
import type { ExtractedParameters } from '../../config/parameters';
|
|
3
|
+
export interface ExecutionContext {
|
|
4
|
+
responseFormat?: IDataObject;
|
|
5
|
+
tools: any[];
|
|
6
|
+
invokableTools: any[];
|
|
7
|
+
tool_choice?: string | IDataObject;
|
|
8
|
+
structuredOutputTool?: IDataObject;
|
|
9
|
+
validationSchema?: IDataObject;
|
|
10
|
+
shouldValidate: boolean;
|
|
11
|
+
}
|
|
12
|
+
export declare function prepareExecutionContext(executeFunctions: IExecuteFunctions, params: ExtractedParameters): Promise<ExecutionContext>;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.prepareExecutionContext = prepareExecutionContext;
|
|
4
|
+
const structuredOutput_1 = require("../request/structuredOutput");
|
|
5
|
+
const setup_1 = require("../tools/setup");
|
|
6
|
+
async function prepareExecutionContext(executeFunctions, params) {
|
|
7
|
+
var _a, _b;
|
|
8
|
+
let responseFormat = (0, structuredOutput_1.prepareResponseFormatField)(params.responseFormat, params.outputJsonSchemaDefinition, params.structuredOutputName, params.structuredOutputDescription, params.structuredOutputProperties, params.structuredOutputIsArray, params.structuredOutputArrayName, params.structuredOutputArrayDescription);
|
|
9
|
+
const { tools, invokableTools, tool_choice, structuredOutputTool } = await (0, setup_1.prepareTools)(executeFunctions, params.structuredOutputToolsMode, params.maxToolsIterations, responseFormat);
|
|
10
|
+
if (params.structuredOutputToolsMode) {
|
|
11
|
+
responseFormat = undefined;
|
|
12
|
+
}
|
|
13
|
+
const shouldValidate = params.tenacityMaxRetries > 0 &&
|
|
14
|
+
(params.responseFormat === 'structuredOutputSchema' || params.responseFormat === 'structuredOutputVisual');
|
|
15
|
+
let validationSchema;
|
|
16
|
+
if (shouldValidate) {
|
|
17
|
+
if (params.structuredOutputToolsMode && structuredOutputTool) {
|
|
18
|
+
validationSchema = (_a = structuredOutputTool.function) === null || _a === void 0 ? void 0 : _a.parameters;
|
|
19
|
+
}
|
|
20
|
+
else if (responseFormat === null || responseFormat === void 0 ? void 0 : responseFormat.json_schema) {
|
|
21
|
+
validationSchema = (_b = responseFormat.json_schema) === null || _b === void 0 ? void 0 : _b.schema;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
return {
|
|
25
|
+
responseFormat,
|
|
26
|
+
tools,
|
|
27
|
+
invokableTools,
|
|
28
|
+
tool_choice,
|
|
29
|
+
structuredOutputTool: structuredOutputTool !== null && structuredOutputTool !== void 0 ? structuredOutputTool : undefined,
|
|
30
|
+
validationSchema,
|
|
31
|
+
shouldValidate,
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=executionSetup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"executionSetup.js","sourceRoot":"","sources":["../../../../../nodes/shared/core/execution/executionSetup.ts"],"names":[],"mappings":";;AAqBA,0DAiDC;AApED,kEAAyE;AACzE,0CAA8C;AAkBvC,KAAK,UAAU,uBAAuB,CAC5C,gBAAmC,EACnC,MAA2B;;IAG3B,IAAI,cAAc,GAAG,IAAA,6CAA0B,EAC9C,MAAM,CAAC,cAAc,EACrB,MAAM,CAAC,0BAA0B,EACjC,MAAM,CAAC,oBAAoB,EAC3B,MAAM,CAAC,2BAA2B,EAClC,MAAM,CAAC,0BAA0B,EACjC,MAAM,CAAC,uBAAuB,EAC9B,MAAM,CAAC,yBAAyB,EAChC,MAAM,CAAC,gCAAgC,CACvC,CAAC;IAGF,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,oBAAoB,EAAE,GACjE,MAAM,IAAA,oBAAY,EAAC,gBAAgB,EAAE,MAAM,CAAC,yBAAyB,EAAE,MAAM,CAAC,kBAAkB,EAAE,cAAc,CAAC,CAAC;IACnH,IAAI,MAAM,CAAC,yBAAyB,EAAE,CAAC;QACtC,cAAc,GAAG,SAAS,CAAC;IAC5B,CAAC;IAGD,MAAM,cAAc,GACnB,MAAM,CAAC,kBAAkB,GAAG,CAAC;QAC7B,CAAC,MAAM,CAAC,cAAc,KAAK,wBAAwB,IAAI,MAAM,CAAC,cAAc,KAAK,wBAAwB,CAAC,CAAC;IAG5G,IAAI,gBAAyC,CAAC;IAC9C,IAAI,cAAc,EAAE,CAAC;QACpB,IAAI,MAAM,CAAC,yBAAyB,IAAI,oBAAoB,EAAE,CAAC;YAE9D,gBAAgB,GAAG,MAAC,oBAAoB,CAAC,QAAwB,0CAAE,UAAyB,CAAC;QAC9F,CAAC;aAAM,IAAI,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,WAAW,EAAE,CAAC;YAExC,gBAAgB,GAAG,MAAC,cAAc,CAAC,WAA2B,0CAAE,MAAqB,CAAC;QACvF,CAAC;IACF,CAAC;IAED,OAAO;QACN,cAAc;QACd,KAAK;QACL,cAAc;QACd,WAAW;QACX,oBAAoB,EAAE,oBAAoB,aAApB,oBAAoB,cAApB,oBAAoB,GAAI,SAAS;QACvD,gBAAgB;QAChB,cAAc;KACd,CAAC;AACH,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import type { IExecuteFunctions, INodeExecutionData, IDataObject } from 'n8n-workflow';
|
|
2
2
|
import type { BufferWindowMemory } from 'langchain/memory';
|
|
3
3
|
import { ExtractedParameters } from '../../config/parameters';
|
|
4
|
-
export declare function runModel(executeFunctions: IExecuteFunctions, params: ExtractedParameters, messages: IDataObject[], index: number, modelToUse: string, memory?: BufferWindowMemory): Promise<INodeExecutionData[]>;
|
|
4
|
+
export declare function runModel(executeFunctions: IExecuteFunctions, params: ExtractedParameters, messages: IDataObject[], index: number, modelToUse: string, fallbackModelToUse?: string, memory?: BufferWindowMemory): Promise<INodeExecutionData[]>;
|
|
@@ -2,8 +2,6 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.runModel = runModel;
|
|
4
4
|
const n8n_workflow_1 = require("n8n-workflow");
|
|
5
|
-
const structuredOutput_1 = require("../request/structuredOutput");
|
|
6
|
-
const setup_1 = require("../tools/setup");
|
|
7
5
|
const body_1 = require("../request/body");
|
|
8
6
|
const executor_1 = require("../tools/executor");
|
|
9
7
|
const outputData_1 = require("./outputData");
|
|
@@ -11,117 +9,102 @@ const io_1 = require("../memory/io");
|
|
|
11
9
|
const validation_1 = require("../request/validation");
|
|
12
10
|
const errors_1 = require("./errors");
|
|
13
11
|
const retryHandler_1 = require("./retryHandler");
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
}
|
|
21
|
-
;
|
|
22
|
-
const
|
|
23
|
-
|
|
24
|
-
let
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
total_requests: 0,
|
|
44
|
-
retried_requests: 0,
|
|
45
|
-
};
|
|
46
|
-
while (true) {
|
|
47
|
-
let body = (0, body_1.prepareRequestBody)(modelToUse, messages, tools, tool_choice, responseFormat, params.options, params.customParameters);
|
|
48
|
-
const { response, structuredOutputToolResponse, finalIteration, finalBody, accumulatedUsage } = await (0, executor_1.processToolCalls)(executeFunctions, body, messages, invokableTools, params.maxToolsIterations, structuredOutputTool, params.abortSignal, currentIteration);
|
|
49
|
-
const mergeUsage = (target, source) => {
|
|
50
|
-
for (const key in source) {
|
|
51
|
-
if (typeof source[key] === 'number') {
|
|
52
|
-
target[key] = (target[key] || 0) + source[key];
|
|
12
|
+
const usageTracking_1 = require("./usageTracking");
|
|
13
|
+
const modelConfig_1 = require("./modelConfig");
|
|
14
|
+
const responseParser_1 = require("./responseParser");
|
|
15
|
+
const executionSetup_1 = require("./executionSetup");
|
|
16
|
+
async function runModel(executeFunctions, params, messages, index, modelToUse, fallbackModelToUse, memory) {
|
|
17
|
+
const context = await (0, executionSetup_1.prepareExecutionContext)(executeFunctions, params);
|
|
18
|
+
const { responseFormat, tools, invokableTools, tool_choice, structuredOutputTool, validationSchema, shouldValidate } = context;
|
|
19
|
+
const modelsToTry = (0, modelConfig_1.buildModelsToTry)(modelToUse, fallbackModelToUse, params.tenacityMaxRetries, params.fallbackTenacityMaxRetries);
|
|
20
|
+
const totalAccumulatedUsage = (0, usageTracking_1.initializeAccumulatedUsage)();
|
|
21
|
+
let lastError = null;
|
|
22
|
+
for (let modelIndex = 0; modelIndex < modelsToTry.length; modelIndex++) {
|
|
23
|
+
const { model: currentModel, maxRetries } = modelsToTry[modelIndex];
|
|
24
|
+
const isLastModel = modelIndex === modelsToTry.length - 1;
|
|
25
|
+
try {
|
|
26
|
+
const messagesForThisModel = [...messages];
|
|
27
|
+
let retryState = {
|
|
28
|
+
retriesRemaining: maxRetries,
|
|
29
|
+
attemptNumber: 1,
|
|
30
|
+
};
|
|
31
|
+
let messagesBeforeRetries = messagesForThisModel.length;
|
|
32
|
+
let currentIteration = 1;
|
|
33
|
+
while (true) {
|
|
34
|
+
let body = (0, body_1.prepareRequestBody)(currentModel, messagesForThisModel, tools, tool_choice, responseFormat, params.options, params.customParameters);
|
|
35
|
+
const { response, structuredOutputToolResponse, finalIteration, finalBody, accumulatedUsage } = await (0, executor_1.processToolCalls)(executeFunctions, body, messagesForThisModel, invokableTools, params.maxToolsIterations, structuredOutputTool, params.abortSignal, currentIteration);
|
|
36
|
+
(0, usageTracking_1.mergeUsageData)(totalAccumulatedUsage, accumulatedUsage);
|
|
37
|
+
currentIteration = finalIteration;
|
|
38
|
+
body = finalBody;
|
|
39
|
+
if (retryState.attemptNumber === 1) {
|
|
40
|
+
messagesBeforeRetries = messagesForThisModel.length;
|
|
53
41
|
}
|
|
54
|
-
|
|
55
|
-
|
|
42
|
+
const parseResult = (0, responseParser_1.parseAssistantResponse)(response, structuredOutputToolResponse, params.responseFormat);
|
|
43
|
+
let output;
|
|
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
56
|
}
|
|
57
|
-
else
|
|
58
|
-
|
|
59
|
-
mergeUsage(target[key], source[key]);
|
|
57
|
+
else {
|
|
58
|
+
output = parseResult.output;
|
|
60
59
|
}
|
|
61
|
-
|
|
62
|
-
|
|
60
|
+
if (parseError) {
|
|
61
|
+
const shouldRetry = await (0, retryHandler_1.handleParseError)(parseError, response, messagesForThisModel, retryState, params.structuredOutputToolsMode, 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
|
+
}
|
|
63
69
|
}
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
}
|
|
85
|
-
else {
|
|
86
|
-
const errorData = (0, errors_1.buildDetailedParseError)(simpleErrorMessage, response, structuredOutputToolResponse, body, totalAccumulatedUsage);
|
|
87
|
-
throw new n8n_workflow_1.NodeOperationError(executeFunctions.getNode(), errorData.message, {
|
|
88
|
-
description: errorData.description,
|
|
89
|
-
itemIndex: index,
|
|
90
|
-
});
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
if (parseError) {
|
|
94
|
-
const shouldRetry = await (0, retryHandler_1.handleParseError)(parseError, response, messages, retryState, params.structuredOutputToolsMode, structuredOutputTool, params.structuredOutputName, tools, validationSchema);
|
|
95
|
-
if (shouldRetry) {
|
|
96
|
-
retryState = (0, retryHandler_1.updateRetryState)(retryState);
|
|
97
|
-
totalAccumulatedUsage.retried_requests++;
|
|
98
|
-
continue;
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
if (shouldValidate) {
|
|
102
|
-
const validationResult = (0, validation_1.validateStructuredOutput)(validationSchema, output);
|
|
103
|
-
if (!validationResult.isValid) {
|
|
104
|
-
const validationError = validationResult.error || 'Unknown validation error';
|
|
105
|
-
const shouldRetry = await (0, retryHandler_1.handleValidationError)(validationError, output, response, messages, retryState, params.structuredOutputToolsMode, structuredOutputTool, params.structuredOutputName);
|
|
106
|
-
if (shouldRetry) {
|
|
107
|
-
retryState = (0, retryHandler_1.updateRetryState)(retryState);
|
|
108
|
-
totalAccumulatedUsage.retried_requests++;
|
|
109
|
-
continue;
|
|
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.structuredOutputToolsMode, 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
|
+
}
|
|
110
90
|
}
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
description: errorData.description,
|
|
115
|
-
itemIndex: index,
|
|
116
|
-
});
|
|
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);
|
|
117
94
|
}
|
|
95
|
+
return outputData;
|
|
118
96
|
}
|
|
119
97
|
}
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
98
|
+
catch (error) {
|
|
99
|
+
lastError = error;
|
|
100
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
101
|
+
(0, usageTracking_1.trackFailedRequest)(totalAccumulatedUsage, currentModel, errorMessage);
|
|
102
|
+
if (isLastModel) {
|
|
103
|
+
throw error;
|
|
104
|
+
}
|
|
105
|
+
await (0, retryHandler_1.waitBeforeRetry)();
|
|
123
106
|
}
|
|
124
|
-
return outputData;
|
|
125
107
|
}
|
|
108
|
+
throw lastError || new Error('All models failed');
|
|
126
109
|
}
|
|
127
110
|
//# 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":"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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.runModel)(this, params, messages, i, params.model, memory);
|
|
12
|
+
return await (0, executor_1.runModel)(this, params, messages, i, params.model, params.fallbackModel, 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,
|
|
1
|
+
{"version":3,"file":"messageOperation.js","sourceRoot":"","sources":["../../../../../nodes/shared/core/execution/messageOperation.ts"],"names":[],"mappings":";;AAUA,0BA2BC;AAnCD,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,CAAC,aAAa,EACpB,MAAM,CACN,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.buildModelsToTry = buildModelsToTry;
|
|
4
|
+
function buildModelsToTry(primaryModel, fallbackModel, tenacityMaxRetries, fallbackTenacityMaxRetries) {
|
|
5
|
+
const modelsToTry = [
|
|
6
|
+
{ model: primaryModel, maxRetries: tenacityMaxRetries }
|
|
7
|
+
];
|
|
8
|
+
if (fallbackModel) {
|
|
9
|
+
modelsToTry.push({
|
|
10
|
+
model: fallbackModel,
|
|
11
|
+
maxRetries: fallbackTenacityMaxRetries !== null && fallbackTenacityMaxRetries !== void 0 ? fallbackTenacityMaxRetries : tenacityMaxRetries
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
return modelsToTry;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=modelConfig.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"modelConfig.js","sourceRoot":"","sources":["../../../../../nodes/shared/core/execution/modelConfig.ts"],"names":[],"mappings":";;AAYA,4CAkBC;AAlBD,SAAgB,gBAAgB,CAC/B,YAAoB,EACpB,aAAiC,EACjC,kBAA0B,EAC1B,0BAA8C;IAE9C,MAAM,WAAW,GAAkB;QAClC,EAAE,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,kBAAkB,EAAE;KACvD,CAAC;IAEF,IAAI,aAAa,EAAE,CAAC;QACnB,WAAW,CAAC,IAAI,CAAC;YAChB,KAAK,EAAE,aAAa;YACpB,UAAU,EAAE,0BAA0B,aAA1B,0BAA0B,cAA1B,0BAA0B,GAAI,kBAAkB;SAC5D,CAAC,CAAC;IACJ,CAAC;IAED,OAAO,WAAW,CAAC;AACpB,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parseAssistantResponse = parseAssistantResponse;
|
|
4
|
+
function parseAssistantResponse(response, structuredOutputToolResponse, responseFormat) {
|
|
5
|
+
var _a, _b;
|
|
6
|
+
try {
|
|
7
|
+
const output = JSON.parse(structuredOutputToolResponse)
|
|
8
|
+
|| (responseFormat === "plainText"
|
|
9
|
+
? (_a = response === null || response === void 0 ? void 0 : response.choices[0]) === null || _a === void 0 ? void 0 : _a.message.content
|
|
10
|
+
: JSON.parse((_b = response === null || response === void 0 ? void 0 : response.choices[0]) === null || _b === void 0 ? void 0 : _b.message.content));
|
|
11
|
+
return {
|
|
12
|
+
success: true,
|
|
13
|
+
output,
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
catch (error) {
|
|
17
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
18
|
+
return {
|
|
19
|
+
success: false,
|
|
20
|
+
error: errorMessage,
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=responseParser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"responseParser.js","sourceRoot":"","sources":["../../../../../nodes/shared/core/execution/responseParser.ts"],"names":[],"mappings":";;AAaA,wDAsBC;AAtBD,SAAgB,sBAAsB,CACrC,QAAa,EACb,4BAAiC,EACjC,cAAsB;;IAEtB,IAAI,CAAC;QACJ,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,4BAA4B,CAAC;eACnD,CAAC,cAAc,KAAK,WAAW;gBACjC,CAAC,CAAC,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,OAAO,CAAC,CAAC,CAAC,0CAAE,OAAO,CAAC,OAAO;gBACvC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,OAAO,CAAC,CAAC,CAAC,0CAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;QAEvD,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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export interface AccumulatedUsage {
|
|
2
|
+
prompt_tokens: number;
|
|
3
|
+
completion_tokens: number;
|
|
4
|
+
total_tokens: number;
|
|
5
|
+
total_requests: number;
|
|
6
|
+
retried_requests: number;
|
|
7
|
+
failed_requests: Array<{
|
|
8
|
+
model: string;
|
|
9
|
+
error: string;
|
|
10
|
+
}>;
|
|
11
|
+
[key: string]: any;
|
|
12
|
+
}
|
|
13
|
+
export declare function initializeAccumulatedUsage(): AccumulatedUsage;
|
|
14
|
+
export declare function mergeUsageData(target: AccumulatedUsage, source: any): void;
|
|
15
|
+
export declare function trackFailedRequest(usage: AccumulatedUsage, model: string, error: string): void;
|
|
16
|
+
export declare function incrementRetriedRequests(usage: AccumulatedUsage): void;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.initializeAccumulatedUsage = initializeAccumulatedUsage;
|
|
4
|
+
exports.mergeUsageData = mergeUsageData;
|
|
5
|
+
exports.trackFailedRequest = trackFailedRequest;
|
|
6
|
+
exports.incrementRetriedRequests = incrementRetriedRequests;
|
|
7
|
+
function initializeAccumulatedUsage() {
|
|
8
|
+
return {
|
|
9
|
+
prompt_tokens: 0,
|
|
10
|
+
completion_tokens: 0,
|
|
11
|
+
total_tokens: 0,
|
|
12
|
+
total_requests: 0,
|
|
13
|
+
retried_requests: 0,
|
|
14
|
+
failed_requests: [],
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
function mergeUsageData(target, source) {
|
|
18
|
+
for (const key in source) {
|
|
19
|
+
if (typeof source[key] === 'number') {
|
|
20
|
+
target[key] = (target[key] || 0) + source[key];
|
|
21
|
+
}
|
|
22
|
+
else if (typeof source[key] === 'boolean') {
|
|
23
|
+
target[key] = target[key] || source[key];
|
|
24
|
+
}
|
|
25
|
+
else if (typeof source[key] === 'object' && source[key] !== null) {
|
|
26
|
+
target[key] = target[key] || {};
|
|
27
|
+
mergeUsageData(target[key], source[key]);
|
|
28
|
+
}
|
|
29
|
+
else if (target[key] === undefined) {
|
|
30
|
+
target[key] = source[key];
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
function trackFailedRequest(usage, model, error) {
|
|
35
|
+
usage.failed_requests.push({
|
|
36
|
+
model,
|
|
37
|
+
error,
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
function incrementRetriedRequests(usage) {
|
|
41
|
+
usage.retried_requests++;
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=usageTracking.js.map
|