graph-dependency-analyzer 0.2.0__tar.gz → 2.0.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (113) hide show
  1. graph_dependency_analyzer-2.0.1/PKG-INFO +413 -0
  2. graph_dependency_analyzer-2.0.1/README.md +366 -0
  3. graph_dependency_analyzer-2.0.1/graph_dependency_analyzer.egg-info/PKG-INFO +413 -0
  4. {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/graph_dependency_analyzer.egg-info/SOURCES.txt +1 -0
  5. {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/graph_dependency_analyzer.egg-info/requires.txt +1 -0
  6. {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/pyproject.toml +2 -1
  7. {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/application/services/file_scanner_service.py +9 -1
  8. {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/application/use_cases/index_repository_use_case.py +26 -3
  9. graph_dependency_analyzer-2.0.1/src/cli.py +1068 -0
  10. {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/config/container.py +5 -0
  11. {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/config/settings.py +17 -2
  12. {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/domain/services/dependency_extractor.py +11 -0
  13. graph_dependency_analyzer-2.0.1/src/infrastructure/parsing/tree_sitter_csharp_parser.py +504 -0
  14. graph_dependency_analyzer-0.2.0/PKG-INFO +0 -158
  15. graph_dependency_analyzer-0.2.0/README.md +0 -112
  16. graph_dependency_analyzer-0.2.0/graph_dependency_analyzer.egg-info/PKG-INFO +0 -158
  17. graph_dependency_analyzer-0.2.0/src/cli.py +0 -512
  18. {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/graph_dependency_analyzer.egg-info/dependency_links.txt +0 -0
  19. {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/graph_dependency_analyzer.egg-info/entry_points.txt +0 -0
  20. {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/graph_dependency_analyzer.egg-info/top_level.txt +0 -0
  21. {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/setup.cfg +0 -0
  22. {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/__init__.py +0 -0
  23. {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/application/__init__.py +0 -0
  24. {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/application/dtos/__init__.py +0 -0
  25. {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/application/dtos/affected_component.py +0 -0
  26. {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/application/dtos/batch_processing_result.py +0 -0
  27. {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/application/dtos/impact_analysis_response.py +0 -0
  28. {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/application/dtos/impact_query_request.py +0 -0
  29. {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/application/dtos/index_batch_request.py +0 -0
  30. {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/application/dtos/index_batch_response.py +0 -0
  31. {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/application/dtos/index_result.py +0 -0
  32. {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/application/dtos/repository_index_result.py +0 -0
  33. {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/application/exceptions.py +0 -0
  34. {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/application/services/__init__.py +0 -0
  35. {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/application/services/progress_tracker.py +0 -0
  36. {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/application/use_cases/__init__.py +0 -0
  37. {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/application/use_cases/clear_all_data_use_case.py +0 -0
  38. {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/application/use_cases/index_batch_use_case.py +0 -0
  39. {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/application/use_cases/indexing_orchestrator.py +0 -0
  40. {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/application/use_cases/list_repositories_use_case.py +0 -0
  41. {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/config/__init__.py +0 -0
  42. {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/config/logging_config.py +0 -0
  43. {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/domain/__init__.py +0 -0
  44. {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/domain/entities/__init__.py +0 -0
  45. {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/domain/entities/ast_node.py +0 -0
  46. {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/domain/entities/code_chunk.py +0 -0
  47. {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/domain/entities/code_file.py +0 -0
  48. {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/domain/entities/dependency_graph.py +0 -0
  49. {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/domain/entities/repository.py +0 -0
  50. {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/domain/exceptions.py +0 -0
  51. {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/domain/repositories/__init__.py +0 -0
  52. {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/domain/repositories/i_code_parser.py +0 -0
  53. {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/domain/repositories/i_dependency_extractor.py +0 -0
  54. {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/domain/repositories/i_embedding_provider.py +0 -0
  55. {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/domain/repositories/i_graph_repository.py +0 -0
  56. {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/domain/repositories/i_vector_repository.py +0 -0
  57. {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/domain/services/__init__.py +0 -0
  58. {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/domain/services/semantic_chunk_builder.py +0 -0
  59. {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/domain/value_objects/__init__.py +0 -0
  60. {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/domain/value_objects/chunk_type.py +0 -0
  61. {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/domain/value_objects/dependency_type.py +0 -0
  62. {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/domain/value_objects/node_type.py +0 -0
  63. {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/domain/value_objects/qualified_name.py +0 -0
  64. {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/infrastructure/__init__.py +0 -0
  65. {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/infrastructure/exceptions.py +0 -0
  66. {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/infrastructure/external_apis/__init__.py +0 -0
  67. {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/infrastructure/external_apis/ollama_embedding_provider.py +0 -0
  68. {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/infrastructure/external_apis/openai_embedding_provider.py +0 -0
  69. {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/infrastructure/parsing/__init__.py +0 -0
  70. {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/infrastructure/parsing/config_file_parser.py +0 -0
  71. {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/infrastructure/parsing/gradle_dependency_parser.py +0 -0
  72. {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/infrastructure/parsing/groovy_parser.py +0 -0
  73. {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/infrastructure/parsing/maven_dependency_parser.py +0 -0
  74. {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/infrastructure/parsing/microfrontend_config_parser.py +0 -0
  75. {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/infrastructure/parsing/npm_package_dependency_parser.py +0 -0
  76. {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/infrastructure/parsing/python_parser.py +0 -0
  77. {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/infrastructure/parsing/sql_schema_parser.py +0 -0
  78. {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/infrastructure/parsing/tree_sitter_java_parser.py +0 -0
  79. {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/infrastructure/parsing/tree_sitter_typescript_parser.py +0 -0
  80. {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/infrastructure/persistence/__init__.py +0 -0
  81. {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/infrastructure/persistence/graph_export_repository.py +0 -0
  82. {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/infrastructure/persistence/neo4j_dependency_repository.py +0 -0
  83. {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/infrastructure/persistence/qdrant_vector_repository.py +0 -0
  84. {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/infrastructure/persistence/repository_relationship_repository.py +0 -0
  85. {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/presentation/__init__.py +0 -0
  86. {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/presentation/api/__init__.py +0 -0
  87. {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/presentation/api/rest/__init__.py +0 -0
  88. {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/presentation/api/rest/exception_handlers.py +0 -0
  89. {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/presentation/api/rest/main.py +0 -0
  90. {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/presentation/api/rest/routers/__init__.py +0 -0
  91. {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/presentation/api/rest/routers/admin.py +0 -0
  92. {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/presentation/api/rest/routers/analysis.py +0 -0
  93. {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/presentation/api/rest/routers/export.py +0 -0
  94. {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/presentation/api/rest/routers/health.py +0 -0
  95. {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/presentation/api/rest/routers/indexing.py +0 -0
  96. {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/presentation/api/rest/routers/relationships.py +0 -0
  97. {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/tests/test_api_routers.py +0 -0
  98. {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/tests/test_config.py +0 -0
  99. {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/tests/test_config_file_parser.py +0 -0
  100. {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/tests/test_dependencies.py +0 -0
  101. {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/tests/test_dependency_extractor.py +0 -0
  102. {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/tests/test_dependency_extractor_integration.py +0 -0
  103. {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/tests/test_dependency_injection.py +0 -0
  104. {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/tests/test_domain_entities.py +0 -0
  105. {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/tests/test_e2e_batch_indexing.py +0 -0
  106. {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/tests/test_gradle_dependency_parser.py +0 -0
  107. {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/tests/test_logging.py +0 -0
  108. {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/tests/test_maven_dependency_parser.py +0 -0
  109. {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/tests/test_project_structure.py +0 -0
  110. {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/tests/test_repository_interfaces.py +0 -0
  111. {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/tests/test_semantic_chunk_builder.py +0 -0
  112. {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/tests/test_tree_sitter_parser.py +0 -0
  113. {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/tests/test_value_objects.py +0 -0
@@ -0,0 +1,413 @@
1
+ Metadata-Version: 2.4
2
+ Name: graph-dependency-analyzer
3
+ Version: 2.0.1
4
+ Summary: Knowledge Graph for multi-language repository dependency analysis — Java, TypeScript, Python, Groovy, SQL/Oracle
5
+ Author: Graph Project Team
6
+ License: MIT
7
+ Project-URL: Homepage, https://github.com/ciandt/new-arch-explorer-service
8
+ Project-URL: Repository, https://github.com/ciandt/new-arch-explorer-service
9
+ Project-URL: Issues, https://github.com/ciandt/new-arch-explorer-service/issues
10
+ Keywords: dependency-analysis,knowledge-graph,tree-sitter,neo4j,qdrant,architecture,impact-analysis,java,typescript,python,groovy,oracle
11
+ Classifier: Development Status :: 4 - Beta
12
+ Classifier: Intended Audience :: Developers
13
+ Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
14
+ Classifier: Topic :: Software Development :: Quality Assurance
15
+ Classifier: Programming Language :: Python :: 3
16
+ Classifier: Programming Language :: Python :: 3.11
17
+ Classifier: Programming Language :: Python :: 3.12
18
+ Classifier: Programming Language :: Python :: 3.13
19
+ Classifier: License :: OSI Approved :: MIT License
20
+ Classifier: Operating System :: OS Independent
21
+ Requires-Python: >=3.11
22
+ Description-Content-Type: text/markdown
23
+ Requires-Dist: fastapi>=0.115.0
24
+ Requires-Dist: uvicorn>=0.32.0
25
+ Requires-Dist: qdrant-client>=1.13.0
26
+ Requires-Dist: neo4j>=5.15.0
27
+ Requires-Dist: httpx>=0.28.0
28
+ Requires-Dist: structlog>=24.1.0
29
+ Requires-Dist: python-dotenv>=1.0.0
30
+ Requires-Dist: pydantic>=2.0.0
31
+ Requires-Dist: pydantic-settings>=2.0.0
32
+ Requires-Dist: dependency-injector>=4.41.0
33
+ Requires-Dist: tenacity>=8.2.0
34
+ Requires-Dist: tree-sitter>=0.25.2
35
+ Requires-Dist: tree-sitter-java>=0.23.5
36
+ Requires-Dist: tree-sitter-typescript>=0.23.2
37
+ Requires-Dist: tree-sitter-c-sharp>=0.23.0
38
+ Requires-Dist: lxml>=5.0.0
39
+ Requires-Dist: pyyaml>=6.0.0
40
+ Requires-Dist: click>=8.1.0
41
+ Provides-Extra: dev
42
+ Requires-Dist: pytest>=8.0.0; extra == "dev"
43
+ Requires-Dist: pytest-asyncio>=0.24.0; extra == "dev"
44
+ Requires-Dist: pytest-cov>=7.0.0; extra == "dev"
45
+ Requires-Dist: mypy>=1.8.0; extra == "dev"
46
+ Requires-Dist: ruff>=0.9.0; extra == "dev"
47
+
48
+ # Knowledge Graph Dependency Analyzer
49
+
50
+ Analyze dependencies across all your repositories — Java, TypeScript, Python, Groovy, SQL/Oracle — and visualize cross-repo connections in an interactive graph.
51
+
52
+ [![PyPI](https://img.shields.io/pypi/v/graph-dependency-analyzer)](https://pypi.org/project/graph-dependency-analyzer/)
53
+ [![Python](https://img.shields.io/badge/python-3.11+-blue)](https://python.org)
54
+
55
+ ---
56
+
57
+ ## What it does
58
+
59
+ - **Indexes** source code from multiple repositories (Java, TypeScript/JavaScript, Python, Groovy, SQL/Oracle)
60
+ - **Extracts** classes, methods, endpoints, imports, DB tables, procedures, pipeline stages
61
+ - **Connects** cross-repo dependencies: frontend → backend HTTP calls, procedures → tables, shared libraries
62
+ - **Visualizes** everything in an interactive graph with drill-down per repository
63
+ - **Answers** business questions: *"what is impacted if I change this endpoint?"* via `/graph-impact`
64
+
65
+ ---
66
+
67
+ ## Requirements
68
+
69
+ Before installing, make sure you have:
70
+
71
+ | Dependency | Install |
72
+ |-----------|---------|
73
+ | **Python 3.11+** | [python.org](https://python.org) |
74
+ | **Docker Desktop** | [docs.docker.com/get-docker](https://docs.docker.com/get-docker/) |
75
+ | **Ollama** (optional) | `brew install ollama` or [ollama.com/download](https://ollama.com/download) |
76
+
77
+ > **Note:** Docker is required to run Neo4j and Qdrant locally.
78
+ > Ollama is recommended for local embeddings (no API key, no rate limits).
79
+
80
+ ---
81
+
82
+ ## Installation
83
+
84
+ ```bash
85
+ pip install graph-dependency-analyzer
86
+ ```
87
+
88
+ Or install from source:
89
+
90
+ ```bash
91
+ git clone https://github.com/ciandt/new-arch-explorer-service.git
92
+ cd new-arch-explorer-service
93
+ pip install -e .
94
+ ```
95
+
96
+ ---
97
+
98
+ ## Quick Start
99
+
100
+ Run these commands **in order** the first time:
101
+
102
+ ```bash
103
+ # 1. Create docker-compose.yml (Neo4j + Qdrant + Redis)
104
+ graph-explorer docker-init
105
+
106
+ # 2. Create .env.graph configuration file
107
+ graph-explorer env-init
108
+ # → Edit .env.graph: set REPOSITORIES_PATH and EMBEDDING_PROVIDER
109
+
110
+ # 3. Install Ollama + embedding model (local, free)
111
+ graph-explorer ollama-setup
112
+
113
+ # 4. Install Claude Code skills (/graph-index, /graph-link, /graph-impact)
114
+ graph-explorer skills
115
+
116
+ # 5. Run the full setup wizard
117
+ graph-explorer init
118
+
119
+ # 6. Start the API server
120
+ graph-explorer start
121
+ # → API running at http://localhost:8000
122
+
123
+ # 7. Index your repositories
124
+ graph-explorer index repo1 repo2 repo3
125
+
126
+ # 8. Connect cross-repo dependencies
127
+ graph-explorer link
128
+
129
+ # 9. Open the graph in browser
130
+ graph-explorer open
131
+ ```
132
+
133
+ ---
134
+
135
+ ## CLI Reference
136
+
137
+ ### `graph-explorer env-init`
138
+
139
+ Creates a `.env.graph` configuration file in the current directory.
140
+
141
+ ```bash
142
+ graph-explorer env-init # creates .env.graph in current dir
143
+ graph-explorer env-init --path ~/myproject # creates in specific path
144
+ graph-explorer env-init --force # overwrite existing
145
+ ```
146
+
147
+ **Required settings to edit after creation:**
148
+
149
+ ```bash
150
+ REPOSITORIES_PATH=/absolute/path/to/your/repos # ← required
151
+ EMBEDDING_PROVIDER=ollama # or: flow / openai
152
+ ```
153
+
154
+ ---
155
+
156
+ ### `graph-explorer docker-init`
157
+
158
+ Creates `docker-compose.yml` with Neo4j, Qdrant and Redis.
159
+
160
+ ```bash
161
+ graph-explorer docker-init # creates in current dir
162
+ graph-explorer docker-init --path ~/myproject # creates in specific path
163
+ graph-explorer docker-init --force # overwrite existing
164
+ ```
165
+
166
+ After creating, start the containers:
167
+
168
+ ```bash
169
+ docker compose up -d
170
+ ```
171
+
172
+ Services:
173
+ - **Neo4j** → http://localhost:7474 (user: `neo4j` / pass: `medline2024`)
174
+ - **Qdrant** → http://localhost:6333/dashboard
175
+ - **Redis** → localhost:6379
176
+
177
+ ---
178
+
179
+ ### `graph-explorer ollama-setup`
180
+
181
+ Installs Ollama and downloads the `nomic-embed-text` embedding model (274MB, 768-dim).
182
+
183
+ ```bash
184
+ graph-explorer ollama-setup # install Ollama + pull model
185
+ graph-explorer ollama-setup --skip-install # only pull model (Ollama already installed)
186
+ ```
187
+
188
+ Detects your OS and installs automatically:
189
+ - **Mac**: via Homebrew or direct download
190
+ - **Linux**: via official install script
191
+ - **Windows**: opens download page
192
+
193
+ ---
194
+
195
+ ### `graph-explorer ollama-start`
196
+
197
+ Starts the Ollama server in the background.
198
+
199
+ ```bash
200
+ graph-explorer ollama-start # start in background (default)
201
+ graph-explorer ollama-start --background # explicit background
202
+ ```
203
+
204
+ ---
205
+
206
+ ### `graph-explorer skills`
207
+
208
+ Installs `/graph-index`, `/graph-link` and `/graph-impact` commands into Claude Code.
209
+
210
+ ```bash
211
+ graph-explorer skills # install globally (~/.claude/skills/)
212
+ graph-explorer skills --target ./myproject # install in specific project only
213
+ graph-explorer skills --list # show installation status
214
+ graph-explorer skills --uninstall # remove graph skills
215
+ ```
216
+
217
+ After installing, use in Claude Code:
218
+
219
+ ```
220
+ /graph-index wdc-packing-list wdc-ui # index repos
221
+ /graph-link # connect dependencies
222
+ /graph-impact quero criar tela de usuario # business impact analysis
223
+ ```
224
+
225
+ ---
226
+
227
+ ### `graph-explorer init`
228
+
229
+ Guided setup wizard — checks all dependencies and configures the project.
230
+
231
+ ```bash
232
+ graph-explorer init # full wizard
233
+ graph-explorer init --skip-docker # skip Docker setup
234
+ graph-explorer init --skip-ollama # skip Ollama setup
235
+ ```
236
+
237
+ Runs checks for: `.env.graph`, Docker containers, Ollama, Claude skills.
238
+
239
+ ---
240
+
241
+ ### `graph-explorer start`
242
+
243
+ Starts the API server (FastAPI + Uvicorn).
244
+
245
+ ```bash
246
+ graph-explorer start # default: port 8000, auto-reload
247
+ graph-explorer start --port 9000 # custom port
248
+ graph-explorer start --no-reload # disable auto-reload
249
+ ```
250
+
251
+ Once running:
252
+ - **API docs**: http://localhost:8000/docs
253
+ - **Graph UI**: http://localhost:8000/api/analysis/repository-relationships/graph.html
254
+
255
+ ---
256
+
257
+ ### `graph-explorer index`
258
+
259
+ Indexes one or more repositories into the Knowledge Graph.
260
+
261
+ ```bash
262
+ graph-explorer index wdc-packing-list wdc-ui wdc-ui-external
263
+ graph-explorer index wms-oracle --parallel 1 # use parallel=1 for large repos
264
+ graph-explorer index wmsportal --parallel 1 # wmsportal = 3k+ files
265
+ ```
266
+
267
+ Auto-detects parallel limit:
268
+ - Large repos (`wmsportal`, `wms-oracle`, `wms-oracle-fork`) → `parallel: 1`
269
+ - All others → `parallel: 3`
270
+
271
+ Supported languages: **Java, TypeScript, JavaScript, Python, Groovy, SQL/Oracle**
272
+
273
+ ---
274
+
275
+ ### `graph-explorer link`
276
+
277
+ Connects cross-repository dependencies after indexing.
278
+
279
+ ```bash
280
+ graph-explorer link # run both linkers
281
+ graph-explorer link --http-only # only connect HTTP calls (frontend→backend)
282
+ graph-explorer link --db-only # only resolve DB refs (procedures→tables)
283
+ ```
284
+
285
+ Runs two operations:
286
+ 1. **cross-language-link** — matches `axios.get('/api/users')` → `@GetMapping("/api/users")`
287
+ 2. **resolve-db-refs** — connects Oracle procedures/packages to their tables
288
+
289
+ ---
290
+
291
+ ### `graph-explorer status`
292
+
293
+ Shows the current state of all services and graph statistics.
294
+
295
+ ```bash
296
+ graph-explorer status
297
+ ```
298
+
299
+ Output example:
300
+ ```
301
+ 📊 Knowledge Graph Status
302
+
303
+ ✅ API running
304
+ ✅ qdrant: Vector database operational
305
+ ✅ neo4j: Graph database operational
306
+ ✅ Docker
307
+ ✅ Ollama running
308
+ ✅ nomic-embed-text installed
309
+
310
+ 📈 Graph: 131 repos | 89 relationships
311
+ ```
312
+
313
+ ---
314
+
315
+ ### `graph-explorer open`
316
+
317
+ Opens the dependency graph in your browser.
318
+
319
+ ```bash
320
+ graph-explorer open # open full repository map
321
+ graph-explorer open --repo wdc-packing-list # open specific repo graph
322
+ ```
323
+
324
+ ---
325
+
326
+ ## Embedding Provider Options
327
+
328
+ Edit `.env.graph` to choose your embedding provider:
329
+
330
+ ### Option A — Ollama (recommended)
331
+ No API key, no rate limits, runs locally.
332
+
333
+ ```bash
334
+ EMBEDDING_PROVIDER=ollama
335
+ OLLAMA_EMBEDDING_MODEL=nomic-embed-text
336
+ QDRANT_VECTOR_SIZE=768
337
+ ```
338
+
339
+ Setup: `graph-explorer ollama-setup`
340
+
341
+ ### Option B — CI&T Flow
342
+ Uses the CI&T Flow proxy.
343
+
344
+ ```bash
345
+ EMBEDDING_PROVIDER=flow
346
+ OPENAI_API_KEY=your-flow-token
347
+ OPENAI_BASE_URL=https://flow.ciandt.com/ai-orchestration-api
348
+ QDRANT_VECTOR_SIZE=1536
349
+ ```
350
+
351
+ ### Option C — OpenAI
352
+ Direct OpenAI API.
353
+
354
+ ```bash
355
+ EMBEDDING_PROVIDER=openai
356
+ OPENAI_API_KEY=sk-your-key
357
+ QDRANT_VECTOR_SIZE=1536
358
+ ```
359
+
360
+ > ⚠️ **Changing provider** requires clearing Qdrant and re-indexing everything
361
+ > because vector dimensions differ between providers.
362
+
363
+ ---
364
+
365
+ ## Re-indexing
366
+
367
+ Re-indexing is safe — Neo4j uses `MERGE` so no duplicates are created.
368
+ Use it when you add new repos or update existing code:
369
+
370
+ ```bash
371
+ graph-explorer index repo1 repo2
372
+ graph-explorer link
373
+ ```
374
+
375
+ ---
376
+
377
+ ## Architecture
378
+
379
+ ```
380
+ src/
381
+ ├── domain/ entities, value objects, interfaces
382
+ ├── application/ use cases, DTOs, services
383
+ ├── infrastructure/ Neo4j, Qdrant, OpenAI/Ollama, parsers
384
+ │ └── parsing/ Java, TypeScript, Python, Groovy, SQL
385
+ ├── presentation/ FastAPI routers
386
+ └── cli.py graph-explorer CLI
387
+ ```
388
+
389
+ **Stack:** Python 3.11 · FastAPI · Neo4j · Qdrant · Tree-sitter · Ollama · Click
390
+
391
+ ---
392
+
393
+ ## API Reference
394
+
395
+ Full API docs at: http://localhost:8000/docs
396
+
397
+ Key endpoints:
398
+
399
+ | Method | Endpoint | Description |
400
+ |--------|----------|-------------|
401
+ | POST | `/api/indexing/index/batch` | Index repositories |
402
+ | POST | `/api/analysis/impact/cross-language-link` | Link HTTP calls |
403
+ | POST | `/api/analysis/impact/resolve-db-refs` | Resolve DB references |
404
+ | POST | `/api/analysis/impact/search` | Semantic search |
405
+ | GET | `/api/analysis/repository-relationships` | Cross-repo relationships |
406
+ | GET | `/api/analysis/repository-relationships/graph.html` | Interactive graph |
407
+ | GET | `/api/export/graph.html?repository=X` | Repo internal graph |
408
+
409
+ ---
410
+
411
+ ## License
412
+
413
+ MIT