@n8n/n8n-nodes-langchain 2.13.0 → 2.13.1
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/nodes/agents/Agent/agents/SqlAgent/execute.d.ts +1 -0
- package/dist/nodes/agents/Agent/agents/SqlAgent/execute.js +38 -0
- package/dist/nodes/agents/Agent/agents/SqlAgent/execute.js.map +1 -1
- package/dist/nodes/trigger/ChatTrigger/templates.d.ts +1 -0
- package/dist/nodes/trigger/ChatTrigger/templates.js +6 -5
- package/dist/nodes/trigger/ChatTrigger/templates.js.map +1 -1
- package/dist/typecheck.tsbuildinfo +1 -1
- package/package.json +8 -8
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
5af3c6ade22c71438bce5116f1f17f789f14d1ad913479351cf57f91377af432
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.detectBlockedSqlKeyword = detectBlockedSqlKeyword;
|
|
3
4
|
exports.sqlAgentAgentExecute = sqlAgentAgentExecute;
|
|
5
|
+
const tools_1 = require("@langchain/core/tools");
|
|
4
6
|
const sql_1 = require("@langchain/classic/agents/toolkits/sql");
|
|
5
7
|
const sql_db_1 = require("@langchain/classic/sql_db");
|
|
6
8
|
const n8n_workflow_1 = require("n8n-workflow");
|
|
@@ -14,6 +16,27 @@ const parseTablesString = (tablesString) => tablesString
|
|
|
14
16
|
.split(',')
|
|
15
17
|
.map((table) => table.trim())
|
|
16
18
|
.filter((table) => table.length > 0);
|
|
19
|
+
const BLOCKED_SQL_OPERATIONS = new Set([
|
|
20
|
+
'INSERT',
|
|
21
|
+
'UPDATE',
|
|
22
|
+
'DELETE',
|
|
23
|
+
'DROP',
|
|
24
|
+
'TRUNCATE',
|
|
25
|
+
'ALTER',
|
|
26
|
+
'CREATE',
|
|
27
|
+
'REPLACE',
|
|
28
|
+
'MERGE',
|
|
29
|
+
]);
|
|
30
|
+
function detectBlockedSqlKeyword(sql) {
|
|
31
|
+
const stripped = sql
|
|
32
|
+
.replace(/--[^\n]*/g, '')
|
|
33
|
+
.replace(/\/\*[\s\S]*?\*\//g, '')
|
|
34
|
+
.replace(/'(?:[^'\\]|\\.)*'/g, "''")
|
|
35
|
+
.replace(/"(?:[^"\\]|\\.)*"/g, '""');
|
|
36
|
+
const pattern = new RegExp(`\\b(${[...BLOCKED_SQL_OPERATIONS].join('|')})\\b`, 'i');
|
|
37
|
+
const match = stripped.match(pattern);
|
|
38
|
+
return match ? match[1].toUpperCase() : undefined;
|
|
39
|
+
}
|
|
17
40
|
async function sqlAgentAgentExecute() {
|
|
18
41
|
this.logger.debug('Executing SQL Agent');
|
|
19
42
|
const model = (await this.getInputConnectionData(n8n_workflow_1.NodeConnectionTypes.AiLanguageModel, 0));
|
|
@@ -73,6 +96,21 @@ async function sqlAgentAgentExecute() {
|
|
|
73
96
|
});
|
|
74
97
|
const toolkit = new sql_1.SqlToolkit(dbInstance, model);
|
|
75
98
|
const agentExecutor = (0, sql_1.createSqlAgent)(model, toolkit, agentOptions);
|
|
99
|
+
agentExecutor.tools = agentExecutor.tools.map((tool) => {
|
|
100
|
+
if (tool.name !== 'query-sql')
|
|
101
|
+
return tool;
|
|
102
|
+
return new tools_1.DynamicTool({
|
|
103
|
+
name: tool.name,
|
|
104
|
+
description: tool.description,
|
|
105
|
+
func: async (sqlInput) => {
|
|
106
|
+
const blockedKeyword = detectBlockedSqlKeyword(sqlInput);
|
|
107
|
+
if (blockedKeyword) {
|
|
108
|
+
throw new n8n_workflow_1.NodeOperationError(this.getNode(), `SQL operation "${blockedKeyword}" is not allowed`, { itemIndex: i });
|
|
109
|
+
}
|
|
110
|
+
return String(await tool.invoke(sqlInput));
|
|
111
|
+
},
|
|
112
|
+
});
|
|
113
|
+
});
|
|
76
114
|
const memory = (await this.getInputConnectionData(n8n_workflow_1.NodeConnectionTypes.AiMemory, 0));
|
|
77
115
|
agentExecutor.memory = memory;
|
|
78
116
|
let chatHistory = '';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execute.js","sourceRoot":"","sources":["../../../../../../nodes/agents/Agent/agents/SqlAgent/execute.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"execute.js","sourceRoot":"","sources":["../../../../../../nodes/agents/Agent/agents/SqlAgent/execute.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { AuthenticationChatOption, LoadPreviousSessionChatOption } from './types';
|
|
2
2
|
export declare function getSanitizedInitialMessages(initialMessages: string): string[];
|
|
3
3
|
export declare function getSanitizedI18nConfig(config: Record<string, string>): Record<string, string>;
|
|
4
|
+
export declare function getSanitizedCustomCss(customCss: string): string;
|
|
4
5
|
export declare function createPage({ instanceId, webhookUrl, showWelcomeScreen, loadPreviousSession, i18n: { en }, initialMessages, authentication, allowFileUploads, allowedFilesMimeTypes, customCss, enableStreaming, }: {
|
|
5
6
|
instanceId: string;
|
|
6
7
|
webhookUrl?: string;
|
|
@@ -5,6 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.getSanitizedInitialMessages = getSanitizedInitialMessages;
|
|
7
7
|
exports.getSanitizedI18nConfig = getSanitizedI18nConfig;
|
|
8
|
+
exports.getSanitizedCustomCss = getSanitizedCustomCss;
|
|
8
9
|
exports.createPage = createPage;
|
|
9
10
|
const sanitize_html_1 = __importDefault(require("sanitize-html"));
|
|
10
11
|
function sanitizeUserInput(input) {
|
|
@@ -31,6 +32,9 @@ function getSanitizedI18nConfig(config) {
|
|
|
31
32
|
}
|
|
32
33
|
return sanitized;
|
|
33
34
|
}
|
|
35
|
+
function getSanitizedCustomCss(customCss) {
|
|
36
|
+
return customCss.replace(/<\/style/gi, '');
|
|
37
|
+
}
|
|
34
38
|
function createPage({ instanceId, webhookUrl, showWelcomeScreen, loadPreviousSession, i18n: { en }, initialMessages, authentication, allowFileUploads, allowedFilesMimeTypes, customCss, enableStreaming, }) {
|
|
35
39
|
const validAuthenticationOptions = [
|
|
36
40
|
'none',
|
|
@@ -48,10 +52,7 @@ function createPage({ instanceId, webhookUrl, showWelcomeScreen, loadPreviousSes
|
|
|
48
52
|
const sanitizedShowWelcomeScreen = !!showWelcomeScreen;
|
|
49
53
|
const sanitizedAllowFileUploads = !!allowFileUploads;
|
|
50
54
|
const sanitizedAllowedFilesMimeTypes = sanitizeUserInput(allowedFilesMimeTypes?.toString() ?? '');
|
|
51
|
-
const sanitizedCustomCss = (
|
|
52
|
-
allowedTags: ['style'],
|
|
53
|
-
allowedAttributes: false,
|
|
54
|
-
});
|
|
55
|
+
const sanitizedCustomCss = getSanitizedCustomCss(customCss?.toString() ?? '');
|
|
55
56
|
const sanitizedLoadPreviousSession = validLoadPreviousSessionOptions.includes(loadPreviousSession)
|
|
56
57
|
? loadPreviousSession
|
|
57
58
|
: 'notSupported';
|
|
@@ -73,7 +74,7 @@ function createPage({ instanceId, webhookUrl, showWelcomeScreen, loadPreviousSes
|
|
|
73
74
|
height: 100%;
|
|
74
75
|
}
|
|
75
76
|
</style>
|
|
76
|
-
|
|
77
|
+
<style>${sanitizedCustomCss}</style>
|
|
77
78
|
</head>
|
|
78
79
|
<body>
|
|
79
80
|
<script type="module">
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"templates.js","sourceRoot":"","sources":["../../../../nodes/trigger/ChatTrigger/templates.ts"],"names":[],"mappings":";;;;;AAiBA,kEAOC;AAED,wDAQC;AACD,
|
|
1
|
+
{"version":3,"file":"templates.js","sourceRoot":"","sources":["../../../../nodes/trigger/ChatTrigger/templates.ts"],"names":[],"mappings":"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"}
|