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.
Files changed (39) hide show
  1. package/dist/nodes/shared/api/types.d.ts +4 -0
  2. package/dist/nodes/shared/config/parameters.d.ts +2 -0
  3. package/dist/nodes/shared/config/parameters.js +4 -0
  4. package/dist/nodes/shared/config/parameters.js.map +1 -1
  5. package/dist/nodes/shared/config/properties/options.js +45 -0
  6. package/dist/nodes/shared/config/properties/options.js.map +1 -1
  7. package/dist/nodes/shared/core/execution/errors.js +7 -2
  8. package/dist/nodes/shared/core/execution/errors.js.map +1 -1
  9. package/dist/nodes/shared/core/execution/executionSetup.d.ts +12 -0
  10. package/dist/nodes/shared/core/execution/executionSetup.js +34 -0
  11. package/dist/nodes/shared/core/execution/executionSetup.js.map +1 -0
  12. package/dist/nodes/shared/core/execution/executor.d.ts +1 -1
  13. package/dist/nodes/shared/core/execution/executor.js +87 -104
  14. package/dist/nodes/shared/core/execution/executor.js.map +1 -1
  15. package/dist/nodes/shared/core/execution/messageOperation.js +1 -1
  16. package/dist/nodes/shared/core/execution/messageOperation.js.map +1 -1
  17. package/dist/nodes/shared/core/execution/modelConfig.d.ts +5 -0
  18. package/dist/nodes/shared/core/execution/modelConfig.js +16 -0
  19. package/dist/nodes/shared/core/execution/modelConfig.js.map +1 -0
  20. package/dist/nodes/shared/core/execution/responseParser.d.ts +6 -0
  21. package/dist/nodes/shared/core/execution/responseParser.js +24 -0
  22. package/dist/nodes/shared/core/execution/responseParser.js.map +1 -0
  23. package/dist/nodes/shared/core/execution/usageTracking.d.ts +16 -0
  24. package/dist/nodes/shared/core/execution/usageTracking.js +43 -0
  25. package/dist/nodes/shared/core/execution/usageTracking.js.map +1 -0
  26. package/dist/nodes/shared/core/request/body.js +3 -1
  27. package/dist/nodes/shared/core/request/body.js.map +1 -1
  28. package/dist/nodes/shared/core/request/constants.d.ts +2 -0
  29. package/dist/nodes/shared/core/request/constants.js +6 -0
  30. package/dist/nodes/shared/core/request/constants.js.map +1 -0
  31. package/dist/nodes/shared/core/request/structuredOutput.js +3 -2
  32. package/dist/nodes/shared/core/request/structuredOutput.js.map +1 -1
  33. package/dist/nodes/shared/core/tools/executor.js +44 -18
  34. package/dist/nodes/shared/core/tools/executor.js.map +1 -1
  35. package/dist/nodes/shared/core/tools/setup.js +7 -2
  36. package/dist/nodes/shared/core/tools/setup.js.map +1 -1
  37. package/dist/package.json +1 -1
  38. package/dist/tsconfig.tsbuildinfo +1 -1
  39. package/package.json +1 -1
