codexa 0.4.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 (189) hide show
  1. codexa-0.4.0.dist-info/METADATA +650 -0
  2. codexa-0.4.0.dist-info/RECORD +189 -0
  3. codexa-0.4.0.dist-info/WHEEL +5 -0
  4. codexa-0.4.0.dist-info/entry_points.txt +2 -0
  5. codexa-0.4.0.dist-info/licenses/LICENSE +21 -0
  6. codexa-0.4.0.dist-info/top_level.txt +1 -0
  7. semantic_code_intelligence/__init__.py +5 -0
  8. semantic_code_intelligence/analysis/__init__.py +21 -0
  9. semantic_code_intelligence/analysis/ai_features.py +351 -0
  10. semantic_code_intelligence/bridge/__init__.py +28 -0
  11. semantic_code_intelligence/bridge/context_provider.py +245 -0
  12. semantic_code_intelligence/bridge/protocol.py +167 -0
  13. semantic_code_intelligence/bridge/server.py +348 -0
  14. semantic_code_intelligence/bridge/vscode.py +271 -0
  15. semantic_code_intelligence/ci/__init__.py +13 -0
  16. semantic_code_intelligence/ci/hooks.py +98 -0
  17. semantic_code_intelligence/ci/hotspots.py +272 -0
  18. semantic_code_intelligence/ci/impact.py +246 -0
  19. semantic_code_intelligence/ci/metrics.py +591 -0
  20. semantic_code_intelligence/ci/pr.py +412 -0
  21. semantic_code_intelligence/ci/quality.py +557 -0
  22. semantic_code_intelligence/ci/templates.py +164 -0
  23. semantic_code_intelligence/ci/trace.py +224 -0
  24. semantic_code_intelligence/cli/__init__.py +0 -0
  25. semantic_code_intelligence/cli/commands/__init__.py +0 -0
  26. semantic_code_intelligence/cli/commands/ask_cmd.py +153 -0
  27. semantic_code_intelligence/cli/commands/benchmark_cmd.py +303 -0
  28. semantic_code_intelligence/cli/commands/chat_cmd.py +252 -0
  29. semantic_code_intelligence/cli/commands/ci_gen_cmd.py +74 -0
  30. semantic_code_intelligence/cli/commands/context_cmd.py +120 -0
  31. semantic_code_intelligence/cli/commands/cross_refactor_cmd.py +113 -0
  32. semantic_code_intelligence/cli/commands/deps_cmd.py +91 -0
  33. semantic_code_intelligence/cli/commands/docs_cmd.py +101 -0
  34. semantic_code_intelligence/cli/commands/doctor_cmd.py +147 -0
  35. semantic_code_intelligence/cli/commands/evolve_cmd.py +171 -0
  36. semantic_code_intelligence/cli/commands/explain_cmd.py +112 -0
  37. semantic_code_intelligence/cli/commands/gate_cmd.py +135 -0
  38. semantic_code_intelligence/cli/commands/grep_cmd.py +234 -0
  39. semantic_code_intelligence/cli/commands/hotspots_cmd.py +119 -0
  40. semantic_code_intelligence/cli/commands/impact_cmd.py +131 -0
  41. semantic_code_intelligence/cli/commands/index_cmd.py +138 -0
  42. semantic_code_intelligence/cli/commands/init_cmd.py +152 -0
  43. semantic_code_intelligence/cli/commands/investigate_cmd.py +163 -0
  44. semantic_code_intelligence/cli/commands/languages_cmd.py +101 -0
  45. semantic_code_intelligence/cli/commands/lsp_cmd.py +49 -0
  46. semantic_code_intelligence/cli/commands/mcp_cmd.py +50 -0
  47. semantic_code_intelligence/cli/commands/metrics_cmd.py +264 -0
  48. semantic_code_intelligence/cli/commands/models_cmd.py +157 -0
  49. semantic_code_intelligence/cli/commands/plugin_cmd.py +275 -0
  50. semantic_code_intelligence/cli/commands/pr_summary_cmd.py +178 -0
  51. semantic_code_intelligence/cli/commands/quality_cmd.py +208 -0
  52. semantic_code_intelligence/cli/commands/refactor_cmd.py +103 -0
  53. semantic_code_intelligence/cli/commands/review_cmd.py +88 -0
  54. semantic_code_intelligence/cli/commands/search_cmd.py +236 -0
  55. semantic_code_intelligence/cli/commands/serve_cmd.py +117 -0
  56. semantic_code_intelligence/cli/commands/suggest_cmd.py +100 -0
  57. semantic_code_intelligence/cli/commands/summary_cmd.py +78 -0
  58. semantic_code_intelligence/cli/commands/tool_cmd.py +282 -0
  59. semantic_code_intelligence/cli/commands/trace_cmd.py +123 -0
  60. semantic_code_intelligence/cli/commands/tui_cmd.py +58 -0
  61. semantic_code_intelligence/cli/commands/viz_cmd.py +127 -0
  62. semantic_code_intelligence/cli/commands/watch_cmd.py +72 -0
  63. semantic_code_intelligence/cli/commands/web_cmd.py +61 -0
  64. semantic_code_intelligence/cli/commands/workspace_cmd.py +250 -0
  65. semantic_code_intelligence/cli/main.py +65 -0
  66. semantic_code_intelligence/cli/router.py +92 -0
  67. semantic_code_intelligence/config/__init__.py +0 -0
  68. semantic_code_intelligence/config/settings.py +260 -0
  69. semantic_code_intelligence/context/__init__.py +19 -0
  70. semantic_code_intelligence/context/engine.py +429 -0
  71. semantic_code_intelligence/context/memory.py +253 -0
  72. semantic_code_intelligence/daemon/__init__.py +1 -0
  73. semantic_code_intelligence/daemon/watcher.py +515 -0
  74. semantic_code_intelligence/docs/__init__.py +1080 -0
  75. semantic_code_intelligence/embeddings/__init__.py +0 -0
  76. semantic_code_intelligence/embeddings/enhanced.py +131 -0
  77. semantic_code_intelligence/embeddings/generator.py +149 -0
  78. semantic_code_intelligence/embeddings/model_registry.py +100 -0
  79. semantic_code_intelligence/evolution/__init__.py +1 -0
  80. semantic_code_intelligence/evolution/budget_guard.py +111 -0
  81. semantic_code_intelligence/evolution/commit_manager.py +88 -0
  82. semantic_code_intelligence/evolution/context_builder.py +131 -0
  83. semantic_code_intelligence/evolution/engine.py +249 -0
  84. semantic_code_intelligence/evolution/patch_generator.py +229 -0
  85. semantic_code_intelligence/evolution/task_selector.py +214 -0
  86. semantic_code_intelligence/evolution/test_runner.py +111 -0
  87. semantic_code_intelligence/indexing/__init__.py +0 -0
  88. semantic_code_intelligence/indexing/chunker.py +174 -0
  89. semantic_code_intelligence/indexing/parallel.py +86 -0
  90. semantic_code_intelligence/indexing/scanner.py +146 -0
  91. semantic_code_intelligence/indexing/semantic_chunker.py +337 -0
  92. semantic_code_intelligence/llm/__init__.py +62 -0
  93. semantic_code_intelligence/llm/cache.py +219 -0
  94. semantic_code_intelligence/llm/cached_provider.py +145 -0
  95. semantic_code_intelligence/llm/conversation.py +190 -0
  96. semantic_code_intelligence/llm/cross_refactor.py +272 -0
  97. semantic_code_intelligence/llm/investigation.py +274 -0
  98. semantic_code_intelligence/llm/mock_provider.py +77 -0
  99. semantic_code_intelligence/llm/ollama_provider.py +122 -0
  100. semantic_code_intelligence/llm/openai_provider.py +100 -0
  101. semantic_code_intelligence/llm/provider.py +92 -0
  102. semantic_code_intelligence/llm/rate_limiter.py +164 -0
  103. semantic_code_intelligence/llm/reasoning.py +438 -0
  104. semantic_code_intelligence/llm/safety.py +110 -0
  105. semantic_code_intelligence/llm/streaming.py +251 -0
  106. semantic_code_intelligence/lsp/__init__.py +609 -0
  107. semantic_code_intelligence/mcp/__init__.py +393 -0
  108. semantic_code_intelligence/parsing/__init__.py +19 -0
  109. semantic_code_intelligence/parsing/parser.py +375 -0
  110. semantic_code_intelligence/plugins/__init__.py +255 -0
  111. semantic_code_intelligence/plugins/examples/__init__.py +1 -0
  112. semantic_code_intelligence/plugins/examples/code_quality.py +73 -0
  113. semantic_code_intelligence/plugins/examples/search_annotator.py +56 -0
  114. semantic_code_intelligence/scalability/__init__.py +205 -0
  115. semantic_code_intelligence/search/__init__.py +0 -0
  116. semantic_code_intelligence/search/formatter.py +123 -0
  117. semantic_code_intelligence/search/grep.py +361 -0
  118. semantic_code_intelligence/search/hybrid_search.py +170 -0
  119. semantic_code_intelligence/search/keyword_search.py +311 -0
  120. semantic_code_intelligence/search/section_expander.py +103 -0
  121. semantic_code_intelligence/services/__init__.py +0 -0
  122. semantic_code_intelligence/services/indexing_service.py +630 -0
  123. semantic_code_intelligence/services/search_service.py +269 -0
  124. semantic_code_intelligence/storage/__init__.py +0 -0
  125. semantic_code_intelligence/storage/chunk_hash_store.py +86 -0
  126. semantic_code_intelligence/storage/hash_store.py +66 -0
  127. semantic_code_intelligence/storage/index_manifest.py +85 -0
  128. semantic_code_intelligence/storage/index_stats.py +138 -0
  129. semantic_code_intelligence/storage/query_history.py +160 -0
  130. semantic_code_intelligence/storage/symbol_registry.py +209 -0
  131. semantic_code_intelligence/storage/vector_store.py +297 -0
  132. semantic_code_intelligence/tests/__init__.py +0 -0
  133. semantic_code_intelligence/tests/test_ai_features.py +351 -0
  134. semantic_code_intelligence/tests/test_chunker.py +119 -0
  135. semantic_code_intelligence/tests/test_cli.py +188 -0
  136. semantic_code_intelligence/tests/test_config.py +154 -0
  137. semantic_code_intelligence/tests/test_context.py +381 -0
  138. semantic_code_intelligence/tests/test_embeddings.py +73 -0
  139. semantic_code_intelligence/tests/test_endtoend.py +1142 -0
  140. semantic_code_intelligence/tests/test_enhanced_embeddings.py +92 -0
  141. semantic_code_intelligence/tests/test_hash_store.py +79 -0
  142. semantic_code_intelligence/tests/test_logging.py +55 -0
  143. semantic_code_intelligence/tests/test_new_cli.py +138 -0
  144. semantic_code_intelligence/tests/test_parser.py +495 -0
  145. semantic_code_intelligence/tests/test_phase10.py +355 -0
  146. semantic_code_intelligence/tests/test_phase11.py +593 -0
  147. semantic_code_intelligence/tests/test_phase12.py +375 -0
  148. semantic_code_intelligence/tests/test_phase13.py +663 -0
  149. semantic_code_intelligence/tests/test_phase14.py +568 -0
  150. semantic_code_intelligence/tests/test_phase15.py +814 -0
  151. semantic_code_intelligence/tests/test_phase16.py +792 -0
  152. semantic_code_intelligence/tests/test_phase17.py +815 -0
  153. semantic_code_intelligence/tests/test_phase18.py +934 -0
  154. semantic_code_intelligence/tests/test_phase19.py +986 -0
  155. semantic_code_intelligence/tests/test_phase20.py +2753 -0
  156. semantic_code_intelligence/tests/test_phase20b.py +2058 -0
  157. semantic_code_intelligence/tests/test_phase20c.py +962 -0
  158. semantic_code_intelligence/tests/test_phase21.py +428 -0
  159. semantic_code_intelligence/tests/test_phase22.py +799 -0
  160. semantic_code_intelligence/tests/test_phase23.py +783 -0
  161. semantic_code_intelligence/tests/test_phase24.py +715 -0
  162. semantic_code_intelligence/tests/test_phase25.py +496 -0
  163. semantic_code_intelligence/tests/test_phase26.py +251 -0
  164. semantic_code_intelligence/tests/test_phase27.py +531 -0
  165. semantic_code_intelligence/tests/test_phase8.py +592 -0
  166. semantic_code_intelligence/tests/test_phase9.py +643 -0
  167. semantic_code_intelligence/tests/test_plugins.py +293 -0
  168. semantic_code_intelligence/tests/test_priority_features.py +727 -0
  169. semantic_code_intelligence/tests/test_router.py +41 -0
  170. semantic_code_intelligence/tests/test_scalability.py +138 -0
  171. semantic_code_intelligence/tests/test_scanner.py +125 -0
  172. semantic_code_intelligence/tests/test_search.py +160 -0
  173. semantic_code_intelligence/tests/test_semantic_chunker.py +255 -0
  174. semantic_code_intelligence/tests/test_tools.py +182 -0
  175. semantic_code_intelligence/tests/test_vector_store.py +151 -0
  176. semantic_code_intelligence/tests/test_watcher.py +211 -0
  177. semantic_code_intelligence/tools/__init__.py +442 -0
  178. semantic_code_intelligence/tools/executor.py +232 -0
  179. semantic_code_intelligence/tools/protocol.py +200 -0
  180. semantic_code_intelligence/tui/__init__.py +454 -0
  181. semantic_code_intelligence/utils/__init__.py +0 -0
  182. semantic_code_intelligence/utils/logging.py +112 -0
  183. semantic_code_intelligence/version.py +3 -0
  184. semantic_code_intelligence/web/__init__.py +11 -0
  185. semantic_code_intelligence/web/api.py +289 -0
  186. semantic_code_intelligence/web/server.py +397 -0
  187. semantic_code_intelligence/web/ui.py +659 -0
  188. semantic_code_intelligence/web/visualize.py +226 -0
  189. semantic_code_intelligence/workspace/__init__.py +427 -0
