@n8n/ai-utilities 0.33.0 → 0.34.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.
Files changed (69) hide show
  1. package/dist/cjs/index.d.ts +1 -1
  2. package/dist/cjs/index.js.map +1 -1
  3. package/dist/cjs/model-discovery/index.d.ts +2 -2
  4. package/dist/cjs/model-discovery/index.js +3 -1
  5. package/dist/cjs/model-discovery/index.js.map +1 -1
  6. package/dist/cjs/model-discovery/providers/alibaba.d.ts +1 -0
  7. package/dist/cjs/model-discovery/providers/alibaba.js +14 -1
  8. package/dist/cjs/model-discovery/providers/alibaba.js.map +1 -1
  9. package/dist/cjs/model-discovery/providers/google.d.ts +4 -0
  10. package/dist/cjs/model-discovery/providers/google.js +13 -2
  11. package/dist/cjs/model-discovery/providers/google.js.map +1 -1
  12. package/dist/cjs/node-catalog/get.d.ts +1 -0
  13. package/dist/cjs/node-catalog/get.js +10 -0
  14. package/dist/cjs/node-catalog/get.js.map +1 -1
  15. package/dist/cjs/node-catalog/index.d.ts +1 -1
  16. package/dist/cjs/node-catalog/index.js +2 -1
  17. package/dist/cjs/node-catalog/index.js.map +1 -1
  18. package/dist/cjs/suppliers/supplyModel.js +1 -1
  19. package/dist/cjs/suppliers/supplyModel.js.map +1 -1
  20. package/dist/cjs/typecheck.tsbuildinfo +1 -1
  21. package/dist/cjs/utils/credential-description.d.ts +2 -0
  22. package/dist/cjs/utils/credential-description.js +16 -0
  23. package/dist/cjs/utils/credential-description.js.map +1 -0
  24. package/dist/cjs/utils/http-proxy-agent.d.ts +6 -5
  25. package/dist/cjs/utils/http-proxy-agent.js +28 -25
  26. package/dist/cjs/utils/http-proxy-agent.js.map +1 -1
  27. package/dist/cjs/utils/vector-store/createVectorStoreNode/createVectorStoreNode.d.ts +12 -3
  28. package/dist/cjs/utils/vector-store/createVectorStoreNode/operations/loadOperation.js +3 -2
  29. package/dist/cjs/utils/vector-store/createVectorStoreNode/operations/loadOperation.js.map +1 -1
  30. package/dist/cjs/utils/vector-store/createVectorStoreNode/operations/retrieveAsToolExecuteOperation.js +3 -2
  31. package/dist/cjs/utils/vector-store/createVectorStoreNode/operations/retrieveAsToolExecuteOperation.js.map +1 -1
  32. package/dist/cjs/utils/vector-store/createVectorStoreNode/operations/retrieveAsToolOperation.js +3 -2
  33. package/dist/cjs/utils/vector-store/createVectorStoreNode/operations/retrieveAsToolOperation.js.map +1 -1
  34. package/dist/cjs/utils/vector-store/createVectorStoreNode/types.d.ts +3 -12
  35. package/dist/esm/index.d.ts +1 -1
  36. package/dist/esm/index.js.map +1 -1
  37. package/dist/esm/model-discovery/index.d.ts +2 -2
  38. package/dist/esm/model-discovery/index.js +3 -1
  39. package/dist/esm/model-discovery/index.js.map +1 -1
  40. package/dist/esm/model-discovery/providers/alibaba.d.ts +1 -0
  41. package/dist/esm/model-discovery/providers/alibaba.js +14 -1
  42. package/dist/esm/model-discovery/providers/alibaba.js.map +1 -1
  43. package/dist/esm/model-discovery/providers/google.d.ts +4 -0
  44. package/dist/esm/model-discovery/providers/google.js +13 -2
  45. package/dist/esm/model-discovery/providers/google.js.map +1 -1
  46. package/dist/esm/node-catalog/get.d.ts +1 -0
  47. package/dist/esm/node-catalog/get.js +10 -0
  48. package/dist/esm/node-catalog/get.js.map +1 -1
  49. package/dist/esm/node-catalog/index.d.ts +1 -1
  50. package/dist/esm/node-catalog/index.js +2 -1
  51. package/dist/esm/node-catalog/index.js.map +1 -1
  52. package/dist/esm/suppliers/supplyModel.js +1 -1
  53. package/dist/esm/suppliers/supplyModel.js.map +1 -1
  54. package/dist/esm/typecheck.tsbuildinfo +1 -1
  55. package/dist/esm/utils/credential-description.d.ts +2 -0
  56. package/dist/esm/utils/credential-description.js +16 -0
  57. package/dist/esm/utils/credential-description.js.map +1 -0
  58. package/dist/esm/utils/http-proxy-agent.d.ts +6 -5
  59. package/dist/esm/utils/http-proxy-agent.js +28 -25
  60. package/dist/esm/utils/http-proxy-agent.js.map +1 -1
  61. package/dist/esm/utils/vector-store/createVectorStoreNode/createVectorStoreNode.d.ts +12 -3
  62. package/dist/esm/utils/vector-store/createVectorStoreNode/operations/loadOperation.js +3 -2
  63. package/dist/esm/utils/vector-store/createVectorStoreNode/operations/loadOperation.js.map +1 -1
  64. package/dist/esm/utils/vector-store/createVectorStoreNode/operations/retrieveAsToolExecuteOperation.js +3 -2
  65. package/dist/esm/utils/vector-store/createVectorStoreNode/operations/retrieveAsToolExecuteOperation.js.map +1 -1
  66. package/dist/esm/utils/vector-store/createVectorStoreNode/operations/retrieveAsToolOperation.js +3 -2
  67. package/dist/esm/utils/vector-store/createVectorStoreNode/operations/retrieveAsToolOperation.js.map +1 -1
  68. package/dist/esm/utils/vector-store/createVectorStoreNode/types.d.ts +3 -12
  69. package/package.json +13 -5
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.AI_CONNECTION_TYPES = exports.toResourceLocatorParameterValue = exports.toLoadedOptionParameterValue = exports.toDynamicParameterPath = exports.normalizeParameterPath = exports.hasNodeCredentials = exports.getRequiredNodeCredentialSlots = exports.getDynamicNodeParameterLookup = exports.formatResourceLocatorOptionsForLLM = exports.findNodeParameterProperty = exports.detectAuthenticationParameterValue = exports.collectDynamicNodeParameterPaths = exports.formatResourceOperationsForPrompt = exports.createResourceCacheKey = exports.extractResourceOperations = exports.extractOperationOnlyDiscriminator = exports.extractModeDiscriminator = exports.suggestedNodesData = exports.categoryList = exports.getSuggestedNodes = exports.versionDirToNumber = exports.toSnakeCase = exports.parseNodeId = exports.validatePathWithinBase = exports.isValidPathComponent = exports.getNodeTypes = exports.getNodeTypeDefinition = exports.formatNodeResult = exports.searchCodeBuilderNodes = exports.SCORE_WEIGHTS = exports.NodeSearchEngine = exports.NodeTypeParser = void 0;
3
+ exports.AI_CONNECTION_TYPES = exports.toResourceLocatorParameterValue = exports.toLoadedOptionParameterValue = exports.toDynamicParameterPath = exports.normalizeParameterPath = exports.hasNodeCredentials = exports.getRequiredNodeCredentialSlots = exports.getDynamicNodeParameterLookup = exports.formatResourceLocatorOptionsForLLM = exports.findNodeParameterProperty = exports.detectAuthenticationParameterValue = exports.collectDynamicNodeParameterPaths = exports.formatResourceOperationsForPrompt = exports.createResourceCacheKey = exports.extractResourceOperations = exports.extractOperationOnlyDiscriminator = exports.extractModeDiscriminator = exports.suggestedNodesData = exports.categoryList = exports.getSuggestedNodes = exports.versionDirToNumber = exports.toSnakeCase = exports.parseNodeId = exports.validatePathWithinBase = exports.isValidVersionSegment = exports.isValidPathComponent = exports.getNodeTypes = exports.getNodeTypeDefinition = exports.formatNodeResult = exports.searchCodeBuilderNodes = exports.SCORE_WEIGHTS = exports.NodeSearchEngine = exports.NodeTypeParser = void 0;
4
4
  var node_type_parser_1 = require("./node-type-parser");
