diff --git a/README.md b/README.md index eec471b..2e04ced 100644 --- a/README.md +++ b/README.md @@ -5,23 +5,23 @@ [![npm version](https://img.shields.io/npm/v/n8n-mcp.svg)](https://www.npmjs.com/package/n8n-mcp) [![codecov](https://codecov.io/gh/czlonkowski/n8n-mcp/graph/badge.svg?token=YOUR_TOKEN)](https://codecov.io/gh/czlonkowski/n8n-mcp) [![Tests](https://img.shields.io/badge/tests-3336%20passing-brightgreen.svg)](https://github.com/czlonkowski/n8n-mcp/actions) -[![n8n version](https://img.shields.io/badge/n8n-^1.116.2-orange.svg)](https://github.com/n8n-io/n8n) +[![n8n version](https://img.shields.io/badge/n8n-1.117.2-orange.svg)](https://github.com/n8n-io/n8n) [![Docker](https://img.shields.io/badge/docker-ghcr.io%2Fczlonkowski%2Fn8n--mcp-green.svg)](https://github.com/czlonkowski/n8n-mcp/pkgs/container/n8n-mcp) [![Deploy on Railway](https://railway.com/button.svg)](https://railway.com/deploy/n8n-mcp?referralCode=n8n-mcp) -A Model Context Protocol (MCP) server that provides AI assistants with comprehensive access to n8n node documentation, properties, and operations. Deploy in minutes to give Claude and other AI assistants deep knowledge about n8n's 525+ workflow automation nodes. +A Model Context Protocol (MCP) server that provides AI assistants with comprehensive access to n8n node documentation, properties, and operations. Deploy in minutes to give Claude and other AI assistants deep knowledge about n8n's 541 workflow automation nodes. ## Overview n8n-MCP serves as a bridge between n8n's workflow automation platform and AI models, enabling them to understand and work with n8n nodes effectively. It provides structured access to: -- šŸ“š **536 n8n nodes** from both n8n-nodes-base and @n8n/n8n-nodes-langchain +- šŸ“š **541 n8n nodes** from both n8n-nodes-base and @n8n/n8n-nodes-langchain - šŸ”§ **Node properties** - 99% coverage with detailed schemas - ⚔ **Node operations** - 63.6% coverage of available actions -- šŸ“„ **Documentation** - 90% coverage from official n8n docs (including AI nodes) -- šŸ¤– **AI tools** - 263 AI-capable nodes detected with full documentation +- šŸ“„ **Documentation** - 87% coverage from official n8n docs (including AI nodes) +- šŸ¤– **AI tools** - 271 AI-capable nodes detected with full documentation - šŸ’” **Real-world examples** - 2,646 pre-extracted configurations from popular templates -- šŸŽÆ **Template library** - 2,500+ workflow templates with smart filtering +- šŸŽÆ **Template library** - 2,709 workflow templates with 100% metadata coverage ## āš ļø Important Safety Warning @@ -533,7 +533,7 @@ When operations are independent, execute them in parallel for maximum performanc āŒ BAD: Sequential tool calls (await each one before the next) ### 3. Templates First -ALWAYS check templates before building from scratch (2,500+ available). +ALWAYS check templates before building from scratch (2,709 available). ### 4. Multi-Level Validation Use validate_node_minimal → validate_node_operation → validate_workflow pattern. @@ -842,7 +842,7 @@ n8n_update_partial_workflow({ ### Core Behavior 1. **Silent execution** - No commentary between tools 2. **Parallel by default** - Execute independent operations simultaneously -3. **Templates first** - Always check before building (2,500+ available) +3. **Templates first** - Always check before building (2,709 available) 4. **Multi-level validation** - Quick check → Full validation → Workflow validation 5. **Never trust defaults** - Explicitly configure ALL parameters @@ -945,7 +945,7 @@ Once connected, Claude can use these powerful tools: - **`get_node_as_tool_info`** - Get guidance on using any node as an AI tool ### Template Tools -- **`list_templates`** - Browse all templates with descriptions and optional metadata (2,500+ templates) +- **`list_templates`** - Browse all templates with descriptions and optional metadata (2,709 templates) - **`search_templates`** - Text search across template names and descriptions - **`search_templates_by_metadata`** - Advanced filtering by complexity, setup time, services, audience - **`list_node_templates`** - Find templates using specific nodes @@ -1100,17 +1100,17 @@ npm run dev:http # HTTP dev mode ## šŸ“Š Metrics & Coverage -Current database coverage (n8n v1.113.3): +Current database coverage (n8n v1.117.2): -- āœ… **536/536** nodes loaded (100%) -- āœ… **528** nodes with properties (98.7%) -- āœ… **470** nodes with documentation (88%) -- āœ… **267** AI-capable tools detected +- āœ… **541/541** nodes loaded (100%) +- āœ… **541** nodes with properties (100%) +- āœ… **470** nodes with documentation (87%) +- āœ… **271** AI-capable tools detected - āœ… **2,646** pre-extracted template configurations -- āœ… **2,500+** workflow templates available +- āœ… **2,709** workflow templates available (100% metadata coverage) - āœ… **AI Agent & LangChain nodes** fully documented - ⚔ **Average response time**: ~12ms -- šŸ’¾ **Database size**: ~15MB (optimized) +- šŸ’¾ **Database size**: ~68MB (includes templates with metadata) ## šŸ”„ Recent Updates diff --git a/data/nodes.db b/data/nodes.db index 72aae6d..7a7e2d9 100644 Binary files a/data/nodes.db and b/data/nodes.db differ diff --git a/package-lock.json b/package-lock.json index 48ece0f..b7d9ca5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,24 +1,24 @@ { "name": "n8n-mcp", - "version": "2.20.7", + "version": "2.22.8", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "n8n-mcp", - "version": "2.20.7", + "version": "2.22.8", "license": "MIT", "dependencies": { "@modelcontextprotocol/sdk": "^1.20.1", - "@n8n/n8n-nodes-langchain": "^1.115.1", + "@n8n/n8n-nodes-langchain": "^1.116.2", "@supabase/supabase-js": "^2.57.4", "dotenv": "^16.5.0", "express": "^5.1.0", "express-rate-limit": "^7.1.5", "lru-cache": "^11.2.1", - "n8n": "^1.116.2", - "n8n-core": "^1.115.1", - "n8n-workflow": "^1.113.0", + "n8n": "^1.117.2", + "n8n-core": "^1.116.0", + "n8n-workflow": "^1.114.0", "openai": "^4.77.0", "sql.js": "^1.13.0", "tslib": "^2.6.2", @@ -5912,9 +5912,9 @@ "peer": true }, "node_modules/@babel/compat-data": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.4.tgz", - "integrity": "sha512-YsmSKC29MJwf0gF8Rjjrg5LQCmyh+j/nD8/eP7f+BeoQTKYqs9RoWbjGOdy0+1Ekr68RJZMUOPVQaQisnIo4Rw==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.5.tgz", + "integrity": "sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA==", "license": "MIT", "peer": true, "engines": { @@ -5922,21 +5922,21 @@ } }, "node_modules/@babel/core": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.4.tgz", - "integrity": "sha512-2BCOP7TN8M+gVDj7/ht3hsaO/B/n5oDbiAyyvnRlNOs+u1o+JWNYTQrmpuNp1/Wq2gcFrI01JAW+paEKDMx/CA==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.5.tgz", + "integrity": "sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==", "license": "MIT", "peer": true, "dependencies": { "@babel/code-frame": "^7.27.1", - "@babel/generator": "^7.28.3", + "@babel/generator": "^7.28.5", "@babel/helper-compilation-targets": "^7.27.2", "@babel/helper-module-transforms": "^7.28.3", "@babel/helpers": "^7.28.4", - "@babel/parser": "^7.28.4", + "@babel/parser": "^7.28.5", "@babel/template": "^7.27.2", - "@babel/traverse": "^7.28.4", - "@babel/types": "^7.28.4", + "@babel/traverse": "^7.28.5", + "@babel/types": "^7.28.5", "@jridgewell/remapping": "^2.3.5", "convert-source-map": "^2.0.0", "debug": "^4.1.0", @@ -5963,14 +5963,14 @@ } }, "node_modules/@babel/generator": { - "version": "7.28.3", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.3.tgz", - "integrity": "sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.5.tgz", + "integrity": "sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==", "license": "MIT", "peer": true, "dependencies": { - "@babel/parser": "^7.28.3", - "@babel/types": "^7.28.2", + "@babel/parser": "^7.28.5", + "@babel/types": "^7.28.5", "@jridgewell/gen-mapping": "^0.3.12", "@jridgewell/trace-mapping": "^0.3.28", "jsesc": "^3.0.2" @@ -6085,9 +6085,9 @@ } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz", - "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", + "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", "license": "MIT", "engines": { "node": ">=6.9.0" @@ -6118,12 +6118,12 @@ } }, "node_modules/@babel/parser": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.4.tgz", - "integrity": "sha512-yZbBqeM6TkpP9du/I2pUZnJsRMGGvOuIrhjzC1AwHwW+6he4mni6Bp/m8ijn0iOuZuPI2BfkCoSRunpyjnrQKg==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.5.tgz", + "integrity": "sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==", "license": "MIT", "dependencies": { - "@babel/types": "^7.28.4" + "@babel/types": "^7.28.5" }, "bin": { "parser": "bin/babel-parser.js" @@ -6396,18 +6396,18 @@ } }, "node_modules/@babel/traverse": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.4.tgz", - "integrity": "sha512-YEzuboP2qvQavAcjgQNVgsvHIDv6ZpwXvcvjmyySP2DIMuByS/6ioU5G9pYrWHM6T2YDfc7xga9iNzYOs12CFQ==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.5.tgz", + "integrity": "sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ==", "license": "MIT", "peer": true, "dependencies": { "@babel/code-frame": "^7.27.1", - "@babel/generator": "^7.28.3", + "@babel/generator": "^7.28.5", "@babel/helper-globals": "^7.28.0", - "@babel/parser": "^7.28.4", + "@babel/parser": "^7.28.5", "@babel/template": "^7.27.2", - "@babel/types": "^7.28.4", + "@babel/types": "^7.28.5", "debug": "^4.3.1" }, "engines": { @@ -6415,13 +6415,13 @@ } }, "node_modules/@babel/types": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.4.tgz", - "integrity": "sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.5.tgz", + "integrity": "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==", "license": "MIT", "dependencies": { "@babel/helper-string-parser": "^7.27.1", - "@babel/helper-validator-identifier": "^7.27.1" + "@babel/helper-validator-identifier": "^7.28.5" }, "engines": { "node": ">=6.9.0" @@ -6525,18 +6525,6 @@ "node": ">=0.1.90" } }, - "node_modules/@common.js/is-network-error": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@common.js/is-network-error/-/is-network-error-1.0.1.tgz", - "integrity": "sha512-dkk7FX8L/JLia5pi+IQ11lCw2D6FTmbWL2iWTHgCbP40/deeXgknlkEQcQ/rOkjwQbqp8RZ4ey/anR17K66sqw==", - "license": "MIT", - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/@cspotcode/source-map-support": { "version": "0.8.1", "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", @@ -9500,75 +9488,51 @@ } }, "node_modules/@n8n/ai-workflow-builder": { - "version": "0.26.1", - "resolved": "https://registry.npmjs.org/@n8n/ai-workflow-builder/-/ai-workflow-builder-0.26.1.tgz", - "integrity": "sha512-D6ypcGnS3n8dq8W7zzU2yDTivLfId4C4e6yIE6tW6val0oe/M4jQ2zdQrPucEmTmOaNDuDizqPKJvAKLiJWeOQ==", + "version": "0.27.1", + "resolved": "https://registry.npmjs.org/@n8n/ai-workflow-builder/-/ai-workflow-builder-0.27.1.tgz", + "integrity": "sha512-lStSmx/Bk75wQQxnlrjYyhg9QZZykyVbQgOQPmpgGJCJnsUD0NvBi2mWx6iGpBkxJ5E0yscq+6CRDzP7Wbv80Q==", "license": "SEE LICENSE IN LICENSE.md", "dependencies": { "@langchain/anthropic": "0.3.26", "@langchain/core": "0.3.68", "@langchain/langgraph": "0.2.74", - "@langchain/openai": "0.6.7", + "@langchain/openai": "0.6.16", "@n8n_io/ai-assistant-sdk": "1.17.0", - "@n8n/backend-common": "^0.26.0", - "@n8n/config": "1.58.0", + "@n8n/backend-common": "^0.27.0", + "@n8n/config": "1.59.0", "@n8n/di": "0.9.0", "langsmith": "^0.3.45", "lodash": "4.17.21", - "n8n-workflow": "1.113.0", + "n8n-workflow": "1.114.0", "picocolors": "1.0.1", "zod": "3.25.67" } }, - "node_modules/@n8n/ai-workflow-builder/node_modules/@langchain/openai": { - "version": "0.6.7", - "resolved": "https://registry.npmjs.org/@langchain/openai/-/openai-0.6.7.tgz", - "integrity": "sha512-mNT9AdfEvDjlWU76hEl1HgTFkgk7yFKdIRgQz3KXKZhEERXhAwYJNgPFq8+HIpgxYSnc12akZ1uo8WPS98ErPQ==", - "license": "MIT", - "dependencies": { - "js-tiktoken": "^1.0.12", - "openai": "^5.12.1", - "zod": "^3.25.32" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@langchain/core": ">=0.3.68 <0.4.0" - } - }, - "node_modules/@n8n/ai-workflow-builder/node_modules/@n8n/config": { - "version": "1.58.0", - "resolved": "https://registry.npmjs.org/@n8n/config/-/config-1.58.0.tgz", - "integrity": "sha512-Wd3epzGTp7tFgOHP8Dq+T0GzzYU5yrSVViEg+uxaRx/F595ksIvS+nvuNKeDEZ/O7kzm8Um577wHAZPYJeJ//A==", + "node_modules/@n8n/ai-workflow-builder/node_modules/n8n-workflow": { + "version": "1.114.0", + "resolved": "https://registry.npmjs.org/n8n-workflow/-/n8n-workflow-1.114.0.tgz", + "integrity": "sha512-qYXkaBmBlJN5E3xn1EnGoVQb6fOXGHiMC4Vs98TZKxaoaLoc2ZXpeTtMOBnKs937mOdeVXpJKqkS1XS7wQ6wQw==", "license": "SEE LICENSE IN LICENSE.md", "dependencies": { - "@n8n/di": "0.9.0", - "reflect-metadata": "0.2.2", + "@n8n/errors": "^0.5.0", + "@n8n/tournament": "1.0.6", + "ast-types": "0.15.2", + "callsites": "3.1.0", + "esprima-next": "5.8.4", + "form-data": "4.0.0", + "jmespath": "0.16.0", + "js-base64": "3.7.2", + "jssha": "3.3.1", + "lodash": "4.17.21", + "luxon": "3.4.4", + "md5": "2.3.0", + "recast": "0.22.0", + "title-case": "3.0.3", + "transliteration": "2.3.5", + "xml2js": "0.6.2", "zod": "3.25.67" } }, - "node_modules/@n8n/ai-workflow-builder/node_modules/openai": { - "version": "5.23.2", - "resolved": "https://registry.npmjs.org/openai/-/openai-5.23.2.tgz", - "integrity": "sha512-MQBzmTulj+MM5O8SKEk/gL8a7s5mktS9zUtAkU257WjvobGc9nKcBuVwjyEEcb9SI8a8Y2G/mzn3vm9n1Jlleg==", - "license": "Apache-2.0", - "bin": { - "openai": "bin/cli" - }, - "peerDependencies": { - "ws": "^8.18.0", - "zod": "^3.23.8" - }, - "peerDependenciesMeta": { - "ws": { - "optional": true - }, - "zod": { - "optional": true - } - } - }, "node_modules/@n8n/ai-workflow-builder/node_modules/picocolors": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", @@ -9585,18 +9549,43 @@ } }, "node_modules/@n8n/api-types": { - "version": "0.50.0", - "resolved": "https://registry.npmjs.org/@n8n/api-types/-/api-types-0.50.0.tgz", - "integrity": "sha512-45RutHm4A5H6Tl/w0iRJW7U52+bBsWBR8RF3A9z7mkXdf8IBSIxkdOZ8J2LSTk1XH+0EZPocJB3G6QXF1BT2ZQ==", + "version": "0.51.1", + "resolved": "https://registry.npmjs.org/@n8n/api-types/-/api-types-0.51.1.tgz", + "integrity": "sha512-6HWBqnsCK4Ju6k6p+ULh/Ofe5Le2/LFEcqj27V56pMeM57mtBSZavr8/IEFuNPE4y3fjYENHGx2dlVI4xVNyVw==", "license": "SEE LICENSE IN LICENSE.md", "dependencies": { - "@n8n/permissions": "0.39.0", - "n8n-workflow": "1.113.0", + "@n8n/permissions": "0.40.0", + "n8n-workflow": "1.114.0", "xss": "1.0.15", "zod": "3.25.67", "zod-class": "0.0.16" } }, + "node_modules/@n8n/api-types/node_modules/n8n-workflow": { + "version": "1.114.0", + "resolved": "https://registry.npmjs.org/n8n-workflow/-/n8n-workflow-1.114.0.tgz", + "integrity": "sha512-qYXkaBmBlJN5E3xn1EnGoVQb6fOXGHiMC4Vs98TZKxaoaLoc2ZXpeTtMOBnKs937mOdeVXpJKqkS1XS7wQ6wQw==", + "license": "SEE LICENSE IN LICENSE.md", + "dependencies": { + "@n8n/errors": "^0.5.0", + "@n8n/tournament": "1.0.6", + "ast-types": "0.15.2", + "callsites": "3.1.0", + "esprima-next": "5.8.4", + "form-data": "4.0.0", + "jmespath": "0.16.0", + "js-base64": "3.7.2", + "jssha": "3.3.1", + "lodash": "4.17.21", + "luxon": "3.4.4", + "md5": "2.3.0", + "recast": "0.22.0", + "title-case": "3.0.3", + "transliteration": "2.3.5", + "xml2js": "0.6.2", + "zod": "3.25.67" + } + }, "node_modules/@n8n/api-types/node_modules/zod": { "version": "3.25.67", "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.67.tgz", @@ -9607,17 +9596,17 @@ } }, "node_modules/@n8n/backend-common": { - "version": "0.26.0", - "resolved": "https://registry.npmjs.org/@n8n/backend-common/-/backend-common-0.26.0.tgz", - "integrity": "sha512-OOCx+uwcXNtnBq6ssAvmJnRaxBxMm8YO2qh4WDkczdiDGBuI4VJrCKDhfllW+P+MSl0n35x2dsFwrAV4zz+W9g==", + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/@n8n/backend-common/-/backend-common-0.27.0.tgz", + "integrity": "sha512-eOs/8JuovmMjYkn4SOq2nhc0xro+2EsIDask58itjjNFxrFVxNGWKhJygPhYv2Vcx5FxfYI915QA8l1ttQsHFQ==", "license": "SEE LICENSE IN LICENSE.md", "dependencies": { - "@n8n/config": "^1.58.0", + "@n8n/config": "^1.59.0", "@n8n/constants": "^0.13.0", - "@n8n/decorators": "^0.26.0", + "@n8n/decorators": "^0.27.0", "@n8n/di": "^0.9.0", "callsites": "3.1.0", - "n8n-workflow": "^1.113.0", + "n8n-workflow": "^1.114.0", "picocolors": "1.0.1", "reflect-metadata": "0.2.2", "winston": "3.14.2", @@ -9667,185 +9656,24 @@ } }, "node_modules/@n8n/backend-test-utils": { - "version": "0.19.0", - "resolved": "https://registry.npmjs.org/@n8n/backend-test-utils/-/backend-test-utils-0.19.0.tgz", - "integrity": "sha512-77ulgtVhGvR+dohNRi9+Ws6BGbEBLKsZsK3vY/2dFfqA64hBnjuKEJnx+1ugUecwrevmwxn0aHVL6wZHuOyyAw==", + "version": "0.20.0", + "resolved": "https://registry.npmjs.org/@n8n/backend-test-utils/-/backend-test-utils-0.20.0.tgz", + "integrity": "sha512-BwluXycD18ox0sc9v9ucOux3Xo1sEfZF49wDyRrwGAxlJPDXasrWOMD4cRwA0PVJIo2MwNPaVVuf/L/7bkPjjg==", "license": "SEE LICENSE IN LICENSE.md", "dependencies": { - "@n8n/backend-common": "^0.26.0", - "@n8n/config": "^1.58.0", + "@n8n/backend-common": "^0.27.0", + "@n8n/config": "^1.59.0", "@n8n/constants": "^0.13.0", - "@n8n/db": "^0.27.0", + "@n8n/db": "^0.28.0", "@n8n/di": "^0.9.0", - "@n8n/permissions": "^0.39.0", - "@n8n/typeorm": "0.3.20-13", + "@n8n/permissions": "^0.40.0", + "@n8n/typeorm": "0.3.20-14", "jest-mock-extended": "^3.0.4", - "n8n-workflow": "^1.113.0", + "n8n-workflow": "^1.114.0", "reflect-metadata": "0.2.2", "uuid": "10.0.0" } }, - "node_modules/@n8n/backend-test-utils/node_modules/@n8n/typeorm": { - "version": "0.3.20-13", - "resolved": "https://registry.npmjs.org/@n8n/typeorm/-/typeorm-0.3.20-13.tgz", - "integrity": "sha512-860ykSQEalBsfpybI3ghMq9KuTKdkg5YnX2u5kyZSzSEtaCrXqYs7+prJyGKK48XVHtSvDDmPsAHXXYndcEgeQ==", - "license": "MIT", - "dependencies": { - "@n8n/p-retry": "6.2.0-2", - "@sqltools/formatter": "^1.2.5", - "app-root-path": "^3.1.0", - "async-mutex": "^0.5.0", - "buffer": "^6.0.3", - "chalk": "^4.1.2", - "dayjs": "^1.11.9", - "debug": "^4.3.4", - "dotenv": "^16.0.3", - "glob": "^10.3.10", - "mkdirp": "^2.1.3", - "reflect-metadata": "^0.2.2", - "sha.js": "^2.4.12", - "tarn": "3.0.2", - "tslib": "^2.5.0", - "uuid": "^9.0.0", - "yargs": "^17.6.2" - }, - "bin": { - "typeorm": "cli.js", - "typeorm-ts-node-commonjs": "cli-ts-node-commonjs.js", - "typeorm-ts-node-esm": "cli-ts-node-esm.js" - }, - "engines": { - "node": ">=16.13.0" - }, - "funding": { - "url": "https://opencollective.com/typeorm" - }, - "peerDependencies": { - "@sentry/node": "<=8.x", - "ioredis": "^5.0.4", - "mysql2": "^2.2.5 || ^3.0.1", - "pg": "^8.5.1", - "pg-native": "^3.0.0", - "pg-query-stream": "^4.0.0", - "redis": "^3.1.1 || ^4.0.0", - "sqlite3": "^5.0.3", - "ts-node": "^10.7.0" - }, - "peerDependenciesMeta": { - "@sentry/node": { - "optional": true - }, - "ioredis": { - "optional": true - }, - "mysql2": { - "optional": true - }, - "pg": { - "optional": true - }, - "pg-native": { - "optional": true - }, - "pg-query-stream": { - "optional": true - }, - "redis": { - "optional": true - }, - "sqlite3": { - "optional": true - }, - "ts-node": { - "optional": true - } - } - }, - "node_modules/@n8n/backend-test-utils/node_modules/@n8n/typeorm/node_modules/uuid": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", - "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", - "funding": [ - "https://github.com/sponsors/broofa", - "https://github.com/sponsors/ctavan" - ], - "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/@n8n/backend-test-utils/node_modules/glob": { - "version": "10.4.5", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", - "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", - "license": "ISC", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@n8n/backend-test-utils/node_modules/jackspeak": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", - "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", - "license": "BlueOak-1.0.0", - "dependencies": { - "@isaacs/cliui": "^8.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" - } - }, - "node_modules/@n8n/backend-test-utils/node_modules/lru-cache": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "license": "ISC" - }, - "node_modules/@n8n/backend-test-utils/node_modules/mkdirp": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-2.1.6.tgz", - "integrity": "sha512-+hEnITedc8LAtIP9u3HJDFIdcLV2vXP33sqLLIzkv1Db1zO/1OxbvYf0Y1OC/S/Qo5dxHXepofhmxL02PsKe+A==", - "license": "MIT", - "bin": { - "mkdirp": "dist/cjs/src/bin.js" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@n8n/backend-test-utils/node_modules/path-scurry": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", - "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", - "license": "BlueOak-1.0.0", - "dependencies": { - "lru-cache": "^10.2.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" - }, - "engines": { - "node": ">=16 || 14 >=14.18" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/@n8n/client-oauth2": { "version": "0.30.0", "resolved": "https://registry.npmjs.org/@n8n/client-oauth2/-/client-oauth2-0.30.0.tgz", @@ -9909,24 +9737,24 @@ "license": "SEE LICENSE IN LICENSE.md" }, "node_modules/@n8n/db": { - "version": "0.27.1", - "resolved": "https://registry.npmjs.org/@n8n/db/-/db-0.27.1.tgz", - "integrity": "sha512-dGRUowfvg7b5AdSjTrx+tS+xG76QYWJbuvmwe58qb0PG4Vz9I+laJT1iw4vxmxkH84axSEQcjA11wfFDHdFgCQ==", + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@n8n/db/-/db-0.28.1.tgz", + "integrity": "sha512-IjW5Lin9Rgl9G+InUFrnLahPe1uBoUv+6ZCi/VuxDlIjvJYZBoft8EScT6S63lLQG/zpCPqPMjGrxR9zSU1H7g==", "license": "SEE LICENSE IN LICENSE.md", "dependencies": { - "@n8n/api-types": "^0.50.0", - "@n8n/backend-common": "^0.26.0", - "@n8n/config": "^1.58.0", + "@n8n/api-types": "^0.51.1", + "@n8n/backend-common": "^0.27.0", + "@n8n/config": "^1.59.0", "@n8n/constants": "^0.13.0", - "@n8n/decorators": "^0.26.0", + "@n8n/decorators": "^0.27.0", "@n8n/di": "^0.9.0", - "@n8n/permissions": "^0.39.0", - "@n8n/typeorm": "0.3.20-13", + "@n8n/permissions": "^0.40.0", + "@n8n/typeorm": "0.3.20-14", "class-validator": "0.14.0", "flatted": "3.2.7", "lodash": "4.17.21", - "n8n-core": "^1.115.1", - "n8n-workflow": "^1.113.0", + "n8n-core": "^1.116.0", + "n8n-workflow": "^1.114.0", "nanoid": "3.3.8", "p-lazy": "3.1.0", "reflect-metadata": "0.2.2", @@ -9935,173 +9763,12 @@ "zod": "3.25.67" } }, - "node_modules/@n8n/db/node_modules/@n8n/typeorm": { - "version": "0.3.20-13", - "resolved": "https://registry.npmjs.org/@n8n/typeorm/-/typeorm-0.3.20-13.tgz", - "integrity": "sha512-860ykSQEalBsfpybI3ghMq9KuTKdkg5YnX2u5kyZSzSEtaCrXqYs7+prJyGKK48XVHtSvDDmPsAHXXYndcEgeQ==", - "license": "MIT", - "dependencies": { - "@n8n/p-retry": "6.2.0-2", - "@sqltools/formatter": "^1.2.5", - "app-root-path": "^3.1.0", - "async-mutex": "^0.5.0", - "buffer": "^6.0.3", - "chalk": "^4.1.2", - "dayjs": "^1.11.9", - "debug": "^4.3.4", - "dotenv": "^16.0.3", - "glob": "^10.3.10", - "mkdirp": "^2.1.3", - "reflect-metadata": "^0.2.2", - "sha.js": "^2.4.12", - "tarn": "3.0.2", - "tslib": "^2.5.0", - "uuid": "^9.0.0", - "yargs": "^17.6.2" - }, - "bin": { - "typeorm": "cli.js", - "typeorm-ts-node-commonjs": "cli-ts-node-commonjs.js", - "typeorm-ts-node-esm": "cli-ts-node-esm.js" - }, - "engines": { - "node": ">=16.13.0" - }, - "funding": { - "url": "https://opencollective.com/typeorm" - }, - "peerDependencies": { - "@sentry/node": "<=8.x", - "ioredis": "^5.0.4", - "mysql2": "^2.2.5 || ^3.0.1", - "pg": "^8.5.1", - "pg-native": "^3.0.0", - "pg-query-stream": "^4.0.0", - "redis": "^3.1.1 || ^4.0.0", - "sqlite3": "^5.0.3", - "ts-node": "^10.7.0" - }, - "peerDependenciesMeta": { - "@sentry/node": { - "optional": true - }, - "ioredis": { - "optional": true - }, - "mysql2": { - "optional": true - }, - "pg": { - "optional": true - }, - "pg-native": { - "optional": true - }, - "pg-query-stream": { - "optional": true - }, - "redis": { - "optional": true - }, - "sqlite3": { - "optional": true - }, - "ts-node": { - "optional": true - } - } - }, - "node_modules/@n8n/db/node_modules/@n8n/typeorm/node_modules/uuid": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", - "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", - "funding": [ - "https://github.com/sponsors/broofa", - "https://github.com/sponsors/ctavan" - ], - "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" - } - }, "node_modules/@n8n/db/node_modules/flatted": { "version": "3.2.7", "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", "license": "ISC" }, - "node_modules/@n8n/db/node_modules/glob": { - "version": "10.4.5", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", - "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", - "license": "ISC", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@n8n/db/node_modules/jackspeak": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", - "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", - "license": "BlueOak-1.0.0", - "dependencies": { - "@isaacs/cliui": "^8.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" - } - }, - "node_modules/@n8n/db/node_modules/lru-cache": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "license": "ISC" - }, - "node_modules/@n8n/db/node_modules/mkdirp": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-2.1.6.tgz", - "integrity": "sha512-+hEnITedc8LAtIP9u3HJDFIdcLV2vXP33sqLLIzkv1Db1zO/1OxbvYf0Y1OC/S/Qo5dxHXepofhmxL02PsKe+A==", - "license": "MIT", - "bin": { - "mkdirp": "dist/cjs/src/bin.js" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@n8n/db/node_modules/path-scurry": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", - "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", - "license": "BlueOak-1.0.0", - "dependencies": { - "lru-cache": "^10.2.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" - }, - "engines": { - "node": ">=16 || 14 >=14.18" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/@n8n/db/node_modules/zod": { "version": "3.25.67", "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.67.tgz", @@ -10112,16 +9779,16 @@ } }, "node_modules/@n8n/decorators": { - "version": "0.26.0", - "resolved": "https://registry.npmjs.org/@n8n/decorators/-/decorators-0.26.0.tgz", - "integrity": "sha512-KdXZkMjk70Ct8W8P0+8djWasI/WMsT3BrQsgiFq26Mw1IqYON8B+mMSDFSuFet1P+IFPYcRu10E78n2YbscW0Q==", + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/@n8n/decorators/-/decorators-0.27.0.tgz", + "integrity": "sha512-1kmKpin9ziyIYqt/zLP9ckNkHDgnJuxAZbTurJuMsFZ3j+dJIc8oyESHTsuvImKR1siqMWvEKxk4FUKyhrasjg==", "license": "SEE LICENSE IN LICENSE.md", "dependencies": { "@n8n/constants": "^0.13.0", "@n8n/di": "^0.9.0", - "@n8n/permissions": "^0.39.0", + "@n8n/permissions": "^0.40.0", "lodash": "4.17.21", - "n8n-workflow": "^1.113.0" + "n8n-workflow": "^1.114.0" } }, "node_modules/@n8n/di": { @@ -10190,9 +9857,9 @@ } }, "node_modules/@n8n/n8n-nodes-langchain": { - "version": "1.116.0", - "resolved": "https://registry.npmjs.org/@n8n/n8n-nodes-langchain/-/n8n-nodes-langchain-1.116.0.tgz", - "integrity": "sha512-S0q+luhPKgm/ftXAnzoInOHcuYPnnvaTVL97aOWxgWpxCJf9nlJbiiZQAeNWu1dfIfWF6S29amYh2zLSyrD4XQ==", + "version": "1.117.0", + "resolved": "https://registry.npmjs.org/@n8n/n8n-nodes-langchain/-/n8n-nodes-langchain-1.117.0.tgz", + "integrity": "sha512-npTZAVaS60sYlAYGXtpao1EYm1GiMidjnPHK27F+CekOv94GiLCwOFLsjXJVAwpEmBPddtH6tgp/E4xIQAtlbw==", "license": "SEE LICENSE IN LICENSE.md", "dependencies": { "@aws-sdk/client-sso-oidc": "3.808.0", @@ -10223,7 +9890,7 @@ "@modelcontextprotocol/sdk": "1.15.1", "@mozilla/readability": "0.6.0", "@n8n/client-oauth2": "0.30.0", - "@n8n/config": "1.59.0", + "@n8n/config": "1.60.0", "@n8n/di": "0.9.0", "@n8n/errors": "^0.5.0", "@n8n/json-schema-to-zod": "1.5.0", @@ -10252,8 +9919,8 @@ "mammoth": "1.11.0", "mime-types": "2.1.35", "mongodb": "6.11.0", - "n8n-nodes-base": "1.115.0", - "n8n-workflow": "1.114.0", + "n8n-nodes-base": "1.116.0", + "n8n-workflow": "1.115.0", "openai": "5.12.2", "pdf-parse": "1.1.1", "pg": "8.12.0", @@ -10301,6 +9968,17 @@ "zod": "^3.24.1" } }, + "node_modules/@n8n/n8n-nodes-langchain/node_modules/@n8n/config": { + "version": "1.60.0", + "resolved": "https://registry.npmjs.org/@n8n/config/-/config-1.60.0.tgz", + "integrity": "sha512-W2JE4HUqEUYBP8tAgAtFpaHQNMSCG8nXE9iAtNzLlgWT5JZFcCPduK38gW5NWk+fFI9F8hlTG2oZvCib60XPng==", + "license": "SEE LICENSE IN LICENSE.md", + "dependencies": { + "@n8n/di": "0.9.0", + "reflect-metadata": "0.2.2", + "zod": "3.25.67" + } + }, "node_modules/@n8n/n8n-nodes-langchain/node_modules/@qdrant/js-client-rest": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/@qdrant/js-client-rest/-/js-client-rest-1.14.1.tgz", @@ -10427,31 +10105,6 @@ } } }, - "node_modules/@n8n/n8n-nodes-langchain/node_modules/n8n-workflow": { - "version": "1.114.0", - "resolved": "https://registry.npmjs.org/n8n-workflow/-/n8n-workflow-1.114.0.tgz", - "integrity": "sha512-qYXkaBmBlJN5E3xn1EnGoVQb6fOXGHiMC4Vs98TZKxaoaLoc2ZXpeTtMOBnKs937mOdeVXpJKqkS1XS7wQ6wQw==", - "license": "SEE LICENSE IN LICENSE.md", - "dependencies": { - "@n8n/errors": "^0.5.0", - "@n8n/tournament": "1.0.6", - "ast-types": "0.15.2", - "callsites": "3.1.0", - "esprima-next": "5.8.4", - "form-data": "4.0.0", - "jmespath": "0.16.0", - "js-base64": "3.7.2", - "jssha": "3.3.1", - "lodash": "4.17.21", - "luxon": "3.4.4", - "md5": "2.3.0", - "recast": "0.22.0", - "title-case": "3.0.3", - "transliteration": "2.3.5", - "xml2js": "0.6.2", - "zod": "3.25.67" - } - }, "node_modules/@n8n/n8n-nodes-langchain/node_modules/openai": { "version": "5.12.2", "resolved": "https://registry.npmjs.org/openai/-/openai-5.12.2.tgz", @@ -10491,33 +10144,10 @@ "zod": "^3.23.3" } }, - "node_modules/@n8n/p-retry": { - "version": "6.2.0-2", - "resolved": "https://registry.npmjs.org/@n8n/p-retry/-/p-retry-6.2.0-2.tgz", - "integrity": "sha512-rbnMnSdEwq2yuYMgzOQ4jTXm+oH7yjN/0ISfB/7O6pUcEPsZt9UW60BYfQ1WWHkKa/evI8vgER2zV5/RC1BupQ==", - "license": "MIT", - "dependencies": { - "@common.js/is-network-error": "1.0.1", - "@types/retry": "^0.12.5", - "retry": "0.13.1" - }, - "engines": { - "node": ">=18.10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@n8n/p-retry/node_modules/@types/retry": { - "version": "0.12.5", - "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.5.tgz", - "integrity": "sha512-3xSjTp3v03X/lSQLkczaN9UIEwJMoMCA1+Nb5HfbJEQWogdeQIyVtTvxPXDQjZ5zws8rFQfVfRdz03ARihPJgw==", - "license": "MIT" - }, "node_modules/@n8n/permissions": { - "version": "0.39.0", - "resolved": "https://registry.npmjs.org/@n8n/permissions/-/permissions-0.39.0.tgz", - "integrity": "sha512-oU3L5LKB1TuraaHqTy6LXFknnrdEX6oEa9gKaIecBCPLcsZVMDTUxSAS8plFnD4DTOgcmAvZuhB0tHhKRZ2rcg==", + "version": "0.40.0", + "resolved": "https://registry.npmjs.org/@n8n/permissions/-/permissions-0.40.0.tgz", + "integrity": "sha512-TD62Mbm28Vcd7JKCScsHdw8lCHEZStalRf0CSFCoPonhah8INOMp6xwMcBOUs4ImAIIUWgQiX3OxPnGp9jnfag==", "license": "SEE LICENSE IN LICENSE.md", "dependencies": { "zod": "3.25.67" @@ -10533,12 +10163,12 @@ } }, "node_modules/@n8n/task-runner": { - "version": "1.52.1", - "resolved": "https://registry.npmjs.org/@n8n/task-runner/-/task-runner-1.52.1.tgz", - "integrity": "sha512-RXdHTzhG69MeWm7zVuSKTtX21fBNaGGw77pOKJ9O2UEbnuP7AUwh3jxe+N/WKTgujN+IjQ9UvRNOR0Od/5xWrA==", + "version": "1.53.0", + "resolved": "https://registry.npmjs.org/@n8n/task-runner/-/task-runner-1.53.0.tgz", + "integrity": "sha512-LOHYmUQJdPXFMDFwVnXirpE0s6zxWSXiapWg2kNxCbMTYpwjgeNXAx90PiOjmK3UE1H8CBU/xvdIsI3S/lnOew==", "license": "SEE LICENSE IN LICENSE.md", "dependencies": { - "@n8n/config": "1.58.0", + "@n8n/config": "1.59.0", "@n8n/di": "0.9.0", "@n8n/errors": "^0.5.0", "@sentry/node": "^9.42.1", @@ -10546,23 +10176,12 @@ "acorn-walk": "8.3.4", "lodash": "4.17.21", "luxon": "3.4.4", - "n8n-core": "1.115.1", - "n8n-workflow": "1.113.0", + "n8n-core": "1.116.0", + "n8n-workflow": "1.114.0", "nanoid": "3.3.8", "ws": "^8.18.0" } }, - "node_modules/@n8n/task-runner/node_modules/@n8n/config": { - "version": "1.58.0", - "resolved": "https://registry.npmjs.org/@n8n/config/-/config-1.58.0.tgz", - "integrity": "sha512-Wd3epzGTp7tFgOHP8Dq+T0GzzYU5yrSVViEg+uxaRx/F595ksIvS+nvuNKeDEZ/O7kzm8Um577wHAZPYJeJ//A==", - "license": "SEE LICENSE IN LICENSE.md", - "dependencies": { - "@n8n/di": "0.9.0", - "reflect-metadata": "0.2.2", - "zod": "3.25.67" - } - }, "node_modules/@n8n/task-runner/node_modules/@opentelemetry/instrumentation-connect": { "version": "0.43.1", "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-connect/-/instrumentation-connect-0.43.1.tgz", @@ -11011,182 +10630,29 @@ "node": ">=0.4.0" } }, - "node_modules/@n8n/task-runner/node_modules/axios": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.12.0.tgz", - "integrity": "sha512-oXTDccv8PcfjZmPGlWsPSwtOJCZ/b6W5jAMCNcfwJbCzDckwG0jrYJFaWH1yvivfCXjVzV/SPDEhMB3Q+DSurg==", - "license": "MIT", - "dependencies": { - "follow-redirects": "^1.15.6", - "form-data": "^4.0.4", - "proxy-from-env": "^1.1.0" - } - }, - "node_modules/@n8n/task-runner/node_modules/axios/node_modules/form-data": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.4.tgz", - "integrity": "sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==", - "license": "MIT", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "es-set-tostringtag": "^2.1.0", - "hasown": "^2.0.2", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/@n8n/task-runner/node_modules/entities": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", - "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/@n8n/task-runner/node_modules/htmlparser2": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-10.0.0.tgz", - "integrity": "sha512-TwAZM+zE5Tq3lrEHvOlvwgj1XLWQCtaaibSN11Q+gGBAS7Y1uZSWwXXRe4iF6OXnaq1riyQAPFOBtYc77Mxq0g==", - "funding": [ - "https://github.com/fb55/htmlparser2?sponsor=1", - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "license": "MIT", - "dependencies": { - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3", - "domutils": "^3.2.1", - "entities": "^6.0.0" - } - }, - "node_modules/@n8n/task-runner/node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@n8n/task-runner/node_modules/n8n-core": { - "version": "1.115.1", - "resolved": "https://registry.npmjs.org/n8n-core/-/n8n-core-1.115.1.tgz", - "integrity": "sha512-05r3SRQQR9B213zECCszoY1dFrkFad8Sly44gzUxgW+aN3ERHGvP1BF5NEgBQ/BkH6b//YFSL9nVlFBSmmJQEQ==", + "node_modules/@n8n/task-runner/node_modules/n8n-workflow": { + "version": "1.114.0", + "resolved": "https://registry.npmjs.org/n8n-workflow/-/n8n-workflow-1.114.0.tgz", + "integrity": "sha512-qYXkaBmBlJN5E3xn1EnGoVQb6fOXGHiMC4Vs98TZKxaoaLoc2ZXpeTtMOBnKs937mOdeVXpJKqkS1XS7wQ6wQw==", "license": "SEE LICENSE IN LICENSE.md", "dependencies": { - "@aws-sdk/client-s3": "3.808.0", - "@langchain/core": "0.3.68", - "@n8n/backend-common": "^0.26.0", - "@n8n/client-oauth2": "0.30.0", - "@n8n/config": "1.58.0", - "@n8n/constants": "0.13.0", - "@n8n/decorators": "0.26.0", - "@n8n/di": "0.9.0", - "@sentry/node": "^9.42.1", - "@sentry/node-native": "^9.42.1", - "axios": "1.12.0", + "@n8n/errors": "^0.5.0", + "@n8n/tournament": "1.0.6", + "ast-types": "0.15.2", "callsites": "3.1.0", - "chardet": "2.0.0", - "cron": "3.1.7", - "fast-glob": "3.2.12", - "file-type": "16.5.4", + "esprima-next": "5.8.4", "form-data": "4.0.0", - "htmlparser2": "^10.0.0", - "http-proxy-agent": "7.0.2", - "https-proxy-agent": "7.0.6", - "iconv-lite": "0.6.3", - "jsonwebtoken": "9.0.2", + "jmespath": "0.16.0", + "js-base64": "3.7.2", + "jssha": "3.3.1", "lodash": "4.17.21", "luxon": "3.4.4", - "mime-types": "2.1.35", - "n8n-workflow": "1.113.0", - "nanoid": "3.3.8", - "oauth-1.0a": "2.2.6", - "p-cancelable": "2.1.1", - "picocolors": "1.0.1", - "pretty-bytes": "5.6.0", - "proxy-from-env": "^1.1.0", - "qs": "6.11.0", - "ssh2": "1.15.0", - "uuid": "10.0.0", - "winston": "3.14.2", + "md5": "2.3.0", + "recast": "0.22.0", + "title-case": "3.0.3", + "transliteration": "2.3.5", "xml2js": "0.6.2", "zod": "3.25.67" - }, - "bin": { - "n8n-copy-static-files": "bin/copy-static-files", - "n8n-generate-metadata": "bin/generate-metadata", - "n8n-generate-translations": "bin/generate-translations" - } - }, - "node_modules/@n8n/task-runner/node_modules/picocolors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", - "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", - "license": "ISC" - }, - "node_modules/@n8n/task-runner/node_modules/qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", - "license": "BSD-3-Clause", - "dependencies": { - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/@n8n/task-runner/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/@n8n/task-runner/node_modules/winston": { - "version": "3.14.2", - "resolved": "https://registry.npmjs.org/winston/-/winston-3.14.2.tgz", - "integrity": "sha512-CO8cdpBB2yqzEf8v895L+GNKYJiEq8eKlHU38af3snQBQ+sdAIUepjMSguOIJC7ICbzm0ZI+Af2If4vIJrtmOg==", - "license": "MIT", - "dependencies": { - "@colors/colors": "^1.6.0", - "@dabh/diagnostics": "^2.0.2", - "async": "^3.2.3", - "is-stream": "^2.0.0", - "logform": "^2.6.0", - "one-time": "^1.0.0", - "readable-stream": "^3.4.0", - "safe-stable-stringify": "^2.3.1", - "stack-trace": "0.0.x", - "triple-beam": "^1.3.0", - "winston-transport": "^4.7.0" - }, - "engines": { - "node": ">= 12.0.0" } }, "node_modules/@n8n/task-runner/node_modules/zod": { @@ -11390,9 +10856,9 @@ } }, "node_modules/@napi-rs/canvas": { - "version": "0.1.80", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas/-/canvas-0.1.80.tgz", - "integrity": "sha512-DxuT1ClnIPts1kQx8FBmkk4BQDTfI5kIzywAaMjQSXfNnra5UFU9PwurXrl+Je3bJ6BGsp/zmshVVFbCmyI+ww==", + "version": "0.1.81", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas/-/canvas-0.1.81.tgz", + "integrity": "sha512-ReCjd5SYI/UKx/olaQLC4GtN6wUQGjlgHXs1lvUvWGXfBMR3Fxnik3cL+OxKN5ithNdoU0/GlCrdKcQDFh2XKQ==", "license": "MIT", "optional": true, "workspaces": [ @@ -11402,22 +10868,22 @@ "node": ">= 10" }, "optionalDependencies": { - "@napi-rs/canvas-android-arm64": "0.1.80", - "@napi-rs/canvas-darwin-arm64": "0.1.80", - "@napi-rs/canvas-darwin-x64": "0.1.80", - "@napi-rs/canvas-linux-arm-gnueabihf": "0.1.80", - "@napi-rs/canvas-linux-arm64-gnu": "0.1.80", - "@napi-rs/canvas-linux-arm64-musl": "0.1.80", - "@napi-rs/canvas-linux-riscv64-gnu": "0.1.80", - "@napi-rs/canvas-linux-x64-gnu": "0.1.80", - "@napi-rs/canvas-linux-x64-musl": "0.1.80", - "@napi-rs/canvas-win32-x64-msvc": "0.1.80" + "@napi-rs/canvas-android-arm64": "0.1.81", + "@napi-rs/canvas-darwin-arm64": "0.1.81", + "@napi-rs/canvas-darwin-x64": "0.1.81", + "@napi-rs/canvas-linux-arm-gnueabihf": "0.1.81", + "@napi-rs/canvas-linux-arm64-gnu": "0.1.81", + "@napi-rs/canvas-linux-arm64-musl": "0.1.81", + "@napi-rs/canvas-linux-riscv64-gnu": "0.1.81", + "@napi-rs/canvas-linux-x64-gnu": "0.1.81", + "@napi-rs/canvas-linux-x64-musl": "0.1.81", + "@napi-rs/canvas-win32-x64-msvc": "0.1.81" } }, "node_modules/@napi-rs/canvas-android-arm64": { - "version": "0.1.80", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-android-arm64/-/canvas-android-arm64-0.1.80.tgz", - "integrity": "sha512-sk7xhN/MoXeuExlggf91pNziBxLPVUqF2CAVnB57KLG/pz7+U5TKG8eXdc3pm0d7Od0WreB6ZKLj37sX9muGOQ==", + "version": "0.1.81", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-android-arm64/-/canvas-android-arm64-0.1.81.tgz", + "integrity": "sha512-78Lz+AUi+MsWupyZjXwpwQrp1QCwncPvRZrdvrROcZ9Gq9grP7LfQZiGdR8LKyHIq3OR18mDP+JESGT15V1nXw==", "cpu": [ "arm64" ], @@ -11431,9 +10897,9 @@ } }, "node_modules/@napi-rs/canvas-darwin-arm64": { - "version": "0.1.80", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-darwin-arm64/-/canvas-darwin-arm64-0.1.80.tgz", - "integrity": "sha512-O64APRTXRUiAz0P8gErkfEr3lipLJgM6pjATwavZ22ebhjYl/SUbpgM0xcWPQBNMP1n29afAC/Us5PX1vg+JNQ==", + "version": "0.1.81", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-darwin-arm64/-/canvas-darwin-arm64-0.1.81.tgz", + "integrity": "sha512-omejuKgHWKDGoh8rsgsyhm/whwxMaryTQjJTd9zD7hiB9/rzcEEJLHnzXWR5ysy4/tTjHaQotE6k2t8eodTLnA==", "cpu": [ "arm64" ], @@ -11447,9 +10913,9 @@ } }, "node_modules/@napi-rs/canvas-darwin-x64": { - "version": "0.1.80", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-darwin-x64/-/canvas-darwin-x64-0.1.80.tgz", - "integrity": "sha512-FqqSU7qFce0Cp3pwnTjVkKjjOtxMqRe6lmINxpIZYaZNnVI0H5FtsaraZJ36SiTHNjZlUB69/HhxNDT1Aaa9vA==", + "version": "0.1.81", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-darwin-x64/-/canvas-darwin-x64-0.1.81.tgz", + "integrity": "sha512-EYfk+co6BElq5DXNH9PBLYDYwc4QsvIVbyrsVHsxVpn4p6Y3/s8MChgC69AGqj3vzZBQ1qx2CRCMtg5cub+XuQ==", "cpu": [ "x64" ], @@ -11463,9 +10929,9 @@ } }, "node_modules/@napi-rs/canvas-linux-arm-gnueabihf": { - "version": "0.1.80", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-arm-gnueabihf/-/canvas-linux-arm-gnueabihf-0.1.80.tgz", - "integrity": "sha512-eyWz0ddBDQc7/JbAtY4OtZ5SpK8tR4JsCYEZjCE3dI8pqoWUC8oMwYSBGCYfsx2w47cQgQCgMVRVTFiiO38hHQ==", + "version": "0.1.81", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-arm-gnueabihf/-/canvas-linux-arm-gnueabihf-0.1.81.tgz", + "integrity": "sha512-teh6Q74CyAcH31yLNQGR9MtXSFxlZa5CI6vvNUISI14gWIJWrhOwUAOly+KRe1aztWR0FWTVSPxM4p5y+06aow==", "cpu": [ "arm" ], @@ -11479,9 +10945,9 @@ } }, "node_modules/@napi-rs/canvas-linux-arm64-gnu": { - "version": "0.1.80", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-arm64-gnu/-/canvas-linux-arm64-gnu-0.1.80.tgz", - "integrity": "sha512-qwA63t8A86bnxhuA/GwOkK3jvb+XTQaTiVML0vAWoHyoZYTjNs7BzoOONDgTnNtr8/yHrq64XXzUoLqDzU+Uuw==", + "version": "0.1.81", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-arm64-gnu/-/canvas-linux-arm64-gnu-0.1.81.tgz", + "integrity": "sha512-AGEopHFYRzJOjxY+2G1RmHPRnuWvO3Qdhq7sIazlSjxb3Z6dZHg7OB/4ZimXaimPjDACm9qWa6t5bn9bhXvkcw==", "cpu": [ "arm64" ], @@ -11495,9 +10961,9 @@ } }, "node_modules/@napi-rs/canvas-linux-arm64-musl": { - "version": "0.1.80", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-arm64-musl/-/canvas-linux-arm64-musl-0.1.80.tgz", - "integrity": "sha512-1XbCOz/ymhj24lFaIXtWnwv/6eFHXDrjP0jYkc6iHQ9q8oXKzUX1Lc6bu+wuGiLhGh2GS/2JlfORC5ZcXimRcg==", + "version": "0.1.81", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-arm64-musl/-/canvas-linux-arm64-musl-0.1.81.tgz", + "integrity": "sha512-Bj3m1cl4GIhsigkdwOxii4g4Ump3/QhNpx85IgAlCCYXpaly6mcsWpuDYEabfIGWOWhDUNBOndaQUPfWK1czOQ==", "cpu": [ "arm64" ], @@ -11511,9 +10977,9 @@ } }, "node_modules/@napi-rs/canvas-linux-riscv64-gnu": { - "version": "0.1.80", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-riscv64-gnu/-/canvas-linux-riscv64-gnu-0.1.80.tgz", - "integrity": "sha512-XTzR125w5ZMs0lJcxRlS1K3P5RaZ9RmUsPtd1uGt+EfDyYMu4c6SEROYsxyatbbu/2+lPe7MPHOO/0a0x7L/gw==", + "version": "0.1.81", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-riscv64-gnu/-/canvas-linux-riscv64-gnu-0.1.81.tgz", + "integrity": "sha512-yg/5NkHykVdwPlD3XObwCa/EswkOwLHswJcI9rHrac+znHsmCSj5AMX/RTU9Z9F6lZTwL60JM2Esit33XhAMiw==", "cpu": [ "riscv64" ], @@ -11527,9 +10993,9 @@ } }, "node_modules/@napi-rs/canvas-linux-x64-gnu": { - "version": "0.1.80", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-x64-gnu/-/canvas-linux-x64-gnu-0.1.80.tgz", - "integrity": "sha512-BeXAmhKg1kX3UCrJsYbdQd3hIMDH/K6HnP/pG2LuITaXhXBiNdh//TVVVVCBbJzVQaV5gK/4ZOCMrQW9mvuTqA==", + "version": "0.1.81", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-x64-gnu/-/canvas-linux-x64-gnu-0.1.81.tgz", + "integrity": "sha512-tPfMpSEBuV5dJSKexO/UZxpOqnYTaNbG8aKa1ek8QsWu+4SJ/foWkaxscra/RUv85vepx6WWDjzBNbNJsTnO0w==", "cpu": [ "x64" ], @@ -11543,9 +11009,9 @@ } }, "node_modules/@napi-rs/canvas-linux-x64-musl": { - "version": "0.1.80", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-x64-musl/-/canvas-linux-x64-musl-0.1.80.tgz", - "integrity": "sha512-x0XvZWdHbkgdgucJsRxprX/4o4sEed7qo9rCQA9ugiS9qE2QvP0RIiEugtZhfLH3cyI+jIRFJHV4Fuz+1BHHMg==", + "version": "0.1.81", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-x64-musl/-/canvas-linux-x64-musl-0.1.81.tgz", + "integrity": "sha512-1L0xnYgzqn8Baef+inPvY4dKqdmw3KCBoe0NEDgezuBZN7MA5xElwifoG8609uNdrMtJ9J6QZarsslLRVqri7g==", "cpu": [ "x64" ], @@ -11559,9 +11025,9 @@ } }, "node_modules/@napi-rs/canvas-win32-x64-msvc": { - "version": "0.1.80", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-win32-x64-msvc/-/canvas-win32-x64-msvc-0.1.80.tgz", - "integrity": "sha512-Z8jPsM6df5V8B1HrCHB05+bDiCxjE9QA//3YrkKIdVDEwn5RKaqOxCJDRJkl48cJbylcrJbW4HxZbTte8juuPg==", + "version": "0.1.81", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-win32-x64-msvc/-/canvas-win32-x64-msvc-0.1.81.tgz", + "integrity": "sha512-57ryVbhm/z7RE9/UVcS7mrLPdlayLesy+9U0Uf6epCoeSGrs99tfieCcgZWFbIgmByQ1AZnNtFI2N6huqDLlWQ==", "cpu": [ "x64" ], @@ -15004,12 +14470,6 @@ "node": ">=18.0.0" } }, - "node_modules/@sqltools/formatter": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/@sqltools/formatter/-/formatter-1.2.5.tgz", - "integrity": "sha512-Uy0+khmZqUrUGm5dmMqVlnvufZRSK0FbYzVgp0UMstm+F5+W2/jnEEQyc9vo1ZR/E5ZI/B1WjjoTqBqwJL6Krw==", - "license": "MIT" - }, "node_modules/@supabase/auth-js": { "version": "2.71.1", "resolved": "https://registry.npmjs.org/@supabase/auth-js/-/auth-js-2.71.1.tgz", @@ -15510,9 +14970,9 @@ "license": "MIT" }, "node_modules/@types/readable-stream": { - "version": "4.0.21", - "resolved": "https://registry.npmjs.org/@types/readable-stream/-/readable-stream-4.0.21.tgz", - "integrity": "sha512-19eKVv9tugr03IgfXlA9UVUVRbW6IuqRO5B92Dl4a6pT7K8uaGrNS0GkxiZD0BOk6PLuXl5FhWl//eX/pzYdTQ==", + "version": "4.0.22", + "resolved": "https://registry.npmjs.org/@types/readable-stream/-/readable-stream-4.0.22.tgz", + "integrity": "sha512-/FFhJpfCLAPwAcN3mFycNUa77ddnr8jTgF5VmSNetaemWB2cIlfCA9t0YTM3JAT0wOcv8D4tjPo7pkDhK3EJIg==", "license": "MIT", "dependencies": { "@types/node": "*" @@ -15672,9 +15132,9 @@ } }, "node_modules/@types/yargs": { - "version": "17.0.33", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.33.tgz", - "integrity": "sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==", + "version": "17.0.34", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.34.tgz", + "integrity": "sha512-KExbHVa92aJpw9WDQvzBaGVE2/Pz+pLZQloT2hjL8IqsZnV62rlPOYvNnLmf/L2dyllfVUOVBj64M0z/46eR2A==", "license": "MIT", "peer": true, "dependencies": { @@ -16943,9 +16403,9 @@ "license": "MIT" }, "node_modules/baseline-browser-mapping": { - "version": "2.8.19", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.8.19.tgz", - "integrity": "sha512-zoKGUdu6vb2jd3YOq0nnhEDQVbPcHhco3UImJrv5dSkvxTc2pl2WjOPsjZXDwPDSl5eghIMuY3R6J9NDKF3KcQ==", + "version": "2.8.20", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.8.20.tgz", + "integrity": "sha512-JMWsdF+O8Orq3EMukbUN1QfbLK9mX2CkUmQBcW2T0s8OmdAUL5LLM/6wFwSrqXzlXB13yhyK9gTKS1rIizOduQ==", "license": "Apache-2.0", "peer": true, "bin": { @@ -17160,9 +16620,9 @@ ] }, "node_modules/browserslist": { - "version": "4.26.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.26.3.tgz", - "integrity": "sha512-lAUU+02RFBuCKQPj/P6NgjlbCnLBMp4UtgTx7vNHd3XSIJF87s9a5rA3aH2yw3GS9DqZAUbOtZdCCiZeVRqt0w==", + "version": "4.27.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.27.0.tgz", + "integrity": "sha512-AXVQwdhot1eqLihwasPElhX2tAZiBjWdJ9i/Zcj2S6QYIjkx62OKSfnobkriB81C3l4w0rVy3Nt4jaTBltYEpw==", "funding": [ { "type": "opencollective", @@ -17180,11 +16640,11 @@ "license": "MIT", "peer": true, "dependencies": { - "baseline-browser-mapping": "^2.8.9", - "caniuse-lite": "^1.0.30001746", - "electron-to-chromium": "^1.5.227", - "node-releases": "^2.0.21", - "update-browserslist-db": "^1.1.3" + "baseline-browser-mapping": "^2.8.19", + "caniuse-lite": "^1.0.30001751", + "electron-to-chromium": "^1.5.238", + "node-releases": "^2.0.26", + "update-browserslist-db": "^1.1.4" }, "bin": { "browserslist": "cli.js" @@ -19113,9 +18573,9 @@ "license": "MIT" }, "node_modules/electron-to-chromium": { - "version": "1.5.238", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.238.tgz", - "integrity": "sha512-khBdc+w/Gv+cS8e/Pbnaw/FXcBUeKrRVik9IxfXtgREOWyJhR4tj43n3amkVogJ/yeQUqzkrZcFhtIxIdqmmcQ==", + "version": "1.5.240", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.240.tgz", + "integrity": "sha512-OBwbZjWgrCOH+g6uJsA2/7Twpas2OlepS9uvByJjR2datRDuKGYeD+nP8lBBks2qnB7bGJNHDUx7c/YLaT3QMQ==", "license": "ISC", "peer": true }, @@ -23738,9 +23198,9 @@ } }, "node_modules/libphonenumber-js": { - "version": "1.12.24", - "resolved": "https://registry.npmjs.org/libphonenumber-js/-/libphonenumber-js-1.12.24.tgz", - "integrity": "sha512-l5IlyL9AONj4voSd7q9xkuQOL4u8Ty44puTic7J88CmdXkxfGsRfoVLXHCxppwehgpb/Chdb80FFehHqjN3ItQ==", + "version": "1.12.25", + "resolved": "https://registry.npmjs.org/libphonenumber-js/-/libphonenumber-js-1.12.25.tgz", + "integrity": "sha512-u90tUu/SEF8b+RaDKCoW7ZNFDakyBtFlX1ex3J+VH+ElWes/UaitJLt/w4jGu8uAE41lltV/s+kMVtywcMEg7g==", "license": "MIT" }, "node_modules/libqp": { @@ -25036,9 +24496,9 @@ } }, "node_modules/n8n": { - "version": "1.116.2", - "resolved": "https://registry.npmjs.org/n8n/-/n8n-1.116.2.tgz", - "integrity": "sha512-adGc7l4aBxZUrpqx1trZfO2kAHqG3S0483fDP+EgqHC4WUfplDLk9tCZtCslRJdG89RWACfa1+4BIkcUsbhoMA==", + "version": "1.117.2", + "resolved": "https://registry.npmjs.org/n8n/-/n8n-1.117.2.tgz", + "integrity": "sha512-iINVxjTS9ye9ByISvIyMsHmBa1fIUEUqhhHrGzL2u1q1qSInliK1IzTYncdNPqpfiodId5PTz6CyvWDSAQXdLA==", "license": "SEE LICENSE IN LICENSE.md", "dependencies": { "@aws-sdk/client-secrets-manager": "3.808.0", @@ -25047,22 +24507,22 @@ "@google-cloud/secret-manager": "5.6.0", "@n8n_io/ai-assistant-sdk": "1.17.0", "@n8n_io/license-sdk": "2.23.0", - "@n8n/ai-workflow-builder": "0.26.1", - "@n8n/api-types": "0.50.0", - "@n8n/backend-common": "^0.26.0", - "@n8n/backend-test-utils": "^0.19.0", + "@n8n/ai-workflow-builder": "0.27.1", + "@n8n/api-types": "0.51.1", + "@n8n/backend-common": "^0.27.0", + "@n8n/backend-test-utils": "^0.20.0", "@n8n/client-oauth2": "0.30.0", - "@n8n/config": "1.58.0", + "@n8n/config": "1.59.0", "@n8n/constants": "^0.13.0", - "@n8n/db": "^0.27.1", - "@n8n/decorators": "0.26.0", + "@n8n/db": "^0.28.1", + "@n8n/decorators": "0.27.0", "@n8n/di": "0.9.0", "@n8n/errors": "0.5.0", "@n8n/localtunnel": "3.0.0", - "@n8n/n8n-nodes-langchain": "1.115.1", - "@n8n/permissions": "0.39.0", - "@n8n/task-runner": "1.52.1", - "@n8n/typeorm": "0.3.20-13", + "@n8n/n8n-nodes-langchain": "1.116.2", + "@n8n/permissions": "0.40.0", + "@n8n/task-runner": "1.53.0", + "@n8n/typeorm": "0.3.20-14", "@parcel/watcher": "^2.5.1", "@rudderstack/rudder-sdk-node": "2.1.4", "@sentry/node": "^9.42.1", @@ -25101,10 +24561,10 @@ "lodash": "4.17.21", "luxon": "3.4.4", "mysql2": "3.15.0", - "n8n-core": "1.115.1", - "n8n-editor-ui": "1.116.1", - "n8n-nodes-base": "1.114.1", - "n8n-workflow": "1.113.0", + "n8n-core": "1.116.0", + "n8n-editor-ui": "1.117.2", + "n8n-nodes-base": "1.115.0", + "n8n-workflow": "1.114.0", "nanoid": "3.3.8", "nodemailer": "6.9.9", "oauth-1.0a": "2.2.6", @@ -25199,46 +24659,6 @@ "n8n-generate-translations": "bin/generate-translations" } }, - "node_modules/n8n-core/node_modules/@n8n/backend-common": { - "version": "0.27.0", - "resolved": "https://registry.npmjs.org/@n8n/backend-common/-/backend-common-0.27.0.tgz", - "integrity": "sha512-eOs/8JuovmMjYkn4SOq2nhc0xro+2EsIDask58itjjNFxrFVxNGWKhJygPhYv2Vcx5FxfYI915QA8l1ttQsHFQ==", - "license": "SEE LICENSE IN LICENSE.md", - "dependencies": { - "@n8n/config": "^1.59.0", - "@n8n/constants": "^0.13.0", - "@n8n/decorators": "^0.27.0", - "@n8n/di": "^0.9.0", - "callsites": "3.1.0", - "n8n-workflow": "^1.114.0", - "picocolors": "1.0.1", - "reflect-metadata": "0.2.2", - "winston": "3.14.2", - "yargs-parser": "21.1.1" - } - }, - "node_modules/n8n-core/node_modules/@n8n/decorators": { - "version": "0.27.0", - "resolved": "https://registry.npmjs.org/@n8n/decorators/-/decorators-0.27.0.tgz", - "integrity": "sha512-1kmKpin9ziyIYqt/zLP9ckNkHDgnJuxAZbTurJuMsFZ3j+dJIc8oyESHTsuvImKR1siqMWvEKxk4FUKyhrasjg==", - "license": "SEE LICENSE IN LICENSE.md", - "dependencies": { - "@n8n/constants": "^0.13.0", - "@n8n/di": "^0.9.0", - "@n8n/permissions": "^0.40.0", - "lodash": "4.17.21", - "n8n-workflow": "^1.114.0" - } - }, - "node_modules/n8n-core/node_modules/@n8n/permissions": { - "version": "0.40.0", - "resolved": "https://registry.npmjs.org/@n8n/permissions/-/permissions-0.40.0.tgz", - "integrity": "sha512-TD62Mbm28Vcd7JKCScsHdw8lCHEZStalRf0CSFCoPonhah8INOMp6xwMcBOUs4ImAIIUWgQiX3OxPnGp9jnfag==", - "license": "SEE LICENSE IN LICENSE.md", - "dependencies": { - "zod": "3.25.67" - } - }, "node_modules/n8n-core/node_modules/@opentelemetry/instrumentation-connect": { "version": "0.43.1", "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-connect/-/instrumentation-connect-0.43.1.tgz", @@ -25837,21 +25257,21 @@ } }, "node_modules/n8n-editor-ui": { - "version": "1.116.1", - "resolved": "https://registry.npmjs.org/n8n-editor-ui/-/n8n-editor-ui-1.116.1.tgz", - "integrity": "sha512-mEtKTItVJyJrhBVB4h8Mcca6Wly9LdYanSpdta5HV/iU3xSiJBH1ixMVbwM3CyHxY6oy0a5CVtnQSsxavAq14Q==", + "version": "1.117.2", + "resolved": "https://registry.npmjs.org/n8n-editor-ui/-/n8n-editor-ui-1.117.2.tgz", + "integrity": "sha512-03Nmp+3/p9sIEC4MBT3QaFzv31KdR6/sLhr0kvXLSJ/8T98PTdy/wh5mvgPQyo0a6zdg0nw5WzbsaMo71mcy6g==", "license": "SEE LICENSE IN LICENSE.md" }, "node_modules/n8n-nodes-base": { - "version": "1.115.0", - "resolved": "https://registry.npmjs.org/n8n-nodes-base/-/n8n-nodes-base-1.115.0.tgz", - "integrity": "sha512-N8XMPOPbgJ1Kc2tY8z19QCFKw3vibJr3fsQeyxuUCoLfK6J/Z0mMqMfvvUGuji1BL6q7K8vlVY7zHvL+YOFRsA==", + "version": "1.116.0", + "resolved": "https://registry.npmjs.org/n8n-nodes-base/-/n8n-nodes-base-1.116.0.tgz", + "integrity": "sha512-owSlhgGLcl2exffiMt7rnvPrJXbsRyv+S5QYA1SWSz5Sn6WgFzNOGnFquqA+XqWux+FHvNT2av+nKl4vfz75hQ==", "license": "SEE LICENSE IN LICENSE.md", "dependencies": { "@aws-sdk/client-sso-oidc": "3.808.0", "@kafkajs/confluent-schema-registry": "3.8.0", "@mozilla/readability": "0.6.0", - "@n8n/config": "1.59.0", + "@n8n/config": "1.60.0", "@n8n/di": "0.9.0", "@n8n/errors": "^0.5.0", "@n8n/imap": "0.15.0", @@ -25893,7 +25313,7 @@ "mqtt": "5.7.2", "mssql": "10.0.2", "mysql2": "3.15.0", - "n8n-workflow": "1.114.0", + "n8n-workflow": "1.115.0", "node-html-markdown": "1.2.0", "node-ssh": "13.2.0", "nodemailer": "6.9.9", @@ -25923,6 +25343,17 @@ "xmlhttprequest-ssl": "3.1.0" } }, + "node_modules/n8n-nodes-base/node_modules/@n8n/config": { + "version": "1.60.0", + "resolved": "https://registry.npmjs.org/@n8n/config/-/config-1.60.0.tgz", + "integrity": "sha512-W2JE4HUqEUYBP8tAgAtFpaHQNMSCG8nXE9iAtNzLlgWT5JZFcCPduK38gW5NWk+fFI9F8hlTG2oZvCib60XPng==", + "license": "SEE LICENSE IN LICENSE.md", + "dependencies": { + "@n8n/di": "0.9.0", + "reflect-metadata": "0.2.2", + "zod": "3.25.67" + } + }, "node_modules/n8n-nodes-base/node_modules/cheerio": { "version": "1.0.0-rc.6", "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.6.tgz", @@ -26128,31 +25559,6 @@ } } }, - "node_modules/n8n-nodes-base/node_modules/n8n-workflow": { - "version": "1.114.0", - "resolved": "https://registry.npmjs.org/n8n-workflow/-/n8n-workflow-1.114.0.tgz", - "integrity": "sha512-qYXkaBmBlJN5E3xn1EnGoVQb6fOXGHiMC4Vs98TZKxaoaLoc2ZXpeTtMOBnKs937mOdeVXpJKqkS1XS7wQ6wQw==", - "license": "SEE LICENSE IN LICENSE.md", - "dependencies": { - "@n8n/errors": "^0.5.0", - "@n8n/tournament": "1.0.6", - "ast-types": "0.15.2", - "callsites": "3.1.0", - "esprima-next": "5.8.4", - "form-data": "4.0.0", - "jmespath": "0.16.0", - "js-base64": "3.7.2", - "jssha": "3.3.1", - "lodash": "4.17.21", - "luxon": "3.4.4", - "md5": "2.3.0", - "recast": "0.22.0", - "title-case": "3.0.3", - "transliteration": "2.3.5", - "xml2js": "0.6.2", - "zod": "3.25.67" - } - }, "node_modules/n8n-nodes-base/node_modules/parse5": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", @@ -26193,9 +25599,9 @@ } }, "node_modules/n8n-workflow": { - "version": "1.113.0", - "resolved": "https://registry.npmjs.org/n8n-workflow/-/n8n-workflow-1.113.0.tgz", - "integrity": "sha512-WiNbm2Us/lSOTioKQZeNdLMGlbOuDMUFVuC0aMVIrQl4YarUmIAyxH7xHkpOoWrahXwbg7PrW27aPkjjAHiEgg==", + "version": "1.115.0", + "resolved": "https://registry.npmjs.org/n8n-workflow/-/n8n-workflow-1.115.0.tgz", + "integrity": "sha512-O1DaB10/3wWBr8xT9DYhYC+7B1yy5gxLDEpe0FgYjaUwNjNqMzqTzz/oVPnmV7DEwdUKj+xri1inZ/YozpQ39Q==", "license": "SEE LICENSE IN LICENSE.md", "dependencies": { "@n8n/errors": "^0.5.0", @@ -26226,87 +25632,10 @@ "url": "https://github.com/sponsors/colinhacks" } }, - "node_modules/n8n/node_modules/@langchain/mistralai": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/@langchain/mistralai/-/mistralai-0.2.1.tgz", - "integrity": "sha512-s91BlNcuxaaZGnVukyl81nwGrWpeE0EYiAdEFoBmZwlT4yLpx+QpPhRsGKrTg/Vm7Nscy6Wd8Xy2PJ93wftMdw==", - "license": "MIT", - "dependencies": { - "@mistralai/mistralai": "^1.3.1", - "uuid": "^10.0.0" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@langchain/core": ">=0.3.58 <0.4.0" - } - }, - "node_modules/n8n/node_modules/@langchain/openai": { - "version": "0.6.7", - "resolved": "https://registry.npmjs.org/@langchain/openai/-/openai-0.6.7.tgz", - "integrity": "sha512-mNT9AdfEvDjlWU76hEl1HgTFkgk7yFKdIRgQz3KXKZhEERXhAwYJNgPFq8+HIpgxYSnc12akZ1uo8WPS98ErPQ==", - "license": "MIT", - "dependencies": { - "js-tiktoken": "^1.0.12", - "openai": "^5.12.1", - "zod": "^3.25.32" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@langchain/core": ">=0.3.68 <0.4.0" - } - }, - "node_modules/n8n/node_modules/@langchain/openai/node_modules/openai": { - "version": "5.23.2", - "resolved": "https://registry.npmjs.org/openai/-/openai-5.23.2.tgz", - "integrity": "sha512-MQBzmTulj+MM5O8SKEk/gL8a7s5mktS9zUtAkU257WjvobGc9nKcBuVwjyEEcb9SI8a8Y2G/mzn3vm9n1Jlleg==", - "license": "Apache-2.0", - "bin": { - "openai": "bin/cli" - }, - "peerDependencies": { - "ws": "^8.18.0", - "zod": "^3.23.8" - }, - "peerDependenciesMeta": { - "ws": { - "optional": true - }, - "zod": { - "optional": true - } - } - }, - "node_modules/n8n/node_modules/@langchain/openai/node_modules/ws": { - "version": "8.18.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz", - "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==", - "license": "MIT", - "optional": true, - "peer": true, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, "node_modules/n8n/node_modules/@modelcontextprotocol/sdk": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.12.0.tgz", - "integrity": "sha512-m//7RlINx1F3sz3KqwY1WWzVgTcYX52HYk4bJ1hkBXV3zccAEth+jRvG8DBRrdaQuRsPAJOx2MH3zaHNCKL7Zg==", + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.15.1.tgz", + "integrity": "sha512-W/XlN9c528yYn+9MQkVjxiTPgPxoxt+oczfjHBDsJx0+59+O7B75Zhsp0B16Xbwbz8ANISDajh6+V7nIcPMc5w==", "license": "MIT", "dependencies": { "ajv": "^6.12.6", @@ -26314,6 +25643,7 @@ "cors": "^2.8.5", "cross-spawn": "^7.0.5", "eventsource": "^3.0.2", + "eventsource-parser": "^3.0.0", "express": "^5.0.1", "express-rate-limit": "^7.5.0", "pkce-challenge": "^5.0.0", @@ -26325,21 +25655,10 @@ "node": ">=18" } }, - "node_modules/n8n/node_modules/@n8n/config": { - "version": "1.58.0", - "resolved": "https://registry.npmjs.org/@n8n/config/-/config-1.58.0.tgz", - "integrity": "sha512-Wd3epzGTp7tFgOHP8Dq+T0GzzYU5yrSVViEg+uxaRx/F595ksIvS+nvuNKeDEZ/O7kzm8Um577wHAZPYJeJ//A==", - "license": "SEE LICENSE IN LICENSE.md", - "dependencies": { - "@n8n/di": "0.9.0", - "reflect-metadata": "0.2.2", - "zod": "3.25.67" - } - }, "node_modules/n8n/node_modules/@n8n/n8n-nodes-langchain": { - "version": "1.115.1", - "resolved": "https://registry.npmjs.org/@n8n/n8n-nodes-langchain/-/n8n-nodes-langchain-1.115.1.tgz", - "integrity": "sha512-ns6rVGS4r3wMbtsSVFQqyy6MpQG/6rCdjPQZrVNGNXbDoFyN9D3RX+9gwKLrcOhhWv36zIk2JL3D9KE/S/DEYw==", + "version": "1.116.2", + "resolved": "https://registry.npmjs.org/@n8n/n8n-nodes-langchain/-/n8n-nodes-langchain-1.116.2.tgz", + "integrity": "sha512-hEss87zI2N4V/PW5M6nQDI2v8UKbUokPYZNxQzZnwHrgjDhYVs+yGWtr6owsERnVqdxuShB13vhhXjr1YRLOEQ==", "license": "SEE LICENSE IN LICENSE.md", "dependencies": { "@aws-sdk/client-sso-oidc": "3.808.0", @@ -26358,23 +25677,23 @@ "@langchain/google-genai": "0.2.17", "@langchain/google-vertexai": "0.2.18", "@langchain/groq": "0.2.3", - "@langchain/mistralai": "0.2.1", + "@langchain/mistralai": "0.2.3", "@langchain/mongodb": "^0.1.0", "@langchain/ollama": "0.2.3", - "@langchain/openai": "0.6.7", + "@langchain/openai": "0.6.16", "@langchain/pinecone": "0.2.0", "@langchain/qdrant": "0.1.2", "@langchain/redis": "0.1.1", "@langchain/textsplitters": "0.1.0", "@langchain/weaviate": "0.2.0", - "@modelcontextprotocol/sdk": "1.12.0", + "@modelcontextprotocol/sdk": "1.15.1", "@mozilla/readability": "0.6.0", "@n8n/client-oauth2": "0.30.0", - "@n8n/config": "1.58.0", + "@n8n/config": "1.59.0", "@n8n/di": "0.9.0", "@n8n/errors": "^0.5.0", "@n8n/json-schema-to-zod": "1.5.0", - "@n8n/typeorm": "0.3.20-13", + "@n8n/typeorm": "0.3.20-14", "@n8n/typescript-config": "1.3.0", "@n8n/vm2": "3.9.25", "@pinecone-database/pinecone": "^5.0.2", @@ -26396,11 +25715,11 @@ "jsdom": "23.0.1", "langchain": "0.3.33", "lodash": "4.17.21", - "mammoth": "1.7.2", + "mammoth": "1.11.0", "mime-types": "2.1.35", "mongodb": "6.11.0", - "n8n-nodes-base": "1.114.1", - "n8n-workflow": "1.113.0", + "n8n-nodes-base": "1.115.0", + "n8n-workflow": "1.114.0", "openai": "5.12.2", "pdf-parse": "1.1.1", "pg": "8.12.0", @@ -26469,107 +25788,6 @@ "zod": "^3.23.3" } }, - "node_modules/n8n/node_modules/@n8n/typeorm": { - "version": "0.3.20-13", - "resolved": "https://registry.npmjs.org/@n8n/typeorm/-/typeorm-0.3.20-13.tgz", - "integrity": "sha512-860ykSQEalBsfpybI3ghMq9KuTKdkg5YnX2u5kyZSzSEtaCrXqYs7+prJyGKK48XVHtSvDDmPsAHXXYndcEgeQ==", - "license": "MIT", - "dependencies": { - "@n8n/p-retry": "6.2.0-2", - "@sqltools/formatter": "^1.2.5", - "app-root-path": "^3.1.0", - "async-mutex": "^0.5.0", - "buffer": "^6.0.3", - "chalk": "^4.1.2", - "dayjs": "^1.11.9", - "debug": "^4.3.4", - "dotenv": "^16.0.3", - "glob": "^10.3.10", - "mkdirp": "^2.1.3", - "reflect-metadata": "^0.2.2", - "sha.js": "^2.4.12", - "tarn": "3.0.2", - "tslib": "^2.5.0", - "uuid": "^9.0.0", - "yargs": "^17.6.2" - }, - "bin": { - "typeorm": "cli.js", - "typeorm-ts-node-commonjs": "cli-ts-node-commonjs.js", - "typeorm-ts-node-esm": "cli-ts-node-esm.js" - }, - "engines": { - "node": ">=16.13.0" - }, - "funding": { - "url": "https://opencollective.com/typeorm" - }, - "peerDependencies": { - "@sentry/node": "<=8.x", - "ioredis": "^5.0.4", - "mysql2": "^2.2.5 || ^3.0.1", - "pg": "^8.5.1", - "pg-native": "^3.0.0", - "pg-query-stream": "^4.0.0", - "redis": "^3.1.1 || ^4.0.0", - "sqlite3": "^5.0.3", - "ts-node": "^10.7.0" - }, - "peerDependenciesMeta": { - "@sentry/node": { - "optional": true - }, - "ioredis": { - "optional": true - }, - "mysql2": { - "optional": true - }, - "pg": { - "optional": true - }, - "pg-native": { - "optional": true - }, - "pg-query-stream": { - "optional": true - }, - "redis": { - "optional": true - }, - "sqlite3": { - "optional": true - }, - "ts-node": { - "optional": true - } - } - }, - "node_modules/n8n/node_modules/@n8n/typeorm/node_modules/dotenv": { - "version": "16.6.1", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.6.1.tgz", - "integrity": "sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://dotenvx.com" - } - }, - "node_modules/n8n/node_modules/@n8n/typeorm/node_modules/uuid": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", - "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", - "funding": [ - "https://github.com/sponsors/broofa", - "https://github.com/sponsors/ctavan" - ], - "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" - } - }, "node_modules/n8n/node_modules/@opentelemetry/instrumentation-connect": { "version": "0.43.1", "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-connect/-/instrumentation-connect-0.43.1.tgz", @@ -27107,15 +26325,6 @@ "@supabase/storage-js": "2.7.1" } }, - "node_modules/n8n/node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "license": "MIT", - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, "node_modules/n8n/node_modules/axios": { "version": "1.12.0", "resolved": "https://registry.npmjs.org/axios/-/axios-1.12.0.tgz", @@ -27143,12 +26352,6 @@ "node": ">= 6" } }, - "node_modules/n8n/node_modules/bluebird": { - "version": "3.4.7", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz", - "integrity": "sha512-iD3898SR7sWVRHbiQv+sHUtHnMvC1o3nW5rAcqnq3uOn07DSAppZYUkIGslDz6gXC7HfunPe7YVBgoEJASPcHA==", - "license": "MIT" - }, "node_modules/n8n/node_modules/cheerio-select": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-1.6.0.tgz", @@ -27165,35 +26368,6 @@ "url": "https://github.com/sponsors/fb55" } }, - "node_modules/n8n/node_modules/cheerio-select/node_modules/domhandler": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", - "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", - "license": "BSD-2-Clause", - "dependencies": { - "domelementtype": "^2.2.0" - }, - "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" - } - }, - "node_modules/n8n/node_modules/cheerio-select/node_modules/domutils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", - "license": "BSD-2-Clause", - "dependencies": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - }, - "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" - } - }, "node_modules/n8n/node_modules/css-select": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", @@ -27210,35 +26384,6 @@ "url": "https://github.com/sponsors/fb55" } }, - "node_modules/n8n/node_modules/css-select/node_modules/domhandler": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", - "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", - "license": "BSD-2-Clause", - "dependencies": { - "domelementtype": "^2.2.0" - }, - "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" - } - }, - "node_modules/n8n/node_modules/css-select/node_modules/domutils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", - "license": "BSD-2-Clause", - "dependencies": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - }, - "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" - } - }, "node_modules/n8n/node_modules/dom-serializer": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", @@ -27253,7 +26398,7 @@ "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" } }, - "node_modules/n8n/node_modules/dom-serializer/node_modules/domhandler": { + "node_modules/n8n/node_modules/domhandler": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", @@ -27268,13 +26413,18 @@ "url": "https://github.com/fb55/domhandler?sponsor=1" } }, - "node_modules/n8n/node_modules/dom-serializer/node_modules/entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "node_modules/n8n/node_modules/domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", "license": "BSD-2-Clause", + "dependencies": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + }, "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" + "url": "https://github.com/fb55/domutils?sponsor=1" } }, "node_modules/n8n/node_modules/dotenv": { @@ -27287,13 +26437,10 @@ } }, "node_modules/n8n/node_modules/entities": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", - "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", "license": "BSD-2-Clause", - "engines": { - "node": ">=0.12" - }, "funding": { "url": "https://github.com/fb55/entities?sponsor=1" } @@ -27310,30 +26457,10 @@ "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", "license": "ISC" }, - "node_modules/n8n/node_modules/glob": { - "version": "10.4.5", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", - "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", - "license": "ISC", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/n8n/node_modules/htmlparser2": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-10.0.0.tgz", - "integrity": "sha512-TwAZM+zE5Tq3lrEHvOlvwgj1XLWQCtaaibSN11Q+gGBAS7Y1uZSWwXXRe4iF6OXnaq1riyQAPFOBtYc77Mxq0g==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", + "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", "funding": [ "https://github.com/fb55/htmlparser2?sponsor=1", { @@ -27343,10 +26470,10 @@ ], "license": "MIT", "dependencies": { - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3", - "domutils": "^3.2.1", - "entities": "^6.0.0" + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" } }, "node_modules/n8n/node_modules/iconv-lite": { @@ -27361,64 +26488,16 @@ "node": ">=0.10.0" } }, - "node_modules/n8n/node_modules/jackspeak": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", - "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", - "license": "BlueOak-1.0.0", - "dependencies": { - "@isaacs/cliui": "^8.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" - } - }, "node_modules/n8n/node_modules/lru-cache": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "license": "ISC" - }, - "node_modules/n8n/node_modules/mammoth": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/mammoth/-/mammoth-1.7.2.tgz", - "integrity": "sha512-MqWU2hcLf1I5QMKyAbfJCvrLxnv5WztrAQyorfZ+WPq7Hk82vZFmvfR2/64ajIPpM4jlq0TXp1xZvp/FFaL1Ug==", - "license": "BSD-2-Clause", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "license": "ISC", "dependencies": { - "@xmldom/xmldom": "^0.8.6", - "argparse": "~1.0.3", - "base64-js": "^1.5.1", - "bluebird": "~3.4.0", - "dingbat-to-unicode": "^1.0.1", - "jszip": "^3.7.1", - "lop": "^0.4.1", - "path-is-absolute": "^1.0.0", - "underscore": "^1.13.1", - "xmlbuilder": "^10.0.0" - }, - "bin": { - "mammoth": "bin/mammoth" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/n8n/node_modules/mkdirp": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-2.1.6.tgz", - "integrity": "sha512-+hEnITedc8LAtIP9u3HJDFIdcLV2vXP33sqLLIzkv1Db1zO/1OxbvYf0Y1OC/S/Qo5dxHXepofhmxL02PsKe+A==", - "license": "MIT", - "bin": { - "mkdirp": "dist/cjs/src/bin.js" + "yallist": "^4.0.0" }, "engines": { "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" } }, "node_modules/n8n/node_modules/mongodb": { @@ -27467,67 +26546,16 @@ } } }, - "node_modules/n8n/node_modules/n8n-core": { - "version": "1.115.1", - "resolved": "https://registry.npmjs.org/n8n-core/-/n8n-core-1.115.1.tgz", - "integrity": "sha512-05r3SRQQR9B213zECCszoY1dFrkFad8Sly44gzUxgW+aN3ERHGvP1BF5NEgBQ/BkH6b//YFSL9nVlFBSmmJQEQ==", - "license": "SEE LICENSE IN LICENSE.md", - "dependencies": { - "@aws-sdk/client-s3": "3.808.0", - "@langchain/core": "0.3.68", - "@n8n/backend-common": "^0.26.0", - "@n8n/client-oauth2": "0.30.0", - "@n8n/config": "1.58.0", - "@n8n/constants": "0.13.0", - "@n8n/decorators": "0.26.0", - "@n8n/di": "0.9.0", - "@sentry/node": "^9.42.1", - "@sentry/node-native": "^9.42.1", - "axios": "1.12.0", - "callsites": "3.1.0", - "chardet": "2.0.0", - "cron": "3.1.7", - "fast-glob": "3.2.12", - "file-type": "16.5.4", - "form-data": "4.0.0", - "htmlparser2": "^10.0.0", - "http-proxy-agent": "7.0.2", - "https-proxy-agent": "7.0.6", - "iconv-lite": "0.6.3", - "jsonwebtoken": "9.0.2", - "lodash": "4.17.21", - "luxon": "3.4.4", - "mime-types": "2.1.35", - "n8n-workflow": "1.113.0", - "nanoid": "3.3.8", - "oauth-1.0a": "2.2.6", - "p-cancelable": "2.1.1", - "picocolors": "1.0.1", - "pretty-bytes": "5.6.0", - "proxy-from-env": "^1.1.0", - "qs": "6.11.0", - "ssh2": "1.15.0", - "uuid": "10.0.0", - "winston": "3.14.2", - "xml2js": "0.6.2", - "zod": "3.25.67" - }, - "bin": { - "n8n-copy-static-files": "bin/copy-static-files", - "n8n-generate-metadata": "bin/generate-metadata", - "n8n-generate-translations": "bin/generate-translations" - } - }, "node_modules/n8n/node_modules/n8n-nodes-base": { - "version": "1.114.1", - "resolved": "https://registry.npmjs.org/n8n-nodes-base/-/n8n-nodes-base-1.114.1.tgz", - "integrity": "sha512-T3w7PnmSn7Ykxektp8D9Ks733+1E24L7ba6FyL5PV8+AIjWmmxRVqEcxBXrHxJfbtc+EiU9+Zr+CLACBoa56jQ==", + "version": "1.115.0", + "resolved": "https://registry.npmjs.org/n8n-nodes-base/-/n8n-nodes-base-1.115.0.tgz", + "integrity": "sha512-N8XMPOPbgJ1Kc2tY8z19QCFKw3vibJr3fsQeyxuUCoLfK6J/Z0mMqMfvvUGuji1BL6q7K8vlVY7zHvL+YOFRsA==", "license": "SEE LICENSE IN LICENSE.md", "dependencies": { "@aws-sdk/client-sso-oidc": "3.808.0", "@kafkajs/confluent-schema-registry": "3.8.0", "@mozilla/readability": "0.6.0", - "@n8n/config": "1.58.0", + "@n8n/config": "1.59.0", "@n8n/di": "0.9.0", "@n8n/errors": "^0.5.0", "@n8n/imap": "0.15.0", @@ -27569,10 +26597,11 @@ "mqtt": "5.7.2", "mssql": "10.0.2", "mysql2": "3.15.0", - "n8n-workflow": "1.113.0", + "n8n-workflow": "1.114.0", "node-html-markdown": "1.2.0", "node-ssh": "13.2.0", "nodemailer": "6.9.9", + "oracledb": "6.9.0", "otpauth": "9.1.1", "pdfjs-dist": "5.3.31", "pg": "8.12.0", @@ -27615,44 +26644,6 @@ "node": ">= 0.12" } }, - "node_modules/n8n/node_modules/n8n-nodes-base/node_modules/domhandler": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", - "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", - "license": "BSD-2-Clause", - "dependencies": { - "domelementtype": "^2.2.0" - }, - "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" - } - }, - "node_modules/n8n/node_modules/n8n-nodes-base/node_modules/domutils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", - "license": "BSD-2-Clause", - "dependencies": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - }, - "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" - } - }, - "node_modules/n8n/node_modules/n8n-nodes-base/node_modules/entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "license": "BSD-2-Clause", - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, "node_modules/n8n/node_modules/n8n-nodes-base/node_modules/eventsource": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-2.0.2.tgz", @@ -27662,23 +26653,29 @@ "node": ">=12.0.0" } }, - "node_modules/n8n/node_modules/n8n-nodes-base/node_modules/htmlparser2": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", - "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", - "funding": [ - "https://github.com/fb55/htmlparser2?sponsor=1", - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "license": "MIT", + "node_modules/n8n/node_modules/n8n-workflow": { + "version": "1.114.0", + "resolved": "https://registry.npmjs.org/n8n-workflow/-/n8n-workflow-1.114.0.tgz", + "integrity": "sha512-qYXkaBmBlJN5E3xn1EnGoVQb6fOXGHiMC4Vs98TZKxaoaLoc2ZXpeTtMOBnKs937mOdeVXpJKqkS1XS7wQ6wQw==", + "license": "SEE LICENSE IN LICENSE.md", "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.0.0", - "domutils": "^2.5.2", - "entities": "^2.0.0" + "@n8n/errors": "^0.5.0", + "@n8n/tournament": "1.0.6", + "ast-types": "0.15.2", + "callsites": "3.1.0", + "esprima-next": "5.8.4", + "form-data": "4.0.0", + "jmespath": "0.16.0", + "js-base64": "3.7.2", + "jssha": "3.3.1", + "lodash": "4.17.21", + "luxon": "3.4.4", + "md5": "2.3.0", + "recast": "0.22.0", + "title-case": "3.0.3", + "transliteration": "2.3.5", + "xml2js": "0.6.2", + "zod": "3.25.67" } }, "node_modules/n8n/node_modules/open": { @@ -27712,43 +26709,12 @@ "parse5": "^6.0.1" } }, - "node_modules/n8n/node_modules/path-scurry": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", - "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", - "license": "BlueOak-1.0.0", - "dependencies": { - "lru-cache": "^10.2.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" - }, - "engines": { - "node": ">=16 || 14 >=14.18" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/n8n/node_modules/picocolors": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", "license": "ISC" }, - "node_modules/n8n/node_modules/qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", - "license": "BSD-3-Clause", - "dependencies": { - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/n8n/node_modules/raw-body": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.0.tgz", @@ -27764,20 +26730,6 @@ "node": ">= 0.8" } }, - "node_modules/n8n/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/n8n/node_modules/semver": { "version": "7.5.4", "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", @@ -27793,46 +26745,6 @@ "node": ">=10" } }, - "node_modules/n8n/node_modules/semver/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/n8n/node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "license": "BSD-3-Clause" - }, - "node_modules/n8n/node_modules/winston": { - "version": "3.14.2", - "resolved": "https://registry.npmjs.org/winston/-/winston-3.14.2.tgz", - "integrity": "sha512-CO8cdpBB2yqzEf8v895L+GNKYJiEq8eKlHU38af3snQBQ+sdAIUepjMSguOIJC7ICbzm0ZI+Af2If4vIJrtmOg==", - "license": "MIT", - "dependencies": { - "@colors/colors": "^1.6.0", - "@dabh/diagnostics": "^2.0.2", - "async": "^3.2.3", - "is-stream": "^2.0.0", - "logform": "^2.6.0", - "one-time": "^1.0.0", - "readable-stream": "^3.4.0", - "safe-stable-stringify": "^2.3.1", - "stack-trace": "0.0.x", - "triple-beam": "^1.3.0", - "winston-transport": "^4.7.0" - }, - "engines": { - "node": ">= 12.0.0" - } - }, "node_modules/n8n/node_modules/ws": { "version": "8.17.1", "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", @@ -33470,9 +32382,9 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", - "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.4.tgz", + "integrity": "sha512-q0SPT4xyU84saUX+tomz1WLkxUbuaJnR1xWt17M7fJtEJigJeWUNGUqrauFXsHnqev9y9JTRGwk13tFBuKby4A==", "funding": [ { "type": "opencollective", diff --git a/package.json b/package.json index 2bd3af7..84e31b1 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "n8n-mcp", - "version": "2.22.7", + "version": "2.22.8", "description": "Integration between n8n workflow automation and Model Context Protocol (MCP)", "main": "dist/index.js", "types": "dist/index.d.ts", @@ -140,15 +140,15 @@ }, "dependencies": { "@modelcontextprotocol/sdk": "^1.20.1", - "@n8n/n8n-nodes-langchain": "^1.115.1", + "@n8n/n8n-nodes-langchain": "^1.116.2", "@supabase/supabase-js": "^2.57.4", "dotenv": "^16.5.0", "express": "^5.1.0", "express-rate-limit": "^7.1.5", "lru-cache": "^11.2.1", - "n8n": "^1.116.2", - "n8n-core": "^1.115.1", - "n8n-workflow": "^1.113.0", + "n8n": "^1.117.2", + "n8n-core": "^1.116.0", + "n8n-workflow": "^1.114.0", "openai": "^4.77.0", "sql.js": "^1.13.0", "tslib": "^2.6.2", diff --git a/package.runtime.json b/package.runtime.json index a56ffbf..e6352a8 100644 --- a/package.runtime.json +++ b/package.runtime.json @@ -1,6 +1,6 @@ { "name": "n8n-mcp-runtime", - "version": "2.22.7", + "version": "2.22.8", "description": "n8n MCP Server Runtime Dependencies Only", "private": true, "dependencies": { diff --git a/scripts/process-batch-metadata.ts b/scripts/process-batch-metadata.ts new file mode 100644 index 0000000..b9c591f --- /dev/null +++ b/scripts/process-batch-metadata.ts @@ -0,0 +1,99 @@ +#!/usr/bin/env ts-node +import * as fs from 'fs'; +import * as path from 'path'; +import { createDatabaseAdapter } from '../src/database/database-adapter'; + +interface BatchResponse { + id: string; + custom_id: string; + response: { + status_code: number; + body: { + choices: Array<{ + message: { + content: string; + }; + }>; + }; + }; + error: any; +} + +async function processBatchMetadata(batchFile: string) { + console.log(`šŸ“„ Processing batch file: ${batchFile}`); + + // Read the JSONL file + const content = fs.readFileSync(batchFile, 'utf-8'); + const lines = content.trim().split('\n'); + + console.log(`šŸ“Š Found ${lines.length} batch responses`); + + // Initialize database + const db = await createDatabaseAdapter('./data/nodes.db'); + + let updated = 0; + let skipped = 0; + let errors = 0; + + for (const line of lines) { + try { + const response: BatchResponse = JSON.parse(line); + + // Extract template ID from custom_id (format: "template-9100") + const templateId = parseInt(response.custom_id.replace('template-', '')); + + // Check for errors + if (response.error || response.response.status_code !== 200) { + console.warn(`āš ļø Template ${templateId}: API error`, response.error); + errors++; + continue; + } + + // Extract metadata from response + const metadataJson = response.response.body.choices[0].message.content; + + // Validate it's valid JSON + JSON.parse(metadataJson); // Will throw if invalid + + // Update database + const stmt = db.prepare(` + UPDATE templates + SET metadata_json = ? + WHERE id = ? + `); + + stmt.run(metadataJson, templateId); + updated++; + + console.log(`āœ… Template ${templateId}: Updated metadata`); + + } catch (error: any) { + console.error(`āŒ Error processing line:`, error.message); + errors++; + } + } + + // Close database + if ('close' in db && typeof db.close === 'function') { + db.close(); + } + + console.log(`\nšŸ“ˆ Summary:`); + console.log(` - Updated: ${updated}`); + console.log(` - Skipped: ${skipped}`); + console.log(` - Errors: ${errors}`); + console.log(` - Total: ${lines.length}`); +} + +// Main +const batchFile = process.argv[2] || '/Users/romualdczlonkowski/Pliki/n8n-mcp/n8n-mcp/docs/batch_68fff7242850819091cfed64f10fb6b4_output.jsonl'; + +processBatchMetadata(batchFile) + .then(() => { + console.log('\nāœ… Batch processing complete!'); + process.exit(0); + }) + .catch((error) => { + console.error('\nāŒ Batch processing failed:', error); + process.exit(1); + }); diff --git a/src/scripts/fetch-templates-robust.ts b/src/scripts/fetch-templates-robust.ts index 3fc9d49..4886d1e 100644 --- a/src/scripts/fetch-templates-robust.ts +++ b/src/scripts/fetch-templates-robust.ts @@ -75,10 +75,15 @@ async function fetchTemplatesRobust() { // Fetch detail const detail = await fetcher.fetchTemplateDetail(template.id); - - // Save immediately - repository.saveTemplate(template, detail); - saved++; + + if (detail !== null) { + // Save immediately + repository.saveTemplate(template, detail); + saved++; + } else { + errors++; + console.error(`\nāŒ Failed to fetch template ${template.id} (${template.name}) after retries`); + } // Rate limiting await new Promise(resolve => setTimeout(resolve, 200)); diff --git a/src/templates/template-fetcher.ts b/src/templates/template-fetcher.ts index 8c33f24..70c4b69 100644 --- a/src/templates/template-fetcher.ts +++ b/src/templates/template-fetcher.ts @@ -40,7 +40,37 @@ export interface TemplateDetail { export class TemplateFetcher { private readonly baseUrl = 'https://api.n8n.io/api/templates'; private readonly pageSize = 250; // Maximum allowed by API - + private readonly maxRetries = 3; + private readonly retryDelay = 1000; // 1 second base delay + + /** + * Retry helper for API calls + */ + private async retryWithBackoff( + fn: () => Promise, + context: string, + maxRetries: number = this.maxRetries + ): Promise { + let lastError: any; + + for (let attempt = 1; attempt <= maxRetries; attempt++) { + try { + return await fn(); + } catch (error: any) { + lastError = error; + + if (attempt < maxRetries) { + const delay = this.retryDelay * attempt; // Exponential backoff + logger.warn(`${context} - Attempt ${attempt}/${maxRetries} failed, retrying in ${delay}ms...`); + await this.sleep(delay); + } + } + } + + logger.error(`${context} - All ${maxRetries} attempts failed, skipping`, lastError); + return null; + } + /** * Fetch all templates and filter to last 12 months * This fetches ALL pages first, then applies date filter locally @@ -73,93 +103,105 @@ export class TemplateFetcher { let page = 1; let hasMore = true; let totalWorkflows = 0; - + logger.info('Starting complete template fetch from n8n.io API'); - + while (hasMore) { - try { - const response = await axios.get(`${this.baseUrl}/search`, { - params: { - page, - rows: this.pageSize - // Note: sort_by parameter doesn't work, templates come in popularity order - } - }); - - const { workflows } = response.data; - totalWorkflows = response.data.totalWorkflows || totalWorkflows; - - allTemplates.push(...workflows); - - // Calculate total pages for better progress reporting - const totalPages = Math.ceil(totalWorkflows / this.pageSize); - - if (progressCallback) { - // Enhanced progress with page information - progressCallback(allTemplates.length, totalWorkflows); - } - - logger.debug(`Fetched page ${page}/${totalPages}: ${workflows.length} templates (total so far: ${allTemplates.length}/${totalWorkflows})`); - - // Check if there are more pages - if (workflows.length < this.pageSize) { - hasMore = false; - } - + const result = await this.retryWithBackoff( + async () => { + const response = await axios.get(`${this.baseUrl}/search`, { + params: { + page, + rows: this.pageSize + // Note: sort_by parameter doesn't work, templates come in popularity order + } + }); + return response.data; + }, + `Fetching templates page ${page}` + ); + + if (result === null) { + // All retries failed for this page, skip it and continue + logger.warn(`Skipping page ${page} after ${this.maxRetries} failed attempts`); page++; - - // Rate limiting - be nice to the API (slightly faster with 250 rows/page) - if (hasMore) { - await this.sleep(300); // 300ms between requests (was 500ms with 100 rows) - } - } catch (error) { - logger.error(`Error fetching templates page ${page}:`, error); - throw error; + continue; + } + + const { workflows } = result; + totalWorkflows = result.totalWorkflows || totalWorkflows; + + allTemplates.push(...workflows); + + // Calculate total pages for better progress reporting + const totalPages = Math.ceil(totalWorkflows / this.pageSize); + + if (progressCallback) { + // Enhanced progress with page information + progressCallback(allTemplates.length, totalWorkflows); + } + + logger.debug(`Fetched page ${page}/${totalPages}: ${workflows.length} templates (total so far: ${allTemplates.length}/${totalWorkflows})`); + + // Check if there are more pages + if (workflows.length < this.pageSize) { + hasMore = false; + } + + page++; + + // Rate limiting - be nice to the API (slightly faster with 250 rows/page) + if (hasMore) { + await this.sleep(300); // 300ms between requests (was 500ms with 100 rows) } } - + logger.info(`Fetched all ${allTemplates.length} templates from n8n.io`); return allTemplates; } - async fetchTemplateDetail(workflowId: number): Promise { - try { - const response = await axios.get(`${this.baseUrl}/workflows/${workflowId}`); - return response.data.workflow; - } catch (error) { - logger.error(`Error fetching template detail for ${workflowId}:`, error); - throw error; - } + async fetchTemplateDetail(workflowId: number): Promise { + const result = await this.retryWithBackoff( + async () => { + const response = await axios.get(`${this.baseUrl}/workflows/${workflowId}`); + return response.data.workflow; + }, + `Fetching template detail for workflow ${workflowId}` + ); + + return result; } async fetchAllTemplateDetails( - workflows: TemplateWorkflow[], + workflows: TemplateWorkflow[], progressCallback?: (current: number, total: number) => void ): Promise> { const details = new Map(); - + let skipped = 0; + logger.info(`Fetching details for ${workflows.length} templates`); - + for (let i = 0; i < workflows.length; i++) { const workflow = workflows[i]; - - try { - const detail = await this.fetchTemplateDetail(workflow.id); + + const detail = await this.fetchTemplateDetail(workflow.id); + + if (detail !== null) { details.set(workflow.id, detail); - - if (progressCallback) { - progressCallback(i + 1, workflows.length); - } - - // Rate limiting (conservative to avoid API throttling) - await this.sleep(150); // 150ms between requests - } catch (error) { - logger.error(`Failed to fetch details for workflow ${workflow.id}:`, error); - // Continue with other templates + } else { + skipped++; + logger.warn(`Skipped workflow ${workflow.id} after ${this.maxRetries} failed attempts`); } + + if (progressCallback) { + progressCallback(i + 1, workflows.length); + } + + // Rate limiting (conservative to avoid API throttling) + await this.sleep(150); // 150ms between requests } - - logger.info(`Successfully fetched ${details.size} template details`); + + logger.info(`Successfully fetched ${details.size} template details (${skipped} skipped)`); return details; } diff --git a/src/templates/template-repository.ts b/src/templates/template-repository.ts index 6db617b..00bbedd 100644 --- a/src/templates/template-repository.ts +++ b/src/templates/template-repository.ts @@ -496,10 +496,17 @@ export class TemplateRepository { // Count node usage const nodeCount: Record = {}; topNodes.forEach(t => { - const nodes = JSON.parse(t.nodes_used); - nodes.forEach((n: string) => { - nodeCount[n] = (nodeCount[n] || 0) + 1; - }); + if (!t.nodes_used) return; + try { + const nodes = JSON.parse(t.nodes_used); + if (Array.isArray(nodes)) { + nodes.forEach((n: string) => { + nodeCount[n] = (nodeCount[n] || 0) + 1; + }); + } + } catch (error) { + logger.warn(`Failed to parse nodes_used for template stats:`, error); + } }); // Get top 10 most used nodes