codegraph-engine 2.1.7__tar.gz → 2.2.0__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 (162) hide show
  1. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/PKG-INFO +48 -23
  2. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/README.md +47 -22
  3. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/pyproject.toml +3 -2
  4. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/src/codegraph/__init__.py +1 -1
  5. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/src/codegraph/cli.py +177 -54
  6. codegraph_engine-2.2.0/src/codegraph/cli_output.py +190 -0
  7. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/src/codegraph/context.py +119 -3
  8. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/src/codegraph/database/interrogation.py +30 -7
  9. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/src/codegraph/freshness.py +59 -21
  10. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/src/codegraph/indexing/indexer.py +11 -4
  11. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/src/codegraph/installer.py +72 -22
  12. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/src/codegraph/interrogation.py +19 -0
  13. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/src/codegraph/mcp/server.py +97 -6
  14. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/src/codegraph/mcp_diagnostics.py +5 -2
  15. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/src/codegraph/monorepo.py +1 -1
  16. codegraph_engine-2.2.0/src/codegraph/process_lifecycle.py +1115 -0
  17. codegraph_engine-2.2.0/src/codegraph/runtime/runner.py +204 -0
  18. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/src/codegraph_engine.egg-info/PKG-INFO +48 -23
  19. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/src/codegraph_engine.egg-info/SOURCES.txt +6 -1
  20. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/tests/test_platform_resources.py +3 -1
  21. codegraph_engine-2.2.0/tests/test_v22_enterprise_concurrency_and_runtime.py +200 -0
  22. codegraph_engine-2.2.0/tests/test_windows_and_process_lifecycle.py +678 -0
  23. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/LICENSE +0 -0
  24. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/setup.cfg +0 -0
  25. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/src/codegraph/agent.py +0 -0
  26. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/src/codegraph/agent_brain.py +0 -0
  27. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/src/codegraph/agent_capabilities.py +0 -0
  28. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/src/codegraph/agent_rules.py +0 -0
  29. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/src/codegraph/architecture.py +0 -0
  30. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/src/codegraph/audit.py +0 -0
  31. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/src/codegraph/binding_resolver.py +0 -0
  32. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/src/codegraph/cache.py +0 -0
  33. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/src/codegraph/config.py +0 -0
  34. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/src/codegraph/constraints.py +0 -0
  35. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/src/codegraph/database/__init__.py +0 -0
  36. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/src/codegraph/database/extractor.py +0 -0
  37. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/src/codegraph/database/models.py +0 -0
  38. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/src/codegraph/epistemic.py +0 -0
  39. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/src/codegraph/errors.py +0 -0
  40. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/src/codegraph/evidence/__init__.py +0 -0
  41. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/src/codegraph/evidence/citations.py +0 -0
  42. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/src/codegraph/evidence_contract.py +0 -0
  43. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/src/codegraph/frameworks.py +0 -0
  44. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/src/codegraph/git.py +0 -0
  45. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/src/codegraph/graph/__init__.py +0 -0
  46. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/src/codegraph/graph/models.py +0 -0
  47. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/src/codegraph/graph/traversal.py +0 -0
  48. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/src/codegraph/indexing/__init__.py +0 -0
  49. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/src/codegraph/indexing/classifier.py +0 -0
  50. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/src/codegraph/indexing/models.py +0 -0
  51. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/src/codegraph/indexing/parser.py +0 -0
  52. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/src/codegraph/indexing/scanner.py +0 -0
  53. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/src/codegraph/indexing/telemetry.py +0 -0
  54. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/src/codegraph/indexing/test_framework.py +0 -0
  55. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/src/codegraph/llm/__init__.py +0 -0
  56. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/src/codegraph/llm/base.py +0 -0
  57. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/src/codegraph/llm/context.py +0 -0
  58. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/src/codegraph/mcp/__init__.py +0 -0
  59. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/src/codegraph/memory/__init__.py +0 -0
  60. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/src/codegraph/memory/store.py +0 -0
  61. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/src/codegraph/models.py +0 -0
  62. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/src/codegraph/observability.py +0 -0
  63. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/src/codegraph/optimizer.py +0 -0
  64. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/src/codegraph/planner.py +0 -0
  65. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/src/codegraph/py.typed +0 -0
  66. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/src/codegraph/query_expansion.py +0 -0
  67. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/src/codegraph/ranking.py +0 -0
  68. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/src/codegraph/resolver.py +0 -0
  69. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/src/codegraph/resources/__init__.py +0 -0
  70. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/src/codegraph/resources/cache.py +0 -0
  71. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/src/codegraph/resources/coalescer.py +0 -0
  72. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/src/codegraph/resources/debouncer.py +0 -0
  73. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/src/codegraph/resources/governor.py +0 -0
  74. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/src/codegraph/resources/monitor.py +0 -0
  75. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/src/codegraph/resources/policy.py +0 -0
  76. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/src/codegraph/retrieval_policy.py +0 -0
  77. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/src/codegraph/route_composer.py +0 -0
  78. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/src/codegraph/runtime/__init__.py +0 -0
  79. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/src/codegraph/runtime/ingestor.py +0 -0
  80. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/src/codegraph/runtime/models.py +0 -0
  81. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/src/codegraph/runtime/reconciliation.py +0 -0
  82. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/src/codegraph/search/__init__.py +0 -0
  83. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/src/codegraph/search/hybrid.py +0 -0
  84. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/src/codegraph/search/semantic.py +0 -0
  85. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/src/codegraph/security/__init__.py +0 -0
  86. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/src/codegraph/security/paths.py +0 -0
  87. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/src/codegraph/security/redaction.py +0 -0
  88. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/src/codegraph/semantic_decorators.py +0 -0
  89. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/src/codegraph/target_resolver.py +0 -0
  90. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/src/codegraph/task.py +0 -0
  91. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/src/codegraph/tool_selection_eval.py +0 -0
  92. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/src/codegraph_engine.egg-info/dependency_links.txt +0 -0
  93. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/src/codegraph_engine.egg-info/entry_points.txt +0 -0
  94. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/src/codegraph_engine.egg-info/requires.txt +0 -0
  95. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/src/codegraph_engine.egg-info/top_level.txt +0 -0
  96. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/tests/test_active_coding_protection.py +0 -0
  97. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/tests/test_adaptive_planning.py +0 -0
  98. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/tests/test_adversarial_edge_cases.py +0 -0
  99. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/tests/test_agent_ux_hardening.py +0 -0
  100. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/tests/test_agent_ux_text_search_file_inspection.py +0 -0
  101. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/tests/test_artifact_classification.py +0 -0
  102. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/tests/test_artifact_retrieval_policy.py +0 -0
  103. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/tests/test_benchmark_infra.py +0 -0
  104. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/tests/test_bounded_caches.py +0 -0
  105. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/tests/test_change_impact.py +0 -0
  106. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/tests/test_cli_doctor_privacy.py +0 -0
  107. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/tests/test_conservative_binding.py +0 -0
  108. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/tests/test_context_budget.py +0 -0
  109. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/tests/test_context_cache.py +0 -0
  110. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/tests/test_context_compiler_v2.py +0 -0
  111. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/tests/test_core.py +0 -0
  112. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/tests/test_database_integrity.py +0 -0
  113. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/tests/test_database_runtime_intelligence_and_security.py +0 -0
  114. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/tests/test_debouncer.py +0 -0
  115. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/tests/test_dependency_injection.py +0 -0
  116. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/tests/test_determinism_and_soak.py +0 -0
  117. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/tests/test_developer_audit.py +0 -0
  118. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/tests/test_epistemic_relationships.py +0 -0
  119. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/tests/test_evaluation_framework.py +0 -0
  120. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/tests/test_framework_analyzers.py +0 -0
  121. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/tests/test_framework_routes_persistence.py +0 -0
  122. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/tests/test_git_intelligence.py +0 -0
  123. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/tests/test_hardening.py +0 -0
  124. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/tests/test_interrogation_contracts.py +0 -0
  125. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/tests/test_latency_modes_and_parallel.py +0 -0
  126. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/tests/test_mcp_integration.py +0 -0
  127. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/tests/test_monorepo_packages.py +0 -0
  128. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/tests/test_package_boundaries.py +0 -0
  129. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/tests/test_phase10_context_optimization.py +0 -0
  130. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/tests/test_phase11_agent_integration.py +0 -0
  131. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/tests/test_phase12_hardening.py +0 -0
  132. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/tests/test_phase13_agent_brain_and_rc.py +0 -0
  133. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/tests/test_phase2.py +0 -0
  134. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/tests/test_ranking_engine.py +0 -0
  135. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/tests/test_reference_resolution.py +0 -0
  136. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/tests/test_registries_and_dispatch.py +0 -0
  137. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/tests/test_request_coalescer.py +0 -0
  138. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/tests/test_resource_governor.py +0 -0
  139. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/tests/test_retrieval_planner.py +0 -0
  140. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/tests/test_route_composition.py +0 -0
  141. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/tests/test_scanner_security.py +0 -0
  142. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/tests/test_semantic_decorators.py +0 -0
  143. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/tests/test_single_pass_parser.py +0 -0
  144. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/tests/test_symbol_identity.py +0 -0
  145. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/tests/test_task_ambiguity.py +0 -0
  146. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/tests/test_task_mcp_tools.py +0 -0
  147. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/tests/test_task_normalization.py +0 -0
  148. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/tests/test_task_spec.py +0 -0
  149. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/tests/test_test_intelligence.py +0 -0
  150. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/tests/test_v211_factory_resolution.py +0 -0
  151. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/tests/test_v211_features.py +0 -0
  152. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/tests/test_v211_imports_dependents_cli.py +0 -0
  153. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/tests/test_v211_recursive_frameworks.py +0 -0
  154. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/tests/test_v215_external_feedback.py +0 -0
  155. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/tests/test_v216_installer.py +0 -0
  156. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/tests/test_v217_large_repo_indexing.py +0 -0
  157. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/tests/test_v21_diagnostics.py +0 -0
  158. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/tests/test_v21_hard_exclusions.py +0 -0
  159. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/tests/test_v21_query_expansion.py +0 -0
  160. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/tests/test_v21_retrieval_policy.py +0 -0
  161. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/tests/test_v21_target_resolver.py +0 -0
  162. {codegraph_engine-2.1.7 → codegraph_engine-2.2.0}/tests/test_verify_evidence.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: codegraph-engine
