@n8n/n8n-nodes-langchain 2.37.2 → 2.38.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/node-definitions/.nodes-hash +1 -1
- package/dist/node-definitions/nodes/n8n-nodes-langchain/alibabaCloud/v1/resource_image/operation_generate.schema.js +4 -3
- package/dist/node-definitions/nodes/n8n-nodes-langchain/alibabaCloud/v1/resource_image/operation_generate.ts +33 -2
- package/dist/node-definitions/nodes/n8n-nodes-langchain/alibabaCloud/v11/resource_image/operation_generate.schema.js +3 -2
- package/dist/node-definitions/nodes/n8n-nodes-langchain/alibabaCloud/v11/resource_image/operation_generate.ts +32 -1
- package/dist/node-definitions/nodes/n8n-nodes-langchain/chatTrigger/v1.schema.js +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/chatTrigger/v1.ts +6 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/chatTrigger/v11.schema.js +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/chatTrigger/v11.ts +6 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/chatTrigger/v12.schema.js +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/chatTrigger/v12.ts +6 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/chatTrigger/v13.schema.js +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/chatTrigger/v13.ts +6 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/chatTrigger/v14.schema.js +1 -0
- package/dist/node-definitions/nodes/n8n-nodes-langchain/chatTrigger/v14.ts +6 -0
- package/dist/nodes/agents/Agent/agents/ConversationalAgent/execute.js +3 -1
- package/dist/nodes/agents/Agent/agents/ConversationalAgent/execute.js.map +1 -1
- package/dist/nodes/agents/Agent/agents/ReActAgent/execute.js +3 -1
- package/dist/nodes/agents/Agent/agents/ReActAgent/execute.js.map +1 -1
- package/dist/nodes/agents/Agent/agents/ToolsAgent/V2/execute.js +3 -1
- package/dist/nodes/agents/Agent/agents/ToolsAgent/V2/execute.js.map +1 -1
- package/dist/nodes/agents/Agent/agents/ToolsAgent/V3/execute.js +3 -1
- package/dist/nodes/agents/Agent/agents/ToolsAgent/V3/execute.js.map +1 -1
- package/dist/nodes/chains/ChainLLM/ChainLlm.node.js +17 -4
- package/dist/nodes/chains/ChainLLM/ChainLlm.node.js.map +1 -1
- package/dist/nodes/memory/MemoryPostgresChat/MemoryPostgresChat.node.js +12 -3
- package/dist/nodes/memory/MemoryPostgresChat/MemoryPostgresChat.node.js.map +1 -1
- package/dist/nodes/tools/ToolCode/ToolCode.node.js +3 -0
- package/dist/nodes/tools/ToolCode/ToolCode.node.js.map +1 -1
- package/dist/nodes/tools/ToolHttpRequest/utils.js +4 -6
- package/dist/nodes/tools/ToolHttpRequest/utils.js.map +1 -1
- package/dist/nodes/tools/ToolWorkflow/v1/ToolWorkflowV1.node.js +2 -0
- package/dist/nodes/tools/ToolWorkflow/v1/ToolWorkflowV1.node.js.map +1 -1
- package/dist/nodes/tools/ToolWorkflow/v2/utils/WorkflowToolService.js +19 -3
- package/dist/nodes/tools/ToolWorkflow/v2/utils/WorkflowToolService.js.map +1 -1
- package/dist/nodes/trigger/ChatTrigger/ChatTrigger.node.js +47 -5
- package/dist/nodes/trigger/ChatTrigger/ChatTrigger.node.js.map +1 -1
- package/dist/nodes/trigger/ChatTrigger/GenericFunctions.d.ts +3 -0
- package/dist/nodes/trigger/ChatTrigger/GenericFunctions.js +81 -0
- package/dist/nodes/trigger/ChatTrigger/GenericFunctions.js.map +1 -1
- package/dist/nodes/trigger/ChatTrigger/shell.d.ts +9 -0
- package/dist/nodes/trigger/ChatTrigger/shell.js +62 -0
- package/dist/nodes/trigger/ChatTrigger/shell.js.map +1 -0
- package/dist/nodes/trigger/ChatTrigger/templates.d.ts +7 -2
- package/dist/nodes/trigger/ChatTrigger/templates.js +121 -27
- package/dist/nodes/trigger/ChatTrigger/templates.js.map +1 -1
- package/dist/nodes/trigger/ChatTrigger/types.d.ts +5 -1
- package/dist/nodes/trigger/ChatTrigger/types.js.map +1 -1
- package/dist/nodes/vector_store/ChatHubVectorStorePGVector/ChatHubVectorStorePGVector.node.js +18 -7
- package/dist/nodes/vector_store/ChatHubVectorStorePGVector/ChatHubVectorStorePGVector.node.js.map +1 -1
- package/dist/nodes/vector_store/VectorStorePGVector/VectorStorePGVector.node.d.ts +8 -2
- package/dist/nodes/vector_store/VectorStorePGVector/VectorStorePGVector.node.js +113 -46
- package/dist/nodes/vector_store/VectorStorePGVector/VectorStorePGVector.node.js.map +1 -1
- package/dist/nodes/vector_store/VectorStoreSupabase/VectorStoreSupabase.node.js +3 -3
- package/dist/nodes/vector_store/VectorStoreSupabase/VectorStoreSupabase.node.js.map +1 -1
- package/dist/nodes/vector_store/VectorStoreSupabaseInsert/VectorStoreSupabaseInsert.node.js +2 -2
- package/dist/nodes/vector_store/VectorStoreSupabaseInsert/VectorStoreSupabaseInsert.node.js.map +1 -1
- package/dist/nodes/vector_store/VectorStoreSupabaseLoad/VectorStoreSupabaseLoad.node.js +2 -2
- package/dist/nodes/vector_store/VectorStoreSupabaseLoad/VectorStoreSupabaseLoad.node.js.map +1 -1
- package/dist/nodes/vector_store/shared/supabase.d.ts +2 -0
- package/dist/nodes/vector_store/shared/supabase.js +10 -0
- package/dist/nodes/vector_store/shared/supabase.js.map +1 -0
- package/dist/nodes/vendors/AlibabaCloud/actions/image/generate.operation.js +245 -22
- package/dist/nodes/vendors/AlibabaCloud/actions/image/generate.operation.js.map +1 -1
- package/dist/nodes/vendors/AlibabaCloud/helpers/interfaces.d.ts +2 -0
- package/dist/nodes/vendors/AlibabaCloud/helpers/wanImage.d.ts +13 -0
- package/dist/nodes/vendors/AlibabaCloud/helpers/wanImage.js +84 -0
- package/dist/nodes/vendors/AlibabaCloud/helpers/wanImage.js.map +1 -0
- package/dist/nodes/vendors/AlibabaCloud/methods/listSearch.js +2 -1
- package/dist/nodes/vendors/AlibabaCloud/methods/listSearch.js.map +1 -1
- package/dist/nodes/vendors/AlibabaCloud/transport/index.js +2 -2
- package/dist/nodes/vendors/AlibabaCloud/transport/index.js.map +1 -1
- package/dist/typecheck.tsbuildinfo +1 -1
- package/dist/types/nodes.json +2 -2
- package/dist/utils/output_parsers/langchainParserError.d.ts +1 -0
- package/dist/utils/output_parsers/langchainParserError.js +3 -3
- package/dist/utils/output_parsers/langchainParserError.js.map +1 -1
- package/dist/utils/sqlIdentifier.d.ts +5 -0
- package/dist/utils/sqlIdentifier.js +36 -0
- package/dist/utils/sqlIdentifier.js.map +1 -0
- package/package.json +15 -13
|
@@ -4,8 +4,12 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.validateAuth = validateAuth;
|
|
7
|
+
exports.establishChatSessionIdentity = establishChatSessionIdentity;
|
|
8
|
+
exports.resolveInnerFrameIdentity = resolveInnerFrameIdentity;
|
|
7
9
|
const basic_auth_1 = __importDefault(require("basic-auth"));
|
|
10
|
+
const n8n_workflow_1 = require("n8n-workflow");
|
|
8
11
|
const error_1 = require("./error");
|
|
12
|
+
const shell_1 = require("./shell");
|
|
9
13
|
async function validateAuth(context) {
|
|
10
14
|
const authentication = context.getNodeParameter('authentication', 'none');
|
|
11
15
|
const req = context.getRequestObject();
|
|
@@ -40,6 +44,21 @@ async function validateAuth(context) {
|
|
|
40
44
|
}
|
|
41
45
|
return '';
|
|
42
46
|
}
|
|
47
|
+
const mode = context.getNodeParameter('mode', 'hostedChat');
|
|
48
|
+
if ((0, shell_1.isChatOAuth2Enabled)() && mode === 'hostedChat') {
|
|
49
|
+
const chatToken = headers['x-auth-token'];
|
|
50
|
+
if (typeof chatToken === 'string' && chatToken) {
|
|
51
|
+
const resourceUrl = context.getWebhookResourceUrl('default');
|
|
52
|
+
if (resourceUrl) {
|
|
53
|
+
const validation = await context.validateN8nOAuth2Token(chatToken, resourceUrl);
|
|
54
|
+
if (validation.valid) {
|
|
55
|
+
await context.establishTriggerIdentity(chatToken, resourceUrl, validation.user.id);
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
throw new error_1.ChatTriggerAuthorizationError(401, 'Invalid authentication token');
|
|
60
|
+
}
|
|
61
|
+
}
|
|
43
62
|
const authCookie = getCookie('n8n-auth');
|
|
44
63
|
if (!authCookie) {
|
|
45
64
|
throw new error_1.ChatTriggerAuthorizationError(401, 'User not authenticated!');
|
|
@@ -54,4 +73,66 @@ async function validateAuth(context) {
|
|
|
54
73
|
}
|
|
55
74
|
return;
|
|
56
75
|
}
|
|
76
|
+
async function establishChatSessionIdentity(context, resourceUrl) {
|
|
77
|
+
const req = context.getRequestObject();
|
|
78
|
+
const res = context.getResponseObject();
|
|
79
|
+
const { code, state } = req.query;
|
|
80
|
+
if (typeof req.query.error === 'string') {
|
|
81
|
+
context.logger.warn('Chat OAuth2 authorization was denied or failed', {
|
|
82
|
+
error: req.query.error,
|
|
83
|
+
});
|
|
84
|
+
res.status(403).send('Access denied');
|
|
85
|
+
res.end();
|
|
86
|
+
return false;
|
|
87
|
+
}
|
|
88
|
+
if (typeof code === 'string' && typeof state === 'string') {
|
|
89
|
+
try {
|
|
90
|
+
const result = await context.completeN8nOAuth2Flow(code, state);
|
|
91
|
+
if (result.valid) {
|
|
92
|
+
(0, shell_1.setChatOAuthToken)(res, req, resourceUrl, result.token);
|
|
93
|
+
const redirectPath = req.originalUrl.split('?')[0];
|
|
94
|
+
res.writeHead(302, { Location: redirectPath });
|
|
95
|
+
res.end();
|
|
96
|
+
return false;
|
|
97
|
+
}
|
|
98
|
+
context.logger.warn('Chat OAuth2 flow failed, restarting', { reason: result.reason });
|
|
99
|
+
}
|
|
100
|
+
catch (error) {
|
|
101
|
+
context.logger.warn('Chat OAuth2 flow failed, restarting', { error });
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
else {
|
|
105
|
+
const cookieToken = (0, shell_1.readChatOAuthToken)(req);
|
|
106
|
+
if (cookieToken) {
|
|
107
|
+
const validation = await context.validateN8nOAuth2Token(cookieToken, resourceUrl);
|
|
108
|
+
if (validation.valid) {
|
|
109
|
+
return true;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
try {
|
|
114
|
+
const authorizationUrl = await context.beginN8nOAuth2Flow(resourceUrl);
|
|
115
|
+
res.writeHead(302, { Location: authorizationUrl });
|
|
116
|
+
res.end();
|
|
117
|
+
}
|
|
118
|
+
catch (error) {
|
|
119
|
+
context.logger.warn('Chat OAuth2 flow failed', { error });
|
|
120
|
+
throw new n8n_workflow_1.UnexpectedError('Chat OAuth2 flow failed');
|
|
121
|
+
}
|
|
122
|
+
return false;
|
|
123
|
+
}
|
|
124
|
+
async function resolveInnerFrameIdentity(context, resourceUrl) {
|
|
125
|
+
const req = context.getRequestObject();
|
|
126
|
+
const res = context.getResponseObject();
|
|
127
|
+
const cookieToken = (0, shell_1.readChatOAuthToken)(req);
|
|
128
|
+
if (!cookieToken) {
|
|
129
|
+
return null;
|
|
130
|
+
}
|
|
131
|
+
(0, shell_1.clearChatOAuthToken)(res, req, resourceUrl);
|
|
132
|
+
const validation = await context.validateN8nOAuth2Token(cookieToken, resourceUrl);
|
|
133
|
+
if (!validation.valid) {
|
|
134
|
+
return null;
|
|
135
|
+
}
|
|
136
|
+
return { visitor: validation.user, authToken: cookieToken };
|
|
137
|
+
}
|
|
57
138
|
//# sourceMappingURL=GenericFunctions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GenericFunctions.js","sourceRoot":"","sources":["../../../../nodes/trigger/ChatTrigger/GenericFunctions.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"GenericFunctions.js","sourceRoot":"","sources":["../../../../nodes/trigger/ChatTrigger/GenericFunctions.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { Request, Response } from 'express';
|
|
2
|
+
export declare function isChatOAuth2Enabled(): boolean;
|
|
3
|
+
export declare const CHAT_SHELL_INNER_PARAM = "n8nShellInner";
|
|
4
|
+
export declare const CHAT_FRAME_SANDBOX = "allow-scripts allow-forms allow-modals allow-popups";
|
|
5
|
+
export declare function isShellInnerRequest(req: Request): boolean;
|
|
6
|
+
export declare function buildInnerFrameSrc(req: Request): string;
|
|
7
|
+
export declare function setChatOAuthToken(res: Response, req: Request, resourceUrl: string, token: string): void;
|
|
8
|
+
export declare function readChatOAuthToken(req: Request): string | null;
|
|
9
|
+
export declare function clearChatOAuthToken(res: Response, req: Request, resourceUrl: string): void;
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CHAT_FRAME_SANDBOX = exports.CHAT_SHELL_INNER_PARAM = void 0;
|
|
4
|
+
exports.isChatOAuth2Enabled = isChatOAuth2Enabled;
|
|
5
|
+
exports.isShellInnerRequest = isShellInnerRequest;
|
|
6
|
+
exports.buildInnerFrameSrc = buildInnerFrameSrc;
|
|
7
|
+
exports.setChatOAuthToken = setChatOAuthToken;
|
|
8
|
+
exports.readChatOAuthToken = readChatOAuthToken;
|
|
9
|
+
exports.clearChatOAuthToken = clearChatOAuthToken;
|
|
10
|
+
function isChatOAuth2Enabled() {
|
|
11
|
+
return process.env.N8N_ENV_FEAT_CHAT_TRIGGER_OAUTH2 === 'true';
|
|
12
|
+
}
|
|
13
|
+
exports.CHAT_SHELL_INNER_PARAM = 'n8nShellInner';
|
|
14
|
+
exports.CHAT_FRAME_SANDBOX = 'allow-scripts allow-forms allow-modals allow-popups';
|
|
15
|
+
function isShellInnerRequest(req) {
|
|
16
|
+
if (req.query[exports.CHAT_SHELL_INNER_PARAM] !== '1')
|
|
17
|
+
return false;
|
|
18
|
+
return req.headers['sec-fetch-dest'] === 'iframe';
|
|
19
|
+
}
|
|
20
|
+
function buildInnerFrameSrc(req) {
|
|
21
|
+
const [path, query] = req.originalUrl.split('?');
|
|
22
|
+
const params = new URLSearchParams(query);
|
|
23
|
+
params.set(exports.CHAT_SHELL_INNER_PARAM, '1');
|
|
24
|
+
return `${path}?${params.toString()}`;
|
|
25
|
+
}
|
|
26
|
+
const CHAT_OAUTH_COOKIE_NAME = 'n8n-chat-oauth';
|
|
27
|
+
function isSecureRequest(req) {
|
|
28
|
+
const forwardedProto = req.headers['x-forwarded-proto'];
|
|
29
|
+
const firstValue = Array.isArray(forwardedProto) ? forwardedProto[0] : forwardedProto;
|
|
30
|
+
const proto = firstValue?.split(',')[0]?.trim() || req.protocol;
|
|
31
|
+
return proto === 'https';
|
|
32
|
+
}
|
|
33
|
+
function chatOAuthCookieOptions(req, resourceUrl) {
|
|
34
|
+
return {
|
|
35
|
+
httpOnly: true,
|
|
36
|
+
sameSite: 'lax',
|
|
37
|
+
secure: isSecureRequest(req),
|
|
38
|
+
path: new URL(resourceUrl).pathname,
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
function setChatOAuthToken(res, req, resourceUrl, token) {
|
|
42
|
+
res.cookie(CHAT_OAUTH_COOKIE_NAME, token, {
|
|
43
|
+
...chatOAuthCookieOptions(req, resourceUrl),
|
|
44
|
+
maxAge: 60_000,
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
function decodeCookieValue(value) {
|
|
48
|
+
try {
|
|
49
|
+
return decodeURIComponent(value.trim());
|
|
50
|
+
}
|
|
51
|
+
catch {
|
|
52
|
+
return null;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
function readChatOAuthToken(req) {
|
|
56
|
+
const match = (req.headers.cookie ?? '').match(/(?:^|;\s*)n8n-chat-oauth=([^;]+)/);
|
|
57
|
+
return match ? decodeCookieValue(match[1]) : null;
|
|
58
|
+
}
|
|
59
|
+
function clearChatOAuthToken(res, req, resourceUrl) {
|
|
60
|
+
res.clearCookie(CHAT_OAUTH_COOKIE_NAME, chatOAuthCookieOptions(req, resourceUrl));
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=shell.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shell.js","sourceRoot":"","sources":["../../../../nodes/trigger/ChatTrigger/shell.ts"],"names":[],"mappings":";;;;;;;;;AAGA;IACC,OAAO,OAAO,CAAC,GAAG,CAAC,gCAAgC,KAAK,MAAM,CAAC;AAChE,CAAC;AAGY,QAAA,sBAAsB,GAAG,eAAe,CAAC;AASzC,QAAA,kBAAkB,GAAG,qDAAqD,CAAC;AAQxF,6BAAoC,GAAY;IAC/C,IAAI,GAAG,CAAC,KAAK,CAAC,QAAA,sBAAsB,CAAC,KAAK,GAAG;QAAE,OAAO,KAAK,CAAC;IAC5D,OAAO,GAAG,CAAC,OAAO,CAAC,gBAAgB,CAAC,KAAK,QAAQ,CAAC;AACnD,CAAC;AAGD,4BAAmC,GAAY;IAC9C,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACjD,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC;IAC1C,MAAM,CAAC,GAAG,CAAC,QAAA,sBAAsB,EAAE,GAAG,CAAC,CAAC;IACxC,OAAO,GAAG,IAAI,IAAI,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC;AACvC,CAAC;AAOD,MAAM,sBAAsB,GAAG,gBAAgB,CAAC;AAOhD,SAAS,eAAe,CAAC,GAAY;IACpC,MAAM,cAAc,GAAG,GAAG,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAIxD,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC;IACtF,MAAM,KAAK,GAAG,UAAU,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,GAAG,CAAC,QAAQ,CAAC;IAChE,OAAO,KAAK,KAAK,OAAO,CAAC;AAC1B,CAAC;AAED,SAAS,sBAAsB,CAAC,GAAY,EAAE,WAAmB;IAChE,OAAO;QACN,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,KAAc;QACxB,MAAM,EAAE,eAAe,CAAC,GAAG,CAAC;QAC5B,IAAI,EAAE,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC,QAAQ;KACnC,CAAC;AACH,CAAC;AAED,2BACC,GAAa,EACb,GAAY,EACZ,WAAmB,EACnB,KAAa;IAEb,GAAG,CAAC,MAAM,CAAC,sBAAsB,EAAE,KAAK,EAAE;QACzC,GAAG,sBAAsB,CAAC,GAAG,EAAE,WAAW,CAAC;QAC3C,MAAM,EAAE,MAAM;KACd,CAAC,CAAC;AACJ,CAAC;AAOD,SAAS,iBAAiB,CAAC,KAAa;IACvC,IAAI,CAAC;QACJ,OAAO,kBAAkB,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;IACzC,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,IAAI,CAAC;IACb,CAAC;AACF,CAAC;AAED,4BAAmC,GAAY;IAC9C,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC;IACnF,OAAO,KAAK,CAAC,CAAC,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACnD,CAAC;AAED,6BAAoC,GAAa,EAAE,GAAY,EAAE,WAAmB;IACnF,GAAG,CAAC,WAAW,CAAC,sBAAsB,EAAE,sBAAsB,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC;AACnF,CAAC"}
|
|
@@ -1,9 +1,13 @@
|
|
|
1
|
-
import type { AuthenticationChatOption, LoadPreviousSessionChatOption } from './types';
|
|
1
|
+
import type { AuthenticationChatOption, ChatFrameIdentity, LoadPreviousSessionChatOption } from './types';
|
|
2
2
|
export declare function getSanitizedInitialMessages(initialMessages: string): string[];
|
|
3
3
|
export declare function escapeForScriptContext(value: string | object): string;
|
|
4
|
+
export declare function escapeForHtmlAttribute(value: string): string;
|
|
4
5
|
export declare function getSanitizedI18nConfig(config: Record<string, string>): Record<string, string>;
|
|
5
6
|
export declare function getSanitizedCustomCss(customCss: string): string;
|
|
6
|
-
export declare function
|
|
7
|
+
export declare function createShellPage({ iframeSrc }: {
|
|
8
|
+
iframeSrc: string;
|
|
9
|
+
}): string;
|
|
10
|
+
export declare function createPage({ instanceId, webhookUrl, showWelcomeScreen, loadPreviousSession, i18n: { en }, initialMessages, authentication, allowFileUploads, allowedFilesMimeTypes, customCss, enableStreaming, frameIdentity, }: {
|
|
7
11
|
instanceId: string;
|
|
8
12
|
webhookUrl?: string;
|
|
9
13
|
showWelcomeScreen?: boolean;
|
|
@@ -18,4 +22,5 @@ export declare function createPage({ instanceId, webhookUrl, showWelcomeScreen,
|
|
|
18
22
|
allowedFilesMimeTypes?: string;
|
|
19
23
|
customCss?: string;
|
|
20
24
|
enableStreaming?: boolean;
|
|
25
|
+
frameIdentity?: ChatFrameIdentity;
|
|
21
26
|
}): string;
|
|
@@ -5,10 +5,13 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.getSanitizedInitialMessages = getSanitizedInitialMessages;
|
|
7
7
|
exports.escapeForScriptContext = escapeForScriptContext;
|
|
8
|
+
exports.escapeForHtmlAttribute = escapeForHtmlAttribute;
|
|
8
9
|
exports.getSanitizedI18nConfig = getSanitizedI18nConfig;
|
|
9
10
|
exports.getSanitizedCustomCss = getSanitizedCustomCss;
|
|
11
|
+
exports.createShellPage = createShellPage;
|
|
10
12
|
exports.createPage = createPage;
|
|
11
13
|
const sanitize_html_1 = __importDefault(require("sanitize-html"));
|
|
14
|
+
const shell_1 = require("./shell");
|
|
12
15
|
function sanitizeUserInput(input) {
|
|
13
16
|
const value = typeof input === 'string' ? input : typeof input === 'number' ? String(input) : '';
|
|
14
17
|
let sanitized = (0, sanitize_html_1.default)(value, {
|
|
@@ -37,6 +40,16 @@ const SCRIPT_CONTEXT_ESCAPES = {
|
|
|
37
40
|
function escapeForScriptContext(value) {
|
|
38
41
|
return JSON.stringify(value).replace(/[<>&\u2028\u2029]/g, (c) => SCRIPT_CONTEXT_ESCAPES[c]);
|
|
39
42
|
}
|
|
43
|
+
const HTML_ATTRIBUTE_ESCAPES = {
|
|
44
|
+
'&': '&',
|
|
45
|
+
'"': '"',
|
|
46
|
+
"'": ''',
|
|
47
|
+
'<': '<',
|
|
48
|
+
'>': '>',
|
|
49
|
+
};
|
|
50
|
+
function escapeForHtmlAttribute(value) {
|
|
51
|
+
return value.replace(/[&"'<>]/g, (c) => HTML_ATTRIBUTE_ESCAPES[c]);
|
|
52
|
+
}
|
|
40
53
|
function getSanitizedI18nConfig(config) {
|
|
41
54
|
const sanitized = {};
|
|
42
55
|
for (const [key, value] of Object.entries(config)) {
|
|
@@ -47,7 +60,74 @@ function getSanitizedI18nConfig(config) {
|
|
|
47
60
|
function getSanitizedCustomCss(customCss) {
|
|
48
61
|
return customCss.replace(/<\/style/gi, '');
|
|
49
62
|
}
|
|
50
|
-
|
|
63
|
+
const WIDGET_SESSION_ID_KEY = 'n8n-chat/sessionId';
|
|
64
|
+
const innerBootstrapScript = `
|
|
65
|
+
<script>
|
|
66
|
+
(function () {
|
|
67
|
+
var store = Object.create(null);
|
|
68
|
+
var shim = {
|
|
69
|
+
getItem: function (key) { return key in store ? store[key] : null; },
|
|
70
|
+
setItem: function (key, value) { store[key] = String(value); },
|
|
71
|
+
removeItem: function (key) { delete store[key]; },
|
|
72
|
+
clear: function () { store = Object.create(null); },
|
|
73
|
+
key: function (index) {
|
|
74
|
+
var keys = Object.keys(store);
|
|
75
|
+
return index < keys.length ? keys[index] : null;
|
|
76
|
+
},
|
|
77
|
+
get length() { return Object.keys(store).length; },
|
|
78
|
+
};
|
|
79
|
+
try {
|
|
80
|
+
Object.defineProperty(window, 'localStorage', { value: shim, configurable: true });
|
|
81
|
+
} catch (error) {}
|
|
82
|
+
|
|
83
|
+
var match = /(?:^|&)sessionId=([^&]*)/.exec(window.location.hash.slice(1));
|
|
84
|
+
window.__n8nChatSessionId = match ? decodeURIComponent(match[1]) : '';
|
|
85
|
+
if (window.__n8nChatSessionId) {
|
|
86
|
+
shim.setItem(${escapeForScriptContext(WIDGET_SESSION_ID_KEY)}, window.__n8nChatSessionId);
|
|
87
|
+
}
|
|
88
|
+
})();
|
|
89
|
+
</script>`;
|
|
90
|
+
function createShellPage({ iframeSrc }) {
|
|
91
|
+
return `<!doctype html>
|
|
92
|
+
<html lang="en">
|
|
93
|
+
<head>
|
|
94
|
+
<meta charset="utf-8">
|
|
95
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
96
|
+
<title>Chat</title>
|
|
97
|
+
<style>
|
|
98
|
+
html, body { width: 100%; height: 100%; margin: 0; padding: 0; }
|
|
99
|
+
#n8n-chat-frame { display: block; width: 100%; height: 100%; border: 0; }
|
|
100
|
+
</style>
|
|
101
|
+
</head>
|
|
102
|
+
<body>
|
|
103
|
+
<iframe
|
|
104
|
+
id="n8n-chat-frame"
|
|
105
|
+
title="Chat"
|
|
106
|
+
sandbox="${shell_1.CHAT_FRAME_SANDBOX}"
|
|
107
|
+
data-src="${escapeForHtmlAttribute(iframeSrc)}"
|
|
108
|
+
></iframe>
|
|
109
|
+
<script>
|
|
110
|
+
(function () {
|
|
111
|
+
// Held here, not in the frame, whose storage dies with its opaque origin on
|
|
112
|
+
// every reload. Keyed by path so two chats don't share a conversation.
|
|
113
|
+
var key = 'n8n-chat-shell/sessionId' + window.location.pathname;
|
|
114
|
+
var sessionId = '';
|
|
115
|
+
try { sessionId = window.localStorage.getItem(key) || ''; } catch (error) {}
|
|
116
|
+
if (!sessionId) {
|
|
117
|
+
sessionId =
|
|
118
|
+
window.crypto && window.crypto.randomUUID
|
|
119
|
+
? window.crypto.randomUUID()
|
|
120
|
+
: String(Date.now()) + Math.random().toString(16).slice(2);
|
|
121
|
+
try { window.localStorage.setItem(key, sessionId); } catch (error) {}
|
|
122
|
+
}
|
|
123
|
+
var frame = document.getElementById('n8n-chat-frame');
|
|
124
|
+
frame.src = frame.getAttribute('data-src') + '#sessionId=' + encodeURIComponent(sessionId);
|
|
125
|
+
})();
|
|
126
|
+
</script>
|
|
127
|
+
</body>
|
|
128
|
+
</html>`;
|
|
129
|
+
}
|
|
130
|
+
function createPage({ instanceId, webhookUrl, showWelcomeScreen, loadPreviousSession, i18n: { en }, initialMessages, authentication, allowFileUploads, allowedFilesMimeTypes, customCss, enableStreaming, frameIdentity, }) {
|
|
51
131
|
const validAuthenticationOptions = [
|
|
52
132
|
'none',
|
|
53
133
|
'basicAuth',
|
|
@@ -70,32 +150,14 @@ function createPage({ instanceId, webhookUrl, showWelcomeScreen, loadPreviousSes
|
|
|
70
150
|
: 'notSupported';
|
|
71
151
|
const sanitizedInitialMessages = getSanitizedInitialMessages(initialMessages);
|
|
72
152
|
const sanitizedI18nConfig = getSanitizedI18nConfig(en || {});
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
78
|
-
<title>Chat</title>
|
|
79
|
-
<link href="https://cdn.jsdelivr.net/npm/normalize.css@8.0.1/normalize.min.css" rel="stylesheet" />
|
|
80
|
-
<link href="https://cdn.jsdelivr.net/npm/@n8n/chat/dist/style.css" rel="stylesheet" />
|
|
81
|
-
<style>
|
|
82
|
-
html,
|
|
83
|
-
body,
|
|
84
|
-
#n8n-chat {
|
|
85
|
-
width: 100%;
|
|
86
|
-
height: 100%;
|
|
87
|
-
}
|
|
88
|
-
</style>
|
|
89
|
-
<style>${sanitizedCustomCss}</style>
|
|
90
|
-
</head>
|
|
91
|
-
<body>
|
|
92
|
-
<script type="module">
|
|
93
|
-
import { createChat } from 'https://cdn.jsdelivr.net/npm/@n8n/chat/dist/chat.bundle.es.js';
|
|
94
|
-
|
|
95
|
-
(async function () {
|
|
96
|
-
const authentication = '${sanitizedAuthentication}';
|
|
153
|
+
const shellInner = frameIdentity !== undefined;
|
|
154
|
+
const identityBootstrap = !frameIdentity
|
|
155
|
+
? `const authentication = '${sanitizedAuthentication}';
|
|
156
|
+
const injectedVisitor = null;
|
|
97
157
|
let metadata;
|
|
98
|
-
if (
|
|
158
|
+
if (injectedVisitor) {
|
|
159
|
+
metadata = { user: injectedVisitor };
|
|
160
|
+
} else if (authentication === 'n8nUserAuth') {
|
|
99
161
|
try {
|
|
100
162
|
const response = await fetch('/rest/login', {
|
|
101
163
|
method: 'GET',
|
|
@@ -119,7 +181,37 @@ function createPage({ instanceId, webhookUrl, showWelcomeScreen, loadPreviousSes
|
|
|
119
181
|
window.location.href = '/signin?redirect=' + window.location.href;
|
|
120
182
|
return;
|
|
121
183
|
}
|
|
122
|
-
}
|
|
184
|
+
}`
|
|
185
|
+
: `const metadata = { user: ${escapeForScriptContext({
|
|
186
|
+
id: frameIdentity.visitor.id,
|
|
187
|
+
firstName: frameIdentity.visitor.firstName,
|
|
188
|
+
lastName: frameIdentity.visitor.lastName,
|
|
189
|
+
email: frameIdentity.visitor.email,
|
|
190
|
+
})} };`;
|
|
191
|
+
return `<!doctype html>
|
|
192
|
+
<html lang="en">
|
|
193
|
+
<head>
|
|
194
|
+
<meta charset="utf-8">
|
|
195
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
196
|
+
<title>Chat</title>
|
|
197
|
+
<link href="https://cdn.jsdelivr.net/npm/normalize.css@8.0.1/normalize.min.css" rel="stylesheet" />
|
|
198
|
+
<link href="https://cdn.jsdelivr.net/npm/@n8n/chat/dist/style.css" rel="stylesheet" />
|
|
199
|
+
<style>
|
|
200
|
+
html,
|
|
201
|
+
body,
|
|
202
|
+
#n8n-chat {
|
|
203
|
+
width: 100%;
|
|
204
|
+
height: 100%;
|
|
205
|
+
}
|
|
206
|
+
</style>
|
|
207
|
+
<style>${sanitizedCustomCss}</style>
|
|
208
|
+
</head>
|
|
209
|
+
<body>${shellInner ? innerBootstrapScript : ''}
|
|
210
|
+
<script type="module">
|
|
211
|
+
import { createChat } from 'https://cdn.jsdelivr.net/npm/@n8n/chat/dist/chat.bundle.es.js';
|
|
212
|
+
|
|
213
|
+
(async function () {
|
|
214
|
+
${identityBootstrap}
|
|
123
215
|
|
|
124
216
|
createChat({
|
|
125
217
|
mode: 'fullscreen',
|
|
@@ -127,9 +219,11 @@ function createPage({ instanceId, webhookUrl, showWelcomeScreen, loadPreviousSes
|
|
|
127
219
|
showWelcomeScreen: ${sanitizedShowWelcomeScreen},
|
|
128
220
|
loadPreviousSession: ${sanitizedLoadPreviousSession !== 'notSupported'},
|
|
129
221
|
metadata: metadata,
|
|
222
|
+
${shellInner ? 'sessionId: window.__n8nChatSessionId || undefined,' : ''}
|
|
130
223
|
webhookConfig: {
|
|
131
224
|
headers: {
|
|
132
225
|
'X-Instance-Id': '${instanceId}',
|
|
226
|
+
${frameIdentity ? `'x-auth-token': ${escapeForScriptContext(frameIdentity.authToken)},` : ''}
|
|
133
227
|
}
|
|
134
228
|
},
|
|
135
229
|
allowFileUploads: ${sanitizedAllowFileUploads},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"templates.js","sourceRoot":"","sources":["../../../../nodes/trigger/ChatTrigger/templates.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"templates.js","sourceRoot":"","sources":["../../../../nodes/trigger/ChatTrigger/templates.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,10 @@
|
|
|
1
|
-
import type { INode } from 'n8n-workflow';
|
|
1
|
+
import type { INode, IUser } from 'n8n-workflow';
|
|
2
2
|
declare const validOptions: readonly ['notSupported', 'memory', 'manually'];
|
|
3
3
|
export type AuthenticationChatOption = 'none' | 'basicAuth' | 'n8nUserAuth';
|
|
4
4
|
export type LoadPreviousSessionChatOption = (typeof validOptions)[number];
|
|
5
|
+
export type ChatFrameIdentity = {
|
|
6
|
+
visitor: IUser;
|
|
7
|
+
authToken: string;
|
|
8
|
+
};
|
|
5
9
|
export declare function assertValidLoadPreviousSessionOption(value: string | undefined, node: INode): asserts value is LoadPreviousSessionChatOption | undefined;
|
|
6
10
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../nodes/trigger/ChatTrigger/types.ts"],"names":[],"mappings":";;;AACA,+CAAkD;AAElD,MAAM,YAAY,GAAG,CAAC,cAAc,EAAE,QAAQ,EAAE,UAAU,CAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../nodes/trigger/ChatTrigger/types.ts"],"names":[],"mappings":";;;AACA,+CAAkD;AAElD,MAAM,YAAY,GAAG,CAAC,cAAc,EAAE,QAAQ,EAAE,UAAU,CAAU,CAAC;AAYrE,SAAS,gCAAgC,CAAC,KAAc;IACvD,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAK,YAAkC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACzF,CAAC;AAED,8CACC,KAAyB,EACzB,IAAW;IAEX,IAAI,KAAK,IAAI,CAAC,gCAAgC,CAAC,KAAK,CAAC,EAAE,CAAC;QACvD,MAAM,IAAI,iCAAkB,CAAC,IAAI,EAAE,uCAAuC,KAAK,EAAE,CAAC,CAAC;IACpF,CAAC;AACF,CAAC"}
|
package/dist/nodes/vector_store/ChatHubVectorStorePGVector/ChatHubVectorStorePGVector.node.js
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ChatHubVectorStorePGVector = void 0;
|
|
4
|
-
const pgvector_1 = require("@langchain/community/vectorstores/pgvector");
|
|
5
4
|
const ai_utilities_1 = require("@n8n/ai-utilities");
|
|
6
5
|
const index_1 = require("n8n-nodes-base/dist/nodes/Postgres/transport/index");
|
|
7
6
|
const credentialTest_1 = require("n8n-nodes-base/dist/nodes/Postgres/v2/methods/credentialTest");
|
|
8
7
|
const n8n_workflow_1 = require("n8n-workflow");
|
|
8
|
+
const sqlIdentifier_1 = require("../../../utils/sqlIdentifier");
|
|
9
|
+
const chatHub_1 = require("../shared/chatHub");
|
|
9
10
|
const userScoped_1 = require("../shared/userScoped");
|
|
10
11
|
const VectorStorePGVector_node_1 = require("../VectorStorePGVector/VectorStorePGVector.node");
|
|
11
|
-
const chatHub_1 = require("../shared/chatHub");
|
|
12
12
|
const retrieveFields = [
|
|
13
13
|
{
|
|
14
14
|
displayName: 'Options',
|
|
@@ -26,7 +26,7 @@ async function deleteDocuments(payload) {
|
|
|
26
26
|
const pgConf = await index_1.configurePostgres.call(this, credentials);
|
|
27
27
|
const pool = pgConf.db.$pool;
|
|
28
28
|
if (!filter || Object.keys(filter).length === 0) {
|
|
29
|
-
await pool.query(`DROP TABLE IF EXISTS
|
|
29
|
+
await pool.query(`DROP TABLE IF EXISTS ${(0, sqlIdentifier_1.escapeQualifiedSqlIdentifier)(tableName)}`);
|
|
30
30
|
return null;
|
|
31
31
|
}
|
|
32
32
|
const conditions = [];
|
|
@@ -42,7 +42,7 @@ async function deleteDocuments(payload) {
|
|
|
42
42
|
values.push(key, value);
|
|
43
43
|
paramIndex += 2;
|
|
44
44
|
}
|
|
45
|
-
await pool.query(`DELETE FROM
|
|
45
|
+
await pool.query(`DELETE FROM ${(0, sqlIdentifier_1.escapeQualifiedSqlIdentifier)(tableName)} WHERE ${conditions.join(' AND ')}`, values);
|
|
46
46
|
return null;
|
|
47
47
|
}
|
|
48
48
|
async function chatHubVectorStorePGVectorApiConnectionTest(credential) {
|
|
@@ -110,7 +110,10 @@ class ChatHubVectorStorePGVector extends (0, ai_utilities_1.createVectorStoreNod
|
|
|
110
110
|
tableName,
|
|
111
111
|
filter,
|
|
112
112
|
};
|
|
113
|
-
const store = await VectorStorePGVector_node_1.ExtendedPGVectorStore.initialize(embeddings,
|
|
113
|
+
const store = await VectorStorePGVector_node_1.ExtendedPGVectorStore.initialize(embeddings, {
|
|
114
|
+
...config,
|
|
115
|
+
n8nNode: context.getNode(),
|
|
116
|
+
});
|
|
114
117
|
const originalSearch = store.similaritySearchVectorWithScore.bind(store);
|
|
115
118
|
store.similaritySearchVectorWithScore = async (...args) => {
|
|
116
119
|
const results = await originalSearch(...args);
|
|
@@ -130,8 +133,16 @@ class ChatHubVectorStorePGVector extends (0, ai_utilities_1.createVectorStoreNod
|
|
|
130
133
|
pool,
|
|
131
134
|
tableName,
|
|
132
135
|
};
|
|
133
|
-
const vectorStore = await
|
|
134
|
-
|
|
136
|
+
const vectorStore = await VectorStorePGVector_node_1.ExtendedPGVectorStore.initialize(embeddings, {
|
|
137
|
+
...config,
|
|
138
|
+
n8nNode: context.getNode(),
|
|
139
|
+
});
|
|
140
|
+
try {
|
|
141
|
+
await vectorStore.addDocuments((0, chatHub_1.filterChatHubInsertDocuments)(documents));
|
|
142
|
+
}
|
|
143
|
+
finally {
|
|
144
|
+
vectorStore.client?.release();
|
|
145
|
+
}
|
|
135
146
|
},
|
|
136
147
|
releaseVectorStoreClient(vectorStore) {
|
|
137
148
|
vectorStore.client?.release();
|
package/dist/nodes/vector_store/ChatHubVectorStorePGVector/ChatHubVectorStorePGVector.node.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatHubVectorStorePGVector.node.js","sourceRoot":"","sources":["../../../../nodes/vector_store/ChatHubVectorStorePGVector/ChatHubVectorStorePGVector.node.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"ChatHubVectorStorePGVector.node.js","sourceRoot":"","sources":["../../../../nodes/vector_store/ChatHubVectorStorePGVector/ChatHubVectorStorePGVector.node.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,14 @@
|
|
|
1
1
|
import { PGVectorStore, type PGVectorStoreArgs } from '@langchain/community/vectorstores/pgvector';
|
|
2
2
|
import type { EmbeddingsInterface } from '@langchain/core/embeddings';
|
|
3
|
+
import type { IExecuteFunctions, INode, ISupplyDataFunctions } from 'n8n-workflow';
|
|
3
4
|
export declare class ExtendedPGVectorStore extends PGVectorStore {
|
|
5
|
+
n8nNode: INode;
|
|
6
|
+
get computedTableName(): string;
|
|
7
|
+
get computedCollectionTableName(): string;
|
|
8
|
+
ensureCollectionTableInDatabase(): Promise<void>;
|
|
4
9
|
static initialize(embeddings: EmbeddingsInterface, args: PGVectorStoreArgs & {
|
|
5
10
|
dimensions?: number;
|
|
11
|
+
n8nNode: INode;
|
|
6
12
|
}): Promise<ExtendedPGVectorStore>;
|
|
7
13
|
similaritySearchVectorWithScore(query: number[], k: number, filter?: PGVectorStore['FilterType']): Promise<[import("@langchain/core/documents").Document<Record<string, any>>, number][]>;
|
|
8
14
|
}
|
|
@@ -19,8 +25,8 @@ declare const VectorStorePGVector_base: new () => {
|
|
|
19
25
|
[functionName: string]: import("n8n-workflow").ICredentialTestFunction;
|
|
20
26
|
};
|
|
21
27
|
} | undefined;
|
|
22
|
-
execute(this:
|
|
23
|
-
supplyData(this:
|
|
28
|
+
execute(this: IExecuteFunctions): Promise<import("n8n-workflow").INodeExecutionData[][]>;
|
|
29
|
+
supplyData(this: ISupplyDataFunctions, itemIndex: number): Promise<import("n8n-workflow").SupplyData>;
|
|
24
30
|
};
|
|
25
31
|
export declare class VectorStorePGVector extends VectorStorePGVector_base {
|
|
26
32
|
}
|