@n8n/ai-utilities 0.26.0 → 0.27.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.
Files changed (31) hide show
  1. package/dist/cjs/node-catalog/get.d.ts +1 -0
  2. package/dist/cjs/node-catalog/get.js +9 -5
  3. package/dist/cjs/node-catalog/get.js.map +1 -1
  4. package/dist/cjs/node-catalog/index.d.ts +1 -1
  5. package/dist/cjs/node-catalog/index.js +2 -1
  6. package/dist/cjs/node-catalog/index.js.map +1 -1
  7. package/dist/cjs/typecheck.tsbuildinfo +1 -1
  8. package/dist/cjs/utils/http-proxy-agent.d.ts +2 -1
  9. package/dist/cjs/utils/http-proxy-agent.js +5 -2
  10. package/dist/cjs/utils/http-proxy-agent.js.map +1 -1
  11. package/dist/cjs/web-search/brave-search.js +25 -1
  12. package/dist/cjs/web-search/brave-search.js.map +1 -1
  13. package/dist/cjs/web-search/searxng-search.d.ts +1 -1
  14. package/dist/cjs/web-search/searxng-search.js +2 -2
  15. package/dist/cjs/web-search/searxng-search.js.map +1 -1
  16. package/dist/esm/node-catalog/get.d.ts +1 -0
  17. package/dist/esm/node-catalog/get.js +9 -5
  18. package/dist/esm/node-catalog/get.js.map +1 -1
  19. package/dist/esm/node-catalog/index.d.ts +1 -1
  20. package/dist/esm/node-catalog/index.js +2 -1
  21. package/dist/esm/node-catalog/index.js.map +1 -1
  22. package/dist/esm/typecheck.tsbuildinfo +1 -1
  23. package/dist/esm/utils/http-proxy-agent.d.ts +2 -1
  24. package/dist/esm/utils/http-proxy-agent.js +5 -2
  25. package/dist/esm/utils/http-proxy-agent.js.map +1 -1
  26. package/dist/esm/web-search/brave-search.js +25 -1
  27. package/dist/esm/web-search/brave-search.js.map +1 -1
  28. package/dist/esm/web-search/searxng-search.d.ts +1 -1
  29. package/dist/esm/web-search/searxng-search.js +2 -2
  30. package/dist/esm/web-search/searxng-search.js.map +1 -1
  31. package/package.json +9 -9
@@ -1,3 +1,4 @@
1
+ import type { AgentOptions } from 'node:https';
1
2
  import type { LookupFunction } from 'node:net';
2
3
  import { Agent, ProxyAgent } from 'undici';
3
4
  export interface AgentTimeoutOptions {
@@ -7,4 +8,4 @@ export interface AgentTimeoutOptions {
7
8
  }
8
9
  export declare function getProxyAgent(targetUrl?: string, timeoutOptions?: AgentTimeoutOptions, lookup?: LookupFunction): Agent | ProxyAgent | undefined;
9
10
  export declare function proxyFetch(input: RequestInfo | URL, init?: RequestInit, timeoutOptions?: AgentTimeoutOptions, lookup?: LookupFunction): Promise<Response>;
10
- export declare function getNodeProxyAgent(targetUrl?: string): import("https").Agent | undefined;
11
+ export declare function getNodeProxyAgent(targetUrl?: string, agentOptions?: AgentOptions): import("https").Agent | undefined;
@@ -23,6 +23,9 @@ function getProxyAgent(targetUrl, timeoutOptions, lookup) {
23
23
  if (timeoutOptions) {
24
24
  return new undici_1.Agent(agentOptions);
25
25
  }
26
+ if (process.env.N8N_AI_TIMEOUT_MAX) {
27
+ return new undici_1.Agent(agentOptions);
28
+ }
26
29
  return undefined;
27
30
  }
28
31
  return new undici_1.ProxyAgent({ uri: proxyUrl, ...agentOptions });
@@ -35,11 +38,11 @@ async function proxyFetch(input, init, timeoutOptions, lookup) {
35
38
  dispatcher,
36
39
  });