@@ -55,6 +55,10 @@ export type AccumulatedUsage = {
55
55
  total_tokens: number;
56
56
  total_requests: number;
57
57
  retried_requests: number;
58
+ failed_requests?: Array<{
59
+ model: string;
60
+ error: string;
61
+ }>;
58
62
  cost?: number;
59
63
  is_byok?: boolean;
60
64
  prompt_tokens_details?: {
@@ -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":";;AA8BA,8CAyCC;AAzCD,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,MAAM,GAAwB;QACnC,KAAK,EAAE,GAAG,CAAS,SAAS,EAAE,EAAE,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;QACzD,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,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"}
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":"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"}
@@ -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 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;
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":"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"}
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
- async function runModel(executeFunctions, params, messages, index, modelToUse, memory) {
15
- var _a, _b, _c, _d;
16
- let responseFormat = (0, structuredOutput_1.prepareResponseFormatField)(params.responseFormat, params.outputJsonSchemaDefinition, params.structuredOutputName, params.structuredOutputDescription, params.structuredOutputProperties, params.structuredOutputIsArray, params.structuredOutputArrayName, params.structuredOutputArrayDescription);
17
- const { tools, invokableTools, tool_choice, structuredOutputTool } = await (0, setup_1.prepareTools)(executeFunctions, params.structuredOutputToolsMode, params.maxToolsIterations, responseFormat);
18
- if (params.structuredOutputToolsMode) {
19
- responseFormat = undefined;
20
- }
21
- ;
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;
28
- }
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;
31
- }
32
- }
33
- let retryState = {
34
- retriesRemaining: params.tenacityMaxRetries,
35
- attemptNumber: 1,
36
- };
37
- let messagesBeforeRetries = messages.length;
38
- let currentIteration = 1;
39
- let totalAccumulatedUsage = {
40
- prompt_tokens: 0,
41
- completion_tokens: 0,
42
- total_tokens: 0,
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
- else if (typeof source[key] === 'boolean') {
55
- target[key] = target[key] || source[key];
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 if (typeof source[key] === 'object' && source[key] !== null) {
58
- target[key] = target[key] || {};
59
- mergeUsage(target[key], source[key]);
57
+ else {
58
+ output = parseResult.output;
60
59
  }
61
- else if (target[key] === undefined) {
62
- target[key] = source[key];
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
- mergeUsage(totalAccumulatedUsage, accumulatedUsage);
67
- currentIteration = finalIteration;
68
- body = finalBody;
69
- if (retryState.attemptNumber === 1) {
70
- messagesBeforeRetries = messages.length;
71
- }
72
- let output;
73
- let parseError = null;
74
- try {
75
- output = JSON.parse(structuredOutputToolResponse)
76
- || (params.responseFormat === "plainText"
77
- ? (_c = response === null || response === void 0 ? void 0 : response.choices[0]) === null || _c === void 0 ? void 0 : _c.message.content
78
- : JSON.parse((_d = response === null || response === void 0 ? void 0 : response.choices[0]) === null || _d === void 0 ? void 0 : _d.message.content));
79
- }
80
- catch (error) {
81
- const simpleErrorMessage = error instanceof Error ? error.message : String(error);
82
- if (shouldValidate && retryState.retriesRemaining > 0) {
83
- parseError = simpleErrorMessage;
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
- else {
112
- const errorData = (0, errors_1.buildValidationError)(params.tenacityMaxRetries, validationError, output, body, response, totalAccumulatedUsage);
113
- throw new n8n_workflow_1.NodeOperationError(executeFunctions.getNode(), errorData.message, {
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
- const outputData = await (0, outputData_1.prepareOutputData)(response, output, messages, messagesBeforeRetries, params.addToOutput, executeFunctions, index, body, totalAccumulatedUsage);
121
- if (memory) {
122
- await (0, io_1.saveToMemory)(messages, output, params.saveToolCallsInChatMemory, memory);
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":"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"}
1
+ {"version":3,"file":"executor.js","sourceRoot":"","sources":["../../../../../nodes/shared/core/execution/executor.ts"],"names":[],"mappings":";;AAmBA,4BAmPC;AArQD,+CAAkD;AAGlD,0CAAqD;AACrD,gDAAqD;AACrD,6CAAiD;AACjD,qCAA4C;AAC5C,sDAAiE;AACjE,qCAAyE;AACzE,iDAA6H;AAC7H,mDAA2H;AAC3H,+CAAiD;AACjD,qDAA0D;AAC1D,qDAA2D;AAKpD,KAAK,UAAU,QAAQ,CAC7B,gBAAmC,EACnC,MAA2B,EAC3B,QAAuB,EACvB,KAAa,EACb,UAAkB,EAClB,kBAA2B,EAC3B,MAA2B;IAG3B,MAAM,OAAO,GAAG,MAAM,IAAA,wCAAuB,EAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;IACxE,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC;IAG/H,MAAM,WAAW,GAAG,IAAA,8BAAgB,EACnC,UAAU,EACV,kBAAkB,EAClB,MAAM,CAAC,kBAAkB,EACzB,MAAM,CAAC,0BAA0B,CACjC,CAAC;IAGF,MAAM,qBAAqB,GAAG,IAAA,0CAA0B,GAAE,CAAC;IAE3D,IAAI,SAAS,GAAQ,IAAI,CAAC;IAG1B,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;YAEJ,MAAM,oBAAoB,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC;YAG3C,IAAI,UAAU,GAAe;gBAC5B,gBAAgB,EAAE,UAAU;gBAC5B,aAAa,EAAE,CAAC;aAChB,CAAC;YAGF,IAAI,qBAAqB,GAAG,oBAAoB,CAAC,MAAM,CAAC;YAGxD,IAAI,gBAAgB,GAAG,CAAC,CAAC;YAGzB,OAAO,IAAI,EAAE,CAAC;gBAEb,IAAI,IAAI,GAAG,IAAA,yBAAkB,EAC5B,YAAY,EACZ,oBAAoB,EACpB,KAAK,EACL,WAAW,EACX,cAAc,EACd,MAAM,CAAC,OAAO,EACd,MAAM,CAAC,gBAAgB,CACvB,CAAC;gBAGF,MAAM,EAAE,QAAQ,EAAE,4BAA4B,EAAE,cAAc,EAAE,SAAS,EAAE,gBAAgB,EAAE,GAAG,MAAM,IAAA,2BAAgB,EACrH,gBAAgB,EAChB,IAAI,EACJ,oBAAoB,EACpB,cAAc,EACd,MAAM,CAAC,kBAAkB,EACzB,oBAAoB,EACpB,MAAM,CAAC,WAAW,EAClB,gBAAgB,CAChB,CAAC;gBAGF,IAAA,8BAAc,EAAC,qBAAqB,EAAE,gBAAgB,CAAC,CAAC;gBAGxD,gBAAgB,GAAG,cAAc,CAAC;gBAGlC,IAAI,GAAG,SAAS,CAAC;gBAIjB,IAAI,UAAU,CAAC,aAAa,KAAK,CAAC,EAAE,CAAC;oBACpC,qBAAqB,GAAG,oBAAoB,CAAC,MAAM,CAAC;gBACrD,CAAC;gBAGD,MAAM,WAAW,GAAG,IAAA,uCAAsB,EACzC,QAAQ,EACR,4BAA4B,EAC5B,MAAM,CAAC,cAAc,CACrB,CAAC;gBAEF,IAAI,MAAM,CAAC;gBACX,IAAI,UAAU,GAAkB,IAAI,CAAC;gBAErC,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;oBAE1B,IAAI,cAAc,IAAI,UAAU,CAAC,gBAAgB,GAAG,CAAC,EAAE,CAAC;wBACvD,UAAU,GAAG,WAAW,CAAC,KAAM,CAAC;oBACjC,CAAC;yBAAM,CAAC;wBAEP,MAAM,SAAS,GAAG,IAAA,gCAAuB,EACxC,WAAW,CAAC,KAAM,EAClB,QAAQ,EACR,4BAA4B,EAC5B,IAAI,EACJ,qBAAqB,CACrB,CAAC;wBACF,MAAM,IAAI,iCAAkB,CAC3B,gBAAgB,CAAC,OAAO,EAAE,EAC1B,SAAS,CAAC,OAAO,EACjB;4BACC,WAAW,EAAE,SAAS,CAAC,WAAW;4BAClC,SAAS,EAAE,KAAK;yBAChB,CACD,CAAC;oBACH,CAAC;gBACF,CAAC;qBAAM,CAAC;oBACP,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC;gBAC7B,CAAC;gBAGD,IAAI,UAAU,EAAE,CAAC;oBAChB,MAAM,WAAW,GAAG,MAAM,IAAA,+BAAgB,EACzC,UAAU,EACV,QAAQ,EACR,oBAAoB,EACpB,UAAU,EACV,MAAM,CAAC,yBAAyB,EAChC,oBAAoB,EACpB,MAAM,CAAC,oBAAoB,EAC3B,KAAK,EACL,gBAAgB,CAChB,CAAC;oBAEF,IAAI,WAAW,EAAE,CAAC;wBAEjB,MAAM,KAAK,GAAI,IAAI,CAAC,KAAgB,IAAI,SAAS,CAAC;wBAClD,IAAA,kCAAkB,EAAC,qBAAqB,EAAE,KAAK,EAAE,qBAAqB,UAAU,EAAE,CAAC,CAAC;wBAEpF,UAAU,GAAG,IAAA,+BAAgB,EAAC,UAAU,CAAC,CAAC;wBAC1C,IAAA,wCAAwB,EAAC,qBAAqB,CAAC,CAAC;wBAChD,SAAS;oBACV,CAAC;gBACF,CAAC;gBAGD,IAAI,cAAc,EAAE,CAAC;oBACpB,MAAM,gBAAgB,GAAG,IAAA,qCAAwB,EAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;oBAE5E,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC;wBAE/B,MAAM,eAAe,GAAG,gBAAgB,CAAC,KAAK,IAAI,0BAA0B,CAAC;wBAE7E,MAAM,WAAW,GAAG,MAAM,IAAA,oCAAqB,EAC9C,eAAe,EACf,MAAM,EACN,QAAQ,EACR,oBAAoB,EACpB,UAAU,EACV,MAAM,CAAC,yBAAyB,EAChC,oBAAoB,EACpB,MAAM,CAAC,oBAAoB,CAC3B,CAAC;wBAEF,IAAI,WAAW,EAAE,CAAC;4BAEjB,MAAM,KAAK,GAAI,IAAI,CAAC,KAAgB,IAAI,SAAS,CAAC;4BAClD,IAAA,kCAAkB,EAAC,qBAAqB,EAAE,KAAK,EAAE,qBAAqB,eAAe,EAAE,CAAC,CAAC;4BAEzF,UAAU,GAAG,IAAA,+BAAgB,EAAC,UAAU,CAAC,CAAC;4BAC1C,IAAA,wCAAwB,EAAC,qBAAqB,CAAC,CAAC;4BAChD,SAAS;wBACV,CAAC;6BAAM,CAAC;4BAEP,MAAM,SAAS,GAAG,IAAA,6BAAoB,EACrC,UAAU,EACV,eAAe,EACf,MAAM,EACN,IAAI,EACJ,QAAQ,EACR,qBAAqB,CACrB,CAAC;4BACF,MAAM,IAAI,iCAAkB,CAC3B,gBAAgB,CAAC,OAAO,EAAE,EAC1B,SAAS,CAAC,OAAO,EACjB;gCACC,WAAW,EAAE,SAAS,CAAC,WAAW;gCAClC,SAAS,EAAE,KAAK;6BAChB,CACD,CAAC;wBACH,CAAC;oBACF,CAAC;gBACF,CAAC;gBAID,MAAM,UAAU,GAAG,MAAM,IAAA,8BAAiB,EACzC,QAAQ,EACR,MAAM,EACN,oBAAoB,EACpB,qBAAqB,EACrB,MAAM,CAAC,WAAW,EAClB,gBAAgB,EAChB,KAAK,EACL,IAAI,EACJ,qBAAqB,CACrB,CAAC;gBAGF,IAAI,MAAM,EAAE,CAAC;oBACZ,MAAM,IAAA,iBAAY,EACjB,oBAAoB,EACpB,MAAM,EACN,MAAM,CAAC,yBAAyB,EAChC,MAAM,CACN,CAAC;gBACH,CAAC;gBAED,OAAO,UAAU,CAAC;YACnB,CAAC;QACF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAEhB,SAAS,GAAG,KAAK,CAAC;YAGlB,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC5E,IAAA,kCAAkB,EAAC,qBAAqB,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC;YAGtE,IAAI,WAAW,EAAE,CAAC;gBACjB,MAAM,KAAK,CAAC;YACb,CAAC;YAGD,MAAM,IAAA,8BAAe,GAAE,CAAC;QACzB,CAAC;IACF,CAAC;IAGD,MAAM,SAAS,IAAI,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;AACnD,CAAC"}
@@ -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,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
+ {"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,5 @@
1
+ export interface ModelConfig {
2
+ model: string;
3
+ maxRetries: number;
4
+ }
5
+ export declare function buildModelsToTry(primaryModel: string, fallbackModel: string | undefined, tenacityMaxRetries: number, fallbackTenacityMaxRetries: number | undefined): ModelConfig[];
@@ -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,6 @@
1
+ export interface ParseResult {
2
+ success: boolean;
3
+ output?: any;
4
+ error?: string;
5
+ }
6
+ export declare function parseAssistantResponse(response: any, structuredOutputToolResponse: any, responseFormat: string): ParseResult;
@@ -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