n8n-nodes-ai-agent-langfuse 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/README.md +149 -0
  2. package/dist/credentials/LangfuseApi.credentials.d.ts +10 -0
  3. package/dist/credentials/LangfuseApi.credentials.js +58 -0
  4. package/dist/credentials/LangfuseApi.credentials.js.map +1 -0
  5. package/dist/credentials/LangfuseApi.icon.svg +9 -0
  6. package/dist/nodes/AgentWithLangfuse/AgentWithLangfuse.icon.svg +7 -0
  7. package/dist/nodes/AgentWithLangfuse/AgentWithLangfuse.node.d.ts +5 -0
  8. package/dist/nodes/AgentWithLangfuse/AgentWithLangfuse.node.js +173 -0
  9. package/dist/nodes/AgentWithLangfuse/AgentWithLangfuse.node.js.map +1 -0
  10. package/dist/nodes/AgentWithLangfuse/AgentWithLangfuseDark.icon.svg +10 -0
  11. package/dist/nodes/AgentWithLangfuse/AgentWithLangfuseLight.icon.svg +10 -0
  12. package/dist/nodes/AgentWithLangfuse/V2/description.d.ts +4 -0
  13. package/dist/nodes/AgentWithLangfuse/V2/description.js +46 -0
  14. package/dist/nodes/AgentWithLangfuse/V2/description.js.map +1 -0
  15. package/dist/nodes/AgentWithLangfuse/V2/execute.d.ts +2 -0
  16. package/dist/nodes/AgentWithLangfuse/V2/execute.js +142 -0
  17. package/dist/nodes/AgentWithLangfuse/V2/execute.js.map +1 -0
  18. package/dist/nodes/AgentWithLangfuse/V2/utils.d.ts +2 -0
  19. package/dist/nodes/AgentWithLangfuse/V2/utils.js +70 -0
  20. package/dist/nodes/AgentWithLangfuse/V2/utils.js.map +1 -0
  21. package/dist/package.json +68 -0
  22. package/dist/src/types/types.d.ts +6 -0
  23. package/dist/src/types/types.js +3 -0
  24. package/dist/src/types/types.js.map +1 -0
  25. package/dist/src/utils/N8nOutputParser.d.ts +5 -0
  26. package/dist/src/utils/N8nOutputParser.js +14 -0
  27. package/dist/src/utils/N8nOutputParser.js.map +1 -0
  28. package/dist/src/utils/N8nTool.d.ts +10 -0
  29. package/dist/src/utils/N8nTool.js +86 -0
  30. package/dist/src/utils/N8nTool.js.map +1 -0
  31. package/dist/src/utils/common.d.ts +28 -0
  32. package/dist/src/utils/common.js +197 -0
  33. package/dist/src/utils/common.js.map +1 -0
  34. package/dist/src/utils/descriptions.d.ts +17 -0
  35. package/dist/src/utils/descriptions.js +135 -0
  36. package/dist/src/utils/descriptions.js.map +1 -0
  37. package/dist/src/utils/helpers.d.ts +24 -0
  38. package/dist/src/utils/helpers.js +221 -0
  39. package/dist/src/utils/helpers.js.map +1 -0
  40. package/dist/src/utils/options.d.ts +2 -0
  41. package/dist/src/utils/options.js +38 -0
  42. package/dist/src/utils/options.js.map +1 -0
  43. package/dist/src/utils/output_parsers/N8nStructuredOutputParser.d.ts +12 -0
  44. package/dist/src/utils/output_parsers/N8nStructuredOutputParser.js +105 -0
  45. package/dist/src/utils/output_parsers/N8nStructuredOutputParser.js.map +1 -0
  46. package/dist/src/utils/prompt.d.ts +1 -0
  47. package/dist/src/utils/prompt.js +5 -0
  48. package/dist/src/utils/prompt.js.map +1 -0
  49. package/dist/src/utils/sharedFields.d.ts +8 -0
  50. package/dist/src/utils/sharedFields.js +150 -0
  51. package/dist/src/utils/sharedFields.js.map +1 -0
  52. package/dist/tsconfig.tsbuildinfo +1 -0
  53. package/index.js +0 -0
  54. package/package.json +68 -0
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getInputs = getInputs;
4
+ function getInputs(hasMainInput, hasOutputParser, needsFallback) {
5
+ const getInputData = (inputs) => {
6
+ return inputs.map(({ type, filter, displayName, required }) => {
7
+ const input = {
8
+ type,
9
+ displayName,
10
+ required,
11
+ maxConnections: ['ai_languageModel', 'ai_memory', 'ai_outputParser'].includes(type)
12
+ ? 1
13
+ : undefined,
14
+ };
15
+ if (filter) {
16
+ input.filter = filter;
17
+ }
18
+ return input;
19
+ });
20
+ };
21
+ let specialInputs = [
22
+ {
23
+ type: 'ai_languageModel',
24
+ displayName: 'Chat Model',
25
+ required: true,
26
+ filter: {
27
+ excludedNodes: [
28
+ '@n8n/n8n-nodes-langchain.lmCohere',
29
+ '@n8n/n8n-nodes-langchain.lmOllama',
30
+ 'n8n/n8n-nodes-langchain.lmOpenAi',
31
+ '@n8n/n8n-nodes-langchain.lmOpenHuggingFaceInference',
32
+ ],
33
+ },
34
+ },
35
+ {
36
+ type: 'ai_languageModel',
37
+ displayName: 'Fallback Model',
38
+ required: true,
39
+ filter: {
40
+ excludedNodes: [
41
+ '@n8n/n8n-nodes-langchain.lmCohere',
42
+ '@n8n/n8n-nodes-langchain.lmOllama',
43
+ 'n8n/n8n-nodes-langchain.lmOpenAi',
44
+ '@n8n/n8n-nodes-langchain.lmOpenHuggingFaceInference',
45
+ ],
46
+ },
47
+ },
48
+ {
49
+ displayName: 'Memory',
50
+ type: 'ai_memory',
51
+ },
52
+ {
53
+ displayName: 'Tool',
54
+ type: 'ai_tool',
55
+ },
56
+ {
57
+ displayName: 'Output Parser',
58
+ type: 'ai_outputParser',
59
+ },
60
+ ];
61
+ if (hasOutputParser === false) {
62
+ specialInputs = specialInputs.filter((input) => input.type !== 'ai_outputParser');
63
+ }
64
+ if (needsFallback === false) {
65
+ specialInputs = specialInputs.filter((input) => input.displayName !== 'Fallback Model');
66
+ }
67
+ const mainInputs = hasMainInput ? ['main'] : [];
68
+ return [...mainInputs, ...getInputData(specialInputs)];
69
+ }
70
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../nodes/AgentWithLangfuse/V2/utils.ts"],"names":[],"mappings":";;AASA,8BAqFC;AArFD,SAAgB,SAAS,CACrB,YAAsB,EACtB,eAAyB,EACzB,aAAuB;IASvB,MAAM,YAAY,GAAG,CACjB,MAAsB,EAC6B,EAAE;QACrD,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,EAAE,EAAE;YAC1D,MAAM,KAAK,GAA4B;gBACnC,IAAI;gBACJ,WAAW;gBACX,QAAQ;gBACR,cAAc,EAAE,CAAC,kBAAkB,EAAE,WAAW,EAAE,iBAAiB,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;oBAC/E,CAAC,CAAC,CAAC;oBACH,CAAC,CAAC,SAAS;aAClB,CAAC;YAEF,IAAI,MAAM,EAAE,CAAC;gBACT,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;YAC1B,CAAC;YAED,OAAO,KAAK,CAAC;QACjB,CAAC,CAAC,CAAC;IACP,CAAC,CAAC;IAEF,IAAI,aAAa,GAAmB;QAChC;YACI,IAAI,EAAE,kBAAkB;YACxB,WAAW,EAAE,YAAY;YACzB,QAAQ,EAAE,IAAI;YACd,MAAM,EAAE;gBACJ,aAAa,EAAE;oBACX,mCAAmC;oBACnC,mCAAmC;oBACnC,kCAAkC;oBAClC,qDAAqD;iBACxD;aACJ;SACJ;QACD;YACI,IAAI,EAAE,kBAAkB;YACxB,WAAW,EAAE,gBAAgB;YAC7B,QAAQ,EAAE,IAAI;YACd,MAAM,EAAE;gBACJ,aAAa,EAAE;oBACX,mCAAmC;oBACnC,mCAAmC;oBACnC,kCAAkC;oBAClC,qDAAqD;iBACxD;aACJ;SACJ;QACD;YACI,WAAW,EAAE,QAAQ;YACrB,IAAI,EAAE,WAAW;SACpB;QACD;YACI,WAAW,EAAE,MAAM;YACnB,IAAI,EAAE,SAAS;SAClB;QACD;YACI,WAAW,EAAE,eAAe;YAC5B,IAAI,EAAE,iBAAiB;SAC1B;KACJ,CAAC;IAEF,IAAI,eAAe,KAAK,KAAK,EAAE,CAAC;QAC5B,aAAa,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,iBAAiB,CAAC,CAAC;IACtF,CAAC;IACD,IAAI,aAAa,KAAK,KAAK,EAAE,CAAC;QAC1B,aAAa,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,KAAK,gBAAgB,CAAC,CAAC;IAC5F,CAAC;IAID,MAAM,UAAU,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,MAA4B,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACtE,OAAO,CAAC,GAAG,UAAU,EAAE,GAAG,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC;AAC3D,CAAC"}
@@ -0,0 +1,68 @@
1
+ {
2
+ "name": "n8n-nodes-ai-agent-langfuse",
3
+ "version": "0.1.0",
4
+ "description": "n8n community node: AI Agent + Langfuse",
5
+ "keywords": [
6
+ "n8n-community-node-package",
7
+ "langfuse",
8
+ "langchain",
9
+ "openai"
10
+ ],
11
+ "license": "MIT",
12
+ "homepage": "",
13
+ "author": {
14
+ "name": "Ruby Lo",
15
+ "email": "rorubyy@gmail.com"
16
+ },
17
+ "repository": {
18
+ "type": "git",
19
+ "url": "https://github.com/rorubyy/n8n-nodes-ai-agent-langfuse.git"
20
+ },
21
+ "engines": {
22
+ "node": ">=20.15"
23
+ },
24
+ "main": "index.js",
25
+ "scripts": {
26
+ "build": "npx rimraf dist && tsc && gulp build:icons",
27
+ "dev": "tsc --watch",
28
+ "format": "prettier nodes credentials --write",
29
+ "lint": "eslint nodes credentials package.json",
30
+ "lintfix": "eslint nodes credentials package.json --fix",
31
+ "prepublishOnly": "npm run build && npm run lint -c .eslintrc.prepublish.js nodes credentials package.json"
32
+ },
33
+ "files": [
34
+ "dist"
35
+ ],
36
+ "n8n": {
37
+ "n8nNodesApiVersion": 1,
38
+ "credentials": [
39
+ "dist/credentials/LangfuseApi.credentials.js"
40
+ ],
41
+ "nodes": [
42
+ "dist/nodes/AgentWithLangfuse/AgentWithLangfuse.node.js"
43
+ ]
44
+ },
45
+ "dependencies": {
46
+ "@langchain/core": "^0.3.72",
47
+ "@langchain/openai": "^0.6.9",
48
+ "langfuse-langchain": "^3.0.0",
49
+ "openai": "^5.19.1",
50
+ "proxy-from-env": "^1.1.0",
51
+ "undici": "^7.15.0"
52
+ },
53
+ "devDependencies": {
54
+ "@types/json-schema": "^7.0.15",
55
+ "@types/lodash": "^4.17.20",
56
+ "@types/proxy-from-env": "^1.0.4",
57
+ "@typescript-eslint/parser": "~8.32.0",
58
+ "eslint": "^8.57.0",
59
+ "eslint-plugin-n8n-nodes-base": "^1.16.3",
60
+ "gulp": "^5.0.1",
61
+ "gulp-cli": "^3.1.0",
62
+ "prettier": "^3.5.3",
63
+ "typescript": "^5.9.2"
64
+ },
65
+ "peerDependencies": {
66
+ "n8n-workflow": "*"
67
+ }
68
+ }
@@ -0,0 +1,6 @@
1
+ import type { z } from 'zod';
2
+ export type OpenAICompatibleCredential = {
3
+ apiKey: string;
4
+ url: string;
5
+ };
6
+ export type ZodObjectAny = z.ZodObject<any, any, any, any>;
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/types/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,5 @@
1
+ import type { IExecuteFunctions, ISupplyDataFunctions } from 'n8n-workflow';
2
+ import { N8nStructuredOutputParser } from './output_parsers/N8nStructuredOutputParser';
3
+ export type N8nOutputParser = N8nStructuredOutputParser;
4
+ export { N8nStructuredOutputParser };
5
+ export declare function getOptionalOutputParser(ctx: IExecuteFunctions | ISupplyDataFunctions, index?: number): Promise<N8nOutputParser | undefined>;
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.N8nStructuredOutputParser = void 0;
4
+ exports.getOptionalOutputParser = getOptionalOutputParser;
5
+ const n8n_workflow_1 = require("n8n-workflow");
6
+ const N8nStructuredOutputParser_1 = require("./output_parsers/N8nStructuredOutputParser");
7
+ Object.defineProperty(exports, "N8nStructuredOutputParser", { enumerable: true, get: function () { return N8nStructuredOutputParser_1.N8nStructuredOutputParser; } });
8
+ async function getOptionalOutputParser(ctx, index = 0) {
9
+ if (ctx.getNodeParameter('hasOutputParser', 0, true) === true) {
10
+ return (await ctx.getInputConnectionData(n8n_workflow_1.NodeConnectionTypes.AiOutputParser, index));
11
+ }
12
+ return undefined;
13
+ }
14
+ //# sourceMappingURL=N8nOutputParser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"N8nOutputParser.js","sourceRoot":"","sources":["../../../src/utils/N8nOutputParser.ts"],"names":[],"mappings":";;;AASA,0DAWC;AAnBD,+CAAmD;AAEnD,0FAAuF;AAI9E,0GAJA,qDAAyB,OAIA;AAE3B,KAAK,UAAU,uBAAuB,CACzC,GAA6C,EAC7C,QAAgB,CAAC;IAEjB,IAAI,GAAG,CAAC,gBAAgB,CAAC,iBAAiB,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;QAC5D,OAAO,CAAC,MAAM,GAAG,CAAC,sBAAsB,CACpC,kCAAmB,CAAC,cAAc,EAClC,KAAK,CACR,CAA8B,CAAC;IACpC,CAAC;IACD,OAAO,SAAS,CAAC;AACrB,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { DynamicStructuredToolInput } from '@langchain/core/tools';
2
+ import { DynamicStructuredTool, DynamicTool } from '@langchain/core/tools';
3
+ import type { ISupplyDataFunctions } from 'n8n-workflow';
4
+ import { ZodObject } from 'zod';
5
+ export declare const prepareFallbackToolDescription: (toolDescription: string, schema: ZodObject<any>) => string;
6
+ export declare class N8nTool extends DynamicStructuredTool<any> {
7
+ private context;
8
+ constructor(context: ISupplyDataFunctions, fields: DynamicStructuredToolInput<any>);
9
+ asDynamicTool(): DynamicTool;
10
+ }
@@ -0,0 +1,86 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.N8nTool = exports.prepareFallbackToolDescription = void 0;
4
+ const tools_1 = require("@langchain/core/tools");
5
+ const output_parsers_1 = require("langchain/output_parsers");
6
+ const n8n_workflow_1 = require("n8n-workflow");
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, { acceptJSObject: true });
56
+ }
57
+ catch (error) {
58
+ if (Object.keys(schema.shape).length === 1) {
59
+ const parameterName = Object.keys(schema.shape)[0];
60
+ dataFromModel = { [parameterName]: query };
61
+ }
62
+ else {
63
+ throw new n8n_workflow_1.NodeOperationError(context.getNode(), `Input is not a valid JSON: ${error.message}`);
64
+ }
65
+ }
66
+ parsedQuery = schema.parse(dataFromModel);
67
+ }
68
+ try {
69
+ const result = await func(parsedQuery);
70
+ return result;
71
+ }
72
+ catch (e) {
73
+ const { index } = context.addInputData(n8n_workflow_1.NodeConnectionTypes.AiTool, [[{ json: { query } }]]);
74
+ void context.addOutputData(n8n_workflow_1.NodeConnectionTypes.AiTool, index, e);
75
+ return e.toString();
76
+ }
77
+ };
78
+ return new tools_1.DynamicTool({
79
+ name,
80
+ description: (0, exports.prepareFallbackToolDescription)(description, schema),
81
+ func: wrappedFunc,
82
+ });
83
+ }
84
+ }
85
+ exports.N8nTool = N8nTool;
86
+ //# sourceMappingURL=N8nTool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"N8nTool.js","sourceRoot":"","sources":["../../../src/utils/N8nTool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import type { BaseChatModel } from '@langchain/core/language_models/chat_models';
2
+ import { HumanMessage } from '@langchain/core/messages';
3
+ import { ChatPromptTemplate, type BaseMessagePromptTemplateLike } from '@langchain/core/prompts';
4
+ import type { AgentAction, AgentFinish } from 'langchain/agents';
5
+ import type { ToolsAgentAction } from 'langchain/dist/agents/tool_calling/output_parser';
6
+ import type { BaseChatMemory } from 'langchain/memory';
7
+ import { DynamicStructuredTool, type Tool } from 'langchain/tools';
8
+ import type { IExecuteFunctions, ISupplyDataFunctions } from 'n8n-workflow';
9
+ import type { ZodObject } from 'zod';
10
+ import { type N8nOutputParser } from './N8nOutputParser';
11
+ export declare function getOutputParserSchema(outputParser: N8nOutputParser): ZodObject<any, any, any, any>;
12
+ export declare function extractBinaryMessages(ctx: IExecuteFunctions | ISupplyDataFunctions, itemIndex: number): Promise<HumanMessage>;
13
+ export declare function fixEmptyContentMessage(steps: AgentFinish | ToolsAgentAction[]): AgentFinish | ToolsAgentAction[];
14
+ export declare function handleAgentFinishOutput(steps: AgentFinish | AgentAction[]): AgentFinish | AgentAction[];
15
+ export declare function handleParsedStepOutput(output: Record<string, unknown>, memory?: BaseChatMemory): {
16
+ returnValues: Record<string, unknown>;
17
+ log: string;
18
+ };
19
+ export declare const getAgentStepsParser: (outputParser?: N8nOutputParser, memory?: BaseChatMemory) => (steps: AgentFinish | AgentAction[]) => Promise<AgentFinish | AgentAction[]>;
20
+ export declare function getChatModel(ctx: IExecuteFunctions | ISupplyDataFunctions, index?: number): Promise<BaseChatModel | undefined>;
21
+ export declare function getOptionalMemory(ctx: IExecuteFunctions | ISupplyDataFunctions): Promise<BaseChatMemory | undefined>;
22
+ export declare function getTools(ctx: IExecuteFunctions | ISupplyDataFunctions, outputParser?: N8nOutputParser): Promise<Array<DynamicStructuredTool | Tool>>;
23
+ export declare function prepareMessages(ctx: IExecuteFunctions | ISupplyDataFunctions, itemIndex: number, options: {
24
+ systemMessage?: string;
25
+ passthroughBinaryImages?: boolean;
26
+ outputParser?: N8nOutputParser;
27
+ }): Promise<BaseMessagePromptTemplateLike[]>;
28
+ export declare function preparePrompt(messages: BaseMessagePromptTemplateLike[]): ChatPromptTemplate;
@@ -0,0 +1,197 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getAgentStepsParser = void 0;
4
+ exports.getOutputParserSchema = getOutputParserSchema;
5
+ exports.extractBinaryMessages = extractBinaryMessages;
6
+ exports.fixEmptyContentMessage = fixEmptyContentMessage;
7
+ exports.handleAgentFinishOutput = handleAgentFinishOutput;
8
+ exports.handleParsedStepOutput = handleParsedStepOutput;
9
+ exports.getChatModel = getChatModel;
10
+ exports.getOptionalMemory = getOptionalMemory;
11
+ exports.getTools = getTools;
12
+ exports.prepareMessages = prepareMessages;
13
+ exports.preparePrompt = preparePrompt;
14
+ const messages_1 = require("@langchain/core/messages");
15
+ const prompts_1 = require("@langchain/core/prompts");
16
+ const tools_1 = require("langchain/tools");
17
+ const n8n_workflow_1 = require("n8n-workflow");
18
+ const zod_1 = require("zod");
19
+ const helpers_1 = require("./helpers");
20
+ function getOutputParserSchema(outputParser) {
21
+ var _a;
22
+ const schema = (_a = outputParser.getSchema()) !== null && _a !== void 0 ? _a : zod_1.z.object({ text: zod_1.z.string() });
23
+ return schema;
24
+ }
25
+ async function extractBinaryMessages(ctx, itemIndex) {
26
+ var _a, _b, _c;
27
+ const binaryData = (_c = (_b = (_a = ctx.getInputData()) === null || _a === void 0 ? void 0 : _a[itemIndex]) === null || _b === void 0 ? void 0 : _b.binary) !== null && _c !== void 0 ? _c : {};
28
+ const binaryMessages = await Promise.all(Object.values(binaryData)
29
+ .filter((data) => data.mimeType.startsWith('image/'))
30
+ .map(async (data) => {
31
+ let binaryUrlString;
32
+ if (data.id) {
33
+ const binaryBuffer = await ctx.helpers.binaryToBuffer(await ctx.helpers.getBinaryStream(data.id));
34
+ binaryUrlString = `data:${data.mimeType};base64,${Buffer.from(binaryBuffer).toString(n8n_workflow_1.BINARY_ENCODING)}`;
35
+ }
36
+ else {
37
+ binaryUrlString = data.data.includes('base64')
38
+ ? data.data
39
+ : `data:${data.mimeType};base64,${data.data}`;
40
+ }
41
+ return {
42
+ type: 'image_url',
43
+ image_url: {
44
+ url: binaryUrlString,
45
+ },
46
+ };
47
+ }));
48
+ return new messages_1.HumanMessage({
49
+ content: [...binaryMessages],
50
+ });
51
+ }
52
+ function fixEmptyContentMessage(steps) {
53
+ if (!Array.isArray(steps))
54
+ return steps;
55
+ steps.forEach((step) => {
56
+ if ('messageLog' in step && step.messageLog !== undefined) {
57
+ if (Array.isArray(step.messageLog)) {
58
+ step.messageLog.forEach((message) => {
59
+ if ('content' in message && Array.isArray(message.content)) {
60
+ message.content.forEach((content) => {
61
+ if (content.input === '') {
62
+ content.input = {};
63
+ }
64
+ });
65
+ }
66
+ });
67
+ }
68
+ }
69
+ });
70
+ return steps;
71
+ }
72
+ function handleAgentFinishOutput(steps) {
73
+ var _a;
74
+ const agentFinishSteps = steps;
75
+ if (agentFinishSteps.returnValues) {
76
+ const isMultiOutput = Array.isArray((_a = agentFinishSteps.returnValues) === null || _a === void 0 ? void 0 : _a.output);
77
+ if (isMultiOutput) {
78
+ const multiOutputSteps = agentFinishSteps.returnValues.output;
79
+ const isTextOnly = multiOutputSteps.every((output) => 'text' in output);
80
+ if (isTextOnly) {
81
+ agentFinishSteps.returnValues.output = multiOutputSteps
82
+ .map((output) => output.text)
83
+ .join('\n')
84
+ .trim();
85
+ }
86
+ return agentFinishSteps;
87
+ }
88
+ }
89
+ return agentFinishSteps;
90
+ }
91
+ function handleParsedStepOutput(output, memory) {
92
+ return {
93
+ returnValues: memory ? { output: JSON.stringify(output) } : output,
94
+ log: 'Final response formatted',
95
+ };
96
+ }
97
+ const getAgentStepsParser = (outputParser, memory) => async (steps) => {
98
+ if (Array.isArray(steps)) {
99
+ const responseParserTool = steps.find((step) => step.tool === 'format_final_json_response');
100
+ if (responseParserTool && outputParser) {
101
+ const toolInput = responseParserTool.toolInput;
102
+ const parserInput = toolInput instanceof Object ? JSON.stringify(toolInput) : toolInput;
103
+ const returnValues = (await outputParser.parse(parserInput));
104
+ return handleParsedStepOutput(returnValues, memory);
105
+ }
106
+ }
107
+ if (outputParser && typeof steps === 'object' && steps.returnValues) {
108
+ const finalResponse = steps.returnValues;
109
+ let parserInput;
110
+ if (finalResponse instanceof Object) {
111
+ if ('output' in finalResponse) {
112
+ try {
113
+ parserInput = JSON.stringify({ output: (0, n8n_workflow_1.jsonParse)(finalResponse.output) });
114
+ }
115
+ catch (error) {
116
+ parserInput = finalResponse.output;
117
+ }
118
+ }
119
+ else {
120
+ parserInput = JSON.stringify(finalResponse);
121
+ }
122
+ }
123
+ else {
124
+ parserInput = finalResponse;
125
+ }
126
+ const returnValues = (await outputParser.parse(parserInput));
127
+ return handleParsedStepOutput(returnValues, memory);
128
+ }
129
+ return handleAgentFinishOutput(steps);
130
+ };
131
+ exports.getAgentStepsParser = getAgentStepsParser;
132
+ async function getChatModel(ctx, index = 0) {
133
+ const connectedModels = await ctx.getInputConnectionData(n8n_workflow_1.NodeConnectionTypes.AiLanguageModel, 0);
134
+ let model;
135
+ if (Array.isArray(connectedModels) && index !== undefined) {
136
+ if (connectedModels.length <= index) {
137
+ return undefined;
138
+ }
139
+ const reversedModels = [...connectedModels].reverse();
140
+ model = reversedModels[index];
141
+ }
142
+ else {
143
+ model = connectedModels;
144
+ }
145
+ if (!(0, helpers_1.isChatInstance)(model) || !model.bindTools) {
146
+ throw new n8n_workflow_1.NodeOperationError(ctx.getNode(), 'Tools Agent requires Chat Model which supports Tools calling');
147
+ }
148
+ return model;
149
+ }
150
+ async function getOptionalMemory(ctx) {
151
+ return (await ctx.getInputConnectionData(n8n_workflow_1.NodeConnectionTypes.AiMemory, 0));
152
+ }
153
+ async function getTools(ctx, outputParser) {
154
+ const tools = (await (0, helpers_1.getConnectedTools)(ctx, true, false));
155
+ if (outputParser) {
156
+ const schema = getOutputParserSchema(outputParser);
157
+ const structuredOutputParserTool = new tools_1.DynamicStructuredTool({
158
+ schema,
159
+ name: 'format_final_json_response',
160
+ description: 'Use this tool to format your final response to the user in a structured JSON format. This tool validates your output against a schema to ensure it meets the required format. ONLY use this tool when you have completed all necessary reasoning and are ready to provide your final answer. Do not use this tool for intermediate steps or for asking questions. The output from this tool will be directly returned to the user.',
161
+ func: async () => '',
162
+ });
163
+ tools.push(structuredOutputParserTool);
164
+ }
165
+ return tools;
166
+ }
167
+ async function prepareMessages(ctx, itemIndex, options) {
168
+ var _a, _b, _c;
169
+ const useSystemMessage = (_a = options.systemMessage) !== null && _a !== void 0 ? _a : ctx.getNode().typeVersion < 1.9;
170
+ const messages = [];
171
+ if (useSystemMessage) {
172
+ messages.push([
173
+ 'system',
174
+ `{system_message}${options.outputParser ? '\n\n{formatting_instructions}' : ''}`,
175
+ ]);
176
+ }
177
+ else if (options.outputParser) {
178
+ messages.push(['system', '{formatting_instructions}']);
179
+ }
180
+ messages.push(['placeholder', '{chat_history}'], ['human', '{input}']);
181
+ const hasBinaryData = ((_c = (_b = ctx.getInputData()) === null || _b === void 0 ? void 0 : _b[itemIndex]) === null || _c === void 0 ? void 0 : _c.binary) !== undefined;
182
+ if (hasBinaryData && options.passthroughBinaryImages) {
183
+ const binaryMessage = await extractBinaryMessages(ctx, itemIndex);
184
+ if (binaryMessage.content.length !== 0) {
185
+ messages.push(binaryMessage);
186
+ }
187
+ else {
188
+ ctx.logger.debug('Not attaching binary message, since its content was empty');
189
+ }
190
+ }
191
+ messages.push(['placeholder', '{agent_scratchpad}']);
192
+ return messages;
193
+ }
194
+ function preparePrompt(messages) {
195
+ return prompts_1.ChatPromptTemplate.fromMessages(messages);
196
+ }
197
+ //# sourceMappingURL=common.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.js","sourceRoot":"","sources":["../../../src/utils/common.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import type { DisplayCondition, INodeProperties, NodeParameterValue } from 'n8n-workflow';
2
+ export declare const schemaTypeField: INodeProperties;
3
+ export declare const buildJsonSchemaExampleField: (props?: {
4
+ showExtraProps?: Record<string, Array<NodeParameterValue | DisplayCondition> | undefined>;
5
+ }) => INodeProperties;
6
+ export declare const buildJsonSchemaExampleNotice: (props?: {
7
+ showExtraProps?: Record<string, Array<NodeParameterValue | DisplayCondition> | undefined>;
8
+ }) => INodeProperties;
9
+ export declare const jsonSchemaExampleField: INodeProperties;
10
+ export declare const buildInputSchemaField: (props?: {
11
+ showExtraProps?: Record<string, Array<NodeParameterValue | DisplayCondition> | undefined>;
12
+ }) => INodeProperties;
13
+ export declare const inputSchemaField: INodeProperties;
14
+ export declare const promptTypeOptions: INodeProperties;
15
+ export declare const textInput: INodeProperties;
16
+ export declare const textFromPreviousNode: INodeProperties;
17
+ export declare const toolDescription: INodeProperties;