3
- Version: 2.1.7
3
+ Version: 2.2.0
4
4
  Summary: Deep deterministic repository intelligence for AI coding agents (code, dependencies, databases, and runtime observations)
5
5
  Author: CodeGraph contributors
6
6
  License-Expression: MIT
@@ -35,23 +35,24 @@ Dynamic: license-file
35
35
  <img src="docs/assets/codegraph_logo.jpg" alt="CodeGraph MCP — Deep Deterministic Repository Intelligence for AI Coding Agents" width="500" />
36
36
  </p>
37
37
 
38
- <h1 align="center">CodeGraph Engine (v2.1.7)</h1>
38
+ <h1 align="center">CodeGraph-MCP Engine (v2.2.0)</h1>
39
39
 
40
40
  <p align="center">
41
41
  <strong>Deep deterministic repository intelligence for AI coding agents.</strong>
42
42
  </p>
43
43
 
44
44
  <p align="center">
45
- <a href="https://github.com/raghurammrsd/CODE_GRAPH_MCP"><img src="https://img.shields.io/badge/package-codegraph--engine%20v2.1.7-blue.svg" alt="Package: codegraph-engine v2.1.7" /></a>
45
+ <a href="https://pypi.org/project/codegraph-engine/2.2.0/"><img src="https://img.shields.io/badge/pypi-codegraph--engine%20v2.2.0-blue.svg" alt="PyPI: codegraph-engine v2.2.0" /></a>
46
46
  <a href="pyproject.toml"><img src="https://img.shields.io/badge/python-3.12%20%7C%203.13-3776AB.svg" alt="Python 3.12 | 3.13" /></a>
