n8n-nodes-simple 2.0.1 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (196) hide show
  1. package/dist/credentials/SimpleOpenAiApi.credentials.js +1 -1
  2. package/dist/credentials/SimpleOpenAiApi.credentials.js.map +1 -1
  3. package/dist/nodes/CoreAgent/CoreAgent.node.d.ts +3 -2
  4. package/dist/nodes/CoreAgent/CoreAgent.node.js +3 -3
  5. package/dist/nodes/CoreAgent/CoreAgent.node.js.map +1 -1
  6. package/dist/nodes/CoreAgent/description.js +15 -3
  7. package/dist/nodes/CoreAgent/description.js.map +1 -1
  8. package/dist/nodes/Subagent/Subagent.node.d.ts +3 -2
  9. package/dist/nodes/Subagent/Subagent.node.js +5 -5
  10. package/dist/nodes/Subagent/Subagent.node.js.map +1 -1
  11. package/dist/nodes/Subagent/description.js +16 -3
  12. package/dist/nodes/Subagent/description.js.map +1 -1
  13. package/dist/nodes/shared/actions/executor.js +1 -1
  14. package/dist/nodes/shared/actions/executor.js.map +1 -1
  15. package/dist/nodes/shared/actions/memory.d.ts +1 -1
  16. package/dist/nodes/shared/actions/memory.js +71 -19
  17. package/dist/nodes/shared/actions/memory.js.map +1 -1
  18. package/dist/nodes/shared/actions/message.operation.js +1 -1
  19. package/dist/nodes/shared/actions/message.operation.js.map +1 -1
  20. package/dist/nodes/shared/actions/messageProcessor.d.ts +1 -1
  21. package/dist/nodes/shared/actions/messageProcessor.js +9 -7
  22. package/dist/nodes/shared/actions/messageProcessor.js.map +1 -1
  23. package/dist/nodes/shared/actions/outputProcessor.js +29 -21
  24. package/dist/nodes/shared/actions/outputProcessor.js.map +1 -1
  25. package/dist/nodes/shared/actions/parameters.d.ts +2 -0
  26. package/dist/nodes/shared/actions/parameters.js +8 -1
  27. package/dist/nodes/shared/actions/parameters.js.map +1 -1
  28. package/dist/nodes/shared/actions/requestBuilder.js +2 -2
  29. package/dist/nodes/shared/actions/requestBuilder.js.map +1 -1
  30. package/dist/nodes/shared/actions/responseConfig.js +2 -2
  31. package/dist/nodes/shared/actions/responseConfig.js.map +1 -1
  32. package/dist/nodes/shared/actions/router.js +2 -2
  33. package/dist/nodes/shared/actions/router.js.map +1 -1
  34. package/dist/nodes/shared/actions/tool.js.map +1 -1
  35. package/dist/nodes/shared/actions/toolExecutor.js +78 -21
  36. package/dist/nodes/shared/actions/toolExecutor.js.map +1 -1
  37. package/dist/nodes/shared/actions/toolSetup.js +6 -5
  38. package/dist/nodes/shared/actions/toolSetup.js.map +1 -1
  39. package/dist/nodes/shared/api/openAiApiRequest.js.map +1 -1
  40. package/dist/nodes/shared/api/types.d.ts +2 -0
  41. package/dist/nodes/shared/api/utils.js.map +1 -1
  42. package/dist/nodes/shared/assets/gradientRobot.svg +11 -0
  43. package/dist/nodes/shared/assets/gradientRobotRed.svg +11 -0
  44. package/dist/nodes/shared/config/descriptionGenerator.d.ts +2 -0
  45. package/dist/nodes/shared/config/descriptionGenerator.js +36 -0
  46. package/dist/nodes/shared/config/descriptionGenerator.js.map +1 -0
  47. package/dist/nodes/shared/config/parameters.d.ts +26 -0
  48. package/dist/nodes/shared/config/parameters.js +35 -0
  49. package/dist/nodes/shared/config/parameters.js.map +1 -0
  50. package/dist/nodes/shared/config/properties/index.d.ts +2 -0
  51. package/dist/nodes/shared/config/properties/index.js +16 -0
  52. package/dist/nodes/shared/config/properties/index.js.map +1 -0
  53. package/dist/nodes/shared/config/properties/memory.d.ts +2 -0
  54. package/dist/nodes/shared/config/properties/memory.js +5 -0
  55. package/dist/nodes/shared/config/properties/memory.js.map +1 -0
  56. package/dist/nodes/shared/config/properties/messages.d.ts +2 -0
  57. package/dist/nodes/shared/config/properties/messages.js +109 -0
  58. package/dist/nodes/shared/config/properties/messages.js.map +1 -0
  59. package/dist/nodes/shared/config/properties/model.d.ts +2 -0
  60. package/dist/nodes/shared/config/properties/model.js +30 -0
  61. package/dist/nodes/shared/config/properties/model.js.map +1 -0
  62. package/dist/nodes/shared/config/properties/options.d.ts +2 -0
  63. package/dist/nodes/shared/config/properties/options.js +105 -0
  64. package/dist/nodes/shared/config/properties/options.js.map +1 -0
  65. package/dist/nodes/shared/config/properties/output.d.ts +2 -0
  66. package/dist/nodes/shared/config/properties/output.js +322 -0
  67. package/dist/nodes/shared/config/properties/output.js.map +1 -0
  68. package/dist/nodes/shared/config/properties/tools.d.ts +2 -0
  69. package/dist/nodes/shared/config/properties/tools.js +5 -0
  70. package/dist/nodes/shared/config/properties/tools.js.map +1 -0
  71. package/dist/nodes/shared/config/responseConfig.d.ts +3 -0
  72. package/dist/nodes/shared/config/responseConfig.js +26 -0
  73. package/dist/nodes/shared/config/responseConfig.js.map +1 -0
  74. package/dist/nodes/shared/core/execution/executor.d.ts +7 -0
  75. package/dist/nodes/shared/core/execution/executor.js +61 -0
  76. package/dist/nodes/shared/core/execution/executor.js.map +1 -0
  77. package/dist/nodes/shared/core/execution/messageOperation.d.ts +2 -0
  78. package/dist/nodes/shared/core/execution/messageOperation.js +14 -0
  79. package/dist/nodes/shared/core/execution/messageOperation.js.map +1 -0
  80. package/dist/nodes/shared/core/execution/router.d.ts +2 -0
  81. package/dist/nodes/shared/core/execution/router.js +117 -0
  82. package/dist/nodes/shared/core/execution/router.js.map +1 -0
  83. package/dist/nodes/shared/core/memory/index.d.ts +2 -0
  84. package/dist/nodes/shared/core/memory/index.js +19 -0
  85. package/dist/nodes/shared/core/memory/index.js.map +1 -0
  86. package/dist/nodes/shared/core/memory/io.d.ts +5 -0
  87. package/dist/nodes/shared/core/memory/io.js +93 -0
  88. package/dist/nodes/shared/core/memory/io.js.map +1 -0
  89. package/dist/nodes/shared/core/memory/optimizer.d.ts +3 -0
  90. package/dist/nodes/shared/core/memory/optimizer.js +30 -0
  91. package/dist/nodes/shared/core/memory/optimizer.js.map +1 -0
  92. package/dist/nodes/shared/core/memory/properties.d.ts +2 -0
  93. package/dist/nodes/shared/core/memory/properties.js +5 -0
  94. package/dist/nodes/shared/core/memory/properties.js.map +1 -0
  95. package/dist/nodes/shared/core/messages/chatHistory.d.ts +2 -0
  96. package/dist/nodes/shared/core/messages/chatHistory.js +63 -0
  97. package/dist/nodes/shared/core/messages/chatHistory.js.map +1 -0
  98. package/dist/nodes/shared/core/messages/converter.d.ts +4 -0
  99. package/dist/nodes/shared/core/messages/converter.js +76 -0
  100. package/dist/nodes/shared/core/messages/converter.js.map +1 -0
  101. package/dist/nodes/shared/core/messages/memoryOptimizer.d.ts +3 -0
  102. package/dist/nodes/shared/core/messages/memoryOptimizer.js +30 -0
  103. package/dist/nodes/shared/core/messages/memoryOptimizer.js.map +1 -0
  104. package/dist/nodes/shared/core/messages/processor.d.ts +4 -0
  105. package/dist/nodes/shared/core/messages/processor.js +23 -0
  106. package/dist/nodes/shared/core/messages/processor.js.map +1 -0
  107. package/dist/nodes/shared/core/messages/toolExtractor.d.ts +6 -0
  108. package/dist/nodes/shared/core/messages/toolExtractor.js +28 -0
  109. package/dist/nodes/shared/core/messages/toolExtractor.js.map +1 -0
  110. package/dist/nodes/shared/core/messages/types.d.ts +48 -0
  111. package/dist/nodes/shared/core/messages/types.js +12 -0
  112. package/dist/nodes/shared/core/messages/types.js.map +1 -0
  113. package/dist/nodes/shared/core/tools/connector.d.ts +3 -0
  114. package/dist/nodes/shared/core/tools/connector.js +37 -0
  115. package/dist/nodes/shared/core/tools/connector.js.map +1 -0
  116. package/dist/nodes/shared/core/tools/executor.d.ts +6 -0
  117. package/dist/nodes/shared/core/tools/executor.js +124 -0
  118. package/dist/nodes/shared/core/tools/executor.js.map +1 -0
  119. package/dist/nodes/shared/core/tools/manager.d.ts +2 -0
  120. package/dist/nodes/shared/core/tools/manager.js +51 -0
  121. package/dist/nodes/shared/core/tools/manager.js.map +1 -0
  122. package/dist/nodes/shared/core/tools/messageExtractor.d.ts +6 -0
  123. package/dist/nodes/shared/core/tools/messageExtractor.js +28 -0
  124. package/dist/nodes/shared/core/tools/messageExtractor.js.map +1 -0
  125. package/dist/nodes/shared/core/tools/n8nTool.d.ts +9 -0
  126. package/dist/nodes/shared/core/tools/n8nTool.js +91 -0
  127. package/dist/nodes/shared/core/tools/n8nTool.js.map +1 -0
  128. package/dist/nodes/shared/core/tools/schemaGenerator.d.ts +6 -0
  129. package/dist/nodes/shared/core/tools/schemaGenerator.js +23 -0
  130. package/dist/nodes/shared/core/tools/schemaGenerator.js.map +1 -0
  131. package/dist/nodes/shared/core/tools/setup.d.ts +8 -0
  132. package/dist/nodes/shared/core/tools/setup.js +59 -0
  133. package/dist/nodes/shared/core/tools/setup.js.map +1 -0
  134. package/dist/nodes/shared/core/tools/subagentTool.d.ts +11 -0
  135. package/dist/nodes/shared/core/tools/subagentTool.js +60 -0
  136. package/dist/nodes/shared/core/tools/subagentTool.js.map +1 -0
  137. package/dist/nodes/shared/descriptionGenerator.js +3 -7
  138. package/dist/nodes/shared/descriptionGenerator.js.map +1 -1
  139. package/dist/nodes/shared/message/chatHistoryProcessor.d.ts +2 -0
  140. package/dist/nodes/shared/message/chatHistoryProcessor.js +63 -0
  141. package/dist/nodes/shared/message/chatHistoryProcessor.js.map +1 -0
  142. package/dist/nodes/shared/message/memoryOptimizer.d.ts +3 -0
  143. package/dist/nodes/shared/message/memoryOptimizer.js +30 -0
  144. package/dist/nodes/shared/message/memoryOptimizer.js.map +1 -0
  145. package/dist/nodes/shared/message/messageConverter.d.ts +4 -0
  146. package/dist/nodes/shared/message/messageConverter.js +76 -0
  147. package/dist/nodes/shared/message/messageConverter.js.map +1 -0
  148. package/dist/nodes/shared/message/processor.d.ts +3 -7
  149. package/dist/nodes/shared/message/processor.js +8 -83
  150. package/dist/nodes/shared/message/processor.js.map +1 -1
  151. package/dist/nodes/shared/message/toolMessageExtractor.d.ts +6 -0
  152. package/dist/nodes/shared/message/toolMessageExtractor.js +28 -0
  153. package/dist/nodes/shared/message/toolMessageExtractor.js.map +1 -0
  154. package/dist/nodes/shared/message/types.d.ts +2 -0
  155. package/dist/nodes/shared/message/types.js +5 -5
  156. package/dist/nodes/shared/message/types.js.map +1 -1
  157. package/dist/nodes/shared/methods/index.d.ts +1 -1
  158. package/dist/nodes/shared/methods/index.js +1 -1
  159. package/dist/nodes/shared/methods/index.js.map +1 -1
  160. package/dist/nodes/shared/methods/listSearch.d.ts +3 -0
  161. package/dist/nodes/shared/methods/listSearch.js +4 -0
  162. package/dist/nodes/shared/methods/listSearch.js.map +1 -1
  163. package/dist/nodes/shared/processing/memory.d.ts +5 -0
  164. package/dist/nodes/shared/processing/memory.js +93 -0
  165. package/dist/nodes/shared/processing/memory.js.map +1 -0
  166. package/dist/nodes/shared/processing/outputProcessor.d.ts +5 -0
  167. package/dist/nodes/shared/processing/outputProcessor.js +112 -0
  168. package/dist/nodes/shared/processing/outputProcessor.js.map +1 -0
  169. package/dist/nodes/shared/processing/requestBuilder.d.ts +2 -0
  170. package/dist/nodes/shared/processing/requestBuilder.js +38 -0
  171. package/dist/nodes/shared/processing/requestBuilder.js.map +1 -0
  172. package/dist/nodes/shared/processing/visualEditor.d.ts +32 -0
  173. package/dist/nodes/shared/processing/visualEditor.js +70 -0
  174. package/dist/nodes/shared/processing/visualEditor.js.map +1 -0
  175. package/dist/nodes/shared/properties.js +75 -41
  176. package/dist/nodes/shared/properties.js.map +1 -1
  177. package/dist/nodes/shared/tool/subagentTool.d.ts +1 -1
  178. package/dist/nodes/shared/tool/subagentTool.js +4 -4
  179. package/dist/nodes/shared/tool/subagentTool.js.map +1 -1
  180. package/dist/nodes/shared/tool/visualEditor.d.ts +1 -1
  181. package/dist/nodes/shared/tool/visualEditor.js +20 -16
  182. package/dist/nodes/shared/tool/visualEditor.js.map +1 -1
  183. package/dist/nodes/shared/toolManager/getConnectedTools.js.map +1 -1
  184. package/dist/nodes/shared/toolManager/n8nTool.js.map +1 -1
  185. package/dist/nodes/shared/utils/descriptionGenerator.d.ts +2 -0
  186. package/dist/nodes/shared/utils/descriptionGenerator.js +36 -0
  187. package/dist/nodes/shared/utils/descriptionGenerator.js.map +1 -0
  188. package/dist/nodes/shared/utils/index.d.ts +1 -0
  189. package/dist/nodes/shared/utils/index.js +18 -0
  190. package/dist/nodes/shared/utils/index.js.map +1 -0
  191. package/dist/nodes/shared/utils/listSearch.d.ts +2 -0
  192. package/dist/nodes/shared/utils/listSearch.js +34 -0
  193. package/dist/nodes/shared/utils/listSearch.js.map +1 -0
  194. package/dist/package.json +1 -1
  195. package/dist/tsconfig.tsbuildinfo +1 -1
  196. package/package.json +1 -1