5
5
  Object.defineProperty(exports, "NodeTypeParser", { enumerable: true, get: function () { return node_type_parser_1.NodeTypeParser; } });
6
6
  var search_engine_1 = require("./search-engine");
@@ -13,6 +13,7 @@ var get_1 = require("./get");
13
13
  Object.defineProperty(exports, "getNodeTypeDefinition", { enumerable: true, get: function () { return get_1.getNodeTypeDefinition; } });
14
14
  Object.defineProperty(exports, "getNodeTypes", { enumerable: true, get: function () { return get_1.getNodeTypes; } });
15
15
  Object.defineProperty(exports, "isValidPathComponent", { enumerable: true, get: function () { return get_1.isValidPathComponent; } });
16
+ Object.defineProperty(exports, "isValidVersionSegment", { enumerable: true, get: function () { return get_1.isValidVersionSegment; } });
16
17
  Object.defineProperty(exports, "validatePathWithinBase", { enumerable: true, get: function () { return get_1.validatePathWithinBase; } });
17
18
  Object.defineProperty(exports, "parseNodeId", { enumerable: true, get: function () { return get_1.parseNodeId; } });
18
19
  Object.defineProperty(exports, "toSnakeCase", { enumerable: true, get: function () { return get_1.toSnakeCase; } });
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/node-catalog/index.ts"],"names":[],"mappings":";;;AAUA,uDAAoD;AAA3C,kHAAA,cAAc,OAAA;AAGvB,iDAAkE;AAAzD,iHAAA,gBAAgB,OAAA;AAAE,8GAAA,aAAa,OAAA;AAExC,mCAAoE;AAA3D,gHAAA,sBAAsB,OAAA;AAAE,0GAAA,gBAAgB,OAAA;AAMjD,6BAQe;AAPd,4GAAA,qBAAqB,OAAA;AACrB,mGAAA,YAAY,OAAA;AACZ,2GAAA,oBAAoB,OAAA;AACpB,6GAAA,sBAAsB,OAAA;AACtB,kGAAA,WAAW,OAAA;AACX,kGAAA,WAAW,OAAA;AACX,yGAAA,kBAAkB,OAAA;AAInB,yCAA8D;AAArD,8GAAA,iBAAiB,OAAA;AAAE,yGAAA,YAAY,OAAA;AAExC,+DAIgC;AAH/B,0HAAA,kBAAkB,OAAA;AAKnB,6DAG+B;AAF9B,+HAAA,wBAAwB,OAAA;AACxB,wIAAA,iCAAiC,OAAA;AASlC,+EAIwC;AAHvC,yIAAA,yBAAyB,OAAA;AACzB,sIAAA,sBAAsB,OAAA;AACtB,iJAAA,iCAAiC,OAAA;AASlC,qEAYmC;AAXlC,2IAAA,gCAAgC,OAAA;AAChC,6IAAA,kCAAkC,OAAA;AAClC,oIAAA,yBAAyB,OAAA;AACzB,6IAAA,kCAAkC,OAAA;AAClC,wIAAA,6BAA6B,OAAA;AAC7B,yIAAA,8BAA8B,OAAA;AAC9B,6HAAA,kBAAkB,OAAA;AAClB,iIAAA,sBAAsB,OAAA;AACtB,iIAAA,sBAAsB,OAAA;AACtB,uIAAA,4BAA4B,OAAA;AAC5B,0IAAA,+BAA+B,OAAA;AAQhC,iCAA8C;AAArC,4GAAA,mBAAmB,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/node-catalog/index.ts"],"names":[],"mappings":";;;AAUA,uDAAoD;AAA3C,kHAAA,cAAc,OAAA;AAGvB,iDAAkE;AAAzD,iHAAA,gBAAgB,OAAA;AAAE,8GAAA,aAAa,OAAA;AAExC,mCAAoE;AAA3D,gHAAA,sBAAsB,OAAA;AAAE,0GAAA,gBAAgB,OAAA;AAMjD,6BASe;AARd,4GAAA,qBAAqB,OAAA;AACrB,mGAAA,YAAY,OAAA;AACZ,2GAAA,oBAAoB,OAAA;AACpB,4GAAA,qBAAqB,OAAA;AACrB,6GAAA,sBAAsB,OAAA;AACtB,kGAAA,WAAW,OAAA;AACX,kGAAA,WAAW,OAAA;AACX,yGAAA,kBAAkB,OAAA;AAInB,yCAA8D;AAArD,8GAAA,iBAAiB,OAAA;AAAE,yGAAA,YAAY,OAAA;AAExC,+DAIgC;AAH/B,0HAAA,kBAAkB,OAAA;AAKnB,6DAG+B;AAF9B,+HAAA,wBAAwB,OAAA;AACxB,wIAAA,iCAAiC,OAAA;AASlC,+EAIwC;AAHvC,yIAAA,yBAAyB,OAAA;AACzB,sIAAA,sBAAsB,OAAA;AACtB,iJAAA,iCAAiC,OAAA;AASlC,qEAYmC;AAXlC,2IAAA,gCAAgC,OAAA;AAChC,6IAAA,kCAAkC,OAAA;AAClC,oIAAA,yBAAyB,OAAA;AACzB,6IAAA,kCAAkC,OAAA;AAClC,wIAAA,6BAA6B,OAAA;AAC7B,yIAAA,8BAA8B,OAAA;AAC9B,6HAAA,kBAAkB,OAAA;AAClB,iIAAA,sBAAsB,OAAA;AACtB,iIAAA,sBAAsB,OAAA;AACtB,uIAAA,4BAA4B,OAAA;AAC5B,0IAAA,+BAA+B,OAAA;AAQhC,iCAA8C;AAArC,4GAAA,mBAAmB,OAAA"}
@@ -22,7 +22,7 @@ function getOpenAiModel(ctx, model) {
22
22
  dispatcher: (0, http_proxy_agent_1.getProxyAgent)(model.baseUrl, {
23
23
  headersTimeout: timeout,
24
24
  bodyTimeout: timeout,
25
- }),
25
+ }, ctx.helpers.getSecureEgressFilter()),
26
26
  };
27
27
  const openAiModel = new openai_1.ChatOpenAI({
28
28
  configuration: clientConfiguration,
@@ -1 +1 @@
1
- {"version":3,"file":"supplyModel.js","sourceRoot":"","sources":["../../../src/suppliers/supplyModel.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"supplyModel.js","sourceRoot":"","sources":["../../../src/suppliers/supplyModel.ts"],"names":[],"mappings":"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"}