@n8n/n8n-nodes-langchain 0.15.0 → 0.16.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/build.tsbuildinfo +1 -1
- package/dist/credentials/AzureOpenAiApi.credentials.js +1 -1
- package/dist/credentials/AzureOpenAiApi.credentials.js.map +1 -1
- package/dist/known/credentials.json +1 -0
- package/dist/known/nodes.json +4 -0
- package/dist/nodes/agents/Agent/Agent.node.js +16 -28
- package/dist/nodes/agents/Agent/Agent.node.js.map +1 -1
- package/dist/nodes/agents/Agent/agents/SqlAgent/description.js +92 -19
- package/dist/nodes/agents/Agent/agents/SqlAgent/description.js.map +1 -1
- package/dist/nodes/agents/Agent/agents/SqlAgent/execute.js +28 -4
- package/dist/nodes/agents/Agent/agents/SqlAgent/execute.js.map +1 -1
- package/dist/nodes/agents/Agent/agents/SqlAgent/other/handlers/sqlite.d.ts +1 -1
- package/dist/nodes/agents/Agent/agents/SqlAgent/other/handlers/sqlite.js +13 -3
- package/dist/nodes/agents/Agent/agents/SqlAgent/other/handlers/sqlite.js.map +1 -1
- package/dist/nodes/agents/Agent/agents/SqlAgent/other/prompts.d.ts +1 -1
- package/dist/nodes/agents/Agent/agents/SqlAgent/other/prompts.js +2 -0
- package/dist/nodes/agents/Agent/agents/SqlAgent/other/prompts.js.map +1 -1
- package/dist/nodes/embeddings/EmbeddingsOllama/EmbeddingsOllama.node.d.ts +5 -0
- package/dist/nodes/embeddings/EmbeddingsOllama/EmbeddingsOllama.node.js +54 -0
- package/dist/nodes/embeddings/EmbeddingsOllama/EmbeddingsOllama.node.js.map +1 -0
- package/dist/nodes/embeddings/EmbeddingsOllama/ollama.svg +1 -0
- package/dist/nodes/llms/LMChatOllama/LmChatOllama.node.js +4 -91
- package/dist/nodes/llms/LMChatOllama/LmChatOllama.node.js.map +1 -1
- package/dist/nodes/llms/LMOllama/LmOllama.node.js +4 -91
- package/dist/nodes/llms/LMOllama/LmOllama.node.js.map +1 -1
- package/dist/nodes/llms/LMOllama/description.d.ts +4 -0
- package/dist/nodes/llms/LMOllama/description.js +97 -0
- package/dist/nodes/llms/LMOllama/description.js.map +1 -0
- package/dist/nodes/memory/MemoryBufferWindow/MemoryBufferWindow.node.js +21 -3
- package/dist/nodes/memory/MemoryBufferWindow/MemoryBufferWindow.node.js.map +1 -1
- package/dist/nodes/memory/MemoryMotorhead/MemoryMotorhead.node.js +20 -2
- package/dist/nodes/memory/MemoryMotorhead/MemoryMotorhead.node.js.map +1 -1
- package/dist/nodes/memory/MemoryRedisChat/MemoryRedisChat.node.js +21 -3
- package/dist/nodes/memory/MemoryRedisChat/MemoryRedisChat.node.js.map +1 -1
- package/dist/nodes/memory/MemoryXata/MemoryXata.node.js +27 -8
- package/dist/nodes/memory/MemoryXata/MemoryXata.node.js.map +1 -1
- package/dist/nodes/memory/MemoryZep/MemoryZep.node.js +20 -2
- package/dist/nodes/memory/MemoryZep/MemoryZep.node.js.map +1 -1
- package/dist/nodes/memory/descriptions.d.ts +3 -0
- package/dist/nodes/memory/descriptions.js +34 -0
- package/dist/nodes/memory/descriptions.js.map +1 -0
- package/dist/nodes/vector_store/shared/createVectorStoreNode.js +2 -2
- package/dist/nodes/vector_store/shared/createVectorStoreNode.js.map +1 -1
- package/dist/nodes/vendors/OpenAi/actions/file/upload.operation.js +2 -2
- package/dist/nodes/vendors/OpenAi/actions/file/upload.operation.js.map +1 -1
- package/dist/types/credentials.json +1 -1
- package/dist/types/nodes.json +7 -6
- package/dist/utils/N8nBinaryLoader.js +9 -4
- package/dist/utils/N8nBinaryLoader.js.map +1 -1
- package/dist/utils/descriptions.d.ts +3 -0
- package/dist/utils/descriptions.js +33 -0
- package/dist/utils/descriptions.js.map +1 -0
- package/dist/utils/helpers.d.ts +5 -1
- package/dist/utils/helpers.js +50 -1
- package/dist/utils/helpers.js.map +1 -1
- package/dist/utils/logWrapper.d.ts +2 -2
- package/dist/utils/logWrapper.js +25 -16
- package/dist/utils/logWrapper.js.map +1 -1
- package/package.json +5 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AzureOpenAiApi.credentials.js","sourceRoot":"","sources":["../../credentials/AzureOpenAiApi.credentials.ts"],"names":[],"mappings":";;;AAEA,MAAa,cAAc;IAA3B;QACC,SAAI,GAAG,gBAAgB,CAAC;QAExB,gBAAW,GAAG,eAAe,CAAC;QAE9B,qBAAgB,GAAG,aAAa,CAAC;QAEjC,eAAU,GAAsB;YAC/B;gBACC,WAAW,EAAE,SAAS;gBACtB,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;gBAC/B,QAAQ,EAAE,IAAI;gBACd,OAAO,EAAE,EAAE;aACX;YACD;gBACC,WAAW,EAAE,eAAe;gBAC5B,IAAI,EAAE,cAAc;gBACpB,IAAI,EAAE,QAAQ;gBACd,QAAQ,EAAE,IAAI;gBACd,OAAO,EAAE,EAAE;aACX;YACD;gBACC,WAAW,EAAE,aAAa;gBAC1B,IAAI,EAAE,YAAY;gBAClB,IAAI,EAAE,QAAQ;gBACd,QAAQ,EAAE,IAAI;gBACd,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"AzureOpenAiApi.credentials.js","sourceRoot":"","sources":["../../credentials/AzureOpenAiApi.credentials.ts"],"names":[],"mappings":";;;AAEA,MAAa,cAAc;IAA3B;QACC,SAAI,GAAG,gBAAgB,CAAC;QAExB,gBAAW,GAAG,eAAe,CAAC;QAE9B,qBAAgB,GAAG,aAAa,CAAC;QAEjC,eAAU,GAAsB;YAC/B;gBACC,WAAW,EAAE,SAAS;gBACtB,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;gBAC/B,QAAQ,EAAE,IAAI;gBACd,OAAO,EAAE,EAAE;aACX;YACD;gBACC,WAAW,EAAE,eAAe;gBAC5B,IAAI,EAAE,cAAc;gBACpB,IAAI,EAAE,QAAQ;gBACd,QAAQ,EAAE,IAAI;gBACd,OAAO,EAAE,EAAE;aACX;YACD;gBACC,WAAW,EAAE,aAAa;gBAC1B,IAAI,EAAE,YAAY;gBAClB,IAAI,EAAE,QAAQ;gBACd,QAAQ,EAAE,IAAI;gBACd,OAAO,EAAE,oBAAoB;aAC7B;SACD,CAAC;QAEF,iBAAY,GAAyB;YACpC,IAAI,EAAE,SAAS;YACf,UAAU,EAAE;gBACX,OAAO,EAAE;oBACR,SAAS,EAAE,0BAA0B;iBACrC;aACD;SACD,CAAC;IACH,CAAC;CAAA;AAxCD,wCAwCC"}
|
package/dist/known/nodes.json
CHANGED
|
@@ -63,6 +63,10 @@
|
|
|
63
63
|
"className": "EmbeddingsMistralCloud",
|
|
64
64
|
"sourcePath": "dist/nodes/embeddings/EmbeddingsMistralCloud/EmbeddingsMistralCloud.node.js"
|
|
65
65
|
},
|
|
66
|
+
"embeddingsOllama": {
|
|
67
|
+
"className": "EmbeddingsOllama",
|
|
68
|
+
"sourcePath": "dist/nodes/embeddings/EmbeddingsOllama/EmbeddingsOllama.node.js"
|
|
69
|
+
},
|
|
66
70
|
"embeddingsOpenAi": {
|
|
67
71
|
"className": "EmbeddingsOpenAi",
|
|
68
72
|
"sourcePath": "dist/nodes/embeddings/EmbeddingsOpenAI/EmbeddingsOpenAi.node.js"
|
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.Agent = void 0;
|
|
4
4
|
const n8n_workflow_1 = require("n8n-workflow");
|
|
5
5
|
const sharedFields_1 = require("../../../utils/sharedFields");
|
|
6
|
+
const descriptions_1 = require("../../../utils/descriptions");
|
|
6
7
|
const description_1 = require("./agents/ConversationalAgent/description");
|
|
7
8
|
const execute_1 = require("./agents/ConversationalAgent/execute");
|
|
8
9
|
const description_2 = require("./agents/OpenAiFunctionsAgent/description");
|
|
@@ -68,7 +69,10 @@ function getInputs(agent, hasOutputParser) {
|
|
|
68
69
|
{
|
|
69
70
|
type: "ai_languageModel",
|
|
70
71
|
filter: {
|
|
71
|
-
nodes: [
|
|
72
|
+
nodes: [
|
|
73
|
+
'@n8n/n8n-nodes-langchain.lmChatOpenAi',
|
|
74
|
+
'@n8n/n8n-nodes-langchain.lmChatAzureOpenAi',
|
|
75
|
+
],
|
|
72
76
|
},
|
|
73
77
|
},
|
|
74
78
|
{
|
|
@@ -101,6 +105,9 @@ function getInputs(agent, hasOutputParser) {
|
|
|
101
105
|
{
|
|
102
106
|
type: "ai_languageModel",
|
|
103
107
|
},
|
|
108
|
+
{
|
|
109
|
+
type: "ai_memory",
|
|
110
|
+
},
|
|
104
111
|
];
|
|
105
112
|
}
|
|
106
113
|
else if (agent === 'planAndExecuteAgent') {
|
|
@@ -128,9 +135,9 @@ class Agent {
|
|
|
128
135
|
name: 'agent',
|
|
129
136
|
icon: 'fa:robot',
|
|
130
137
|
group: ['transform'],
|
|
131
|
-
version: [1, 1.1, 1.2, 1.3],
|
|
138
|
+
version: [1, 1.1, 1.2, 1.3, 1.4],
|
|
132
139
|
description: 'Generates an action plan and executes it. Can use external tools.',
|
|
133
|
-
subtitle: "={{ { conversationalAgent: 'Conversational Agent', openAiFunctionsAgent: 'OpenAI Functions Agent',
|
|
140
|
+
subtitle: "={{ { conversationalAgent: 'Conversational Agent', openAiFunctionsAgent: 'OpenAI Functions Agent', reActAgent: 'ReAct Agent', sqlAgent: 'SQL Agent', planAndExecuteAgent: 'Plan and Execute Agent' }[$parameter.agent] }}",
|
|
134
141
|
defaults: {
|
|
135
142
|
name: 'AI Agent',
|
|
136
143
|
color: '#404040',
|
|
@@ -223,42 +230,23 @@ class Agent {
|
|
|
223
230
|
default: 'conversationalAgent',
|
|
224
231
|
},
|
|
225
232
|
{
|
|
226
|
-
|
|
227
|
-
name: 'promptType',
|
|
228
|
-
type: 'options',
|
|
229
|
-
options: [
|
|
230
|
-
{
|
|
231
|
-
name: 'Take from previous node automatically',
|
|
232
|
-
value: 'auto',
|
|
233
|
-
description: 'Looks for an input field called chatInput',
|
|
234
|
-
},
|
|
235
|
-
{
|
|
236
|
-
name: 'Define below',
|
|
237
|
-
value: 'define',
|
|
238
|
-
description: 'Use an expression to reference data in previous nodes or enter static text',
|
|
239
|
-
},
|
|
240
|
-
],
|
|
233
|
+
...descriptions_1.promptTypeOptions,
|
|
241
234
|
displayOptions: {
|
|
242
235
|
hide: {
|
|
243
236
|
'@version': [{ _cnd: { lte: 1.2 } }],
|
|
237
|
+
agent: ['sqlAgent'],
|
|
244
238
|
},
|
|
245
239
|
},
|
|
246
|
-
default: 'auto',
|
|
247
240
|
},
|
|
248
241
|
{
|
|
249
|
-
|
|
250
|
-
name: 'text',
|
|
251
|
-
type: 'string',
|
|
252
|
-
required: true,
|
|
253
|
-
default: '',
|
|
254
|
-
placeholder: 'e.g. Hello, how can you help me?',
|
|
255
|
-
typeOptions: {
|
|
256
|
-
rows: 2,
|
|
257
|
-
},
|
|
242
|
+
...descriptions_1.textInput,
|
|
258
243
|
displayOptions: {
|
|
259
244
|
show: {
|
|
260
245
|
promptType: ['define'],
|
|
261
246
|
},
|
|
247
|
+
hide: {
|
|
248
|
+
agent: ['sqlAgent'],
|
|
249
|
+
},
|
|
262
250
|
},
|
|
263
251
|
},
|
|
264
252
|
{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Agent.node.js","sourceRoot":"","sources":["../../../../nodes/agents/Agent/Agent.node.ts"],"names":[],"mappings":";;;AAAA,+CAAsE;AAUtE,8DAAqE;AACrE,0EAAyF;AACzF,kEAAkF;
|
|
1
|
+
{"version":3,"file":"Agent.node.js","sourceRoot":"","sources":["../../../../nodes/agents/Agent/Agent.node.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,36 +1,89 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.sqlAgentAgentProperties = void 0;
|
|
4
|
+
const descriptions_1 = require("../../../../../utils/descriptions");
|
|
4
5
|
const prompts_1 = require("./other/prompts");
|
|
6
|
+
const dataSourceOptions = {
|
|
7
|
+
displayName: 'Data Source',
|
|
8
|
+
name: 'dataSource',
|
|
9
|
+
type: 'options',
|
|
10
|
+
displayOptions: {
|
|
11
|
+
show: {
|
|
12
|
+
agent: ['sqlAgent'],
|
|
13
|
+
},
|
|
14
|
+
},
|
|
15
|
+
default: 'sqlite',
|
|
16
|
+
description: 'SQL database to connect to',
|
|
17
|
+
options: [
|
|
18
|
+
{
|
|
19
|
+
name: 'MySQL',
|
|
20
|
+
value: 'mysql',
|
|
21
|
+
description: 'Connect to a MySQL database',
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
name: 'Postgres',
|
|
25
|
+
value: 'postgres',
|
|
26
|
+
description: 'Connect to a Postgres database',
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
name: 'SQLite',
|
|
30
|
+
value: 'sqlite',
|
|
31
|
+
description: 'Use SQLite by connecting a database file as binary input',
|
|
32
|
+
},
|
|
33
|
+
],
|
|
34
|
+
};
|
|
5
35
|
exports.sqlAgentAgentProperties = [
|
|
6
36
|
{
|
|
7
|
-
|
|
8
|
-
name: 'dataSource',
|
|
9
|
-
type: 'options',
|
|
37
|
+
...dataSourceOptions,
|
|
10
38
|
displayOptions: {
|
|
11
39
|
show: {
|
|
12
40
|
agent: ['sqlAgent'],
|
|
41
|
+
'@version': [{ _cnd: { lt: 1.4 } }],
|
|
13
42
|
},
|
|
14
43
|
},
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
...dataSourceOptions,
|
|
47
|
+
default: 'postgres',
|
|
48
|
+
displayOptions: {
|
|
49
|
+
show: {
|
|
50
|
+
agent: ['sqlAgent'],
|
|
51
|
+
'@version': [{ _cnd: { gte: 1.4 } }],
|
|
22
52
|
},
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
53
|
+
},
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
displayName: 'Credentials',
|
|
57
|
+
name: 'credentials',
|
|
58
|
+
type: 'credentials',
|
|
59
|
+
default: '',
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
displayName: "Pass the SQLite database into this node as binary data, e.g. by inserting a 'Read/Write Files from Disk' node beforehand",
|
|
63
|
+
name: 'sqLiteFileNotice',
|
|
64
|
+
type: 'notice',
|
|
65
|
+
default: '',
|
|
66
|
+
displayOptions: {
|
|
67
|
+
show: {
|
|
68
|
+
agent: ['sqlAgent'],
|
|
69
|
+
dataSource: ['sqlite'],
|
|
27
70
|
},
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
71
|
+
},
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
displayName: 'Input Binary Field',
|
|
75
|
+
name: 'binaryPropertyName',
|
|
76
|
+
type: 'string',
|
|
77
|
+
default: 'data',
|
|
78
|
+
required: true,
|
|
79
|
+
placeholder: 'e.g data',
|
|
80
|
+
hint: 'The name of the input binary field containing the file to be extracted',
|
|
81
|
+
displayOptions: {
|
|
82
|
+
show: {
|
|
83
|
+
agent: ['sqlAgent'],
|
|
84
|
+
dataSource: ['sqlite'],
|
|
32
85
|
},
|
|
33
|
-
|
|
86
|
+
},
|
|
34
87
|
},
|
|
35
88
|
{
|
|
36
89
|
displayName: 'Prompt',
|
|
@@ -48,6 +101,26 @@ exports.sqlAgentAgentProperties = [
|
|
|
48
101
|
rows: 5,
|
|
49
102
|
},
|
|
50
103
|
},
|
|
104
|
+
{
|
|
105
|
+
...descriptions_1.promptTypeOptions,
|
|
106
|
+
displayOptions: {
|
|
107
|
+
hide: {
|
|
108
|
+
'@version': [{ _cnd: { lte: 1.2 } }],
|
|
109
|
+
},
|
|
110
|
+
show: {
|
|
111
|
+
agent: ['sqlAgent'],
|
|
112
|
+
},
|
|
113
|
+
},
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
...descriptions_1.textInput,
|
|
117
|
+
displayOptions: {
|
|
118
|
+
show: {
|
|
119
|
+
promptType: ['define'],
|
|
120
|
+
agent: ['sqlAgent'],
|
|
121
|
+
},
|
|
122
|
+
},
|
|
123
|
+
},
|
|
51
124
|
{
|
|
52
125
|
displayName: 'Options',
|
|
53
126
|
name: 'options',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"description.js","sourceRoot":"","sources":["../../../../../../nodes/agents/Agent/agents/SqlAgent/description.ts"],"names":[],"mappings":";;;AACA,6CAAyD;
|
|
1
|
+
{"version":3,"file":"description.js","sourceRoot":"","sources":["../../../../../../nodes/agents/Agent/agents/SqlAgent/description.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,7 +14,7 @@ const parseTablesString = (tablesString) => tablesString
|
|
|
14
14
|
.map((table) => table.trim())
|
|
15
15
|
.filter((table) => table.length > 0);
|
|
16
16
|
async function sqlAgentAgentExecute() {
|
|
17
|
-
var _a, _b, _c, _d, _e;
|
|
17
|
+
var _a, _b, _c, _d, _e, _f;
|
|
18
18
|
this.logger.verbose('Executing SQL Agent');
|
|
19
19
|
const model = (await this.getInputConnectionData("ai_languageModel", 0));
|
|
20
20
|
const items = this.getInputData();
|
|
@@ -29,7 +29,7 @@ async function sqlAgentAgentExecute() {
|
|
|
29
29
|
input = (0, helpers_1.getPromptInputByType)({
|
|
30
30
|
ctx: this,
|
|
31
31
|
i,
|
|
32
|
-
inputKey: '
|
|
32
|
+
inputKey: 'text',
|
|
33
33
|
promptTypeKey: 'promptType',
|
|
34
34
|
});
|
|
35
35
|
}
|
|
@@ -46,7 +46,8 @@ async function sqlAgentAgentExecute() {
|
|
|
46
46
|
if (!item.binary) {
|
|
47
47
|
throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'No binary data found, please connect a binary to the input if you want to use SQLite as data source');
|
|
48
48
|
}
|
|
49
|
-
|
|
49
|
+
const binaryPropertyName = this.getNodeParameter('binaryPropertyName', i, 'data');
|
|
50
|
+
dataSource = await sqlite_1.getSqliteDataSource.call(this, item.binary, binaryPropertyName);
|
|
50
51
|
}
|
|
51
52
|
if (selectedDataSource === 'postgres') {
|
|
52
53
|
dataSource = await postgres_1.getPostgresDataSource.call(this);
|
|
@@ -61,6 +62,7 @@ async function sqlAgentAgentExecute() {
|
|
|
61
62
|
topK: (_c = options.topK) !== null && _c !== void 0 ? _c : 10,
|
|
62
63
|
prefix: (_d = options.prefixPrompt) !== null && _d !== void 0 ? _d : prompts_1.SQL_PREFIX,
|
|
63
64
|
suffix: (_e = options.suffixPrompt) !== null && _e !== void 0 ? _e : prompts_1.SQL_SUFFIX,
|
|
65
|
+
inputVariables: ['chatHistory', 'input', 'agent_scratchpad'],
|
|
64
66
|
};
|
|
65
67
|
const dbInstance = await sql_db_1.SqlDatabase.fromDataSourceParams({
|
|
66
68
|
appDataSource: dataSource,
|
|
@@ -70,7 +72,29 @@ async function sqlAgentAgentExecute() {
|
|
|
70
72
|
});
|
|
71
73
|
const toolkit = new sql_1.SqlToolkit(dbInstance, model);
|
|
72
74
|
const agentExecutor = (0, sql_1.createSqlAgent)(model, toolkit, agentOptions);
|
|
73
|
-
const
|
|
75
|
+
const memory = (await this.getInputConnectionData("ai_memory", 0));
|
|
76
|
+
agentExecutor.memory = memory;
|
|
77
|
+
let chatHistory = '';
|
|
78
|
+
if (memory) {
|
|
79
|
+
const messages = await memory.chatHistory.getMessages();
|
|
80
|
+
chatHistory = (0, helpers_1.serializeChatHistory)(messages);
|
|
81
|
+
}
|
|
82
|
+
let response;
|
|
83
|
+
try {
|
|
84
|
+
response = await agentExecutor.call({
|
|
85
|
+
input,
|
|
86
|
+
signal: this.getExecutionCancelSignal(),
|
|
87
|
+
chatHistory,
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
catch (error) {
|
|
91
|
+
if ((_f = error.message) === null || _f === void 0 ? void 0 : _f.output) {
|
|
92
|
+
response = error.message;
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
throw new n8n_workflow_1.NodeOperationError(this.getNode(), error.message, { itemIndex: i });
|
|
96
|
+
}
|
|
97
|
+
}
|
|
74
98
|
returnData.push({ json: response });
|
|
75
99
|
}
|
|
76
100
|
return await this.prepareOutputData(returnData);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execute.js","sourceRoot":"","sources":["../../../../../../nodes/agents/Agent/agents/SqlAgent/execute.ts"],"names":[],"mappings":";;;AAAA,+CAKsB;AAEtB,6CAA+C;AAE/C,uDAA2E;
|
|
1
|
+
{"version":3,"file":"execute.js","sourceRoot":"","sources":["../../../../../../nodes/agents/Agent/agents/SqlAgent/execute.ts"],"names":[],"mappings":";;;AAAA,+CAKsB;AAEtB,6CAA+C;AAE/C,uDAA2E;AAK3E,0DAA0F;AAC1F,oDAA8D;AAC9D,wDAAkE;AAClE,6CAAyD;AACzD,kDAA4D;AAE5D,MAAM,iBAAiB,GAAG,CAAC,YAAoB,EAAE,EAAE,CAClD,YAAY;KACV,KAAK,CAAC,GAAG,CAAC;KACV,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;KAC5B,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAEhC,KAAK,UAAU,oBAAoB;;IAGzC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAE3C,MAAM,KAAK,GAAG,CAAC,MAAM,IAAI,CAAC,sBAAsB,qBAE/C,CAAC,CACD,CAAsB,CAAC;IACxB,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;IAElC,MAAM,UAAU,GAAyB,EAAE,CAAC;IAE5C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACvC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,KAAK,CAAC;QACV,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC,WAAW,IAAI,GAAG,EAAE,CAAC;YACvC,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,CAAW,CAAC;QACrD,CAAC;aAAM,CAAC;YACP,KAAK,GAAG,IAAA,8BAAoB,EAAC;gBAC5B,GAAG,EAAE,IAAI;gBACT,CAAC;gBACD,QAAQ,EAAE,MAAM;gBAChB,aAAa,EAAE,YAAY;aAC3B,CAAC,CAAC;QACJ,CAAC;QAED,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACzB,MAAM,IAAI,iCAAkB,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,kCAAkC,CAAC,CAAC;QAClF,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QACxD,MAAM,kBAAkB,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,CAAC,EAAE,QAAQ,CAG/D,CAAC;QAEZ,MAAM,kBAAkB,GAAG,OAAO,CAAC,kBAA4B,CAAC;QAChE,MAAM,mBAAmB,GAAG,iBAAiB,CAAC,MAAC,OAAO,CAAC,cAAyB,mCAAI,EAAE,CAAC,CAAC;QACxF,MAAM,kBAAkB,GAAG,iBAAiB,CAAC,MAAC,OAAO,CAAC,aAAwB,mCAAI,EAAE,CAAC,CAAC;QAEtF,IAAI,UAAU,GAAsB,IAAI,CAAC;QACzC,IAAI,kBAAkB,KAAK,QAAQ,EAAE,CAAC;YACrC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;gBAClB,MAAM,IAAI,iCAAkB,CAC3B,IAAI,CAAC,OAAO,EAAE,EACd,qGAAqG,CACrG,CAAC;YACH,CAAC;YAED,MAAM,kBAAkB,GAAG,IAAI,CAAC,gBAAgB,CAAC,oBAAoB,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;YAClF,UAAU,GAAG,MAAM,4BAAmB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;QACpF,CAAC;QAED,IAAI,kBAAkB,KAAK,UAAU,EAAE,CAAC;YACvC,UAAU,GAAG,MAAM,gCAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrD,CAAC;QAED,IAAI,kBAAkB,KAAK,OAAO,EAAE,CAAC;YACpC,UAAU,GAAG,MAAM,0BAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClD,CAAC;QAED,IAAI,CAAC,UAAU,EAAE,CAAC;YACjB,MAAM,IAAI,iCAAkB,CAC3B,IAAI,CAAC,OAAO,EAAE,EACd,oDAAoD,CACpD,CAAC;QACH,CAAC;QAED,MAAM,YAAY,GAAwB;YACzC,IAAI,EAAE,MAAC,OAAO,CAAC,IAAe,mCAAI,EAAE;YACpC,MAAM,EAAE,MAAC,OAAO,CAAC,YAAuB,mCAAI,oBAAU;YACtD,MAAM,EAAE,MAAC,OAAO,CAAC,YAAuB,mCAAI,oBAAU;YACtD,cAAc,EAAE,CAAC,aAAa,EAAE,OAAO,EAAE,kBAAkB,CAAC;SAC5D,CAAC;QAEF,MAAM,UAAU,GAAG,MAAM,oBAAW,CAAC,oBAAoB,CAAC;YACzD,aAAa,EAAE,UAAU;YACzB,cAAc,EAAE,mBAAmB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,SAAS;YAChF,YAAY,EAAE,kBAAkB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,SAAS;YAC5E,qBAAqB,EAAE,kBAAkB,aAAlB,kBAAkB,cAAlB,kBAAkB,GAAI,CAAC;SAC9C,CAAC,CAAC;QAEH,MAAM,OAAO,GAAG,IAAI,gBAAU,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;QAClD,MAAM,aAAa,GAAG,IAAA,oBAAc,EAAC,KAAK,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;QAEnE,MAAM,MAAM,GAAG,CAAC,MAAM,IAAI,CAAC,sBAAsB,cAA8B,CAAC,CAAC,CAErE,CAAC;QAEb,aAAa,CAAC,MAAM,GAAG,MAAM,CAAC;QAE9B,IAAI,WAAW,GAAG,EAAE,CAAC;QACrB,IAAI,MAAM,EAAE,CAAC;YACZ,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC;YACxD,WAAW,GAAG,IAAA,8BAAoB,EAAC,QAAQ,CAAC,CAAC;QAC9C,CAAC;QAED,IAAI,QAAQ,CAAC;QACb,IAAI,CAAC;YACJ,QAAQ,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC;gBACnC,KAAK;gBACL,MAAM,EAAE,IAAI,CAAC,wBAAwB,EAAE;gBACvC,WAAW;aACX,CAAC,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,IAAI,MAAA,KAAK,CAAC,OAAO,0CAAE,MAAM,EAAE,CAAC;gBAC3B,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC;YAC1B,CAAC;iBAAM,CAAC;gBACP,MAAM,IAAI,iCAAkB,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC;YAC/E,CAAC;QACF,CAAC;QAED,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;IACrC,CAAC;IAED,OAAO,MAAM,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;AACjD,CAAC;AArHD,oDAqHC"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import type { IExecuteFunctions, INodeExecutionData } from 'n8n-workflow';
|
|
2
2
|
import { DataSource } from '@n8n/typeorm';
|
|
3
|
-
export declare function getSqliteDataSource(this: IExecuteFunctions, binary: INodeExecutionData['binary']): DataSource
|
|
3
|
+
export declare function getSqliteDataSource(this: IExecuteFunctions, binary: INodeExecutionData['binary'], binaryPropertyName?: string): Promise<DataSource>;
|
|
@@ -29,12 +29,22 @@ const n8n_workflow_1 = require("n8n-workflow");
|
|
|
29
29
|
const temp = __importStar(require("temp"));
|
|
30
30
|
const sqlite3 = __importStar(require("sqlite3"));
|
|
31
31
|
const typeorm_1 = require("@n8n/typeorm");
|
|
32
|
-
function getSqliteDataSource(binary) {
|
|
33
|
-
const binaryData = binary === null || binary === void 0 ? void 0 : binary
|
|
32
|
+
async function getSqliteDataSource(binary, binaryPropertyName = 'data') {
|
|
33
|
+
const binaryData = binary === null || binary === void 0 ? void 0 : binary[binaryPropertyName];
|
|
34
34
|
if (!binaryData) {
|
|
35
35
|
throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'No binary data received.');
|
|
36
36
|
}
|
|
37
|
-
|
|
37
|
+
let fileBase64;
|
|
38
|
+
if (binaryData.id) {
|
|
39
|
+
const chunkSize = 256 * 1024;
|
|
40
|
+
const stream = await this.helpers.getBinaryStream(binaryData.id, chunkSize);
|
|
41
|
+
const buffer = await this.helpers.binaryToBuffer(stream);
|
|
42
|
+
fileBase64 = buffer.toString('base64');
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
fileBase64 = binaryData.data;
|
|
46
|
+
}
|
|
47
|
+
const bufferString = Buffer.from(fileBase64, n8n_workflow_1.BINARY_ENCODING);
|
|
38
48
|
temp.track();
|
|
39
49
|
const tempDbPath = temp.path({ suffix: '.sqlite' });
|
|
40
50
|
fs.writeFileSync(tempDbPath, bufferString);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sqlite.js","sourceRoot":"","sources":["../../../../../../../../nodes/agents/Agent/agents/SqlAgent/other/handlers/sqlite.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAAyB;AAEzB,+CAAmE;AACnE,2CAA6B;AAC7B,iDAAmC;AACnC,0CAA0C;
|
|
1
|
+
{"version":3,"file":"sqlite.js","sourceRoot":"","sources":["../../../../../../../../nodes/agents/Agent/agents/SqlAgent/other/handlers/sqlite.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAAyB;AAEzB,+CAAmE;AACnE,2CAA6B;AAC7B,iDAAmC;AACnC,0CAA0C;AAEnC,KAAK,UAAU,mBAAmB,CAExC,MAAoC,EACpC,kBAAkB,GAAG,MAAM;IAE3B,MAAM,UAAU,GAAG,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAG,kBAAkB,CAAC,CAAC;IAEhD,IAAI,CAAC,UAAU,EAAE,CAAC;QACjB,MAAM,IAAI,iCAAkB,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,0BAA0B,CAAC,CAAC;IAC1E,CAAC;IAED,IAAI,UAAU,CAAC;IACf,IAAI,UAAU,CAAC,EAAE,EAAE,CAAC;QACnB,MAAM,SAAS,GAAG,GAAG,GAAG,IAAI,CAAC;QAC7B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,UAAU,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;QAC5E,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QACzD,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACxC,CAAC;SAAM,CAAC;QACP,UAAU,GAAG,UAAU,CAAC,IAAI,CAAC;IAC9B,CAAC;IAED,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,8BAAe,CAAC,CAAC;IAG9D,IAAI,CAAC,KAAK,EAAE,CAAC;IAEb,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;IACpD,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;IAG3C,MAAM,MAAM,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC,KAAmB,EAAE,EAAE;QACvE,IAAI,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,iCAAkB,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,+BAA+B,CAAC,CAAC;QAC/E,CAAC;IACF,CAAC,CAAC,CAAC;IACH,MAAM,CAAC,KAAK,EAAE,CAAC;IAEf,OAAO,IAAI,oBAAU,CAAC;QACrB,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,UAAU;KACpB,CAAC,CAAC;AACJ,CAAC;AAzCD,kDAyCC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export declare const SQL_PREFIX = "You are an agent designed to interact with an SQL database.\nGiven an input question, create a syntactically correct {dialect} query to run, then look at the results of the query and return the answer.\nUnless the user specifies a specific number of examples they wish to obtain, always limit your query to at most {top_k} results using the LIMIT clause.\nYou can order the results by a relevant column to return the most interesting examples in the database.\nNever query for all the columns from a specific table, only ask for a the few relevant columns given the question.\nYou have access to tools for interacting with the database.\nOnly use the below tools. Only use the information returned by the below tools to construct your final answer.\nYou MUST double check your query before executing it. If you get an error while executing a query, rewrite the query and try again.\n\nDO NOT make any DML statements (INSERT, UPDATE, DELETE, DROP etc.) to the database.\n\nIf the question does not seem related to the database, just return \"I don't know\" as the answer.";
|
|
2
|
-
export declare const SQL_SUFFIX = "Begin!\n\nQuestion: {input}\nThought: I should look at the tables in the database to see what I can query.\n{agent_scratchpad}";
|
|
2
|
+
export declare const SQL_SUFFIX = "Begin!\nChat History:\n{chatHistory}\n\nQuestion: {input}\nThought: I should look at the tables in the database to see what I can query.\n{agent_scratchpad}";
|
|
@@ -14,6 +14,8 @@ DO NOT make any DML statements (INSERT, UPDATE, DELETE, DROP etc.) to the databa
|
|
|
14
14
|
|
|
15
15
|
If the question does not seem related to the database, just return "I don't know" as the answer.`;
|
|
16
16
|
exports.SQL_SUFFIX = `Begin!
|
|
17
|
+
Chat History:
|
|
18
|
+
{chatHistory}
|
|
17
19
|
|
|
18
20
|
Question: {input}
|
|
19
21
|
Thought: I should look at the tables in the database to see what I can query.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../../../../../../nodes/agents/Agent/agents/SqlAgent/other/prompts.ts"],"names":[],"mappings":";;;AAAa,QAAA,UAAU,GAAG;;;;;;;;;;;iGAWuE,CAAC;AAErF,QAAA,UAAU,GAAG
|
|
1
|
+
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../../../../../../nodes/agents/Agent/agents/SqlAgent/other/prompts.ts"],"names":[],"mappings":";;;AAAa,QAAA,UAAU,GAAG;;;;;;;;;;;iGAWuE,CAAC;AAErF,QAAA,UAAU,GAAG;;;;;;mBAMP,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { type IExecuteFunctions, type INodeType, type INodeTypeDescription, type SupplyData } from 'n8n-workflow';
|
|
2
|
+
export declare class EmbeddingsOllama implements INodeType {
|
|
3
|
+
description: INodeTypeDescription;
|
|
4
|
+
supplyData(this: IExecuteFunctions, itemIndex: number): Promise<SupplyData>;
|
|
5
|
+
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.EmbeddingsOllama = void 0;
|
|
4
|
+
const ollama_1 = require("langchain/embeddings/ollama");
|
|
5
|
+
const logWrapper_1 = require("../../../utils/logWrapper");
|
|
6
|
+
const sharedFields_1 = require("../../../utils/sharedFields");
|
|
7
|
+
const description_1 = require("../../llms/LMOllama/description");
|
|
8
|
+
class EmbeddingsOllama {
|
|
9
|
+
constructor() {
|
|
10
|
+
this.description = {
|
|
11
|
+
displayName: 'Embeddings Ollama',
|
|
12
|
+
name: 'embeddingsOllama',
|
|
13
|
+
icon: 'file:ollama.svg',
|
|
14
|
+
group: ['transform'],
|
|
15
|
+
version: 1,
|
|
16
|
+
description: 'Use Ollama Embeddings',
|
|
17
|
+
defaults: {
|
|
18
|
+
name: 'Embeddings Ollama',
|
|
19
|
+
},
|
|
20
|
+
...description_1.ollamaDescription,
|
|
21
|
+
codex: {
|
|
22
|
+
categories: ['AI'],
|
|
23
|
+
subcategories: {
|
|
24
|
+
AI: ['Embeddings'],
|
|
25
|
+
},
|
|
26
|
+
resources: {
|
|
27
|
+
primaryDocumentation: [
|
|
28
|
+
{
|
|
29
|
+
url: 'https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.embeddingsollama/',
|
|
30
|
+
},
|
|
31
|
+
],
|
|
32
|
+
},
|
|
33
|
+
},
|
|
34
|
+
inputs: [],
|
|
35
|
+
outputs: ["ai_embedding"],
|
|
36
|
+
outputNames: ['Embeddings'],
|
|
37
|
+
properties: [(0, sharedFields_1.getConnectionHintNoticeField)(["ai_vectorStore"]), description_1.ollamaModel],
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
async supplyData(itemIndex) {
|
|
41
|
+
this.logger.verbose('Supply data for embeddings Ollama');
|
|
42
|
+
const modelName = this.getNodeParameter('model', itemIndex);
|
|
43
|
+
const credentials = await this.getCredentials('ollamaApi');
|
|
44
|
+
const embeddings = new ollama_1.OllamaEmbeddings({
|
|
45
|
+
baseUrl: credentials.baseUrl,
|
|
46
|
+
model: modelName,
|
|
47
|
+
});
|
|
48
|
+
return {
|
|
49
|
+
response: (0, logWrapper_1.logWrapper)(embeddings, this),
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
exports.EmbeddingsOllama = EmbeddingsOllama;
|
|
54
|
+
//# sourceMappingURL=EmbeddingsOllama.node.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EmbeddingsOllama.node.js","sourceRoot":"","sources":["../../../../nodes/embeddings/EmbeddingsOllama/EmbeddingsOllama.node.ts"],"names":[],"mappings":";;;AAQA,wDAA+D;AAC/D,0DAAuD;AACvD,8DAA2E;AAC3E,iEAAiF;AAEjF,MAAa,gBAAgB;IAA7B;QACC,gBAAW,GAAyB;YACnC,WAAW,EAAE,mBAAmB;YAChC,IAAI,EAAE,kBAAkB;YACxB,IAAI,EAAE,iBAAiB;YACvB,KAAK,EAAE,CAAC,WAAW,CAAC;YACpB,OAAO,EAAE,CAAC;YACV,WAAW,EAAE,uBAAuB;YACpC,QAAQ,EAAE;gBACT,IAAI,EAAE,mBAAmB;aACzB;YACD,GAAG,+BAAiB;YACpB,KAAK,EAAE;gBACN,UAAU,EAAE,CAAC,IAAI,CAAC;gBAClB,aAAa,EAAE;oBACd,EAAE,EAAE,CAAC,YAAY,CAAC;iBAClB;gBACD,SAAS,EAAE;oBACV,oBAAoB,EAAE;wBACrB;4BACC,GAAG,EAAE,wGAAwG;yBAC7G;qBACD;iBACD;aACD;YAED,MAAM,EAAE,EAAE;YAEV,OAAO,EAAE,gBAAgC;YACzC,WAAW,EAAE,CAAC,YAAY,CAAC;YAC3B,UAAU,EAAE,CAAC,IAAA,2CAA4B,EAAC,kBAAkC,CAAC,EAAE,yBAAW,CAAC;SAC3F,CAAC;IAgBH,CAAC;IAdA,KAAK,CAAC,UAAU,CAA0B,SAAiB;QAC1D,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,mCAAmC,CAAC,CAAC;QACzD,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,SAAS,CAAW,CAAC;QACtE,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;QAE3D,MAAM,UAAU,GAAG,IAAI,yBAAgB,CAAC;YACvC,OAAO,EAAE,WAAW,CAAC,OAAiB;YACtC,KAAK,EAAE,SAAS;SAChB,CAAC,CAAC;QAEH,OAAO;YACN,QAAQ,EAAE,IAAA,uBAAU,EAAC,UAAU,EAAE,IAAI,CAAC;SACtC,CAAC;IACH,CAAC;CACD;AA/CD,4CA+CC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="241.333" height="341.333" version="1.0" viewBox="0 0 181 256"><g fill="#7D7D87"><path d="M37.7 19.5c-5.2 1.8-8.3 4.9-11.7 11.6-4.5 8.9-6.2 19.2-5.8 35.5l.3 14.2-5.8 6.1c-14.8 15.5-18.5 38.7-9.2 57.4l3.4 6.9-2 4.4c-3.4 8.2-5 16.4-5 26.3 0 10.8 1.8 19 5.8 26.2l2.6 4.8-2.1 4.9c-1.2 2.7-2.6 7.1-3.2 9.8-1.4 6.2-1.5 22.1-.1 25.7 1 2.6 1.4 2.7 7.6 2.7 7.3 0 7 .4 5.3-8.6-1.5-8.2.2-18.8 4.2-26.6 3.7-7 3.8-10.4.5-14.8-4.7-6.4-6.8-13.6-6.9-24-.1-10.3 1.4-16 6.6-26.1 3.1-6.1 2.9-8.7-1-12.2-1.1-1-3.1-4.2-4.3-7-1.9-4.2-2.4-6.9-2.3-14.2 0-11.4 2.5-18.3 9.5-26 7-7.6 14.2-11 23.9-11.2 4.1 0 7.8-.2 8.2-.2.4-.1 1.7-2.2 2.9-4.7 3-5.9 9.6-11.9 16.7-15.2 4.9-2.3 7-2.7 14.7-2.7 7.9 0 9.7.4 14.9 2.9 6.8 3.3 13.3 9.4 15.9 14.8 1 2 2.3 4.1 3 4.5.6.4 4.6.8 8.7.8 6.7.1 8.3.5 14 3.6 12.3 6.8 19.3 18.7 19.3 33.4.1 6.7-.4 9-2.7 14.2-1.6 3.5-3.5 6.8-4.3 7.5-3.4 2.8-3.5 5.8-.5 11.7 5.2 10.1 6.7 15.8 6.6 26.1-.1 10.4-2.2 17.6-6.9 24-3.3 4.4-3.2 7.8.5 14.8 4 7.8 5.7 18.4 4.2 26.6-1.7 9-2 8.6 5.3 8.6 6.2 0 6.6-.1 7.6-2.7 1.4-3.6 1.3-19.5-.1-25.7-.6-2.7-2-7.1-3.2-9.8l-2.1-4.9 2.6-4.8c7.6-13.9 7.9-35.9.6-52.8l-2-4.7 2.5-4.6c9.9-18.3 6.4-43.9-8.1-59.1l-5.8-6.1.3-14.2c.4-16.4-1.3-26.6-5.8-35.7-6.4-12.6-17.2-15.9-26.3-7.9-5.4 4.7-9.2 13.8-12.3 29.8-.3 1.4-1 2.2-1.7 1.8-18.2-8-29.7-8.5-44.3-2.1L65 54.9l-.4-2.2C61 34.2 56.1 24.2 49 20.5c-4.3-2.1-7.4-2.4-11.3-1m7.7 16.8c4.2 7.1 8.1 30.1 5.7 33.6-.5.8-3.1 1.6-5.8 1.8-2.6.2-6.2.8-8 1.3l-3.1.8-.7-4.9c-.8-5.9.2-17.2 2.2-24.8C37.1 38.4 40.5 32 42 32c.5 0 2 1.9 3.4 4.3m96.5-1c4 6.5 6.9 23.9 5.6 33.6l-.7 4.9-3.1-.8c-1.8-.5-5.4-1.1-8-1.3-2.7-.2-5.3-1-5.8-1.8-1.2-1.7-.3-14.1 1.7-22.9 1.5-6.4 5.7-15 7.4-15 .4 0 1.8 1.5 2.9 3.3"/><path d="M77.8 119.9c-7.3 2.4-11.6 5.1-16.5 10.4-5.5 6-7.6 12-7.1 20.1.5 7.6 3.5 12.9 10.6 18.3 6.2 4.7 12.7 6.3 25.7 6.3 17.2 0 25.8-3.6 32.9-13.8 4.2-5.9 4.8-15.5 1.6-23-2.9-6.8-11.1-14.3-18.8-17.3-8-3.1-20.7-3.6-28.4-1m25.7 10c16.1 7.1 19.4 23.2 6.6 31.8-4.9 3.3-9.4 4.3-19.6 4.3s-14.7-1-19.6-4.3c-17.8-12-3.2-35.6 21.1-34.3 3.9.2 8.6 1.2 11.5 2.5"/><path d="M83.8 140.1c-2.5 1.4-2.2 4.4.7 6.7 2 1.6 2.4 2.6 1.9 4.9-.7 3.6 1.5 5.8 5.1 4.9 2.1-.5 2.5-1.2 2.5-4.6 0-2.9.5-4.2 2-5 2.7-1.5 2.7-6.6 0-7.5-1-.3-2.8-.1-4 .5-1.4.7-2.6.8-3.9 0-2.3-1.2-2.2-1.2-4.3.1m-44.1-18.9c-.9.7-2.3 3-3.2 5-2.1 5.3-.1 10.3 4.7 11.6 4.3 1.1 6 .6 9.2-2.7 4-4.1 4.3-8.1 1.1-11.9-2.1-2.5-3.4-3.2-6.4-3.2-2 0-4.5.6-5.4 1.2m89.8 2c-3.2 3.8-2.9 7.8 1.1 11.9 3.2 3.3 4.9 3.8 9.2 2.7 4.9-1.3 6.8-6.2 4.6-11.8-1.9-4.7-3.8-6-8.7-6-2.7 0-4.1.7-6.2 3.2"/></g></svg>
|