n8n-nodes-simple 2.1.0 → 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 (135) hide show
  1. package/dist/nodes/CoreAgent/CoreAgent.node.d.ts +3 -2
  2. package/dist/nodes/CoreAgent/CoreAgent.node.js +3 -3
  3. package/dist/nodes/CoreAgent/CoreAgent.node.js.map +1 -1
  4. package/dist/nodes/CoreAgent/description.js +1 -1
  5. package/dist/nodes/CoreAgent/description.js.map +1 -1
  6. package/dist/nodes/Subagent/Subagent.node.d.ts +3 -2
  7. package/dist/nodes/Subagent/Subagent.node.js +5 -5
  8. package/dist/nodes/Subagent/Subagent.node.js.map +1 -1
  9. package/dist/nodes/Subagent/description.js +1 -1
  10. package/dist/nodes/Subagent/description.js.map +1 -1
  11. package/dist/nodes/shared/assets/gradientRobot.svg +11 -0
  12. package/dist/nodes/shared/assets/gradientRobotRed.svg +11 -0
  13. package/dist/nodes/shared/config/descriptionGenerator.d.ts +2 -0
  14. package/dist/nodes/shared/config/descriptionGenerator.js +36 -0
  15. package/dist/nodes/shared/config/descriptionGenerator.js.map +1 -0
  16. package/dist/nodes/shared/config/parameters.d.ts +26 -0
  17. package/dist/nodes/shared/config/parameters.js +35 -0
  18. package/dist/nodes/shared/config/parameters.js.map +1 -0
  19. package/dist/nodes/shared/config/properties/index.d.ts +2 -0
  20. package/dist/nodes/shared/config/properties/index.js +16 -0
  21. package/dist/nodes/shared/config/properties/index.js.map +1 -0
  22. package/dist/nodes/shared/config/properties/memory.d.ts +2 -0
  23. package/dist/nodes/shared/config/properties/memory.js +5 -0
  24. package/dist/nodes/shared/config/properties/memory.js.map +1 -0
  25. package/dist/nodes/shared/config/properties/messages.d.ts +2 -0
  26. package/dist/nodes/shared/config/properties/messages.js +109 -0
  27. package/dist/nodes/shared/config/properties/messages.js.map +1 -0
  28. package/dist/nodes/shared/config/properties/model.d.ts +2 -0
  29. package/dist/nodes/shared/config/properties/model.js +30 -0
  30. package/dist/nodes/shared/config/properties/model.js.map +1 -0
  31. package/dist/nodes/shared/config/properties/options.d.ts +2 -0
  32. package/dist/nodes/shared/config/properties/options.js +105 -0
  33. package/dist/nodes/shared/config/properties/options.js.map +1 -0
  34. package/dist/nodes/shared/config/properties/output.d.ts +2 -0
  35. package/dist/nodes/shared/config/properties/output.js +322 -0
  36. package/dist/nodes/shared/config/properties/output.js.map +1 -0
  37. package/dist/nodes/shared/config/properties/tools.d.ts +2 -0
  38. package/dist/nodes/shared/config/properties/tools.js +5 -0
  39. package/dist/nodes/shared/config/properties/tools.js.map +1 -0
  40. package/dist/nodes/shared/config/responseConfig.d.ts +3 -0
  41. package/dist/nodes/shared/config/responseConfig.js +26 -0
  42. package/dist/nodes/shared/config/responseConfig.js.map +1 -0
  43. package/dist/nodes/shared/core/execution/executor.d.ts +7 -0
  44. package/dist/nodes/shared/core/execution/executor.js +61 -0
  45. package/dist/nodes/shared/core/execution/executor.js.map +1 -0
  46. package/dist/nodes/shared/core/execution/messageOperation.d.ts +2 -0
  47. package/dist/nodes/shared/core/execution/messageOperation.js +14 -0
  48. package/dist/nodes/shared/core/execution/messageOperation.js.map +1 -0
  49. package/dist/nodes/shared/core/execution/router.d.ts +2 -0
  50. package/dist/nodes/shared/core/execution/router.js +117 -0
  51. package/dist/nodes/shared/core/execution/router.js.map +1 -0
  52. package/dist/nodes/shared/core/memory/index.d.ts +2 -0
  53. package/dist/nodes/shared/core/memory/index.js +19 -0
  54. package/dist/nodes/shared/core/memory/index.js.map +1 -0
  55. package/dist/nodes/shared/core/memory/io.d.ts +5 -0
  56. package/dist/nodes/shared/core/memory/io.js +93 -0
  57. package/dist/nodes/shared/core/memory/io.js.map +1 -0
  58. package/dist/nodes/shared/core/memory/optimizer.d.ts +3 -0
  59. package/dist/nodes/shared/core/memory/optimizer.js +30 -0
  60. package/dist/nodes/shared/core/memory/optimizer.js.map +1 -0
  61. package/dist/nodes/shared/core/memory/properties.d.ts +2 -0
  62. package/dist/nodes/shared/core/memory/properties.js +5 -0
  63. package/dist/nodes/shared/core/memory/properties.js.map +1 -0
  64. package/dist/nodes/shared/core/messages/chatHistory.d.ts +2 -0
  65. package/dist/nodes/shared/core/messages/chatHistory.js +63 -0
  66. package/dist/nodes/shared/core/messages/chatHistory.js.map +1 -0
  67. package/dist/nodes/shared/core/messages/converter.d.ts +4 -0
  68. package/dist/nodes/shared/core/messages/converter.js +76 -0
  69. package/dist/nodes/shared/core/messages/converter.js.map +1 -0
  70. package/dist/nodes/shared/core/messages/memoryOptimizer.d.ts +3 -0
  71. package/dist/nodes/shared/core/messages/memoryOptimizer.js +30 -0
  72. package/dist/nodes/shared/core/messages/memoryOptimizer.js.map +1 -0
  73. package/dist/nodes/shared/core/messages/processor.d.ts +4 -0
  74. package/dist/nodes/shared/core/messages/processor.js +23 -0
  75. package/dist/nodes/shared/core/messages/processor.js.map +1 -0
  76. package/dist/nodes/shared/core/messages/toolExtractor.d.ts +6 -0
  77. package/dist/nodes/shared/core/messages/toolExtractor.js +28 -0
  78. package/dist/nodes/shared/core/messages/toolExtractor.js.map +1 -0
  79. package/dist/nodes/shared/core/messages/types.d.ts +48 -0
  80. package/dist/nodes/shared/core/messages/types.js +12 -0
  81. package/dist/nodes/shared/core/messages/types.js.map +1 -0
  82. package/dist/nodes/shared/core/tools/connector.d.ts +3 -0
  83. package/dist/nodes/shared/core/tools/connector.js +37 -0
  84. package/dist/nodes/shared/core/tools/connector.js.map +1 -0
  85. package/dist/nodes/shared/core/tools/executor.d.ts +6 -0
  86. package/dist/nodes/shared/core/tools/executor.js +124 -0
  87. package/dist/nodes/shared/core/tools/executor.js.map +1 -0
  88. package/dist/nodes/shared/core/tools/manager.d.ts +2 -0
  89. package/dist/nodes/shared/core/tools/manager.js +51 -0
  90. package/dist/nodes/shared/core/tools/manager.js.map +1 -0
  91. package/dist/nodes/shared/core/tools/messageExtractor.d.ts +6 -0
  92. package/dist/nodes/shared/core/tools/messageExtractor.js +28 -0
  93. package/dist/nodes/shared/core/tools/messageExtractor.js.map +1 -0
  94. package/dist/nodes/shared/core/tools/n8nTool.d.ts +9 -0
  95. package/dist/nodes/shared/core/tools/n8nTool.js +91 -0
  96. package/dist/nodes/shared/core/tools/n8nTool.js.map +1 -0
  97. package/dist/nodes/shared/core/tools/schemaGenerator.d.ts +6 -0
  98. package/dist/nodes/shared/core/tools/schemaGenerator.js +23 -0
  99. package/dist/nodes/shared/core/tools/schemaGenerator.js.map +1 -0
  100. package/dist/nodes/shared/core/tools/setup.d.ts +8 -0
  101. package/dist/nodes/shared/core/tools/setup.js +59 -0
  102. package/dist/nodes/shared/core/tools/setup.js.map +1 -0
  103. package/dist/nodes/shared/core/tools/subagentTool.d.ts +11 -0
  104. package/dist/nodes/shared/core/tools/subagentTool.js +60 -0
  105. package/dist/nodes/shared/core/tools/subagentTool.js.map +1 -0
  106. package/dist/nodes/shared/methods/index.d.ts +1 -1
  107. package/dist/nodes/shared/methods/index.js +1 -1
  108. package/dist/nodes/shared/methods/index.js.map +1 -1
  109. package/dist/nodes/shared/methods/listSearch.d.ts +3 -0
  110. package/dist/nodes/shared/methods/listSearch.js +4 -0
  111. package/dist/nodes/shared/methods/listSearch.js.map +1 -1
  112. package/dist/nodes/shared/processing/memory.d.ts +5 -0
  113. package/dist/nodes/shared/processing/memory.js +93 -0
  114. package/dist/nodes/shared/processing/memory.js.map +1 -0
  115. package/dist/nodes/shared/processing/outputProcessor.d.ts +5 -0
  116. package/dist/nodes/shared/processing/outputProcessor.js +112 -0
  117. package/dist/nodes/shared/processing/outputProcessor.js.map +1 -0
  118. package/dist/nodes/shared/processing/requestBuilder.d.ts +2 -0
  119. package/dist/nodes/shared/processing/requestBuilder.js +38 -0
  120. package/dist/nodes/shared/processing/requestBuilder.js.map +1 -0
  121. package/dist/nodes/shared/processing/visualEditor.d.ts +32 -0
  122. package/dist/nodes/shared/processing/visualEditor.js +70 -0
  123. package/dist/nodes/shared/processing/visualEditor.js.map +1 -0
  124. package/dist/nodes/shared/utils/descriptionGenerator.d.ts +2 -0
  125. package/dist/nodes/shared/utils/descriptionGenerator.js +36 -0
  126. package/dist/nodes/shared/utils/descriptionGenerator.js.map +1 -0
  127. package/dist/nodes/shared/utils/index.d.ts +1 -0
  128. package/dist/nodes/shared/utils/index.js +18 -0
  129. package/dist/nodes/shared/utils/index.js.map +1 -0
  130. package/dist/nodes/shared/utils/listSearch.d.ts +2 -0
  131. package/dist/nodes/shared/utils/listSearch.js +34 -0
  132. package/dist/nodes/shared/utils/listSearch.js.map +1 -0
  133. package/dist/package.json +1 -1
  134. package/dist/tsconfig.tsbuildinfo +1 -1
  135. package/package.json +1 -1
