codegraph-brain 0.6.0__py3-none-any.whl

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 (78) hide show
  1. cgis/__init__.py +10 -0
  2. cgis/__main__.py +16 -0
  3. cgis/api/.gitkeep +0 -0
  4. cgis/api/__init__.py +1 -0
  5. cgis/api/mcp_server.py +550 -0
  6. cgis/cli.py +1516 -0
  7. cgis/core/.gitkeep +0 -0
  8. cgis/core/models.py +140 -0
  9. cgis/extractors/.gitkeep +0 -0
  10. cgis/extractors/_python_ast.py +194 -0
  11. cgis/extractors/_python_classes.py +126 -0
  12. cgis/extractors/_python_functions.py +312 -0
  13. cgis/extractors/_python_imports.py +188 -0
  14. cgis/extractors/_python_types.py +84 -0
  15. cgis/extractors/base.py +42 -0
  16. cgis/extractors/python_extractor.py +235 -0
  17. cgis/extractors/typescript_extractor.py +310 -0
  18. cgis/guardian/__init__.py +1 -0
  19. cgis/guardian/bench.py +199 -0
  20. cgis/guardian/chunked.py +240 -0
  21. cgis/guardian/chunker.py +148 -0
  22. cgis/guardian/collector.py +309 -0
  23. cgis/guardian/core.py +120 -0
  24. cgis/guardian/diff_index.py +151 -0
  25. cgis/guardian/findings.py +70 -0
  26. cgis/guardian/github_poster.py +133 -0
  27. cgis/guardian/metrics.py +108 -0
  28. cgis/guardian/prompts.py +217 -0
  29. cgis/guardian/providers/__init__.py +1 -0
  30. cgis/guardian/providers/base.py +112 -0
  31. cgis/guardian/providers/gemini.py +83 -0
  32. cgis/guardian/providers/mistral.py +83 -0
  33. cgis/guardian/providers/ollama.py +99 -0
  34. cgis/guardian/recording.py +82 -0
  35. cgis/guardian/render.py +107 -0
  36. cgis/guardian/runner.py +295 -0
  37. cgis/guardian/skeptic.py +208 -0
  38. cgis/pipeline.py +252 -0
  39. cgis/py.typed +0 -0
  40. cgis/query/analysis/__init__.py +0 -0
  41. cgis/query/analysis/analyzer.py +241 -0
  42. cgis/query/analysis/anomaly.py +34 -0
  43. cgis/query/analysis/cohesion.py +277 -0
  44. cgis/query/analysis/health.py +128 -0
  45. cgis/query/analysis/suggest_service.py +221 -0
  46. cgis/query/context/__init__.py +0 -0
  47. cgis/query/context/audit.py +134 -0
  48. cgis/query/context/context_service.py +129 -0
  49. cgis/query/context/prompt.py +184 -0
  50. cgis/query/context/snippet.py +96 -0
  51. cgis/query/drift/__init__.py +0 -0
  52. cgis/query/drift/_scc.py +90 -0
  53. cgis/query/drift/drift.py +867 -0
  54. cgis/query/drift/drift_service.py +217 -0
  55. cgis/query/drift/fingerprint.py +255 -0
  56. cgis/query/drift/fractal.py +292 -0
  57. cgis/query/drift/ontology_init.py +470 -0
  58. cgis/query/drift/quotient.py +75 -0
  59. cgis/query/drift/triads.py +234 -0
  60. cgis/query/engine.py +170 -0
  61. cgis/query/fqn.py +65 -0
  62. cgis/query/render/__init__.py +0 -0
  63. cgis/query/render/graph_json.py +42 -0
  64. cgis/query/render/mermaid.py +235 -0
  65. cgis/query/render/metrics.py +346 -0
  66. cgis/resolver/.gitkeep +0 -0
  67. cgis/resolver/__init__.py +1 -0
  68. cgis/resolver/engine.py +145 -0
  69. cgis/resolver/indices.py +184 -0
  70. cgis/resolver/symbols.py +179 -0
  71. cgis/resolver/uplift.py +263 -0
  72. cgis/storage/.gitkeep +0 -0
  73. cgis/storage/sqlite_store.py +589 -0
  74. codegraph_brain-0.6.0.dist-info/METADATA +240 -0
  75. codegraph_brain-0.6.0.dist-info/RECORD +78 -0
  76. codegraph_brain-0.6.0.dist-info/WHEEL +4 -0
  77. codegraph_brain-0.6.0.dist-info/entry_points.txt +3 -0
  78. codegraph_brain-0.6.0.dist-info/licenses/LICENSE +21 -0
