fix: AI node connection validation in partial workflow updates (#357) (#358)

* fix: AI node connection validation in partial workflow updates (#357)

Fix critical validation issue where n8n_update_partial_workflow incorrectly
required 'main' connections for AI nodes that exclusively use AI-specific
connection types (ai_languageModel, ai_memory, ai_embedding, ai_vectorStore, ai_tool).

Problem:
- Workflows containing AI nodes could not be updated via n8n_update_partial_workflow
- Validation incorrectly expected ALL nodes to have 'main' connections
- AI nodes only have AI-specific connection types, never 'main'

Root Cause:
- Zod schema in src/services/n8n-validation.ts defined 'main' as required field
- Schema didn't support AI-specific connection types

Fixed:
- Made 'main' connection optional in Zod schema
- Added support for all AI connection types: ai_tool, ai_languageModel, ai_memory,
  ai_embedding, ai_vectorStore
- Created comprehensive test suite (13 tests) covering all AI connection scenarios
- Updated documentation to clarify AI nodes don't require 'main' connections

Testing:
- All 13 new integration tests passing
- Tested with actual workflow 019Vrw56aROeEzVj from issue #357
- Zero breaking changes (making required fields optional is always safe)

Files Changed:
- src/services/n8n-validation.ts - Fixed Zod schema
- tests/integration/workflow-diff/ai-node-connection-validation.test.ts - New test suite
- src/mcp/tool-docs/workflow_management/n8n-update-partial-workflow.ts - Updated docs
- package.json - Version bump to 2.21.1
- CHANGELOG.md - Comprehensive release notes

Closes #357

🤖 Generated with Claude Code (https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>

Conceived by Romuald Członkowski - www.aiadvisors.pl/en

* fix: Add missing id parameter in test file and JSDoc comment

Address code review feedback from PR #358:
- Add 'id' field to all applyDiff calls in test file (fixes TypeScript errors)
- Add JSDoc comment explaining why 'main' is optional in schema
- Ensures TypeScript compilation succeeds

Changes:
- tests/integration/workflow-diff/ai-node-connection-validation.test.ts:
  Added id parameter to all 13 test cases
- src/services/n8n-validation.ts:
  Added JSDoc explaining optional main connections

Testing:
- npm run typecheck: PASS 
- npm run build: PASS 
- All 13 tests: PASS 

🤖 Generated with Claude Code (https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>

---------

Co-authored-by: Claude <noreply@anthropic.com>
This commit is contained in:
Romuald Członkowski
2025-10-24 00:11:35 +02:00
committed by GitHub
parent 551fea841b
commit 5702a64a01
6 changed files with 883 additions and 10 deletions

View File

@@ -81,6 +81,10 @@ Full support for all 8 AI connection types used in n8n AI workflows:
- Multiple tools: Batch multiple \`sourceOutput: "ai_tool"\` connections to one AI Agent
- Vector retrieval: Chain ai_embedding → ai_vectorStore → ai_tool → AI Agent
**Important Notes**:
- **AI nodes do NOT require main connections**: Nodes like OpenAI Chat Model, Postgres Chat Memory, Embeddings OpenAI, and Supabase Vector Store use AI-specific connection types exclusively. They should ONLY have connections like \`ai_languageModel\`, \`ai_memory\`, \`ai_embedding\`, or \`ai_tool\` - NOT \`main\` connections.
- **Fixed in v2.21.1**: Validation now correctly recognizes AI nodes that only have AI-specific connections without requiring \`main\` connections (resolves issue #357).
**Best Practices**:
- Always specify \`sourceOutput\` for AI connections (defaults to "main" if omitted)
- Connect language model BEFORE creating/enabling AI Agent (validation requirement)