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.
- package/dist/nodes/CoreAgent/CoreAgent.node.d.ts +3 -2
- package/dist/nodes/CoreAgent/CoreAgent.node.js +3 -3
- package/dist/nodes/CoreAgent/CoreAgent.node.js.map +1 -1
- package/dist/nodes/CoreAgent/description.js +1 -1
- package/dist/nodes/CoreAgent/description.js.map +1 -1
- package/dist/nodes/Subagent/Subagent.node.d.ts +3 -2
- package/dist/nodes/Subagent/Subagent.node.js +5 -5
- package/dist/nodes/Subagent/Subagent.node.js.map +1 -1
- package/dist/nodes/Subagent/description.js +1 -1
- package/dist/nodes/Subagent/description.js.map +1 -1
- package/dist/nodes/shared/assets/gradientRobot.svg +11 -0
- package/dist/nodes/shared/assets/gradientRobotRed.svg +11 -0
- package/dist/nodes/shared/config/descriptionGenerator.d.ts +2 -0
- package/dist/nodes/shared/config/descriptionGenerator.js +36 -0
- package/dist/nodes/shared/config/descriptionGenerator.js.map +1 -0
- package/dist/nodes/shared/config/parameters.d.ts +26 -0
- package/dist/nodes/shared/config/parameters.js +35 -0
- package/dist/nodes/shared/config/parameters.js.map +1 -0
- package/dist/nodes/shared/config/properties/index.d.ts +2 -0
- package/dist/nodes/shared/config/properties/index.js +16 -0
- package/dist/nodes/shared/config/properties/index.js.map +1 -0
- package/dist/nodes/shared/config/properties/memory.d.ts +2 -0
- package/dist/nodes/shared/config/properties/memory.js +5 -0
- package/dist/nodes/shared/config/properties/memory.js.map +1 -0
- package/dist/nodes/shared/config/properties/messages.d.ts +2 -0
- package/dist/nodes/shared/config/properties/messages.js +109 -0
- package/dist/nodes/shared/config/properties/messages.js.map +1 -0
- package/dist/nodes/shared/config/properties/model.d.ts +2 -0
- package/dist/nodes/shared/config/properties/model.js +30 -0
- package/dist/nodes/shared/config/properties/model.js.map +1 -0
- package/dist/nodes/shared/config/properties/options.d.ts +2 -0
- package/dist/nodes/shared/config/properties/options.js +105 -0
- package/dist/nodes/shared/config/properties/options.js.map +1 -0
- package/dist/nodes/shared/config/properties/output.d.ts +2 -0
- package/dist/nodes/shared/config/properties/output.js +322 -0
- package/dist/nodes/shared/config/properties/output.js.map +1 -0
- package/dist/nodes/shared/config/properties/tools.d.ts +2 -0
- package/dist/nodes/shared/config/properties/tools.js +5 -0
- package/dist/nodes/shared/config/properties/tools.js.map +1 -0
- package/dist/nodes/shared/config/responseConfig.d.ts +3 -0
- package/dist/nodes/shared/config/responseConfig.js +26 -0
- package/dist/nodes/shared/config/responseConfig.js.map +1 -0
- package/dist/nodes/shared/core/execution/executor.d.ts +7 -0
- package/dist/nodes/shared/core/execution/executor.js +61 -0
- package/dist/nodes/shared/core/execution/executor.js.map +1 -0
- package/dist/nodes/shared/core/execution/messageOperation.d.ts +2 -0
- package/dist/nodes/shared/core/execution/messageOperation.js +14 -0
- package/dist/nodes/shared/core/execution/messageOperation.js.map +1 -0
- package/dist/nodes/shared/core/execution/router.d.ts +2 -0
- package/dist/nodes/shared/core/execution/router.js +117 -0
- package/dist/nodes/shared/core/execution/router.js.map +1 -0
- package/dist/nodes/shared/core/memory/index.d.ts +2 -0
- package/dist/nodes/shared/core/memory/index.js +19 -0
- package/dist/nodes/shared/core/memory/index.js.map +1 -0
- package/dist/nodes/shared/core/memory/io.d.ts +5 -0
- package/dist/nodes/shared/core/memory/io.js +93 -0
- package/dist/nodes/shared/core/memory/io.js.map +1 -0
- package/dist/nodes/shared/core/memory/optimizer.d.ts +3 -0
- package/dist/nodes/shared/core/memory/optimizer.js +30 -0
- package/dist/nodes/shared/core/memory/optimizer.js.map +1 -0
- package/dist/nodes/shared/core/memory/properties.d.ts +2 -0
- package/dist/nodes/shared/core/memory/properties.js +5 -0
- package/dist/nodes/shared/core/memory/properties.js.map +1 -0
- package/dist/nodes/shared/core/messages/chatHistory.d.ts +2 -0
- package/dist/nodes/shared/core/messages/chatHistory.js +63 -0
- package/dist/nodes/shared/core/messages/chatHistory.js.map +1 -0
- package/dist/nodes/shared/core/messages/converter.d.ts +4 -0
- package/dist/nodes/shared/core/messages/converter.js +76 -0
- package/dist/nodes/shared/core/messages/converter.js.map +1 -0
- package/dist/nodes/shared/core/messages/memoryOptimizer.d.ts +3 -0
- package/dist/nodes/shared/core/messages/memoryOptimizer.js +30 -0
- package/dist/nodes/shared/core/messages/memoryOptimizer.js.map +1 -0
- package/dist/nodes/shared/core/messages/processor.d.ts +4 -0
- package/dist/nodes/shared/core/messages/processor.js +23 -0
- package/dist/nodes/shared/core/messages/processor.js.map +1 -0
- package/dist/nodes/shared/core/messages/toolExtractor.d.ts +6 -0
- package/dist/nodes/shared/core/messages/toolExtractor.js +28 -0
- package/dist/nodes/shared/core/messages/toolExtractor.js.map +1 -0
- package/dist/nodes/shared/core/messages/types.d.ts +48 -0
- package/dist/nodes/shared/core/messages/types.js +12 -0
- package/dist/nodes/shared/core/messages/types.js.map +1 -0
- package/dist/nodes/shared/core/tools/connector.d.ts +3 -0
- package/dist/nodes/shared/core/tools/connector.js +37 -0
- package/dist/nodes/shared/core/tools/connector.js.map +1 -0
- package/dist/nodes/shared/core/tools/executor.d.ts +6 -0
- package/dist/nodes/shared/core/tools/executor.js +124 -0
- package/dist/nodes/shared/core/tools/executor.js.map +1 -0
- package/dist/nodes/shared/core/tools/manager.d.ts +2 -0
- package/dist/nodes/shared/core/tools/manager.js +51 -0
- package/dist/nodes/shared/core/tools/manager.js.map +1 -0
- package/dist/nodes/shared/core/tools/messageExtractor.d.ts +6 -0
- package/dist/nodes/shared/core/tools/messageExtractor.js +28 -0
- package/dist/nodes/shared/core/tools/messageExtractor.js.map +1 -0
- package/dist/nodes/shared/core/tools/n8nTool.d.ts +9 -0
- package/dist/nodes/shared/core/tools/n8nTool.js +91 -0
- package/dist/nodes/shared/core/tools/n8nTool.js.map +1 -0
- package/dist/nodes/shared/core/tools/schemaGenerator.d.ts +6 -0
- package/dist/nodes/shared/core/tools/schemaGenerator.js +23 -0
- package/dist/nodes/shared/core/tools/schemaGenerator.js.map +1 -0
- package/dist/nodes/shared/core/tools/setup.d.ts +8 -0
- package/dist/nodes/shared/core/tools/setup.js +59 -0
- package/dist/nodes/shared/core/tools/setup.js.map +1 -0
- package/dist/nodes/shared/core/tools/subagentTool.d.ts +11 -0
- package/dist/nodes/shared/core/tools/subagentTool.js +60 -0
- package/dist/nodes/shared/core/tools/subagentTool.js.map +1 -0
- package/dist/nodes/shared/methods/index.d.ts +1 -1
- package/dist/nodes/shared/methods/index.js +1 -1
- package/dist/nodes/shared/methods/index.js.map +1 -1
- package/dist/nodes/shared/methods/listSearch.d.ts +3 -0
- package/dist/nodes/shared/methods/listSearch.js +4 -0
- package/dist/nodes/shared/methods/listSearch.js.map +1 -1
- package/dist/nodes/shared/processing/memory.d.ts +5 -0
- package/dist/nodes/shared/processing/memory.js +93 -0
- package/dist/nodes/shared/processing/memory.js.map +1 -0
- package/dist/nodes/shared/processing/outputProcessor.d.ts +5 -0
- package/dist/nodes/shared/processing/outputProcessor.js +112 -0
- package/dist/nodes/shared/processing/outputProcessor.js.map +1 -0
- package/dist/nodes/shared/processing/requestBuilder.d.ts +2 -0
- package/dist/nodes/shared/processing/requestBuilder.js +38 -0
- package/dist/nodes/shared/processing/requestBuilder.js.map +1 -0
- package/dist/nodes/shared/processing/visualEditor.d.ts +32 -0
- package/dist/nodes/shared/processing/visualEditor.js +70 -0
- package/dist/nodes/shared/processing/visualEditor.js.map +1 -0
- package/dist/nodes/shared/utils/descriptionGenerator.d.ts +2 -0
- package/dist/nodes/shared/utils/descriptionGenerator.js +36 -0
- package/dist/nodes/shared/utils/descriptionGenerator.js.map +1 -0
- package/dist/nodes/shared/utils/index.d.ts +1 -0
- package/dist/nodes/shared/utils/index.js +18 -0
- package/dist/nodes/shared/utils/index.js.map +1 -0
- package/dist/nodes/shared/utils/listSearch.d.ts +2 -0
- package/dist/nodes/shared/utils/listSearch.js +34 -0
- package/dist/nodes/shared/utils/listSearch.js.map +1 -0
- package/dist/package.json +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- 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,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 @@
|
|
|
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,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,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,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,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
|
+
}>;
|