docs(nodes): regenerate stale schema tables, fix a dead doc link, unblock the generator on PR branches - #1773
Conversation
…lock the generator on PR branches Three related things, all verified with the docs audit from rocketride-org#1718. 1. docs/README-n8n.md pointed readers at a local test harness (.context/n8n-test/, its run.sh, and a WALKTHROUGH.md) for the step-by-step. None of it is in the repo: .context is untracked, not gitignored, and git history has no record of the file ever existing. It was someone's local scratch dir that leaked into committed docs. Rewritten to reference examples/n8n/ and the importable dispatch workflow, which do exist. 2. Regenerated 25 node schema tables that had drifted from their services*.json. Generated content only; hand-authored prose untouched. 3. nodes:docs-generate refused to run on any branch but main/stage/develop, so a contributor could never regenerate a stale table in the PR that fixes it. The stated reason -- "branch name is baked into URLs" -- is not true: sourceBlock() builds links from DEFAULT_BRANCH, which resolveDefaultBranch() reads from refs/remotes/origin/HEAD, so output is byte-identical on every branch (verified on a feature branch: resolves to 'develop'). Kept the guard as the default to avoid sweeping unrelated drift into feature diffs, added --force for the fix-it-in-the-PR case, and corrected the comment. Audit, before -> after on this branch: orphaned citations 1 -> 0 STALE_PARAMS 23 -> 10
🤖 Internal: Discord sync markerAuto-managed by the Discord notification workflow. Stores the linked Discord message ID and forum thread ID. Do not edit or delete. |
cloud_tts, landing_ai, tool_mem0 and tool_n8n were the only 4 of 112 node READMEs without ROCKETRIDE:GENERATED:PARAMS markers, so nodes:docs-generate skipped them by design and their schemas were never machine-checked. Markers appended at the end, matching where the block sits in the other 108, then generated. The generator only writes between the markers, so each file's hand-authored prose is untouched -- including the conceptual Configuration tables (e.g. cloud_tts's profile/field/env-fallback table), which explain where a setting comes from and are not something the generated field dump replaces. Audit on this branch is now: 399 citations, 0 orphaned, 9 gaps -- and all 9 are the MISSING_DOC nodes whose READMEs are written in rocketride-org#1718.
|
Note Reviews pausedIt looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the Use the following commands to manage reviews:
Use the checkboxes below for quick actions:
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: ASSERTIVE Plan: Pro Plus Run ID: 📒 Files selected for processing (1)
📝 WalkthroughWalkthroughThe PR updates node documentation generation, n8n setup instructions, generated schemas, source links, service descriptions, and Python dependency metadata across multiple nodes. ChangesDocumentation and node metadata
Estimated code review effort: 3 (Moderate) | ~20 minutes Possibly related issues
Possibly related PRs
Suggested labels: Suggested reviewers: 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Pull request overview
This PR improves documentation integrity across the nodes docs by removing a dead reference in the n8n guide, regenerating stale generated schema/dependency/source blocks from services*.json + requirements.txt, and making the nodes:docs-generate script usable on PR branches via an explicit --force escape hatch.
Changes:
- Fixes a dead docs link in
docs/README-n8n.mdby pointing readers to trackedexamples/n8n/assets. - Regenerates generated schema/dependency/source blocks across multiple node READMEs to match current
services*.jsonandrequirements.txt. - Updates
nodes/scripts/gen-node-tables.mjsto allow regeneration on non-release branches when--forceis provided.
Reviewed changes
Copilot reviewed 31 out of 31 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| docs/README-n8n.md | Replaces an untracked .context/... reference with links to tracked n8n examples/workflow JSON. |
| nodes/scripts/gen-node-tables.mjs | Adds --force override to allow docs generation on PR branches; refines CLI arg handling. |
| nodes/src/nodes/webhook/README.md | Regenerated schema section now includes a Tools service subsection. |
| nodes/src/nodes/tool_pipedrive/README.md | Regenerated schema/dependencies/source block from current service/requirements definitions. |
| nodes/src/nodes/tool_oura/README.md | Aligns Dependencies section output with requirements.txt (un-pinned requests). |
| nodes/src/nodes/tool_laserdata_memory/README.md | Regenerated schema/dependencies/source block. |
| nodes/src/nodes/tool_guild/README.md | Regenerated schema/dependencies/source block. |
| nodes/src/nodes/tool_filesystem/README.md | Regenerated schema table reflecting new/updated config fields. |
| nodes/src/nodes/tool_cognee/README.md | Regenerated schema/dependencies/source block. |
| nodes/src/nodes/text_output/README.md | Updates Dependencies list to match requirements.txt. |
| nodes/src/nodes/telegram/README.md | Updates Dependencies list to match requirements.txt (aiohttp version). |
| nodes/src/nodes/store_weaviate/README.md | Regenerated schema/dependencies to reflect new field(s) and grpc pins in requirements. |
| nodes/src/nodes/store_qdrant/README.md | Updates Dependencies list to match requirements.txt (qdrant_client pin). |
| nodes/src/nodes/store_postgres/README.md | Regenerated schema table to include postgres.serverName. |
| nodes/src/nodes/store_milvus/README.md | Regenerated schema table to include milvus.serverName. |
| nodes/src/nodes/store_atlas/README.md | Regenerated schema table to include atlas.serverName. |
| nodes/src/nodes/store_astra/README.md | Regenerated schema table to include astra_db.serverName. |
| nodes/src/nodes/llm_anthropic/README.md | Regenerated schema table to include extendedThinking. |
| nodes/src/nodes/graph_hydradb/README.md | Regenerated schema/dependencies/source block. |
| nodes/src/nodes/graph_falkordb/README.md | Regenerated schema table (field namespace rename + updated source link). |
| nodes/src/nodes/extract_facts/README.md | Populates generated schema/source content where previously empty. |
| nodes/src/nodes/db_mysql/README.md | Adds a Dependencies section to align doc with runtime requirements. |
| nodes/src/nodes/currency_convert_explicit/README.md | Replaces placeholder marker text with regenerated schema/source block. |
| nodes/src/nodes/audio_tts/README.md | Regenerated schema/dependencies/source block (currently exposes pip options in deps list). |
| nodes/src/nodes/audio_transcribe/README.md | Updates Dependencies list to match requirements.txt (onnxruntime split/pins). |
| nodes/src/nodes/anonymize/README.md | Regenerated schema/dependencies to reflect current services/requirements. |
| nodes/src/nodes/agent_crewai/README.md | Updates schema/dependencies output (adds planning field; constrains crewai version). |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| - `--only-binary` `docopt` | ||
| - `--only-binary` `num2words` |
There was a problem hiding this comment.
Actionable comments posted: 4
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@nodes/scripts/gen-node-tables.mjs`:
- Around line 218-225: Update the branch guard in the generator flow to fail
closed when branch resolution returns an empty value: reject any branch not
present in the allowed set, including ''. Preserve the existing --force override
and skip message behavior.
In `@nodes/src/nodes/store_weaviate/README.md`:
- Line 124: Align the Weaviate profile default across the service metadata and
documentation by choosing the intended cloud or local value, then update the
corresponding weaviate.profile.default and preconfig prose and rerun
nodes:docs-generate; do not manually edit the generated schema table.
In `@nodes/src/nodes/tool_laserdata_memory/README.md`:
- Line 110: Update the source metadata descriptions for laserdata.namespace and
the Mem0 run_id and user_id fields, replacing each “Can be passed by the agent
per call” fragment with explicit-subject wording; use “The agent can pass a
namespace per call” for nodes/src/nodes/tool_laserdata_memory/README.md:110-110
and explicit run_id/user_id sentences for
nodes/src/nodes/tool_mem0/README.md:60-63. Regenerate both READMEs from the
metadata rather than editing generated content directly.
In `@nodes/src/nodes/tool_oura/README.md`:
- Line 99: Restore the requests minimum version to requests>=2.34.2 in the node
requirements, then regenerate the generated Dependency block in the tool_oura
README so it reflects that constraint.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: ASSERTIVE
Plan: Pro Plus
Run ID: 6d34ed34-c9cd-4322-b156-b1de37999d78
📒 Files selected for processing (31)
docs/README-n8n.mdnodes/scripts/gen-node-tables.mjsnodes/src/nodes/agent_crewai/README.mdnodes/src/nodes/anonymize/README.mdnodes/src/nodes/audio_transcribe/README.mdnodes/src/nodes/audio_tts/README.mdnodes/src/nodes/cloud_tts/README.mdnodes/src/nodes/currency_convert_explicit/README.mdnodes/src/nodes/db_mysql/README.mdnodes/src/nodes/extract_facts/README.mdnodes/src/nodes/graph_falkordb/README.mdnodes/src/nodes/graph_hydradb/README.mdnodes/src/nodes/landing_ai/README.mdnodes/src/nodes/llm_anthropic/README.mdnodes/src/nodes/store_astra/README.mdnodes/src/nodes/store_atlas/README.mdnodes/src/nodes/store_milvus/README.mdnodes/src/nodes/store_postgres/README.mdnodes/src/nodes/store_qdrant/README.mdnodes/src/nodes/store_weaviate/README.mdnodes/src/nodes/telegram/README.mdnodes/src/nodes/text_output/README.mdnodes/src/nodes/tool_cognee/README.mdnodes/src/nodes/tool_filesystem/README.mdnodes/src/nodes/tool_guild/README.mdnodes/src/nodes/tool_laserdata_memory/README.mdnodes/src/nodes/tool_mem0/README.mdnodes/src/nodes/tool_n8n/README.mdnodes/src/nodes/tool_oura/README.mdnodes/src/nodes/tool_pipedrive/README.mdnodes/src/nodes/webhook/README.md
…— the keys were wrong The 9 node READMEs added in this PR documented their config with hand-maintained tables. Every field name in them was missing its node prefix, so they named configuration that does not exist: documented actual maxEdge background_removal.maxEdge task caption.task threshold detect.threshold crf / fps composer.crf / composer.fps video_composer is the worst case: its schema prefix is `composer.`, not the node's directory name, so a reader could not have guessed it. Anyone copying these into a pipe config would get a silently broken node. AGENTS.md already says schema tables are generated and must not be hand-edited; these were the only node docs not following that, which is also why a hand-written table could drift this far in the first place. Replaced with ROCKETRIDE:GENERATED:PARAMS blocks from nodes:docs-generate, and prefixed the same keys where they appear in surrounding prose. Enum *values* (`caption`, `detailed_caption`, `more_detailed_caption`) are left bare -- they are values, not keys. The generated descriptions are also better than what they replace: e.g. depth_estimate.maxEdge now documents the upsample-back behavior and the VRAM/sharpness tradeoff, which the hand-written row omitted. MISSING_PARAMS on this branch: 13 -> 4. The remaining 4 (cloud_tts, landing_ai, tool_mem0, tool_n8n) are fixed in rocketride-org#1773. Verified: 24 passed, ruff clean. Generator itself untouched on this branch — the --force flag used to run it here lives in rocketride-org#1773.
…ble branch From review on rocketride-org#1773. git() returns '' when branch resolution fails (detached HEAD, no git on PATH). The guard read: if (!force && branch && !allowed.has(branch)) so an empty branch short-circuited the check and the generator ran unguarded, rewriting every node doc from unknown provenance. Testing the allowlist directly fails closed instead. Only the unresolvable-branch case changes: branch force before after develop false RUN RUN feature/x false SKIP SKIP (unresolved) false RUN SKIP (unresolved) true RUN RUN feature/x true RUN RUN The truthiness check predates this PR; it is fixed here because this PR is what makes the guard bypassable on purpose via --force.
From review on rocketride-org#1773. dependenciesBlock() parsed every non-comment line in requirements.txt as a package, so audio_tts rendered: - `--only-binary` `docopt` - `--only-binary` `num2words` which reads as a package named "--only-binary" constrained to "docopt". `--only-binary <pkg>` does name a real dependency — the package is simply pinned to a wheel — so those now surface as the package with the constraint annotated: - `docopt` _(wheel only)_ - `num2words` _(wheel only)_ Every other option line (index URLs, resolver flags) is dropped rather than rendered. That matters beyond today: rocketride-org#1697 proposes adding --extra-index-url for the torch CPU wheels, which under the old parser would have appeared in every affected node's dependency list as a package. One README changed; zero '--' entries remain repo-wide.
From review on rocketride-org#1773. Four schema descriptions carried the fragment 'Can be passed by the agent per call', which reads as a sentence without a subject in the generated table. Fixed in services.json and regenerated, per the repo rule that generated content is never hand-edited: tool_laserdata_memory namespace tool_mem0 user_id, run_id tool_xtrace_memory user_id The review named the first three; tool_xtrace_memory carried the same fragment and is included so the phrasing is actually consistent rather than fixed only where it was spotted. Wording is per-field rather than a blanket substitution — 'a namespace', 'a user id', 'a run id' — since the point of the change is that the sentence names what the agent passes.
There was a problem hiding this comment.
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
nodes/scripts/gen-node-tables.mjs (1)
224-248: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick winKeep the task signature and force usage consistent.
builder nodes:docs-generate --forceinvokesexecCommand('node', [path.join(__dirname, 'gen-node-tables.mjs')], ...)directly without thenodes:docs-generatearg; that value becomesargv[1], so filter byarg !== 'nodes:docs-generate'before excluding--force. The--forceflag still reachesprocess.argv.includes('--force'), so the force path is usable.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@nodes/scripts/gen-node-tables.mjs` around lines 224 - 248, Update the CLI argument filtering used to build the `only` set in the node table generator: remove the injected `nodes:docs-generate` argument before excluding `--force`. Preserve `process.argv.includes('--force')` so forced generation continues to bypass the branch guard, while named node arguments remain supported.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Outside diff comments:
In `@nodes/scripts/gen-node-tables.mjs`:
- Around line 224-248: Update the CLI argument filtering used to build the
`only` set in the node table generator: remove the injected
`nodes:docs-generate` argument before excluding `--force`. Preserve
`process.argv.includes('--force')` so forced generation continues to bypass the
branch guard, while named node arguments remain supported.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: ASSERTIVE
Plan: Pro Plus
Run ID: f4b71260-1819-4891-8df9-0068f8624a84
📒 Files selected for processing (2)
nodes/scripts/gen-node-tables.mjsnodes/src/nodes/audio_tts/README.md
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@nodes/src/nodes/tool_xtrace_memory/README.md`:
- Line 150: Update the authored configuration table entry for
xtrace_memory.user_id near the existing table definition to use the same
explicit-subject wording as the generated row: “The agent can pass a user id per
call.” Do not modify generated schema content or generator-owned sections.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: ASSERTIVE
Plan: Pro Plus
Run ID: 92a3f98b-f1f4-4c00-8cea-4c055bd76667
📒 Files selected for processing (6)
nodes/src/nodes/tool_laserdata_memory/README.mdnodes/src/nodes/tool_laserdata_memory/services.jsonnodes/src/nodes/tool_mem0/README.mdnodes/src/nodes/tool_mem0/services.jsonnodes/src/nodes/tool_xtrace_memory/README.mdnodes/src/nodes/tool_xtrace_memory/services.json
… row From review on rocketride-org#1773. The previous commit fixed the fragment in services.json, so the generated row reads 'The agent can pass a user id per call' while the hand-authored configuration table two sections above still said 'Can be passed by the agent per call' — the same README describing one field two ways. Only tool_xtrace_memory had an authored duplicate of that sentence; tool_mem0 and tool_laserdata_memory carry it in the generated block only.
Three doc-integrity fixes found by running the audit from #1718 against
develop@b8068d7.1. A dead link in
docs/README-n8n.mdThe n8n guide sent readers to a local test harness for the step-by-step:
.context/n8n-test/, itsrun.sh, and thatWALKTHROUGH.mdare not in the repo..contextis untracked and not gitignored, andgit log --all --diff-filter=Dhas no record of the file ever existing — it was a local scratch dir that leaked into committed docs. Rewritten to point atexamples/n8n/and the importable dispatch workflow, which do exist.2. 25 node schema tables regenerated
Generated blocks had drifted from their
services*.json. Generated content only; hand-authored prose around the markers is untouched.3.
nodes:docs-generatecould not run on a PR branchThe guard skipped every branch except main/stage/develop, so a contributor could never regenerate a stale table in the PR that fixes it — the one place the fix belongs.
Its stated reason is not accurate:
// ... (branch name is baked into URLs).sourceBlock()builds links fromDEFAULT_BRANCH, whichresolveDefaultBranch()reads fromrefs/remotes/origin/HEAD. Output is byte-identical on every branch — verified on this feature branch, where it resolves todevelop.I kept the guard as the default (it does usefully keep unrelated drift out of feature diffs) and added
--forcefor the fix-it-in-the-PR case, rather than removing a deliberate maintainer choice.Audit delta
STALE_PARAMSThe remaining 10 turned out to be a false positive in the audit itself, fixed separately on #1718; with that fix they go to 0.
Stacked on #1718 only for the audit tool — this branch is cut from
developand merges independently.Summary by CodeRabbit
New Features
Documentation