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,124 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.processToolCalls = processToolCalls;
4
+ const n8n_workflow_1 = require("n8n-workflow");
5
+ const openAiApiRequest_1 = require("../../api/openAiApiRequest");
6
+ async function processToolCalls(executeFunctions, body, messages, invokableTools, structuredOutputTool, maxToolsIterations, abortSignal) {
7
+ var _a, _b, _c, _d, _e, _f;
8
+ const processedToolCallIds = new Set();
9
+ let response = (await openAiApiRequest_1.openAiApiRequest.call(executeFunctions, 'POST', `/chat/completions`, {
10
+ body,
11
+ }));
12
+ if (response === null || response === void 0 ? void 0 : response.error) {
13
+ throw new Error(String(response.error));
14
+ }
15
+ if (!response) {
16
+ throw new Error('No response received from OpenAI API');
17
+ }
18
+ let toolCalls = (_b = (_a = response === null || response === void 0 ? void 0 : response.choices[0]) === null || _a === void 0 ? void 0 : _a.message) === null || _b === void 0 ? void 0 : _b.tool_calls;
19
+ let currentIteration = 1;
20
+ var output = null;
21
+ while (toolCalls === null || toolCalls === void 0 ? void 0 : toolCalls.length) {
22
+ const shouldMakeFinalCall = maxToolsIterations >= 0 && currentIteration > maxToolsIterations;
23
+ if (abortSignal === null || abortSignal === void 0 ? void 0 : abortSignal.aborted) {
24
+ break;
25
+ }
26
+ if (shouldMakeFinalCall) {
27
+ let finalBody;
28
+ if (structuredOutputTool && !output) {
29
+ finalBody = {
30
+ ...body,
31
+ messages: messages,
32
+ tools: [structuredOutputTool],
33
+ tool_choice: 'required',
34
+ };
35
+ }
36
+ else {
37
+ finalBody = {
38
+ ...body,
39
+ messages: messages,
40
+ tools: [],
41
+ tool_choice: undefined,
42
+ };
43
+ }
44
+ response = (await openAiApiRequest_1.openAiApiRequest.call(executeFunctions, 'POST', `/chat/completions`, {
45
+ body: finalBody,
46
+ }));
47
+ if (structuredOutputTool && !output && ((_e = (_d = (_c = response === null || response === void 0 ? void 0 : response.choices) === null || _c === void 0 ? void 0 : _c[0]) === null || _d === void 0 ? void 0 : _d.message) === null || _e === void 0 ? void 0 : _e.tool_calls)) {
48
+ const finalToolCalls = response.choices[0].message.tool_calls;
49
+ for (const toolCall of finalToolCalls) {
50
+ if (structuredOutputTool.function.name ===
51
+ toolCall.function.name) {
52
+ output = (0, n8n_workflow_1.jsonParse)(toolCall.function.arguments);
53
+ break;
54
+ }
55
+ }
56
+ }
57
+ break;
58
+ }
59
+ for (const toolCall of toolCalls) {
60
+ const calledFunctionName = toolCall.function.name;
61
+ const calledFunctionArgs = toolCall.function.arguments;
62
+ const toolCallId = toolCall.id;
63
+ if (processedToolCallIds.has(toolCallId)) {
64
+ console.log(`Skipping duplicate tool call ID: ${toolCallId}`);
65
+ continue;
66
+ }
67
+ processedToolCallIds.add(toolCallId);
68
+ let content = null;
69
+ let toolFound = false;
70
+ try {
71
+ for (const invokableTool of invokableTools !== null && invokableTools !== void 0 ? invokableTools : []) {
72
+ if (structuredOutputTool &&
73
+ structuredOutputTool.function.name === calledFunctionName) {
74
+ output = (0, n8n_workflow_1.jsonParse)(calledFunctionArgs);
75
+ toolFound = true;
76
+ break;
77
+ }
78
+ if (invokableTool.name === calledFunctionName) {
79
+ const parsedArgs = (0, n8n_workflow_1.jsonParse)(calledFunctionArgs);
80
+ content = await invokableTool.invoke(parsedArgs);
81
+ content =
82
+ Array.isArray(content) && typeof ((_f = content[0]) === null || _f === void 0 ? void 0 : _f.text) === 'string'
83
+ ? content[0].text
84
+ : content;
85
+ toolFound = true;
86
+ break;
87
+ }
88
+ }
89
+ if (!toolFound) {
90
+ content = `Error: Tool '${calledFunctionName}' not found in available tools`;
91
+ console.error(`Tool not found: ${calledFunctionName}`);
92
+ }
93
+ }
94
+ catch (error) {
95
+ content = `Error executing tool '${calledFunctionName}': ${error instanceof Error ? error.message : String(error)}`;
96
+ }
97
+ if (output) {
98
+ break;
99
+ }
100
+ if (toolCalls.indexOf(toolCall) === 0) {
101
+ messages.push(response.choices[0].message);
102
+ }
103
+ messages.push({
104
+ tool_call_id: toolCallId,
105
+ role: 'tool',
106
+ content: typeof content === 'string' ? content : JSON.stringify(content),
107
+ });
108
+ }
109
+ if (output) {
110
+ break;
111
+ }
112
+ const nextIterationBody = {
113
+ ...body,
114
+ messages: messages,
115
+ };
116
+ response = (await openAiApiRequest_1.openAiApiRequest.call(executeFunctions, 'POST', `/chat/completions`, {
117
+ body: nextIterationBody,
118
+ }));
119
+ toolCalls = response.choices[0].message.tool_calls;
120
+ currentIteration += 1;
121
+ }
122
+ return { response, output };
123
+ }
124
+ //# sourceMappingURL=executor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executor.js","sourceRoot":"","sources":["../../../../../nodes/shared/core/tools/executor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { type ISupplyDataFunctions, type SupplyData } from 'n8n-workflow';
2
+ export declare function executeAsTool(this: ISupplyDataFunctions, itemIndex: number): Promise<SupplyData>;
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.executeAsTool = executeAsTool;
4
+ const n8n_workflow_1 = require("n8n-workflow");
5
+ const tools_1 = require("@langchain/core/tools");
6
+ const subagentTool_1 = require("./subagentTool");
7
+ async function executeAsTool(itemIndex) {
8
+ const name = this.getNodeParameter('name', itemIndex, 'subagent');
9
+ const description = this.getNodeParameter('description', itemIndex, 'Message an AI subagent.');
10
+ const toolHandler = async (input) => {
11
+ const formattedInput = typeof input === 'string' ? { input } : input;
12
+ const { index } = this.addInputData(n8n_workflow_1.NodeConnectionTypes.AiTool, [[{ json: formattedInput }]]);
13
+ let response = '';
14
+ let executionError;
15
+ try {
16
+ const subagentTool = new subagentTool_1.SubagentTool(this);
17
+ response = await subagentTool._call(input);
18
+ }
19
+ catch (error) {
20
+ executionError = new n8n_workflow_1.NodeOperationError(this.getNode(), error);
21
+ response = `There was an error: "${executionError.message}"`;
22
+ }
23
+ if (typeof response === 'number') {
24
+ response = response.toString();
25
+ }
26
+ if (typeof response !== 'string') {
27
+ executionError = new n8n_workflow_1.NodeOperationError(this.getNode(), 'Wrong output type returned', {
28
+ description: `The response property should be a string, but it is an ${typeof response}`,
29
+ });
30
+ response = `There was an error: "${executionError.message}"`;
31
+ }
32
+ if (executionError) {
33
+ void this.addOutputData(n8n_workflow_1.NodeConnectionTypes.AiTool, index, executionError);
34
+ }
35
+ else {
36
+ void this.addOutputData(n8n_workflow_1.NodeConnectionTypes.AiTool, index, [[{ json: { response } }]]);
37
+ }
38
+ return response;
39
+ };
40
+ const commonToolOptions = {
41
+ name: name,
42
+ description: description,
43
+ func: toolHandler,
44
+ };
45
+ let tool = undefined;
46
+ tool = new tools_1.DynamicTool(commonToolOptions);
47
+ return {
48
+ response: tool,
49
+ };
50
+ }
51
+ //# sourceMappingURL=manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manager.js","sourceRoot":"","sources":["../../../../../nodes/shared/core/tools/manager.ts"],"names":[],"mappings":";;AAaA,sCAmEC;AAhFD,+CAQsB;AACtB,iDAAoD;AAEpD,iDAA8C;AAEvC,KAAK,UAAU,aAAa,CAElC,SAAiB;IAGjB,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,UAAU,CAAW,CAAC;IAC5E,MAAM,WAAW,GAAG,IAAI,CAAC,gBAAgB,CACxC,aAAa,EACb,SAAS,EACT,yBAAyB,CACf,CAAC;IAEZ,MAAM,WAAW,GAAG,KAAK,EAAE,KAA2B,EAAmB,EAAE;QAC1E,MAAM,cAAc,GAAgB,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;QAGlF,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,kCAAmB,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,CAAC;QAE9F,IAAI,QAAQ,GAAW,EAAE,CAAC;QAC1B,IAAI,cAA0C,CAAC;QAG/C,IAAI,CAAC;YACJ,MAAM,YAAY,GAAG,IAAI,2BAAY,CAAC,IAAoC,CAAC,CAAC;YAC5E,QAAQ,GAAG,MAAM,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC5C,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACzB,cAAc,GAAG,IAAI,iCAAkB,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,KAAuB,CAAC,CAAC;YACjF,QAAQ,GAAG,wBAAwB,cAAc,CAAC,OAAO,GAAG,CAAC;QAC9D,CAAC;QAED,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAClC,QAAQ,GAAI,QAAmB,CAAC,QAAQ,EAAE,CAAC;QAC5C,CAAC;QAED,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAElC,cAAc,GAAG,IAAI,iCAAkB,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,4BAA4B,EAAE;gBACrF,WAAW,EAAE,0DAA0D,OAAO,QAAQ,EAAE;aACxF,CAAC,CAAC;YACH,QAAQ,GAAG,wBAAwB,cAAc,CAAC,OAAO,GAAG,CAAC;QAC9D,CAAC;QAED,IAAI,cAAc,EAAE,CAAC;YACpB,KAAK,IAAI,CAAC,aAAa,CAAC,kCAAmB,CAAC,MAAM,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC;QAC5E,CAAC;aAAM,CAAC;YACP,KAAK,IAAI,CAAC,aAAa,CAAC,kCAAmB,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;QACxF,CAAC;QAED,OAAO,QAAQ,CAAC;IACjB,CAAC,CAAC;IAGF,MAAM,iBAAiB,GAAG;QACzB,IAAI,EAAE,IAAI;QACV,WAAW,EAAE,WAAW;QACxB,IAAI,EAAE,WAAW;KACjB,CAAC;IAEF,IAAI,IAAI,GAA4B,SAAS,CAAC;IAI9C,IAAI,GAAG,IAAI,mBAAW,CAAC,iBAAiB,CAAC,CAAC;IAE1C,OAAO;QACN,QAAQ,EAAE,IAAI;KACd,CAAC;AACH,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { Message } from '../messages/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=messageExtractor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messageExtractor.js","sourceRoot":"","sources":["../../../../../nodes/shared/core/tools/messageExtractor.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,9 @@
1
+ import { type ISupplyDataFunctions } from 'n8n-workflow';
2
+ import { DynamicTool, DynamicStructuredTool, DynamicStructuredToolInput } from '@langchain/core/tools';
3
+ import { ZodObject } from 'zod';
4
+ export declare const prepareFallbackToolDescription: (toolDescription: string, schema: ZodObject<any>) => string;
5
+ export declare class N8nTool extends DynamicStructuredTool {
6
+ private context;
7
+ constructor(context: ISupplyDataFunctions, fields: DynamicStructuredToolInput);
8
+ asDynamicTool(): DynamicTool;
9
+ }
@@ -0,0 +1,91 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.N8nTool = exports.prepareFallbackToolDescription = void 0;
4
+ const n8n_workflow_1 = require("n8n-workflow");
5
+ const tools_1 = require("@langchain/core/tools");
6
+ const output_parsers_1 = require("@langchain/core/output_parsers");
7
+ const zod_1 = require("zod");
8
+ const getSimplifiedType = (schema) => {
9
+ if (schema instanceof zod_1.ZodObject) {
10
+ return 'object';
11
+ }
12
+ else if (schema instanceof zod_1.ZodNumber) {
13
+ return 'number';
14
+ }
15
+ else if (schema instanceof zod_1.ZodBoolean) {
16
+ return 'boolean';
17
+ }
18
+ else if (schema instanceof zod_1.ZodNullable || schema instanceof zod_1.ZodOptional) {
19
+ return getSimplifiedType(schema.unwrap());
20
+ }
21
+ return 'string';
22
+ };
23
+ const getParametersDescription = (parameters) => parameters
24
+ .map(([name, schema]) => { var _a; return `${name}: (description: ${(_a = schema.description) !== null && _a !== void 0 ? _a : ''}, type: ${getSimplifiedType(schema)}, required: ${!schema.isOptional()})`; })
25
+ .join(',\n ');
26
+ const prepareFallbackToolDescription = (toolDescription, schema) => {
27
+ let description = `${toolDescription}`;
28
+ const toolParameters = Object.entries(schema.shape);
29
+ if (toolParameters.length) {
30
+ description += `
31
+ Tool expects valid stringified JSON object with ${toolParameters.length} properties.
32
+ Property names with description, type and required status:
33
+ ${getParametersDescription(toolParameters)}
34
+ ALL parameters marked as required must be provided`;
35
+ }
36
+ return description;
37
+ };
38
+ exports.prepareFallbackToolDescription = prepareFallbackToolDescription;
39
+ class N8nTool extends tools_1.DynamicStructuredTool {
40
+ constructor(context, fields) {
41
+ super(fields);
42
+ this.context = context;
43
+ }
44
+ asDynamicTool() {
45
+ const { name, func, schema, context, description } = this;
46
+ const parser = new output_parsers_1.StructuredOutputParser(schema);
47
+ const wrappedFunc = async function (query) {
48
+ let parsedQuery;
49
+ try {
50
+ parsedQuery = await parser.parse(query);
51
+ }
52
+ catch (e) {
53
+ let dataFromModel;
54
+ try {
55
+ dataFromModel = (0, n8n_workflow_1.jsonParse)(query);
56
+ }
57
+ catch (error) {
58
+ try {
59
+ dataFromModel = JSON.parse(query);
60
+ }
61
+ catch {
62
+ if (Object.keys(schema.shape).length === 1) {
63
+ const parameterName = Object.keys(schema.shape)[0];
64
+ dataFromModel = { [parameterName]: query };
65
+ }
66
+ else {
67
+ throw new n8n_workflow_1.NodeOperationError(context.getNode(), `Input is not a valid JSON: ${error.message}`);
68
+ }
69
+ }
70
+ }
71
+ parsedQuery = schema.parse(dataFromModel);
72
+ }
73
+ try {
74
+ const result = await func(parsedQuery);
75
+ return result;
76
+ }
77
+ catch (e) {
78
+ const { index } = context.addInputData(n8n_workflow_1.NodeConnectionTypes.AiTool, [[{ json: { query } }]]);
79
+ void context.addOutputData(n8n_workflow_1.NodeConnectionTypes.AiTool, index, e);
80
+ return e.toString();
81
+ }
82
+ };
83
+ return new tools_1.DynamicTool({
84
+ name,
85
+ description: (0, exports.prepareFallbackToolDescription)(description, schema),
86
+ func: wrappedFunc,
87
+ });
88
+ }
89
+ }
90
+ exports.N8nTool = N8nTool;
91
+ //# sourceMappingURL=n8nTool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"n8nTool.js","sourceRoot":"","sources":["../../../../../nodes/shared/core/tools/n8nTool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { JSONSchema7 } from 'json-schema';
2
+ import type { IExecuteFunctions } from 'n8n-workflow';
3
+ import type { z } from 'zod';
4
+ export declare function generateSchema(schemaString: string): JSONSchema7;
5
+ export declare function convertJsonSchemaToZod<T extends z.ZodTypeAny = z.ZodTypeAny>(schema: JSONSchema7): T;
6
+ export declare function throwIfToolSchema(ctx: IExecuteFunctions, error: Error): void;
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generateSchema = generateSchema;
4
+ exports.convertJsonSchemaToZod = convertJsonSchemaToZod;
5
+ exports.throwIfToolSchema = throwIfToolSchema;
6
+ const json_schema_to_zod_1 = require("@n8n/json-schema-to-zod");
7
+ const n8n_workflow_1 = require("n8n-workflow");
8
+ const generate_schema_1 = require("generate-schema");
9
+ function generateSchema(schemaString) {
10
+ const parsedSchema = (0, n8n_workflow_1.jsonParse)(schemaString);
11
+ return (0, generate_schema_1.json)(parsedSchema);
12
+ }
13
+ function convertJsonSchemaToZod(schema) {
14
+ return (0, json_schema_to_zod_1.jsonSchemaToZod)(schema);
15
+ }
16
+ function throwIfToolSchema(ctx, error) {
17
+ var _a;
18
+ if ((_a = error === null || error === void 0 ? void 0 : error.message) === null || _a === void 0 ? void 0 : _a.includes('tool input did not match expected schema')) {
19
+ throw new n8n_workflow_1.NodeOperationError(ctx.getNode(), `${error.message}.
20
+ This is most likely because some of your tools are configured to require a specific schema. This is not supported by Conversational Agent. Remove the schema from the tool configuration or use Tools agent instead.`);
21
+ }
22
+ }
23
+ //# sourceMappingURL=schemaGenerator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemaGenerator.js","sourceRoot":"","sources":["../../../../../nodes/shared/core/tools/schemaGenerator.ts"],"names":[],"mappings":";;AAWA,wCAIC;AAED,wDAEC;AAED,8CAQC;AA3BD,gEAA0D;AAG1D,+CAA6D;AAG7D,qDAA6D;AAG7D,SAAgB,cAAc,CAAC,YAAoB;IAClD,MAAM,YAAY,GAAG,IAAA,wBAAS,EAAe,YAAY,CAAC,CAAC;IAE3D,OAAO,IAAA,sBAAkB,EAAC,YAAY,CAAgB,CAAC;AACxD,CAAC;AAED,SAAgB,sBAAsB,CAAwC,MAAmB;IAChG,OAAO,IAAA,oCAAe,EAAI,MAAM,CAAC,CAAC;AACnC,CAAC;AAED,SAAgB,iBAAiB,CAAC,GAAsB,EAAE,KAAY;;IACrE,IAAI,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO,0CAAE,QAAQ,CAAC,0CAA0C,CAAC,EAAE,CAAC;QAC1E,MAAM,IAAI,iCAAkB,CAC3B,GAAG,CAAC,OAAO,EAAE,EACb,GAAG,KAAK,CAAC,OAAO;wNACqM,CACrN,CAAC;IACH,CAAC;AACF,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { IExecuteFunctions, IDataObject } from 'n8n-workflow';
2
+ export declare function setupTools(executeFunctions: IExecuteFunctions, structuredOutputToolsMode: boolean, responseFormat: IDataObject | undefined): Promise<{
3
+ tools: any[];
4
+ invokableTools: any[];
5
+ tool_choice: string | undefined;
6
+ structuredOutputTool: IDataObject | undefined;
7
+ updatedResponseFormat: IDataObject | undefined;
8
+ }>;
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.setupTools = setupTools;
4
+ const connector_1 = require("./connector");
5
+ const utils_1 = require("../../api/utils");
6
+ async function setupTools(executeFunctions, structuredOutputToolsMode, responseFormat) {
7
+ let tools = [];
8
+ let externalTools = [];
9
+ const enforceUniqueNames = true;
10
+ let tool_choice = undefined;
11
+ let structuredOutputTool = undefined;
12
+ let updatedResponseFormat = responseFormat;
13
+ try {
14
+ externalTools = await (0, connector_1.getConnectedTools)(executeFunctions, enforceUniqueNames, false);
15
+ }
16
+ catch (error) {
17
+ console.error('Error getting connected tools:', error);
18
+ console.error('Continue execution without tools');
19
+ externalTools = [];
20
+ }
21
+ let invokableTools = [];
22
+ if (externalTools.length) {
23
+ for (const tool of externalTools) {
24
+ if ('tools' in tool && Array.isArray(tool.tools)) {
25
+ for (const subTool of tool.tools) {
26
+ invokableTools.push(subTool);
27
+ }
28
+ }
29
+ else {
30
+ invokableTools.push(tool);
31
+ }
32
+ }
33
+ }
34
+ tools = invokableTools.map(utils_1.formatToOpenAITool);
35
+ if (structuredOutputToolsMode && responseFormat && responseFormat.json_schema) {
36
+ const jsonSchema = responseFormat.json_schema;
37
+ structuredOutputTool = {
38
+ type: 'function',
39
+ function: {
40
+ name: jsonSchema.name,
41
+ description: jsonSchema.description ||
42
+ 'Call this function last, when you are ready to generate the final response to the user',
43
+ parameters: jsonSchema.schema,
44
+ },
45
+ };
46
+ tools.push(structuredOutputTool);
47
+ invokableTools.push({ name: structuredOutputTool.function.name });
48
+ tool_choice = 'required';
49
+ updatedResponseFormat = undefined;
50
+ }
51
+ return {
52
+ tools,
53
+ invokableTools,
54
+ tool_choice,
55
+ structuredOutputTool,
56
+ updatedResponseFormat,
57
+ };
58
+ }
59
+ //# sourceMappingURL=setup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../../../../nodes/shared/core/tools/setup.ts"],"names":[],"mappings":";;AAQA,gCAsEC;AA5ED,2CAAgD;AAChD,2CAAqD;AAK9C,KAAK,UAAU,UAAU,CAC/B,gBAAmC,EACnC,yBAAkC,EAClC,cAAuC;IAQvC,IAAI,KAAK,GAAU,EAAE,CAAC;IACtB,IAAI,aAAa,GAAW,EAAE,CAAC;IAC/B,MAAM,kBAAkB,GAAG,IAAI,CAAC;IAChC,IAAI,WAAW,GAAG,SAAS,CAAC;IAC5B,IAAI,oBAAoB,GAAG,SAAS,CAAC;IACrC,IAAI,qBAAqB,GAAG,cAAc,CAAC;IAE3C,IAAI,CAAC;QACJ,aAAa,GAAG,MAAM,IAAA,6BAAiB,EAAC,gBAAgB,EAAE,kBAAkB,EAAE,KAAK,CAAC,CAAC;IACtF,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,OAAO,CAAC,KAAK,CAAC,gCAAgC,EAAE,KAAK,CAAC,CAAC;QAEvD,OAAO,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC;QAClD,aAAa,GAAG,EAAE,CAAC;IACpB,CAAC;IAED,IAAI,cAAc,GAAU,EAAE,CAAC;IAE/B,IAAI,aAAa,CAAC,MAAM,EAAE,CAAC;QAE1B,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;YAElC,IAAI,OAAO,IAAI,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gBAClD,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;oBAClC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAC9B,CAAC;YACF,CAAC;iBAAM,CAAC;gBACP,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC3B,CAAC;QACF,CAAC;IACF,CAAC;IAED,KAAK,GAAG,cAAc,CAAC,GAAG,CAAC,0BAAkB,CAAC,CAAC;IAE/C,IAAI,yBAAyB,IAAI,cAAc,IAAI,cAAc,CAAC,WAAW,EAAE,CAAC;QAC/E,MAAM,UAAU,GAAG,cAAc,CAAC,WAA0B,CAAC;QAC7D,oBAAoB,GAAG;YACtB,IAAI,EAAE,UAAmB;YACzB,QAAQ,EAAE;gBACT,IAAI,EAAE,UAAU,CAAC,IAAc;gBAC/B,WAAW,EACT,UAAU,CAAC,WAAsB;oBAClC,wFAAwF;gBACzF,UAAU,EAAE,UAAU,CAAC,MAAqB;aAC5C;SACD,CAAC;QACF,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QACjC,cAAc,CAAC,IAAI,CAAC,EAAE,IAAI,EAAG,oBAAoB,CAAC,QAAwB,CAAC,IAAc,EAAE,CAAC,CAAC;QAC7F,WAAW,GAAG,UAAU,CAAC;QACzB,qBAAqB,GAAG,SAAS,CAAC;IACnC,CAAC;IAED,OAAO;QACN,KAAK;QACL,cAAc;QACd,WAAW;QACX,oBAAoB;QACpB,qBAAqB;KACrB,CAAC;AACH,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { Tool } from '@langchain/core/tools';
2
+ import { IExecuteFunctions } from 'n8n-workflow';
3
+ export declare class SubagentTool extends Tool {
4
+ static lc_name(): string;
5
+ get lc_namespace(): string[];
6
+ name: string;
7
+ description: string;
8
+ private executeFunctions;
9
+ constructor(executeFunctions: IExecuteFunctions);
10
+ _call(parentMessageContent?: string | object): Promise<string>;
11
+ }
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SubagentTool = void 0;
4
+ const tools_1 = require("@langchain/core/tools");
5
+ const n8n_workflow_1 = require("n8n-workflow");
6
+ const router_1 = require("../execution/router");
7
+ class SubagentTool extends tools_1.Tool {
8
+ static lc_name() {
9
+ return 'SubagentTool';
10
+ }
11
+ get lc_namespace() {
12
+ return [...super.lc_namespace, 'subagentTool'];
13
+ }
14
+ constructor(executeFunctions) {
15
+ super();
16
+ this.name = 'placeholder_name';
17
+ this.description = `Placeholder description`;
18
+ this.executeFunctions = executeFunctions;
19
+ }
20
+ async _call(parentMessageContent = '') {
21
+ if (!this.executeFunctions) {
22
+ return "Error: Tool is not properly initialized. Make sure it's connected to a root node in the workflow.";
23
+ }
24
+ try {
25
+ let parentMessageContentStr = '';
26
+ let parentMessageContentObj = {};
27
+ if (typeof parentMessageContent === 'object') {
28
+ parentMessageContentObj = parentMessageContent;
29
+ }
30
+ else if (typeof parentMessageContent === 'string') {
31
+ parentMessageContentStr = parentMessageContent;
32
+ }
33
+ else {
34
+ let executionError = new n8n_workflow_1.NodeOperationError(this.executeFunctions.getNode(), 'Wrong output type returned', {
35
+ description: `The parentMessageContent should be a string, but it is an ${typeof parentMessageContent}`,
36
+ });
37
+ return `There was an error: "${executionError.message}"`;
38
+ }
39
+ const routerOutput = await router_1.router.call(this.executeFunctions, parentMessageContentStr, parentMessageContentObj);
40
+ const response = routerOutput[0][0].json.response;
41
+ const message = response.choices[0].message;
42
+ if (message && typeof message === 'object' && 'content' in message && 'refusal' in message) {
43
+ const subAgentMessageContent = String(message.content || message.refusal);
44
+ return subAgentMessageContent;
45
+ }
46
+ else {
47
+ let executionError = new n8n_workflow_1.NodeOperationError(this.executeFunctions.getNode(), 'Wrong output type returned', {
48
+ description: `The message should be an object with fields 'content' and 'refusal', but it is an ${typeof message}: ${message}`,
49
+ });
50
+ return `There was an error: "${executionError.message}"`;
51
+ }
52
+ }
53
+ catch (error) {
54
+ console.error('Error in subagentTool:', error);
55
+ return "Error: I couldn't generate a response.";
56
+ }
57
+ }
58
+ }
59
+ exports.SubagentTool = SubagentTool;
60
+ //# sourceMappingURL=subagentTool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subagentTool.js","sourceRoot":"","sources":["../../../../../nodes/shared/core/tools/subagentTool.ts"],"names":[],"mappings":";;;AAAA,iDAA6C;AAC7C,+CAAqE;AAErE,gDAA6C;AAG7C,MAAa,YAAa,SAAQ,YAAI;IACrC,MAAM,CAAC,OAAO;QACb,OAAO,cAAc,CAAC;IACvB,CAAC;IAED,IAAI,YAAY;QACf,OAAO,CAAC,GAAG,KAAK,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;IAChD,CAAC;IAQD,YAAY,gBAAmC;QAC9C,KAAK,EAAE,CAAC;QANT,SAAI,GAAG,kBAAkB,CAAC;QAC1B,gBAAW,GAAG,yBAAyB,CAAC;QAMvC,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;IAC1C,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,uBAAwC,EAAE;QAErD,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC5B,OAAO,mGAAmG,CAAC;QAC5G,CAAC;QAED,IAAI,CAAC;YACJ,IAAI,uBAAuB,GAAW,EAAE,CAAC;YACzC,IAAI,uBAAuB,GAAW,EAAE,CAAC;YAGzC,IAAI,OAAO,oBAAoB,KAAK,QAAQ,EAAE,CAAC;gBAC9C,uBAAuB,GAAG,oBAAoB,CAAC;YAChD,CAAC;iBAAM,IAAI,OAAO,oBAAoB,KAAK,QAAQ,EAAE,CAAC;gBACrD,uBAAuB,GAAG,oBAAoB,CAAC;YAChD,CAAC;iBAAM,CAAC;gBACP,IAAI,cAAc,GAAG,IAAI,iCAAkB,CAC1C,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,EAC/B,4BAA4B,EAC5B;oBACC,WAAW,EAAE,6DAA6D,OAAO,oBAAoB,EAAE;iBACvG,CACD,CAAC;gBACF,OAAO,wBAAwB,cAAc,CAAC,OAAO,GAAG,CAAC;YAC1D,CAAC;YACD,MAAM,YAAY,GAAG,MAAM,eAAM,CAAC,IAAI,CACrC,IAAI,CAAC,gBAAgB,EACrB,uBAAuB,EACvB,uBAAuB,CACvB,CAAC;YACF,MAAM,QAAQ,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAoB,CAAC;YAC9D,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;YAG5C,IAAI,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,SAAS,IAAI,OAAO,IAAI,SAAS,IAAI,OAAO,EAAE,CAAC;gBAC5F,MAAM,sBAAsB,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;gBAC1E,OAAO,sBAAsB,CAAC;YAC/B,CAAC;iBAAM,CAAC;gBACP,IAAI,cAAc,GAAG,IAAI,iCAAkB,CAC1C,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,EAC/B,4BAA4B,EAC5B;oBACC,WAAW,EAAE,qFAAqF,OAAO,OAAO,KAAK,OAAO,EAAE;iBAC9H,CACD,CAAC;gBACF,OAAO,wBAAwB,cAAc,CAAC,OAAO,GAAG,CAAC;YAC1D,CAAC;QACF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;YAC/C,OAAO,wCAAwC,CAAC;QACjD,CAAC;IACF,CAAC;CACD;AAxED,oCAwEC"}
@@ -1 +1 @@
1
- export * as listSearch from './listSearch';
1
+ export * as listSearch from '../utils/listSearch';
@@ -34,5 +34,5 @@ var __importStar = (this && this.__importStar) || (function () {
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.listSearch = void 0;
37
- exports.listSearch = __importStar(require("./listSearch"));
37
+ exports.listSearch = __importStar(require("../utils/listSearch"));
38
38
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../nodes/shared/methods/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2DAA2C"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../nodes/shared/methods/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kEAAkD"}
@@ -1,2 +1,5 @@
1
1
  import type { ILoadOptionsFunctions, INodeListSearchResult } from 'n8n-workflow';
2
2
  export declare function modelSearch(this: ILoadOptionsFunctions, filter?: string): Promise<INodeListSearchResult>;
3
+ export declare const listSearch: {
4
+ modelSearch: typeof modelSearch;
5
+ };
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.listSearch = void 0;
3
4
  exports.modelSearch = modelSearch;
4
5
  const openAiApiRequest_1 = require("../api/openAiApiRequest");
5
6
  const getModelSearch = (filterCondition) => async (ctx, filter) => {
@@ -31,4 +32,7 @@ const getModelSearch = (filterCondition) => async (ctx, filter) => {
31
32
  async function modelSearch(filter) {
32
33
  return await getModelSearch(() => true)(this, filter);
33
34
  }
35
+ exports.listSearch = {
36
+ modelSearch,
37
+ };
34
38
  //# sourceMappingURL=listSearch.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"listSearch.js","sourceRoot":"","sources":["../../../../nodes/shared/methods/listSearch.ts"],"names":[],"mappings":";;AAyCA,kCAWC;AA7CD,8DAA2D;AAE3D,MAAM,cAAc,GACnB,CAAC,eAA0C,EAAE,EAAE,CAC/C,KAAK,EAAE,GAA0B,EAAE,MAAe,EAAkC,EAAE;;IACrF,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,mCAAgB,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,SAAS,CAAC,CAAsB,CAAC;IAEzF,IAAI,GAAG,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC;IAEvD,IAAI,OAAO,GAA2B,EAAE,CAAC;IAEzC,IAAI,MAAM,EAAE,CAAC;QACZ,KAAK,MAAM,KAAK,IAAI,IAAI,IAAI,EAAE,EAAE,CAAC;YAChC,IAAI,MAAA,KAAK,CAAC,EAAE,0CAAE,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;gBAC5D,OAAO,CAAC,IAAI,CAAC;oBACZ,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,WAAW,EAAE;oBAC5B,KAAK,EAAE,KAAK,CAAC,EAAE;iBACf,CAAC,CAAC;YACJ,CAAC;QACF,CAAC;IACF,CAAC;SAAM,CAAC;QACP,OAAO,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACtC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,WAAW,EAAE;YAC5B,KAAK,EAAE,KAAK,CAAC,EAAE;SACf,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAE/D,OAAO;QACN,OAAO;KACP,CAAC;AACH,CAAC,CAAC;AAEI,KAAK,UAAU,WAAW,CAEhC,MAAe;IAEf,OAAO,MAAM,cAAc,CAE1B,GAAG,EAAE,CAAC,IAAI,CAIV,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AACjB,CAAC"}
1
+ {"version":3,"file":"listSearch.js","sourceRoot":"","sources":["../../../../nodes/shared/methods/listSearch.ts"],"names":[],"mappings":";;;AAyCA,kCAWC;AA7CD,8DAA2D;AAE3D,MAAM,cAAc,GACnB,CAAC,eAA0C,EAAE,EAAE,CAC/C,KAAK,EAAE,GAA0B,EAAE,MAAe,EAAkC,EAAE;;IACrF,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,mCAAgB,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,SAAS,CAAC,CAAsB,CAAC;IAEzF,IAAI,GAAG,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC;IAEvD,IAAI,OAAO,GAA2B,EAAE,CAAC;IAEzC,IAAI,MAAM,EAAE,CAAC;QACZ,KAAK,MAAM,KAAK,IAAI,IAAI,IAAI,EAAE,EAAE,CAAC;YAChC,IAAI,MAAA,KAAK,CAAC,EAAE,0CAAE,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;gBAC5D,OAAO,CAAC,IAAI,CAAC;oBACZ,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,WAAW,EAAE;oBAC5B,KAAK,EAAE,KAAK,CAAC,EAAE;iBACf,CAAC,CAAC;YACJ,CAAC;QACF,CAAC;IACF,CAAC;SAAM,CAAC;QACP,OAAO,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACtC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,WAAW,EAAE;YAC5B,KAAK,EAAE,KAAK,CAAC,EAAE;SACf,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAE/D,OAAO;QACN,OAAO;KACP,CAAC;AACH,CAAC,CAAC;AAEI,KAAK,UAAU,WAAW,CAEhC,MAAe;IAEf,OAAO,MAAM,cAAc,CAE1B,GAAG,EAAE,CAAC,IAAI,CAIV,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AACjB,CAAC;AAGY,QAAA,UAAU,GAAG;IACzB,WAAW;CACX,CAAC"}
@@ -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>;