37
40
  }
38
- function getNodeProxyAgent(targetUrl) {
41
+ function getNodeProxyAgent(targetUrl, agentOptions) {
39
42
  const proxyUrl = (0, proxy_1.resolveProxyUrl)(targetUrl, PROXY_FALLBACK_TARGET);
40
43
  if (!proxyUrl) {
41
44
  return undefined;
42
45
  }
43
- return (0, proxy_1.createHttpsProxyAgent)(targetUrl ?? PROXY_FALLBACK_TARGET, proxyUrl);
46
+ return (0, proxy_1.createHttpsProxyAgent)(targetUrl ?? PROXY_FALLBACK_TARGET, proxyUrl, agentOptions);
44
47
  }
45
48
  //# sourceMappingURL=http-proxy-agent.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"http-proxy-agent.js","sourceRoot":"","sources":["../../../src/utils/http-proxy-agent.ts"],"names":[],"mappings":";;;;;AAmBA,sDAAoF;AAGpF,mCAA2C;AAe3C,MAAM,eAAe,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,SAAS,EAAE,EAAE,CAAC,CAAC;AAMlF,MAAM,qBAAqB,GAAG,8BAA8B,CAAC;AAmB7D,uBACC,SAAkB,EAClB,cAAoC,EACpC,MAAuB;IAEvB,MAAM,QAAQ,GAAG,IAAA,uBAAe,EAAC,SAAS,EAAE,qBAAqB,CAAC,CAAC;IAEnE,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,MAAM,EAAE,CAAC;YACZ,OAAO,IAAI,cAAK,CAAC,EAAE,GAAG,YAAY,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;QAC5D,CAAC;QACD,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;AAWM,KAAK,qBACX,KAAwB,EACxB,IAAkB,EAClB,cAAoC,EACpC,MAAuB;IAEvB,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,EAAE,MAAM,CAAC,CAAC;IAEpE,OAAO,MAAM,KAAK,CAAC,KAAK,EAAE;QACzB,GAAG,IAAI;QAEP,UAAU;KACV,CAAC,CAAC;AACJ,CAAC;AASD,2BAAkC,SAAkB;IACnD,MAAM,QAAQ,GAAG,IAAA,uBAAe,EAAC,SAAS,EAAE,qBAAqB,CAAC,CAAC;IAEnE,IAAI,CAAC,QAAQ,EAAE,CAAC;QACf,OAAO,SAAS,CAAC;IAClB,CAAC;IAED,OAAO,IAAA,6BAAqB,EAAC,SAAS,IAAI,qBAAqB,EAAE,QAAQ,CAAC,CAAC;AAC5E,CAAC"}
1
+ {"version":3,"file":"http-proxy-agent.js","sourceRoot":"","sources":["../../../src/utils/http-proxy-agent.ts"],"names":[],"mappings":";;;;;AAmBA,sDAAoF;AAIpF,mCAA2C;AAe3C,MAAM,eAAe,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,SAAS,EAAE,EAAE,CAAC,CAAC;AAMlF,MAAM,qBAAqB,GAAG,8BAA8B,CAAC;AAsB7D,uBACC,SAAkB,EAClB,cAAoC,EACpC,MAAuB;IAEvB,MAAM,QAAQ,GAAG,IAAA,uBAAe,EAAC,SAAS,EAAE,qBAAqB,CAAC,CAAC;IAEnE,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,MAAM,EAAE,CAAC;YACZ,OAAO,IAAI,cAAK,CAAC,EAAE,GAAG,YAAY,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;QAC5D,CAAC;QACD,IAAI,cAAc,EAAE,CAAC;YACpB,OAAO,IAAI,cAAK,CAAC,YAAY,CAAC,CAAC;QAChC,CAAC;QACD,IAAI,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,CAAC;YACpC,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;AAWM,KAAK,qBACX,KAAwB,EACxB,IAAkB,EAClB,cAAoC,EACpC,MAAuB;IAEvB,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,EAAE,MAAM,CAAC,CAAC;IAEpE,OAAO,MAAM,KAAK,CAAC,KAAK,EAAE;QACzB,GAAG,IAAI;QAEP,UAAU;KACV,CAAC,CAAC;AACJ,CAAC;AAUD,2BAAkC,SAAkB,EAAE,YAA2B;IAChF,MAAM,QAAQ,GAAG,IAAA,uBAAe,EAAC,SAAS,EAAE,qBAAqB,CAAC,CAAC;IAEnE,IAAI,CAAC,QAAQ,EAAE,CAAC;QACf,OAAO,SAAS,CAAC;IAClB,CAAC;IAED,OAAO,IAAA,6BAAqB,EAAC,SAAS,IAAI,qBAAqB,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;AAC1F,CAAC"}
@@ -3,6 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.braveSearch = braveSearch;
4
4
  const BRAVE_SEARCH_PATH = '/res/v1/web/search';
5
5
  const BRAVE_SEARCH_URL = `https://api.search.brave.com${BRAVE_SEARCH_PATH}`;
6
+ const MAX_ATTEMPTS = 3;
7
+ const RETRY_BASE_MS = 250;
6
8
  async function braveSearch(apiKey, query, options) {
7
9
  let searchQuery = query;
8
10
  if (options.includeDomains?.length) {
@@ -24,10 +26,32 @@ async function braveSearch(apiKey, query, options) {
24
26
  'Accept-Encoding': 'gzip',
25
27
  ...(proxyHeaders ?? { 'X-Subscription-Token': apiKey }),
26
28
  };
27
- const response = await fetch(`${baseUrl}?${params}`, {
29
+ const runSearch = async () => await fetch(`${baseUrl}?${params}`, {
28
30
  headers,
29
31
  ...(options.abortSignal ? { signal: options.abortSignal } : {}),
30
32
  });
33
+ const isRetryable = (status) => status === 429 || status >= 500;
34
+ const backoff = async (ms) => await new Promise((resolve) => {
35
+ const signal = options.abortSignal;
36
+ if (signal?.aborted) {
37
+ resolve();
38
+ return;
39
+ }
40
+ const timer = setTimeout(() => {
41
+ signal?.removeEventListener('abort', onAbort);
42
+ resolve();
43
+ }, ms);
44
+ function onAbort() {
45
+ clearTimeout(timer);
46
+ resolve();
47
+ }
48
+ signal?.addEventListener('abort', onAbort, { once: true });
49
+ });
50
+ let response = await runSearch();
51
+ for (let attempt = 1; attempt < MAX_ATTEMPTS && !response.ok && isRetryable(response.status); attempt++) {
52
+ await backoff(RETRY_BASE_MS * 2 ** (attempt - 1));
53
+ response = await runSearch();
54
+ }
31
55
  if (!response.ok) {
32
56
  throw new Error(`Brave search failed: ${response.status} ${response.statusText}`);
33
57
  }
@@ -1 +1 @@
1
- {"version":3,"file":"brave-search.js","sourceRoot":"","sources":["../../../src/web-search/brave-search.ts"],"names":[],"mappings":";;;AAEA,MAAM,iBAAiB,GAAG,oBAAoB,CAAC;AAC/C,MAAM,gBAAgB,GAAG,+BAA+B,iBAAiB,EAAE,CAAC;AA6BrE,KAAK,sBACX,MAAc,EACd,KAAa,EACb,OAA2B;IAE3B,IAAI,WAAW,GAAG,KAAK,CAAC;IAExB,IAAI,OAAO,CAAC,cAAc,EAAE,MAAM,EAAE,CAAC;QACpC,MAAM,UAAU,GAAG,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC/E,WAAW,GAAG,GAAG,KAAK,KAAK,UAAU,GAAG,CAAC;IAC1C,CAAC;IAED,IAAI,OAAO,CAAC,cAAc,EAAE,MAAM,EAAE,CAAC;QACpC,WAAW,IAAI,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC1E,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC;QAClC,CAAC,EAAE,WAAW;QACd,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,UAAU,IAAI,CAAC,CAAC;KACtC,CAAC,CAAC;IAEH,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IACxC,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,MAAM,GAAG,iBAAiB,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC;IAC7F,MAAM,YAAY,GAAG,WAAW,CAAC,CAAC,CAAC,MAAM,WAAW,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAClF,MAAM,OAAO,GAA2B;QACvC,MAAM,EAAE,kBAAkB;QAC1B,iBAAiB,EAAE,MAAM;QACzB,GAAG,CAAC,YAAY,IAAI,EAAE,sBAAsB,EAAE,MAAM,EAAE,CAAC;KACvD,CAAC;IAEF,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,OAAO,IAAI,MAAM,EAAE,EAAE;QACpD,OAAO;QACP,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC/D,CAAC,CAAC;IAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,wBAAwB,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;IACnF,CAAC;IAED,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAA2B,CAAC;IAE/D,OAAO;QACN,KAAK;QACL,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC9C,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,GAAG,EAAE,CAAC,CAAC,GAAG;YACV,OAAO,EAAE,CAAC,CAAC,WAAW;YACtB,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC1C,CAAC,CAAC;KACH,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"brave-search.js","sourceRoot":"","sources":["../../../src/web-search/brave-search.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,2 @@
1
1
  import type { WebSearchOptions, WebSearchResponse } from './types';
2
- export declare function searxngSearch(baseUrl: string, query: string, options: WebSearchOptions): Promise<WebSearchResponse>;
2
+ export declare function searxngSearch(baseUrl: string, query: string, options: WebSearchOptions, fetchImpl?: typeof globalThis.fetch): Promise<WebSearchResponse>;
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.searxngSearch = searxngSearch;
4
- async function searxngSearch(baseUrl, query, options) {
4
+ async function searxngSearch(baseUrl, query, options, fetchImpl = globalThis.fetch) {
5
5
  let searchQuery = query;
6
6
  if (options.includeDomains?.length) {
7
7
  const siteFilter = options.includeDomains.map((d) => `site:${d}`).join(' OR ');
@@ -16,7 +16,7 @@ async function searxngSearch(baseUrl, query, options) {
16
16
  format: 'json',
17
17
  pageno: '1',
18
18
  });
19
- const response = await fetch(`${normalizedUrl}/search?${params}`, {
19
+ const response = await fetchImpl(`${normalizedUrl}/search?${params}`, {
20
20
  headers: {
21
21
  Accept: 'application/json',
22
22
  },
@@ -1 +1 @@
1
- {"version":3,"file":"searxng-search.js","sourceRoot":"","sources":["../../../src/web-search/searxng-search.ts"],"names":[],"mappings":";;;AAqBO,KAAK,wBACX,OAAe,EACf,KAAa,EACb,OAAyB;IAEzB,IAAI,WAAW,GAAG,KAAK,CAAC;IAExB,IAAI,OAAO,CAAC,cAAc,EAAE,MAAM,EAAE,CAAC;QACpC,MAAM,UAAU,GAAG,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC/E,WAAW,GAAG,GAAG,KAAK,KAAK,UAAU,GAAG,CAAC;IAC1C,CAAC;IAED,IAAI,OAAO,CAAC,cAAc,EAAE,MAAM,EAAE,CAAC;QACpC,WAAW,IAAI,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC1E,CAAC;IAED,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAElD,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC;QAClC,CAAC,EAAE,WAAW;QACd,MAAM,EAAE,MAAM;QACd,MAAM,EAAE,GAAG;KACX,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,aAAa,WAAW,MAAM,EAAE,EAAE;QACjE,OAAO,EAAE;YACR,MAAM,EAAE,kBAAkB;SAC1B;QACD,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC/D,CAAC,CAAC;IAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,0BAA0B,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;IACrF,CAAC;IAED,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAuB,CAAC;IAC3D,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,CAAC,CAAC;IAE3C,OAAO;QACN,KAAK;QACL,OAAO,EAAE,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC9D,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,GAAG,EAAE,CAAC,CAAC,GAAG;YACV,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC9D,CAAC,CAAC;KACH,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"searxng-search.js","sourceRoot":"","sources":["../../../src/web-search/searxng-search.ts"],"names":[],"mappings":";;;AAqBO,KAAK,wBACX,OAAe,EACf,KAAa,EACb,OAAyB,EACzB,SAAS,GAA4B,UAAU,CAAC,KAAK;IAErD,IAAI,WAAW,GAAG,KAAK,CAAC;IAExB,IAAI,OAAO,CAAC,cAAc,EAAE,MAAM,EAAE,CAAC;QACpC,MAAM,UAAU,GAAG,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC/E,WAAW,GAAG,GAAG,KAAK,KAAK,UAAU,GAAG,CAAC;IAC1C,CAAC;IAED,IAAI,OAAO,CAAC,cAAc,EAAE,MAAM,EAAE,CAAC;QACpC,WAAW,IAAI,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC1E,CAAC;IAED,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAElD,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC;QAClC,CAAC,EAAE,WAAW;QACd,MAAM,EAAE,MAAM;QACd,MAAM,EAAE,GAAG;KACX,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,GAAG,aAAa,WAAW,MAAM,EAAE,EAAE;QACrE,OAAO,EAAE;YACR,MAAM,EAAE,kBAAkB;SAC1B;QACD,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC/D,CAAC,CAAC;IAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,0BAA0B,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;IACrF,CAAC;IAED,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAuB,CAAC;IAC3D,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,CAAC,CAAC;IAE3C,OAAO;QACN,KAAK;QACL,OAAO,EAAE,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC9D,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,GAAG,EAAE,CAAC,CAAC,GAAG;YACV,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC9D,CAAC,CAAC;KACH,CAAC;AACH,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@n8n/ai-utilities",
3
- "version": "0.26.0",
3
+ "version": "0.27.1",
4
4
  "description": "Utilities for building AI nodes in n8n",
5
5
  "types": "dist/esm/index.d.ts",
6
6
  "module": "dist/esm/index.js",
@@ -83,8 +83,8 @@
83
83
  },
84
84
  "files": [
85
85
  "dist",
86
- "LICENSE.md",
87
- "LICENSE_EE.md"
86
+ "LICENSE_EE.md",
87
+ "LICENSE.md"
88
88
  ],
89
89
  "devDependencies": {
90
90
  "@types/json-schema": "^7.0.15",
@@ -103,7 +103,7 @@
103
103
  "@n8n/vitest-config": "1.19.0"
104
104
  },
105
105
  "dependencies": {
106
- "zod": "3.25.67",
106
+ "zod": "3.25.76",
107
107
  "zod-to-json-schema": "3.23.3",
108
108
  "@langchain/core": "1.2.0",
109
109
  "@langchain/classic": "1.0.27",
@@ -117,12 +117,12 @@
117
117
  "@thednp/dommatrix": "^2.0.12",
118
118
  "pdf-parse": "2.4.5",
119
119
  "undici": "^6.27.0",
120
- "@n8n/api-types": "1.33.0",
121
- "@n8n/backend-network": "1.7.0",
122
- "@n8n/config": "2.31.0",
123
- "@n8n/utils": "1.41.0",
120
+ "@n8n/config": "2.32.0",
121
+ "@n8n/api-types": "1.34.1",
122
+ "@n8n/backend-network": "1.8.1",
124
123
  "@n8n/typescript-config": "1.9.0",
125
- "n8n-workflow": "2.33.0"
124
+ "@n8n/utils": "1.42.0",
125
+ "n8n-workflow": "2.34.1"
126
126
  },
127
127
  "license": "SEE LICENSE IN LICENSE.md",
128
128
  "homepage": "https://n8n.io",