47
47
  <a href="src/codegraph/mcp/server.py"><img src="https://img.shields.io/badge/MCP-14%20default%20%7C%2056%20full%20tools-2ea043.svg" alt="MCP Tools: 14 default | 56 full" /></a>
48
- <a href="tests/"><img src="https://img.shields.io/badge/pytest-842%20passed-brightgreen.svg" alt="Tests: 842 passed" /></a>
48
+ <a href="tests/"><img src="https://img.shields.io/badge/pytest-861%20passed-brightgreen.svg" alt="Tests: 861 passed" /></a>
49
49
  <a href="pyproject.toml"><img src="https://img.shields.io/badge/ruff-0%20errors-success.svg" alt="Ruff: 0 errors" /></a>
50
- <a href="src/codegraph/"><img src="https://img.shields.io/badge/mypy-0%20issues%20(77%20files)-blue.svg" alt="Mypy: strict" /></a>
50
+ <a href="src/codegraph/"><img src="https://img.shields.io/badge/mypy-0%20issues%20(80%20files)-blue.svg" alt="Mypy: strict" /></a>
51
51
  <a href="LICENSE"><img src="https://img.shields.io/badge/License-MIT-yellow.svg" alt="License: MIT" /></a>
52
52
  </p>
53
53
 
54
54
  <p align="center">
55
+ <a href="https://pypi.org/project/codegraph-engine/2.2.0/"><strong>PyPI (v2.2.0)</strong></a> •
55
56
  <a href="#2-quickstart-30-second-setup"><strong>Quickstart</strong></a> •
56
57
  <a href="#1-built-for-aiml-and-backend-heavy-repositories"><strong>Built For</strong></a> •
57
58
  <a href="#5-database-intelligence"><strong>Database Intelligence</strong></a> •
@@ -125,7 +126,7 @@ pip install "codegraph-engine[mcp]"
125
126
 
126
127
  ### Step 2: Configure Your AI Coding Agents (`codegraph install`)
127
128
 
128
- CodeGraph includes an interactive, idempotent onboarding installer ([`src/codegraph/installer.py`](src/codegraph/installer.py)) that detects installed AI coding agents (**Claude Code**, **Cursor**, **Antigravity**, **Codex CLI**, **Gemini CLI**, and **Cline**), configures `mcpServers.codegraph`, installs marker-bounded routing instructions (`<!-- CODEGRAPH:START -->` … `<!-- CODEGRAPH:END -->`), and verifies MCP server startup:
129
+ CodeGraph-MCP includes an interactive, idempotent onboarding installer ([`src/codegraph/installer.py`](src/codegraph/installer.py)) that detects installed AI coding agents (**Claude Code**, **Cursor**, **Antigravity**, **Codex CLI**, **Gemini CLI**, and **Cline**), configures `mcpServers.codegraph`, installs marker-bounded routing instructions (`<!-- CODEGRAPH:START -->` … `<!-- CODEGRAPH:END -->`), and verifies MCP server startup:
129
130
 
130
131
  ```bash
131
132
  # Interactive setup (detects installed agents, previews planned changes, asks confirmation)
@@ -147,18 +148,31 @@ codegraph status
147
148
  codegraph doctor
148
149
  ```
149
150
 
150
- ### Managing Installation & Project Index Lifecycle
151
+ > **Dynamic Index Hot-Reloading:** If your AI coding agent launches `codegraph mcp serve` before you run `codegraph init`, you do **not** need to restart your IDE or MCP session. As soon as `codegraph init` or `codegraph index` creates or updates `.codegraph.sqlite3`, the running MCP server automatically detects the updated database on the next tool call and refreshes its in-memory graph cache (`get_repository_status(reload=True, reindex=True)` can also be invoked directly by the agent).
151
152
 
152
- CodeGraph cleanly separates agent configuration from project index files:
153
+ ### Managing Installation, Process & Project Index Lifecycle
154
+
155
+ CodeGraph cleanly separates agent configuration, process lifecycle, and project index files:
153
156
 
154
157
  | Command | Scope | What It Does |
155
158
  | :--- | :--- | :--- |
