# Połączenia — Graf zależności

> Wizualizuj, jak elementy Twojego kodu łączą się ze sobą

Interaktywny graf zależności oparty na Neo4j z wizualizacją Cytoscape.js. Modeluj strukturę kodu: pliki, klasy, metody, funkcje i ich relacje. Agent AI importuje graf automatycznie.

## Funkcje

- **6 typów node'ów**: File, Class, Method, Function, Const, Module. Każdy z własnym kolorem na grafie.
- **6 typów krawędzi**: CONTAINS, CALLS, IMPORTS, INHERITS, USES, IMPLEMENTS. Pełne modelowanie zależności kodu.
- **Wizualizacja Cytoscape.js**: Interaktywny graf z force-directed layout (cose). Zoom, pan, klikanie node'ów, filtrowanie po typie.
- **Bulk import**: Importuj setki node'ów i krawędzi jednym requestem. Idealne do automatycznej synchronizacji z kodem.
- **Wyszukiwanie ścieżki**: Znajdź najkrótszą ścieżkę między dwoma elementami. Cypher query w Neo4j.
- **Graceful degradation**: Neo4j niedostępny? Dashboard działa — pokazuje komunikat o niedostępności.

## Jak to działa

1. **Twórz node'y**: Dodaj elementy kodu: pliki, klasy, metody. Opcjonalnie podaj ścieżkę do pliku i numer linii.
2. **Łącz krawędziami**: Zdefiniuj relacje: klasa CONTAINS metodę, metoda CALLS inną metodę, plik IMPORTS moduł.
3. **Eksploruj graf wizualnie**: Otwórz widok grafu. Klikaj node'y, aby zobaczyć szczegóły i połączenia w panelu bocznym.
4. **Automatyzuj z AI**: Agent AI może zaimportować graf zależności Twojego kodu — bulk create nodes i edges przez MCP.

## AI i MCP

Agent AI może zbudować graf zależności Twojego kodu automatycznie i odpytywać go — 9 narzędzi MCP + bulk operacje.

- `create_graph_node`: Utwórz node z typem, nazwą i opcjonalnymi metadanymi
- `bulk_create_graph_nodes`: Importuj wiele node'ów jednym requestem
- `create_graph_edge`: Połącz dwa node'y krawędzią danego typu
- `bulk_create_graph_edges`: Importuj wiele krawędzi jednym requestem
- `query_graph`: Pobierz cały graf lub podgraf filtrowany po typie
- `find_graph_path`: Najkrótsza ścieżka między dwoma node'ami
- `get_graph_stats`: Statystyki: liczba node'ów i krawędzi per typ
- `delete_graph_node`: Usuń node i kaskadowo jego krawędzie
- `delete_graph_edge`: Usuń krawędź między node'ami

## Szczegóły techniczne

- **Baza grafowa**: Neo4j 5 Community. Async driver z izolacją danych per projekt (property project_id na node'ach).
- **Wizualizacja**: Cytoscape.js v3.30.4 (CDN). Force-directed layout (cose). Niestandardowe kolorowanie po typie.
- **Izolacja danych**: Każdy node i krawędź tagowane project_id. Constraint unikalności per typ. HNSW index na project_id.
- **Graceful degradation**: ENABLE_GRAPH_DB=false wyłącza moduł. is_enabled() + try/except zwraca pusty graf.
