@n8n/ai-utilities 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.md +88 -0
- package/README.md +468 -0
- package/dist/adapters/langchain-chat-model.d.ts +20 -0
- package/dist/adapters/langchain-chat-model.js +180 -0
- package/dist/adapters/langchain-chat-model.js.map +1 -0
- package/dist/adapters/langchain-history.d.ts +12 -0
- package/dist/adapters/langchain-history.js +27 -0
- package/dist/adapters/langchain-history.js.map +1 -0
- package/dist/adapters/langchain-memory.d.ts +11 -0
- package/dist/adapters/langchain-memory.js +36 -0
- package/dist/adapters/langchain-memory.js.map +1 -0
- package/dist/build.tsbuildinfo +1 -0
- package/dist/chat-model/base.d.ts +15 -0
- package/dist/chat-model/base.js +25 -0
- package/dist/chat-model/base.js.map +1 -0
- package/dist/converters/message.d.ts +5 -0
- package/dist/converters/message.js +365 -0
- package/dist/converters/message.js.map +1 -0
- package/dist/converters/tool.d.ts +5 -0
- package/dist/converters/tool.js +59 -0
- package/dist/converters/tool.js.map +1 -0
- package/dist/guards.d.ts +8 -0
- package/dist/guards.js +27 -0
- package/dist/guards.js.map +1 -0
- package/dist/index.d.ts +28 -0
- package/dist/index.js +56 -0
- package/dist/index.js.map +1 -0
- package/dist/memory/base-chat-history.d.ts +8 -0
- package/dist/memory/base-chat-history.js +12 -0
- package/dist/memory/base-chat-history.js.map +1 -0
- package/dist/memory/base-chat-memory.d.ts +8 -0
- package/dist/memory/base-chat-memory.js +7 -0
- package/dist/memory/base-chat-memory.js.map +1 -0
- package/dist/memory/windowed-chat-memory.d.ts +14 -0
- package/dist/memory/windowed-chat-memory.js +38 -0
- package/dist/memory/windowed-chat-memory.js.map +1 -0
- package/dist/suppliers/supplyMemory.d.ts +6 -0
- package/dist/suppliers/supplyMemory.js +14 -0
- package/dist/suppliers/supplyMemory.js.map +1 -0
- package/dist/suppliers/supplyModel.d.ts +15 -0
- package/dist/suppliers/supplyModel.js +78 -0
- package/dist/suppliers/supplyModel.js.map +1 -0
- package/dist/types/chat-model.d.ts +26 -0
- package/dist/types/chat-model.js +3 -0
- package/dist/types/chat-model.js.map +1 -0
- package/dist/types/json.d.ts +5 -0
- package/dist/types/json.js +3 -0
- package/dist/types/json.js.map +1 -0
- package/dist/types/memory.d.ts +13 -0
- package/dist/types/memory.js +3 -0
- package/dist/types/memory.js.map +1 -0
- package/dist/types/message.d.ts +49 -0
- package/dist/types/message.js +3 -0
- package/dist/types/message.js.map +1 -0
- package/dist/types/openai.d.ts +39 -0
- package/dist/types/openai.js +3 -0
- package/dist/types/openai.js.map +1 -0
- package/dist/types/output.d.ts +37 -0
- package/dist/types/output.js +3 -0
- package/dist/types/output.js.map +1 -0
- package/dist/types/tool.d.ts +28 -0
- package/dist/types/tool.js +3 -0
- package/dist/types/tool.js.map +1 -0
- package/dist/utils/embeddings-input-validation.d.ts +3 -0
- package/dist/utils/embeddings-input-validation.js +28 -0
- package/dist/utils/embeddings-input-validation.js.map +1 -0
- package/dist/utils/failed-attempt-handler/n8nDefaultFailedAttemptHandler.d.ts +1 -0
- package/dist/utils/failed-attempt-handler/n8nDefaultFailedAttemptHandler.js +30 -0
- package/dist/utils/failed-attempt-handler/n8nDefaultFailedAttemptHandler.js.map +1 -0
- package/dist/utils/failed-attempt-handler/n8nLlmFailedAttemptHandler.d.ts +3 -0
- package/dist/utils/failed-attempt-handler/n8nLlmFailedAttemptHandler.js +28 -0
- package/dist/utils/failed-attempt-handler/n8nLlmFailedAttemptHandler.js.map +1 -0
- package/dist/utils/helpers.d.ts +3 -0
- package/dist/utils/helpers.js +53 -0
- package/dist/utils/helpers.js.map +1 -0
- package/dist/utils/http-proxy-agent.d.ts +10 -0
- package/dist/utils/http-proxy-agent.js +48 -0
- package/dist/utils/http-proxy-agent.js.map +1 -0
- package/dist/utils/log-ai-event.d.ts +2 -0
- package/dist/utils/log-ai-event.js +13 -0
- package/dist/utils/log-ai-event.js.map +1 -0
- package/dist/utils/log-wrapper.d.ts +28 -0
- package/dist/utils/log-wrapper.js +329 -0
- package/dist/utils/log-wrapper.js.map +1 -0
- package/dist/utils/n8n-binary-loader.d.ts +18 -0
- package/dist/utils/n8n-binary-loader.js +159 -0
- package/dist/utils/n8n-binary-loader.js.map +1 -0
- package/dist/utils/n8n-json-loader.d.ts +11 -0
- package/dist/utils/n8n-json-loader.js +66 -0
- package/dist/utils/n8n-json-loader.js.map +1 -0
- package/dist/utils/n8n-llm-tracing.d.ts +46 -0
- package/dist/utils/n8n-llm-tracing.js +157 -0
- package/dist/utils/n8n-llm-tracing.js.map +1 -0
- package/dist/utils/sse.d.ts +8 -0
- package/dist/utils/sse.js +107 -0
- package/dist/utils/sse.js.map +1 -0
- package/dist/utils/tokenizer/cl100k_base.json +1 -0
- package/dist/utils/tokenizer/o200k_base.json +1 -0
- package/dist/utils/tokenizer/tiktoken.d.ts +4 -0
- package/dist/utils/tokenizer/tiktoken.js +40 -0
- package/dist/utils/tokenizer/tiktoken.js.map +1 -0
- package/dist/utils/tokenizer/token-estimator.d.ts +4 -0
- package/dist/utils/tokenizer/token-estimator.js +98 -0
- package/dist/utils/tokenizer/token-estimator.js.map +1 -0
- package/package.json +51 -0
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getMetadataFiltersValues = getMetadataFiltersValues;
|
|
4
|
+
exports.hasLongSequentialRepeat = hasLongSequentialRepeat;
|
|
5
|
+
function getMetadataFiltersValues(ctx, itemIndex) {
|
|
6
|
+
const options = ctx.getNodeParameter('options', itemIndex, {});
|
|
7
|
+
if (options.metadata) {
|
|
8
|
+
const { metadataValues: metadata } = options.metadata;
|
|
9
|
+
if (metadata.length > 0) {
|
|
10
|
+
return metadata.reduce((acc, { name, value }) => ({ ...acc, [name]: value }), {});
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
if (options.searchFilterJson) {
|
|
14
|
+
return ctx.getNodeParameter('options.searchFilterJson', itemIndex, '', {
|
|
15
|
+
ensureType: 'object',
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
return undefined;
|
|
19
|
+
}
|
|
20
|
+
function hasLongSequentialRepeat(text, threshold = 1000) {
|
|
21
|
+
try {
|
|
22
|
+
if (text === null ||
|
|
23
|
+
typeof text !== 'string' ||
|
|
24
|
+
text.length === 0 ||
|
|
25
|
+
threshold <= 0 ||
|
|
26
|
+
text.length < threshold) {
|
|
27
|
+
return false;
|
|
28
|
+
}
|
|
29
|
+
const iterator = text[Symbol.iterator]();
|
|
30
|
+
let prev = iterator.next();
|
|
31
|
+
if (prev.done) {
|
|
32
|
+
return false;
|
|
33
|
+
}
|
|
34
|
+
let count = 1;
|
|
35
|
+
for (const char of iterator) {
|
|
36
|
+
if (char === prev.value) {
|
|
37
|
+
count++;
|
|
38
|
+
if (count >= threshold) {
|
|
39
|
+
return true;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
count = 1;
|
|
44
|
+
prev = { value: char, done: false };
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
return false;
|
|
48
|
+
}
|
|
49
|
+
catch (error) {
|
|
50
|
+
return false;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/utils/helpers.ts"],"names":[],"mappings":";;AAEA,4DAyBC;AASD,0DAsCC;AAxED,SAAgB,wBAAwB,CACvC,GAA6C,EAC7C,SAAiB;IAEjB,MAAM,OAAO,GAAG,GAAG,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC;IAE/D,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QACtB,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,QAK5C,CAAC;QACF,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzB,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QACnF,CAAC;IACF,CAAC;IAED,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;QAC9B,OAAO,GAAG,CAAC,gBAAgB,CAAC,0BAA0B,EAAE,SAAS,EAAE,EAAE,EAAE;YACtE,UAAU,EAAE,QAAQ;SACpB,CAA0B,CAAC;IAC7B,CAAC;IAED,OAAO,SAAS,CAAC;AAClB,CAAC;AASD,SAAgB,uBAAuB,CAAC,IAAY,EAAE,SAAS,GAAG,IAAI;IACrE,IAAI,CAAC;QAEJ,IACC,IAAI,KAAK,IAAI;YACb,OAAO,IAAI,KAAK,QAAQ;YACxB,IAAI,CAAC,MAAM,KAAK,CAAC;YACjB,SAAS,IAAI,CAAC;YACd,IAAI,CAAC,MAAM,GAAG,SAAS,EACtB,CAAC;YACF,OAAO,KAAK,CAAC;QACd,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzC,IAAI,IAAI,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;QAE3B,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACf,OAAO,KAAK,CAAC;QACd,CAAC;QAED,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;YAC7B,IAAI,IAAI,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC;gBACzB,KAAK,EAAE,CAAC;gBACR,IAAI,KAAK,IAAI,SAAS,EAAE,CAAC;oBACxB,OAAO,IAAI,CAAC;gBACb,CAAC;YACF,CAAC;iBAAM,CAAC;gBACP,KAAK,GAAG,CAAC,CAAC;gBACV,IAAI,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;YACrC,CAAC;QACF,CAAC;QAED,OAAO,KAAK,CAAC;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAEhB,OAAO,KAAK,CAAC;IACd,CAAC;AACF,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { HttpsProxyAgent } from 'https-proxy-agent';
|
|
2
|
+
import { Agent, ProxyAgent } from 'undici';
|
|
3
|
+
export interface AgentTimeoutOptions {
|
|
4
|
+
headersTimeout?: number;
|
|
5
|
+
bodyTimeout?: number;
|
|
6
|
+
connectTimeout?: number;
|
|
7
|
+
}
|
|
8
|
+
export declare function getProxyAgent(targetUrl?: string, timeoutOptions?: AgentTimeoutOptions): Agent | ProxyAgent | undefined;
|
|
9
|
+
export declare function proxyFetch(input: RequestInfo | URL, init?: RequestInit, timeoutOptions?: AgentTimeoutOptions): Promise<Response>;
|
|
10
|
+
export declare function getNodeProxyAgent(targetUrl?: string): HttpsProxyAgent<string> | undefined;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.getProxyAgent = getProxyAgent;
|
|
7
|
+
exports.proxyFetch = proxyFetch;
|
|
8
|
+
exports.getNodeProxyAgent = getNodeProxyAgent;
|
|
9
|
+
const https_proxy_agent_1 = require("https-proxy-agent");
|
|
10
|
+
const proxy_from_env_1 = __importDefault(require("proxy-from-env"));
|
|
11
|
+
const undici_1 = require("undici");
|
|
12
|
+
const DEFAULT_TIMEOUT = parseInt(process.env.N8N_AI_TIMEOUT_MAX ?? '3600000', 10);
|
|
13
|
+
function getProxyUrlFromEnv(targetUrl) {
|
|
14
|
+
return proxy_from_env_1.default.getProxyForUrl(targetUrl ?? 'https://example.nonexistent/');
|
|
15
|
+
}
|
|
16
|
+
function getProxyAgent(targetUrl, timeoutOptions) {
|
|
17
|
+
const proxyUrl = getProxyUrlFromEnv(targetUrl);
|
|
18
|
+
const agentOptions = {
|
|
19
|
+
headersTimeout: timeoutOptions?.headersTimeout ?? DEFAULT_TIMEOUT,
|
|
20
|
+
bodyTimeout: timeoutOptions?.bodyTimeout ?? DEFAULT_TIMEOUT,
|
|
21
|
+
...(timeoutOptions?.connectTimeout !== undefined && {
|
|
22
|
+
connectTimeout: timeoutOptions.connectTimeout,
|
|
23
|
+
}),
|
|
24
|
+
};
|
|
25
|
+
if (!proxyUrl) {
|
|
26
|
+
if (timeoutOptions) {
|
|
27
|
+
return new undici_1.Agent(agentOptions);
|
|
28
|
+
}
|
|
29
|
+
return undefined;
|
|
30
|
+
}
|
|
31
|
+
return new undici_1.ProxyAgent({ uri: proxyUrl, ...agentOptions });
|
|
32
|
+
}
|
|
33
|
+
async function proxyFetch(input, init, timeoutOptions) {
|
|
34
|
+
const targetUrl = input instanceof Request ? input.url : input.toString();
|
|
35
|
+
const dispatcher = getProxyAgent(targetUrl, timeoutOptions);
|
|
36
|
+
return await fetch(input, {
|
|
37
|
+
...init,
|
|
38
|
+
dispatcher,
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
function getNodeProxyAgent(targetUrl) {
|
|
42
|
+
const proxyUrl = getProxyUrlFromEnv(targetUrl);
|
|
43
|
+
if (!proxyUrl) {
|
|
44
|
+
return undefined;
|
|
45
|
+
}
|
|
46
|
+
return new https_proxy_agent_1.HttpsProxyAgent(proxyUrl);
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=http-proxy-agent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http-proxy-agent.js","sourceRoot":"","sources":["../../src/utils/http-proxy-agent.ts"],"names":[],"mappings":";;;;;AAiDA,sCAmBC;AAUD,gCAaC;AASD,8CAQC;AA5GD,yDAAoD;AACpD,oEAA0C;AAC1C,mCAA2C;AAe3C,MAAM,eAAe,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,SAAS,EAAE,EAAE,CAAC,CAAC;AAalF,SAAS,kBAAkB,CAAC,SAAkB;IAC7C,OAAO,wBAAY,CAAC,cAAc,CAAC,SAAS,IAAI,8BAA8B,CAAC,CAAC;AACjF,CAAC;AAiBD,SAAgB,aAAa,CAAC,SAAkB,EAAE,cAAoC;IACrF,MAAM,QAAQ,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAC;IAE/C,MAAM,YAAY,GAAG;QACpB,cAAc,EAAE,cAAc,EAAE,cAAc,IAAI,eAAe;QACjE,WAAW,EAAE,cAAc,EAAE,WAAW,IAAI,eAAe;QAC3D,GAAG,CAAC,cAAc,EAAE,cAAc,KAAK,SAAS,IAAI;YACnD,cAAc,EAAE,cAAc,CAAC,cAAc;SAC7C,CAAC;KACF,CAAC;IAEF,IAAI,CAAC,QAAQ,EAAE,CAAC;QACf,IAAI,cAAc,EAAE,CAAC;YACpB,OAAO,IAAI,cAAK,CAAC,YAAY,CAAC,CAAC;QAChC,CAAC;QACD,OAAO,SAAS,CAAC;IAClB,CAAC;IAED,OAAO,IAAI,mBAAU,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,YAAY,EAAE,CAAC,CAAC;AAC3D,CAAC;AAUM,KAAK,UAAU,UAAU,CAC/B,KAAwB,EACxB,IAAkB,EAClB,cAAoC;IAEpC,MAAM,SAAS,GAAG,KAAK,YAAY,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;IAC1E,MAAM,UAAU,GAAG,aAAa,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;IAE5D,OAAO,MAAM,KAAK,CAAC,KAAK,EAAE;QACzB,GAAG,IAAI;QAEP,UAAU;KACV,CAAC,CAAC;AACJ,CAAC;AASD,SAAgB,iBAAiB,CAAC,SAAkB;IACnD,MAAM,QAAQ,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAC;IAE/C,IAAI,CAAC,QAAQ,EAAE,CAAC;QACf,OAAO,SAAS,CAAC;IAClB,CAAC;IAED,OAAO,IAAI,mCAAe,CAAC,QAAQ,CAAC,CAAC;AACtC,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.logAiEvent = logAiEvent;
|
|
4
|
+
const n8n_workflow_1 = require("n8n-workflow");
|
|
5
|
+
function logAiEvent(executeFunctions, event, data) {
|
|
6
|
+
try {
|
|
7
|
+
executeFunctions.logAiEvent(event, data ? (0, n8n_workflow_1.jsonStringify)(data) : undefined);
|
|
8
|
+
}
|
|
9
|
+
catch (error) {
|
|
10
|
+
executeFunctions.logger.debug(`Error logging AI event: ${event}`);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=log-ai-event.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"log-ai-event.js","sourceRoot":"","sources":["../../src/utils/log-ai-event.ts"],"names":[],"mappings":";;AAGA,gCAUC;AAZD,+CAA6C;AAE7C,SAAgB,UAAU,CACzB,gBAA0D,EAC1D,KAAc,EACd,IAAkB;IAElB,IAAI,CAAC;QACJ,gBAAgB,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,IAAA,4BAAa,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAC5E,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC,2BAA2B,KAAK,EAAE,CAAC,CAAC;IACnE,CAAC;AACF,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { BaseDocumentLoader } from '@langchain/classic/dist/document_loaders/base';
|
|
2
|
+
import type { BaseChatMemory } from '@langchain/community/memory/chat_memory';
|
|
3
|
+
import type { BaseChatMessageHistory } from '@langchain/core/chat_history';
|
|
4
|
+
import type { Document } from '@langchain/core/documents';
|
|
5
|
+
import { Embeddings } from '@langchain/core/embeddings';
|
|
6
|
+
import { BaseRetriever } from '@langchain/core/retrievers';
|
|
7
|
+
import { BaseDocumentCompressor } from '@langchain/core/retrievers/document_compressors';
|
|
8
|
+
import type { StructuredTool, Tool } from '@langchain/core/tools';
|
|
9
|
+
import { VectorStore } from '@langchain/core/vectorstores';
|
|
10
|
+
import { TextSplitter } from '@langchain/textsplitters';
|
|
11
|
+
import type { IExecuteFunctions, ISupplyDataFunctions, NodeConnectionType } from 'n8n-workflow';
|
|
12
|
+
import { N8nBinaryLoader } from './n8n-binary-loader';
|
|
13
|
+
import { N8nJsonLoader } from './n8n-json-loader';
|
|
14
|
+
export declare function callMethodAsync<T>(this: T, parameters: {
|
|
15
|
+
executeFunctions: IExecuteFunctions | ISupplyDataFunctions;
|
|
16
|
+
connectionType: NodeConnectionType;
|
|
17
|
+
currentNodeRunIndex: number;
|
|
18
|
+
method: (...args: any[]) => Promise<unknown>;
|
|
19
|
+
arguments: unknown[];
|
|
20
|
+
}): Promise<unknown>;
|
|
21
|
+
export declare function callMethodSync<T>(this: T, parameters: {
|
|
22
|
+
executeFunctions: IExecuteFunctions;
|
|
23
|
+
connectionType: NodeConnectionType;
|
|
24
|
+
currentNodeRunIndex: number;
|
|
25
|
+
method: (...args: any[]) => T;
|
|
26
|
+
arguments: unknown[];
|
|
27
|
+
}): unknown;
|
|
28
|
+
export declare function logWrapper<T extends Tool | StructuredTool | BaseChatMemory | BaseChatMessageHistory | BaseRetriever | BaseDocumentCompressor | Embeddings | Document[] | Document | BaseDocumentLoader | TextSplitter | VectorStore | N8nBinaryLoader | N8nJsonLoader>(originalInstance: T, executeFunctions: IExecuteFunctions | ISupplyDataFunctions): T;
|
|
@@ -0,0 +1,329 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.callMethodAsync = callMethodAsync;
|
|
4
|
+
exports.callMethodSync = callMethodSync;
|
|
5
|
+
exports.logWrapper = logWrapper;
|
|
6
|
+
const embeddings_1 = require("@langchain/core/embeddings");
|
|
7
|
+
const retrievers_1 = require("@langchain/core/retrievers");
|
|
8
|
+
const document_compressors_1 = require("@langchain/core/retrievers/document_compressors");
|
|
9
|
+
const vectorstores_1 = require("@langchain/core/vectorstores");
|
|
10
|
+
const textsplitters_1 = require("@langchain/textsplitters");
|
|
11
|
+
const n8n_workflow_1 = require("n8n-workflow");
|
|
12
|
+
const guards_1 = require("../guards");
|
|
13
|
+
const embeddings_input_validation_1 = require("./embeddings-input-validation");
|
|
14
|
+
const log_ai_event_1 = require("./log-ai-event");
|
|
15
|
+
const n8n_binary_loader_1 = require("./n8n-binary-loader");
|
|
16
|
+
const n8n_json_loader_1 = require("./n8n-json-loader");
|
|
17
|
+
async function callMethodAsync(parameters) {
|
|
18
|
+
try {
|
|
19
|
+
return await parameters.method.call(this, ...parameters.arguments);
|
|
20
|
+
}
|
|
21
|
+
catch (e) {
|
|
22
|
+
const connectedNode = parameters.executeFunctions.getNode();
|
|
23
|
+
const error = new n8n_workflow_1.NodeOperationError(connectedNode, e, {
|
|
24
|
+
functionality: 'configuration-node',
|
|
25
|
+
});
|
|
26
|
+
const metadata = (0, n8n_workflow_1.parseErrorMetadata)(error);
|
|
27
|
+
parameters.executeFunctions.addOutputData(parameters.connectionType, parameters.currentNodeRunIndex, error, metadata);
|
|
28
|
+
if (error.message) {
|
|
29
|
+
if (!error.description) {
|
|
30
|
+
error.description = error.message;
|
|
31
|
+
}
|
|
32
|
+
throw error;
|
|
33
|
+
}
|
|
34
|
+
throw new n8n_workflow_1.NodeOperationError(connectedNode, `Error on node "${connectedNode.name}" which is connected via input "${parameters.connectionType}"`, { functionality: 'configuration-node' });
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
function callMethodSync(parameters) {
|
|
38
|
+
try {
|
|
39
|
+
return parameters.method.call(this, ...parameters.arguments);
|
|
40
|
+
}
|
|
41
|
+
catch (e) {
|
|
42
|
+
const connectedNode = parameters.executeFunctions.getNode();
|
|
43
|
+
const error = new n8n_workflow_1.NodeOperationError(connectedNode, e);
|
|
44
|
+
parameters.executeFunctions.addOutputData(parameters.connectionType, parameters.currentNodeRunIndex, error);
|
|
45
|
+
throw new n8n_workflow_1.NodeOperationError(connectedNode, `Error on node "${connectedNode.name}" which is connected via input "${parameters.connectionType}"`, { functionality: 'configuration-node' });
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
function logWrapper(originalInstance, executeFunctions) {
|
|
49
|
+
return new Proxy(originalInstance, {
|
|
50
|
+
get: (target, prop) => {
|
|
51
|
+
let connectionType;
|
|
52
|
+
if ((0, guards_1.isBaseChatMemory)(originalInstance)) {
|
|
53
|
+
if (prop === 'loadMemoryVariables' && 'loadMemoryVariables' in target) {
|
|
54
|
+
return async (values) => {
|
|
55
|
+
connectionType = n8n_workflow_1.NodeConnectionTypes.AiMemory;
|
|
56
|
+
const { index } = executeFunctions.addInputData(connectionType, [
|
|
57
|
+
[{ json: { action: 'loadMemoryVariables', values } }],
|
|
58
|
+
]);
|
|
59
|
+
const response = (await callMethodAsync.call(target, {
|
|
60
|
+
executeFunctions,
|
|
61
|
+
connectionType,
|
|
62
|
+
currentNodeRunIndex: index,
|
|
63
|
+
method: target[prop],
|
|
64
|
+
arguments: [values],
|
|
65
|
+
}));
|
|
66
|
+
const chatHistory = response?.chat_history ?? response;
|
|
67
|
+
executeFunctions.addOutputData(connectionType, index, [
|
|
68
|
+
[{ json: { action: 'loadMemoryVariables', chatHistory } }],
|
|
69
|
+
]);
|
|
70
|
+
return response;
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
else if (prop === 'saveContext' && 'saveContext' in target) {
|
|
74
|
+
return async (input, output) => {
|
|
75
|
+
connectionType = n8n_workflow_1.NodeConnectionTypes.AiMemory;
|
|
76
|
+
const { index } = executeFunctions.addInputData(connectionType, [
|
|
77
|
+
[{ json: { action: 'saveContext', input, output } }],
|
|
78
|
+
]);
|
|
79
|
+
const response = (await callMethodAsync.call(target, {
|
|
80
|
+
executeFunctions,
|
|
81
|
+
connectionType,
|
|
82
|
+
currentNodeRunIndex: index,
|
|
83
|
+
method: target[prop],
|
|
84
|
+
arguments: [input, output],
|
|
85
|
+
}));
|
|
86
|
+
const chatHistory = await target.chatHistory.getMessages();
|
|
87
|
+
executeFunctions.addOutputData(connectionType, index, [
|
|
88
|
+
[{ json: { action: 'saveContext', chatHistory } }],
|
|
89
|
+
]);
|
|
90
|
+
return response;
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
if ((0, guards_1.isBaseChatMessageHistory)(originalInstance)) {
|
|
95
|
+
if (prop === 'getMessages' && 'getMessages' in target) {
|
|
96
|
+
return async () => {
|
|
97
|
+
connectionType = n8n_workflow_1.NodeConnectionTypes.AiMemory;
|
|
98
|
+
const { index } = executeFunctions.addInputData(connectionType, [
|
|
99
|
+
[{ json: { action: 'getMessages' } }],
|
|
100
|
+
]);
|
|
101
|
+
const response = (await callMethodAsync.call(target, {
|
|
102
|
+
executeFunctions,
|
|
103
|
+
connectionType,
|
|
104
|
+
currentNodeRunIndex: index,
|
|
105
|
+
method: target[prop],
|
|
106
|
+
arguments: [],
|
|
107
|
+
}));
|
|
108
|
+
const payload = { action: 'getMessages', response };
|
|
109
|
+
executeFunctions.addOutputData(connectionType, index, [[{ json: payload }]]);
|
|
110
|
+
(0, log_ai_event_1.logAiEvent)(executeFunctions, 'ai-messages-retrieved-from-memory', { response });
|
|
111
|
+
return response;
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
else if (prop === 'addMessage' && 'addMessage' in target) {
|
|
115
|
+
return async (message) => {
|
|
116
|
+
connectionType = n8n_workflow_1.NodeConnectionTypes.AiMemory;
|
|
117
|
+
const payload = { action: 'addMessage', message };
|
|
118
|
+
const { index } = executeFunctions.addInputData(connectionType, [[{ json: payload }]]);
|
|
119
|
+
await callMethodAsync.call(target, {
|
|
120
|
+
executeFunctions,
|
|
121
|
+
connectionType,
|
|
122
|
+
currentNodeRunIndex: index,
|
|
123
|
+
method: target[prop],
|
|
124
|
+
arguments: [message],
|
|
125
|
+
});
|
|
126
|
+
(0, log_ai_event_1.logAiEvent)(executeFunctions, 'ai-message-added-to-memory', { message });
|
|
127
|
+
executeFunctions.addOutputData(connectionType, index, [[{ json: payload }]]);
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
if (originalInstance instanceof retrievers_1.BaseRetriever) {
|
|
132
|
+
if (prop === 'getRelevantDocuments' && 'getRelevantDocuments' in target) {
|
|
133
|
+
return async (query, config) => {
|
|
134
|
+
connectionType = n8n_workflow_1.NodeConnectionTypes.AiRetriever;
|
|
135
|
+
const { index } = executeFunctions.addInputData(connectionType, [
|
|
136
|
+
[{ json: { query, config } }],
|
|
137
|
+
]);
|
|
138
|
+
const response = (await callMethodAsync.call(target, {
|
|
139
|
+
executeFunctions,
|
|
140
|
+
connectionType,
|
|
141
|
+
currentNodeRunIndex: index,
|
|
142
|
+
method: target[prop],
|
|
143
|
+
arguments: [query, config],
|
|
144
|
+
}));
|
|
145
|
+
const executionId = response[0]?.metadata?.executionId;
|
|
146
|
+
const workflowId = response[0]?.metadata?.workflowId;
|
|
147
|
+
const metadata = {};
|
|
148
|
+
if (executionId && workflowId) {
|
|
149
|
+
metadata.subExecution = {
|
|
150
|
+
executionId,
|
|
151
|
+
workflowId,
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
(0, log_ai_event_1.logAiEvent)(executeFunctions, 'ai-documents-retrieved', { query });
|
|
155
|
+
executeFunctions.addOutputData(connectionType, index, [[{ json: { response } }]], metadata);
|
|
156
|
+
return response;
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
if (originalInstance instanceof embeddings_1.Embeddings) {
|
|
161
|
+
if (prop === 'embedDocuments' && 'embedDocuments' in target) {
|
|
162
|
+
return async (documents) => {
|
|
163
|
+
const validatedDocuments = (0, embeddings_input_validation_1.validateEmbedDocumentsInput)(documents, executeFunctions.getNode());
|
|
164
|
+
connectionType = n8n_workflow_1.NodeConnectionTypes.AiEmbedding;
|
|
165
|
+
const { index } = executeFunctions.addInputData(connectionType, [
|
|
166
|
+
[{ json: { documents: validatedDocuments } }],
|
|
167
|
+
]);
|
|
168
|
+
const response = (await callMethodAsync.call(target, {
|
|
169
|
+
executeFunctions,
|
|
170
|
+
connectionType,
|
|
171
|
+
currentNodeRunIndex: index,
|
|
172
|
+
method: target[prop],
|
|
173
|
+
arguments: [validatedDocuments],
|
|
174
|
+
}));
|
|
175
|
+
(0, log_ai_event_1.logAiEvent)(executeFunctions, 'ai-document-embedded');
|
|
176
|
+
executeFunctions.addOutputData(connectionType, index, [[{ json: { response } }]]);
|
|
177
|
+
return response;
|
|
178
|
+
};
|
|
179
|
+
}
|
|
180
|
+
if (prop === 'embedQuery' && 'embedQuery' in target) {
|
|
181
|
+
return async (query) => {
|
|
182
|
+
const validatedQuery = (0, embeddings_input_validation_1.validateEmbedQueryInput)(query, executeFunctions.getNode());
|
|
183
|
+
connectionType = n8n_workflow_1.NodeConnectionTypes.AiEmbedding;
|
|
184
|
+
const { index } = executeFunctions.addInputData(connectionType, [
|
|
185
|
+
[{ json: { query: validatedQuery } }],
|
|
186
|
+
]);
|
|
187
|
+
const response = (await callMethodAsync.call(target, {
|
|
188
|
+
executeFunctions,
|
|
189
|
+
connectionType,
|
|
190
|
+
currentNodeRunIndex: index,
|
|
191
|
+
method: target[prop],
|
|
192
|
+
arguments: [validatedQuery],
|
|
193
|
+
}));
|
|
194
|
+
(0, log_ai_event_1.logAiEvent)(executeFunctions, 'ai-query-embedded');
|
|
195
|
+
executeFunctions.addOutputData(connectionType, index, [[{ json: { response } }]]);
|
|
196
|
+
return response;
|
|
197
|
+
};
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
if (originalInstance instanceof document_compressors_1.BaseDocumentCompressor) {
|
|
201
|
+
if (prop === 'compressDocuments' && 'compressDocuments' in target) {
|
|
202
|
+
return async (documents, query) => {
|
|
203
|
+
connectionType = n8n_workflow_1.NodeConnectionTypes.AiReranker;
|
|
204
|
+
const { index } = executeFunctions.addInputData(connectionType, [
|
|
205
|
+
[{ json: { query, documents } }],
|
|
206
|
+
]);
|
|
207
|
+
const response = (await callMethodAsync.call(target, {
|
|
208
|
+
executeFunctions,
|
|
209
|
+
connectionType,
|
|
210
|
+
currentNodeRunIndex: index,
|
|
211
|
+
method: target[prop],
|
|
212
|
+
arguments: [(0, n8n_workflow_1.deepCopy)(documents), query],
|
|
213
|
+
}));
|
|
214
|
+
(0, log_ai_event_1.logAiEvent)(executeFunctions, 'ai-document-reranked', { query });
|
|
215
|
+
executeFunctions.addOutputData(connectionType, index, [[{ json: { response } }]]);
|
|
216
|
+
return response;
|
|
217
|
+
};
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
if (originalInstance instanceof n8n_json_loader_1.N8nJsonLoader ||
|
|
221
|
+
originalInstance instanceof n8n_binary_loader_1.N8nBinaryLoader) {
|
|
222
|
+
if (prop === 'processAll' && 'processAll' in target) {
|
|
223
|
+
return async (items) => {
|
|
224
|
+
connectionType = n8n_workflow_1.NodeConnectionTypes.AiDocument;
|
|
225
|
+
const { index } = executeFunctions.addInputData(connectionType, [items]);
|
|
226
|
+
const response = (await callMethodAsync.call(target, {
|
|
227
|
+
executeFunctions,
|
|
228
|
+
connectionType,
|
|
229
|
+
currentNodeRunIndex: index,
|
|
230
|
+
method: target[prop],
|
|
231
|
+
arguments: [items],
|
|
232
|
+
}));
|
|
233
|
+
executeFunctions.addOutputData(connectionType, index, [[{ json: { response } }]]);
|
|
234
|
+
return response;
|
|
235
|
+
};
|
|
236
|
+
}
|
|
237
|
+
if (prop === 'processItem' && 'processItem' in target) {
|
|
238
|
+
return async (item, itemIndex) => {
|
|
239
|
+
connectionType = n8n_workflow_1.NodeConnectionTypes.AiDocument;
|
|
240
|
+
const { index } = executeFunctions.addInputData(connectionType, [[item]]);
|
|
241
|
+
const response = (await callMethodAsync.call(target, {
|
|
242
|
+
executeFunctions,
|
|
243
|
+
connectionType,
|
|
244
|
+
currentNodeRunIndex: index,
|
|
245
|
+
method: target[prop],
|
|
246
|
+
arguments: [item, itemIndex],
|
|
247
|
+
}));
|
|
248
|
+
(0, log_ai_event_1.logAiEvent)(executeFunctions, 'ai-document-processed');
|
|
249
|
+
executeFunctions.addOutputData(connectionType, index, [
|
|
250
|
+
[{ json: { response }, pairedItem: { item: itemIndex } }],
|
|
251
|
+
]);
|
|
252
|
+
return response;
|
|
253
|
+
};
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
if (originalInstance instanceof textsplitters_1.TextSplitter) {
|
|
257
|
+
if (prop === 'splitText' && 'splitText' in target) {
|
|
258
|
+
return async (text) => {
|
|
259
|
+
connectionType = n8n_workflow_1.NodeConnectionTypes.AiTextSplitter;
|
|
260
|
+
const { index } = executeFunctions.addInputData(connectionType, [
|
|
261
|
+
[{ json: { textSplitter: text } }],
|
|
262
|
+
]);
|
|
263
|
+
const response = (await callMethodAsync.call(target, {
|
|
264
|
+
executeFunctions,
|
|
265
|
+
connectionType,
|
|
266
|
+
currentNodeRunIndex: index,
|
|
267
|
+
method: target[prop],
|
|
268
|
+
arguments: [text],
|
|
269
|
+
}));
|
|
270
|
+
(0, log_ai_event_1.logAiEvent)(executeFunctions, 'ai-text-split');
|
|
271
|
+
executeFunctions.addOutputData(connectionType, index, [[{ json: { response } }]]);
|
|
272
|
+
return response;
|
|
273
|
+
};
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
if ((0, guards_1.isToolsInstance)(originalInstance)) {
|
|
277
|
+
if (prop === '_call' && '_call' in target) {
|
|
278
|
+
return async (query) => {
|
|
279
|
+
connectionType = n8n_workflow_1.NodeConnectionTypes.AiTool;
|
|
280
|
+
const inputData = { query };
|
|
281
|
+
if (target.metadata?.isFromToolkit) {
|
|
282
|
+
inputData.tool = {
|
|
283
|
+
name: target.name,
|
|
284
|
+
description: target.description,
|
|
285
|
+
};
|
|
286
|
+
}
|
|
287
|
+
const { index } = executeFunctions.addInputData(connectionType, [
|
|
288
|
+
[{ json: inputData }],
|
|
289
|
+
]);
|
|
290
|
+
const response = (await callMethodAsync.call(target, {
|
|
291
|
+
executeFunctions,
|
|
292
|
+
connectionType,
|
|
293
|
+
currentNodeRunIndex: index,
|
|
294
|
+
method: target[prop],
|
|
295
|
+
arguments: [query],
|
|
296
|
+
}));
|
|
297
|
+
(0, log_ai_event_1.logAiEvent)(executeFunctions, 'ai-tool-called', { ...inputData, response });
|
|
298
|
+
executeFunctions.addOutputData(connectionType, index, [[{ json: { response } }]]);
|
|
299
|
+
if (typeof response === 'string')
|
|
300
|
+
return response;
|
|
301
|
+
return JSON.stringify(response);
|
|
302
|
+
};
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
if (originalInstance instanceof vectorstores_1.VectorStore) {
|
|
306
|
+
if (prop === 'similaritySearch' && 'similaritySearch' in target) {
|
|
307
|
+
return async (query, k, filter, _callbacks) => {
|
|
308
|
+
connectionType = n8n_workflow_1.NodeConnectionTypes.AiVectorStore;
|
|
309
|
+
const { index } = executeFunctions.addInputData(connectionType, [
|
|
310
|
+
[{ json: { query, k, filter } }],
|
|
311
|
+
]);
|
|
312
|
+
const response = (await callMethodAsync.call(target, {
|
|
313
|
+
executeFunctions,
|
|
314
|
+
connectionType,
|
|
315
|
+
currentNodeRunIndex: index,
|
|
316
|
+
method: target[prop],
|
|
317
|
+
arguments: [query, k, filter, _callbacks],
|
|
318
|
+
}));
|
|
319
|
+
(0, log_ai_event_1.logAiEvent)(executeFunctions, 'ai-vector-store-searched', { query });
|
|
320
|
+
executeFunctions.addOutputData(connectionType, index, [[{ json: { response } }]]);
|
|
321
|
+
return response;
|
|
322
|
+
};
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
return target[prop];
|
|
326
|
+
},
|
|
327
|
+
});
|
|
328
|
+
}
|
|
329
|
+
//# sourceMappingURL=log-wrapper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"log-wrapper.js","sourceRoot":"","sources":["../../src/utils/log-wrapper.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { Document } from '@langchain/core/documents';
|
|
2
|
+
import type { TextSplitter } from '@langchain/textsplitters';
|
|
3
|
+
import type { IExecuteFunctions, INodeExecutionData, ISupplyDataFunctions } from 'n8n-workflow';
|
|
4
|
+
export declare class N8nBinaryLoader {
|
|
5
|
+
private context;
|
|
6
|
+
private optionsPrefix;
|
|
7
|
+
private binaryDataKey;
|
|
8
|
+
private textSplitter?;
|
|
9
|
+
constructor(context: IExecuteFunctions | ISupplyDataFunctions, optionsPrefix?: string, binaryDataKey?: string, textSplitter?: TextSplitter | undefined);
|
|
10
|
+
processAll(items?: INodeExecutionData[]): Promise<Document[]>;
|
|
11
|
+
private validateMimeType;
|
|
12
|
+
private getFilePathOrBlob;
|
|
13
|
+
private getLoader;
|
|
14
|
+
private loadDocuments;
|
|
15
|
+
private cleanupTmpFileIfNeeded;
|
|
16
|
+
processItem(item: INodeExecutionData, itemIndex: number): Promise<Document[]>;
|
|
17
|
+
processItemByKey(item: INodeExecutionData, itemIndex: number, binaryKey: string): Promise<Document[]>;
|
|
18
|
+
}
|