Commit f1e6e5b
chore: update n8n to 2.31.3 (czlonkowski#952)
* chore: update n8n to 2.31.3 and bump version to 2.66.1
- Updated n8n-nodes-base from 2.30.3 to 2.31.3
- Updated n8n-core from 2.30.2 to 2.31.3
- Updated n8n-workflow from 2.30.1 to 2.31.3
- Updated @n8n/n8n-nodes-langchain from 2.30.3 to 2.31.3
- Added the agentSelector property type introduced in n8n 2.31
- Fixed AI tool detection for versioned nodes, restoring 26 tool
variants (slackTool, postgresTool, googleSheetsTool and others)
- Removed the name-based tool-capability guess that invented 26 node
types n8n does not have (waitTool, lmChatAnthropicTool and others)
- Rebuilt node database with 827 core nodes (698 from n8n-nodes-base,
129 from @n8n/n8n-nodes-langchain)
- Refreshed community nodes (1,295 verified + 160 npm, 1,455 total)
- Generated AI summaries for 107 new community nodes
- Updated README badge with new n8n version and node counts
- Updated CHANGELOG with dependency changes
Conceived by Romuald Członkowski - https://www.aiadvisors.pl/en
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
* fix: detect the object form of usableAsTool and wire up agentSelector
Follow-up review found the AI tool detection fix still dropped the most
used tool node in the corpus.
- n8n types the flag `usableAsTool?: true | UsableAsToolDescription`, and
HTTP Request uses the object form on every version from 3 onwards, so
comparing against `true` by identity rejected it. nodes-base.httpRequestTool
was absent from the database despite appearing in 139 of 2,352 templates,
and wiring plain httpRequest into an ai_tool connection produced an error
with no suggested fix. Any value other than false/absent now counts.
- Tool capability is read from nodeVersions[currentVersion], which is what
n8n resolves before consulting the flag. No node in 2.31.3 diverges, so
the database is unchanged, but accepting any version would have invented
a variant for a node that dropped tool support in a later version.
- agentSelector is wired into ConfigValidator, EnhancedConfigValidator and
the expectedFormat hint, so it validates as its own documentation claims.
The __rl marker is dropped from its examples: n8n's guard requires only
mode and value.
- The Docker builder pinned n8n-workflow@^2.4.2, which resolves through the
lagging latest dist-tag and compiled src against 2.16.x types. The pin is
exact now and update-n8n-deps.js keeps it in step with package.json.
- property-extractor reuses the existing instantiateNode helper rather than
open-coding the same try/instantiate block four times.
Database: 828 core nodes, 267 tool variants. Audited against the packages —
no fabricated types, no variant shadowing a real node, no usableAsTool node
without its variant.
Conceived by Romuald Członkowski - https://www.aiadvisors.pl/en
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
* fix: realign Docker builder pins with package.json
The builder stage installs a hand-maintained dependency list rather than
the repo's own, and four pins had drifted. Two broke the build:
- zod@3.24.1 failed npm install outright with ERESOLVE, because
n8n-workflow@2.31.3 declares an exact zod: 3.25.67 peer dependency.
Reproduced locally: `npm install n8n-workflow@2.31.3 zod@3.24.1`.
- n8n-workflow@^2.4.2 resolved through the lagging latest dist-tag to
2.16.x and compiled src against older type definitions.
@modelcontextprotocol/sdk, axios and uuid had drifted without failing yet.
All four now match package.json, and update-n8n-deps.js re-syncs every pin
naming a direct dependency instead of only n8n-workflow, so the list cannot
silently fall behind again. Package names the repo does not depend on
directly are left alone.
Verified the exact builder install resolves clean (266 packages, no
ERESOLVE) and that the sync is idempotent against the current Dockerfile.
Conceived by Romuald Członkowski - https://www.aiadvisors.pl/en
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
* fix: resolve tool version via defaultVersion and scope agentSelector mode guidance
Addresses the second round of review comments on czlonkowski#952.
- Version selection fell back to the highest key in nodeVersions when a node
had no currentVersion. n8n computes it as `defaultVersion ?? latest`, and a
node can ship a later version while still defaulting to an earlier one, so
the declared defaultVersion is now consulted first and the highest key is
used only when no default exists.
- detectAIToolCapability constructed the node, then let getNodeDescription
construct it a second time. The instance is reused.
- The enhanced validator's mode guidance suggested "url" and "name" for
agentSelector, which the Message an Agent picker does not offer. The
suggestion is scoped per type. The accepted set is deliberately unchanged:
n8n declares no modes array for agentSelector, so narrowing what validates
would reject configurations n8n accepts.
The database is unchanged by all of this — rebuilt and diffed across all
2,283 rows including the tool flags: nothing added, removed or changed.
Conceived by Romuald Członkowski - https://www.aiadvisors.pl/en
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>1 parent 84f1145 commit f1e6e5b
18 files changed
Lines changed: 1268 additions & 2518 deletions
File tree
- data
- scripts
- src
- constants
- parsers
- services
- tests/unit
- constants
- parsers
- services
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
141 | 141 | | |
142 | 142 | | |
143 | 143 | | |
| 144 | + | |
| 145 | + | |
| 146 | + | |
144 | 147 | | |
145 | 148 | | |
146 | 149 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
7 | 7 | | |
8 | 8 | | |
9 | 9 | | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
10 | 30 | | |
11 | 31 | | |
12 | 32 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
10 | 10 | | |
11 | 11 | | |
12 | 12 | | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
13 | 19 | | |
14 | 20 | | |
15 | 21 | | |
16 | | - | |
17 | | - | |
18 | | - | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
19 | 25 | | |
20 | 26 | | |
21 | 27 | | |
| |||
0 commit comments