156
- | `codegraph install` | Agent configuration | Configures MCP server + marker-managed rules/skills for selected AI agents. |
157
- | `codegraph init` | Project repository | Initializes `.codegraph.sqlite3` and indexes the current repository. |
159
+ | `codegraph install` | Agent configuration | Configures MCP server + marker-managed rules/skills for selected AI agents (ASCII-safe on Windows `cp1252`). |
160
+ | `codegraph init` | Project repository | Initializes `.codegraph.sqlite3` and indexes the current repository (hot-reloaded automatically by running MCP servers). |
158
161
  | `codegraph index` | Project repository | Incrementally indexes modified files (`--verbose`, `--quiet`, `--json`). |
159
- | `codegraph uninstall` | Agent configuration | Removes only CodeGraph-managed MCP entries and instruction blocks (preserves user config and project index). |
162
+ | `codegraph stop` | Process lifecycle | Safely stops running CodeGraph-owned MCP background processes (`--all`, `--repo`, `--json`) and releases file locks. |
163
+ | `codegraph doctor --processes` | Process lifecycle | Lists active CodeGraph MCP processes, parent PIDs, orphan status, and cleans stale PID files. |
164
+ | `codegraph uninstall` | Agent configuration | Stops active workspace MCP processes and removes CodeGraph-managed MCP entries and instruction blocks. |
160
165
  | `codegraph uninit` | Project repository | Removes only `.codegraph.sqlite3` and `.codegraph/` in the project (never touches source code or Git history). |
161
166
 
167
+ ### Safe Upgrading on Windows (`WinError 32` Prevention)
168
+
169
+ On Windows, running `pip install --upgrade codegraph-engine` while an IDE or agent still holds `codegraph.exe` open can trigger `WinError 32`. Before upgrading on Windows, run:
170
+
171
+ ```bash
172
+ codegraph stop --all
173
+ pip install --upgrade "codegraph-engine[mcp]"
174
+ ```
175
+
162
176
  ---
163
177
 
164
178
  ## 3. Core Workflow & Architecture
@@ -218,7 +232,7 @@ InferenceService.run_inference
218
232
  db:table:postgresql.public.prediction_logs
219
233
  ```
220
234
 
221
- **What CodeGraph structurally proves**:
235
+ **What CodeGraph-MCP structurally proves**:
222
236
  - `find_routes(path="/v1/predict")` resolves composed router prefixes (`MOUNTS`) to `predict_endpoint`.
223
237
  - `trace_path(from_symbol="predict_endpoint", to_symbol="log_prediction")` proves the multi-hop execution chain across DI injection, preprocessing, model execution, and persistence.
224
238
  - `get_db_impact(symbol="InferenceService.run_inference")` identifies downstream writes to `prediction_logs`.
@@ -236,7 +250,7 @@ TrainingPipeline.run
236
250
  └──►CALLS (AST_VERIFIED) ──► Evaluator.compute_metrics
237
251
  ```
238
252
 
239
- **What CodeGraph structurally proves**:
253
+ **What CodeGraph-MCP structurally proves**:
240
254
  - `find_callees(symbol="TrainingPipeline.run")` enumerates every stage of the pipeline with exact file and line ranges.
241
255
  - `find_tests(symbol="Evaluator.compute_metrics")` locates the unit and regression tests covering metric calculation.
242
256
  - When a transform or model class is dynamically instantiated from a YAML string (`getattr(models, cfg.arch)`), CodeGraph explicitly records `POSSIBLE_CALLS` (`POSSIBLE`) or `UNRESOLVED_REFERENCE` (`UNKNOWN`) rather than fabricating a false static call edge.
@@ -255,7 +269,7 @@ AgentRunner.execute_step
255
269
  └──►CALLS (AST_VERIFIED) ──► ModelProviderClient.generate
