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,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"}
|
|
@@ -20,20 +20,16 @@ function generateDescription(agentType, customizations) {
|
|
|
20
20
|
: [
|
|
21
21
|
{ type: 'main' },
|
|
22
22
|
{ type: 'ai_tool', displayName: 'Tools' },
|
|
23
|
-
{ type: 'ai_memory', displayName: 'Memory', maxConnections: 1 }
|
|
23
|
+
{ type: 'ai_memory', displayName: 'Memory', maxConnections: 1 },
|
|
24
24
|
],
|
|
25
|
-
outputs: agentType === 'subAgent'
|
|
26
|
-
? [{ type: 'ai_tool', displayName: 'Tool' }]
|
|
27
|
-
: [{ type: 'main' }],
|
|
25
|
+
outputs: agentType === 'subAgent' ? [{ type: 'ai_tool', displayName: 'Tool' }] : [{ type: 'main' }],
|
|
28
26
|
credentials: [
|
|
29
27
|
{
|
|
30
28
|
name: 'simpleOpenAiApi',
|
|
31
29
|
required: true,
|
|
32
30
|
},
|
|
33
31
|
],
|
|
34
|
-
properties: [
|
|
35
|
-
...(0, properties_1.getProperties)(agentType),
|
|
36
|
-
],
|
|
32
|
+
properties: [...(0, properties_1.getProperties)(agentType)],
|
|
37
33
|
...customizations,
|
|
38
34
|
};
|
|
39
35
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"descriptionGenerator.js","sourceRoot":"","sources":["../../../nodes/shared/descriptionGenerator.ts"],"names":[],"mappings":";;AAIA,
|
|
1
|
+
{"version":3,"file":"descriptionGenerator.js","sourceRoot":"","sources":["../../../nodes/shared/descriptionGenerator.ts"],"names":[],"mappings":";;AAIA,kDAqCC;AAvCD,6CAA6C;AAE7C,SAAgB,mBAAmB,CAClC,SAAiB,EACjB,cAA6C;IAE7C,OAAO;QACN,WAAW,EAAE,cAAc;QAC3B,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,EAAE;QACT,OAAO,EAAE,CAAC;QACV,WAAW,EAAE,iEAAiE;QAC9E,QAAQ,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE;QAClC,QAAQ,EACP,oHAAoH;QACrH,IAAI,EAAE;YACL,KAAK,EAAE,kCAAkC;YACzC,IAAI,EAAE,kCAAkC;SACxC;QAED,MAAM,EACL,SAAS,KAAK,UAAU;YACvB,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC;YAC7C,CAAC,CAAC;gBACA,EAAE,IAAI,EAAE,MAAM,EAAE;gBAChB,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE;gBACzC,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,cAAc,EAAE,CAAC,EAAE;aAC/D;QACJ,OAAO,EACN,SAAS,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QAC3F,WAAW,EAAE;YACZ;gBACC,IAAI,EAAE,iBAAiB;gBACvB,QAAQ,EAAE,IAAI;aACd;SACD;QACD,UAAU,EAAE,CAAC,GAAG,IAAA,0BAAa,EAAC,SAAS,CAAC,CAAC;QACzC,GAAG,cAAc;KACjB,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.unpackChatHistoryAndMemory = unpackChatHistoryAndMemory;
|
|
4
|
+
const memoryOptimizer_1 = require("./memoryOptimizer");
|
|
5
|
+
const messageConverter_1 = require("./messageConverter");
|
|
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, memoryOptimizer_1.getLastKMessages)(memory, k);
|
|
48
|
+
if (rawMemoryMessages.length === 0) {
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
const memoryMessages = (0, messageConverter_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, messageConverter_1.expandToolCallsInMessages)(processedMessages, loadToolCallsFromChatMemory);
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=chatHistoryProcessor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chatHistoryProcessor.js","sourceRoot":"","sources":["../../../../nodes/shared/message/chatHistoryProcessor.ts"],"names":[],"mappings":";;AAYA,gEA2EC;AArFD,uDAAqD;AACrD,yDAAgF;AASzE,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,kCAAgB,EAAC,MAAM,EAAE,CAAC,CAAC,CAAC;oBAG3E,IAAI,iBAAiB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAErC,CAAC;yBAAM,CAAC;wBAEP,MAAM,cAAc,GAAc,IAAA,kCAAe,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,4CAAyB,EAAC,iBAAiB,EAAE,2BAA2B,CAAC,CAAC;AAClF,CAAC"}
|
|
@@ -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/message/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 { 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=messageConverter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"messageConverter.js","sourceRoot":"","sources":["../../../../nodes/shared/message/messageConverter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
export
|
|
3
|
-
export
|
|
4
|
-
tool: string;
|
|
5
|
-
input: string;
|
|
6
|
-
output: string;
|
|
7
|
-
}[];
|
|
1
|
+
export { convertMessages, expandToolCallsInMessages } from './messageConverter';
|
|
2
|
+
export { extractToolMessages } from './toolMessageExtractor';
|
|
3
|
+
export { unpackChatHistoryAndMemory } from './chatHistoryProcessor';
|
|
@@ -1,86 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.unpackChatHistoryAndMemory =
|
|
4
|
-
|
|
5
|
-
function
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
};
|
|
12
|
-
});
|
|
13
|
-
}
|
|
14
|
-
async function unpackChatHistoryAndMemory(rawMessagesToSend, memory) {
|
|
15
|
-
const processedMessages = [];
|
|
16
|
-
for (const rawMessage of rawMessagesToSend) {
|
|
17
|
-
if (rawMessage.role !== "chatHistoryRole" && rawMessage.role !== "chatMemoryRole") {
|
|
18
|
-
processedMessages.push(rawMessage);
|
|
19
|
-
}
|
|
20
|
-
else if (rawMessage.role === "chatHistoryRole") {
|
|
21
|
-
try {
|
|
22
|
-
let chatHistory;
|
|
23
|
-
if (typeof rawMessage.chatHistoryJson === 'string') {
|
|
24
|
-
chatHistory = JSON.parse(rawMessage.chatHistoryJson || "[]");
|
|
25
|
-
}
|
|
26
|
-
else {
|
|
27
|
-
chatHistory = rawMessage.chatHistoryJson;
|
|
28
|
-
}
|
|
29
|
-
if (Array.isArray(chatHistory)) {
|
|
30
|
-
processedMessages.push(...chatHistory);
|
|
31
|
-
}
|
|
32
|
-
else {
|
|
33
|
-
processedMessages.push({
|
|
34
|
-
role: "user",
|
|
35
|
-
content: JSON.stringify(rawMessage.chatHistoryJson),
|
|
36
|
-
});
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
catch (error) {
|
|
40
|
-
processedMessages.push({
|
|
41
|
-
role: "user",
|
|
42
|
-
content: JSON.stringify(rawMessage.chatHistoryJson),
|
|
43
|
-
});
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
else if (rawMessage.role === "chatMemoryRole" && memory && memory.chatHistory) {
|
|
47
|
-
try {
|
|
48
|
-
const rawMemoryMessages = await memory.chatHistory.getMessages();
|
|
49
|
-
const memoryMessages = convertMessages(rawMemoryMessages);
|
|
50
|
-
const k = memory.k || memoryMessages.length;
|
|
51
|
-
const lastKMemoryMessages = memoryMessages.slice(-k);
|
|
52
|
-
processedMessages.push(...lastKMemoryMessages);
|
|
53
|
-
}
|
|
54
|
-
catch (error) {
|
|
55
|
-
console.error('Error retrieving messages from memory:', error);
|
|
56
|
-
}
|
|
57
|
-
;
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
return processedMessages;
|
|
61
|
-
}
|
|
62
|
-
function extractToolMessages(messagesFromRequestBody) {
|
|
63
|
-
const toolMessagesFromRequestBody = messagesFromRequestBody.filter((msg) => msg.role === "tool");
|
|
64
|
-
const processedToolMessages = [];
|
|
65
|
-
for (const message of messagesFromRequestBody) {
|
|
66
|
-
if (message.role === "assistant" && message.tool_calls && message.tool_calls.length > 0) {
|
|
67
|
-
for (const toolCall of message.tool_calls) {
|
|
68
|
-
const toolName = toolCall.function.name;
|
|
69
|
-
let toolInput = JSON.parse(toolCall.function.arguments);
|
|
70
|
-
if (toolInput.input && Object.entries(toolInput).length === 1) {
|
|
71
|
-
toolInput = toolInput.input;
|
|
72
|
-
}
|
|
73
|
-
const toolMessage = toolMessagesFromRequestBody.find((toolMsg) => toolMsg.tool_call_id === toolCall.id);
|
|
74
|
-
if (toolMessage) {
|
|
75
|
-
processedToolMessages.push({
|
|
76
|
-
tool: toolName,
|
|
77
|
-
input: toolInput,
|
|
78
|
-
output: toolMessage.content
|
|
79
|
-
});
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
return processedToolMessages;
|
|
85
|
-
}
|
|
3
|
+
exports.unpackChatHistoryAndMemory = exports.extractToolMessages = exports.expandToolCallsInMessages = exports.convertMessages = void 0;
|
|
4
|
+
var messageConverter_1 = require("./messageConverter");
|
|
5
|
+
Object.defineProperty(exports, "convertMessages", { enumerable: true, get: function () { return messageConverter_1.convertMessages; } });
|
|
6
|
+
Object.defineProperty(exports, "expandToolCallsInMessages", { enumerable: true, get: function () { return messageConverter_1.expandToolCallsInMessages; } });
|
|
7
|
+
var toolMessageExtractor_1 = require("./toolMessageExtractor");
|
|
8
|
+
Object.defineProperty(exports, "extractToolMessages", { enumerable: true, get: function () { return toolMessageExtractor_1.extractToolMessages; } });
|
|
9
|
+
var chatHistoryProcessor_1 = require("./chatHistoryProcessor");
|
|
10
|
+
Object.defineProperty(exports, "unpackChatHistoryAndMemory", { enumerable: true, get: function () { return chatHistoryProcessor_1.unpackChatHistoryAndMemory; } });
|
|
86
11
|
//# sourceMappingURL=processor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"processor.js","sourceRoot":"","sources":["../../../../nodes/shared/message/processor.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"processor.js","sourceRoot":"","sources":["../../../../nodes/shared/message/processor.ts"],"names":[],"mappings":";;;AAGA,uDAAgF;AAAvE,mHAAA,eAAe,OAAA;AAAE,6HAAA,yBAAyB,OAAA;AACnD,+DAA6D;AAApD,2HAAA,mBAAmB,OAAA;AAC5B,+DAAoE;AAA3D,kIAAA,0BAA0B,OAAA"}
|
|
@@ -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=toolMessageExtractor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toolMessageExtractor.js","sourceRoot":"","sources":["../../../../nodes/shared/message/toolMessageExtractor.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"}
|
|
@@ -12,6 +12,8 @@ export type Message = {
|
|
|
12
12
|
tool_calls?: ToolCall[];
|
|
13
13
|
tool_call_id?: string;
|
|
14
14
|
refusal?: string | null;
|
|
15
|
+
saveToolCallsInChatMemory?: boolean;
|
|
16
|
+
loadToolCallsFromChatMemory?: boolean;
|
|
15
17
|
};
|
|
16
18
|
export type RawMessage = Message & {
|
|
17
19
|
chatHistoryJson?: string | object[] | null;
|
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.isValidMessage = isValidMessage;
|
|
4
4
|
function isValidMessage(item) {
|
|
5
|
-
return (typeof item ===
|
|
5
|
+
return (typeof item === 'object' &&
|
|
6
6
|
item !== null &&
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
typeof item.role ===
|
|
10
|
-
(typeof item.content ===
|
|
7
|
+
'role' in item &&
|
|
8
|
+
'content' in item &&
|
|
9
|
+
typeof item.role === 'string' &&
|
|
10
|
+
(typeof item.content === 'string' || item.content === null));
|
|
11
11
|
}
|
|
12
12
|
//# sourceMappingURL=types.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../nodes/shared/message/types.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../nodes/shared/message/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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export * as listSearch from '
|
|
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("
|
|
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,
|
|
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":"
|
|
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"}
|