Skip to content

docs(nodes): regenerate stale schema tables, fix a dead doc link, unblock the generator on PR branches - #1773

Open
ptlnextdoor wants to merge 6 commits into
rocketride-org:developfrom
ptlnextdoor:docs/RR-regen-node-schema-tables
Open

docs(nodes): regenerate stale schema tables, fix a dead doc link, unblock the generator on PR branches#1773
ptlnextdoor wants to merge 6 commits into
rocketride-org:developfrom
ptlnextdoor:docs/RR-regen-node-schema-tables

Conversation

@ptlnextdoor

@ptlnextdoor ptlnextdoor commented Aug 1, 2026

Copy link
Copy Markdown

Three doc-integrity fixes found by running the audit from #1718 against develop @ b8068d7.

1. A dead link in docs/README-n8n.md

The n8n guide sent readers to a local test harness for the step-by-step:

see that folder's WALKTHROUGH.md for the step-by-step

.context/n8n-test/, its run.sh, and that WALKTHROUGH.md are not in the repo. .context is untracked and not gitignored, and git log --all --diff-filter=D has no record of the file ever existing — it was a local scratch dir that leaked into committed docs. Rewritten to point at examples/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-generate could not run on a PR branch

The 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 from DEFAULT_BRANCH, which resolveDefaultBranch() reads from refs/remotes/origin/HEAD. Output is byte-identical on every branch — verified on this feature branch, where it resolves to develop.

I kept the guard as the default (it does usefully keep unrelated drift out of feature diffs) and added --force for the fix-it-in-the-PR case, rather than removing a deliberate maintainer choice.

Audit delta

before after
orphaned citations 1 0
STALE_PARAMS 23 10

The 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 develop and merges independently.

Summary by CodeRabbit

  • New Features

    • Added CrewAI planning, Anthropic extended thinking, storage tool namespaces, Astra DB settings, and filesystem URL options.
    • Expanded graph database and integration configuration schemas.
    • Documented per-call values for memory and user-specific settings.
  • Documentation

    • Updated n8n setup guidance to use an importable, runnable workflow.
    • Added and improved node schemas, defaults, dependencies, compatibility notes, and source links.
    • Clarified platform-specific runtime requirements and dependency versions.

…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
Copilot AI review requested due to automatic review settings August 1, 2026 20:30
@github-actions github-actions Bot added docs Documentation builder labels Aug 1, 2026
@github-actions

github-actions Bot commented Aug 1, 2026

Copy link
Copy Markdown
Contributor
🤖 Internal: Discord sync marker

Auto-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.
@coderabbitai

coderabbitai Bot commented Aug 1, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Note

Reviews paused

It 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 reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 8a1e9b33-4ba6-4d26-8750-8db60034a6b4

📥 Commits

Reviewing files that changed from the base of the PR and between 29722d6 and 2783577.

📒 Files selected for processing (1)
  • nodes/src/nodes/tool_xtrace_memory/README.md

📝 Walkthrough

Walkthrough

The PR updates node documentation generation, n8n setup instructions, generated schemas, source links, service descriptions, and Python dependency metadata across multiple nodes.

Changes

Documentation and node metadata

