{"nodes": [{"id": "users_senko_work_mcma_compose_mcma_backend_app_api_v1_sync_py", "label": "sync.py", "file_type": "code", "source_file": "app/api/v1/sync.py", "source_location": "L1"}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_api_v1_sync_get_changes", "label": "get_changes()", "file_type": "code", "source_file": "app/api/v1/sync.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/sync.py"}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_api_v1_sync_push_changes", "label": "push_changes()", "file_type": "code", "source_file": "app/api/v1/sync.py", "source_location": "L15", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_api_v1_sync_rationale_1", "label": "Client sync endpoints (offline-first event log).", "file_type": "rationale", "source_file": "app/api/v1/sync.py", "source_location": "L1"}], "edges": [{"source": "users_senko_work_mcma_compose_mcma_backend_app_api_v1_sync_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/v1/sync.py", "source_location": "L3", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_api_v1_sync_py", "target": "fastapi", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/api/v1/sync.py", "source_location": "L5", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_api_v1_sync_py", "target": "users_senko_work_mcma_compose_mcma_backend_app_api_v1_sync_get_changes", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/v1/sync.py", "source_location": "L11", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_api_v1_sync_get_changes", "target": "any", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/api/v1/sync.py", "source_location": "L11", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_api_v1_sync_py", "target": "users_senko_work_mcma_compose_mcma_backend_app_api_v1_sync_push_changes", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/api/v1/sync.py", "source_location": "L15", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_api_v1_sync_push_changes", "target": "any", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/api/v1/sync.py", "source_location": "L15", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_api_v1_sync_rationale_1", "target": "users_senko_work_mcma_compose_mcma_backend_app_api_v1_sync_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/api/v1/sync.py", "source_location": "L1", "weight": 1.0}], "raw_calls": []}