256
270
  ```
257
271
 
258
- **What CodeGraph structurally proves**:
272
+ **What CodeGraph-MCP structurally proves**:
259
273
  - Tracks decorator and call-based registrations (`@tool_registry.register("search_orders")`) via `REGISTERS` and `REGISTERED_HANDLER` edges.
260
274
  - Tracks environment variable dependencies (`os.getenv("OPENAI_API_KEY")`) as `READS_ENV` edges with the variable name only—never indexing or exposing secret values.
261
275
 
@@ -419,20 +433,23 @@ Rather than claiming a single universal token reduction percentage across all po
419
433
  | **Compression at `budget = 200 tokens`** | `85.6%` reduction | [`benchmarks/baselines/context_baseline.json`](benchmarks/baselines/context_baseline.json) |
420
434
  | **Compression at `budget = 600 tokens`** | `56.3%` reduction | [`benchmarks/baselines/context_baseline.json`](benchmarks/baselines/context_baseline.json) |
421
435
  | **Cold vs. Warm `get_context` Latency (`p50`)** | `20.0 ms` cold → `0.67 ms` warm (`30.0x`) | [`benchmarks/baselines/context_baseline.json`](benchmarks/baselines/context_baseline.json) |
436
+ | **Single-Tool Query Latency (Indexed SQLite)** | `1 ms – 15 ms` | Local SQLite B-tree / FTS5 lookup |
422
437
  | **FACT / UNKNOWN / AMBIGUITY Correctness** | `100.0%` / `98.0%` / `100.0%` | [`benchmarks/baselines/v2_0_verified.json`](benchmarks/baselines/v2_0_verified.json) |
423
438
 
424
439
  ### Results from the 32-Task Internal Evaluation ([`src/codegraph/tool_selection_eval.py`](src/codegraph/tool_selection_eval.py))
425
440
 
426
- The table below reports results from the **32-task internal evaluation harness** (`run_tool_selection_ab_benchmark()`) comparing Mode A (unassisted exploration without CodeGraph routing rules) against Mode B (CodeGraph MCP + agent routing rules) on the same 32 tasks:
441
+ The table below reports results from the **32-task internal evaluation harness** (`run_tool_selection_ab_benchmark()`) comparing Mode A (unassisted `grep` + full-file reading without CodeGraph routing rules) against Mode B (CodeGraph MCP + agent routing rules) on the same 32 tasks:
427
442
 
428
- | Metric (32-Task Internal Evaluation) | Mode A (Baseline) | Mode B (CodeGraph MCP) | Delta |
443
+ | Metric (32-Task Internal Evaluation) | Mode A (Without CodeGraph) | Mode B (With CodeGraph MCP) | Measured Improvement |
429
444
  | :--- | ---: | ---: | :--- |
430
- | **Total Tool Calls** | `164` | `71` | `-93 calls (-56.7%)` |
431
- | **Direct Full-File Reads** | `161` | `7` | `-154 file reads (-95.7%)` |
432
- | **First-Tool Selection Accuracy** | `9.38%` | `100.0%` | `+90.62%` |
433
- | **Unsupported Claims** | `11 (34.38%)` | `0 (0.00%)` | `-11 claims` |
434
- | **Task Accuracy** | `59.84%` | `100.0%` | `+40.16%` |
435
- | **12-Prompt Natural-Language Routing Eval** | — | `12 / 12 (100.0%)` | `12/12 on this evaluation set` |
445
+ | **Total Tool Calls (32 Tasks)** | `164 calls` (`~5.1 / task`) | `71 calls` (`~2.2 / task`) | **`-93 calls (-56.7% fewer tool calls)`** |
446
+ | **Direct Full-File Reads** | `161 full-file reads` | `7 bounded slice reads` | **`-154 file reads (-95.7% fewer file reads)`** |
447
+ | **Context Tokens per Task** | `3,000 – 12,000+ tokens` (full files) | `~542 tokens` avg (`get_context`) | **`65.0% – 85.6% token reduction`** |
448
+ | **Query Latency (`p50`)** | Hundreds of ms (multi-step `grep` + reads) | `20.0 ms` cold / `0.67 ms` warm (`30.0x`) | **Sub-20ms indexed lookup** |
449
+ | **First-Tool Selection Accuracy** | `9.38%` | `100.0%` | **`+90.62%`** |
450
+ | **Unsupported Claims (Hallucinated Edges)** | `11 (34.38%)` | `0 (0.00%)` | **`-11 claims (0% unsupported)`** |
451
+ | **Task Accuracy** | `59.84%` | `100.0%` | **`+40.16%`** |
452
+ | **12-Prompt Natural-Language Routing Eval** | — | `12 / 12 (100.0%)` | **`12/12 on this evaluation set`** |
436
453
 
437
454
  ![CodeGraph — Measured Context & Exploration Efficiency](docs/assets/performance_comparison.svg)
438
455
 
@@ -540,6 +557,12 @@ codegraph index . --verbose # Incremental index w
540
557
  codegraph index . --json # Output structured JSON phase telemetry
541
558
  codegraph uninit --dry-run # Preview removal of .codegraph.sqlite3
542
559
 
560
+ # Process Lifecycle & Upgrade Lock Safety
561
+ codegraph stop # Safely stop CodeGraph MCP server for current repo
562
+ codegraph stop --all # Stop all CodeGraph-owned MCP processes across repos
563
+ codegraph stop --repo /path/to/repo --json # Stop MCP processes for a specific repo (JSON output)
564
+ codegraph doctor --processes # Inspect active MCP processes, parent PIDs, & stale locks
565
+
543
566
  # Health, Integrity & Privacy Diagnostics
544
567
  codegraph status . # Show index freshness and graph counts
545
568
  codegraph doctor . --database --resources # Verify SQLite integrity, FKs, FTS, and memory
@@ -567,8 +590,10 @@ codegraph memory list -r . # Inspect repository-
567
590
  codegraph benchmark -r . # Run deterministic benchmark suite
568
591
 
569
592
  # MCP Server Subcommands
570
- codegraph mcp serve . # Start stdio MCP server
593
+ codegraph mcp serve . # Start stdio MCP server (with parent/EOF lifecycle guard)
571
594
  codegraph mcp serve . --profile full # Start stdio MCP server with all 56 tools
595
+ codegraph mcp stop # Alias for codegraph stop
596
+ codegraph mcp kill # Alias for codegraph stop (1s graceful timeout)
572
597
  codegraph mcp doctor . # End-to-end MCP startup & query check
573
598
  codegraph mcp config-check . # Read-only MCP config validation
574
599
  codegraph mcp capabilities # Print machine-readable capability manifest
@@ -2,23 +2,24 @@
2
2
  <img src="docs/assets/codegraph_logo.jpg" alt="CodeGraph MCP — Deep Deterministic Repository Intelligence for AI Coding Agents" width="500" />
3
3
  </p>
4
4
 
5
- <h1 align="center">CodeGraph Engine (v2.1.7)</h1>
5
+ <h1 align="center">CodeGraph-MCP Engine (v2.2.0)</h1>
6
6
 
7
7
  <p align="center">
8
8
  <strong>Deep deterministic repository intelligence for AI coding agents.</strong>
9
9
  </p>
10
10
 
11
11
  <p align="center">
12
- <a href="https://github.com/raghurammrsd/CODE_GRAPH_MCP"><img src="https://img.shields.io/badge/package-codegraph--engine%20v2.1.7-blue.svg" alt="Package: codegraph-engine v2.1.7" /></a>
12
+ <a href="https://pypi.org/project/codegraph-engine/2.2.0/"><img src="https://img.shields.io/badge/pypi-codegraph--engine%20v2.2.0-blue.svg" alt="PyPI: codegraph-engine v2.2.0" /></a>
13
13
  <a href="pyproject.toml"><img src="https://img.shields.io/badge/python-3.12%20%7C%203.13-3776AB.svg" alt="Python 3.12 | 3.13" /></a>
14
14
  <a href="src/codegraph/mcp/server.py"><img src="https://img.shields.io/badge/MCP-14%20default%20%7C%2056%20full%20tools-2ea043.svg" alt="MCP Tools: 14 default | 56 full" /></a>
15
- <a href="tests/"><img src="https://img.shields.io/badge/pytest-842%20passed-brightgreen.svg" alt="Tests: 842 passed" /></a>
15
+ <a href="tests/"><img src="https://img.shields.io/badge/pytest-861%20passed-brightgreen.svg" alt="Tests: 861 passed" /></a>
16
16
  <a href="pyproject.toml"><img src="https://img.shields.io/badge/ruff-0%20errors-success.svg" alt="Ruff: 0 errors" /></a>
17
- <a href="src/codegraph/"><img src="https://img.shields.io/badge/mypy-0%20issues%20(77%20files)-blue.svg" alt="Mypy: strict" /></a>
17
+ <a href="src/codegraph/"><img src="https://img.shields.io/badge/mypy-0%20issues%20(80%20files)-blue.svg" alt="Mypy: strict" /></a>
18
18
  <a href="LICENSE"><img src="https://img.shields.io/badge/License-MIT-yellow.svg" alt="License: MIT" /></a>
19
19
  </p>
20
20
 
21
21
  <p align="center">
22
+ <a href="https://pypi.org/project/codegraph-engine/2.2.0/"><strong>PyPI (v2.2.0)</strong></a> •
22
23
  <a href="#2-quickstart-30-second-setup"><strong>Quickstart</strong></a> •
23
24
  <a href="#1-built-for-aiml-and-backend-heavy-repositories"><strong>Built For</strong></a> •
24
25
  <a href="#5-database-intelligence"><strong>Database Intelligence</strong></a> •
@@ -92,7 +93,7 @@ pip install "codegraph-engine[mcp]"
92
93
 
93
94
  ### Step 2: Configure Your AI Coding Agents (`codegraph install`)
94
95
 
95
- CodeGraph includes an interactive, idempotent onboarding installer ([`src/codegraph/installer.py`](src/codegraph/installer.py)) that detects installed AI coding agents (**Claude Code**, **Cursor**, **Antigravity**, **Codex CLI**, **Gemini CLI**, and **Cline**), configures `mcpServers.codegraph`, installs marker-bounded routing instructions (`<!-- CODEGRAPH:START -->` … `<!-- CODEGRAPH:END -->`), and verifies MCP server startup:
96
+ CodeGraph-MCP includes an interactive, idempotent onboarding installer ([`src/codegraph/installer.py`](src/codegraph/installer.py)) that detects installed AI coding agents (**Claude Code**, **Cursor**, **Antigravity**, **Codex CLI**, **Gemini CLI**, and **Cline**), configures `mcpServers.codegraph`, installs marker-bounded routing instructions (`<!-- CODEGRAPH:START -->` … `<!-- CODEGRAPH:END -->`), and verifies MCP server startup:
96
97
 
97
98
  ```bash
