n8n-nodes-simple 2.0.1 → 2.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/credentials/SimpleOpenAiApi.credentials.js +1 -1
- package/dist/credentials/SimpleOpenAiApi.credentials.js.map +1 -1
- 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 +15 -3
- 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 +16 -3
- package/dist/nodes/Subagent/description.js.map +1 -1
- package/dist/nodes/shared/actions/executor.js +1 -1
- package/dist/nodes/shared/actions/executor.js.map +1 -1
- package/dist/nodes/shared/actions/memory.d.ts +1 -1
- package/dist/nodes/shared/actions/memory.js +71 -19
- package/dist/nodes/shared/actions/memory.js.map +1 -1
- package/dist/nodes/shared/actions/message.operation.js +1 -1
- package/dist/nodes/shared/actions/message.operation.js.map +1 -1
- package/dist/nodes/shared/actions/messageProcessor.d.ts +1 -1
- package/dist/nodes/shared/actions/messageProcessor.js +9 -7
- package/dist/nodes/shared/actions/messageProcessor.js.map +1 -1
- package/dist/nodes/shared/actions/outputProcessor.js +29 -21
- package/dist/nodes/shared/actions/outputProcessor.js.map +1 -1
- package/dist/nodes/shared/actions/parameters.d.ts +2 -0
- package/dist/nodes/shared/actions/parameters.js +8 -1
- package/dist/nodes/shared/actions/parameters.js.map +1 -1
- package/dist/nodes/shared/actions/requestBuilder.js +2 -2
- package/dist/nodes/shared/actions/requestBuilder.js.map +1 -1
- package/dist/nodes/shared/actions/responseConfig.js +2 -2
- package/dist/nodes/shared/actions/responseConfig.js.map +1 -1
- package/dist/nodes/shared/actions/router.js +2 -2
- package/dist/nodes/shared/actions/router.js.map +1 -1
- package/dist/nodes/shared/actions/tool.js.map +1 -1
- package/dist/nodes/shared/actions/toolExecutor.js +78 -21
- package/dist/nodes/shared/actions/toolExecutor.js.map +1 -1
- package/dist/nodes/shared/actions/toolSetup.js +6 -5
- package/dist/nodes/shared/actions/toolSetup.js.map +1 -1
- package/dist/nodes/shared/api/openAiApiRequest.js.map +1 -1
- package/dist/nodes/shared/api/types.d.ts +2 -0
- package/dist/nodes/shared/api/utils.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/descriptionGenerator.js +3 -7
- package/dist/nodes/shared/descriptionGenerator.js.map +1 -1
- package/dist/nodes/shared/message/chatHistoryProcessor.d.ts +2 -0
- package/dist/nodes/shared/message/chatHistoryProcessor.js +63 -0
- package/dist/nodes/shared/message/chatHistoryProcessor.js.map +1 -0
- package/dist/nodes/shared/message/memoryOptimizer.d.ts +3 -0
- package/dist/nodes/shared/message/memoryOptimizer.js +30 -0
- package/dist/nodes/shared/message/memoryOptimizer.js.map +1 -0
- package/dist/nodes/shared/message/messageConverter.d.ts +4 -0
- package/dist/nodes/shared/message/messageConverter.js +76 -0
- package/dist/nodes/shared/message/messageConverter.js.map +1 -0
- package/dist/nodes/shared/message/processor.d.ts +3 -7
- package/dist/nodes/shared/message/processor.js +8 -83
- package/dist/nodes/shared/message/processor.js.map +1 -1
- package/dist/nodes/shared/message/toolMessageExtractor.d.ts +6 -0
- package/dist/nodes/shared/message/toolMessageExtractor.js +28 -0
- package/dist/nodes/shared/message/toolMessageExtractor.js.map +1 -0
- package/dist/nodes/shared/message/types.d.ts +2 -0
- package/dist/nodes/shared/message/types.js +5 -5
- package/dist/nodes/shared/message/types.js.map +1 -1
- 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/properties.js +75 -41
- package/dist/nodes/shared/properties.js.map +1 -1
- package/dist/nodes/shared/tool/subagentTool.d.ts +1 -1
- package/dist/nodes/shared/tool/subagentTool.js +4 -4
- package/dist/nodes/shared/tool/subagentTool.js.map +1 -1
- package/dist/nodes/shared/tool/visualEditor.d.ts +1 -1
- package/dist/nodes/shared/tool/visualEditor.js +20 -16
- package/dist/nodes/shared/tool/visualEditor.js.map +1 -1
- package/dist/nodes/shared/toolManager/getConnectedTools.js.map +1 -1
- package/dist/nodes/shared/toolManager/n8nTool.js.map +1 -1
- 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,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
|
+
}>;
|
|
@@ -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,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,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
|
+
}>;
|