Skip to content

feat(docs): enrich node doc.md (deps, schema, classes, source) and retire per-node README#1242

Open
meetp06 wants to merge 1 commit into
rocketride-org:developfrom
meetp06:feat/RR-1239-enrich-node-docs
Open

feat(docs): enrich node doc.md (deps, schema, classes, source) and retire per-node README#1242
meetp06 wants to merge 1 commit into
rocketride-org:developfrom
meetp06:feat/RR-1239-enrich-node-docs

Conversation

@meetp06

@meetp06 meetp06 commented Jun 11, 2026

Copy link
Copy Markdown

Summary

Make each node's co-located doc.md the single source of node documentation: extend the generator so the auto-generated block also documents the node's dependencies, services.json schema fields, Python classes, and a source link, then delete the now-redundant per-node README.md files.

Closes #1239. Supersedes #1232 (the llm_kimi migration is folded in here).

Changes

Generator — nodes/scripts/gen-node-tables.mjs (new sub-sections inside the existing ROCKETRIDE:GENERATED:PARAMS markers; hand-authored prose untouched):

  • Schema fields — per-service services.json field detail (name, type, title/description, const/default); multi-service aware.
  • Dependencies — parsed from requirements.txt (drops # comments / blank lines, keeps version pins).
  • Classes — top-level Python classes per node, their base classes, public method signatures + first-line docstring.
  • Source — link to the node dir on the repo's default branch (derived from origin/HEAD, falls back to develop — tracks renames, not hard-coded).

New — nodes/scripts/extract_node_api.py: stdlib-ast static parser. Never imports/executes node modules (they pull heavy optional deps not present at docs-build time). Emits the class JSON the generator consumes; the generator degrades gracefully (omits Classes) if no Python interpreter is present.

Content

  • Migrated llm_kimi (was README-only) into a proper doc.md.
  • Verified audio_tts / memory_internal / memory_persistent doc.md already carry their README content (the only README "extras" were a redundant H1 title and ../ vs /nodes/ link style) — nothing to fold.
  • Deleted the 89 per-node README.md files; regenerated all doc.md.

Scope decision — nested subcomponent READMEs

The issue's target is nodes/src/nodes/*/README.md (per-node, "strict subset of doc.md"). There are also 12 nested subcomponent READMEs (e.g. core/parser, webhook/chat, agent_crewai/crewai_agent) that document individual sub-services. These are not subsets of any doc.md, contain unique prose, and the docs gather only globs one level (*/doc.md), so they were never on the site. I left them in place rather than blind-delete unique docs. Fully satisfying "no README remains" would mean adding nested doc.md support + extending the gather glob — a separate change. Flagging for your call, @joshuadarron.

Verification

  • nodes:docs-generate is idempotent — re-run produces no diff.
  • All 89/89 doc.md carry a Source link; 88 Classes, 77 Schema, 67 Dependencies sections (the rest legitimately have no classes/fields/deps).
  • Multi-service rendering confirmed: core (14 services), response (9), webhook (3), agent_crewai (3).
  • extract_node_api.py py_compile-clean; static-only (no imports executed).
  • Not verified locally (no toolchain in my env): builder docs:build and builder nodes:test — these are the CI gates. The generated content is plain markdown baked into the committed doc.md, so the docs site renders the committed files regardless of Python availability at site-build time.

🤖 Generated with Claude Code

…-org#1239)

Make each node's co-located doc.md the single source of node documentation.

Generator (nodes/scripts/gen-node-tables.mjs) — the generated block (between
the ROCKETRIDE:GENERATED:PARAMS markers; hand prose untouched) now also emits:
- Schema fields: per-service services.json field detail (name, type,
  title/description, const/default), multi-service aware.
- Dependencies: parsed from requirements.txt (comments/blank lines dropped,
  version pins kept).
- Classes: top-level Python classes per node, their bases, and public method
  signatures + first-line docstring.
- Source: link to the node's directory on the repo's default branch (derived,
  not hard-coded; falls back to develop).

New nodes/scripts/extract_node_api.py — stdlib-ast static parser (no node
modules imported/executed) emitting the class JSON the generator consumes.

Content:
- Migrate llm_kimi (README-only) into a proper doc.md (supersedes rocketride-org#1232).
- Verified audio_tts / memory_internal / memory_persistent doc.md already carry
  their README content (the only README "extras" were a redundant H1 and link
  path style), so nothing to fold.
- Delete the 89 per-node README.md files (nodes/src/nodes/*/README.md), now
  redundant with doc.md and read by nothing (docs gather globs */doc.md).
- Regenerate all doc.md; nodes:docs-generate is idempotent (re-run: no diff).

Scope note: 12 nested subcomponent READMEs (e.g. core/parser, webhook/chat,
agent_crewai/crewai_agent) are left in place — they document individual
sub-services, are not subsets of any doc.md, and fall outside the per-node
*/README.md target. Folding them in needs nested doc.md support (the docs
gather only globs one level), which is a separate change; flagged for the
maintainer.

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

coderabbitai Bot commented Jun 11, 2026

Copy link
Copy Markdown
Contributor

Important

Review skipped

Too many files!

This PR contains 179 files, which is 29 over the limit of 150.

To get a review, narrow the scope:
• coderabbit review --type committed # exclude uncommitted changes
• coderabbit review --dir # limit to a subdirectory
• coderabbit review --base # compare against a closer base

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro

Run ID: 2a41e1e7-995a-4c57-b90f-2dd753aa0413

📥 Commits

Reviewing files that changed from the base of the PR and between 7bbe2b2 and 4d05ac0.

📒 Files selected for processing (179)
  • nodes/scripts/extract_node_api.py
  • nodes/scripts/gen-node-tables.mjs
  • nodes/src/nodes/accessibility_describe/README.md
  • nodes/src/nodes/accessibility_describe/doc.md
  • nodes/src/nodes/agent_crewai/README.md
  • nodes/src/nodes/agent_crewai/doc.md
  • nodes/src/nodes/agent_deepagent/README.md
  • nodes/src/nodes/agent_deepagent/doc.md
  • nodes/src/nodes/agent_langchain/README.md
  • nodes/src/nodes/agent_langchain/doc.md
  • nodes/src/nodes/agent_rocketride/README.md
  • nodes/src/nodes/agent_rocketride/doc.md
  • nodes/src/nodes/anonymize/README.md
  • nodes/src/nodes/anonymize/doc.md
  • nodes/src/nodes/astra_db/README.md
  • nodes/src/nodes/astra_db/doc.md
  • nodes/src/nodes/atlas/README.md
  • nodes/src/nodes/atlas/doc.md
  • nodes/src/nodes/audio_player/README.md
  • nodes/src/nodes/audio_player/doc.md
  • nodes/src/nodes/audio_transcribe/README.md
  • nodes/src/nodes/audio_transcribe/doc.md
  • nodes/src/nodes/audio_tts/README.md
  • nodes/src/nodes/audio_tts/doc.md
  • nodes/src/nodes/autopipe/README.md
  • nodes/src/nodes/autopipe/doc.md
  • nodes/src/nodes/chroma/README.md
  • nodes/src/nodes/chroma/doc.md
  • nodes/src/nodes/core/README.md
  • nodes/src/nodes/core/doc.md
  • nodes/src/nodes/db_clickhouse/README.md
  • nodes/src/nodes/db_clickhouse/doc.md
  • nodes/src/nodes/db_mysql/README.md
  • nodes/src/nodes/db_mysql/doc.md
  • nodes/src/nodes/db_neo4j/README.md
  • nodes/src/nodes/db_neo4j/doc.md
  • nodes/src/nodes/db_postgres/README.md
  • nodes/src/nodes/db_postgres/doc.md
  • nodes/src/nodes/dictionary/README.md
  • nodes/src/nodes/dictionary/doc.md
  • nodes/src/nodes/embedding_image/README.md
  • nodes/src/nodes/embedding_image/doc.md
  • nodes/src/nodes/embedding_openai/README.md
  • nodes/src/nodes/embedding_openai/doc.md
  • nodes/src/nodes/embedding_transformer/README.md
  • nodes/src/nodes/embedding_transformer/doc.md
  • nodes/src/nodes/embedding_video/README.md
  • nodes/src/nodes/embedding_video/doc.md
  • nodes/src/nodes/extract_data/README.md
  • nodes/src/nodes/extract_data/doc.md
  • nodes/src/nodes/frame_grabber/README.md
  • nodes/src/nodes/frame_grabber/doc.md
  • nodes/src/nodes/guardrails/README.md
  • nodes/src/nodes/guardrails/doc.md
  • nodes/src/nodes/image_cleanup/README.md
  • nodes/src/nodes/image_cleanup/doc.md
  • nodes/src/nodes/index_search/README.md
  • nodes/src/nodes/index_search/doc.md
  • nodes/src/nodes/llamaparse/README.md
  • nodes/src/nodes/llamaparse/doc.md
  • nodes/src/nodes/llm_anthropic/README.md
  • nodes/src/nodes/llm_anthropic/doc.md
  • nodes/src/nodes/llm_baidu_qianfan/README.md
  • nodes/src/nodes/llm_baidu_qianfan/doc.md
  • nodes/src/nodes/llm_bedrock/README.md
  • nodes/src/nodes/llm_bedrock/doc.md
  • nodes/src/nodes/llm_deepseek/README.md
  • nodes/src/nodes/llm_deepseek/doc.md
  • nodes/src/nodes/llm_gemini/README.md
  • nodes/src/nodes/llm_gemini/doc.md
  • nodes/src/nodes/llm_gmi_cloud/README.md
  • nodes/src/nodes/llm_gmi_cloud/doc.md
  • nodes/src/nodes/llm_ibm_watson/README.md
  • nodes/src/nodes/llm_ibm_watson/doc.md
  • nodes/src/nodes/llm_kimi/doc.md
  • nodes/src/nodes/llm_minimax/README.md
  • nodes/src/nodes/llm_minimax/doc.md
  • nodes/src/nodes/llm_mistral/README.md
  • nodes/src/nodes/llm_mistral/doc.md
  • nodes/src/nodes/llm_ollama/README.md
  • nodes/src/nodes/llm_ollama/doc.md
  • nodes/src/nodes/llm_openai/README.md
  • nodes/src/nodes/llm_openai/doc.md
  • nodes/src/nodes/llm_openai_api/README.md
  • nodes/src/nodes/llm_openai_api/doc.md
  • nodes/src/nodes/llm_perplexity/README.md
  • nodes/src/nodes/llm_perplexity/doc.md
  • nodes/src/nodes/llm_qwen/README.md
  • nodes/src/nodes/llm_qwen/doc.md
  • nodes/src/nodes/llm_vision_gemini/README.md
  • nodes/src/nodes/llm_vision_gemini/doc.md
  • nodes/src/nodes/llm_vision_mistral/README.md
  • nodes/src/nodes/llm_vision_mistral/doc.md
  • nodes/src/nodes/llm_vision_ollama/README.md
  • nodes/src/nodes/llm_vision_ollama/doc.md
  • nodes/src/nodes/llm_vision_openai/README.md
  • nodes/src/nodes/llm_vision_openai/doc.md
  • nodes/src/nodes/llm_xai/README.md
  • nodes/src/nodes/llm_xai/doc.md
  • nodes/src/nodes/local_text_output/README.md
  • nodes/src/nodes/local_text_output/doc.md
  • nodes/src/nodes/memory_internal/README.md
  • nodes/src/nodes/memory_internal/doc.md
  • nodes/src/nodes/memory_persistent/README.md
  • nodes/src/nodes/memory_persistent/doc.md
  • nodes/src/nodes/milvus/README.md
  • nodes/src/nodes/milvus/doc.md
  • nodes/src/nodes/ner/README.md
  • nodes/src/nodes/ner/doc.md
  • nodes/src/nodes/ocr/README.md
  • nodes/src/nodes/ocr/doc.md
  • nodes/src/nodes/pinecone/README.md
  • nodes/src/nodes/pinecone/doc.md
  • nodes/src/nodes/preprocessor_code/README.md
  • nodes/src/nodes/preprocessor_code/doc.md
  • nodes/src/nodes/preprocessor_langchain/README.md
  • nodes/src/nodes/preprocessor_langchain/doc.md
  • nodes/src/nodes/preprocessor_llm/README.md
  • nodes/src/nodes/preprocessor_llm/doc.md
  • nodes/src/nodes/prompt/README.md
  • nodes/src/nodes/prompt/doc.md
  • nodes/src/nodes/qdrant/README.md
  • nodes/src/nodes/qdrant/doc.md
  • nodes/src/nodes/question/README.md
  • nodes/src/nodes/question/doc.md
  • nodes/src/nodes/reducto/README.md
  • nodes/src/nodes/reducto/doc.md
  • nodes/src/nodes/remote/README.md
  • nodes/src/nodes/remote/doc.md
  • nodes/src/nodes/rerank_cohere/README.md
  • nodes/src/nodes/rerank_cohere/doc.md
  • nodes/src/nodes/response/README.md
  • nodes/src/nodes/response/doc.md
  • nodes/src/nodes/search_exa/README.md
  • nodes/src/nodes/search_exa/doc.md
  • nodes/src/nodes/summarization/README.md
  • nodes/src/nodes/summarization/doc.md
  • nodes/src/nodes/telegram/README.md
  • nodes/src/nodes/telegram/doc.md
  • nodes/src/nodes/text_output/README.md
  • nodes/src/nodes/text_output/doc.md
  • nodes/src/nodes/thumbnail/README.md
  • nodes/src/nodes/thumbnail/doc.md
  • nodes/src/nodes/tool_bland_ai/README.md
  • nodes/src/nodes/tool_bland_ai/doc.md
  • nodes/src/nodes/tool_chartjs/README.md
  • nodes/src/nodes/tool_chartjs/doc.md
  • nodes/src/nodes/tool_exa_search/README.md
  • nodes/src/nodes/tool_exa_search/doc.md
  • nodes/src/nodes/tool_filesystem/README.md
  • nodes/src/nodes/tool_filesystem/doc.md
  • nodes/src/nodes/tool_firecrawl/README.md
  • nodes/src/nodes/tool_firecrawl/doc.md
  • nodes/src/nodes/tool_git/README.md
  • nodes/src/nodes/tool_git/doc.md
  • nodes/src/nodes/tool_github/README.md
  • nodes/src/nodes/tool_github/doc.md
  • nodes/src/nodes/tool_http_request/README.md
  • nodes/src/nodes/tool_http_request/doc.md
  • nodes/src/nodes/tool_mcp_client/README.md
  • nodes/src/nodes/tool_mcp_client/doc.md
  • nodes/src/nodes/tool_pipe/README.md
  • nodes/src/nodes/tool_pipe/doc.md
  • nodes/src/nodes/tool_python/README.md
  • nodes/src/nodes/tool_python/doc.md
  • nodes/src/nodes/tool_tavily/README.md
  • nodes/src/nodes/tool_tavily/doc.md
  • nodes/src/nodes/tool_xtrace_memory/README.md
  • nodes/src/nodes/tool_xtrace_memory/doc.md
  • nodes/src/nodes/twelvelabs/README.md
  • nodes/src/nodes/twelvelabs/doc.md
  • nodes/src/nodes/vectordb_postgres/README.md
  • nodes/src/nodes/vectordb_postgres/doc.md
  • nodes/src/nodes/vectorizer/README.md
  • nodes/src/nodes/vectorizer/doc.md
  • nodes/src/nodes/weaviate/README.md
  • nodes/src/nodes/weaviate/doc.md
  • nodes/src/nodes/webhook/README.md
  • nodes/src/nodes/webhook/doc.md

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ 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 and usage tips.

@github-actions

Copy link
Copy Markdown
🤖 Internal: Discord sync marker

Auto-managed by the Discord notification workflow. Stores the linked Discord message ID. Do not edit or delete.

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.

docs(nodes): enrich doc.md (classes, services.json, requirements) & retire node README.md

1 participant