@@ -0,0 +1,7 @@
1
+ import type { IExecuteFunctions, INodeExecutionData, IDataObject } from 'n8n-workflow';
2
+ import type { BaseChatMemory } from 'langchain/memory';
3
+ import type { ChatCompletion } from '../../api/types';
4
+ import { ExtractedParameters } from '../../config/parameters';
5
+ export declare function hasEmptyContent(response: ChatCompletion): boolean;
6
+ export declare function executeWithFallback(executeFunctions: IExecuteFunctions, params: ExtractedParameters, memory: BaseChatMemory | undefined, messages: IDataObject[], index: number, parentMessageContentStr: string, parentMessageContentObj: object): Promise<INodeExecutionData[]>;
7
+ export declare function executeSingleModel(executeFunctions: IExecuteFunctions, params: ExtractedParameters, memory: BaseChatMemory | undefined, messages: IDataObject[], index: number, parentMessageContentStr: string, parentMessageContentObj: object, modelToUse: string): Promise<INodeExecutionData[]>;
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.hasEmptyContent = hasEmptyContent;
4
+ exports.executeWithFallback = executeWithFallback;
5
+ exports.executeSingleModel = executeSingleModel;
6
+ const responseConfig_1 = require("../../config/responseConfig");
7
+ const setup_1 = require("../tools/setup");
8
+ const requestBuilder_1 = require("../../processing/requestBuilder");
9
+ const executor_1 = require("../tools/executor");
10
+ const outputProcessor_1 = require("../../processing/outputProcessor");
11
+ const io_1 = require("../memory/io");
12
+ function hasEmptyContent(response) {
13
+ var _a, _b, _c;
14
+ const content = (_c = (_b = (_a = response === null || response === void 0 ? void 0 : response.choices) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.message) === null || _c === void 0 ? void 0 : _c.content;
15
+ return !content || content.trim() === '' || content === 'null' || content === 'undefined';
16
+ }
17
+ async function executeWithFallback(executeFunctions, params, memory, messages, index, parentMessageContentStr, parentMessageContentObj) {
18
+ const shouldUseFallback = params.fallbackModel &&
19
+ params.fallbackModel.trim() !== '' &&
20
+ params.fallbackModel !== params.model;
21
+ try {
22
+ const result = await executeSingleModel(executeFunctions, params, memory, messages, index, parentMessageContentStr, parentMessageContentObj, params.model);
23
+ if (shouldUseFallback && result.length > 0 && result[0].json.response) {
24
+ const response = result[0].json.response;
25
+ if (hasEmptyContent(response)) {
26
+ console.log(`Primary model ${params.model} returned empty content, trying fallback model ${params.fallbackModel}`);
27
+ return await executeSingleModel(executeFunctions, params, memory, messages, index, parentMessageContentStr, parentMessageContentObj, params.fallbackModel);
28
+ }
29
+ }
30
+ return result;
31
+ }
32
+ catch (error) {
33
+ if (shouldUseFallback) {
34
+ console.log(`Primary model ${params.model} failed with error, trying fallback model ${params.fallbackModel}:`, error);
35
+ try {
36
+ return await executeSingleModel(executeFunctions, params, memory, messages, index, parentMessageContentStr, parentMessageContentObj, params.fallbackModel);
37
+ }
38
+ catch (fallbackError) {
39
+ console.error(`Fallback model ${params.fallbackModel} also failed:`, fallbackError);
40
+ throw fallbackError;
41
+ }
42
+ }
43
+ throw error;
44
+ }
45
+ }
46
+ async function executeSingleModel(executeFunctions, params, memory, messages, index, parentMessageContentStr, parentMessageContentObj, modelToUse) {
47
+ var _a, _b;
48
+ let response_format = (0, responseConfig_1.configureResponseFormat)(params.responseFormat, params.outputJsonSchemaDefinition, params.structuredOutputName, params.structuredOutputDescription, params.structuredOutputProperties, params.structuredOutputIsArray, params.structuredOutputArrayName, params.structuredOutputArrayDescription);
49
+ const { tools, invokableTools, tool_choice, structuredOutputTool, updatedResponseFormat } = await (0, setup_1.setupTools)(executeFunctions, params.structuredOutputToolsMode, response_format);
50
+ response_format = updatedResponseFormat;
51
+ const body = (0, requestBuilder_1.prepareRequestBody)(modelToUse, messages, tools, tool_choice, response_format, params.options, params.customParameters);
52
+ const originalMessagesLength = messages.length;
53
+ const { response, output } = await (0, executor_1.processToolCalls)(executeFunctions, body, messages, invokableTools, structuredOutputTool, params.maxToolsIterations, params.abortSignal);
54
+ const outputData = await (0, outputProcessor_1.prepareOutputData)(response, output, messages, originalMessagesLength, params.addToOutput, params.agentType, executeFunctions, index, body, modelToUse, parentMessageContentStr);
55
+ if (memory && ((_b = (_a = response === null || response === void 0 ? void 0 : response.choices) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.message)) {
56
+ const outputStringified = typeof output === 'string' ? output : JSON.stringify(output);
57
+ await (0, io_1.saveToMemory)(memory, messages, response, outputStringified, params.saveToolCallsInChatMemory, originalMessagesLength);
58
+ }
59
+ return outputData;
60
+ }
61
+ //# sourceMappingURL=executor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executor.js","sourceRoot":"","sources":["../../../../../nodes/shared/core/execution/executor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import type { IExecuteFunctions, INodeExecutionData } from 'n8n-workflow';
2
+ export declare function execute(this: IExecuteFunctions, i: number, parentMessageContentStr?: string, parentMessageContentObj?: object): Promise<INodeExecutionData[]>;
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.execute = execute;
4
+ const parameters_1 = require("../../config/parameters");
5
+ const io_1 = require("../memory/io");
6
+ const processor_1 = require("../messages/processor");
7
+ const executor_1 = require("./executor");
8
+ async function execute(i, parentMessageContentStr = '', parentMessageContentObj = {}) {
9
+ const params = (0, parameters_1.extractParameters)(this, i);
10
+ const memory = await (0, io_1.getMemoryFromInput)(this);
11
+ const messages = await (0, processor_1.processMessages)(params.rawMessagesToSend, memory, parentMessageContentStr, parentMessageContentObj, params.loadToolCallsFromChatMemory);
12
+ return await (0, executor_1.executeWithFallback)(this, params, memory, messages, i, parentMessageContentStr, parentMessageContentObj);
13
+ }
14
+ //# sourceMappingURL=messageOperation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messageOperation.js","sourceRoot":"","sources":["../../../../../nodes/shared/core/execution/messageOperation.ts"],"names":[],"mappings":";;AAUA,0BA+BC;AAvCD,wDAA4D;AAC5D,qCAAkD;AAClD,qDAAwD;AACxD,yCAAiD;AAK1C,KAAK,UAAU,OAAO,CAE5B,CAAS,EACT,0BAAkC,EAAE,EACpC,0BAAkC,EAAE;IAGpC,MAAM,MAAM,GAAG,IAAA,8BAAiB,EAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAG1C,MAAM,MAAM,GAAG,MAAM,IAAA,uBAAkB,EAAC,IAAI,CAAC,CAAC;IAG9C,MAAM,QAAQ,GAAG,MAAM,IAAA,2BAAe,EACrC,MAAM,CAAC,iBAAiB,EACxB,MAAM,EACN,uBAAuB,EACvB,uBAAuB,EACvB,MAAM,CAAC,2BAA2B,CAClC,CAAC;IAGF,OAAO,MAAM,IAAA,8BAAmB,EAC/B,IAAI,EACJ,MAAM,EACN,MAAM,EACN,QAAQ,EACR,CAAC,EACD,uBAAuB,EACvB,uBAAuB,CACvB,CAAC;AACH,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { type IExecuteFunctions, type INodeExecutionData } from 'n8n-workflow';
2
+ export declare function router(this: IExecuteFunctions, parentMessageContentStr?: string, parentMessageContentObj?: Record<string, any>): Promise<INodeExecutionData[][]>;
@@ -0,0 +1,117 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.router = router;
37
+ const n8n_workflow_1 = require("n8n-workflow");
38
+ const messageOperation = __importStar(require("./messageOperation"));
39
+ const errorHandling_1 = require("../../api/errorHandling");
40
+ function isNodeApiError(error) {
41
+ return error instanceof n8n_workflow_1.NodeApiError || error.name === 'NodeApiError';
42
+ }
43
+ function normalizeError(error) {
44
+ if (error instanceof Error) {
45
+ return error;
46
+ }
47
+ return new Error(String(error));
48
+ }
49
+ function initializeRouter(executeFunctions) {
50
+ return {
51
+ returnData: [],
52
+ items: executeFunctions.getInputData(),
53
+ execute: messageOperation.execute,
54
+ };
55
+ }
56
+ async function executeItem(execute, executeFunctions, itemIndex, parentMessageContentStr = '', parentMessageContentObj = {}) {
57
+ return await execute.call(executeFunctions, itemIndex, parentMessageContentStr, parentMessageContentObj);
58
+ }
59
+ function handleNodeApiError(error, itemIndex) {
60
+ var _a, _b, _c;
61
+ const errorCode = (_c = (_b = (_a = error.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;
62
+ if (errorCode) {
63
+ const customErrorMessage = (0, errorHandling_1.getCustomErrorMessage)(errorCode);
64
+ if (customErrorMessage) {
65
+ error.message = customErrorMessage;
66
+ }
67
+ }
68
+ error.context = {
69
+ itemIndex,
70
+ };
71
+ console.error(`NodeApiError at item ${itemIndex}: ${error.message}`);
72
+ throw error;
73
+ }
74
+ function handleGenericError(error, executeFunctions, itemIndex) {
75
+ console.error(`Generic error at item ${itemIndex}: ${error.message}`);
76
+ throw new n8n_workflow_1.NodeOperationError(executeFunctions.getNode(), error, {
77
+ itemIndex,
78
+ description: error.description,
79
+ });
80
+ }
81
+ function handleError(error, executeFunctions, itemIndex, continueOnFail, returnData) {
82
+ const normalizedError = normalizeError(error);
83
+ if (continueOnFail) {
84
+ returnData.push({
85
+ json: { error: normalizedError.message },
86
+ pairedItem: { item: itemIndex },
87
+ });
88
+ return returnData;
89
+ }
90
+ if (isNodeApiError(normalizedError)) {
91
+ return handleNodeApiError(normalizedError, itemIndex);
92
+ }
93
+ return handleGenericError(normalizedError, executeFunctions, itemIndex);
94
+ }
95
+ async function processItems(config, executeFunctions, parentMessageContentStr = '', parentMessageContentObj = {}) {
96
+ const { returnData, items, execute } = config;
97
+ for (let i = 0; i < items.length; i++) {
98
+ try {
99
+ const responseData = await executeItem(execute, executeFunctions, i, parentMessageContentStr, parentMessageContentObj);
100
+ returnData.push(...responseData);
101
+ }
102
+ catch (error) {
103
+ const result = handleError(error, executeFunctions, i, executeFunctions.continueOnFail(), returnData);
104
+ if (result) {
105
+ console.log(`Continuing after error in item ${i} (0-indexed, out of ${items.length} items)`);
106
+ continue;
107
+ }
108
+ }
109
+ }
110
+ return returnData;
111
+ }
112
+ async function router(parentMessageContentStr = '', parentMessageContentObj = {}) {
113
+ const config = initializeRouter(this);
114
+ const processedData = await processItems(config, this, parentMessageContentStr, parentMessageContentObj);
115
+ return [processedData];
116
+ }
117
+ //# sourceMappingURL=router.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"router.js","sourceRoot":"","sources":["../../../../../nodes/shared/core/execution/router.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export * from './io';
2
+ export * from './optimizer';
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./io"), exports);
18
+ __exportStar(require("./optimizer"), exports);
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../nodes/shared/core/memory/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AACA,uCAAqB;AACrB,8CAA4B"}
@@ -0,0 +1,5 @@
1
+ import type { IExecuteFunctions, IDataObject } from 'n8n-workflow';
2
+ import type { BaseChatMemory } from 'langchain/memory';
3
+ import type { ChatCompletion } from '../../api/types';
4
+ export declare function getMemoryFromInput(executeFunctions: IExecuteFunctions): Promise<BaseChatMemory | undefined>;
5
+ export declare function saveToMemory(memory: BaseChatMemory | undefined, messages: IDataObject[], response: ChatCompletion, outputStringified: string, saveToolCallsInChatMemory: boolean, originalMessagesLength?: number): Promise<void>;
@@ -0,0 +1,93 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getMemoryFromInput = getMemoryFromInput;
4
+ exports.saveToMemory = saveToMemory;
5
+ const messages_1 = require("@langchain/core/messages");
6
+ async function getMemoryFromInput(executeFunctions) {
7
+ let memoryInput;
8
+ try {
9
+ memoryInput = (await executeFunctions.getInputConnectionData('ai_memory', 0, undefined));
10
+ }
11
+ catch (error) {
12
+ memoryInput = undefined;
13
+ }
14
+ return Array.isArray(memoryInput) ? memoryInput[0] : memoryInput;
15
+ }
16
+ async function saveToMemory(memory, messages, response, outputStringified, saveToolCallsInChatMemory, originalMessagesLength = 0) {
17
+ var _a, _b, _c, _d, _e;
18
+ if (!memory || !((_b = (_a = response === null || response === void 0 ? void 0 : response.choices) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.message)) {
19
+ return;
20
+ }
21
+ if (!saveToolCallsInChatMemory) {
22
+ const lastUserMessageContent = ((_c = [...messages].reverse().find((msg) => msg.role === 'user')) === null || _c === void 0 ? void 0 : _c.content) || '';
23
+ let assistantContent = outputStringified;
24
+ if (!assistantContent || assistantContent === 'null' || assistantContent === 'undefined') {
25
+ assistantContent = response.choices[0].message.content || '';
26
+ if (!assistantContent && ((_d = response.choices[0].message.tool_calls) === null || _d === void 0 ? void 0 : _d.length)) {
27
+ assistantContent =
28
+ 'Used tools: ' +
29
+ response.choices[0].message.tool_calls.map((tc) => tc.function.name).join(', ');
30
+ }
31
+ else if (!assistantContent) {
32
+ assistantContent = '[No response content available]';
33
+ }
34
+ }
35
+ if (typeof assistantContent !== 'string') {
36
+ assistantContent = JSON.stringify(assistantContent);
37
+ }
38
+ try {
39
+ await memory.saveContext({ input: lastUserMessageContent }, { output: assistantContent });
40
+ }
41
+ catch (error) {
42
+ console.error('Error saving messages to memory:', error);
43
+ }
44
+ }
45
+ else {
46
+ try {
47
+ const lastUserMessage = [...messages].reverse().find((msg) => msg.role === 'user');
48
+ if (lastUserMessage === null || lastUserMessage === void 0 ? void 0 : lastUserMessage.content) {
49
+ const humanMessage = new messages_1.HumanMessage(lastUserMessage.content);
50
+ await memory.chatHistory.addMessage(humanMessage);
51
+ }
52
+ const conversationMessages = [];
53
+ for (let i = originalMessagesLength; i < messages.length; i++) {
54
+ const msg = messages[i];
55
+ if (msg.role === 'assistant' || msg.role === 'tool') {
56
+ conversationMessages.push({
57
+ role: msg.role,
58
+ content: msg.content || '',
59
+ ...(msg.tool_calls && { tool_calls: msg.tool_calls }),
60
+ ...(msg.tool_call_id && { tool_call_id: msg.tool_call_id }),
61
+ ...(msg.refusal && { refusal: msg.refusal }),
62
+ });
63
+ }
64
+ }
65
+ let finalContent = outputStringified;
66
+ if (!finalContent || finalContent === 'null' || finalContent === 'undefined') {
67
+ finalContent = response.choices[0].message.content || '';
68
+ if (!finalContent && ((_e = response.choices[0].message.tool_calls) === null || _e === void 0 ? void 0 : _e.length)) {
69
+ finalContent =
70
+ 'Used tools: ' +
71
+ response.choices[0].message.tool_calls.map((tc) => tc.function.name).join(', ');
72
+ }
73
+ else if (!finalContent) {
74
+ finalContent = '[No response content available]';
75
+ }
76
+ }
77
+ if (typeof finalContent !== 'string') {
78
+ finalContent = JSON.stringify(finalContent);
79
+ }
80
+ const aiMessage = new messages_1.AIMessage({
81
+ content: finalContent,
82
+ tool_calls: conversationMessages,
83
+ additional_kwargs: {},
84
+ response_metadata: {},
85
+ });
86
+ await memory.chatHistory.addMessage(aiMessage);
87
+ }
88
+ catch (error) {
89
+ console.error('Error saving messages with tool calls to memory:', error);
90
+ }
91
+ }
92
+ }
93
+ //# sourceMappingURL=io.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"io.js","sourceRoot":"","sources":["../../../../../nodes/shared/core/memory/io.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { BaseChatMemory } from 'langchain/memory';
2
+ import { BaseMessage } from '@langchain/core/dist/messages/base';
3
+ export declare function getLastKMessages(memory: BaseChatMemory, k: number): Promise<BaseMessage[]>;
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getLastKMessages = getLastKMessages;
4
+ async function getLastKMessages(memory, k) {
5
+ if (!(memory === null || memory === void 0 ? void 0 : memory.chatHistory)) {
6
+ return [];
7
+ }
8
+ if (k === 0) {
9
+ return [];
10
+ }
11
+ if (k === -1) {
12
+ return await memory.chatHistory.getMessages();
13
+ }
14
+ if (k > 0) {
15
+ const chatHistory = memory.chatHistory;
16
+ if (typeof chatHistory.getMessagesSlice === 'function') {
17
+ return await chatHistory.getMessagesSlice(-k);
18
+ }
19
+ else if (typeof chatHistory.getLastMessages === 'function') {
20
+ return await chatHistory.getLastMessages(k);
21
+ }
22
+ else {
23
+ const allMessages = await memory.chatHistory.getMessages();
24
+ const validK = Math.min(Math.max(k, 1), allMessages.length);
25
+ return allMessages.slice(-validK);
26
+ }
27
+ }
28
+ return [];
29
+ }
30
+ //# sourceMappingURL=optimizer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"optimizer.js","sourceRoot":"","sources":["../../../../../nodes/shared/core/memory/optimizer.ts"],"names":[],"mappings":";;AAOA,4CAwCC;AAxCM,KAAK,UAAU,gBAAgB,CAAC,MAAsB,EAAE,CAAS;IACvE,IAAI,CAAC,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,WAAW,CAAA,EAAE,CAAC;QAC1B,OAAO,EAAE,CAAC;IACX,CAAC;IAGD,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACb,OAAO,EAAE,CAAC;IACX,CAAC;IAED,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QAEd,OAAO,MAAM,MAAM,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC;IAC/C,CAAC;IAGD,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QAGX,MAAM,WAAW,GAAG,MAAM,CAAC,WAAkB,CAAC;QAG9C,IAAI,OAAO,WAAW,CAAC,gBAAgB,KAAK,UAAU,EAAE,CAAC;YAExD,OAAO,MAAM,WAAW,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/C,CAAC;aAAM,IAAI,OAAO,WAAW,CAAC,eAAe,KAAK,UAAU,EAAE,CAAC;YAE9D,OAAO,MAAM,WAAW,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QAC7C,CAAC;aAAM,CAAC;YAGP,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC;YAG3D,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;YAC5D,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC;QACnC,CAAC;IACF,CAAC;IAED,OAAO,EAAE,CAAC;AACX,CAAC"}
@@ -0,0 +1,2 @@
1
+ import type { INodeProperties } from 'n8n-workflow';
2
+ export declare const memoryProperties: INodeProperties[];
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.memoryProperties = void 0;
4
+ exports.memoryProperties = [];
5
+ //# sourceMappingURL=properties.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"properties.js","sourceRoot":"","sources":["../../../../../nodes/shared/core/memory/properties.ts"],"names":[],"mappings":";;;AAEa,QAAA,gBAAgB,GAAsB,EAGlD,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { Message, RawMessage } from './types';
2
+ export declare function unpackChatHistoryAndMemory(rawMessagesToSend: RawMessage[], memory?: any, loadToolCallsFromChatMemory?: boolean): Promise<Message[]>;
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.unpackChatHistoryAndMemory = unpackChatHistoryAndMemory;
4
+ const optimizer_1 = require("../memory/optimizer");
5
+ const converter_1 = require("./converter");
6
+ async function unpackChatHistoryAndMemory(rawMessagesToSend, memory, loadToolCallsFromChatMemory = true) {
7
+ const processedMessages = [];
8
+ for (const rawMessage of rawMessagesToSend) {
9
+ if (rawMessage.role !== 'chatHistoryRole' && rawMessage.role !== 'chatMemoryRole') {
10
+ processedMessages.push(rawMessage);
11
+ }
12
+ else if (rawMessage.role === 'chatHistoryRole') {
13
+ try {
14
+ let chatHistory;
15
+ if (typeof rawMessage.chatHistoryJson === 'string') {
16
+ chatHistory = JSON.parse(rawMessage.chatHistoryJson || '[]');
17
+ }
18
+ else {
19
+ chatHistory = rawMessage.chatHistoryJson;
20
+ }
21
+ if (Array.isArray(chatHistory)) {
22
+ processedMessages.push(...chatHistory);
23
+ }
24
+ else {
25
+ processedMessages.push({
26
+ role: 'user',
27
+ content: JSON.stringify(rawMessage.chatHistoryJson),
28
+ });
29
+ }
30
+ }
31
+ catch (error) {
32
+ processedMessages.push({
33
+ role: 'user',
34
+ content: JSON.stringify(rawMessage.chatHistoryJson),
35
+ });
36
+ }
37
+ }
38
+ else if (rawMessage.role === 'chatMemoryRole' && memory && memory.chatHistory) {
39
+ try {
40
+ let k = memory.k;
41
+ if (k === 0 || !memory.k) {
42
+ }
43
+ else {
44
+ if (k > 0 && k < 1) {
45
+ k = 1;
46
+ }
47
+ const rawMemoryMessages = await (0, optimizer_1.getLastKMessages)(memory, k);
48
+ if (rawMemoryMessages.length === 0) {
49
+ }
50
+ else {
51
+ const memoryMessages = (0, converter_1.convertMessages)(rawMemoryMessages, loadToolCallsFromChatMemory);
52
+ processedMessages.push(...memoryMessages);
53
+ }
54
+ }
55
+ }
56
+ catch (error) {
57
+ console.error('Error retrieving messages from memory:', error);
58
+ }
59
+ }
60
+ }
61
+ return (0, converter_1.expandToolCallsInMessages)(processedMessages, loadToolCallsFromChatMemory);
62
+ }
63
+ //# sourceMappingURL=chatHistory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chatHistory.js","sourceRoot":"","sources":["../../../../../nodes/shared/core/messages/chatHistory.ts"],"names":[],"mappings":";;AAYA,gEA2EC;AArFD,mDAAuD;AACvD,2CAAyE;AASlE,KAAK,UAAU,0BAA0B,CAC/C,iBAA+B,EAC/B,MAAY,EACZ,8BAAuC,IAAI;IAE3C,MAAM,iBAAiB,GAAc,EAAE,CAAC;IAExC,KAAK,MAAM,UAAU,IAAI,iBAAiB,EAAE,CAAC;QAC5C,IAAI,UAAU,CAAC,IAAI,KAAK,iBAAiB,IAAI,UAAU,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;YAEnF,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACpC,CAAC;aAAM,IAAI,UAAU,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;YAClD,IAAI,CAAC;gBAEJ,IAAI,WAAW,CAAC;gBAChB,IAAI,OAAO,UAAU,CAAC,eAAe,KAAK,QAAQ,EAAE,CAAC;oBACpD,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,eAAe,IAAI,IAAI,CAAC,CAAC;gBAC9D,CAAC;qBAAM,CAAC;oBACP,WAAW,GAAG,UAAU,CAAC,eAAe,CAAC;gBAC1C,CAAC;gBAED,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;oBAEhC,iBAAiB,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,CAAC;gBACxC,CAAC;qBAAM,CAAC;oBAEP,iBAAiB,CAAC,IAAI,CAAC;wBACtB,IAAI,EAAE,MAAM;wBACZ,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,eAAe,CAAC;qBACnD,CAAC,CAAC;gBACJ,CAAC;YACF,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBAErB,iBAAiB,CAAC,IAAI,CAAC;oBACtB,IAAI,EAAE,MAAM;oBACZ,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,eAAe,CAAC;iBACnD,CAAC,CAAC;YACJ,CAAC;QACF,CAAC;aAAM,IAAI,UAAU,CAAC,IAAI,KAAK,gBAAgB,IAAI,MAAM,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;YACjF,IAAI,CAAC;gBAEJ,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;gBAEjB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;gBAG3B,CAAC;qBAAM,CAAC;oBAEP,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;wBACpB,CAAC,GAAG,CAAC,CAAC;oBACP,CAAC;oBAGD,MAAM,iBAAiB,GAAkB,MAAM,IAAA,4BAAgB,EAAC,MAAM,EAAE,CAAC,CAAC,CAAC;oBAG3E,IAAI,iBAAiB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAErC,CAAC;yBAAM,CAAC;wBAEP,MAAM,cAAc,GAAc,IAAA,2BAAe,EAChD,iBAAiB,EACjB,2BAA2B,CAC3B,CAAC;wBACF,iBAAiB,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,CAAC;oBAC3C,CAAC;gBACF,CAAC;YACF,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBAChB,OAAO,CAAC,KAAK,CAAC,wCAAwC,EAAE,KAAK,CAAC,CAAC;YAChE,CAAC;QACF,CAAC;IACF,CAAC;IAGD,OAAO,IAAA,qCAAyB,EAAC,iBAAiB,EAAE,2BAA2B,CAAC,CAAC;AAClF,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { Message } from './types';
2
+ import { BaseMessage } from '@langchain/core/dist/messages/base';
3
+ export declare function convertMessages(messages: BaseMessage[], loadToolCalls?: boolean): Message[];
4
+ export declare function expandToolCallsInMessages(messages: Message[], loadToolCalls?: boolean): Message[];
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.convertMessages = convertMessages;
4
+ exports.expandToolCallsInMessages = expandToolCallsInMessages;
5
+ function convertMessages(messages, loadToolCalls = true) {
6
+ const result = [];
7
+ for (const message of messages) {
8
+ const role = message.constructor.name === 'AIMessage' ? 'assistant' : 'user';
9
+ const content = typeof message.content === 'string' ? message.content : JSON.stringify(message.content);
10
+ if (role === 'assistant' &&
11
+ message.tool_calls &&
12
+ Array.isArray(message.tool_calls) &&
13
+ loadToolCalls) {
14
+ const toolCalls = message.tool_calls;
15
+ if (toolCalls.length > 0 && toolCalls[0].role) {
16
+ result.push(...toolCalls);
17
+ result.push({
18
+ role: 'assistant',
19
+ content: content,
20
+ });
21
+ }
22
+ else {
23
+ result.push({
24
+ role: role,
25
+ content: content,
26
+ tool_calls: toolCalls,
27
+ });
28
+ }
29
+ }
30
+ else if (role === 'assistant' &&
31
+ message.tool_calls &&
32
+ Array.isArray(message.tool_calls) &&
33
+ !loadToolCalls) {
34
+ result.push({
35
+ role: role,
36
+ content: content,
37
+ });
38
+ }
39
+ else {
40
+ result.push({
41
+ role: role,
42
+ content: content,
43
+ });
44
+ }
45
+ }
46
+ return result;
47
+ }
48
+ function expandToolCallsInMessages(messages, loadToolCalls = true) {
49
+ var _a;
50
+ const result = [];
51
+ for (const message of messages) {
52
+ if (message.role !== 'assistant' || !((_a = message.tool_calls) === null || _a === void 0 ? void 0 : _a.length)) {
53
+ result.push(message);
54
+ continue;
55
+ }
56
+ if (!loadToolCalls) {
57
+ result.push({
58
+ role: 'assistant',
59
+ content: message.content,
60
+ });
61
+ continue;
62
+ }
63
+ const firstToolCall = message.tool_calls[0];
64
+ if (!firstToolCall.role) {
65
+ result.push(message);
66
+ continue;
67
+ }
68
+ result.push(...message.tool_calls);
69
+ result.push({
70
+ role: 'assistant',
71
+ content: message.content,
72
+ });
73
+ }
74
+ return result;
75
+ }
76
+ //# sourceMappingURL=converter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"converter.js","sourceRoot":"","sources":["../../../../../nodes/shared/core/messages/converter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { BaseChatMemory } from 'langchain/memory';
2
+ import { BaseMessage } from '@langchain/core/dist/messages/base';
3
+ export declare function getLastKMessages(memory: BaseChatMemory, k: number): Promise<BaseMessage[]>;
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getLastKMessages = getLastKMessages;
4
+ async function getLastKMessages(memory, k) {
5
+ if (!(memory === null || memory === void 0 ? void 0 : memory.chatHistory)) {
6
+ return [];
7
+ }
8
+ if (k === 0) {
9
+ return [];
10
+ }
11
+ if (k === -1) {
12
+ return await memory.chatHistory.getMessages();
13
+ }
14
+ if (k > 0) {
15
+ const chatHistory = memory.chatHistory;
16
+ if (typeof chatHistory.getMessagesSlice === 'function') {
17
+ return await chatHistory.getMessagesSlice(-k);
18
+ }
19
+ else if (typeof chatHistory.getLastMessages === 'function') {
20
+ return await chatHistory.getLastMessages(k);
21
+ }
22
+ else {
23
+ const allMessages = await memory.chatHistory.getMessages();
24
+ const validK = Math.min(Math.max(k, 1), allMessages.length);
25
+ return allMessages.slice(-validK);
26
+ }
27
+ }
28
+ return [];
29
+ }
30
+ //# sourceMappingURL=memoryOptimizer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memoryOptimizer.js","sourceRoot":"","sources":["../../../../../nodes/shared/core/messages/memoryOptimizer.ts"],"names":[],"mappings":";;AAOA,4CAwCC;AAxCM,KAAK,UAAU,gBAAgB,CAAC,MAAsB,EAAE,CAAS;IACvE,IAAI,CAAC,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,WAAW,CAAA,EAAE,CAAC;QAC1B,OAAO,EAAE,CAAC;IACX,CAAC;IAGD,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACb,OAAO,EAAE,CAAC;IACX,CAAC;IAED,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QAEd,OAAO,MAAM,MAAM,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC;IAC/C,CAAC;IAGD,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QAGX,MAAM,WAAW,GAAG,MAAM,CAAC,WAAkB,CAAC;QAG9C,IAAI,OAAO,WAAW,CAAC,gBAAgB,KAAK,UAAU,EAAE,CAAC;YAExD,OAAO,MAAM,WAAW,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/C,CAAC;aAAM,IAAI,OAAO,WAAW,CAAC,eAAe,KAAK,UAAU,EAAE,CAAC;YAE9D,OAAO,MAAM,WAAW,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QAC7C,CAAC;aAAM,CAAC;YAGP,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC;YAG3D,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;YAC5D,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC;QACnC,CAAC;IACF,CAAC;IAED,OAAO,EAAE,CAAC;AACX,CAAC"}