98
99
  # Interactive setup (detects installed agents, previews planned changes, asks confirmation)
@@ -114,18 +115,31 @@ codegraph status
114
115
  codegraph doctor
115
116
  ```
116
117
 
117
- ### Managing Installation & Project Index Lifecycle
118
+ > **Dynamic Index Hot-Reloading:** If your AI coding agent launches `codegraph mcp serve` before you run `codegraph init`, you do **not** need to restart your IDE or MCP session. As soon as `codegraph init` or `codegraph index` creates or updates `.codegraph.sqlite3`, the running MCP server automatically detects the updated database on the next tool call and refreshes its in-memory graph cache (`get_repository_status(reload=True, reindex=True)` can also be invoked directly by the agent).
118
119
 
119
- CodeGraph cleanly separates agent configuration from project index files:
120
+ ### Managing Installation, Process & Project Index Lifecycle
121
+
122
+ CodeGraph cleanly separates agent configuration, process lifecycle, and project index files:
120
123
 
121
124
  | Command | Scope | What It Does |
122
125
  | :--- | :--- | :--- |
123
- | `codegraph install` | Agent configuration | Configures MCP server + marker-managed rules/skills for selected AI agents. |
124
- | `codegraph init` | Project repository | Initializes `.codegraph.sqlite3` and indexes the current repository. |
126
+ | `codegraph install` | Agent configuration | Configures MCP server + marker-managed rules/skills for selected AI agents (ASCII-safe on Windows `cp1252`). |
127
+ | `codegraph init` | Project repository | Initializes `.codegraph.sqlite3` and indexes the current repository (hot-reloaded automatically by running MCP servers). |
125
128
  | `codegraph index` | Project repository | Incrementally indexes modified files (`--verbose`, `--quiet`, `--json`). |
126
- | `codegraph uninstall` | Agent configuration | Removes only CodeGraph-managed MCP entries and instruction blocks (preserves user config and project index). |
129
+ | `codegraph stop` | Process lifecycle | Safely stops running CodeGraph-owned MCP background processes (`--all`, `--repo`, `--json`) and releases file locks. |
130
+ | `codegraph doctor --processes` | Process lifecycle | Lists active CodeGraph MCP processes, parent PIDs, orphan status, and cleans stale PID files. |
131
+ | `codegraph uninstall` | Agent configuration | Stops active workspace MCP processes and removes CodeGraph-managed MCP entries and instruction blocks. |
127
132
  | `codegraph uninit` | Project repository | Removes only `.codegraph.sqlite3` and `.codegraph/` in the project (never touches source code or Git history). |
128
133
 
134
+ ### Safe Upgrading on Windows (`WinError 32` Prevention)
135
+
136
+ On Windows, running `pip install --upgrade codegraph-engine` while an IDE or agent still holds `codegraph.exe` open can trigger `WinError 32`. Before upgrading on Windows, run:
137
+
138
+ ```bash
139
+ codegraph stop --all
140
+ pip install --upgrade "codegraph-engine[mcp]"
141
+ ```
142
+
129
143
  ---
130
144
 
131
145
  ## 3. Core Workflow & Architecture
@@ -185,7 +199,7 @@ InferenceService.run_inference
185
199
  db:table:postgresql.public.prediction_logs
186
200
  ```
