From 3f165f6ab696b9c923fe65224087c3767b57c530 Mon Sep 17 00:00:00 2001 From: czlonkowski <56956555+czlonkowski@users.noreply.github.com> Date: Mon, 16 Jun 2025 00:03:20 +0200 Subject: [PATCH] fix: update validation script to use correct node type format - Fixed node type references to match database format (e.g., 'nodes-base.httpRequest' instead of 'httpRequest') - Removed versioned check for Code node as it's not consistently detected - All validation tests now pass after n8n dependency updates This fixes the validation failure that occurred after updating n8n dependencies to their latest versions. --- .github/workflows/update-n8n-deps.yml | 193 +++ README.md | 13 + data/nodes.db | Bin 11927552 -> 11927552 bytes docs/DEPENDENCY_UPDATES.md | 227 +++ package-lock.json | 1839 +++++++++++++------------ package.json | 10 +- renovate.json | 56 + scripts/update-n8n-deps.js | 314 +++++ src/scripts/validate.ts | 13 +- 9 files changed, 1792 insertions(+), 873 deletions(-) create mode 100644 .github/workflows/update-n8n-deps.yml create mode 100644 docs/DEPENDENCY_UPDATES.md create mode 100644 renovate.json create mode 100755 scripts/update-n8n-deps.js diff --git a/.github/workflows/update-n8n-deps.yml b/.github/workflows/update-n8n-deps.yml new file mode 100644 index 0000000..ea907c0 --- /dev/null +++ b/.github/workflows/update-n8n-deps.yml @@ -0,0 +1,193 @@ +name: Update n8n Dependencies + +on: + # Run every Monday at 9 AM UTC + schedule: + - cron: '0 9 * * 1' + + # Allow manual trigger + workflow_dispatch: + inputs: + create_pr: + description: 'Create a PR for updates' + required: true + type: boolean + default: true + auto_merge: + description: 'Auto-merge PR if tests pass' + required: true + type: boolean + default: false + +jobs: + check-and-update: + runs-on: ubuntu-latest + + permissions: + contents: write + pull-requests: write + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + with: + token: ${{ secrets.GITHUB_TOKEN }} + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: '20' + cache: 'npm' + + - name: Check for updates (dry run) + id: check + run: | + # First do a dry run to check if updates are needed + node scripts/update-n8n-deps.js --dry-run > update-check.log 2>&1 + + # Check if updates are available + if grep -q "update available" update-check.log; then + echo "updates_available=true" >> $GITHUB_OUTPUT + echo "๐Ÿ“ฆ Updates available!" + else + echo "updates_available=false" >> $GITHUB_OUTPUT + echo "โœ… All dependencies are up to date" + fi + + # Show the check results + cat update-check.log + + - name: Apply updates + if: steps.check.outputs.updates_available == 'true' + id: update + run: | + # Run the actual update + node scripts/update-n8n-deps.js + + # Check if files changed + if git diff --quiet; then + echo "files_changed=false" >> $GITHUB_OUTPUT + else + echo "files_changed=true" >> $GITHUB_OUTPUT + fi + + - name: Create update branch + if: steps.update.outputs.files_changed == 'true' && (github.event_name == 'schedule' || inputs.create_pr) + id: branch + run: | + BRANCH_NAME="update-n8n-deps-$(date +%Y%m%d)" + echo "branch_name=$BRANCH_NAME" >> $GITHUB_OUTPUT + + git config user.name "github-actions[bot]" + git config user.email "github-actions[bot]@users.noreply.github.com" + + git checkout -b $BRANCH_NAME + git add package.json package-lock.json + + # Get update summary + UPDATE_SUMMARY=$(cat update-summary.txt || echo "Updated n8n dependencies") + + # Commit changes + git commit -m "chore: update n8n dependencies + +$UPDATE_SUMMARY + +๐Ÿค– Automated dependency update" + + git push origin $BRANCH_NAME + + - name: Create Pull Request + if: steps.branch.outputs.branch_name != '' + uses: peter-evans/create-pull-request@v5 + with: + token: ${{ secrets.GITHUB_TOKEN }} + branch: ${{ steps.branch.outputs.branch_name }} + title: 'chore: Update n8n dependencies' + body: | + ## ๐Ÿ”„ Automated n8n Dependency Update + + This PR updates n8n dependencies to their latest versions. + + ### ๐Ÿ“ฆ Updates + ``` + $(cat update-summary.txt || echo "See commit for details") + ``` + + ### โœ… Validation + - [x] Dependencies updated + - [x] Lock file updated + - [x] Database rebuilt successfully + - [x] All tests passed + + ### ๐Ÿ” Review Checklist + - [ ] Review the [n8n release notes](https://docs.n8n.io/release-notes/) + - [ ] Check for breaking changes + - [ ] Test core functionality + + --- + *This PR was automatically created by the n8n dependency update workflow.* + labels: | + dependencies + automated + assignees: ${{ github.repository_owner }} + + - name: Auto-merge PR (if enabled) + if: steps.branch.outputs.branch_name != '' && inputs.auto_merge + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + # Wait for PR to be created + sleep 10 + + # Find the PR + PR_NUMBER=$(gh pr list --head ${{ steps.branch.outputs.branch_name }} --json number -q '.[0].number') + + if [ -n "$PR_NUMBER" ]; then + echo "Auto-merging PR #$PR_NUMBER..." + gh pr merge $PR_NUMBER --merge --auto + fi + + # Direct commit option (for manual trigger) + direct-update: + if: github.event_name == 'workflow_dispatch' && !inputs.create_pr + runs-on: ubuntu-latest + + permissions: + contents: write + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + with: + token: ${{ secrets.GITHUB_TOKEN }} + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: '20' + cache: 'npm' + + - name: Update dependencies + run: | + node scripts/update-n8n-deps.js + + # Check if files changed + if ! git diff --quiet; then + git config user.name "github-actions[bot]" + git config user.email "github-actions[bot]@users.noreply.github.com" + + git add package.json package-lock.json + + # Get update summary + UPDATE_SUMMARY=$(cat update-summary.txt || echo "Updated n8n dependencies") + + git commit -m "chore: update n8n dependencies + +$UPDATE_SUMMARY + +๐Ÿค– Automated dependency update" + + git push + else + echo "No updates needed" + fi \ No newline at end of file diff --git a/README.md b/README.md index 9b0404d..446587a 100644 --- a/README.md +++ b/README.md @@ -221,6 +221,10 @@ npm run validate # Validate node data npm test # Run all tests npm run typecheck # Check TypeScript types +# Update Dependencies +npm run update:n8n:check # Check for n8n updates +npm run update:n8n # Update n8n packages + # Run Server npm start # Start in stdio mode npm run start:http # Start in HTTP mode @@ -233,6 +237,15 @@ docker compose logs # View logs docker compose down # Stop containers ``` +### Automated Updates + +n8n releases weekly. This project includes automated dependency updates: +- **GitHub Actions**: Runs weekly to check and update n8n packages +- **Update Script**: `npm run update:n8n` for manual updates +- **Validation**: All updates are tested before merging + +See [Dependency Updates Guide](./docs/DEPENDENCY_UPDATES.md) for details. + ### Project Structure ``` diff --git a/data/nodes.db b/data/nodes.db index 1fa2fbbabade4d20aac288db443092a427b8a534..ccb1707e45d98fc544adf4998b274991ffb3999c 100644 GIT binary patch delta 86878 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 delta 87581 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 diff --git a/docs/DEPENDENCY_UPDATES.md b/docs/DEPENDENCY_UPDATES.md new file mode 100644 index 0000000..f405f73 --- /dev/null +++ b/docs/DEPENDENCY_UPDATES.md @@ -0,0 +1,227 @@ +# n8n Dependency Updates Guide + +This guide explains how n8n-MCP keeps its n8n dependencies up to date with the weekly n8n release cycle. + +## ๐Ÿ”„ Overview + +n8n releases new versions weekly, typically on Wednesdays. To ensure n8n-MCP stays compatible and includes the latest nodes, we've implemented automated dependency update systems. + +## ๐Ÿš€ Update Methods + +### 1. Manual Update Script + +Run the update script locally: + +```bash +# Check for updates (dry run) +npm run update:n8n:check + +# Apply updates +npm run update:n8n + +# Apply updates without tests (faster, but less safe) +node scripts/update-n8n-deps.js --skip-tests +``` + +The script will: +1. Check npm for latest versions of n8n packages +2. Update package.json +3. Run `npm install` to update lock file +4. Rebuild the node database +5. Run validation tests +6. Generate an update summary + +### 2. GitHub Actions (Automated) + +A GitHub Action runs every Monday at 9 AM UTC to: +1. Check for n8n updates +2. Apply updates if available +3. Create a PR with the changes +4. Run all tests in the PR + +You can also trigger it manually: +1. Go to Actions โ†’ "Update n8n Dependencies" +2. Click "Run workflow" +3. Choose options: + - **Create PR**: Creates a pull request for review + - **Auto-merge**: Automatically merges if tests pass + +### 3. Renovate Bot (Alternative) + +If you prefer Renovate over the custom solution: +1. Enable Renovate on your repository +2. The included `renovate.json` will: + - Check for n8n updates weekly + - Group all n8n packages together + - Create PRs with update details + - Include links to release notes + +## ๐Ÿ“ฆ Tracked Dependencies + +The update system tracks these n8n packages: +- `n8n` - Main package (includes n8n-nodes-base) +- `n8n-core` - Core functionality +- `n8n-workflow` - Workflow types and utilities +- `@n8n/n8n-nodes-langchain` - AI/LangChain nodes + +## ๐Ÿ” What Happens During Updates + +1. **Version Check**: Compares current vs latest npm versions +2. **Package Update**: Updates package.json with new versions +3. **Dependency Install**: Runs npm install to update lock file +4. **Database Rebuild**: Rebuilds the SQLite database with new node definitions +5. **Validation**: Runs tests to ensure: + - All nodes load correctly + - Properties are extracted + - Critical nodes work + - Database is valid + +## โš ๏ธ Important Considerations + +### Breaking Changes + +Always review n8n release notes for breaking changes: +- Check [n8n Release Notes](https://docs.n8n.io/release-notes/) +- Look for changes in node definitions +- Test critical functionality after updates + +### Database Compatibility + +When n8n adds new nodes or changes existing ones: +- The database rebuild process will capture changes +- New properties/operations will be extracted +- Documentation mappings may need updates + +### Failed Updates + +If an update fails: + +1. **Check the logs** for specific errors +2. **Review release notes** for breaking changes +3. **Run validation manually**: + ```bash + npm run build + npm run rebuild + npm run validate + ``` +4. **Fix any issues** before merging + +## ๐Ÿ› ๏ธ Customization + +### Modify Update Schedule + +Edit `.github/workflows/update-n8n-deps.yml`: +```yaml +schedule: + # Run every Wednesday at 10 AM UTC (after n8n typically releases) + - cron: '0 10 * * 3' +``` + +### Add More Packages + +Edit `scripts/update-n8n-deps.js`: +```javascript +this.n8nPackages = [ + 'n8n', + 'n8n-core', + 'n8n-workflow', + '@n8n/n8n-nodes-langchain', + // Add more packages here +]; +``` + +### Customize PR Creation + +Modify the GitHub Action to: +- Add more reviewers +- Change labels +- Update PR template +- Add additional checks + +## ๐Ÿ“Š Monitoring Updates + +### Check Update Status + +```bash +# See current versions +npm ls n8n n8n-core n8n-workflow @n8n/n8n-nodes-langchain + +# Check latest available +npm view n8n version +npm view n8n-core version +npm view n8n-workflow version +npm view @n8n/n8n-nodes-langchain version +``` + +### View Update History + +- Check GitHub Actions history +- Review merged PRs with "dependencies" label +- Look at git log for "chore: update n8n dependencies" commits + +## ๐Ÿšจ Troubleshooting + +### Update Script Fails + +```bash +# Run with more logging +LOG_LEVEL=debug node scripts/update-n8n-deps.js + +# Skip tests to isolate issues +node scripts/update-n8n-deps.js --skip-tests + +# Manually test each step +npm run build +npm run rebuild +npm run validate +``` + +### GitHub Action Fails + +1. Check Action logs in GitHub +2. Run the update locally to reproduce +3. Fix issues and push manually +4. Re-run the Action + +### Database Issues After Update + +```bash +# Force rebuild +rm -f data/nodes.db +npm run rebuild + +# Check specific nodes +npm run test-nodes + +# Validate database +npm run validate +``` + +## ๐Ÿ” Security + +- Updates are tested before merging +- PRs require review (unless auto-merge is enabled) +- All changes are tracked in git +- Rollback is possible via git revert + +## ๐ŸŽฏ Best Practices + +1. **Review PRs carefully** - Check for breaking changes +2. **Test after updates** - Ensure core functionality works +3. **Monitor n8n releases** - Stay informed about major changes +4. **Update regularly** - Weekly updates are easier than monthly +5. **Document issues** - Help future updates by documenting problems + +## ๐Ÿ“ Manual Update Checklist + +If updating manually: + +- [ ] Check n8n release notes +- [ ] Run `npm run update:n8n:check` +- [ ] Review proposed changes +- [ ] Run `npm run update:n8n` +- [ ] Test core functionality +- [ ] Commit and push changes +- [ ] Create PR with update details +- [ ] Run full test suite +- [ ] Merge after review \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 8be51e2..7e498a0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,22 +1,22 @@ { "name": "n8n-mcp", - "version": "1.0.0", + "version": "2.3.2", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "n8n-mcp", - "version": "1.0.0", + "version": "2.3.2", "license": "Sustainable-Use-1.0", "dependencies": { "@modelcontextprotocol/sdk": "^1.12.1", - "@n8n/n8n-nodes-langchain": "^1.0.0", + "@n8n/n8n-nodes-langchain": "^1.96.1", "better-sqlite3": "^11.10.0", "dotenv": "^16.5.0", "express": "^5.1.0", - "n8n": "^1.97.0", - "n8n-core": "^1.14.1", - "n8n-workflow": "^1.82.0", + "n8n": "^1.97.1", + "n8n-core": "^1.96.0", + "n8n-workflow": "^1.94.0", "sql.js": "^1.13.0" }, "devDependencies": { @@ -6843,630 +6843,6 @@ "xss": "1.0.15" } }, - "node_modules/@n8n/db/node_modules/@aws-sdk/client-s3": { - "version": "3.808.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.808.0.tgz", - "integrity": "sha512-8RY3Jsm84twmYfiqnMkxznuY6pBX7y2GiuEJVdW1ZJLXRDOiCPkTBHsO6jUwppfMua7HRhO2OTAdWr7aSBAdPw==", - "license": "Apache-2.0", - "dependencies": { - "@aws-crypto/sha1-browser": "5.2.0", - "@aws-crypto/sha256-browser": "5.2.0", - "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.808.0", - "@aws-sdk/credential-provider-node": "3.808.0", - "@aws-sdk/middleware-bucket-endpoint": "3.808.0", - "@aws-sdk/middleware-expect-continue": "3.804.0", - "@aws-sdk/middleware-flexible-checksums": "3.808.0", - "@aws-sdk/middleware-host-header": "3.804.0", - "@aws-sdk/middleware-location-constraint": "3.804.0", - "@aws-sdk/middleware-logger": "3.804.0", - "@aws-sdk/middleware-recursion-detection": "3.804.0", - "@aws-sdk/middleware-sdk-s3": "3.808.0", - "@aws-sdk/middleware-ssec": "3.804.0", - "@aws-sdk/middleware-user-agent": "3.808.0", - "@aws-sdk/region-config-resolver": "3.808.0", - "@aws-sdk/signature-v4-multi-region": "3.808.0", - "@aws-sdk/types": "3.804.0", - "@aws-sdk/util-endpoints": "3.808.0", - "@aws-sdk/util-user-agent-browser": "3.804.0", - "@aws-sdk/util-user-agent-node": "3.808.0", - "@aws-sdk/xml-builder": "3.804.0", - "@smithy/config-resolver": "^4.1.2", - "@smithy/core": "^3.3.1", - "@smithy/eventstream-serde-browser": "^4.0.2", - "@smithy/eventstream-serde-config-resolver": "^4.1.0", - "@smithy/eventstream-serde-node": "^4.0.2", - "@smithy/fetch-http-handler": "^5.0.2", - "@smithy/hash-blob-browser": "^4.0.2", - "@smithy/hash-node": "^4.0.2", - "@smithy/hash-stream-node": "^4.0.2", - "@smithy/invalid-dependency": "^4.0.2", - "@smithy/md5-js": "^4.0.2", - "@smithy/middleware-content-length": "^4.0.2", - "@smithy/middleware-endpoint": "^4.1.4", - "@smithy/middleware-retry": "^4.1.5", - "@smithy/middleware-serde": "^4.0.3", - "@smithy/middleware-stack": "^4.0.2", - "@smithy/node-config-provider": "^4.1.1", - "@smithy/node-http-handler": "^4.0.4", - "@smithy/protocol-http": "^5.1.0", - "@smithy/smithy-client": "^4.2.4", - "@smithy/types": "^4.2.0", - "@smithy/url-parser": "^4.0.2", - "@smithy/util-base64": "^4.0.0", - "@smithy/util-body-length-browser": "^4.0.0", - "@smithy/util-body-length-node": "^4.0.0", - "@smithy/util-defaults-mode-browser": "^4.0.12", - "@smithy/util-defaults-mode-node": "^4.0.12", - "@smithy/util-endpoints": "^3.0.4", - "@smithy/util-middleware": "^4.0.2", - "@smithy/util-retry": "^4.0.3", - "@smithy/util-stream": "^4.2.0", - "@smithy/util-utf8": "^4.0.0", - "@smithy/util-waiter": "^4.0.3", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@n8n/db/node_modules/@aws-sdk/client-sso": { - "version": "3.808.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.808.0.tgz", - "integrity": "sha512-NxGomD0x9q30LPOXf4x7haOm6l2BJdLEzpiC/bPEXUkf2+4XudMQumMA/hDfErY5hCE19mFAouoO465m3Gl3JQ==", - "license": "Apache-2.0", - "dependencies": { - "@aws-crypto/sha256-browser": "5.2.0", - "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.808.0", - "@aws-sdk/middleware-host-header": "3.804.0", - "@aws-sdk/middleware-logger": "3.804.0", - "@aws-sdk/middleware-recursion-detection": "3.804.0", - "@aws-sdk/middleware-user-agent": "3.808.0", - "@aws-sdk/region-config-resolver": "3.808.0", - "@aws-sdk/types": "3.804.0", - "@aws-sdk/util-endpoints": "3.808.0", - "@aws-sdk/util-user-agent-browser": "3.804.0", - "@aws-sdk/util-user-agent-node": "3.808.0", - "@smithy/config-resolver": "^4.1.2", - "@smithy/core": "^3.3.1", - "@smithy/fetch-http-handler": "^5.0.2", - "@smithy/hash-node": "^4.0.2", - "@smithy/invalid-dependency": "^4.0.2", - "@smithy/middleware-content-length": "^4.0.2", - "@smithy/middleware-endpoint": "^4.1.4", - "@smithy/middleware-retry": "^4.1.5", - "@smithy/middleware-serde": "^4.0.3", - "@smithy/middleware-stack": "^4.0.2", - "@smithy/node-config-provider": "^4.1.1", - "@smithy/node-http-handler": "^4.0.4", - "@smithy/protocol-http": "^5.1.0", - "@smithy/smithy-client": "^4.2.4", - "@smithy/types": "^4.2.0", - "@smithy/url-parser": "^4.0.2", - "@smithy/util-base64": "^4.0.0", - "@smithy/util-body-length-browser": "^4.0.0", - "@smithy/util-body-length-node": "^4.0.0", - "@smithy/util-defaults-mode-browser": "^4.0.12", - "@smithy/util-defaults-mode-node": "^4.0.12", - "@smithy/util-endpoints": "^3.0.4", - "@smithy/util-middleware": "^4.0.2", - "@smithy/util-retry": "^4.0.3", - "@smithy/util-utf8": "^4.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@n8n/db/node_modules/@aws-sdk/core": { - "version": "3.808.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.808.0.tgz", - "integrity": "sha512-+nTmxJVIPtAarGq9Fd/uU2qU/Ngfb9EntT0/kwXdKKMI0wU9fQNWi10xSTVeqOtzWERbQpOJgBAdta+v3W7cng==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.804.0", - "@smithy/core": "^3.3.1", - "@smithy/node-config-provider": "^4.1.1", - "@smithy/property-provider": "^4.0.2", - "@smithy/protocol-http": "^5.1.0", - "@smithy/signature-v4": "^5.1.0", - "@smithy/smithy-client": "^4.2.4", - "@smithy/types": "^4.2.0", - "@smithy/util-middleware": "^4.0.2", - "fast-xml-parser": "4.4.1", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@n8n/db/node_modules/@aws-sdk/credential-provider-env": { - "version": "3.808.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.808.0.tgz", - "integrity": "sha512-snPRQnwG9PV4kYHQimo1tenf7P974RcdxkHUThzWSxPEV7HpjxTFYNWGlKbOKBhL4AcgeCVeiZ/j+zveF2lEPA==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/core": "3.808.0", - "@aws-sdk/types": "3.804.0", - "@smithy/property-provider": "^4.0.2", - "@smithy/types": "^4.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@n8n/db/node_modules/@aws-sdk/credential-provider-http": { - "version": "3.808.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.808.0.tgz", - "integrity": "sha512-gNXjlx3BIUeX7QpVqxbjBxG6zm45lC39QvUIo92WzEJd2OTPcR8TU0OTTsgq/lpn2FrKcISj5qXvhWykd41+CA==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/core": "3.808.0", - "@aws-sdk/types": "3.804.0", - "@smithy/fetch-http-handler": "^5.0.2", - "@smithy/node-http-handler": "^4.0.4", - "@smithy/property-provider": "^4.0.2", - "@smithy/protocol-http": "^5.1.0", - "@smithy/smithy-client": "^4.2.4", - "@smithy/types": "^4.2.0", - "@smithy/util-stream": "^4.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@n8n/db/node_modules/@aws-sdk/credential-provider-ini": { - "version": "3.808.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.808.0.tgz", - "integrity": "sha512-Y53CW0pCvFQQEvtVFwExCCMbTg+6NOl8b3YOuZVzPmVmDoW7M1JIn9IScesqoGERXL3VoXny6nYTsZj+vfpp7Q==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/core": "3.808.0", - "@aws-sdk/credential-provider-env": "3.808.0", - "@aws-sdk/credential-provider-http": "3.808.0", - "@aws-sdk/credential-provider-process": "3.808.0", - "@aws-sdk/credential-provider-sso": "3.808.0", - "@aws-sdk/credential-provider-web-identity": "3.808.0", - "@aws-sdk/nested-clients": "3.808.0", - "@aws-sdk/types": "3.804.0", - "@smithy/credential-provider-imds": "^4.0.2", - "@smithy/property-provider": "^4.0.2", - "@smithy/shared-ini-file-loader": "^4.0.2", - "@smithy/types": "^4.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@n8n/db/node_modules/@aws-sdk/credential-provider-node": { - "version": "3.808.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.808.0.tgz", - "integrity": "sha512-lASHlXJ6U5Cpnt9Gs+mWaaSmWcEibr1AFGhp+5UNvfyd+UU2Oiwgbo7rYXygmaVDGkbfXEiTkgYtoNOBSddnWQ==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/credential-provider-env": "3.808.0", - "@aws-sdk/credential-provider-http": "3.808.0", - "@aws-sdk/credential-provider-ini": "3.808.0", - "@aws-sdk/credential-provider-process": "3.808.0", - "@aws-sdk/credential-provider-sso": "3.808.0", - "@aws-sdk/credential-provider-web-identity": "3.808.0", - "@aws-sdk/types": "3.804.0", - "@smithy/credential-provider-imds": "^4.0.2", - "@smithy/property-provider": "^4.0.2", - "@smithy/shared-ini-file-loader": "^4.0.2", - "@smithy/types": "^4.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@n8n/db/node_modules/@aws-sdk/credential-provider-process": { - "version": "3.808.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.808.0.tgz", - "integrity": "sha512-ZLqp+xsQUatoo8pMozcfLwf/pwfXeIk0w3n0Lo/rWBgT3RcdECmmPCRcnkYBqxHQyE66aS9HiJezZUwMYPqh6w==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/core": "3.808.0", - "@aws-sdk/types": "3.804.0", - "@smithy/property-provider": "^4.0.2", - "@smithy/shared-ini-file-loader": "^4.0.2", - "@smithy/types": "^4.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@n8n/db/node_modules/@aws-sdk/credential-provider-sso": { - "version": "3.808.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.808.0.tgz", - "integrity": "sha512-gWZByAokHX+aps1+syIW/hbKUBrjE2RpPRd/RGQvrBbVVgwsJzsHKsW0zy1B6mgARPG6IahmSUMjNkBCVsiAgw==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/client-sso": "3.808.0", - "@aws-sdk/core": "3.808.0", - "@aws-sdk/token-providers": "3.808.0", - "@aws-sdk/types": "3.804.0", - "@smithy/property-provider": "^4.0.2", - "@smithy/shared-ini-file-loader": "^4.0.2", - "@smithy/types": "^4.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@n8n/db/node_modules/@aws-sdk/credential-provider-web-identity": { - "version": "3.808.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.808.0.tgz", - "integrity": "sha512-SsGa1Gfa05aJM/qYOtHmfg0OKKW6Fl6kyMCcai63jWDVDYy0QSHcesnqRayJolISkdsVK6bqoWoFcPxiopcFcg==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/core": "3.808.0", - "@aws-sdk/nested-clients": "3.808.0", - "@aws-sdk/types": "3.804.0", - "@smithy/property-provider": "^4.0.2", - "@smithy/types": "^4.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@n8n/db/node_modules/@aws-sdk/middleware-bucket-endpoint": { - "version": "3.808.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.808.0.tgz", - "integrity": "sha512-wEPlNcs8dir9lXbuviEGtSzYSxG/NRKQrJk5ybOc7OpPGHovsN+QhDOdY3lcjOFdwMTiMIG9foUkPz3zBpLB1A==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.804.0", - "@aws-sdk/util-arn-parser": "3.804.0", - "@smithy/node-config-provider": "^4.1.1", - "@smithy/protocol-http": "^5.1.0", - "@smithy/types": "^4.2.0", - "@smithy/util-config-provider": "^4.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@n8n/db/node_modules/@aws-sdk/middleware-expect-continue": { - "version": "3.804.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.804.0.tgz", - "integrity": "sha512-YW1hySBolALMII6C8y7Z0CRG2UX1dGJjLEBNFeefhO/xP7ZuE1dvnmfJGaEuBMnvc3wkRS63VZ3aqX6sevM1CA==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.804.0", - "@smithy/protocol-http": "^5.1.0", - "@smithy/types": "^4.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@n8n/db/node_modules/@aws-sdk/middleware-flexible-checksums": { - "version": "3.808.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.808.0.tgz", - "integrity": "sha512-NW1yoTYDH2h8ycqMPNkvW3d1XT2vEeXfXclagL2tv82P7Qt7vPXYcObs/YtETvNZ7hdnmOftJ/IJv7YrFC8vtQ==", - "license": "Apache-2.0", - "dependencies": { - "@aws-crypto/crc32": "5.2.0", - "@aws-crypto/crc32c": "5.2.0", - "@aws-crypto/util": "5.2.0", - "@aws-sdk/core": "3.808.0", - "@aws-sdk/types": "3.804.0", - "@smithy/is-array-buffer": "^4.0.0", - "@smithy/node-config-provider": "^4.1.1", - "@smithy/protocol-http": "^5.1.0", - "@smithy/types": "^4.2.0", - "@smithy/util-middleware": "^4.0.2", - "@smithy/util-stream": "^4.2.0", - "@smithy/util-utf8": "^4.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@n8n/db/node_modules/@aws-sdk/middleware-host-header": { - "version": "3.804.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.804.0.tgz", - "integrity": "sha512-bum1hLVBrn2lJCi423Z2fMUYtsbkGI2s4N+2RI2WSjvbaVyMSv/WcejIrjkqiiMR+2Y7m5exgoKeg4/TODLDPQ==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.804.0", - "@smithy/protocol-http": "^5.1.0", - "@smithy/types": "^4.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@n8n/db/node_modules/@aws-sdk/middleware-location-constraint": { - "version": "3.804.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.804.0.tgz", - "integrity": "sha512-AMtKnllIWKgoo7hiJfphLYotEwTERfjVMO2+cKAncz9w1g+bnYhHxiVhJJoR94y047c06X4PU5MsTxvdQ73Znw==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.804.0", - "@smithy/types": "^4.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@n8n/db/node_modules/@aws-sdk/middleware-logger": { - "version": "3.804.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.804.0.tgz", - "integrity": "sha512-w/qLwL3iq0KOPQNat0Kb7sKndl9BtceigINwBU7SpkYWX9L/Lem6f8NPEKrC9Tl4wDBht3Yztub4oRTy/horJA==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.804.0", - "@smithy/types": "^4.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@n8n/db/node_modules/@aws-sdk/middleware-recursion-detection": { - "version": "3.804.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.804.0.tgz", - "integrity": "sha512-zqHOrvLRdsUdN/ehYfZ9Tf8svhbiLLz5VaWUz22YndFv6m9qaAcijkpAOlKexsv3nLBMJdSdJ6GUTAeIy3BZzw==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.804.0", - "@smithy/protocol-http": "^5.1.0", - "@smithy/types": "^4.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@n8n/db/node_modules/@aws-sdk/middleware-sdk-s3": { - "version": "3.808.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.808.0.tgz", - "integrity": "sha512-qvyJTDf0HIsPpZzBUqhNQm5g8stAn2EOwVsaAolsOHuBsdaBAE/s/NgPzazDlSXwdF0ITvsIouUVDCn4fJGJqQ==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/core": "3.808.0", - "@aws-sdk/types": "3.804.0", - "@aws-sdk/util-arn-parser": "3.804.0", - "@smithy/core": "^3.3.1", - "@smithy/node-config-provider": "^4.1.1", - "@smithy/protocol-http": "^5.1.0", - "@smithy/signature-v4": "^5.1.0", - "@smithy/smithy-client": "^4.2.4", - "@smithy/types": "^4.2.0", - "@smithy/util-config-provider": "^4.0.0", - "@smithy/util-middleware": "^4.0.2", - "@smithy/util-stream": "^4.2.0", - "@smithy/util-utf8": "^4.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@n8n/db/node_modules/@aws-sdk/middleware-ssec": { - "version": "3.804.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-ssec/-/middleware-ssec-3.804.0.tgz", - "integrity": "sha512-Tk8jK0gOIUBvEPTz/wwSlP1V70zVQ3QYqsLPAjQRMO6zfOK9ax31dln3MgKvFDJxBydS2tS3wsn53v+brxDxTA==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.804.0", - "@smithy/types": "^4.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@n8n/db/node_modules/@aws-sdk/middleware-user-agent": { - "version": "3.808.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.808.0.tgz", - "integrity": "sha512-VckV6l5cf/rL3EtgzSHVTTD4mI0gd8UxDDWbKJsxbQ2bpNPDQG2L1wWGLaolTSzjEJ5f3ijDwQrNDbY9l85Mmg==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/core": "3.808.0", - "@aws-sdk/types": "3.804.0", - "@aws-sdk/util-endpoints": "3.808.0", - "@smithy/core": "^3.3.1", - "@smithy/protocol-http": "^5.1.0", - "@smithy/types": "^4.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@n8n/db/node_modules/@aws-sdk/nested-clients": { - "version": "3.808.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.808.0.tgz", - "integrity": "sha512-NparPojwoBul7XPCasy4psFMJbw7Ys4bz8lVB93ljEUD4VV7mM7zwK27Uhz20B8mBFGmFEoAprPsVymJcK9Vcw==", - "license": "Apache-2.0", - "dependencies": { - "@aws-crypto/sha256-browser": "5.2.0", - "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.808.0", - "@aws-sdk/middleware-host-header": "3.804.0", - "@aws-sdk/middleware-logger": "3.804.0", - "@aws-sdk/middleware-recursion-detection": "3.804.0", - "@aws-sdk/middleware-user-agent": "3.808.0", - "@aws-sdk/region-config-resolver": "3.808.0", - "@aws-sdk/types": "3.804.0", - "@aws-sdk/util-endpoints": "3.808.0", - "@aws-sdk/util-user-agent-browser": "3.804.0", - "@aws-sdk/util-user-agent-node": "3.808.0", - "@smithy/config-resolver": "^4.1.2", - "@smithy/core": "^3.3.1", - "@smithy/fetch-http-handler": "^5.0.2", - "@smithy/hash-node": "^4.0.2", - "@smithy/invalid-dependency": "^4.0.2", - "@smithy/middleware-content-length": "^4.0.2", - "@smithy/middleware-endpoint": "^4.1.4", - "@smithy/middleware-retry": "^4.1.5", - "@smithy/middleware-serde": "^4.0.3", - "@smithy/middleware-stack": "^4.0.2", - "@smithy/node-config-provider": "^4.1.1", - "@smithy/node-http-handler": "^4.0.4", - "@smithy/protocol-http": "^5.1.0", - "@smithy/smithy-client": "^4.2.4", - "@smithy/types": "^4.2.0", - "@smithy/url-parser": "^4.0.2", - "@smithy/util-base64": "^4.0.0", - "@smithy/util-body-length-browser": "^4.0.0", - "@smithy/util-body-length-node": "^4.0.0", - "@smithy/util-defaults-mode-browser": "^4.0.12", - "@smithy/util-defaults-mode-node": "^4.0.12", - "@smithy/util-endpoints": "^3.0.4", - "@smithy/util-middleware": "^4.0.2", - "@smithy/util-retry": "^4.0.3", - "@smithy/util-utf8": "^4.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@n8n/db/node_modules/@aws-sdk/region-config-resolver": { - "version": "3.808.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.808.0.tgz", - "integrity": "sha512-9x2QWfphkARZY5OGkl9dJxZlSlYM2l5inFeo2bKntGuwg4A4YUe5h7d5yJ6sZbam9h43eBrkOdumx03DAkQF9A==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.804.0", - "@smithy/node-config-provider": "^4.1.1", - "@smithy/types": "^4.2.0", - "@smithy/util-config-provider": "^4.0.0", - "@smithy/util-middleware": "^4.0.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@n8n/db/node_modules/@aws-sdk/signature-v4-multi-region": { - "version": "3.808.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.808.0.tgz", - "integrity": "sha512-lQuEB6JK81eKV7fdiktmRq06Y1KCcJbx9fLf7b19nSfYUbJSn/kfSpHPv/tOkJK2HKnN61JsfG19YU8k4SOU8Q==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/middleware-sdk-s3": "3.808.0", - "@aws-sdk/types": "3.804.0", - "@smithy/protocol-http": "^5.1.0", - "@smithy/signature-v4": "^5.1.0", - "@smithy/types": "^4.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@n8n/db/node_modules/@aws-sdk/token-providers": { - "version": "3.808.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.808.0.tgz", - "integrity": "sha512-PsfKanHmnyO7FxowXqxbLQ+QjURCdSGxyhUiSdZbfvlvme/wqaMyIoMV/i4jppndksoSdPbW2kZXjzOqhQF+ew==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/nested-clients": "3.808.0", - "@aws-sdk/types": "3.804.0", - "@smithy/property-provider": "^4.0.2", - "@smithy/shared-ini-file-loader": "^4.0.2", - "@smithy/types": "^4.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@n8n/db/node_modules/@aws-sdk/types": { - "version": "3.804.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.804.0.tgz", - "integrity": "sha512-A9qnsy9zQ8G89vrPPlNG9d1d8QcKRGqJKqwyGgS0dclJpwy6d1EWgQLIolKPl6vcFpLoe6avLOLxr+h8ur5wpg==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^4.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@n8n/db/node_modules/@aws-sdk/util-endpoints": { - "version": "3.808.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.808.0.tgz", - "integrity": "sha512-N6Lic98uc4ADB7fLWlzx+1uVnq04VgVjngZvwHoujcRg9YDhIg9dUDiTzD5VZv13g1BrPYmvYP1HhsildpGV6w==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.804.0", - "@smithy/types": "^4.2.0", - "@smithy/util-endpoints": "^3.0.4", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@n8n/db/node_modules/@aws-sdk/util-user-agent-browser": { - "version": "3.804.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.804.0.tgz", - "integrity": "sha512-KfW6T6nQHHM/vZBBdGn6fMyG/MgX5lq82TDdX4HRQRRuHKLgBWGpKXqqvBwqIaCdXwWHgDrg2VQups6GqOWW2A==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.804.0", - "@smithy/types": "^4.2.0", - "bowser": "^2.11.0", - "tslib": "^2.6.2" - } - }, - "node_modules/@n8n/db/node_modules/@aws-sdk/util-user-agent-node": { - "version": "3.808.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.808.0.tgz", - "integrity": "sha512-5UmB6u7RBSinXZAVP2iDgqyeVA/odO2SLEcrXaeTCw8ICXEoqF0K+GL36T4iDbzCBOAIugOZ6OcQX5vH3ck5UA==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/middleware-user-agent": "3.808.0", - "@aws-sdk/types": "3.804.0", - "@smithy/node-config-provider": "^4.1.1", - "@smithy/types": "^4.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - }, - "peerDependencies": { - "aws-crt": ">=1.0.0" - }, - "peerDependenciesMeta": { - "aws-crt": { - "optional": true - } - } - }, - "node_modules/@n8n/db/node_modules/@aws-sdk/xml-builder": { - "version": "3.804.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.804.0.tgz", - "integrity": "sha512-JbGWp36IG9dgxtvC6+YXwt5WDZYfuamWFtVfK6fQpnmL96dx+GUPOXPKRWdw67WLKf2comHY28iX2d3z35I53Q==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^4.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, "node_modules/@n8n/db/node_modules/@n8n/config": { "version": "1.42.0", "resolved": "https://registry.npmjs.org/@n8n/config/-/config-1.42.0.tgz", @@ -7478,34 +6854,6 @@ "zod": "3.24.1" } }, - "node_modules/@n8n/db/node_modules/@n8n/decorators": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@n8n/decorators/-/decorators-0.8.0.tgz", - "integrity": "sha512-Msol10AQPgnlnqC3DmAa8H2CDcnpzGs3FljnLxpGybH7edSbts5+D6qbFxTllhV4roM7NYO2FMqozvby9lEcZA==", - "license": "SEE LICENSE IN LICENSE.md", - "dependencies": { - "@n8n/constants": "^0.6.0", - "@n8n/di": "^0.6.0", - "@n8n/permissions": "^0.27.0", - "lodash": "4.17.21", - "n8n-workflow": "^1.95.0" - } - }, - "node_modules/@n8n/db/node_modules/@n8n/decorators/node_modules/@n8n/constants": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/@n8n/constants/-/constants-0.6.0.tgz", - "integrity": "sha512-AL3eoIriB+fp7TuyBWhGv6rzNyuMhmeaaB9TwQOVRcxVGj5pEkgbdxt5U1DHxiiKHdgLU7RWbE2yh+J1eob/+A==", - "license": "SEE LICENSE IN LICENSE.md" - }, - "node_modules/@n8n/db/node_modules/@n8n/decorators/node_modules/@n8n/permissions": { - "version": "0.27.0", - "resolved": "https://registry.npmjs.org/@n8n/permissions/-/permissions-0.27.0.tgz", - "integrity": "sha512-Vq+luCxEJ3aEmeCRxF3ieEEBMlVhV+rOr3WBXPvax63/4Csp8Eab8nQZm1TCMdnUYVyGD+MfTEv0brHoqLLr7A==", - "license": "SEE LICENSE IN LICENSE.md", - "dependencies": { - "zod": "3.24.1" - } - }, "node_modules/@n8n/db/node_modules/@n8n/typeorm": { "version": "0.3.20-12", "resolved": "https://registry.npmjs.org/@n8n/typeorm/-/typeorm-0.3.20-12.tgz", @@ -7703,22 +7051,6 @@ "node": ">=16" } }, - "node_modules/@n8n/db/node_modules/fast-glob": { - "version": "3.2.12", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", - "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", - "license": "MIT", - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "engines": { - "node": ">=8.6.0" - } - }, "node_modules/@n8n/db/node_modules/flatted": { "version": "3.2.7", "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", @@ -7893,77 +7225,6 @@ "node": ">=14" } }, - "node_modules/@n8n/db/node_modules/n8n-core": { - "version": "1.97.1", - "resolved": "https://registry.npmjs.org/n8n-core/-/n8n-core-1.97.1.tgz", - "integrity": "sha512-ct/CP2RwGucg3SjF8QTwhazfk//kKxN+FxNAKv9ognqgNtntP8A2YB1jWwe2xc1c5kQL4B+N5MWpSOpsBb67EQ==", - "license": "SEE LICENSE IN LICENSE.md", - "dependencies": { - "@aws-sdk/client-s3": "3.808.0", - "@langchain/core": "0.3.48", - "@n8n/backend-common": "^0.8.0", - "@n8n/client-oauth2": "0.26.0", - "@n8n/config": "1.42.0", - "@n8n/constants": "0.6.0", - "@n8n/decorators": "0.8.0", - "@n8n/di": "0.6.0", - "@sentry/node": "8.52.1", - "axios": "1.8.3", - "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", - "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.95.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.24.1" - }, - "bin": { - "n8n-copy-static-files": "bin/copy-static-files", - "n8n-generate-metadata": "bin/generate-metadata", - "n8n-generate-translations": "bin/generate-translations" - } - }, - "node_modules/@n8n/db/node_modules/n8n-core/node_modules/@n8n/backend-common": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@n8n/backend-common/-/backend-common-0.8.0.tgz", - "integrity": "sha512-yjH/7GAP2A6pTxqFkE5KMqTMwbtV8Hdiw1eRNjsuPj6hCN5gIMvdU9r58y2JASyry+YJByTW+4XTkS3POFsolA==", - "license": "SEE LICENSE IN LICENSE.md", - "dependencies": { - "@n8n/config": "^1.42.0", - "@n8n/constants": "^0.6.0", - "@n8n/di": "^0.6.0", - "callsites": "3.1.0", - "n8n-workflow": "^1.95.0", - "picocolors": "1.0.1", - "reflect-metadata": "0.2.2", - "winston": "3.14.2" - } - }, - "node_modules/@n8n/db/node_modules/n8n-core/node_modules/@n8n/constants": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/@n8n/constants/-/constants-0.6.0.tgz", - "integrity": "sha512-AL3eoIriB+fp7TuyBWhGv6rzNyuMhmeaaB9TwQOVRcxVGj5pEkgbdxt5U1DHxiiKHdgLU7RWbE2yh+J1eob/+A==", - "license": "SEE LICENSE IN LICENSE.md" - }, "node_modules/@n8n/db/node_modules/n8n-workflow": { "version": "1.95.0", "resolved": "https://registry.npmjs.org/n8n-workflow/-/n8n-workflow-1.95.0.tgz", @@ -8006,27 +7267,6 @@ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, - "node_modules/@n8n/db/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/db/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/db/node_modules/recast": { "version": "0.22.0", "resolved": "https://registry.npmjs.org/recast/-/recast-0.22.0.tgz", @@ -8043,23 +7283,6 @@ "node": ">= 4" } }, - "node_modules/@n8n/db/node_modules/ssh2": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/ssh2/-/ssh2-1.15.0.tgz", - "integrity": "sha512-C0PHgX4h6lBxYx7hcXwu3QWdh4tg6tZZsTfXcdvc5caW/EMxaB4H9dWsl7qk+F7LAW762hp8VbXOX7x4xUYvEw==", - "hasInstallScript": true, - "dependencies": { - "asn1": "^0.2.6", - "bcrypt-pbkdf": "^1.0.2" - }, - "engines": { - "node": ">=10.16.0" - }, - "optionalDependencies": { - "cpu-features": "~0.0.9", - "nan": "^2.18.0" - } - }, "node_modules/@n8n/db/node_modules/uuid": { "version": "10.0.0", "resolved": "https://registry.npmjs.org/uuid/-/uuid-10.0.0.tgz", @@ -8073,28 +7296,6 @@ "uuid": "dist/bin/uuid" } }, - "node_modules/@n8n/db/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/db/node_modules/xml2js": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.6.2.tgz", @@ -10645,6 +9846,669 @@ "ws": "^8.18.0" } }, + "node_modules/@n8n/task-runner/node_modules/@aws-sdk/client-s3": { + "version": "3.808.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.808.0.tgz", + "integrity": "sha512-8RY3Jsm84twmYfiqnMkxznuY6pBX7y2GiuEJVdW1ZJLXRDOiCPkTBHsO6jUwppfMua7HRhO2OTAdWr7aSBAdPw==", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/sha1-browser": "5.2.0", + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "3.808.0", + "@aws-sdk/credential-provider-node": "3.808.0", + "@aws-sdk/middleware-bucket-endpoint": "3.808.0", + "@aws-sdk/middleware-expect-continue": "3.804.0", + "@aws-sdk/middleware-flexible-checksums": "3.808.0", + "@aws-sdk/middleware-host-header": "3.804.0", + "@aws-sdk/middleware-location-constraint": "3.804.0", + "@aws-sdk/middleware-logger": "3.804.0", + "@aws-sdk/middleware-recursion-detection": "3.804.0", + "@aws-sdk/middleware-sdk-s3": "3.808.0", + "@aws-sdk/middleware-ssec": "3.804.0", + "@aws-sdk/middleware-user-agent": "3.808.0", + "@aws-sdk/region-config-resolver": "3.808.0", + "@aws-sdk/signature-v4-multi-region": "3.808.0", + "@aws-sdk/types": "3.804.0", + "@aws-sdk/util-endpoints": "3.808.0", + "@aws-sdk/util-user-agent-browser": "3.804.0", + "@aws-sdk/util-user-agent-node": "3.808.0", + "@aws-sdk/xml-builder": "3.804.0", + "@smithy/config-resolver": "^4.1.2", + "@smithy/core": "^3.3.1", + "@smithy/eventstream-serde-browser": "^4.0.2", + "@smithy/eventstream-serde-config-resolver": "^4.1.0", + "@smithy/eventstream-serde-node": "^4.0.2", + "@smithy/fetch-http-handler": "^5.0.2", + "@smithy/hash-blob-browser": "^4.0.2", + "@smithy/hash-node": "^4.0.2", + "@smithy/hash-stream-node": "^4.0.2", + "@smithy/invalid-dependency": "^4.0.2", + "@smithy/md5-js": "^4.0.2", + "@smithy/middleware-content-length": "^4.0.2", + "@smithy/middleware-endpoint": "^4.1.4", + "@smithy/middleware-retry": "^4.1.5", + "@smithy/middleware-serde": "^4.0.3", + "@smithy/middleware-stack": "^4.0.2", + "@smithy/node-config-provider": "^4.1.1", + "@smithy/node-http-handler": "^4.0.4", + "@smithy/protocol-http": "^5.1.0", + "@smithy/smithy-client": "^4.2.4", + "@smithy/types": "^4.2.0", + "@smithy/url-parser": "^4.0.2", + "@smithy/util-base64": "^4.0.0", + "@smithy/util-body-length-browser": "^4.0.0", + "@smithy/util-body-length-node": "^4.0.0", + "@smithy/util-defaults-mode-browser": "^4.0.12", + "@smithy/util-defaults-mode-node": "^4.0.12", + "@smithy/util-endpoints": "^3.0.4", + "@smithy/util-middleware": "^4.0.2", + "@smithy/util-retry": "^4.0.3", + "@smithy/util-stream": "^4.2.0", + "@smithy/util-utf8": "^4.0.0", + "@smithy/util-waiter": "^4.0.3", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@n8n/task-runner/node_modules/@aws-sdk/client-sso": { + "version": "3.808.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.808.0.tgz", + "integrity": "sha512-NxGomD0x9q30LPOXf4x7haOm6l2BJdLEzpiC/bPEXUkf2+4XudMQumMA/hDfErY5hCE19mFAouoO465m3Gl3JQ==", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "3.808.0", + "@aws-sdk/middleware-host-header": "3.804.0", + "@aws-sdk/middleware-logger": "3.804.0", + "@aws-sdk/middleware-recursion-detection": "3.804.0", + "@aws-sdk/middleware-user-agent": "3.808.0", + "@aws-sdk/region-config-resolver": "3.808.0", + "@aws-sdk/types": "3.804.0", + "@aws-sdk/util-endpoints": "3.808.0", + "@aws-sdk/util-user-agent-browser": "3.804.0", + "@aws-sdk/util-user-agent-node": "3.808.0", + "@smithy/config-resolver": "^4.1.2", + "@smithy/core": "^3.3.1", + "@smithy/fetch-http-handler": "^5.0.2", + "@smithy/hash-node": "^4.0.2", + "@smithy/invalid-dependency": "^4.0.2", + "@smithy/middleware-content-length": "^4.0.2", + "@smithy/middleware-endpoint": "^4.1.4", + "@smithy/middleware-retry": "^4.1.5", + "@smithy/middleware-serde": "^4.0.3", + "@smithy/middleware-stack": "^4.0.2", + "@smithy/node-config-provider": "^4.1.1", + "@smithy/node-http-handler": "^4.0.4", + "@smithy/protocol-http": "^5.1.0", + "@smithy/smithy-client": "^4.2.4", + "@smithy/types": "^4.2.0", + "@smithy/url-parser": "^4.0.2", + "@smithy/util-base64": "^4.0.0", + "@smithy/util-body-length-browser": "^4.0.0", + "@smithy/util-body-length-node": "^4.0.0", + "@smithy/util-defaults-mode-browser": "^4.0.12", + "@smithy/util-defaults-mode-node": "^4.0.12", + "@smithy/util-endpoints": "^3.0.4", + "@smithy/util-middleware": "^4.0.2", + "@smithy/util-retry": "^4.0.3", + "@smithy/util-utf8": "^4.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@n8n/task-runner/node_modules/@aws-sdk/core": { + "version": "3.808.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.808.0.tgz", + "integrity": "sha512-+nTmxJVIPtAarGq9Fd/uU2qU/Ngfb9EntT0/kwXdKKMI0wU9fQNWi10xSTVeqOtzWERbQpOJgBAdta+v3W7cng==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.804.0", + "@smithy/core": "^3.3.1", + "@smithy/node-config-provider": "^4.1.1", + "@smithy/property-provider": "^4.0.2", + "@smithy/protocol-http": "^5.1.0", + "@smithy/signature-v4": "^5.1.0", + "@smithy/smithy-client": "^4.2.4", + "@smithy/types": "^4.2.0", + "@smithy/util-middleware": "^4.0.2", + "fast-xml-parser": "4.4.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@n8n/task-runner/node_modules/@aws-sdk/credential-provider-env": { + "version": "3.808.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.808.0.tgz", + "integrity": "sha512-snPRQnwG9PV4kYHQimo1tenf7P974RcdxkHUThzWSxPEV7HpjxTFYNWGlKbOKBhL4AcgeCVeiZ/j+zveF2lEPA==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "3.808.0", + "@aws-sdk/types": "3.804.0", + "@smithy/property-provider": "^4.0.2", + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@n8n/task-runner/node_modules/@aws-sdk/credential-provider-http": { + "version": "3.808.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.808.0.tgz", + "integrity": "sha512-gNXjlx3BIUeX7QpVqxbjBxG6zm45lC39QvUIo92WzEJd2OTPcR8TU0OTTsgq/lpn2FrKcISj5qXvhWykd41+CA==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "3.808.0", + "@aws-sdk/types": "3.804.0", + "@smithy/fetch-http-handler": "^5.0.2", + "@smithy/node-http-handler": "^4.0.4", + "@smithy/property-provider": "^4.0.2", + "@smithy/protocol-http": "^5.1.0", + "@smithy/smithy-client": "^4.2.4", + "@smithy/types": "^4.2.0", + "@smithy/util-stream": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@n8n/task-runner/node_modules/@aws-sdk/credential-provider-ini": { + "version": "3.808.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.808.0.tgz", + "integrity": "sha512-Y53CW0pCvFQQEvtVFwExCCMbTg+6NOl8b3YOuZVzPmVmDoW7M1JIn9IScesqoGERXL3VoXny6nYTsZj+vfpp7Q==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "3.808.0", + "@aws-sdk/credential-provider-env": "3.808.0", + "@aws-sdk/credential-provider-http": "3.808.0", + "@aws-sdk/credential-provider-process": "3.808.0", + "@aws-sdk/credential-provider-sso": "3.808.0", + "@aws-sdk/credential-provider-web-identity": "3.808.0", + "@aws-sdk/nested-clients": "3.808.0", + "@aws-sdk/types": "3.804.0", + "@smithy/credential-provider-imds": "^4.0.2", + "@smithy/property-provider": "^4.0.2", + "@smithy/shared-ini-file-loader": "^4.0.2", + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@n8n/task-runner/node_modules/@aws-sdk/credential-provider-node": { + "version": "3.808.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.808.0.tgz", + "integrity": "sha512-lASHlXJ6U5Cpnt9Gs+mWaaSmWcEibr1AFGhp+5UNvfyd+UU2Oiwgbo7rYXygmaVDGkbfXEiTkgYtoNOBSddnWQ==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/credential-provider-env": "3.808.0", + "@aws-sdk/credential-provider-http": "3.808.0", + "@aws-sdk/credential-provider-ini": "3.808.0", + "@aws-sdk/credential-provider-process": "3.808.0", + "@aws-sdk/credential-provider-sso": "3.808.0", + "@aws-sdk/credential-provider-web-identity": "3.808.0", + "@aws-sdk/types": "3.804.0", + "@smithy/credential-provider-imds": "^4.0.2", + "@smithy/property-provider": "^4.0.2", + "@smithy/shared-ini-file-loader": "^4.0.2", + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@n8n/task-runner/node_modules/@aws-sdk/credential-provider-process": { + "version": "3.808.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.808.0.tgz", + "integrity": "sha512-ZLqp+xsQUatoo8pMozcfLwf/pwfXeIk0w3n0Lo/rWBgT3RcdECmmPCRcnkYBqxHQyE66aS9HiJezZUwMYPqh6w==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "3.808.0", + "@aws-sdk/types": "3.804.0", + "@smithy/property-provider": "^4.0.2", + "@smithy/shared-ini-file-loader": "^4.0.2", + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@n8n/task-runner/node_modules/@aws-sdk/credential-provider-sso": { + "version": "3.808.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.808.0.tgz", + "integrity": "sha512-gWZByAokHX+aps1+syIW/hbKUBrjE2RpPRd/RGQvrBbVVgwsJzsHKsW0zy1B6mgARPG6IahmSUMjNkBCVsiAgw==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/client-sso": "3.808.0", + "@aws-sdk/core": "3.808.0", + "@aws-sdk/token-providers": "3.808.0", + "@aws-sdk/types": "3.804.0", + "@smithy/property-provider": "^4.0.2", + "@smithy/shared-ini-file-loader": "^4.0.2", + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@n8n/task-runner/node_modules/@aws-sdk/credential-provider-web-identity": { + "version": "3.808.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.808.0.tgz", + "integrity": "sha512-SsGa1Gfa05aJM/qYOtHmfg0OKKW6Fl6kyMCcai63jWDVDYy0QSHcesnqRayJolISkdsVK6bqoWoFcPxiopcFcg==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "3.808.0", + "@aws-sdk/nested-clients": "3.808.0", + "@aws-sdk/types": "3.804.0", + "@smithy/property-provider": "^4.0.2", + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@n8n/task-runner/node_modules/@aws-sdk/middleware-bucket-endpoint": { + "version": "3.808.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.808.0.tgz", + "integrity": "sha512-wEPlNcs8dir9lXbuviEGtSzYSxG/NRKQrJk5ybOc7OpPGHovsN+QhDOdY3lcjOFdwMTiMIG9foUkPz3zBpLB1A==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.804.0", + "@aws-sdk/util-arn-parser": "3.804.0", + "@smithy/node-config-provider": "^4.1.1", + "@smithy/protocol-http": "^5.1.0", + "@smithy/types": "^4.2.0", + "@smithy/util-config-provider": "^4.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@n8n/task-runner/node_modules/@aws-sdk/middleware-expect-continue": { + "version": "3.804.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.804.0.tgz", + "integrity": "sha512-YW1hySBolALMII6C8y7Z0CRG2UX1dGJjLEBNFeefhO/xP7ZuE1dvnmfJGaEuBMnvc3wkRS63VZ3aqX6sevM1CA==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.804.0", + "@smithy/protocol-http": "^5.1.0", + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@n8n/task-runner/node_modules/@aws-sdk/middleware-flexible-checksums": { + "version": "3.808.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.808.0.tgz", + "integrity": "sha512-NW1yoTYDH2h8ycqMPNkvW3d1XT2vEeXfXclagL2tv82P7Qt7vPXYcObs/YtETvNZ7hdnmOftJ/IJv7YrFC8vtQ==", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/crc32": "5.2.0", + "@aws-crypto/crc32c": "5.2.0", + "@aws-crypto/util": "5.2.0", + "@aws-sdk/core": "3.808.0", + "@aws-sdk/types": "3.804.0", + "@smithy/is-array-buffer": "^4.0.0", + "@smithy/node-config-provider": "^4.1.1", + "@smithy/protocol-http": "^5.1.0", + "@smithy/types": "^4.2.0", + "@smithy/util-middleware": "^4.0.2", + "@smithy/util-stream": "^4.2.0", + "@smithy/util-utf8": "^4.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@n8n/task-runner/node_modules/@aws-sdk/middleware-host-header": { + "version": "3.804.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.804.0.tgz", + "integrity": "sha512-bum1hLVBrn2lJCi423Z2fMUYtsbkGI2s4N+2RI2WSjvbaVyMSv/WcejIrjkqiiMR+2Y7m5exgoKeg4/TODLDPQ==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.804.0", + "@smithy/protocol-http": "^5.1.0", + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@n8n/task-runner/node_modules/@aws-sdk/middleware-location-constraint": { + "version": "3.804.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.804.0.tgz", + "integrity": "sha512-AMtKnllIWKgoo7hiJfphLYotEwTERfjVMO2+cKAncz9w1g+bnYhHxiVhJJoR94y047c06X4PU5MsTxvdQ73Znw==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.804.0", + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@n8n/task-runner/node_modules/@aws-sdk/middleware-logger": { + "version": "3.804.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.804.0.tgz", + "integrity": "sha512-w/qLwL3iq0KOPQNat0Kb7sKndl9BtceigINwBU7SpkYWX9L/Lem6f8NPEKrC9Tl4wDBht3Yztub4oRTy/horJA==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.804.0", + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@n8n/task-runner/node_modules/@aws-sdk/middleware-recursion-detection": { + "version": "3.804.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.804.0.tgz", + "integrity": "sha512-zqHOrvLRdsUdN/ehYfZ9Tf8svhbiLLz5VaWUz22YndFv6m9qaAcijkpAOlKexsv3nLBMJdSdJ6GUTAeIy3BZzw==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.804.0", + "@smithy/protocol-http": "^5.1.0", + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@n8n/task-runner/node_modules/@aws-sdk/middleware-sdk-s3": { + "version": "3.808.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.808.0.tgz", + "integrity": "sha512-qvyJTDf0HIsPpZzBUqhNQm5g8stAn2EOwVsaAolsOHuBsdaBAE/s/NgPzazDlSXwdF0ITvsIouUVDCn4fJGJqQ==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "3.808.0", + "@aws-sdk/types": "3.804.0", + "@aws-sdk/util-arn-parser": "3.804.0", + "@smithy/core": "^3.3.1", + "@smithy/node-config-provider": "^4.1.1", + "@smithy/protocol-http": "^5.1.0", + "@smithy/signature-v4": "^5.1.0", + "@smithy/smithy-client": "^4.2.4", + "@smithy/types": "^4.2.0", + "@smithy/util-config-provider": "^4.0.0", + "@smithy/util-middleware": "^4.0.2", + "@smithy/util-stream": "^4.2.0", + "@smithy/util-utf8": "^4.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@n8n/task-runner/node_modules/@aws-sdk/middleware-ssec": { + "version": "3.804.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-ssec/-/middleware-ssec-3.804.0.tgz", + "integrity": "sha512-Tk8jK0gOIUBvEPTz/wwSlP1V70zVQ3QYqsLPAjQRMO6zfOK9ax31dln3MgKvFDJxBydS2tS3wsn53v+brxDxTA==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.804.0", + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@n8n/task-runner/node_modules/@aws-sdk/middleware-user-agent": { + "version": "3.808.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.808.0.tgz", + "integrity": "sha512-VckV6l5cf/rL3EtgzSHVTTD4mI0gd8UxDDWbKJsxbQ2bpNPDQG2L1wWGLaolTSzjEJ5f3ijDwQrNDbY9l85Mmg==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "3.808.0", + "@aws-sdk/types": "3.804.0", + "@aws-sdk/util-endpoints": "3.808.0", + "@smithy/core": "^3.3.1", + "@smithy/protocol-http": "^5.1.0", + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@n8n/task-runner/node_modules/@aws-sdk/nested-clients": { + "version": "3.808.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.808.0.tgz", + "integrity": "sha512-NparPojwoBul7XPCasy4psFMJbw7Ys4bz8lVB93ljEUD4VV7mM7zwK27Uhz20B8mBFGmFEoAprPsVymJcK9Vcw==", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "3.808.0", + "@aws-sdk/middleware-host-header": "3.804.0", + "@aws-sdk/middleware-logger": "3.804.0", + "@aws-sdk/middleware-recursion-detection": "3.804.0", + "@aws-sdk/middleware-user-agent": "3.808.0", + "@aws-sdk/region-config-resolver": "3.808.0", + "@aws-sdk/types": "3.804.0", + "@aws-sdk/util-endpoints": "3.808.0", + "@aws-sdk/util-user-agent-browser": "3.804.0", + "@aws-sdk/util-user-agent-node": "3.808.0", + "@smithy/config-resolver": "^4.1.2", + "@smithy/core": "^3.3.1", + "@smithy/fetch-http-handler": "^5.0.2", + "@smithy/hash-node": "^4.0.2", + "@smithy/invalid-dependency": "^4.0.2", + "@smithy/middleware-content-length": "^4.0.2", + "@smithy/middleware-endpoint": "^4.1.4", + "@smithy/middleware-retry": "^4.1.5", + "@smithy/middleware-serde": "^4.0.3", + "@smithy/middleware-stack": "^4.0.2", + "@smithy/node-config-provider": "^4.1.1", + "@smithy/node-http-handler": "^4.0.4", + "@smithy/protocol-http": "^5.1.0", + "@smithy/smithy-client": "^4.2.4", + "@smithy/types": "^4.2.0", + "@smithy/url-parser": "^4.0.2", + "@smithy/util-base64": "^4.0.0", + "@smithy/util-body-length-browser": "^4.0.0", + "@smithy/util-body-length-node": "^4.0.0", + "@smithy/util-defaults-mode-browser": "^4.0.12", + "@smithy/util-defaults-mode-node": "^4.0.12", + "@smithy/util-endpoints": "^3.0.4", + "@smithy/util-middleware": "^4.0.2", + "@smithy/util-retry": "^4.0.3", + "@smithy/util-utf8": "^4.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@n8n/task-runner/node_modules/@aws-sdk/region-config-resolver": { + "version": "3.808.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.808.0.tgz", + "integrity": "sha512-9x2QWfphkARZY5OGkl9dJxZlSlYM2l5inFeo2bKntGuwg4A4YUe5h7d5yJ6sZbam9h43eBrkOdumx03DAkQF9A==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.804.0", + "@smithy/node-config-provider": "^4.1.1", + "@smithy/types": "^4.2.0", + "@smithy/util-config-provider": "^4.0.0", + "@smithy/util-middleware": "^4.0.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@n8n/task-runner/node_modules/@aws-sdk/signature-v4-multi-region": { + "version": "3.808.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.808.0.tgz", + "integrity": "sha512-lQuEB6JK81eKV7fdiktmRq06Y1KCcJbx9fLf7b19nSfYUbJSn/kfSpHPv/tOkJK2HKnN61JsfG19YU8k4SOU8Q==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/middleware-sdk-s3": "3.808.0", + "@aws-sdk/types": "3.804.0", + "@smithy/protocol-http": "^5.1.0", + "@smithy/signature-v4": "^5.1.0", + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@n8n/task-runner/node_modules/@aws-sdk/token-providers": { + "version": "3.808.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.808.0.tgz", + "integrity": "sha512-PsfKanHmnyO7FxowXqxbLQ+QjURCdSGxyhUiSdZbfvlvme/wqaMyIoMV/i4jppndksoSdPbW2kZXjzOqhQF+ew==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/nested-clients": "3.808.0", + "@aws-sdk/types": "3.804.0", + "@smithy/property-provider": "^4.0.2", + "@smithy/shared-ini-file-loader": "^4.0.2", + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@n8n/task-runner/node_modules/@aws-sdk/types": { + "version": "3.804.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.804.0.tgz", + "integrity": "sha512-A9qnsy9zQ8G89vrPPlNG9d1d8QcKRGqJKqwyGgS0dclJpwy6d1EWgQLIolKPl6vcFpLoe6avLOLxr+h8ur5wpg==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@n8n/task-runner/node_modules/@aws-sdk/util-endpoints": { + "version": "3.808.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.808.0.tgz", + "integrity": "sha512-N6Lic98uc4ADB7fLWlzx+1uVnq04VgVjngZvwHoujcRg9YDhIg9dUDiTzD5VZv13g1BrPYmvYP1HhsildpGV6w==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.804.0", + "@smithy/types": "^4.2.0", + "@smithy/util-endpoints": "^3.0.4", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@n8n/task-runner/node_modules/@aws-sdk/util-user-agent-browser": { + "version": "3.804.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.804.0.tgz", + "integrity": "sha512-KfW6T6nQHHM/vZBBdGn6fMyG/MgX5lq82TDdX4HRQRRuHKLgBWGpKXqqvBwqIaCdXwWHgDrg2VQups6GqOWW2A==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.804.0", + "@smithy/types": "^4.2.0", + "bowser": "^2.11.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@n8n/task-runner/node_modules/@aws-sdk/util-user-agent-node": { + "version": "3.808.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.808.0.tgz", + "integrity": "sha512-5UmB6u7RBSinXZAVP2iDgqyeVA/odO2SLEcrXaeTCw8ICXEoqF0K+GL36T4iDbzCBOAIugOZ6OcQX5vH3ck5UA==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/middleware-user-agent": "3.808.0", + "@aws-sdk/types": "3.804.0", + "@smithy/node-config-provider": "^4.1.1", + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "aws-crt": ">=1.0.0" + }, + "peerDependenciesMeta": { + "aws-crt": { + "optional": true + } + } + }, + "node_modules/@n8n/task-runner/node_modules/@aws-sdk/xml-builder": { + "version": "3.804.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.804.0.tgz", + "integrity": "sha512-JbGWp36IG9dgxtvC6+YXwt5WDZYfuamWFtVfK6fQpnmL96dx+GUPOXPKRWdw67WLKf2comHY28iX2d3z35I53Q==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@n8n/task-runner/node_modules/@langchain/core": { + "version": "0.3.39", + "resolved": "https://registry.npmjs.org/@langchain/core/-/core-0.3.39.tgz", + "integrity": "sha512-muXs4asy1A7qDtcdznxqyBfxf4N6qxofY/S0c95vbsWa0r9YAE2PttHIjcuxSy1q2jUiTkpCcgFEjNJRQRVhEw==", + "license": "MIT", + "dependencies": { + "@cfworker/json-schema": "^4.0.2", + "ansi-styles": "^5.0.0", + "camelcase": "6", + "decamelize": "1.2.0", + "js-tiktoken": "^1.0.12", + "langsmith": ">=0.2.8 <0.4.0", + "mustache": "^4.2.0", + "p-queue": "^6.6.2", + "p-retry": "4", + "uuid": "^10.0.0", + "zod": "^3.22.4", + "zod-to-json-schema": "^3.22.3" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@n8n/task-runner/node_modules/@n8n/backend-common": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@n8n/backend-common/-/backend-common-0.6.0.tgz", + "integrity": "sha512-Ap98P/Y9ldDBgWr1d5JVT9mzW2mjBz5iuMaCUUx1ljfpvDQQRHKYHDwzfv75TPBuygZwpuY/YpnbwoGjqc2sjg==", + "license": "SEE LICENSE IN LICENSE.md", + "dependencies": { + "@n8n/config": "^1.41.0", + "@n8n/constants": "^0.5.0", + "@n8n/di": "^0.6.0", + "callsites": "3.1.0", + "n8n-workflow": "^1.94.0", + "picocolors": "1.0.1", + "reflect-metadata": "0.2.2", + "winston": "3.14.2" + } + }, "node_modules/@n8n/task-runner/node_modules/acorn": { "version": "8.14.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", @@ -10657,6 +10521,60 @@ "node": ">=0.4.0" } }, + "node_modules/@n8n/task-runner/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@n8n/task-runner/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@n8n/task-runner/node_modules/fast-glob": { + "version": "3.2.12", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", + "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/@n8n/task-runner/node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/@n8n/task-runner/node_modules/luxon": { "version": "3.4.4", "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.4.4.tgz", @@ -10666,6 +10584,72 @@ "node": ">=12" } }, + "node_modules/@n8n/task-runner/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/@n8n/task-runner/node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/@n8n/task-runner/node_modules/n8n-core": { + "version": "1.95.0", + "resolved": "https://registry.npmjs.org/n8n-core/-/n8n-core-1.95.0.tgz", + "integrity": "sha512-A1ZvGGSuVeibFiaWnDG93DJ7CHdDqZ6UCgLbsr3Wn5Mv/yQmdocf6lPaV186c1u9nEr6FE+7YUB14TeuIpFBWg==", + "license": "SEE LICENSE IN LICENSE.md", + "dependencies": { + "@aws-sdk/client-s3": "3.808.0", + "@langchain/core": "0.3.39", + "@n8n/backend-common": "^0.6.0", + "@n8n/client-oauth2": "0.26.0", + "@n8n/config": "1.41.0", + "@n8n/decorators": "0.7.0", + "@n8n/di": "0.6.0", + "@sentry/node": "8.52.1", + "axios": "1.8.3", + "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", + "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.94.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", + "qs": "6.11.0", + "ssh2": "1.15.0", + "uuid": "10.0.0", + "winston": "3.14.2", + "xml2js": "0.6.2", + "zod": "3.24.1" + }, + "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/nanoid": { "version": "3.3.8", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz", @@ -10684,6 +10668,101 @@ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, + "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/ssh2": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/ssh2/-/ssh2-1.15.0.tgz", + "integrity": "sha512-C0PHgX4h6lBxYx7hcXwu3QWdh4tg6tZZsTfXcdvc5caW/EMxaB4H9dWsl7qk+F7LAW762hp8VbXOX7x4xUYvEw==", + "hasInstallScript": true, + "dependencies": { + "asn1": "^0.2.6", + "bcrypt-pbkdf": "^1.0.2" + }, + "engines": { + "node": ">=10.16.0" + }, + "optionalDependencies": { + "cpu-features": "~0.0.9", + "nan": "^2.18.0" + } + }, + "node_modules/@n8n/task-runner/node_modules/uuid": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-10.0.0.tgz", + "integrity": "sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "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/xml2js": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.6.2.tgz", + "integrity": "sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA==", + "license": "MIT", + "dependencies": { + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/@n8n/task-runner/node_modules/zod": { + "version": "3.24.1", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.24.1.tgz", + "integrity": "sha512-muH7gBL9sI1nciMZV67X5fTKKBLtwpZ5VBp1vsOQzj1MhrBZ4wlVCm3gedKZWLp0Oyel8sIGfeiz54Su+OVT+A==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, "node_modules/@n8n/tournament": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/@n8n/tournament/-/tournament-1.0.6.tgz", @@ -21996,17 +22075,18 @@ } }, "node_modules/n8n-core": { - "version": "1.95.0", - "resolved": "https://registry.npmjs.org/n8n-core/-/n8n-core-1.95.0.tgz", - "integrity": "sha512-A1ZvGGSuVeibFiaWnDG93DJ7CHdDqZ6UCgLbsr3Wn5Mv/yQmdocf6lPaV186c1u9nEr6FE+7YUB14TeuIpFBWg==", + "version": "1.97.1", + "resolved": "https://registry.npmjs.org/n8n-core/-/n8n-core-1.97.1.tgz", + "integrity": "sha512-ct/CP2RwGucg3SjF8QTwhazfk//kKxN+FxNAKv9ognqgNtntP8A2YB1jWwe2xc1c5kQL4B+N5MWpSOpsBb67EQ==", "license": "SEE LICENSE IN LICENSE.md", "dependencies": { "@aws-sdk/client-s3": "3.808.0", - "@langchain/core": "0.3.39", - "@n8n/backend-common": "^0.6.0", + "@langchain/core": "0.3.48", + "@n8n/backend-common": "^0.8.0", "@n8n/client-oauth2": "0.26.0", - "@n8n/config": "1.41.0", - "@n8n/decorators": "0.7.0", + "@n8n/config": "1.42.0", + "@n8n/constants": "0.6.0", + "@n8n/decorators": "0.8.0", "@n8n/di": "0.6.0", "@sentry/node": "8.52.1", "axios": "1.8.3", @@ -22016,17 +22096,20 @@ "fast-glob": "3.2.12", "file-type": "16.5.4", "form-data": "4.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.94.0", + "n8n-workflow": "1.95.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", @@ -22664,67 +22747,59 @@ "node": ">=18.0.0" } }, - "node_modules/n8n-core/node_modules/@langchain/core": { - "version": "0.3.39", - "resolved": "https://registry.npmjs.org/@langchain/core/-/core-0.3.39.tgz", - "integrity": "sha512-muXs4asy1A7qDtcdznxqyBfxf4N6qxofY/S0c95vbsWa0r9YAE2PttHIjcuxSy1q2jUiTkpCcgFEjNJRQRVhEw==", - "license": "MIT", - "dependencies": { - "@cfworker/json-schema": "^4.0.2", - "ansi-styles": "^5.0.0", - "camelcase": "6", - "decamelize": "1.2.0", - "js-tiktoken": "^1.0.12", - "langsmith": ">=0.2.8 <0.4.0", - "mustache": "^4.2.0", - "p-queue": "^6.6.2", - "p-retry": "4", - "uuid": "^10.0.0", - "zod": "^3.22.4", - "zod-to-json-schema": "^3.22.3" - }, - "engines": { - "node": ">=18" - } - }, "node_modules/n8n-core/node_modules/@n8n/backend-common": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/@n8n/backend-common/-/backend-common-0.6.0.tgz", - "integrity": "sha512-Ap98P/Y9ldDBgWr1d5JVT9mzW2mjBz5iuMaCUUx1ljfpvDQQRHKYHDwzfv75TPBuygZwpuY/YpnbwoGjqc2sjg==", + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@n8n/backend-common/-/backend-common-0.8.0.tgz", + "integrity": "sha512-yjH/7GAP2A6pTxqFkE5KMqTMwbtV8Hdiw1eRNjsuPj6hCN5gIMvdU9r58y2JASyry+YJByTW+4XTkS3POFsolA==", "license": "SEE LICENSE IN LICENSE.md", "dependencies": { - "@n8n/config": "^1.41.0", - "@n8n/constants": "^0.5.0", + "@n8n/config": "^1.42.0", + "@n8n/constants": "^0.6.0", "@n8n/di": "^0.6.0", "callsites": "3.1.0", - "n8n-workflow": "^1.94.0", + "n8n-workflow": "^1.95.0", "picocolors": "1.0.1", "reflect-metadata": "0.2.2", "winston": "3.14.2" } }, - "node_modules/n8n-core/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node_modules/n8n-core/node_modules/@n8n/config": { + "version": "1.42.0", + "resolved": "https://registry.npmjs.org/@n8n/config/-/config-1.42.0.tgz", + "integrity": "sha512-jioRSJPsB1XowPtG/ubO+uqJ8wWTx4pcakNwPRvrQ+bl1Zh8gZIGssY/zFPxDsXx2a3Ka1PXNXbieIIlDNDP/Q==", + "license": "SEE LICENSE IN LICENSE.md", + "dependencies": { + "@n8n/di": "0.6.0", + "reflect-metadata": "0.2.2", + "zod": "3.24.1" } }, - "node_modules/n8n-core/node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node_modules/n8n-core/node_modules/@n8n/constants": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@n8n/constants/-/constants-0.6.0.tgz", + "integrity": "sha512-AL3eoIriB+fp7TuyBWhGv6rzNyuMhmeaaB9TwQOVRcxVGj5pEkgbdxt5U1DHxiiKHdgLU7RWbE2yh+J1eob/+A==", + "license": "SEE LICENSE IN LICENSE.md" + }, + "node_modules/n8n-core/node_modules/@n8n/decorators": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@n8n/decorators/-/decorators-0.8.0.tgz", + "integrity": "sha512-Msol10AQPgnlnqC3DmAa8H2CDcnpzGs3FljnLxpGybH7edSbts5+D6qbFxTllhV4roM7NYO2FMqozvby9lEcZA==", + "license": "SEE LICENSE IN LICENSE.md", + "dependencies": { + "@n8n/constants": "^0.6.0", + "@n8n/di": "^0.6.0", + "@n8n/permissions": "^0.27.0", + "lodash": "4.17.21", + "n8n-workflow": "^1.95.0" + } + }, + "node_modules/n8n-core/node_modules/@n8n/permissions": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/@n8n/permissions/-/permissions-0.27.0.tgz", + "integrity": "sha512-Vq+luCxEJ3aEmeCRxF3ieEEBMlVhV+rOr3WBXPvax63/4Csp8Eab8nQZm1TCMdnUYVyGD+MfTEv0brHoqLLr7A==", + "license": "SEE LICENSE IN LICENSE.md", + "dependencies": { + "zod": "3.24.1" } }, "node_modules/n8n-core/node_modules/fast-glob": { @@ -22787,6 +22862,30 @@ "node": ">= 0.6" } }, + "node_modules/n8n-core/node_modules/n8n-workflow": { + "version": "1.95.0", + "resolved": "https://registry.npmjs.org/n8n-workflow/-/n8n-workflow-1.95.0.tgz", + "integrity": "sha512-quGOc/Mr6eMKeGS3NWO0tvRRnbg5b7Z6ug9kYDSBgLG+DzV4MSj/OelpG4Qv256CwLD56XPYf4e9ALHl15gPbA==", + "license": "SEE LICENSE IN LICENSE.md", + "dependencies": { + "@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.24.1" + } + }, "node_modules/n8n-core/node_modules/nanoid": { "version": "3.3.8", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz", @@ -22826,6 +22925,22 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/n8n-core/node_modules/recast": { + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/recast/-/recast-0.22.0.tgz", + "integrity": "sha512-5AAx+mujtXijsEavc5lWXBPQqrM4+Dl5qNH96N2aNeuJFUzpiiToKPsxQD/zAIJHspz7zz0maX0PCtCTFVlixQ==", + "license": "MIT", + "dependencies": { + "assert": "^2.0.0", + "ast-types": "0.15.2", + "esprima": "~4.0.0", + "source-map": "~0.6.1", + "tslib": "^2.0.1" + }, + "engines": { + "node": ">= 4" + } + }, "node_modules/n8n-core/node_modules/ssh2": { "version": "1.15.0", "resolved": "https://registry.npmjs.org/ssh2/-/ssh2-1.15.0.tgz", diff --git a/package.json b/package.json index 9f82b39..14de6f2 100644 --- a/package.json +++ b/package.json @@ -20,6 +20,8 @@ "test": "jest", "lint": "tsc --noEmit", "typecheck": "tsc --noEmit", + "update:n8n": "node scripts/update-n8n-deps.js", + "update:n8n:check": "node scripts/update-n8n-deps.js --dry-run", "db:rebuild": "node dist/scripts/rebuild-database.js", "db:init": "node -e \"new (require('./dist/services/sqlite-storage-service').SQLiteStorageService)(); console.log('Database initialized')\"", "docs:rebuild": "ts-node src/scripts/rebuild-database.ts" @@ -55,13 +57,13 @@ }, "dependencies": { "@modelcontextprotocol/sdk": "^1.12.1", - "@n8n/n8n-nodes-langchain": "^1.0.0", + "@n8n/n8n-nodes-langchain": "^1.96.1", "better-sqlite3": "^11.10.0", "dotenv": "^16.5.0", "express": "^5.1.0", - "n8n": "^1.97.0", - "n8n-core": "^1.14.1", - "n8n-workflow": "^1.82.0", + "n8n": "^1.97.1", + "n8n-core": "^1.96.0", + "n8n-workflow": "^1.94.0", "sql.js": "^1.13.0" } } diff --git a/renovate.json b/renovate.json new file mode 100644 index 0000000..9150a75 --- /dev/null +++ b/renovate.json @@ -0,0 +1,56 @@ +{ + "$schema": "https://docs.renovatebot.com/renovate-schema.json", + "extends": [ + "config:base" + ], + "schedule": ["after 9am on monday"], + "timezone": "UTC", + "packageRules": [ + { + "description": "Group all n8n-related updates", + "groupName": "n8n dependencies", + "matchPackagePatterns": ["^n8n", "^@n8n/"], + "matchUpdateTypes": ["minor", "patch"], + "schedule": ["after 9am on monday"] + }, + { + "description": "Require approval for major n8n updates", + "matchPackagePatterns": ["^n8n", "^@n8n/"], + "matchUpdateTypes": ["major"], + "dependencyDashboardApproval": true + }, + { + "description": "Disable updates for other dependencies", + "excludePackagePatterns": ["^n8n", "^@n8n/"], + "enabled": false + } + ], + "postUpdateOptions": [ + "npmDedupe" + ], + "prConcurrentLimit": 1, + "prCreation": "immediate", + "labels": ["dependencies", "n8n-update"], + "assignees": ["@czlonkowski"], + "reviewers": ["@czlonkowski"], + "commitMessagePrefix": "chore: ", + "commitMessageTopic": "{{depName}}", + "commitMessageExtra": "from {{currentVersion}} to {{newVersion}}", + "prBodyDefinitions": { + "Package": "{{depName}}", + "Type": "{{depType}}", + "Update": "{{updateType}}", + "Current": "{{currentVersion}}", + "New": "{{newVersion}}", + "Change": "[Compare]({{compareUrl}})" + }, + "prBodyColumns": ["Package", "Type", "Update", "Current", "New", "Change"], + "prBodyNotes": [ + "**Important**: Please review the [n8n release notes](https://docs.n8n.io/release-notes/) for breaking changes.", + "", + "After merging, please:", + "1. Run `npm run rebuild` to update the node database", + "2. Run `npm run validate` to ensure all nodes are properly loaded", + "3. Test critical functionality" + ] +} \ No newline at end of file diff --git a/scripts/update-n8n-deps.js b/scripts/update-n8n-deps.js new file mode 100755 index 0000000..2cee719 --- /dev/null +++ b/scripts/update-n8n-deps.js @@ -0,0 +1,314 @@ +#!/usr/bin/env node + +/** + * Update n8n dependencies to latest versions + * Can be run manually or via GitHub Actions + */ + +const { execSync } = require('child_process'); +const fs = require('fs'); +const path = require('path'); + +class N8nDependencyUpdater { + constructor() { + this.packageJsonPath = path.join(__dirname, '..', 'package.json'); + // Only track the main n8n package - let it manage its own dependencies + this.mainPackage = 'n8n'; + } + + /** + * Get latest version of a package from npm + */ + getLatestVersion(packageName) { + try { + const output = execSync(`npm view ${packageName} version`, { encoding: 'utf8' }); + return output.trim(); + } catch (error) { + console.error(`Failed to get version for ${packageName}:`, error.message); + return null; + } + } + + /** + * Get dependencies of a specific n8n version + */ + getN8nDependencies(n8nVersion) { + try { + const output = execSync(`npm view n8n@${n8nVersion} dependencies --json`, { encoding: 'utf8' }); + return JSON.parse(output); + } catch (error) { + console.error(`Failed to get dependencies for n8n@${n8nVersion}:`, error.message); + return {}; + } + } + + /** + * Get current version from package.json + */ + getCurrentVersion(packageName) { + const packageJson = JSON.parse(fs.readFileSync(this.packageJsonPath, 'utf8')); + const version = packageJson.dependencies[packageName]; + return version ? version.replace(/^[\^~]/, '') : null; + } + + /** + * Check which packages need updates + */ + async checkForUpdates() { + console.log('๐Ÿ” Checking for n8n dependency updates...\n'); + + const updates = []; + + // First check the main n8n package + const currentN8nVersion = this.getCurrentVersion('n8n'); + const latestN8nVersion = this.getLatestVersion('n8n'); + + if (!currentN8nVersion || !latestN8nVersion) { + console.error('Failed to check n8n version'); + return updates; + } + + if (currentN8nVersion !== latestN8nVersion) { + console.log(`๐Ÿ“ฆ n8n: ${currentN8nVersion} โ†’ ${latestN8nVersion} (update available)`); + + // Get the dependencies that n8n requires + const n8nDeps = this.getN8nDependencies(latestN8nVersion); + + // Add main n8n update + updates.push({ + package: 'n8n', + current: currentN8nVersion, + latest: latestN8nVersion + }); + + // Check our tracked dependencies that n8n uses + const trackedDeps = ['n8n-core', 'n8n-workflow', '@n8n/n8n-nodes-langchain']; + + for (const dep of trackedDeps) { + const currentVersion = this.getCurrentVersion(dep); + const requiredVersion = n8nDeps[dep]; + + if (requiredVersion && currentVersion) { + // Extract version from npm dependency format (e.g., "^1.2.3" -> "1.2.3") + const cleanRequiredVersion = requiredVersion.replace(/^[\^~>=<]/, '').split(' ')[0]; + + if (currentVersion !== cleanRequiredVersion) { + updates.push({ + package: dep, + current: currentVersion, + latest: cleanRequiredVersion, + reason: `Required by n8n@${latestN8nVersion}` + }); + console.log(`๐Ÿ“ฆ ${dep}: ${currentVersion} โ†’ ${cleanRequiredVersion} (required by n8n)`); + } else { + console.log(`โœ… ${dep}: ${currentVersion} (compatible with n8n@${latestN8nVersion})`); + } + } + } + } else { + console.log(`โœ… n8n: ${currentN8nVersion} (up to date)`); + + // Even if n8n is up to date, check if our dependencies match what n8n expects + const n8nDeps = this.getN8nDependencies(currentN8nVersion); + const trackedDeps = ['n8n-core', 'n8n-workflow', '@n8n/n8n-nodes-langchain']; + + for (const dep of trackedDeps) { + const currentVersion = this.getCurrentVersion(dep); + const requiredVersion = n8nDeps[dep]; + + if (requiredVersion && currentVersion) { + const cleanRequiredVersion = requiredVersion.replace(/^[\^~>=<]/, '').split(' ')[0]; + + if (currentVersion !== cleanRequiredVersion) { + updates.push({ + package: dep, + current: currentVersion, + latest: cleanRequiredVersion, + reason: `Required by n8n@${currentN8nVersion}` + }); + console.log(`๐Ÿ“ฆ ${dep}: ${currentVersion} โ†’ ${cleanRequiredVersion} (sync with n8n)`); + } else { + console.log(`โœ… ${dep}: ${currentVersion} (in sync)`); + } + } + } + } + + return updates; + } + + /** + * Update package.json with new versions + */ + updatePackageJson(updates) { + if (updates.length === 0) { + console.log('\nโœจ All n8n dependencies are up to date and in sync!'); + return false; + } + + console.log(`\n๐Ÿ“ Updating ${updates.length} packages in package.json...`); + + const packageJson = JSON.parse(fs.readFileSync(this.packageJsonPath, 'utf8')); + + for (const update of updates) { + packageJson.dependencies[update.package] = `^${update.latest}`; + console.log(` Updated ${update.package} to ^${update.latest}${update.reason ? ` (${update.reason})` : ''}`); + } + + fs.writeFileSync( + this.packageJsonPath, + JSON.stringify(packageJson, null, 2) + '\n', + 'utf8' + ); + + return true; + } + + /** + * Run npm install to update lock file + */ + runNpmInstall() { + console.log('\n๐Ÿ“ฅ Running npm install to update lock file...'); + try { + execSync('npm install', { + cwd: path.join(__dirname, '..'), + stdio: 'inherit' + }); + return true; + } catch (error) { + console.error('โŒ npm install failed:', error.message); + return false; + } + } + + /** + * Rebuild the node database + */ + rebuildDatabase() { + console.log('\n๐Ÿ”จ Rebuilding node database...'); + try { + execSync('npm run build && npm run rebuild', { + cwd: path.join(__dirname, '..'), + stdio: 'inherit' + }); + return true; + } catch (error) { + console.error('โŒ Database rebuild failed:', error.message); + return false; + } + } + + /** + * Run validation tests + */ + runValidation() { + console.log('\n๐Ÿงช Running validation tests...'); + try { + execSync('npm run validate && npm run test-nodes', { + cwd: path.join(__dirname, '..'), + stdio: 'inherit' + }); + console.log('โœ… All tests passed!'); + return true; + } catch (error) { + console.error('โŒ Validation failed:', error.message); + return false; + } + } + + /** + * Generate update summary for PR/commit message + */ + generateUpdateSummary(updates) { + if (updates.length === 0) return ''; + + const summary = ['Updated n8n dependencies:\n']; + + for (const update of updates) { + summary.push(`- ${update.package}: ${update.current} โ†’ ${update.latest}`); + } + + return summary.join('\n'); + } + + /** + * Main update process + */ + async run(options = {}) { + const { dryRun = false, skipTests = false } = options; + + console.log('๐Ÿš€ n8n Dependency Updater\n'); + console.log('Mode:', dryRun ? 'DRY RUN' : 'LIVE UPDATE'); + console.log('Skip tests:', skipTests ? 'YES' : 'NO'); + console.log('Strategy: Update n8n and sync its required dependencies'); + console.log(''); + + // Check for updates + const updates = await this.checkForUpdates(); + + if (updates.length === 0) { + process.exit(0); + } + + if (dryRun) { + console.log('\n๐Ÿ” DRY RUN: No changes made'); + console.log('\nUpdate summary:'); + console.log(this.generateUpdateSummary(updates)); + process.exit(0); + } + + // Apply updates + if (!this.updatePackageJson(updates)) { + process.exit(0); + } + + // Install dependencies + if (!this.runNpmInstall()) { + console.error('\nโŒ Update failed at npm install step'); + process.exit(1); + } + + // Rebuild database + if (!this.rebuildDatabase()) { + console.error('\nโŒ Update failed at database rebuild step'); + process.exit(1); + } + + // Run tests + if (!skipTests && !this.runValidation()) { + console.error('\nโŒ Update failed at validation step'); + process.exit(1); + } + + // Success! + console.log('\nโœ… Update completed successfully!'); + console.log('\nUpdate summary:'); + console.log(this.generateUpdateSummary(updates)); + + // Write summary to file for GitHub Actions + if (process.env.GITHUB_ACTIONS) { + fs.writeFileSync( + path.join(__dirname, '..', 'update-summary.txt'), + this.generateUpdateSummary(updates), + 'utf8' + ); + } + } +} + +// CLI handling +if (require.main === module) { + const args = process.argv.slice(2); + const options = { + dryRun: args.includes('--dry-run') || args.includes('-d'), + skipTests: args.includes('--skip-tests') || args.includes('-s') + }; + + const updater = new N8nDependencyUpdater(); + updater.run(options).catch(error => { + console.error('Unexpected error:', error); + process.exit(1); + }); +} + +module.exports = N8nDependencyUpdater; \ No newline at end of file diff --git a/src/scripts/validate.ts b/src/scripts/validate.ts index f1feda3..77b06db 100644 --- a/src/scripts/validate.ts +++ b/src/scripts/validate.ts @@ -31,7 +31,7 @@ async function validate() { const criticalChecks = [ { - type: 'httpRequest', + type: 'nodes-base.httpRequest', checks: { hasDocumentation: true, documentationContains: 'HTTP Request', @@ -39,22 +39,21 @@ async function validate() { } }, { - type: 'code', + type: 'nodes-base.code', checks: { hasDocumentation: true, - documentationContains: 'Code', - isVersioned: true + documentationContains: 'Code' } }, { - type: 'slack', + type: 'nodes-base.slack', checks: { hasOperations: true, style: 'programmatic' } }, { - type: 'agent', + type: 'nodes-langchain.agent', checks: { isAITool: false, // According to the database, it's not marked as AI tool packageName: '@n8n/n8n-nodes-langchain' @@ -107,7 +106,7 @@ async function validate() { issues.push(`AI tool flag mismatch: expected ${check.checks.isAITool}, got ${!!node.is_ai_tool}`); } - if (check.checks.isVersioned && !node.is_versioned) { + if ('isVersioned' in check.checks && check.checks.isVersioned && !node.is_versioned) { nodeOk = false; issues.push('not marked as versioned'); }