@@ -0,0 +1,240 @@
1
+ Metadata-Version: 2.4
2
+ Name: codegraph-brain
3
+ Version: 0.6.0
4
+ Summary: Semantic code graph for AI agents — deterministic FQN resolution, impact analysis and architectural drift gates, exposed over MCP.
5
+ Project-URL: Homepage, https://github.com/zaebee/codegraph-brain
6
+ Project-URL: Repository, https://github.com/zaebee/codegraph-brain
7
+ Project-URL: Documentation, https://github.com/zaebee/codegraph-brain#readme
8
+ Project-URL: Changelog, https://github.com/zaebee/codegraph-brain/blob/main/CHANGELOG.md
9
+ Project-URL: Issues, https://github.com/zaebee/codegraph-brain/issues
10
+ Author-email: Andrey G <zaebuntu@gmail.com>
11
+ License-Expression: MIT
12
+ License-File: LICENSE
13
+ Keywords: ai-agents,architecture,call-graph,code-graph,code-review,llm,mcp,model-context-protocol,static-analysis,tree-sitter
14
+ Classifier: Development Status :: 4 - Beta
15
+ Classifier: Environment :: Console
16
+ Classifier: Intended Audience :: Developers
17
+ Classifier: Operating System :: OS Independent
18
+ Classifier: Programming Language :: Python :: 3
19
+ Classifier: Programming Language :: Python :: 3.12
20
+ Classifier: Programming Language :: Python :: 3.13
21
+ Classifier: Topic :: Software Development :: Documentation
22
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
23
+ Classifier: Topic :: Software Development :: Quality Assurance
24
+ Classifier: Typing :: Typed
25
+ Requires-Python: >=3.12
26
+ Requires-Dist: httpx>=0.27
27
+ Requires-Dist: mcp[cli]>=2
28
+ Requires-Dist: pydantic>=2.13.4
29
+ Requires-Dist: pyyaml>=6.0.2
30
+ Requires-Dist: rich>=15.0.0
31
+ Requires-Dist: structlog>=25.5.0
32
+ Requires-Dist: tree-sitter-python>=0.25.0
33
+ Requires-Dist: tree-sitter-typescript>=0.23.2
34
+ Requires-Dist: tree-sitter>=0.25.2
35
+ Requires-Dist: typer>=0.26.7
36
+ Provides-Extra: all
37
+ Requires-Dist: cohere>=5.0.0; extra == 'all'
38
+ Requires-Dist: duckdb>=1.1.0; extra == 'all'
39
+ Requires-Dist: google-genai>=0.8.0; extra == 'all'
40
+ Requires-Dist: mistralai>=1.0.0; extra == 'all'
41
+ Requires-Dist: ollama>=0.3.0; extra == 'all'
42
+ Provides-Extra: analytics
43
+ Requires-Dist: duckdb>=1.1.0; extra == 'analytics'
44
+ Provides-Extra: guardian
45
+ Requires-Dist: cohere>=5.0.0; extra == 'guardian'
46
+ Requires-Dist: google-genai>=0.8.0; extra == 'guardian'
47
+ Requires-Dist: mistralai>=1.0.0; extra == 'guardian'
48
+ Requires-Dist: ollama>=0.3.0; extra == 'guardian'
49
+ Description-Content-Type: text/markdown
50
+
51
+ # 🧠 CGIS: Code Graph Intelligence System
52
+ ### *The Semantic Ground Truth for AI Agents*
53
+
54
+ [![Continuous Integration](https://github.com/zaebee/codegraph-brain/actions/workflows/ci.yml/badge.svg)](https://github.com/zaebee/codegraph-brain/actions/workflows/ci.yml)
55
+ [![Graph Integrity](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/zaebee/codegraph-brain/main/docs/architecture/health_badge.json)](https://github.com/zaebee/codegraph-brain/actions/workflows/autodoc.yml)
56
+
57
+ **LLM coding agents (Claude, Cursor, GPT) are currently "guessing" your architecture based on flat text snippets. CGIS stops the guessing.**
58
+
59
+ CGIS transforms raw source code into a deterministic, multi-layered semantic graph. It provides AI agents with a high-fidelity architectural model, enabling them to understand not just what the code *says*, but how it *behaves* and *connects*.
60
+
61
+ ---
62
+
63
+ ## ⚡ The Problem: The "Context Gap"
64
+ Traditional RAG (Retrieval-Augmented Generation) feeds agents chunks of text. This leads to:
65
+ * **Hallucinations:** Agents assume connections that don't exist.
66
+ * **Context Bloat:** Passing entire files to explain a single function.
67
+ * **Structural Blindness:** Agents cannot "see" transitive impacts (e.g., *"If I change this, what breaks 5 layers up?"*).
68
+
69
+ ## ✨ The Solution: Semantic Intelligence
70
+ CGIS replaces "textual guessing" with **"structural calculation"**:
71
+ * **Deterministic Resolution:** Full FQN (Fully Qualified Name) resolution via AST-based extraction.
72
+ * **Multi-Layer Ontology:** Goes beyond calls. It understands `CONTAINS`, `DECLARES`, `IMPORTS`, and semantic domains.
73
+ * **Agent-Native (MCP):** Exposes the entire graph as a set of high-performance tools for Claude, Cursor, and custom agents.
74
+ * **Architectural Drift Gates:** Measures how far a change pushes each domain from its *declared* ideal pattern (a motif-basis fingerprint) — a soft, quantitative CI gate for architectural hygiene.
75
+ * **Graph-Aware Code Review:** A built-in LLM reviewer (**Guardian**) that reads the graph as context and reviews pull requests — runs on **local (Ollama) or cloud** models, no vendor lock-in.
76
+ * **Self-Documenting:** The documentation is a living artifact, automatically updated with live architecture diagrams.
77
+
78
+ ---
79
+
80
+ ## 🏗️ Architecture: The Pipeline
81
+
82
+ CGIS operates via a high-speed, three-stage pipeline:
83
+
84
+ 1. **EXTRACT:** Language-specific AST parsers (Tree-sitter) convert source code into raw nodes and edges.
85
+ 2. **RESOLVE:** The `ResolverEngine` disambiguates raw calls into absolute, deterministic FQNs.
86
+ 3. **STORE:** A high-performance SQLite backend enables complex graph traversals (BFS/DFS) in milliseconds.
87
+
88
+ ```mermaid
89
+ graph LR
90
+ A[Source Code] --> B[Extractors]
91
+ B --> C[Resolver Engine]
92
+ C --> D[(SQLite Graph DB)]
93
+ D --> E[MCP Server]
94
+ D --> F[Prompt Compiler]
95
+ E --> G[AI Agents]
96
+ F --> G
97
+ ```
98
+
99
+ ---
100
+
101
+ ## 🚀 Quickstart
102
+
103
+ ### 1. Installation
104
+ Using `uv` (recommended):
105
+ ```bash
106
+ uv pip install -e .
107
+ ```
108
+
109
+ ### 2. Ingest a Repository
110
+ Turn any codebase into a semantic knowledge graph:
111
+ ```bash
112
+ cgis ingest ./my-awesome-project --output graph.db
113
+ ```
114
+
115
+ ### 3. Query the Graph
116
+ Analyze impact or trace execution flow directly from your terminal:
117
+ ```bash
118
+ # Trace the execution path of a function
119
+ cgis trace "my_module.MyClass.my_method" --depth 3 --format mermaid
120
+
121
+ # Analyze the blast radius of a change
122
+ cgis impact "my_module.core_function" --depth 5
123
+ ```
124
+
125
+ ---
126
+
127
+ ## 🤖 Agent Integration (MCP)
128
+
129
+ CGIS is designed to be plugged into your AI workflow via the **Model Context Protocol (MCP)**. Once running, your agent gains "Superpowers":
130
+
131
+ * `cgis_ingest`: Build the knowledge base.
132
+ * `cgis_trace_flow`: Visualize execution paths.
133
+ * `cgis_analyze_impact`: Predict regressions before they happen.
134
+ * `cgis_get_structure`: Understand class/module hierarchy.
135
+ * `cgis_context`: Compile a GraphRAG context package for a symbol.
136
+ * `cgis_drift`: Measure architectural drift vs each domain's ideal pattern.
137
+ * `cgis_metrics`: Coupling, god-classes, PageRank, package cohesion.
138
+ * `cgis_audit_reachability`: Authz/IDOR coverage — does every handler reach its guard?
139
+
140
+ ---
141
+
142
+ ## 🛡️ Guardian: Graph-Aware Code Review
143
+
144
+ **Guardian** is CGIS's built-in LLM reviewer — it reviews pull requests using the *graph* as context, not just the diff text. It runs in CI and posts inline comments anchored to the exact line.
145
+
146
+ * **Two-stage, recall-first:** a **finder** surfaces every plausible defect (optimised for recall), then a separate **skeptic** pass filters false positives — closer to how human reviewers work, and far more reliable than a single precision-gated prompt.
147
+ * **Local *or* cloud, no lock-in:** point it at **Ollama** (`qwen2.5-coder`, `llama3.1`, `granite-code`, …) for free local inference, or at **Mistral / Gemini** in the cloud. You can even mix them — a strong cloud finder with a free local *cross-model* skeptic.
148
+ * **Graph-aware context:** the reviewer sees impact graphs, architectural drift, and project ontology — so it catches structural and convention defects a flat-diff reviewer can't.
149
+ * **Deterministic anchoring:** every inline comment is positioned by a verbatim quote from the diff, not the model's (often wrong) line guess.
150
+ * **Dogfooded & measured:** Guardian reviews CGIS's *own* pull requests, and a benchmark harness scores it against curated ground truth — so prompt changes are validated, not guessed.
151
+
152
+ ```bash
153
+ # Build the graph, then review a PR with a local model (no API key)
154
+ cgis ingest ./src --output graph.db
155
+ GUARDIAN_PROVIDER=ollama GUARDIAN_MODEL=qwen2.5-coder:14b \
156
+ uv run python scripts/guardian_review.py --pr 123 --db graph.db --inline
157
+ ```
158
+
159
+ ---
160
+
161
+ ## 📈 Proof at Real Scale
162
+
163
+ CGIS runs on a working twelve-repository estate — four languages, 8,146 commits, shipping daily. On its 512-file FastAPI backend it classifies **88.4% of 40,493 edges** definitively, and prints the remaining 11.6% instead of inventing targets for them.
164
+
165
+ **[Read the case study →](docs/CASE_STUDY.md)** — every figure measured and reproducible, including what CGIS *doesn't* cover.
166
+
167
+ ---
168
+
169
+ ## 📊 Live System Architecture
170
+ *Kept in sync with the codebase — update this diagram when the core pipeline changes.*
171
+
172
+ <!-- START_CGIS_GRAPH -->
173
+ > *Auto-generated by CGIS parsing its own source — the tool documents itself.*
174
+
175
+ ```mermaid
176
+ graph TD
177
+ classDef classNode fill:#e8f5e9,stroke:#2e7d32,stroke-width:1.5px,color:#1b5e20;
178
+ classDef funcNode fill:#e3f2fd,stroke:#1565c0,stroke-width:1.5px,color:#0d47a1;
179
+ classDef methodNode fill:#f3e5f5,stroke:#7b1fa2,stroke-width:1.5px,color:#4a148c;
180
+ classDef unresolvedNode fill:#fffde7,stroke:#fbc02d,stroke-width:1.5px,stroke-dasharray: 4 4,color:#f57f17;
181
+ classDef defaultNode fill:#fafafa,stroke:#9e9e9e,stroke-width:1.5px,color:#212121;
182
+ classDef stdlibNode fill:#eceff1,stroke:#607d8b,stroke-width:1px,color:#455a64;
183
+ classDef externalNode fill:#fff3e0,stroke:#e65100,stroke-width:1px,stroke-dasharray: 3 3,color:#bf360c;
184
+
185
+ subgraph sg_pipeline["pipeline.py"]
186
+ pipeline_IngestionPipeline_get_extractor["_get_extractor (pipeline.py:245)"]:::methodNode
187
+ pipeline_IngestionPipeline_is_noop_incremental["_is_noop_incremental (pipeline.py:185)"]:::methodNode
188
+ pipeline_IngestionPipeline_persist_incremental["_persist_incremental (pipeline.py:204)"]:::methodNode
189
+ pipeline_IngestionPipeline_process_file["_process_file (pipeline.py:155)"]:::methodNode
190
+ pipeline_IngestionPipeline_run["run (pipeline.py:51)"]:::methodNode
191
+ end
192
+ subgraph sg_engine["engine.py"]
193
+ engine_ResolverEngine["ResolverEngine (engine.py:18)"]:::classNode
194
+ engine_ResolverEngine_resolve["resolve (engine.py:35)"]:::methodNode
195
+ end
196
+ subgraph sg_uplift["uplift.py"]
197
+ uplift_SemanticUpliftEngine["SemanticUpliftEngine (uplift.py:66)"]:::classNode
198
+ uplift_SemanticUpliftEngine_execute_uplift["execute_uplift (uplift.py:91)"]:::methodNode
199
+ end
200
+ pipeline_IngestionPipeline_run -->|CALLS| pipeline_IngestionPipeline_get_extractor
201
+ pipeline_IngestionPipeline_run -->|CALLS| pipeline_IngestionPipeline_process_file
202
+ pipeline_IngestionPipeline_run -->|CALLS| pipeline_IngestionPipeline_is_noop_incremental
203
+ pipeline_IngestionPipeline_run -->|CALLS| engine_ResolverEngine
204
+ pipeline_IngestionPipeline_run -->|CALLS| engine_ResolverEngine_resolve
205
+ pipeline_IngestionPipeline_run -->|CALLS| pipeline_IngestionPipeline_persist_incremental
206
+ pipeline_IngestionPipeline_run -->|CALLS| uplift_SemanticUpliftEngine_execute_uplift
207
+ pipeline_IngestionPipeline_run -->|CALLS| uplift_SemanticUpliftEngine
208
+ ```
209
+
210
+ | Symbol | Type | File |
211
+ |--------|------|------|
212
+ | `run` | METHOD | [`pipeline.py:51`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/pipeline.py#L51) |
213
+ | `_process_file` | METHOD | [`pipeline.py:155`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/pipeline.py#L155) |
214
+ | `_is_noop_incremental` | METHOD | [`pipeline.py:185`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/pipeline.py#L185) |
215
+ | `_persist_incremental` | METHOD | [`pipeline.py:204`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/pipeline.py#L204) |
216
+ | `_get_extractor` | METHOD | [`pipeline.py:245`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/pipeline.py#L245) |
217
+ | `ResolverEngine` | CLASS | [`engine.py:18`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/resolver/engine.py#L18) |
218
+ | `resolve` | METHOD | [`engine.py:35`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/resolver/engine.py#L35) |
219
+ | `SemanticUpliftEngine` | CLASS | [`uplift.py:66`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/resolver/uplift.py#L66) |
220
+ | `execute_uplift` | METHOD | [`uplift.py:91`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/resolver/uplift.py#L91) |
221
+ <!-- END_CGIS_GRAPH -->
222
+
223
+ ---
224
+
225
+ ## 🛠️ Development
226
+
227
+ ### Requirements
228
+ * Python 3.12+
229
+ * `uv` (for dependency management)
230
+
231
+ ### Running Tests
232
+ ```bash
233
+ make pytest
234
+ ```
235
+
236
+ ### Contributing
237
+ We are building the future of agentic engineering. Please see `CONTRIBUTING.md` for our standards on type safety (strict MyPy), linting, and ontology compliance.
238
+
239
+ ---
240
+ *Built with ❤️ for the future of autonomous software engineering.*
@@ -0,0 +1,78 @@
1
+ cgis/__init__.py,sha256=3QdRGRHRQHrjQYXrPCo1uCZKcx5C-f098rpT21gq3RU,271
2
+ cgis/__main__.py,sha256=w9qXbHyKaCVxkdm7i_NDSc-Mz07ivIoaAAVFGvs3Plo,326
3
+ cgis/cli.py,sha256=7Nv1feCj-Fb-glckdvN5xR7Prx_rdc-eJrrxYRIUU9A,57495
4
+ cgis/pipeline.py,sha256=AJfBhlH5ZD4wkDX6QMScuDPbl_Wwr_ZFplNzfoorsqg,10529
5
+ cgis/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
6
+ cgis/api/.gitkeep,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
7
+ cgis/api/__init__.py,sha256=wvFZK6oZspFGmonBz2rDg1aXxK7DHuE87or_w_cwY28,91
8
+ cgis/api/mcp_server.py,sha256=n2RgUwzqfAZ-cZXzYSvC5CI8rJu8JyfX3v_Ax3NGCYA,22693
9
+ cgis/core/.gitkeep,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
10
+ cgis/core/models.py,sha256=VVnldYVFBDLa3cqMCH2GZAUHt3jelIV--lgsGFK103w,3694
11
+ cgis/extractors/.gitkeep,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
12
+ cgis/extractors/_python_ast.py,sha256=BzaMMkNE6nQlYKbG9_xW3Ij0fFuQnodRe2pMtqd3gsY,7749
13
+ cgis/extractors/_python_classes.py,sha256=F0Vc7yfPNRiqwsJeAcOjOCVQBWT3KpistwpJHyIYtgY,4658
14
+ cgis/extractors/_python_functions.py,sha256=-glBzqRb8SrErVwSJHJgkp1nGXJxn71yaklp24bXvaU,11706
15
+ cgis/extractors/_python_imports.py,sha256=uR0PE4xkhSimEEVh0xRbjMAeqO451cBjkF99n1xuS_Q,7781
16
+ cgis/extractors/_python_types.py,sha256=N6xIOxVikpwkwrPfv1s_MwX6rw8QwzW2VeBXi7-g328,3462
17
+ cgis/extractors/base.py,sha256=4lhdFRqsj-3vBpeHZjnE3f9IWZ_WhbKQBxVAMuhzTho,1502
18
+ cgis/extractors/python_extractor.py,sha256=WhFg8a_Uc1H9OIfkYRJdacFqotsghH1EFVcu-n5TABc,8965
19
+ cgis/extractors/typescript_extractor.py,sha256=FFXJ11Zkli_dQgE160uVvG7toiwn37uCCAlIOx8sIHA,11358
20
+ cgis/guardian/__init__.py,sha256=H6BlKTayCLP34uGRC1zVt9NhN7RGo3tN9oep9Ja5SK0,48
21
+ cgis/guardian/bench.py,sha256=G9EG73fOOYBWFvw1NvxIMLGXgczSUOutSM5FD_PQJjk,7740
22
+ cgis/guardian/chunked.py,sha256=QioDG9Iwis2mVH-UeuNUMtL4HqgIzP2cJ9dfKHz5tUw,9474
23
+ cgis/guardian/chunker.py,sha256=zm6EF7S8lKNNfeMu1W6z7a6FiBU2qBqRz2UcelnuYac,5705
24
+ cgis/guardian/collector.py,sha256=E4g9eW_qOYSw5rr25c_wWFt4xa9luJzAW84_DCo97HM,13505
25
+ cgis/guardian/core.py,sha256=nY8eTcaknfxLUa6u9YwLOdyM4ztb19-A49BfW_eh7uY,4981
26
+ cgis/guardian/diff_index.py,sha256=513WDsnvmcYecqVgoPeeK0ZBLziZIYb0ibRXYEYusv0,6212
27
+ cgis/guardian/findings.py,sha256=igJg99ZH0J13wLZtDSiA2GBejsqYetCA3cqADohbZIc,2691
28
+ cgis/guardian/github_poster.py,sha256=Rh1FKUC7ZC6IYWzKd-d7ewHq1L21Y1uUImTsn9J96x0,5658
29
+ cgis/guardian/metrics.py,sha256=ITF2QrHLvNLYlLYYS1qU3baGi7oYETzHXMo7pKfYc70,3641
30
+ cgis/guardian/prompts.py,sha256=xCjlTPx3U8_IX14n31mmYti68BcJkeQTcmU0e2nnv04,11012
31
+ cgis/guardian/recording.py,sha256=LXopddHdnv-042-P5nQrPE4JIx6jQVmGjjWzftgdr40,3375
32
+ cgis/guardian/render.py,sha256=w-F5MHyEsIxMHLe6zP05VtSdpzfBsRD9bpLJyUwoVHg,4701
33
+ cgis/guardian/runner.py,sha256=bhgtjp1-qlyc232c2LqycJEODDU68sQ2GwEYSzdCdQs,12148
34
+ cgis/guardian/skeptic.py,sha256=ey_6pzoC297mHXGIqvZlB9fSdTvTwgLI1h2yVJ7VeYY,8848
35
+ cgis/guardian/providers/__init__.py,sha256=wFOW1w9NtI-LBDB9w5ICNPFcuT4Hi5soxzDwpdmgxSc,49
36
+ cgis/guardian/providers/base.py,sha256=Frmymu-AVOOs5ZrC8khw2ZLzCzDlaGwhwNupv2bdvlI,4424
37
+ cgis/guardian/providers/gemini.py,sha256=hbFmwMHKkVEy4hDM-e3nMKrIpwzG6wO-QLsDe3_tL-o,3751
38
+ cgis/guardian/providers/mistral.py,sha256=JEfdcD1BgPKq_78xMKdTf7DwK8c6_sfJMfg-q9bvI40,3361
39
+ cgis/guardian/providers/ollama.py,sha256=K9UZoxF0Sx0PZYaLLfhXEz6Kl_jXojrPXRSiY0tHBhk,4157
40
+ cgis/query/engine.py,sha256=D8OzyeBMhJ_shqjdi36AYiLhW52wNCj_N4Q8tD4AU1o,6225
41
+ cgis/query/fqn.py,sha256=FRiZjs0V4or8yMWSH158qdys5_NUYmKBOdx6-ePPQMY,2739
42
+ cgis/query/analysis/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
43
+ cgis/query/analysis/analyzer.py,sha256=m5d0-FsxIDH2tLJX3A_k7jvs7duWcfBNtlxKjkcqlHk,10358
44
+ cgis/query/analysis/anomaly.py,sha256=NJhomVw7byN6kfeT4Zegik6JRtHqtRq1UZbC9lJScUg,1221
45
+ cgis/query/analysis/cohesion.py,sha256=o_xXGbFqD0RgRSHxbsIBD-B3Spmtxv-RCy1MbB_IG2k,10504
46
+ cgis/query/analysis/health.py,sha256=3eZokxeH_be7l7MNuLoLpRIZZ5B3N0DoA1TKMDAkjBs,4989
47
+ cgis/query/analysis/suggest_service.py,sha256=46SVAYvqieW4XkI7NONbaOQZdFQdxxEnfj7vsnMjba0,8127
48
+ cgis/query/context/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
49
+ cgis/query/context/audit.py,sha256=yKFc0EgzH4OFm_ZUZ1yeMAB93jCcGZmqfXrCuGup6ec,6157
50
+ cgis/query/context/context_service.py,sha256=V0YtJaImgs7cwihejaBzKaOWa8Iax1T2OGrC-W6HbWs,5849
51
+ cgis/query/context/prompt.py,sha256=H38K0MN_PBaBdK-1nmN1873rOwADVvVYmcxKECLQkLU,8222
52
+ cgis/query/context/snippet.py,sha256=jBzWdQohg-LROqX6dkXHC_6pQ4M0H_SHk6bJcFDV_ZI,4207
53
+ cgis/query/drift/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
54
+ cgis/query/drift/_scc.py,sha256=aTFeJATlhi7vL1nsPKn98YmwqPOKnTWS6uys57mH8IU,2730
55
+ cgis/query/drift/drift.py,sha256=7ku8cOp8i59J-KvBWQedNxBc0bu9P-CGXM12CuxpQF0,36433
56
+ cgis/query/drift/drift_service.py,sha256=-TKtU1Tml5vg2zUy9rnP2QuP7kTyg9hTLYDx7N4rLlM,9536
57
+ cgis/query/drift/fingerprint.py,sha256=UmN3viPZceU2JH-zIf5CvIpbV4kBiaL5m7jObxZDPBc,10658
58
+ cgis/query/drift/fractal.py,sha256=1KkXGTmkYgOVum67M-BG_YUsTdorGTzP4kAJmrkNwKM,10205
59
+ cgis/query/drift/ontology_init.py,sha256=mdCBV3guHs72aTMzjyXf1JLcD9qHDJEZwpzmZzIRYxY,18302
60
+ cgis/query/drift/quotient.py,sha256=4tV29yk07VYfbrAo7PIrWQ4BagZ0T6nItWP_8Macx_4,2711
61
+ cgis/query/drift/triads.py,sha256=OoGxSAsU9QzHP2MboYkXJ3Jg7PyoE9tO6BfX65fwyYQ,6150
62
+ cgis/query/render/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
63
+ cgis/query/render/graph_json.py,sha256=SYIg4AyjdvXvj8C6Vu8vCYV2GdkW7Aep2MZ9dVdfbsY,1453
64
+ cgis/query/render/mermaid.py,sha256=60n26BB7hBhZSTfZq62yq38aeXi3p0gOI0ON2-5N6vM,10075
65
+ cgis/query/render/metrics.py,sha256=tTHIJ5mWh--JchNvGCU7n7_S0pEXBCELzvKiseEiEvo,13929
66
+ cgis/resolver/.gitkeep,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
67
+ cgis/resolver/__init__.py,sha256=AYEjjKXi__LvceOV9mEjXXzQS6O03D4RQjuBjpJtGhA,75
68
+ cgis/resolver/engine.py,sha256=zNErmZRpOdAHMux3YWCWz0YbXhorm8BcD7DSKGYJLgQ,6424
69
+ cgis/resolver/indices.py,sha256=hof9PyDrOdbFCyE1urDOH3j5uKFHPutvpgetsLvxq8s,7994
70
+ cgis/resolver/symbols.py,sha256=6PNDIgoJ2Mj2xZ4XHpEXwjHe76fi9zvOwF7tAON1GBw,8513
71
+ cgis/resolver/uplift.py,sha256=Hkye1q-kI-gKO6GIBYv3gUZj1AC0-_mkpoIpmwVsG4g,9591
72
+ cgis/storage/.gitkeep,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
73
+ cgis/storage/sqlite_store.py,sha256=Dkxkl0WDyTakZFfxWuVpYLNHA_H7CMvRkSUvev3MHew,24778
74
+ codegraph_brain-0.6.0.dist-info/METADATA,sha256=_DQHxztYEXMRqxqhwPGusmO2CRLGAdE_9IcuTQIVMXo,12572
75
+ codegraph_brain-0.6.0.dist-info/WHEEL,sha256=lCkmxWfQsSc9CfIClYeavTdQeEX2toPqufh9gI35EQA,87
76
+ codegraph_brain-0.6.0.dist-info/entry_points.txt,sha256=G_ekY569jca0ubm-I3gA9Id9xRj8fc42CDgLgTC-5L4,77
77
+ codegraph_brain-0.6.0.dist-info/licenses/LICENSE,sha256=1X36nOG5VocDaEGzAZqIv7uawy_7sWlFoiwECwx5aBI,1065
78
+ codegraph_brain-0.6.0.dist-info/RECORD,,
@@ -0,0 +1,4 @@
1
+ Wheel-Version: 1.0
2
+ Generator: hatchling 1.31.0
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
@@ -0,0 +1,3 @@
1
+ [console_scripts]
2
+ cgis = cgis.cli:app
3
+ cgis-mcp = cgis.api.mcp_server:mcp.run
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Andrey G
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.