feat: add MCP server multi-source/sink and cloud graph mode support#809
Conversation
🚀 fal.ai Preview Deployment
Livepeer Runner
Testing Livepeer Mode |
❌ E2E Tests failed
Test ArtifactsCheck the workflow run for screenshots, traces, and failure details. |
|
Important Review skippedAuto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
✨ 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 |
a076b3f to
dbb9834
Compare
connect() recreates the output_handlers list, so callbacks registered before it were silently discarded. This caused the sink to receive no frames in cloud relay mode. Port of 50b871c9 from PR #809. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Signed-off-by: Rafał Leszko <rafal@livepeer.org>
Update MCP server to support multi-source/multi-sink workflows: - start_stream: graph mode with validation, cloud relay support, returns sink_node_ids/source_node_ids - capture_frame: sink_node_id parameter for per-sink capture - _wire_cloud_outputs: wire cloud WebRTC outputs to FrameProcessor sink/record queues for headless cloud mode - start_stream/capture_frame MCP tools: graph parameter, sink_node_id Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Signed-off-by: Rafal Leszko <rafal@livepeer.org>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Signed-off-by: Rafał Leszko <rafal@livepeer.org>
3600d3b to
72c44bc
Compare
Fix four runtime AttributeErrors in _wire_cloud_outputs: - Use frame_processor.sink_manager._sink_queues_by_node (not FP directly) - Use frame_processor._cloud_relay.on_frame_from_cloud (not FP directly) - Use webrtc_client.output_handlers[i] list indexing (not .extra_output_handlers.get()) - Use pipeline_id_list for chain_produces_audio (not [None] in graph mode) Also add model_validator to StartStreamRequest, remove redundant torch import, and clean up dead code. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Signed-off-by: Rafał Leszko <rafal@livepeer.org>
Summary
mcp_router.pywith expanded endpoint handling (241 lines changed)mcp_server.pywith new tool definitions (82 lines changed)Test plan
🤖 Generated with Claude Code