187
201
 
188
- **What CodeGraph structurally proves**:
202
+ **What CodeGraph-MCP structurally proves**:
189
203
  - `find_routes(path="/v1/predict")` resolves composed router prefixes (`MOUNTS`) to `predict_endpoint`.
190
204
  - `trace_path(from_symbol="predict_endpoint", to_symbol="log_prediction")` proves the multi-hop execution chain across DI injection, preprocessing, model execution, and persistence.
191
205
  - `get_db_impact(symbol="InferenceService.run_inference")` identifies downstream writes to `prediction_logs`.
@@ -203,7 +217,7 @@ TrainingPipeline.run
203
217
  └──►CALLS (AST_VERIFIED) ──► Evaluator.compute_metrics
204
218
  ```
205
219
 
206
- **What CodeGraph structurally proves**:
220
+ **What CodeGraph-MCP structurally proves**:
207
221
  - `find_callees(symbol="TrainingPipeline.run")` enumerates every stage of the pipeline with exact file and line ranges.
208
222
  - `find_tests(symbol="Evaluator.compute_metrics")` locates the unit and regression tests covering metric calculation.
209
223
  - When a transform or model class is dynamically instantiated from a YAML string (`getattr(models, cfg.arch)`), CodeGraph explicitly records `POSSIBLE_CALLS` (`POSSIBLE`) or `UNRESOLVED_REFERENCE` (`UNKNOWN`) rather than fabricating a false static call edge.
@@ -222,7 +236,7 @@ AgentRunner.execute_step
222
236
  └──►CALLS (AST_VERIFIED) ──► ModelProviderClient.generate
223
237
  ```
224
238
 
225
- **What CodeGraph structurally proves**:
239
+ **What CodeGraph-MCP structurally proves**:
226
240
  - Tracks decorator and call-based registrations (`@tool_registry.register("search_orders")`) via `REGISTERS` and `REGISTERED_HANDLER` edges.
227
241
  - Tracks environment variable dependencies (`os.getenv("OPENAI_API_KEY")`) as `READS_ENV` edges with the variable name only—never indexing or exposing secret values.
228
242
 
@@ -386,20 +400,23 @@ Rather than claiming a single universal token reduction percentage across all po
386
400
  | **Compression at `budget = 200 tokens`** | `85.6%` reduction | [`benchmarks/baselines/context_baseline.json`](benchmarks/baselines/context_baseline.json) |
387
401
  | **Compression at `budget = 600 tokens`** | `56.3%` reduction | [`benchmarks/baselines/context_baseline.json`](benchmarks/baselines/context_baseline.json) |
388
402
  | **Cold vs. Warm `get_context` Latency (`p50`)** | `20.0 ms` cold → `0.67 ms` warm (`30.0x`) | [`benchmarks/baselines/context_baseline.json`](benchmarks/baselines/context_baseline.json) |
403
+ | **Single-Tool Query Latency (Indexed SQLite)** | `1 ms – 15 ms` | Local SQLite B-tree / FTS5 lookup |
389
404
  | **FACT / UNKNOWN / AMBIGUITY Correctness** | `100.0%` / `98.0%` / `100.0%` | [`benchmarks/baselines/v2_0_verified.json`](benchmarks/baselines/v2_0_verified.json) |
390
405
 
391
406
  ### Results from the 32-Task Internal Evaluation ([`src/codegraph/tool_selection_eval.py`](src/codegraph/tool_selection_eval.py))
392
407
 
393
- The table below reports results from the **32-task internal evaluation harness** (`run_tool_selection_ab_benchmark()`) comparing Mode A (unassisted exploration without CodeGraph routing rules) against Mode B (CodeGraph MCP + agent routing rules) on the same 32 tasks:
408
+ The table below reports results from the **32-task internal evaluation harness** (`run_tool_selection_ab_benchmark()`) comparing Mode A (unassisted `grep` + full-file reading without CodeGraph routing rules) against Mode B (CodeGraph MCP + agent routing rules) on the same 32 tasks:
394
409
 
