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 1fa2fbb..ccb1707 100644 Binary files a/data/nodes.db and b/data/nodes.db differ 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'); }