Fix webhook reliability and prepare a validated npm release - #24
Merged
Merged
Conversation
georgeatparallel
marked this pull request as ready for review
September 15, 2026 01:03
sergei1152
approved these changes
Sep 15, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This package lets n8n workflows call Parallel for search, chat, research Tasks, and web monitoring. Its two webhook triggers start workflows when Parallel reports a Task result or a Monitor event. This PR fixes how those triggers handle callbacks, puts a real limit on waiting for Task results, and makes the package's release checks consistent.
Callbacks get a clear response
The triggers were marked as AI tools, which failed metadata validation. They also used
noWebhookResponseto skip unwanted events without actually sending a response. In n8n, that flag means the node has already handled the HTTP response, so the sender could be left waiting.The triggers now send HTTP 200 for filtered events without starting a workflow. Missing required event fields get 400, and invalid signatures get 401. Signature verification accepts both Standard and legacy signing formats while still checking the exact request bytes and timestamp. The regular action node remains available as an AI tool.
Fetching details for a callback now has a five-second HTTP timeout. If a Task result fetch fails, the trigger returns 503 so the sender can retry, with no workflow output. Monitor workflows keep the published behavior of emitting
event_group_errorby default; retrying with 503 is opt-in. Monitor output keepsevent_group_ideven when fetching is disabled or fails. Both triggers also exposewebhook_idso workflows can recognize repeat deliveries.Waiting for Tasks has a real budget
The old polling loop checked its deadline between failed requests, but did not cap each HTTP request or sleep to the time left. The new result-wait budget covers both, defaults to 75 minutes, and is configurable from 1 to 120 minutes. n8n's own execution limit can still end the wait sooner.
If retrieval fails or times out, the error includes the existing run ID and explains how to retrieve it later. Timing out does not cancel the remote Task or create another one.
Saved workflows and release checks
Saved Search workflows that omit a mode now default to Basic, preserving the old Base tier. Explicit Base and Pro values keep their mappings. Saved Monitor lookback options now fail with migration instructions instead of silently ignoring the requested history window. The upgrade guide also explains the current signature-secret requirement and Monitor response format changes. Node, credential, and operation identifiers stay unchanged.
CI and release now share formatting, lint, type, test, production-audit, and package checks. The package check installs a temporary tarball and loads every declared node and credential. The release command checks the version tag, event commit, and main ancestry. A dry-run rehearsal executes validation and publish hooks without writing to npm.
Validation and remaining release gates
Both CI jobs passed, and all 21 tests passed locally on Node 22.22 and 24. The release rehearsal passed; deliberately breaking a credential export correctly failed the package check. Review also exercised signed callbacks, saved defaults, bounded polling, recovery, and invalid release contexts. Existing n8n 2.36.8 runtime checks covered package discovery, saved triggers, live API operations, and signed HTTP requests. The actual Parallel callback test used signature validation disabled; signature verification was tested separately.
Publishing still needs Eng approval, the remaining dependency updates and final-main audit, and npm owner confirmation of trusted publishing. Development-tool advisories remain documented. The rehearsal does not prove publishing authority, and no npm version has been published.