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.
- graph_dependency_analyzer-2.0.1/PKG-INFO +413 -0
- graph_dependency_analyzer-2.0.1/README.md +366 -0
- graph_dependency_analyzer-2.0.1/graph_dependency_analyzer.egg-info/PKG-INFO +413 -0
- {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/graph_dependency_analyzer.egg-info/SOURCES.txt +1 -0
- {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/graph_dependency_analyzer.egg-info/requires.txt +1 -0
- {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/pyproject.toml +2 -1
- {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/application/services/file_scanner_service.py +9 -1
- {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/application/use_cases/index_repository_use_case.py +26 -3
- graph_dependency_analyzer-2.0.1/src/cli.py +1068 -0
- {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/config/container.py +5 -0
- {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/config/settings.py +17 -2
- {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/domain/services/dependency_extractor.py +11 -0
- graph_dependency_analyzer-2.0.1/src/infrastructure/parsing/tree_sitter_csharp_parser.py +504 -0
- graph_dependency_analyzer-0.2.0/PKG-INFO +0 -158
- graph_dependency_analyzer-0.2.0/README.md +0 -112
- graph_dependency_analyzer-0.2.0/graph_dependency_analyzer.egg-info/PKG-INFO +0 -158
- graph_dependency_analyzer-0.2.0/src/cli.py +0 -512
- {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/graph_dependency_analyzer.egg-info/dependency_links.txt +0 -0
- {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/graph_dependency_analyzer.egg-info/entry_points.txt +0 -0
- {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/graph_dependency_analyzer.egg-info/top_level.txt +0 -0
- {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/setup.cfg +0 -0
- {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/__init__.py +0 -0
- {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/application/__init__.py +0 -0
- {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/application/dtos/__init__.py +0 -0
- {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/application/dtos/affected_component.py +0 -0
- {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/application/dtos/batch_processing_result.py +0 -0
- {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/application/dtos/impact_analysis_response.py +0 -0
- {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/application/dtos/impact_query_request.py +0 -0
- {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/application/dtos/index_batch_request.py +0 -0
- {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/application/dtos/index_batch_response.py +0 -0
- {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/application/dtos/index_result.py +0 -0
- {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/application/dtos/repository_index_result.py +0 -0
- {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/application/exceptions.py +0 -0
- {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/application/services/__init__.py +0 -0
- {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/application/services/progress_tracker.py +0 -0
- {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/application/use_cases/__init__.py +0 -0
- {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/application/use_cases/clear_all_data_use_case.py +0 -0
- {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/application/use_cases/index_batch_use_case.py +0 -0
- {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/application/use_cases/indexing_orchestrator.py +0 -0
- {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/application/use_cases/list_repositories_use_case.py +0 -0
- {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/config/__init__.py +0 -0
- {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/config/logging_config.py +0 -0
- {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/domain/__init__.py +0 -0
- {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/domain/entities/__init__.py +0 -0
- {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/domain/entities/ast_node.py +0 -0
- {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/domain/entities/code_chunk.py +0 -0
- {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/domain/entities/code_file.py +0 -0
- {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/domain/entities/dependency_graph.py +0 -0
- {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/domain/entities/repository.py +0 -0
- {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/domain/exceptions.py +0 -0
- {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/domain/repositories/__init__.py +0 -0
- {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/domain/repositories/i_code_parser.py +0 -0
- {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/domain/repositories/i_dependency_extractor.py +0 -0
- {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/domain/repositories/i_embedding_provider.py +0 -0
- {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/domain/repositories/i_graph_repository.py +0 -0
- {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/domain/repositories/i_vector_repository.py +0 -0
- {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/domain/services/__init__.py +0 -0
- {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/domain/services/semantic_chunk_builder.py +0 -0
- {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/domain/value_objects/__init__.py +0 -0
- {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/domain/value_objects/chunk_type.py +0 -0
- {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/domain/value_objects/dependency_type.py +0 -0
- {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/domain/value_objects/node_type.py +0 -0
- {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/domain/value_objects/qualified_name.py +0 -0
- {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/infrastructure/__init__.py +0 -0
- {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/infrastructure/exceptions.py +0 -0
- {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/infrastructure/external_apis/__init__.py +0 -0
- {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/infrastructure/external_apis/ollama_embedding_provider.py +0 -0
- {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/infrastructure/external_apis/openai_embedding_provider.py +0 -0
- {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/infrastructure/parsing/__init__.py +0 -0
- {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/infrastructure/parsing/config_file_parser.py +0 -0
- {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/infrastructure/parsing/gradle_dependency_parser.py +0 -0
- {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/infrastructure/parsing/groovy_parser.py +0 -0
- {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/infrastructure/parsing/maven_dependency_parser.py +0 -0
- {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/infrastructure/parsing/microfrontend_config_parser.py +0 -0
- {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/infrastructure/parsing/npm_package_dependency_parser.py +0 -0
- {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/infrastructure/parsing/python_parser.py +0 -0
- {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/infrastructure/parsing/sql_schema_parser.py +0 -0
- {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/infrastructure/parsing/tree_sitter_java_parser.py +0 -0
- {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/infrastructure/parsing/tree_sitter_typescript_parser.py +0 -0
- {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/infrastructure/persistence/__init__.py +0 -0
- {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/infrastructure/persistence/graph_export_repository.py +0 -0
- {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/infrastructure/persistence/neo4j_dependency_repository.py +0 -0
- {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/infrastructure/persistence/qdrant_vector_repository.py +0 -0
- {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/infrastructure/persistence/repository_relationship_repository.py +0 -0
- {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/presentation/__init__.py +0 -0
- {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/presentation/api/__init__.py +0 -0
- {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/presentation/api/rest/__init__.py +0 -0
- {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/presentation/api/rest/exception_handlers.py +0 -0
- {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/presentation/api/rest/main.py +0 -0
- {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/presentation/api/rest/routers/__init__.py +0 -0
- {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/presentation/api/rest/routers/admin.py +0 -0
- {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/presentation/api/rest/routers/analysis.py +0 -0
- {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/presentation/api/rest/routers/export.py +0 -0
- {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/presentation/api/rest/routers/health.py +0 -0
- {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/presentation/api/rest/routers/indexing.py +0 -0
- {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/src/presentation/api/rest/routers/relationships.py +0 -0
- {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/tests/test_api_routers.py +0 -0
- {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/tests/test_config.py +0 -0
- {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/tests/test_config_file_parser.py +0 -0
- {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/tests/test_dependencies.py +0 -0
- {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/tests/test_dependency_extractor.py +0 -0
- {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/tests/test_dependency_extractor_integration.py +0 -0
- {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/tests/test_dependency_injection.py +0 -0
- {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/tests/test_domain_entities.py +0 -0
- {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/tests/test_e2e_batch_indexing.py +0 -0
- {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/tests/test_gradle_dependency_parser.py +0 -0
- {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/tests/test_logging.py +0 -0
- {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/tests/test_maven_dependency_parser.py +0 -0
- {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/tests/test_project_structure.py +0 -0
- {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/tests/test_repository_interfaces.py +0 -0
- {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/tests/test_semantic_chunk_builder.py +0 -0
- {graph_dependency_analyzer-0.2.0 → graph_dependency_analyzer-2.0.1}/tests/test_tree_sitter_parser.py +0 -0
- {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
|
+
[](https://pypi.org/project/graph-dependency-analyzer/)
|
|
53
|
+
[](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
|