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.
- codexa-0.4.0.dist-info/METADATA +650 -0
- codexa-0.4.0.dist-info/RECORD +189 -0
- codexa-0.4.0.dist-info/WHEEL +5 -0
- codexa-0.4.0.dist-info/entry_points.txt +2 -0
- codexa-0.4.0.dist-info/licenses/LICENSE +21 -0
- codexa-0.4.0.dist-info/top_level.txt +1 -0
- semantic_code_intelligence/__init__.py +5 -0
- semantic_code_intelligence/analysis/__init__.py +21 -0
- semantic_code_intelligence/analysis/ai_features.py +351 -0
- semantic_code_intelligence/bridge/__init__.py +28 -0
- semantic_code_intelligence/bridge/context_provider.py +245 -0
- semantic_code_intelligence/bridge/protocol.py +167 -0
- semantic_code_intelligence/bridge/server.py +348 -0
- semantic_code_intelligence/bridge/vscode.py +271 -0
- semantic_code_intelligence/ci/__init__.py +13 -0
- semantic_code_intelligence/ci/hooks.py +98 -0
- semantic_code_intelligence/ci/hotspots.py +272 -0
- semantic_code_intelligence/ci/impact.py +246 -0
- semantic_code_intelligence/ci/metrics.py +591 -0
- semantic_code_intelligence/ci/pr.py +412 -0
- semantic_code_intelligence/ci/quality.py +557 -0
- semantic_code_intelligence/ci/templates.py +164 -0
- semantic_code_intelligence/ci/trace.py +224 -0
- semantic_code_intelligence/cli/__init__.py +0 -0
- semantic_code_intelligence/cli/commands/__init__.py +0 -0
- semantic_code_intelligence/cli/commands/ask_cmd.py +153 -0
- semantic_code_intelligence/cli/commands/benchmark_cmd.py +303 -0
- semantic_code_intelligence/cli/commands/chat_cmd.py +252 -0
- semantic_code_intelligence/cli/commands/ci_gen_cmd.py +74 -0
- semantic_code_intelligence/cli/commands/context_cmd.py +120 -0
- semantic_code_intelligence/cli/commands/cross_refactor_cmd.py +113 -0
- semantic_code_intelligence/cli/commands/deps_cmd.py +91 -0
- semantic_code_intelligence/cli/commands/docs_cmd.py +101 -0
- semantic_code_intelligence/cli/commands/doctor_cmd.py +147 -0
- semantic_code_intelligence/cli/commands/evolve_cmd.py +171 -0
- semantic_code_intelligence/cli/commands/explain_cmd.py +112 -0
- semantic_code_intelligence/cli/commands/gate_cmd.py +135 -0
- semantic_code_intelligence/cli/commands/grep_cmd.py +234 -0
- semantic_code_intelligence/cli/commands/hotspots_cmd.py +119 -0
- semantic_code_intelligence/cli/commands/impact_cmd.py +131 -0
- semantic_code_intelligence/cli/commands/index_cmd.py +138 -0
- semantic_code_intelligence/cli/commands/init_cmd.py +152 -0
- semantic_code_intelligence/cli/commands/investigate_cmd.py +163 -0
- semantic_code_intelligence/cli/commands/languages_cmd.py +101 -0
- semantic_code_intelligence/cli/commands/lsp_cmd.py +49 -0
- semantic_code_intelligence/cli/commands/mcp_cmd.py +50 -0
- semantic_code_intelligence/cli/commands/metrics_cmd.py +264 -0
- semantic_code_intelligence/cli/commands/models_cmd.py +157 -0
- semantic_code_intelligence/cli/commands/plugin_cmd.py +275 -0
- semantic_code_intelligence/cli/commands/pr_summary_cmd.py +178 -0
- semantic_code_intelligence/cli/commands/quality_cmd.py +208 -0
- semantic_code_intelligence/cli/commands/refactor_cmd.py +103 -0
- semantic_code_intelligence/cli/commands/review_cmd.py +88 -0
- semantic_code_intelligence/cli/commands/search_cmd.py +236 -0
- semantic_code_intelligence/cli/commands/serve_cmd.py +117 -0
- semantic_code_intelligence/cli/commands/suggest_cmd.py +100 -0
- semantic_code_intelligence/cli/commands/summary_cmd.py +78 -0
- semantic_code_intelligence/cli/commands/tool_cmd.py +282 -0
- semantic_code_intelligence/cli/commands/trace_cmd.py +123 -0
- semantic_code_intelligence/cli/commands/tui_cmd.py +58 -0
- semantic_code_intelligence/cli/commands/viz_cmd.py +127 -0
- semantic_code_intelligence/cli/commands/watch_cmd.py +72 -0
- semantic_code_intelligence/cli/commands/web_cmd.py +61 -0
- semantic_code_intelligence/cli/commands/workspace_cmd.py +250 -0
- semantic_code_intelligence/cli/main.py +65 -0
- semantic_code_intelligence/cli/router.py +92 -0
- semantic_code_intelligence/config/__init__.py +0 -0
- semantic_code_intelligence/config/settings.py +260 -0
- semantic_code_intelligence/context/__init__.py +19 -0
- semantic_code_intelligence/context/engine.py +429 -0
- semantic_code_intelligence/context/memory.py +253 -0
- semantic_code_intelligence/daemon/__init__.py +1 -0
- semantic_code_intelligence/daemon/watcher.py +515 -0
- semantic_code_intelligence/docs/__init__.py +1080 -0
- semantic_code_intelligence/embeddings/__init__.py +0 -0
- semantic_code_intelligence/embeddings/enhanced.py +131 -0
- semantic_code_intelligence/embeddings/generator.py +149 -0
- semantic_code_intelligence/embeddings/model_registry.py +100 -0
- semantic_code_intelligence/evolution/__init__.py +1 -0
- semantic_code_intelligence/evolution/budget_guard.py +111 -0
- semantic_code_intelligence/evolution/commit_manager.py +88 -0
- semantic_code_intelligence/evolution/context_builder.py +131 -0
- semantic_code_intelligence/evolution/engine.py +249 -0
- semantic_code_intelligence/evolution/patch_generator.py +229 -0
- semantic_code_intelligence/evolution/task_selector.py +214 -0
- semantic_code_intelligence/evolution/test_runner.py +111 -0
- semantic_code_intelligence/indexing/__init__.py +0 -0
- semantic_code_intelligence/indexing/chunker.py +174 -0
- semantic_code_intelligence/indexing/parallel.py +86 -0
- semantic_code_intelligence/indexing/scanner.py +146 -0
- semantic_code_intelligence/indexing/semantic_chunker.py +337 -0
- semantic_code_intelligence/llm/__init__.py +62 -0
- semantic_code_intelligence/llm/cache.py +219 -0
- semantic_code_intelligence/llm/cached_provider.py +145 -0
- semantic_code_intelligence/llm/conversation.py +190 -0
- semantic_code_intelligence/llm/cross_refactor.py +272 -0
- semantic_code_intelligence/llm/investigation.py +274 -0
- semantic_code_intelligence/llm/mock_provider.py +77 -0
- semantic_code_intelligence/llm/ollama_provider.py +122 -0
- semantic_code_intelligence/llm/openai_provider.py +100 -0
- semantic_code_intelligence/llm/provider.py +92 -0
- semantic_code_intelligence/llm/rate_limiter.py +164 -0
- semantic_code_intelligence/llm/reasoning.py +438 -0
- semantic_code_intelligence/llm/safety.py +110 -0
- semantic_code_intelligence/llm/streaming.py +251 -0
- semantic_code_intelligence/lsp/__init__.py +609 -0
- semantic_code_intelligence/mcp/__init__.py +393 -0
- semantic_code_intelligence/parsing/__init__.py +19 -0
- semantic_code_intelligence/parsing/parser.py +375 -0
- semantic_code_intelligence/plugins/__init__.py +255 -0
- semantic_code_intelligence/plugins/examples/__init__.py +1 -0
- semantic_code_intelligence/plugins/examples/code_quality.py +73 -0
- semantic_code_intelligence/plugins/examples/search_annotator.py +56 -0
- semantic_code_intelligence/scalability/__init__.py +205 -0
- semantic_code_intelligence/search/__init__.py +0 -0
- semantic_code_intelligence/search/formatter.py +123 -0
- semantic_code_intelligence/search/grep.py +361 -0
- semantic_code_intelligence/search/hybrid_search.py +170 -0
- semantic_code_intelligence/search/keyword_search.py +311 -0
- semantic_code_intelligence/search/section_expander.py +103 -0
- semantic_code_intelligence/services/__init__.py +0 -0
- semantic_code_intelligence/services/indexing_service.py +630 -0
- semantic_code_intelligence/services/search_service.py +269 -0
- semantic_code_intelligence/storage/__init__.py +0 -0
- semantic_code_intelligence/storage/chunk_hash_store.py +86 -0
- semantic_code_intelligence/storage/hash_store.py +66 -0
- semantic_code_intelligence/storage/index_manifest.py +85 -0
- semantic_code_intelligence/storage/index_stats.py +138 -0
- semantic_code_intelligence/storage/query_history.py +160 -0
- semantic_code_intelligence/storage/symbol_registry.py +209 -0
- semantic_code_intelligence/storage/vector_store.py +297 -0
- semantic_code_intelligence/tests/__init__.py +0 -0
- semantic_code_intelligence/tests/test_ai_features.py +351 -0
- semantic_code_intelligence/tests/test_chunker.py +119 -0
- semantic_code_intelligence/tests/test_cli.py +188 -0
- semantic_code_intelligence/tests/test_config.py +154 -0
- semantic_code_intelligence/tests/test_context.py +381 -0
- semantic_code_intelligence/tests/test_embeddings.py +73 -0
- semantic_code_intelligence/tests/test_endtoend.py +1142 -0
- semantic_code_intelligence/tests/test_enhanced_embeddings.py +92 -0
- semantic_code_intelligence/tests/test_hash_store.py +79 -0
- semantic_code_intelligence/tests/test_logging.py +55 -0
- semantic_code_intelligence/tests/test_new_cli.py +138 -0
- semantic_code_intelligence/tests/test_parser.py +495 -0
- semantic_code_intelligence/tests/test_phase10.py +355 -0
- semantic_code_intelligence/tests/test_phase11.py +593 -0
- semantic_code_intelligence/tests/test_phase12.py +375 -0
- semantic_code_intelligence/tests/test_phase13.py +663 -0
- semantic_code_intelligence/tests/test_phase14.py +568 -0
- semantic_code_intelligence/tests/test_phase15.py +814 -0
- semantic_code_intelligence/tests/test_phase16.py +792 -0
- semantic_code_intelligence/tests/test_phase17.py +815 -0
- semantic_code_intelligence/tests/test_phase18.py +934 -0
- semantic_code_intelligence/tests/test_phase19.py +986 -0
- semantic_code_intelligence/tests/test_phase20.py +2753 -0
- semantic_code_intelligence/tests/test_phase20b.py +2058 -0
- semantic_code_intelligence/tests/test_phase20c.py +962 -0
- semantic_code_intelligence/tests/test_phase21.py +428 -0
- semantic_code_intelligence/tests/test_phase22.py +799 -0
- semantic_code_intelligence/tests/test_phase23.py +783 -0
- semantic_code_intelligence/tests/test_phase24.py +715 -0
- semantic_code_intelligence/tests/test_phase25.py +496 -0
- semantic_code_intelligence/tests/test_phase26.py +251 -0
- semantic_code_intelligence/tests/test_phase27.py +531 -0
- semantic_code_intelligence/tests/test_phase8.py +592 -0
- semantic_code_intelligence/tests/test_phase9.py +643 -0
- semantic_code_intelligence/tests/test_plugins.py +293 -0
- semantic_code_intelligence/tests/test_priority_features.py +727 -0
- semantic_code_intelligence/tests/test_router.py +41 -0
- semantic_code_intelligence/tests/test_scalability.py +138 -0
- semantic_code_intelligence/tests/test_scanner.py +125 -0
- semantic_code_intelligence/tests/test_search.py +160 -0
- semantic_code_intelligence/tests/test_semantic_chunker.py +255 -0
- semantic_code_intelligence/tests/test_tools.py +182 -0
- semantic_code_intelligence/tests/test_vector_store.py +151 -0
- semantic_code_intelligence/tests/test_watcher.py +211 -0
- semantic_code_intelligence/tools/__init__.py +442 -0
- semantic_code_intelligence/tools/executor.py +232 -0
- semantic_code_intelligence/tools/protocol.py +200 -0
- semantic_code_intelligence/tui/__init__.py +454 -0
- semantic_code_intelligence/utils/__init__.py +0 -0
- semantic_code_intelligence/utils/logging.py +112 -0
- semantic_code_intelligence/version.py +3 -0
- semantic_code_intelligence/web/__init__.py +11 -0
- semantic_code_intelligence/web/api.py +289 -0
- semantic_code_intelligence/web/server.py +397 -0
- semantic_code_intelligence/web/ui.py +659 -0
- semantic_code_intelligence/web/visualize.py +226 -0
- 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,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,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
|
+
]
|