@@ -0,0 +1,189 @@
1
+ codexa-0.4.0.dist-info/licenses/LICENSE,sha256=pZPGVSypYajl8DQdZNc5_jjYcArCnMnIUm8vamq8pZo,1097
2
+ semantic_code_intelligence/__init__.py,sha256=y-viNgZNj2d0mHhD24yDon2dfw7M7vfviDbkUscq2QQ,188
3
+ semantic_code_intelligence/version.py,sha256=clScAY2XYO9TOSpxaifqGEJvAmTxOx0y-p3Nu_95uPc,75
4
+ semantic_code_intelligence/analysis/__init__.py,sha256=HKSVNVejn3MfWMvlq1-KkmxZvwjBR8gDd7EHCGL0ZkQ,488
5
+ semantic_code_intelligence/analysis/ai_features.py,sha256=bCVnFg1C-jFhzwyxJ3gro24fjpNe-pJaounzn2eVlUM,12651
6
+ semantic_code_intelligence/bridge/__init__.py,sha256=w9yB0v8Nv7dnyhapb5ZR9XTGW6ktEpeTYW0KFg6Oqus,881
7
+ semantic_code_intelligence/bridge/context_provider.py,sha256=SCW7nCdor4vfN_wpJ5go3GPq8ug0R8doLRzupyejiaY,9117
8
+ semantic_code_intelligence/bridge/protocol.py,sha256=VJO6Xlg7djILlIWpLxXyyHdNGjAyaYk93Jx3CifJlpA,5719
9
+ semantic_code_intelligence/bridge/server.py,sha256=IR5Jas2i3b5GWKy_2LVpHz9w64S0dix8QVO9jEbvyaM,14051
10
+ semantic_code_intelligence/bridge/vscode.py,sha256=O2PmRQXBKqdt02WhCRMAP5DBucTFhC2O2RR4TIAySfU,10187
11
+ semantic_code_intelligence/ci/__init__.py,sha256=hv1uYv4CPcsxDrdMMWpqlYXNVCDWET8FGOGJCyT49gs,716
12
+ semantic_code_intelligence/ci/hooks.py,sha256=n8irORV9n9f-ba8H7LDXZz9rvkebWlBzB_ltaaE2BdI,3445
13
+ semantic_code_intelligence/ci/hotspots.py,sha256=73-D-TO266eWlnpETidBVWK5NYAV_FHA4wHhvREO0EU,9108
14
+ semantic_code_intelligence/ci/impact.py,sha256=PoT6tLg93rg_jHJ4ECfEzjy5THaBQfa-VqBt09S8Lxk,8255
15
+ semantic_code_intelligence/ci/metrics.py,sha256=EPm2Dem4stEnKDrVsVtksCSjGIAR1jjULdxO2mRQRb8,20488
16
+ semantic_code_intelligence/ci/pr.py,sha256=uMnBDK_YHOo8_GshPjj_SCZnmqENO7mnyHTxMB1XIHU,14423
17
+ semantic_code_intelligence/ci/quality.py,sha256=1NXVKupJKDCaOWLRW67W0HABSD5dQBIQohaLHynFMSc,18942
18
+ semantic_code_intelligence/ci/templates.py,sha256=lWkPFTTKNbCugOgFRDw-_Vq5svyT1Q86tH3Q_DMnSKc,4331
19
+ semantic_code_intelligence/ci/trace.py,sha256=NOFJRVqeQ6cX9cMC50IYprIiQpVhgc5TVcU5ghB9TOY,7548
20
+ semantic_code_intelligence/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
21
+ semantic_code_intelligence/cli/main.py,sha256=3gOpQeh_sZeXiqtTVdHNs6Qjfn7vEvD6UoYLIiuXvZU,1920
22
+ semantic_code_intelligence/cli/router.py,sha256=MRSXwjsSHOIjGc57A1ILt43FQ1lWxNFT3EwFd_0iHR0,4545
23
+ semantic_code_intelligence/cli/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
24
+ semantic_code_intelligence/cli/commands/ask_cmd.py,sha256=vAx80mj_ydqIbBqBKha7UYjGar1oh-4wgRXhXW_HVxU,4779
25
+ semantic_code_intelligence/cli/commands/benchmark_cmd.py,sha256=FDSdI9NaGz6x3305sY9nzDpo4C3DKp0-3hJTO6V26TY,10888
26
+ semantic_code_intelligence/cli/commands/chat_cmd.py,sha256=FzAcXkTai2QM1s-NP6-4qS9irdWT_YqbCxcMEXIuXVs,8236
27
+ semantic_code_intelligence/cli/commands/ci_gen_cmd.py,sha256=zUUiVb1o7kNRCXEtTdmJvb1uosPUCEP8NylZegcrY1Y,1794
28
+ semantic_code_intelligence/cli/commands/context_cmd.py,sha256=dzzWgIqgoxlQitvRSl9fSbiNksgR2QdcQsGOxObgh6o,3264
29
+ semantic_code_intelligence/cli/commands/cross_refactor_cmd.py,sha256=rNecYQdm1gfWiR0GUvDX3kp2AVs_n6hXNVHdGLf28GA,3870
30
+ semantic_code_intelligence/cli/commands/deps_cmd.py,sha256=X0WRUqkuu0-akwkNd6gMFTFHZ15MwPCEP2Le9MlPQAI,2694
31
+ semantic_code_intelligence/cli/commands/docs_cmd.py,sha256=_6Jrs3COTGk00p-I1oTBcnVd9yPh9cKvUA5NUkQfONo,2898
32
+ semantic_code_intelligence/cli/commands/doctor_cmd.py,sha256=NDMPWB31DSEqV0WwFAqnc5rdBt_5ma3U0bYo4VM_aV4,4334
33
+ semantic_code_intelligence/cli/commands/evolve_cmd.py,sha256=8ovrGTYhT__b3-64zF5OePW4bCct3nI4Z5ZOqjAP7dw,5146
34
+ semantic_code_intelligence/cli/commands/explain_cmd.py,sha256=Adum8L1jfK0OsdMfpNMPtzmLYGyJnVHerpzSLVgiDXk,3197
35
+ semantic_code_intelligence/cli/commands/gate_cmd.py,sha256=2Uaf42WU39Lf2sp-iVvDUupLKWU99303WPPUhdZ6h14,3407
36
+ semantic_code_intelligence/cli/commands/grep_cmd.py,sha256=e_roxdY0JmeiRxuRXIFdrq8zE7yRauel3Sd-xnaVdmE,5923
37
+ semantic_code_intelligence/cli/commands/hotspots_cmd.py,sha256=t11OFliw6nc6R___MdCKW8-7r8ApSYXXmNPnf9H-VMY,3775
38
+ semantic_code_intelligence/cli/commands/impact_cmd.py,sha256=6ijfjjG0xmUSAxJq-yu90bbt0A2F9zHvYu0-T7bFz2E,4274
39
+ semantic_code_intelligence/cli/commands/index_cmd.py,sha256=cDE1-77o_3pb5qbf_68HxDCWFsuleqDqjOdwOv3fais,4285
40
+ semantic_code_intelligence/cli/commands/init_cmd.py,sha256=mz-O9zpyDCwLPSMO0GZv5e-GpgRK6LVELzuQEeQ9aq4,4689
41
+ semantic_code_intelligence/cli/commands/investigate_cmd.py,sha256=mJce_x-F96UewvVNCXok05CCE-QMHnedilSabZ-VTkg,5379
42
+ semantic_code_intelligence/cli/commands/languages_cmd.py,sha256=R3Yx7VbGLeGVq8Bf12M4CQ0y1WNErxTw-nd6yvLZm08,3244
43
+ semantic_code_intelligence/cli/commands/lsp_cmd.py,sha256=pyuBnsFulVwwCW-PFKj_3obhSB2JyEvsQiUY0tZMn40,1362
44
+ semantic_code_intelligence/cli/commands/mcp_cmd.py,sha256=W10iuvU065mIA7Tl3xdTjnUmSHNzVG9urzrIIboqHlg,1384
45
+ semantic_code_intelligence/cli/commands/metrics_cmd.py,sha256=xLtR-MRubxWn7_s3TpnbP7s9jBT1NhHXnhIJIN1SHks,8557
46
+ semantic_code_intelligence/cli/commands/models_cmd.py,sha256=xsA6Ab9o_MVHkDaZAtCH-JItoFHytSEo_s3VXQpC5ZU,5371
47
+ semantic_code_intelligence/cli/commands/plugin_cmd.py,sha256=svXtIrEy3v2_l9C5N-Hw9KzQd6cIorwNn0bXABJt2fw,7297
48
+ semantic_code_intelligence/cli/commands/pr_summary_cmd.py,sha256=oA6QydvkFNxPYsa2NpaWgFV-6E02PkxIG96q50vtUs0,5784
49
+ semantic_code_intelligence/cli/commands/quality_cmd.py,sha256=2O8vFzTniO_t8NEkKLPxuXxAiZLydPa5hsJjh75Vib0,7532
50
+ semantic_code_intelligence/cli/commands/refactor_cmd.py,sha256=0_AH7k3vCnyGlefatNaRRrsbDb_378-i9MHKw6Vg044,3171
51
+ semantic_code_intelligence/cli/commands/review_cmd.py,sha256=TpXYCYlhnDXUiGbvChcL7FvxXE9jlsApEo8zXhBCGOQ,2582
52
+ semantic_code_intelligence/cli/commands/search_cmd.py,sha256=5Yzz_9aIvsnZXK3gDqjdHs1SmQD1tcJDBWdYtjdQtks,6427
53
+ semantic_code_intelligence/cli/commands/serve_cmd.py,sha256=IPDB1vTeV36cHr_IZyZ9-YKqeWYKAXaACeEQTK2XcKk,3142
54
+ semantic_code_intelligence/cli/commands/suggest_cmd.py,sha256=zb3HAMEFTJyKFaanGtX2tSwZxdqJ0MBXkkRG1jCWStk,2976
55
+ semantic_code_intelligence/cli/commands/summary_cmd.py,sha256=YYgSjz_oJeWZN4L8OnYybdZJCQ4GXYu3iGtfIbcEPYY,2143
56
+ semantic_code_intelligence/cli/commands/tool_cmd.py,sha256=FXKxECPFzNG0B3GS8gv5kjciVZ80vabJKxQhK3thyFM,9649
57
+ semantic_code_intelligence/cli/commands/trace_cmd.py,sha256=sentdCAcWhPdfkeyw0LOMJLFZ7tzkPHKCxKJZYmlO9c,4086
58
+ semantic_code_intelligence/cli/commands/tui_cmd.py,sha256=vp0Ru9ZBVAPhdUFz9CyEuxKeCtXy-4ih5g9SjWiw5XI,1517
59
+ semantic_code_intelligence/cli/commands/viz_cmd.py,sha256=PhRe3crS-vfc5Axykc1Bj0NUPL90l6B7XQgGTPEe6S0,3619
60
+ semantic_code_intelligence/cli/commands/watch_cmd.py,sha256=d1ed2P28NpgJhQG0Dqw62fDg97flBUeaAxb4g0tLIe0,1773
61
+ semantic_code_intelligence/cli/commands/web_cmd.py,sha256=LZRxdbJum93g4wy8nQAEE-KHIVGHDTWVnEAsNFH9ZKE,1453
62
+ semantic_code_intelligence/cli/commands/workspace_cmd.py,sha256=REh1eaE9crNJxkcYu2BpeIquzXslSIIcTZYqJZykkqY,7235
63
+ semantic_code_intelligence/config/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
64
+ semantic_code_intelligence/config/settings.py,sha256=72W-dwS1FOQ4bfsObqAmbbj3aVpIlrzx0LdanOmtHn4,7566
65
+ semantic_code_intelligence/context/__init__.py,sha256=e34VWutCcCigij9T80f4NLir2-xgYM3c15u1Q_Avaso,413
66
+ semantic_code_intelligence/context/engine.py,sha256=1PJNTWHi8wWuFr2I2zVfbfhU7-G8u_LE65usfrhq63c,15842
67
+ semantic_code_intelligence/context/memory.py,sha256=-OAEJgBka5jdAjw0L6Bfswey_JGb1QqNm8WIrxrx_vw,8995
68
+ semantic_code_intelligence/daemon/__init__.py,sha256=bbZ3JgID-J1vHakztgqkIg-vpRTGvqfh0y5wf59qFJk,61
69
+ semantic_code_intelligence/daemon/watcher.py,sha256=pavTqUchb02HbN_sHumelgZ6ei1s3RW2Aza_Qf4I_vk,19237
70
+ semantic_code_intelligence/docs/__init__.py,sha256=gUkE8rvh0ENTUTiwGg9LEdZRekS218rfdxX8yDcMsw8,40590
71
+ semantic_code_intelligence/embeddings/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
72
+ semantic_code_intelligence/embeddings/enhanced.py,sha256=EZQC6Nq4FxKXJSWBMc_SUdV9tHLxpawi-PIkrBZAPdk,3955
73
+ semantic_code_intelligence/embeddings/generator.py,sha256=OE1rXl9yPXV9-NP9TEpgxAjra99X8JGifa_ZdPw51EQ,4823
74
+ semantic_code_intelligence/embeddings/model_registry.py,sha256=PlWVYcPnHDdgFy7MdqdnxNBulF-wX962Im9DC-21X6Q,3610
75
+ semantic_code_intelligence/evolution/__init__.py,sha256=XpZOPygCMXVD4EmA6dpvLrghRCLNzRD1HmS8zcojaNI,82
76
+ semantic_code_intelligence/evolution/budget_guard.py,sha256=pU5zE-izkDlPoPXXVp64ip1ZUBQLOBYCbzQnDfk2QvQ,4111
77
+ semantic_code_intelligence/evolution/commit_manager.py,sha256=awvSrF-gSGONWTGMNayCgVKsQ719jPcLHOIhSDgMSWE,3210
78
+ semantic_code_intelligence/evolution/context_builder.py,sha256=9jy0j44LSp-DFfP2ZccAoYEWlg0hAK-vuwZ4o0VEjIU,4845
79
+ semantic_code_intelligence/evolution/engine.py,sha256=_kwBfoKBK768-DO6fGaRC0C6jFLgxKiz2LaYmp-gcXE,9211
80
+ semantic_code_intelligence/evolution/patch_generator.py,sha256=EaCCHFVuNrwav2t8sozPHx7SiY3X_jt0Exx5-DL1zoA,7719
81
+ semantic_code_intelligence/evolution/task_selector.py,sha256=YiKxiAcz_TaZPa58-xFk4fVGSInriEED28sB78eEuCs,8531
82
+ semantic_code_intelligence/evolution/test_runner.py,sha256=xgHtWza04SaiLb5q3DAxILMJ02sp52wZt5giWn8h4Sk,3585
83
+ semantic_code_intelligence/indexing/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
84
+ semantic_code_intelligence/indexing/chunker.py,sha256=q-8GE8t0h-5B52j76_OwSMWZV-Rt8VCCIuTs8CvIwmo,4905
85
+ semantic_code_intelligence/indexing/parallel.py,sha256=eaSHy5g-_gkfyRCm6I-4rnOR1eW3j8sdWXbQQNfo7bc,2786
86
+ semantic_code_intelligence/indexing/scanner.py,sha256=YkxygLYgMa2oOsfqftr-myElR6nFuecN-3VGaYd1lw0,4447
87
+ semantic_code_intelligence/indexing/semantic_chunker.py,sha256=tIfMOKuYS-dW401KGl2lhU7QD2HSl-TZ_Uo35R5LOcM,12055
88
+ semantic_code_intelligence/llm/__init__.py,sha256=5RGqWhPu0t_dOakSo69156CvcDT71kfvePcE6_kR4sU,2530
89
+ semantic_code_intelligence/llm/cache.py,sha256=SqKztwHkF5dudg72uiiKFEdb9nsOhUxv0p170rVvl2w,7212
90
+ semantic_code_intelligence/llm/cached_provider.py,sha256=3Y6avPTDs6suS9ETB8znqjys3mK_3_exkW_srCgRGtc,5142
91
+ semantic_code_intelligence/llm/conversation.py,sha256=Rqq4C0_5MCrRJLmokpOqXJOU5jn2RIwEvLpmQ68M3P4,7496
92
+ semantic_code_intelligence/llm/cross_refactor.py,sha256=mRUTTOlQ9I9SwRRevJir-N7UiGA_z491E8eKot4sUbg,9708
93
+ semantic_code_intelligence/llm/investigation.py,sha256=FRRbhJ7u1J362BaQXovJrplGiA4flVbsetMJWNJ7__w,10598
94
+ semantic_code_intelligence/llm/mock_provider.py,sha256=Jyr9BSc8KNrkX_Zo0AlkNEVqDaFkAsCGoBEjJR8xMOY,2585
95
+ semantic_code_intelligence/llm/ollama_provider.py,sha256=1YvcoDpNCmgB4qHFLUi772vU4zu1nw8S4pdYSQkjfhw,4283
96
+ semantic_code_intelligence/llm/openai_provider.py,sha256=-klNzap3H1KbMU1sner-t_CnPGIxHq6MIRAEPJUNegw,3196
97
+ semantic_code_intelligence/llm/provider.py,sha256=TWnxcH-H0IN2utGaLZnBaRa3fjH3TwPfr_qu6QnIgdk,2425
98
+ semantic_code_intelligence/llm/rate_limiter.py,sha256=WaH87f-vvb_sSlyl1X8XP2FMy9ZmUHTpElfRphyGFf0,5537
99
+ semantic_code_intelligence/llm/reasoning.py,sha256=irgNCy4hSuofgrvRGNoXGuWO94AO4SgGKbFwYDQnL7g,15945
100
+ semantic_code_intelligence/llm/safety.py,sha256=u4ZbFnlM4pDvc-_osLEMEDb_AluQj2gMfOpogMB53xo,4324
101
+ semantic_code_intelligence/llm/streaming.py,sha256=z8-EUpAtLVAyQ6MBj6morutxyptgnAQpgPz-A1RREfk,8808
102
+ semantic_code_intelligence/lsp/__init__.py,sha256=HvtpTU0wjMhO1XbUOY2pk1_j7_VNjyHcgv8gx-HFy1o,23584
103
+ semantic_code_intelligence/mcp/__init__.py,sha256=nt6NQBwBMMjWfMthIg5OjsJzT4uv6LcnsfoHJAUBlJg,15194
104
+ semantic_code_intelligence/parsing/__init__.py,sha256=0nyE3n-k92RWw4FC80DF2D8WQODZCp2tCSAXcNNX72I,392
105
+ semantic_code_intelligence/parsing/parser.py,sha256=rsnMuiXPkt12a_qhtguaFVABWE-y2gTkcNkRIcACxPk,14280
106
+ semantic_code_intelligence/plugins/__init__.py,sha256=sqMBt0PFdb9TXbd5wS66zWPcabn6Sd345OzJsY-EQrk,8696
107
+ semantic_code_intelligence/plugins/examples/__init__.py,sha256=hO0BcQRNPBGQomHHat3uMYOXtF2vYbBNAc_8AAyeVQ0,59
108
+ semantic_code_intelligence/plugins/examples/code_quality.py,sha256=RM6wgpngzXViNz7S8AwW5sZIve8KvLpfYw2MFYiwflk,2504
109
+ semantic_code_intelligence/plugins/examples/search_annotator.py,sha256=Nas23H5FpKc_IORk9rFhfnj9niwDYUxn53Xr26p2gz0,1893
110
+ semantic_code_intelligence/scalability/__init__.py,sha256=ue9WBuT0lHmFZ3NfM5DSLfOYUtL2FBLZ52556jWT_vs,6590
111
+ semantic_code_intelligence/search/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
112
+ semantic_code_intelligence/search/formatter.py,sha256=Fpf0xbM8I2efUi4vg2AslcpyIj_I0XLalzJGTzGPGoM,4093
113
+ semantic_code_intelligence/search/grep.py,sha256=cmDobn8LHmvPBSdz6Xc9jvmLSKcMhC7aFqVvLIjc2gU,12234
114
+ semantic_code_intelligence/search/hybrid_search.py,sha256=1HN5o-XgDlhVgnGIL1UFwjsbrbguEZWninNBA7LDEJ8,5790
115
+ semantic_code_intelligence/search/keyword_search.py,sha256=MK7Ln7YqEDMXJBxneINiSgzKdjqzJffL3F3AqhAWRgg,10569
116
+ semantic_code_intelligence/search/section_expander.py,sha256=XEYyFOFGna4MhvPIuMxwANdS8JTx3GklYzcW1VXTnEk,3496
117
+ semantic_code_intelligence/services/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
118
+ semantic_code_intelligence/services/indexing_service.py,sha256=JIWb_RRthk9mGHclpnOelgwiA9D5-bZBZk6AnB0v7j0,23091
119
+ semantic_code_intelligence/services/search_service.py,sha256=i4lhQJ8YiuIGP9jSYi6ypCvAMsusMtXP4j4Oo72B3AQ,8793
120
+ semantic_code_intelligence/storage/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
121
+ semantic_code_intelligence/storage/chunk_hash_store.py,sha256=VnBxJfvn-IdW4v1I8_WlnaiV-LYJJ3G4gFu8fA4BwDw,2817
122
+ semantic_code_intelligence/storage/hash_store.py,sha256=971uaE1Sw42VUxVl3CXvw-QSYhmAAw9MhgqdKyUYP_E,2140
123
+ semantic_code_intelligence/storage/index_manifest.py,sha256=EmkGQgK2UZz8OCNG7K-A92RJKB5yIVySZ_5PE_GDwDs,3058
124
+ semantic_code_intelligence/storage/index_stats.py,sha256=6CkfdcFOVSxfitQq8fh2Do_dJ7Ai9I_lTcsjxVWaqLk,4598
125
+ semantic_code_intelligence/storage/query_history.py,sha256=84B3B14llG_iDScTqwN_C5lMSkUYbk4GykH5a7AUDjA,5516
126
+ semantic_code_intelligence/storage/symbol_registry.py,sha256=Jl4Hh1AUNLIpj3gEFiSYCGtAXkeHKE3Ov55HlU4-ugQ,7499
127
+ semantic_code_intelligence/storage/vector_store.py,sha256=rfh8CiF93FSlrBhNQhixhvyQj6zj0vAbhiX5PWxfpEQ,10576
128
+ semantic_code_intelligence/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
129
+ semantic_code_intelligence/tests/test_ai_features.py,sha256=JE5t4RFi_2Po9rCDKVP_ijZRDoN2cMDagtpA99juvM8,11453
130
+ semantic_code_intelligence/tests/test_chunker.py,sha256=ydANqxOQqxcmkGUcGP552cAZer7aHMO0gebFfOHi0Aw,4066
131
+ semantic_code_intelligence/tests/test_cli.py,sha256=dNORWD4ADKx4AakeNfD6ebCXv6WuHBYbABtmbkn8s1U,7428
132
+ semantic_code_intelligence/tests/test_config.py,sha256=EsBwUO8V8JfwOQicsc40BomgicZfhMoB46OJbOA5kc8,5180
133
+ semantic_code_intelligence/tests/test_context.py,sha256=QRc1mvgfSk9zL_7WhKDxio9zuSN6n6S-jjPsuS08awY,13022
134
+ semantic_code_intelligence/tests/test_embeddings.py,sha256=aQw3kaSgH7exYLh5s3DZ-UZddCZiDaAdigbZQ-sZQlo,2149
135
+ semantic_code_intelligence/tests/test_endtoend.py,sha256=iItI21k4qxuzZ9FeBXa0QGIJPDZVa21_-C1S_INReH8,44822
136
+ semantic_code_intelligence/tests/test_enhanced_embeddings.py,sha256=jQCI_JQoA9LmoTn_OgnwydoCz2AaXdSywYFZ04hwz2U,3205
137
+ semantic_code_intelligence/tests/test_hash_store.py,sha256=OUzoynVzi8ElrWiRfwPvqESRb4H9HXjdDuGC9QtwsZ8,2329
138
+ semantic_code_intelligence/tests/test_logging.py,sha256=RiEBDzvXGvxaJUB1yfPlJ1KwrIiXcom6B6QKaAMvT4M,1402
139
+ semantic_code_intelligence/tests/test_new_cli.py,sha256=TUZJshDeaHk15vm7aEO6ukcsG8jjE4Z0z3LCm5zL3XA,5043
140
+ semantic_code_intelligence/tests/test_parser.py,sha256=k9DRYcwZGuOHjHKNiMTZJdL7ofeDgS5ArehF2CkqniY,13971
141
+ semantic_code_intelligence/tests/test_phase10.py,sha256=sbSn3TmGI14Vz0lp-H5Gmz3Nq7Dy-QUV0GnLUczyeZY,13079
142
+ semantic_code_intelligence/tests/test_phase11.py,sha256=jVJc6OC3aKNvrhwljFUnjDiM49KUwTJivmHJBjjwDoQ,17012
143
+ semantic_code_intelligence/tests/test_phase12.py,sha256=SSuGfxn2dLVbDQOEnKC80wZJPApyzRT9gwbmCXehx0g,13831
144
+ semantic_code_intelligence/tests/test_phase13.py,sha256=zMI3xje-PZiCTGlaBHkKvYgQ1i2LtkuXH_NGLbQAI5s,23932
145
+ semantic_code_intelligence/tests/test_phase14.py,sha256=Cn7_en7HihhFHYptheK1jPMsTOI3-2sNVJEbHElpJxo,19422
146
+ semantic_code_intelligence/tests/test_phase15.py,sha256=cCBg-cUOplcSgnAw7HY-fbycbFMWQM0_6y58Nkgb2oQ,28847
147
+ semantic_code_intelligence/tests/test_phase16.py,sha256=cUdGROgcQ-j6dnvpRoFolofxEdoONQoyssBbEBDwiIo,28932
148
+ semantic_code_intelligence/tests/test_phase17.py,sha256=Li9ZdZpcBrMz0BU630RnBPkq--dS3oMj14X7IVPPtOk,28330
149
+ semantic_code_intelligence/tests/test_phase18.py,sha256=5NMn6S0IeHTUyHWjeU_UNLpyVUsQVK2SkSmjzo0mGPc,32109
150
+ semantic_code_intelligence/tests/test_phase19.py,sha256=sTa5sUPA-Wqu8Ma-EozQGcqoHmOsKHhtUd6jotA-uMg,37051
151
+ semantic_code_intelligence/tests/test_phase20.py,sha256=F_NtESye5bZK7s2ftWnwd4m26XtZNx7JNtU6zctQmjg,91582
152
+ semantic_code_intelligence/tests/test_phase20b.py,sha256=D9a95eiAvcieCeUU-VGj0a1_KP3qpuS5LloHFLs_KdI,67380
153
+ semantic_code_intelligence/tests/test_phase20c.py,sha256=azHt0DHXcCwKyaZLMl14tfoKNzVoxv7SrwwJf3EnyXA,30035
154
+ semantic_code_intelligence/tests/test_phase21.py,sha256=JO4A4CpyDfqR50cfkr4jqKeR5zCkkeubAYHyAz7fOFY,20892
155
+ semantic_code_intelligence/tests/test_phase22.py,sha256=OZ0HoLv8yBxbfDm8sf_u0VQs_kKfigIYDs27qzgJF8U,32738
156
+ semantic_code_intelligence/tests/test_phase23.py,sha256=M0qSmKRcT068hDeyT8I1uxc8BUSUrTPjV-t_5582g8k,30827
157
+ semantic_code_intelligence/tests/test_phase24.py,sha256=QtRpuhBVpzFNjexVVgT_J_044DF3TE_7gAvDPTFPhtI,27773
158
+ semantic_code_intelligence/tests/test_phase25.py,sha256=gyuFDvF5SAqQoAEsYCXnpugmDcMA_rxUN89qf9iF7bw,18898
159
+ semantic_code_intelligence/tests/test_phase26.py,sha256=AjARuXac1Et0Q5dO_VruWVPKYxiqqjbIGhqLFFdC4fo,9618
160
+ semantic_code_intelligence/tests/test_phase27.py,sha256=QfnSVr569jBZ-T-CZYoYQbJ4LkWpbR91gZWsbEH6tzc,19916
161
+ semantic_code_intelligence/tests/test_phase8.py,sha256=U-g0T0m2HfGu3AOZ2s5BKC_l7Yw0Fnon0Dds0c49cW8,20788
162
+ semantic_code_intelligence/tests/test_phase9.py,sha256=1ZOsY1fLqN6hv08BKywXnTYDbxcLHL91P4K9Gu5eZ9Y,23969
163
+ semantic_code_intelligence/tests/test_plugins.py,sha256=cg2dSRDktNYKapIItEVGlHK_qz1e_lUH2G_ye4EHZlY,9780
164
+ semantic_code_intelligence/tests/test_priority_features.py,sha256=BWCFIsbXky1oEPLxOd-pmgS9CVVP1XQ96q2yDczbqrw,27790
165
+ semantic_code_intelligence/tests/test_router.py,sha256=0yGEhxbEAQY2M076XuBvGmzktLASNWaFGWWeAA0JPhg,1277
166
+ semantic_code_intelligence/tests/test_scalability.py,sha256=waAlz1suWUzcf1AXls6eR0vSXBFNnt4ugGgs5W4qx54,4528
167
+ semantic_code_intelligence/tests/test_scanner.py,sha256=usH6J5XvYUhMz2zQ-MiOLvglszsQYVRVD-21tqXmMtI,4924
168
+ semantic_code_intelligence/tests/test_search.py,sha256=nIk8r80UPyBNExgxb5lpQzteEq1Q_mPP_ecy4ex9D00,5890
169
+ semantic_code_intelligence/tests/test_semantic_chunker.py,sha256=uTa1wX0JguUVKAHKCpwc0V75aHbmn2lGn_nXJYOQo5c,8268
170
+ semantic_code_intelligence/tests/test_tools.py,sha256=SgmcVb4xU5Q1vGUyqt0sfNGQ4Nu6cQ_yma7lHfRTb6I,5999
171
+ semantic_code_intelligence/tests/test_vector_store.py,sha256=pFjdBX0sthzXKItWVpVpHKXBRvX1_BZGEKEoqtpQXlk,4707
172
+ semantic_code_intelligence/tests/test_watcher.py,sha256=t4l3YwppTYGidyQFOUlpK8xRgDCWb5o9FPH039TAGRU,7231
173
+ semantic_code_intelligence/tools/__init__.py,sha256=k3Zo1EuNlXmP5PTSVugHqnthF-l1dVA4Vx20bjZ2rRc,16121
174
+ semantic_code_intelligence/tools/executor.py,sha256=E0XAJKZ48_ocMxnBIR6iW6l2ftpvHon4N8RoT5ThJKA,9288
175
+ semantic_code_intelligence/tools/protocol.py,sha256=U3xmD32oNgtChEborJpycMvbRvZlkukxNQvLtUJYINU,7286
176
+ semantic_code_intelligence/tui/__init__.py,sha256=PJQtk8XmeSCMFL0CnsyRz0vzZEeFuiuT3n8Qyz7QV-A,17307
177
+ semantic_code_intelligence/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
178
+ semantic_code_intelligence/utils/logging.py,sha256=9pJ0p19np9rKQZ4kMa_H95znKx0Ssj14bfVXl6K92mg,3207
179
+ semantic_code_intelligence/web/__init__.py,sha256=VRrva1dcPbRdxAcj4qwBmEoL-veLO0job6kLdY7qbzU,466
180
+ semantic_code_intelligence/web/api.py,sha256=JTy3Vv22Geupx_zS5fgykhGDstGUsHfhRH7gVH_s-Is,11597
181
+ semantic_code_intelligence/web/server.py,sha256=hJcQ2xmQTMtV4Ao7I4rVp-JB_gRx3CeeR4eXrT2ytco,16834
182
+ semantic_code_intelligence/web/ui.py,sha256=ySVgHQrbJK4BDroDPwjAWHRYjA06atm3ayhX52M1Fes,29238
183
+ semantic_code_intelligence/web/visualize.py,sha256=bNIT7Hu9zlYfmjE68_wNacSSlAfwo-uqE3tDmc1C9bY,7216
184
+ semantic_code_intelligence/workspace/__init__.py,sha256=toqK_5dc6OcPvbja0fciI6wRHqbEQUAkmiBNR-M3esw,15477
185
+ codexa-0.4.0.dist-info/METADATA,sha256=gODnq5XYb55bKc8-vwZZkmxNege98LSBirJ9VKODLPQ,23398
186
+ codexa-0.4.0.dist-info/WHEEL,sha256=aeYiig01lYGDzBgS8HxWXOg3uV61G9ijOsup-k9o1sk,91
187
+ codexa-0.4.0.dist-info/entry_points.txt,sha256=wTgo7FNTqXOuZP0Sj2K2z53yWOKaC2Ki7IvHz2nlH54,68
188
+ codexa-0.4.0.dist-info/top_level.txt,sha256=Qdyy-y9um_TlZ2tAgEJPMCeQFVQfrg4r-LCulQWHCmY,27
189
+ codexa-0.4.0.dist-info/RECORD,,
@@ -0,0 +1,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: setuptools (82.0.1)
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
5
+
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ codexa = semantic_code_intelligence.cli.main:main
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 CodexA 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
+ semantic_code_intelligence
@@ -0,0 +1,5 @@
1
+ """Semantic Code Intelligence - Local semantic code search and AI-assisted code understanding."""
2
+
3
+ from semantic_code_intelligence.version import __version__
4
+
5
+ __app_name__ = "codexa"
@@ -0,0 +1,21 @@
1
+ """Analysis package — AI features, repository summaries, code explanations."""
2
+
3
+ from semantic_code_intelligence.analysis.ai_features import (
4
+ CodeExplanation,
5
+ LanguageStats,
6
+ RepoSummary,
7
+ explain_file,
8
+ explain_symbol,
9
+ generate_ai_context,
10
+ summarize_repository,
11
+ )
12
+
13
+ __all__ = [
14
+ "CodeExplanation",
15
+ "LanguageStats",
16
+ "RepoSummary",
17
+ "explain_file",
18
+ "explain_symbol",
19
+ "generate_ai_context",
20
+ "summarize_repository",
21
+ ]
@@ -0,0 +1,351 @@
1
+ """AI features — repository summary, AI-friendly output, code explanation helpers.
2
+
3
+ Provides tools to generate structured summaries of a codebase suitable
4
+ for feeding into LLMs or other AI systems.
5
+ """
6
+
7
+ from __future__ import annotations
8
+
9
+ import json
10
+ from dataclasses import dataclass, field
11
+ from pathlib import Path
12
+ from typing import Any
13
+
14
+ from semantic_code_intelligence.context.engine import (
15
+ CallGraph,
16
+ ContextBuilder,
17
+ DependencyMap,
18
+ )
19
+ from semantic_code_intelligence.parsing.parser import Symbol
20
+ from semantic_code_intelligence.utils.logging import get_logger
21
+
22
+ logger = get_logger("analysis")
23
+
24
+
25
+ # ---------------------------------------------------------------------------
26
+ # Repository Summary
27
+ # ---------------------------------------------------------------------------
28
+
29
+ @dataclass
30
+ class LanguageStats:
31
+ """Statistics for a single programming language."""
32
+
33
+ language: str
34
+ file_count: int = 0
35
+ function_count: int = 0
36
+ class_count: int = 0
37
+ method_count: int = 0
38
+ import_count: int = 0
39
+ total_lines: int = 0
40
+
41
+ def to_dict(self) -> dict[str, Any]:
42
+ """Serialize the language statistics to a plain dictionary."""
43
+ return {
44
+ "language": self.language,
45
+ "file_count": self.file_count,
46
+ "function_count": self.function_count,
47
+ "class_count": self.class_count,
48
+ "method_count": self.method_count,
49
+ "import_count": self.import_count,
50
+ "total_lines": self.total_lines,
51
+ }
52
+
53
+
54
+ @dataclass
55
+ class RepoSummary:
56
+ """A summary of a repository's code structure."""
57
+
58
+ total_files: int = 0
59
+ total_symbols: int = 0
60
+ total_functions: int = 0
61
+ total_classes: int = 0
62
+ total_methods: int = 0
63
+ total_imports: int = 0
64
+ languages: list[LanguageStats] = field(default_factory=list)
65
+ top_functions: list[dict[str, Any]] = field(default_factory=list)
66
+ top_classes: list[dict[str, Any]] = field(default_factory=list)
67
+
68
+ def to_dict(self) -> dict[str, Any]:
69
+ """Serialize the repository summary to a plain dictionary."""
70
+ return {
71
+ "total_files": self.total_files,
72
+ "total_symbols": self.total_symbols,
73
+ "total_functions": self.total_functions,
74
+ "total_classes": self.total_classes,
75
+ "total_methods": self.total_methods,
76
+ "total_imports": self.total_imports,
77
+ "languages": [l.to_dict() for l in self.languages],
78
+ "top_functions": self.top_functions,
79
+ "top_classes": self.top_classes,
80
+ }
81
+
82
+ def to_json(self, indent: int = 2) -> str:
83
+ """Serialize the repository summary to a JSON string."""
84
+ return json.dumps(self.to_dict(), indent=indent)
85
+
86
+ def render(self) -> str:
87
+ """Render a human-readable summary."""
88
+ lines: list[str] = []
89
+ lines.append("=== Repository Summary ===")
90
+ lines.append(f"Files: {self.total_files}")
91
+ lines.append(f"Total symbols: {self.total_symbols}")
92
+ lines.append(f"Functions: {self.total_functions}")
93
+ lines.append(f"Classes: {self.total_classes}")
94
+ lines.append(f"Methods: {self.total_methods}")
95
+ lines.append(f"Imports: {self.total_imports}")
96
+ lines.append("")
97
+
98
+ if self.languages:
99
+ lines.append("-- Languages --")
100
+ for lang in self.languages:
101
+ lines.append(
102
+ f" {lang.language}: {lang.file_count} files, "
103
+ f"{lang.function_count} functions, "
104
+ f"{lang.class_count} classes"
105
+ )
106
+ lines.append("")
107
+
108
+ if self.top_functions:
109
+ lines.append("-- Top Functions --")
110
+ for f in self.top_functions[:10]:
111
+ lines.append(f" {f['name']} ({f['file_path']}, L{f['start_line']})")
112
+ lines.append("")
113
+
114
+ if self.top_classes:
115
+ lines.append("-- Top Classes --")
116
+ for c in self.top_classes[:10]:
117
+ lines.append(f" {c['name']} ({c['file_path']}, L{c['start_line']})")
118
+
119
+ return "\n".join(lines)
120
+
121
+
122
+ def summarize_repository(builder: ContextBuilder) -> RepoSummary:
123
+ """Generate a structured summary from an indexed ContextBuilder.
124
+
125
+ Args:
126
+ builder: A ContextBuilder that has already indexed files.
127
+
128
+ Returns:
129
+ A RepoSummary with aggregated statistics.
130
+ """
131
+ all_symbols = builder.get_all_symbols()
132
+ summary = RepoSummary()
133
+
134
+ # Group symbols by language (via file extension)
135
+ from semantic_code_intelligence.parsing.parser import detect_language
136
+
137
+ lang_data: dict[str, LanguageStats] = {}
138
+ files_seen: set[str] = set()
139
+
140
+ for sym in all_symbols:
141
+ lang = detect_language(sym.file_path) or "unknown"
142
+ if lang not in lang_data:
143
+ lang_data[lang] = LanguageStats(language=lang)
144
+ stats = lang_data[lang]
145
+
146
+ if sym.file_path not in files_seen:
147
+ files_seen.add(sym.file_path)
148
+ stats.file_count += 1
149
+
150
+ if sym.kind == "function":
151
+ stats.function_count += 1
152
+ elif sym.kind == "class":
153
+ stats.class_count += 1
154
+ elif sym.kind == "method":
155
+ stats.method_count += 1
156
+ elif sym.kind == "import":
157
+ stats.import_count += 1
158
+
159
+ summary.total_files = len(files_seen)
160
+ summary.total_symbols = len(all_symbols)
161
+ summary.total_functions = sum(s.function_count for s in lang_data.values())
162
+ summary.total_classes = sum(s.class_count for s in lang_data.values())
163
+ summary.total_methods = sum(s.method_count for s in lang_data.values())
164
+ summary.total_imports = sum(s.import_count for s in lang_data.values())
165
+ summary.languages = sorted(lang_data.values(), key=lambda x: x.file_count, reverse=True)
166
+
167
+ # Top functions (longest body = most complex)
168
+ functions = [s for s in all_symbols if s.kind == "function"]
169
+ functions.sort(key=lambda s: s.end_line - s.start_line, reverse=True)
170
+ summary.top_functions = [f.to_dict() for f in functions[:10]]
171
+
172
+ # Top classes
173
+ classes = [s for s in all_symbols if s.kind == "class"]
174
+ classes.sort(key=lambda s: s.end_line - s.start_line, reverse=True)
175
+ summary.top_classes = [c.to_dict() for c in classes[:10]]
176
+
177
+ return summary
178
+
179
+
180
+ # ---------------------------------------------------------------------------
181
+ # AI-friendly JSON output
182
+ # ---------------------------------------------------------------------------
183
+
184
+ def generate_ai_context(
185
+ builder: ContextBuilder,
186
+ symbol_name: str | None = None,
187
+ file_path: str | None = None,
188
+ include_call_graph: bool = True,
189
+ include_dependencies: bool = True,
190
+ ) -> dict[str, Any]:
191
+ """Generate AI-friendly structured JSON context for a codebase.
192
+
193
+ This is designed to be fed into an LLM for code understanding,
194
+ question answering, or code generation tasks.
195
+
196
+ Args:
197
+ builder: An indexed ContextBuilder.
198
+ symbol_name: Optional symbol to focus the context on.
199
+ file_path: Optional file to focus the context on.
200
+ include_call_graph: Whether to include call graph data.
201
+ include_dependencies: Whether to include dependency data.
202
+
203
+ Returns:
204
+ A dictionary suitable for JSON serialization.
205
+ """
206
+ result: dict[str, Any] = {}
207
+
208
+ # Summary
209
+ summary = summarize_repository(builder)
210
+ result["summary"] = summary.to_dict()
211
+
212
+ # Focused context
213
+ if symbol_name:
214
+ contexts = builder.build_context_for_name(symbol_name)
215
+ result["focused_contexts"] = [c.to_dict() for c in contexts]
216
+ elif file_path:
217
+ symbols = builder.get_symbols(file_path)
218
+ result["file_symbols"] = [s.to_dict() for s in symbols]
219
+
220
+ # Call graph
221
+ if include_call_graph:
222
+ all_symbols = builder.get_all_symbols()
223
+ graph = CallGraph()
224
+ graph.build(all_symbols)
225
+ result["call_graph"] = graph.to_dict()
226
+
227
+ # Dependencies
228
+ if include_dependencies:
229
+ dep_map = DependencyMap()
230
+ # We need to re-parse files for imports; use the builder's cached content
231
+ for fp in builder._file_contents:
232
+ dep_map.add_file(fp, builder._file_contents[fp])
233
+ result["dependencies"] = dep_map.to_dict()
234
+
235
+ return result
236
+
237
+
238
+ # ---------------------------------------------------------------------------
239
+ # Code Explanation Helpers
240
+ # ---------------------------------------------------------------------------
241
+
242
+ @dataclass
243
+ class CodeExplanation:
244
+ """A structured explanation of a code symbol."""
245
+
246
+ symbol_name: str
247
+ symbol_kind: str
248
+ file_path: str
249
+ summary: str
250
+ details: dict[str, Any] = field(default_factory=dict)
251
+
252
+ def to_dict(self) -> dict[str, Any]:
253
+ """Serialize the code explanation to a plain dictionary."""
254
+ return {
255
+ "symbol_name": self.symbol_name,
256
+ "symbol_kind": self.symbol_kind,
257
+ "file_path": self.file_path,
258
+ "summary": self.summary,
259
+ "details": self.details,
260
+ }
261
+
262
+ def render(self) -> str:
263
+ """Render the explanation as a Markdown-style string."""
264
+ lines = [
265
+ f"# {self.symbol_kind.title()}: {self.symbol_name}",
266
+ f"File: {self.file_path}",
267
+ "",
268
+ self.summary,
269
+ ]
270
+ if self.details:
271
+ lines.append("")
272
+ for key, value in self.details.items():
273
+ lines.append(f"- {key}: {value}")
274
+ return "\n".join(lines)
275
+
276
+
277
+ def explain_symbol(symbol: Symbol, builder: ContextBuilder | None = None) -> CodeExplanation:
278
+ """Generate a structural explanation of a code symbol.
279
+
280
+ This creates a factual description based on the code structure,
281
+ not AI-generated prose. It's useful as a prompt component for LLMs.
282
+
283
+ Args:
284
+ symbol: The symbol to explain.
285
+ builder: Optional ContextBuilder for richer context.
286
+
287
+ Returns:
288
+ A CodeExplanation with structural information.
289
+ """
290
+ details: dict[str, Any] = {}
291
+
292
+ # Basic info
293
+ line_count = symbol.end_line - symbol.start_line + 1
294
+ details["lines"] = f"{symbol.start_line}-{symbol.end_line} ({line_count} lines)"
295
+
296
+ if symbol.parameters:
297
+ details["parameters"] = ", ".join(symbol.parameters)
298
+
299
+ if symbol.parent:
300
+ details["parent_class"] = symbol.parent
301
+
302
+ if symbol.decorators:
303
+ details["decorators"] = ", ".join(symbol.decorators)
304
+
305
+ # Build summary
306
+ if symbol.kind == "function":
307
+ param_str = f"({', '.join(symbol.parameters)})" if symbol.parameters else "()"
308
+ summary = f"Function `{symbol.name}{param_str}` defined at line {symbol.start_line}."
309
+ elif symbol.kind == "method":
310
+ parent = f" of class `{symbol.parent}`" if symbol.parent else ""
311
+ param_str = f"({', '.join(symbol.parameters)})" if symbol.parameters else "()"
312
+ summary = f"Method `{symbol.name}{param_str}`{parent} defined at line {symbol.start_line}."
313
+ elif symbol.kind == "class":
314
+ summary = f"Class `{symbol.name}` defined at line {symbol.start_line}, spanning {line_count} lines."
315
+ elif symbol.kind == "import":
316
+ summary = f"Import statement at line {symbol.start_line}: `{symbol.body.strip()}`"
317
+ else:
318
+ summary = f"{symbol.kind.title()} `{symbol.name}` at line {symbol.start_line}."
319
+
320
+ # Add call context if builder is available
321
+ if builder is not None:
322
+ ctx = builder.build_context(symbol)
323
+ if ctx.related_symbols:
324
+ related_names = [s.name for s in ctx.related_symbols[:5]]
325
+ details["related_symbols"] = ", ".join(related_names)
326
+ if ctx.imports:
327
+ details["file_imports"] = len(ctx.imports)
328
+
329
+ return CodeExplanation(
330
+ symbol_name=symbol.name,
331
+ symbol_kind=symbol.kind,
332
+ file_path=symbol.file_path,
333
+ summary=summary,
334
+ details=details,
335
+ )
336
+
337
+
338
+ def explain_file(file_path: str, content: str | None = None) -> list[CodeExplanation]:
339
+ """Generate explanations for all symbols in a file.
340
+
341
+ Args:
342
+ file_path: Path to the source file.
343
+ content: Optional file content.
344
+
345
+ Returns:
346
+ List of CodeExplanation objects, one per symbol.
347
+ """
348
+ builder = ContextBuilder()
349
+ builder.index_file(file_path, content)
350
+ symbols = builder.get_symbols(file_path)
351
+ return [explain_symbol(s, builder) for s in symbols if s.kind != "import"]
@@ -0,0 +1,28 @@
1
+ """Bridge layer — external AI assistant interoperability for CodexA.
2
+
3
+ Provides:
4
+ - AgentRequest / AgentResponse: standard cooperation protocol
5
+ - ContextProvider: structured context generation for IDE AI pipelines
6
+ - BridgeServer: lightweight HTTP/JSON server exposing CodexA tools
7
+ - VSCodeBridge: VSCode extension communication helpers
8
+ """
9
+
10
+ from __future__ import annotations
11
+
12
+ from semantic_code_intelligence.bridge.protocol import (
13
+ AgentRequest,
14
+ AgentResponse,
15
+ BridgeCapabilities,
16
+ )
17
+ from semantic_code_intelligence.bridge.context_provider import ContextProvider
18
+ from semantic_code_intelligence.bridge.server import BridgeServer
19
+ from semantic_code_intelligence.bridge.vscode import VSCodeBridge
20
+
21
+ __all__ = [
22
+ "AgentRequest",
23
+ "AgentResponse",
24
+ "BridgeCapabilities",
25
+ "ContextProvider",
26
+ "BridgeServer",
27
+ "VSCodeBridge",
28
+ ]