@@ -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"}
@@ -0,0 +1,4 @@
1
+ import type { IDataObject } from 'n8n-workflow';
2
+ import type { BaseChatMemory } from 'langchain/memory';
3
+ import { Message } from './types';
4
+ export declare function processMessages(rawMessagesToSend: Message[], memory: BaseChatMemory | undefined, parentMessageContentStr: string, parentMessageContentObj: object, loadToolCallsFromChatMemory?: boolean): Promise<IDataObject[]>;
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.processMessages = processMessages;
4
+ const chatHistory_1 = require("./chatHistory");
5
+ async function processMessages(rawMessagesToSend, memory, parentMessageContentStr, parentMessageContentObj, loadToolCallsFromChatMemory = true) {
6
+ let messages = (await (0, chatHistory_1.unpackChatHistoryAndMemory)(rawMessagesToSend, memory, loadToolCallsFromChatMemory));
7
+ messages = messages
8
+ .map((item) => ({
9
+ ...item,
10
+ content: typeof item.content === 'string' ? item.content.trim() : item.content,
11
+ }))
12
+ .filter((item) => item.content !== '' ||
13
+ (item.role === 'assistant' && item.tool_calls) ||
14
+ item.role === 'tool');
15
+ if (parentMessageContentStr !== '') {
16
+ messages.push({ role: 'user', content: parentMessageContentStr });
17
+ }
18
+ else if (Object.keys(parentMessageContentObj).length !== 0) {
19
+ messages.push({ role: 'user', content: JSON.stringify(parentMessageContentObj) });
20
+ }
21
+ return messages;
22
+ }
23
+ //# sourceMappingURL=processor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"processor.js","sourceRoot":"","sources":["../../../../../nodes/shared/core/messages/processor.ts"],"names":[],"mappings":";;AAQA,0CAsCC;AA3CD,+CAA2D;AAKpD,KAAK,UAAU,eAAe,CACpC,iBAA4B,EAC5B,MAAkC,EAClC,uBAA+B,EAC/B,uBAA+B,EAC/B,8BAAuC,IAAI;IAG3C,IAAI,QAAQ,GAAG,CAAC,MAAM,IAAA,wCAA0B,EAC/C,iBAAiB,EACjB,MAAM,EACN,2BAA2B,CAC3B,CAAkB,CAAC;IAGpB,QAAQ,GAAG,QAAQ;SACjB,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACf,GAAG,IAAI;QACP,OAAO,EAAE,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO;KAC9E,CAAC,CAAC;SACF,MAAM,CACN,CAAC,IAAI,EAAE,EAAE,CACR,IAAI,CAAC,OAAO,KAAK,EAAE;QACnB,CAAE,IAAY,CAAC,IAAI,KAAK,WAAW,IAAK,IAAY,CAAC,UAAU,CAAC;QAC/D,IAAY,CAAC,IAAI,KAAK,MAAM,CAC9B,CAAC;IAGH,IAAI,uBAAuB,KAAK,EAAE,EAAE,CAAC;QAEpC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,uBAAuB,EAAE,CAAC,CAAC;IACnE,CAAC;SAAM,IAAI,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAG9D,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;IACnF,CAAC;IAED,OAAO,QAAQ,CAAC;AACjB,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { Message } from './types';
2
+ export declare function extractToolMessages(messagesFromRequestBody: Message[]): {
3
+ tool: string;
4
+ input: string;
5
+ output: string;
6
+ }[];
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.extractToolMessages = extractToolMessages;
4
+ function extractToolMessages(messagesFromRequestBody) {
5
+ const toolMessagesFromRequestBody = messagesFromRequestBody.filter((msg) => msg.role === 'tool');
6
+ const processedToolMessages = [];
7
+ for (const message of messagesFromRequestBody) {
8
+ if (message.role === 'assistant' && message.tool_calls && message.tool_calls.length > 0) {
9
+ for (const toolCall of message.tool_calls) {
10
+ const toolName = toolCall.function.name;
11
+ let toolInput = JSON.parse(toolCall.function.arguments);
12
+ if (toolInput.input && Object.entries(toolInput).length === 1) {
13
+ toolInput = toolInput.input;
14
+ }
15
+ const toolMessage = toolMessagesFromRequestBody.find((toolMsg) => toolMsg.tool_call_id === toolCall.id);
16
+ if (toolMessage) {
17
+ processedToolMessages.push({
18
+ tool: toolName,
19
+ input: toolInput,
20
+ output: toolMessage.content,
21
+ });
22
+ }
23
+ }
24
+ }
25
+ }
26
+ return processedToolMessages;
27
+ }
28
+ //# sourceMappingURL=toolExtractor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toolExtractor.js","sourceRoot":"","sources":["../../../../../nodes/shared/core/messages/toolExtractor.ts"],"names":[],"mappings":";;AAOA,kDAiCC;AAjCD,SAAgB,mBAAmB,CAClC,uBAAkC;IAElC,MAAM,2BAA2B,GAAG,uBAAuB,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;IACjG,MAAM,qBAAqB,GAAsD,EAAE,CAAC;IAEpF,KAAK,MAAM,OAAO,IAAI,uBAAuB,EAAE,CAAC;QAC/C,IAAI,OAAO,CAAC,IAAI,KAAK,WAAW,IAAI,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzF,KAAK,MAAM,QAAQ,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;gBAC3C,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC;gBACxC,IAAI,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;gBAGxD,IAAI,SAAS,CAAC,KAAK,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAC/D,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC;gBAC7B,CAAC;gBAED,MAAM,WAAW,GAAG,2BAA2B,CAAC,IAAI,CACnD,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,YAAY,KAAK,QAAQ,CAAC,EAAE,CACjD,CAAC;gBAEF,IAAI,WAAW,EAAE,CAAC;oBACjB,qBAAqB,CAAC,IAAI,CAAC;wBAC1B,IAAI,EAAE,QAAQ;wBACd,KAAK,EAAE,SAAS;wBAChB,MAAM,EAAE,WAAW,CAAC,OAAQ;qBAC5B,CAAC,CAAC;gBACJ,CAAC;YACF,CAAC;QACF,CAAC;IACF,CAAC;IAED,OAAO,qBAAqB,CAAC;AAC9B,CAAC"}
@@ -0,0 +1,48 @@
1
+ type ToolCall = {
2
+ id: string;
3
+ type: string;
4
+ function: {
5
+ name: string;
6
+ arguments: string;
7
+ };
8
+ };
9
+ export type Message = {
10
+ role: string;
11
+ content: string | null;
12
+ tool_calls?: ToolCall[];
13
+ tool_call_id?: string;
14
+ refusal?: string | null;
15
+ saveToolCallsInChatMemory?: boolean;
16
+ loadToolCallsFromChatMemory?: boolean;
17
+ };
18
+ export type RawMessage = Message & {
19
+ chatHistoryJson?: string | object[] | null;
20
+ };
21
+ type Choice = {
22
+ index: number;
23
+ message: Message;
24
+ logprobs: boolean | null;
25
+ finish_reason: string;
26
+ };
27
+ type CompletionTokenDetails = {
28
+ reasoning_tokens: number;
29
+ accepted_prediction_tokens: number;
30
+ rejected_prediction_tokens: number;
31
+ };
32
+ type Usage = {
33
+ prompt_tokens: number;
34
+ completion_tokens: number;
35
+ total_tokens: number;
36
+ completion_tokens_details: CompletionTokenDetails;
37
+ };
38
+ export type Response = {
39
+ id: string;
40
+ object: string;
41
+ created: number;
42
+ model: string;
43
+ system_fingerprint: string;
44
+ choices: Choice[];
45
+ usage: Usage;
46
+ };
47
+ export declare function isValidMessage(item: any): item is Message;
48
+ export {};
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isValidMessage = isValidMessage;
4
+ function isValidMessage(item) {
5
+ return (typeof item === 'object' &&
6
+ item !== null &&
7
+ 'role' in item &&
8
+ 'content' in item &&
9
+ typeof item.role === 'string' &&
10
+ (typeof item.content === 'string' || item.content === null));
11
+ }
12
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../nodes/shared/core/messages/types.ts"],"names":[],"mappings":";;AA0DA,wCASC;AATD,SAAgB,cAAc,CAAC,IAAS;IACvC,OAAO,CACN,OAAO,IAAI,KAAK,QAAQ;QACxB,IAAI,KAAK,IAAI;QACb,MAAM,IAAI,IAAI;QACd,SAAS,IAAI,IAAI;QACjB,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ;QAC7B,CAAC,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,CAC3D,CAAC;AACH,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { type IExecuteFunctions } from 'n8n-workflow';
2
+ import type { Tool } from '@langchain/core/tools';
3
+ export declare const getConnectedTools: (ctx: IExecuteFunctions, enforceUniqueNames: boolean, convertStructuredTool?: boolean) => Promise<Tool[]>;
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getConnectedTools = void 0;
4
+ const n8n_workflow_1 = require("n8n-workflow");
5
+ const n8nTool_1 = require("./n8nTool");
6
+ const getConnectedTools = async (ctx, enforceUniqueNames, convertStructuredTool = true) => {
7
+ try {
8
+ const connectedTools = (await ctx.getInputConnectionData(n8n_workflow_1.NodeConnectionTypes.AiTool, 0)) || [];
9
+ if (!enforceUniqueNames)
10
+ return connectedTools;
11
+ const seenNames = new Set();
12
+ const finalTools = [];
13
+ for (const tool of connectedTools) {
14
+ const { name } = tool;
15
+ if (seenNames.has(name)) {
16
+ throw new n8n_workflow_1.NodeOperationError(ctx.getNode(), `You have multiple tools with the same name: '${name}', please rename them to avoid conflicts`);
17
+ }
18
+ seenNames.add(name);
19
+ if (convertStructuredTool && tool instanceof n8nTool_1.N8nTool) {
20
+ finalTools.push(tool.asDynamicTool());
21
+ }
22
+ else {
23
+ finalTools.push(tool);
24
+ }
25
+ }
26
+ return finalTools;
27
+ }
28
+ catch (error) {
29
+ if (error.message && error.message.includes('Tool must be connected to a root node')) {
30
+ console.warn('Warning: Tool connection issue detected. Make sure your tool nodes are properly connected to root nodes in the workflow.');
31
+ return [];
32
+ }
33
+ throw error;
34
+ }
35
+ };
36
+ exports.getConnectedTools = getConnectedTools;
37
+ //# sourceMappingURL=connector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connector.js","sourceRoot":"","sources":["../../../../../nodes/shared/core/tools/connector.ts"],"names":[],"mappings":";;;AAEA,+CAA+F;AAG/F,uCAAoC;AAE7B,MAAM,iBAAiB,GAAG,KAAK,EACrC,GAAsB,EACtB,kBAA2B,EAC3B,wBAAiC,IAAI,EACpC,EAAE;IACH,IAAI,CAAC;QACJ,MAAM,cAAc,GAClB,CAAC,MAAM,GAAG,CAAC,sBAAsB,CAAC,kCAAmB,CAAC,MAAM,EAAE,CAAC,CAAC,CAAY,IAAI,EAAE,CAAC;QAErF,IAAI,CAAC,kBAAkB;YAAE,OAAO,cAAc,CAAC;QAE/C,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;QAEpC,MAAM,UAAU,GAAG,EAAE,CAAC;QAEtB,KAAK,MAAM,IAAI,IAAI,cAAc,EAAE,CAAC;YACnC,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;YACtB,IAAI,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBACzB,MAAM,IAAI,iCAAkB,CAC3B,GAAG,CAAC,OAAO,EAAE,EACb,gDAAgD,IAAI,0CAA0C,CAC9F,CAAC;YACH,CAAC;YACD,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAEpB,IAAI,qBAAqB,IAAI,IAAI,YAAY,iBAAO,EAAE,CAAC;gBACtD,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;YACvC,CAAC;iBAAM,CAAC;gBACP,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACvB,CAAC;QACF,CAAC;QAED,OAAO,UAAU,CAAC;IACnB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAEhB,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,uCAAuC,CAAC,EAAE,CAAC;YACtF,OAAO,CAAC,IAAI,CACX,0HAA0H,CAC1H,CAAC;YACF,OAAO,EAAE,CAAC;QACX,CAAC;QAED,MAAM,KAAK,CAAC;IACb,CAAC;AACF,CAAC,CAAC;AA5CW,QAAA,iBAAiB,qBA4C5B"}
@@ -0,0 +1,6 @@
1
+ import type { IExecuteFunctions, IDataObject } from 'n8n-workflow';
2
+ import type { ChatCompletion } from '../../api/types';
3
+ export declare function processToolCalls(executeFunctions: IExecuteFunctions, body: IDataObject, messages: IDataObject[], invokableTools: any[], structuredOutputTool: IDataObject | undefined, maxToolsIterations: number, abortSignal: AbortSignal | undefined): Promise<{
4
+ response: ChatCompletion;
5
+ output: any;
6
+ }>;