395
- | Metric (32-Task Internal Evaluation) | Mode A (Baseline) | Mode B (CodeGraph MCP) | Delta |
410
+ | Metric (32-Task Internal Evaluation) | Mode A (Without CodeGraph) | Mode B (With CodeGraph MCP) | Measured Improvement |
396
411
  | :--- | ---: | ---: | :--- |
397
- | **Total Tool Calls** | `164` | `71` | `-93 calls (-56.7%)` |
398
- | **Direct Full-File Reads** | `161` | `7` | `-154 file reads (-95.7%)` |
399
- | **First-Tool Selection Accuracy** | `9.38%` | `100.0%` | `+90.62%` |
400
- | **Unsupported Claims** | `11 (34.38%)` | `0 (0.00%)` | `-11 claims` |
401
- | **Task Accuracy** | `59.84%` | `100.0%` | `+40.16%` |
402
- | **12-Prompt Natural-Language Routing Eval** | — | `12 / 12 (100.0%)` | `12/12 on this evaluation set` |
412
+ | **Total Tool Calls (32 Tasks)** | `164 calls` (`~5.1 / task`) | `71 calls` (`~2.2 / task`) | **`-93 calls (-56.7% fewer tool calls)`** |
413
+ | **Direct Full-File Reads** | `161 full-file reads` | `7 bounded slice reads` | **`-154 file reads (-95.7% fewer file reads)`** |
414
+ | **Context Tokens per Task** | `3,000 – 12,000+ tokens` (full files) | `~542 tokens` avg (`get_context`) | **`65.0% – 85.6% token reduction`** |
415
+ | **Query Latency (`p50`)** | Hundreds of ms (multi-step `grep` + reads) | `20.0 ms` cold / `0.67 ms` warm (`30.0x`) | **Sub-20ms indexed lookup** |
416
+ | **First-Tool Selection Accuracy** | `9.38%` | `100.0%` | **`+90.62%`** |
417
+ | **Unsupported Claims (Hallucinated Edges)** | `11 (34.38%)` | `0 (0.00%)` | **`-11 claims (0% unsupported)`** |
418
+ | **Task Accuracy** | `59.84%` | `100.0%` | **`+40.16%`** |
419
+ | **12-Prompt Natural-Language Routing Eval** | — | `12 / 12 (100.0%)` | **`12/12 on this evaluation set`** |
403
420
 
404
421
  ![CodeGraph — Measured Context & Exploration Efficiency](docs/assets/performance_comparison.svg)
405
422
 
@@ -507,6 +524,12 @@ codegraph index . --verbose # Incremental index w
507
524
  codegraph index . --json # Output structured JSON phase telemetry
508
525
  codegraph uninit --dry-run # Preview removal of .codegraph.sqlite3
509
526
 
527
+ # Process Lifecycle & Upgrade Lock Safety
528
+ codegraph stop # Safely stop CodeGraph MCP server for current repo
529
+ codegraph stop --all # Stop all CodeGraph-owned MCP processes across repos
530
+ codegraph stop --repo /path/to/repo --json # Stop MCP processes for a specific repo (JSON output)
531
+ codegraph doctor --processes # Inspect active MCP processes, parent PIDs, & stale locks
532
+
510
533
  # Health, Integrity & Privacy Diagnostics
511
534
  codegraph status . # Show index freshness and graph counts
512
535
  codegraph doctor . --database --resources # Verify SQLite integrity, FKs, FTS, and memory
@@ -534,8 +557,10 @@ codegraph memory list -r . # Inspect repository-
534
557
  codegraph benchmark -r . # Run deterministic benchmark suite
535
558
 
536
559
  # MCP Server Subcommands
537
- codegraph mcp serve . # Start stdio MCP server
560
+ codegraph mcp serve . # Start stdio MCP server (with parent/EOF lifecycle guard)
538
561
  codegraph mcp serve . --profile full # Start stdio MCP server with all 56 tools
562
+ codegraph mcp stop # Alias for codegraph stop
563
+ codegraph mcp kill # Alias for codegraph stop (1s graceful timeout)
539
564
  codegraph mcp doctor . # End-to-end MCP startup & query check
540
565
  codegraph mcp config-check . # Read-only MCP config validation
541
566
  codegraph mcp capabilities # Print machine-readable capability manifest
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "codegraph-engine"
7
- version = "2.1.7"
7
+ version = "2.2.0"
8
8
  description = "Deep deterministic repository intelligence for AI coding agents (code, dependencies, databases, and runtime observations)"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.12"
@@ -61,6 +61,7 @@ disable_error_code = ["untyped-decorator"]
61
61
  ignore_missing_imports = true
62
62
 
63
63
  [[tool.mypy.overrides]]
64
- module = ["psutil.*", "psutil"]
64
+ module = ["psutil.*", "psutil", "yaml.*", "yaml"]
65
65
  ignore_missing_imports = true
66
+ disable_error_code = ["import-untyped"]
66
67
 
@@ -1,6 +1,6 @@
1
1
  """CodeGraph MCP: local, evidence-backed codebase intelligence."""
2
2
 
3
- __version__ = "2.1.7"
3
+ __version__ = "2.2.0"
4
4
  from codegraph.errors import (
5
5
  CodeGraphError,
6
6
  ErrorCode,