{"nodes": [{"id": "users_senko_work_mcma_compose_mcma_backend_app_api_v1_radio_py", "label": "radio.py", "file_type": "code", "source_file": "app/api/v1/radio.py", "source_location": "L1"}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_api_v1_radio_start_radio", "label": "start_radio()", "file_type": "code", "source_file": "app/api/v1/radio.py", "source_location": "L11", "_callable": true}, {"id": "any", "label": "Any", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/senko/Work/mcma-compose/mcma-backend/app/api/v1/radio.py"}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_api_v1_radio_next_radio_track", "label": "next_radio_track()", "file_type": "code", "source_file": "app/api/v1/radio.py", "source_location": "L15", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_api_v1_radio_rationale_1", "label": "Radio / continuous-mix endpoints. Degrades gracefully when ML service is down.", "file_type": "rationale", "source_file": "app/api/v1/radio.py", "source_location": "L1"}], "edges": [{"source": "users_senko_work_mcma_compose_mcma_backend_app_api_v1_radio_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/v1/radio.py", "source_location": "L3", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_api_v1_radio_py", "target": "fastapi", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/v1/radio.py", "source_location": "L5", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_api_v1_radio_py", "target": "users_senko_work_mcma_compose_mcma_backend_app_api_v1_radio_start_radio", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/v1/radio.py", "source_location": "L11", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_api_v1_radio_start_radio", "target": "any", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/api/v1/radio.py", "source_location": "L11", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_api_v1_radio_py", "target": "users_senko_work_mcma_compose_mcma_backend_app_api_v1_radio_next_radio_track", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/v1/radio.py", "source_location": "L15", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_api_v1_radio_next_radio_track", "target": "any", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/api/v1/radio.py", "source_location": "L15", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_api_v1_radio_rationale_1", "target": "users_senko_work_mcma_compose_mcma_backend_app_api_v1_radio_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/api/v1/radio.py", "source_location": "L1", "weight": 1.0}], "raw_calls": []}