codegraph-engine 2.1.1__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 (62) hide show
  1. codegraph/__init__.py +37 -0
  2. codegraph/agent.py +26 -0
  3. codegraph/architecture.py +328 -0
  4. codegraph/audit.py +106 -0
  5. codegraph/cache.py +95 -0
  6. codegraph/cli.py +854 -0
  7. codegraph/config.py +43 -0
  8. codegraph/constraints.py +238 -0
  9. codegraph/context.py +1228 -0
  10. codegraph/epistemic.py +90 -0
  11. codegraph/errors.py +275 -0
  12. codegraph/evidence/__init__.py +15 -0
  13. codegraph/evidence/citations.py +397 -0
  14. codegraph/frameworks.py +434 -0
  15. codegraph/freshness.py +295 -0
  16. codegraph/git.py +278 -0
  17. codegraph/graph/__init__.py +46 -0
  18. codegraph/graph/models.py +41 -0
  19. codegraph/graph/traversal.py +1291 -0
  20. codegraph/indexing/__init__.py +4 -0
  21. codegraph/indexing/classifier.py +274 -0
  22. codegraph/indexing/indexer.py +943 -0
  23. codegraph/indexing/models.py +338 -0
  24. codegraph/indexing/parser.py +1240 -0
  25. codegraph/indexing/scanner.py +200 -0
  26. codegraph/indexing/test_framework.py +116 -0
  27. codegraph/interrogation.py +1582 -0
  28. codegraph/llm/__init__.py +3 -0
  29. codegraph/llm/base.py +15 -0
  30. codegraph/llm/context.py +20 -0
  31. codegraph/mcp/__init__.py +3 -0
  32. codegraph/mcp/server.py +736 -0
  33. codegraph/memory/__init__.py +3 -0
  34. codegraph/memory/store.py +46 -0
  35. codegraph/models.py +289 -0
  36. codegraph/observability.py +151 -0
  37. codegraph/optimizer.py +372 -0
  38. codegraph/planner.py +417 -0
  39. codegraph/py.typed +1 -0
  40. codegraph/query_expansion.py +199 -0
  41. codegraph/ranking.py +363 -0
  42. codegraph/resolver.py +843 -0
  43. codegraph/resources/__init__.py +45 -0
  44. codegraph/resources/cache.py +117 -0
  45. codegraph/resources/coalescer.py +83 -0
  46. codegraph/resources/debouncer.py +98 -0
  47. codegraph/resources/governor.py +232 -0
  48. codegraph/resources/policy.py +123 -0
  49. codegraph/retrieval_policy.py +220 -0
  50. codegraph/search/__init__.py +23 -0
  51. codegraph/search/hybrid.py +301 -0
  52. codegraph/search/semantic.py +28 -0
  53. codegraph/security/__init__.py +3 -0
  54. codegraph/security/paths.py +35 -0
  55. codegraph/target_resolver.py +348 -0
  56. codegraph/task.py +637 -0
  57. codegraph_engine-2.1.1.dist-info/METADATA +334 -0
  58. codegraph_engine-2.1.1.dist-info/RECORD +62 -0
  59. codegraph_engine-2.1.1.dist-info/WHEEL +5 -0
  60. codegraph_engine-2.1.1.dist-info/entry_points.txt +2 -0
  61. codegraph_engine-2.1.1.dist-info/licenses/LICENSE +21 -0
  62. codegraph_engine-2.1.1.dist-info/top_level.txt +1 -0
@@ -0,0 +1,334 @@
1
+ Metadata-Version: 2.4
2
+ Name: codegraph-engine
3
+ Version: 2.1.1
4
+ Summary: Evidence-backed local codebase intelligence for MCP clients
5
+ Author: CodeGraph contributors
6
+ License-Expression: MIT
7
+ Requires-Python: >=3.12
8
+ Description-Content-Type: text/markdown
9
+ License-File: LICENSE
10
+ Requires-Dist: pydantic>=2.7
11
+ Requires-Dist: typer>=0.12
12
+ Provides-Extra: mcp
13
+ Requires-Dist: mcp<2,>=1.0; extra == "mcp"
14
+ Provides-Extra: dev
15
+ Requires-Dist: pytest>=8; extra == "dev"
16
+ Requires-Dist: pytest-cov>=5; extra == "dev"
17
+ Requires-Dist: ruff>=0.6; extra == "dev"
18
+ Requires-Dist: mypy>=1.10; extra == "dev"
19
+ Dynamic: license-file
20
+
21
+ # CodeGraph MCP
22
+
23
+ > **The AI understands the developer. CodeGraph interrogates the repository.**
24
+ > **The claim comes from the AI; the proof comes from CodeGraph.**
25
+
26
+ CodeGraph MCP is an open-source, deterministic codebase intelligence server built on the Model Context Protocol (MCP). It is not a conversational AI, a natural-language interpreter, a vector database, or an autonomous agent.
27
+
28
+ Antigravity and your AI agents handle natural-language reasoning, intent interpretation, and answer synthesis. CodeGraph interrogates the local repository to deliver deterministic, evidence-backed AST facts, call and import graphs, verified line citations, architecture structure, and Git impact.
29
+
30
+ ---
31
+
32
+ ## Architectural Separation of Responsibilities
33
+
34
+ ```text
35
+ USER
36
+ │
37
+ │ natural-language request ("how does authetication wrks in my app?")
38
+ ▼
39
+ ANTIGRAVITY / AI
40
+ │
41
+ ├── understands intent and context
42
+ ├── corrects spelling and informal language
43
+ ├── identifies candidate code targets
44
+ ├── resolves conceptual ambiguity
45
+ ├── decomposes complex queries into precise tool invocations
46
+ └── decides which MCP tools to call
47
+ │
48
+ │ precise, deterministic MCP request (e.g., list_routes(), resolve_symbol("authenticate"))
49
+ ▼
50
+ CODEGRAPH MCP
51
+ │
52
+ ├── deterministic repository retrieval
53
+ ├── exact symbol and canonical ID resolution
54
+ ├── graph traversal and path tracing
55
+ ├── caller and callee analysis
56
+ ├── route and framework discovery
57
+ ├── architecture and dependency extraction
58
+ ├── Git diff and blast-radius impact analysis
59
+ └── first-class evidence generation
60
+ │
61
+ ▼
62
+ STRUCTURED EVIDENCE
63
+ │
64
+ ├── canonical IDs (path::Symbol.method)
65
+ ├── file paths and exact line ranges
66
+ ├── verified relationship edges (CALLS, IMPORTS, HANDLED_BY)
67
+ ├── index generation and freshness state
68
+ └── repository commit hash
69
+ │
70
+ ▼
71
+ ANTIGRAVITY / AI
72
+ │
73
+ └── synthesizes the final human-readable answer with verified source citations
74
+ ▼
75
+ USER
76
+ ```
77
+
78
+ ---
79
+
80
+ ## Core Invariants
81
+
82
+ 1. **Deterministic Execution**:
83
+ $$\text{Repository State} + \text{Index Generation} + \text{MCP Request} \Longrightarrow \text{Identical Deterministic Result}$$
84
+ Collections are deterministically sorted; results never change between identical invocations.
85
+ 2. **Zero Natural-Language Guessing**: CodeGraph never guesses developer intent or infers vague concepts. If a symbol name is ambiguous across files, CodeGraph returns `status: "ambiguous"` with candidate canonical IDs for the AI to choose.
86
+ 3. **No Hallucinations / UNKNOWN Handling**: Facts are backed by AST analysis and verified references. If a target does not exist or cannot be proven statically, CodeGraph reports `status: "not_found"` or `UNKNOWN`.
87
+ 4. **Structured Evidence**: Every claim or relation is tied to `{ file, start_line, end_line, type, canonical_id }`.
88
+ 5. **Completely Local & Resource-Bounded**: Zero LLM API calls, zero external vector databases, zero telemetry. Execution runs inside a strict resource governor with thread and memory bounds.
89
+
90
+ ---
91
+
92
+ ## Minimal Orthogonal 13-Tool MCP API
93
+
94
+ CodeGraph MCP exposes 13 core interrogation tools under `profile="core"`. Every tool returns structured data, an explicit `status` code (`"ok"`, `"not_found"`, `"ambiguous"`, `"invalid_request"`), index metadata, and verified evidence.
95
+
96
+ | Tool | Purpose | Key Inputs | Key Output Fields |
97
+ | :--- | :--- | :--- | :--- |
98
+ | `resolve_symbol` | Ground an exact or qualified symbol name | `name: str` | `status`, `symbol` (canonical ID, file, line), `candidates` (if ambiguous) |
99
+ | `search_symbols` | Deterministic token search over non-generated symbols | `query: str`, `top_k: int` | `status`, `results` (canonical ID, kind, score), `count` |
100
+ | `get_symbol` | Retrieve authoritative AST details for a canonical symbol | `canonical_id: str` | `status`, `symbol` (kind, signature, docstring, lines, decorators, parent, children) |
101
+ | `get_file` | Structural AST representation of an indexed file | `path: str`, `include_content: bool` | `status`, `file`, `hash`, `size`, `classes`, `functions`, `imports`, `routes` |
102
+ | `get_references` | Return verified call sites and references | `canonical_id: str` | `status`, `references` (file, start_line, end_line, type) |
103
+ | `get_callers` | Return functions and methods that call the target | `canonical_id: str` | `status`, `callers` (caller canonical ID, file, line, call site) |
104
+ | `get_callees` | Return functions and methods called by the target | `canonical_id: str` | `status`, `callees` (resolved, unresolved, and external calls) |
105
+ | `trace_path` | Deterministic BFS execution path between two symbols | `source_symbol: str`, `target_symbol: str`, `max_depth: int` | `status`, `path` (steps with from/to symbols, relationship, evidence), `reachable` |
106
+ | `get_imports` | Return imports for a file or canonical symbol | `file: str \| None`, `canonical_id: str \| None` | `status`, `imports` (module, imported_name, alias, line, evidence) |
107
+ | `get_dependents` | Reverse dependency query (files/symbols depending on target) | `canonical_id: str \| None`, `file: str \| None` | `status`, `dependents` (source, relationship, evidence) |
108
+ | `list_routes` | Discovered framework routes (FastAPI, Flask, Django, Express) | `framework: str \| None`, `method: str \| None`, `path: str \| None` | `status`, `routes` (method, route_path, framework, handler_name, canonical_id) |
109
+ | `get_architecture` | High-level repository structural overview | _none_ | `status`, `languages`, `directories`, `entrypoints`, `routes`, `dependencies` |
110
+ | `get_git_impact` | Git diff blast-radius impact analysis | `base: str`, `head: str` | `status`, `changed_files`, `modified_symbols`, `affected_callers`, `affected_callees`, `affected_routes` |
111
+
112
+ ---
113
+
114
+ ## Response Envelope & Evidence Format
115
+
116
+ Every response adheres to a predictable structure:
117
+
118
+ ```json
119
+ {
120
+ "status": "ok",
121
+ "symbol": {
122
+ "canonical_id": "src/auth/service.py::AuthService.authenticate",
123
+ "name": "authenticate",
124
+ "kind": "METHOD",
125
+ "file": "src/auth/service.py",
126
+ "start_line": 42,
127
+ "end_line": 68
128
+ },
129
+ "evidence": [
130
+ {
131
+ "file": "src/auth/service.py",
132
+ "start_line": 42,
133
+ "end_line": 68,
134
+ "type": "DEFINES",
135
+ "canonical_id": "src/auth/service.py::AuthService.authenticate"
136
+ }
137
+ ],
138
+ "index": {
139
+ "generation": 1,
140
+ "created_at": "2026-10-01T12:00:00Z",
141
+ "freshness": "FRESH"
142
+ },
143
+ "repository": {
144
+ "commit": "a1b2c3d"
145
+ }
146
+ }
147
+ ```
148
+
149
+ ### Ambiguous Resolution Example
150
+
151
+ When a query matches multiple symbols across different modules, CodeGraph will never guess:
152
+
153
+ ```json
154
+ {
155
+ "status": "ambiguous",
156
+ "symbol": null,
157
+ "candidates": [
158
+ {
159
+ "canonical_id": "src/admin/views.py::duplicate_helper",
160
+ "file": "src/admin/views.py",
161
+ "line": 15
162
+ },
163
+ {
164
+ "canonical_id": "src/auth/views.py::duplicate_helper",
165
+ "file": "src/auth/views.py",
166
+ "line": 18
167
+ }
168
+ ],
169
+ "message": "Multiple symbols match 'duplicate_helper'. Provide a qualified name or canonical ID."
170
+ }
171
+ ```
172
+
173
+ ---
174
+
175
+ ## End-to-End Walkthrough
176
+
177
+ ### 1. Developer asks:
178
+ > *"how does authetication wrks in my app?"*
179
+
180
+ ### 2. Antigravity / AI decomposes the request:
181
+ - Recognizes query about authentication flows and routing.
182
+ - Calls `list_routes(path="auth")` to locate entrypoints.
183
+ - Calls `resolve_symbol("authenticate")` to identify the service handler.
184
+ - Calls `trace_path(source_symbol="src/auth/views.py::login_view", target_symbol="src/auth/service.py::AuthService.authenticate")`.
185
+ - Calls `get_callees(canonical_id="src/auth/service.py::AuthService.authenticate")`.
186
+
187
+ ### 3. CodeGraph interrogates the repository:
188
+ - Returns exact route definitions (`POST /api/v1/auth/login` handled by `src/auth/views.py::login_view`).
189
+ - Proves BFS execution path from `login_view` $\to$ `AuthService.authenticate` with line evidence.
190
+ - Lists callees (`verify_password`, `create_jwt_token`, `log_audit_event`) with file citations.
191
+
192
+ ### 4. Antigravity / AI synthesizes the answer:
193
+ > "Authentication in your application begins at the `POST /api/v1/auth/login` endpoint handled by [`login_view`](file:///src/auth/views.py#L25). It invokes [`AuthService.authenticate`](file:///src/auth/service.py#L42), which validates credentials via [`verify_password`](file:///src/auth/crypto.py#L12) and generates a JWT token via [`create_jwt_token`](file:///src/auth/token.py#L55)."
194
+
195
+ ---
196
+
197
+ ## Installation & Usage
198
+
199
+ ```bash
200
+ pip install 'codegraph-engine[mcp]'
201
+ ```
202
+
203
+ ### Configure in MCP Client (Claude Desktop, Cursor, Gemini)
204
+
205
+ ```json
206
+ {
207
+ "mcpServers": {
208
+ "codegraph": {
209
+ "command": "codegraph",
210
+ "args": ["serve", "-r", "/path/to/your/repo", "--profile", "core"]
211
+ }
212
+ }
213
+ }
214
+ ```
215
+
216
+ ### CLI Inspection
217
+
218
+ ```bash
219
+ # Index repository
220
+ codegraph index ./my-repo
221
+
222
+ # Search symbols
223
+ codegraph search "authenticate" -r ./my-repo
224
+
225
+ # Trace execution path
226
+ codegraph trace "login_view" -r ./my-repo
227
+
228
+ # Benchmark verification
229
+ codegraph benchmark -r ./my-repo
230
+ ```
231
+
232
+ ---
233
+
234
+ ## AI Agent Usage
235
+
236
+ AI agents querying CodeGraph MCP should follow this deterministic lifecycle:
237
+
238
+ 1. **Initialize repository if required**: Execute `codegraph init` or verify index status.
239
+ 2. **Check freshness**: Verify `index.freshness == "FRESH"`. If stale, execute `codegraph index`.
240
+ 3. **Resolve symbols**: Use `resolve_symbol` or `codegraph resolve-symbol <name>` before querying graphs.
241
+ 4. **Query relationships**: Use `get_callers`, `get_callees`, or `trace_path` with canonical IDs.
242
+ 5. **Use returned evidence**: Cite source file and exact line spans from `{ file, start_line, end_line, type, canonical_id }`.
243
+ 6. **Handle UNKNOWN explicitly**: If a target is not found, report UNKNOWN rather than hallucinating facts.
244
+ 7. **Handle AMBIGUOUS explicitly**: When multiple candidates match, present the candidates or request qualification. Never guess.
245
+ 8. **Never infer unsupported repository facts**: Only make assertions backed by static AST evidence.
246
+
247
+ ---
248
+
249
+ ## CLI Path Defaults & Invocation
250
+
251
+ All repository inspection commands support optional repository paths defaulting to the current directory (`.`):
252
+
253
+ ```bash
254
+ codegraph <command> [PATH] [--repo PATH]
255
+ ```
256
+
257
+ Examples:
258
+ ```bash
259
+ # Equivalent commands resolving to the current directory:
260
+ codegraph status
261
+ codegraph status .
262
+ codegraph status -r .
263
+ codegraph status --repo .
264
+
265
+ # Indexing:
266
+ codegraph index
267
+ codegraph index .
268
+ codegraph index /path/to/repo
269
+
270
+ # Explicit symbol commands:
271
+ codegraph get-symbol AuthService
272
+ codegraph resolve-symbol duplicate_action
273
+ codegraph trace AuthService -d 2
274
+ codegraph search "authenticate"
275
+ ```
276
+
277
+ ---
278
+
279
+ ## Machine-Readable Error Contract & Stable Error Codes
280
+
281
+ Expected operational failures emit structured JSON without raw Python tracebacks. Every error includes actionable agent recovery instructions:
282
+
283
+ ```json
284
+ {
285
+ "status": "error",
286
+ "error": {
287
+ "code": "INDEX_NOT_FOUND",
288
+ "message": "No CodeGraph index exists for this repository.",
289
+ "next_action": {
290
+ "command": "codegraph init",
291
+ "reason": "Initialize the repository before querying it."
292
+ }
293
+ }
294
+ }
295
+ ```
296
+
297
+ ### Stable Error Codes
298
+
299
+ | Code | Meaning | Agent Next Action |
300
+ | :--- | :--- | :--- |
301
+ | `INDEX_NOT_FOUND` | Repository has not been indexed | `codegraph init` |
302
+ | `INDEX_STALE` | Repository modified after last indexing | `codegraph index` |
303
+ | `REPOSITORY_NOT_INITIALIZED` | Missing CodeGraph configuration | `codegraph init` |
304
+ | `INVALID_PATH` | Non-existent or invalid directory path | Check directory path |
305
+ | `PATH_OUTSIDE_REPOSITORY` | Path traversal attempt blocked | Keep paths within repo root |
306
+ | `SYMBOL_NOT_FOUND` | Symbol does not exist in AST index | `codegraph search <query>` |
307
+ | `SYMBOL_AMBIGUOUS` | Multiple candidates match query | `codegraph resolve <canonical_id>` |
308
+ | `INVALID_ARGUMENT` | Missing or empty required argument | Check command syntax |
309
+ | `INVALID_DEPTH` | Traversal depth outside 1..5 range | Clamped to 1..5 |
310
+ | `SENSITIVE_FILE_ACCESS_DENIED` | File is protected (e.g. `.env`) | Check privacy boundaries |
311
+ | `PARSE_FAILURE` | File contains syntax errors | Fix syntax and re-index |
312
+ | `UNSUPPORTED_LANGUAGE` | Language parser not supported | Check `codegraph doctor` |
313
+
314
+ ---
315
+
316
+ ## Verification & Release Gates
317
+
318
+ All releases are verified against rigorous gates:
319
+
320
+ - **Ruff**: 0 lint errors
321
+ - **Mypy**: 0 issues under strict typing
322
+ - **Pytest**: 344 unit, integration, and contract tests passing
323
+ - **Benchmarks**: 50 tasks across 10 categories:
324
+ - Unsupported Claims: 0.0%
325
+ - FACT Correctness: 100.0%
326
+ - UNKNOWN Correctness: 98.0%
327
+ - AMBIGUITY Correctness: 100.0%
328
+ - STALE Handling: Verified
329
+
330
+ ---
331
+
332
+ ## License
333
+
334
+ MIT
@@ -0,0 +1,62 @@
1
+ codegraph/__init__.py,sha256=_fvuBpqIOyFtG6zV5ouDbAzcHh6kaZOODpnBo5zKE8A,845
2
+ codegraph/agent.py,sha256=We0TWEXSMBBz6t2NQEGPB6gv-2P1IwyCmxoFGPN_CBA,911
3
+ codegraph/architecture.py,sha256=m6RZgXDMoDkSx8KO0xuQHtz5rT0h5B7Jjh1yVE2H2LI,12069
4
+ codegraph/audit.py,sha256=j6fFL6b4vKfnAdUYU7goqQBv4ysrxy-ecBJvT8rYoSI,3301
5
+ codegraph/cache.py,sha256=42Fyl51EsMwcYDv5loosIicVvvrFnIw7JrqKJ7owZtw,2992
6
+ codegraph/cli.py,sha256=fytweqPPyuYyXv_6ehHnpiZcnvLPG5-_cdva65x8_So,34729
7
+ codegraph/config.py,sha256=PgCirqHeWZDwcQn2K1aL5RAcWSM95quqBVSzMfwG2bg,1836
8
+ codegraph/constraints.py,sha256=AR_d07ENmbcDhWmcbruy4DvBYXsEdvSwkatyQ6JO-dE,8554
9
+ codegraph/context.py,sha256=S_NJ6obPrdmlpA0RO6qD-L06d8sU-UaujzllZ1I2pSI,52219
10
+ codegraph/epistemic.py,sha256=ShvLKjRBE6FKCBc1oARDji-NIyw3Molyrj3Eu8TzY3g,2465
11
+ codegraph/errors.py,sha256=uzuXQe1NsOXV94xr0nmjvINPidGiTc9705tKqT928jQ,9967
12
+ codegraph/frameworks.py,sha256=ZdBnA0WExyJ0ShgUHxSlB82xHF24wO32b_PReVyqWnk,16165
13
+ codegraph/freshness.py,sha256=PVV7pLFz2xfDIj2DhLWB85ppn-0GZyxjoglxEdr3GBY,10041
14
+ codegraph/git.py,sha256=DLFsvuOKiCLiBXMuxRCoMK06y1FaxT_D13pwpIA1Jek,8528
15
+ codegraph/interrogation.py,sha256=jQ7AQOLJBeWgJe3P1qduYb4toRaDRcM8reB1xtNoT9c,54755
16
+ codegraph/models.py,sha256=SwyRirlMPCserI4I4yOmcSnr-DYdV7VOTSTgyF3pK8s,6499
17
+ codegraph/observability.py,sha256=mayuiMfn1G7BPsJGzkS9KFoNBrJioLq474IpoODitPI,4610
18
+ codegraph/optimizer.py,sha256=_6DafK_SfOGnY3scTLMcd1Z0_tvYT7Dhj_Ca3MUVAh0,13589
19
+ codegraph/planner.py,sha256=p2wm5hSy5hYG5kdALX-o0R35jaOC9a7CKznPmt-GPA0,13790
20
+ codegraph/py.typed,sha256=bWew9mHgMy8LqMu7RuqQXFXLBxh2CRx0dUbSx-3wE48,27
21
+ codegraph/query_expansion.py,sha256=KSTHHYPFsVJBvp09Wy6GICE6_JSCKzZ1JWaPE3pQ7fw,8224
22
+ codegraph/ranking.py,sha256=QXWmE8JUpkXSzfyqfXT8BVyFVgYXdVBahcKil2bWgms,14308
23
+ codegraph/resolver.py,sha256=mAEDHDfTCDlwlSmHjkadZrKwBJbBYvnPZUn8SBh5xyE,36220
24
+ codegraph/retrieval_policy.py,sha256=hXVfi6zJCNX7HzrO8hgEIwwCQuYsiC8CA7V8G_PqbQY,7498
25
+ codegraph/target_resolver.py,sha256=CW_kQU3kublNZfnrE2AsGtL4Cuc0GRY3ZxF7a7guO0Y,12990
26
+ codegraph/task.py,sha256=dbku1uEfcBrrkY8bFCjoFMwRnTxa7oLxAfnTGzY5dTw,24740
27
+ codegraph/evidence/__init__.py,sha256=f_KkJkf5pVoybqtpKqGqq8P4uu1F4xYj99vg-bmBrzE,268
28
+ codegraph/evidence/citations.py,sha256=CiBSiS5QotxEBMGAQkLjtogFDjKLvhVCoWLwnOrjXk4,13579
29
+ codegraph/graph/__init__.py,sha256=tQg8Q1tibGH4POivA5sbJxF7Ax42MiIYZaFMtKvsiW0,931
30
+ codegraph/graph/models.py,sha256=qq7RY4CkoDof8GS4cJIznfIB239Wo83yq2cOaIvUrXY,930
31
+ codegraph/graph/traversal.py,sha256=3gLp1drVLCSRpRVQYtfAmi_6nZOES-pd9C2zE3vfvuA,49848
32
+ codegraph/indexing/__init__.py,sha256=Svr4c_L0j3neb5WiTcWDYPyqAdvpsuOIBhOAXFvBv1E,149
33
+ codegraph/indexing/classifier.py,sha256=PKY54vjj2RFk665xXYctIZuzR8OshIfFdzGuOWfuAfQ,7101
34
+ codegraph/indexing/indexer.py,sha256=2HEi2DOW3JGm9xnuVXIm6n8sngkvjeCNIu7p3gSxbqY,37908
35
+ codegraph/indexing/models.py,sha256=h0ssLYF2Hbw5Ma05Lz4hXnxsoQXCrhZEdvgQHV2YzNU,11612
36
+ codegraph/indexing/parser.py,sha256=YhR8_xs9gDGO95sw2oq3SfQwwZIw5fla5TjXVc6d4UM,46643
37
+ codegraph/indexing/scanner.py,sha256=jEbqnDeAtxrNqMKuMHvW63C3U08SxpSzfYEJ3l7B6gU,6375
38
+ codegraph/indexing/test_framework.py,sha256=w_G9uvHz3cuz8bV46uf3umQJvIPVvwHv1PiN9Jck76Y,4550
39
+ codegraph/llm/__init__.py,sha256=rro4OuSOUFKhBq0-Rg-VAU7dvc6LS88YgdE8GfClb4E,89
40
+ codegraph/llm/base.py,sha256=M5f4mawPchXqlb7U7DF0cnGlDEy66KbuhhZc1hExZdU,406
41
+ codegraph/llm/context.py,sha256=TT5WIe3gTrvbQCASf2XDfyhwG3Cr5QPgqw9neXDM8qQ,641
42
+ codegraph/mcp/__init__.py,sha256=BmjrnksGkbG7TPqwbyQvgYj9uei8pFSFpfkRpaGVdJU,63
43
+ codegraph/mcp/server.py,sha256=CnBdY5Qa9T5LkAFpA3TwwpTkGetkauY7JmiGO2U9ocg,31395
44
+ codegraph/memory/__init__.py,sha256=yfQgSZ9Tii6PPZiLW0ImwC2k-Bg6m7mnUm_K1laBems,58
45
+ codegraph/memory/store.py,sha256=K3iD9VWF5if4OmYCTb5KxtZ3zj45kfEKmz8yivWzP-M,1490
46
+ codegraph/resources/__init__.py,sha256=14FNWGRA0ZXr_m-smhFUxY8dvhgH2f1EqmyXaV6TxHA,1276
47
+ codegraph/resources/cache.py,sha256=mdhlrXjhbBGChiF_rR1SnMN27oVxjpx9f4zu5jV-hbI,4054
48
+ codegraph/resources/coalescer.py,sha256=bKbTmX8q-R0FjNJjZQrh3Us2ZcuYsIKTrH0WimWcxQs,2510
49
+ codegraph/resources/debouncer.py,sha256=LjDv7uGxixlH-N7vVNkphvlhvtGh6t4jGKFAGg_nX7A,3084
50
+ codegraph/resources/governor.py,sha256=mk9pgxlflvrvm87aZQqexqUt5H6aiJlOlY-AjwiaWWg,8971
51
+ codegraph/resources/policy.py,sha256=pJScYxmhJiSk8c9FlfORTpxf68ZpM2UwNgd4U_LhUWQ,4026
52
+ codegraph/search/__init__.py,sha256=LFdgDMGE_cGWFFBk--uoRappyC_LnKvfKedogv-p5kQ,504
53
+ codegraph/search/hybrid.py,sha256=pqdRZSwe7wEEETxmUjV5Ns7_oxus60jggnOPNRfFpg0,9617
54
+ codegraph/search/semantic.py,sha256=QZaJVEoOZIZrp4O6SmUAzMiqMPfopgmPSpqzL3T7GVg,836
55
+ codegraph/security/__init__.py,sha256=QsucVn1YOuC1IFrd9-EHeZd9kdHv8XUQgRZ9bTz_6_4,142
56
+ codegraph/security/paths.py,sha256=BtiVvDgMzfL7_Dj3COt6B2Aui4A7hH13QwPUgl5-7No,1241
57
+ codegraph_engine-2.1.1.dist-info/licenses/LICENSE,sha256=I6wm9APPQhaH4Cj9H9z8I2jahgYh7ik-9x7wFrmsGOo,1079
58
+ codegraph_engine-2.1.1.dist-info/METADATA,sha256=A5yelC6QUOe9FKbvQfbQnMHra-hAPoxfQZY19e8B4bI,13240
59
+ codegraph_engine-2.1.1.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
60
+ codegraph_engine-2.1.1.dist-info/entry_points.txt,sha256=U2xQ3yhqOaaDyFtV9p7N0FDref1VEk56RE_Bnvrnycc,48
61
+ codegraph_engine-2.1.1.dist-info/top_level.txt,sha256=RqBj9sPbifZTb9aeHtnbxTgKJvfHIQdmYE1Brv8Wdkg,10
62
+ codegraph_engine-2.1.1.dist-info/RECORD,,
@@ -0,0 +1,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: setuptools (80.10.2)
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
5
+
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ codegraph = codegraph.cli:app
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 CodeGraph contributors
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.
@@ -0,0 +1 @@
1
+ codegraph