Layer / File(s) Summary
Generation controls and n8n instructions
nodes/scripts/gen-node-tables.mjs, docs/README-n8n.md
The generator handles pip options, renders wheel-only dependencies, supports --force, and skips unsupported branches by default. The n8n guide references the dispatcher workflow import.
Generated node schema documentation
nodes/src/nodes/*/README.md
Generated schemas document new fields, corrected namespaces, defaults, descriptions, source links, and node parameters.
Dependency and service metadata
nodes/src/nodes/*/README.md, nodes/src/nodes/*/services.json
README dependency sections add, remove, pin, or platform-scope Python packages. Service metadata clarifies per-call configuration values.

Estimated code review effort: 3 (Moderate) | ~20 minutes

Possibly related issues

  • rocketride-org/rocketride-server#1717 — Addresses documentation drift in the n8n guide and generated node schemas.

Possibly related PRs

Suggested labels: module:nodes

Suggested reviewers: jmaionchi, rod-christensen, stepmikhaylov

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately summarizes the documentation regeneration, dead-link correction, and generator update described in the pull request.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.md by pointing readers to tracked examples/n8n/ assets.
  • Regenerates generated schema/dependency/source blocks across multiple node READMEs to match current services*.json and requirements.txt.
  • Updates nodes/scripts/gen-node-tables.mjs to allow regeneration on non-release branches when --force is 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.

Comment thread nodes/src/nodes/audio_tts/README.md Outdated
Comment on lines +79 to +80
- `--only-binary` `docopt`
- `--only-binary` `num2words`

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

📥 Commits

Reviewing files that changed from the base of the PR and between b8068d7 and f04a8c7.

📒 Files selected for processing (31)
  • docs/README-n8n.md
  • nodes/scripts/gen-node-tables.mjs
  • nodes/src/nodes/agent_crewai/README.md
  • nodes/src/nodes/anonymize/README.md
  • nodes/src/nodes/audio_transcribe/README.md
  • nodes/src/nodes/audio_tts/README.md
  • nodes/src/nodes/cloud_tts/README.md
  • nodes/src/nodes/currency_convert_explicit/README.md
  • nodes/src/nodes/db_mysql/README.md
  • nodes/src/nodes/extract_facts/README.md
  • nodes/src/nodes/graph_falkordb/README.md
  • nodes/src/nodes/graph_hydradb/README.md
  • nodes/src/nodes/landing_ai/README.md
  • nodes/src/nodes/llm_anthropic/README.md
  • nodes/src/nodes/store_astra/README.md
  • nodes/src/nodes/store_atlas/README.md
  • nodes/src/nodes/store_milvus/README.md
  • nodes/src/nodes/store_postgres/README.md
  • nodes/src/nodes/store_qdrant/README.md
  • nodes/src/nodes/store_weaviate/README.md
  • nodes/src/nodes/telegram/README.md
  • nodes/src/nodes/text_output/README.md
  • nodes/src/nodes/tool_cognee/README.md
  • nodes/src/nodes/tool_filesystem/README.md
  • nodes/src/nodes/tool_guild/README.md
  • nodes/src/nodes/tool_laserdata_memory/README.md
  • nodes/src/nodes/tool_mem0/README.md
  • nodes/src/nodes/tool_n8n/README.md
  • nodes/src/nodes/tool_oura/README.md
  • nodes/src/nodes/tool_pipedrive/README.md
  • nodes/src/nodes/webhook/README.md

Comment thread nodes/scripts/gen-node-tables.mjs
Comment thread nodes/src/nodes/store_weaviate/README.md
Comment thread nodes/src/nodes/tool_laserdata_memory/README.md Outdated
Comment thread nodes/src/nodes/tool_oura/README.md
ptlnextdoor added a commit to ptlnextdoor/rocketride-server that referenced this pull request Aug 1, 2026
…— 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.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 win

Keep the task signature and force usage consistent.

builder nodes:docs-generate --force invokes execCommand('node', [path.join(__dirname, 'gen-node-tables.mjs')], ...) directly without the nodes:docs-generate arg; that value becomes argv[1], so filter by arg !== 'nodes:docs-generate' before excluding --force. The --force flag still reaches process.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

📥 Commits

Reviewing files that changed from the base of the PR and between 31b40d0 and 8e66eda.

📒 Files selected for processing (2)
  • nodes/scripts/gen-node-tables.mjs
  • nodes/src/nodes/audio_tts/README.md

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

📥 Commits

Reviewing files that changed from the base of the PR and between 8e66eda and 29722d6.

📒 Files selected for processing (6)
  • nodes/src/nodes/tool_laserdata_memory/README.md
  • nodes/src/nodes/tool_laserdata_memory/services.json
  • nodes/src/nodes/tool_mem0/README.md
  • nodes/src/nodes/tool_mem0/services.json
  • nodes/src/nodes/tool_xtrace_memory/README.md
  • nodes/src/nodes/tool_xtrace_memory/services.json

Comment thread nodes/src/nodes/tool_xtrace_memory/README.md
… 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.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

builder docs Documentation

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants