codexa 0.4.3__tar.gz → 0.5.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {codexa-0.4.3 → codexa-0.5.0}/PKG-INFO +37 -12
- {codexa-0.4.3 → codexa-0.5.0}/README.md +36 -11
- {codexa-0.4.3 → codexa-0.5.0}/codexa.egg-info/PKG-INFO +37 -12
- {codexa-0.4.3 → codexa-0.5.0}/codexa.egg-info/SOURCES.txt +8 -0
- {codexa-0.4.3 → codexa-0.5.0}/pyproject.toml +1 -1
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/analysis/ai_features.py +3 -17
- codexa-0.5.0/semantic_code_intelligence/analysis/codegen.py +143 -0
- codexa-0.5.0/semantic_code_intelligence/analysis/cross_language.py +270 -0
- codexa-0.5.0/semantic_code_intelligence/analysis/semantic_diff.py +222 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/bridge/protocol.py +2 -7
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/bridge/server.py +60 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/bridge/vscode.py +2 -2
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/ci/impact.py +4 -14
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/ci/metrics.py +3 -15
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/ci/pr.py +4 -20
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/ci/quality.py +4 -23
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/ci/trace.py +3 -12
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/cli/commands/ask_cmd.py +8 -1
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/cli/commands/chat_cmd.py +8 -1
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/cli/commands/grep_cmd.py +61 -1
- codexa-0.5.0/semantic_code_intelligence/cli/commands/index_cmd.py +291 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/cli/commands/init_cmd.py +34 -1
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/cli/commands/mcp_cmd.py +15 -1
- codexa-0.5.0/semantic_code_intelligence/cli/commands/models_cmd.py +361 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/cli/commands/search_cmd.py +95 -1
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/cli/commands/suggest_cmd.py +8 -1
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/cli/main.py +15 -1
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/config/settings.py +12 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/context/engine.py +3 -12
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/context/memory.py +2 -8
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/embeddings/generator.py +19 -0
- codexa-0.5.0/semantic_code_intelligence/embeddings/model_registry.py +223 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/evolution/task_selector.py +2 -7
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/llm/__init__.py +10 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/llm/cross_refactor.py +2 -10
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/llm/investigation.py +30 -14
- codexa-0.5.0/semantic_code_intelligence/llm/rag.py +564 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/llm/rate_limiter.py +2 -8
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/llm/reasoning.py +48 -37
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/llm/safety.py +2 -7
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/llm/streaming.py +2 -2
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/mcp/__init__.py +39 -8
- codexa-0.5.0/semantic_code_intelligence/mcp/claude_config.py +32 -0
- codexa-0.5.0/semantic_code_intelligence/rust_backend.py +142 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/search/formatter.py +9 -2
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/search/hybrid_search.py +17 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/search/keyword_search.py +42 -1
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/services/indexing_service.py +15 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/services/search_service.py +3 -2
- codexa-0.5.0/semantic_code_intelligence/sessions/__init__.py +157 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/storage/vector_store.py +105 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/tests/test_cli.py +1 -1
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/tests/test_phase13.py +2 -2
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/tests/test_phase14.py +1 -1
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/tests/test_phase15.py +1 -1
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/tests/test_phase16.py +1 -1
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/tests/test_phase17.py +1 -1
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/tests/test_phase18.py +2 -2
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/tests/test_phase19.py +2 -2
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/tests/test_phase22.py +1 -1
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/tests/test_phase23.py +1 -1
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/tests/test_phase24.py +1 -1
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/tests/test_phase25.py +1 -1
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/tests/test_phase26.py +1 -1
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/tests/test_phase27.py +1 -1
- codexa-0.5.0/semantic_code_intelligence/tests/test_phase38_42.py +558 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/tools/protocol.py +3 -13
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/version.py +1 -1
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/web/api.py +7 -1
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/web/server.py +7 -1
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/workspace/__init__.py +2 -8
- codexa-0.4.3/semantic_code_intelligence/cli/commands/index_cmd.py +0 -143
- codexa-0.4.3/semantic_code_intelligence/cli/commands/models_cmd.py +0 -157
- codexa-0.4.3/semantic_code_intelligence/embeddings/model_registry.py +0 -100
- {codexa-0.4.3 → codexa-0.5.0}/LICENSE +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/codexa.egg-info/dependency_links.txt +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/codexa.egg-info/entry_points.txt +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/codexa.egg-info/requires.txt +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/codexa.egg-info/top_level.txt +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/__init__.py +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/analysis/__init__.py +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/bridge/__init__.py +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/bridge/context_provider.py +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/ci/__init__.py +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/ci/hooks.py +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/ci/hotspots.py +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/ci/templates.py +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/cli/__init__.py +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/cli/commands/__init__.py +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/cli/commands/benchmark_cmd.py +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/cli/commands/ci_gen_cmd.py +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/cli/commands/context_cmd.py +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/cli/commands/cross_refactor_cmd.py +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/cli/commands/deps_cmd.py +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/cli/commands/docs_cmd.py +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/cli/commands/doctor_cmd.py +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/cli/commands/evolve_cmd.py +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/cli/commands/explain_cmd.py +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/cli/commands/gate_cmd.py +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/cli/commands/hotspots_cmd.py +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/cli/commands/impact_cmd.py +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/cli/commands/investigate_cmd.py +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/cli/commands/languages_cmd.py +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/cli/commands/lsp_cmd.py +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/cli/commands/metrics_cmd.py +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/cli/commands/plugin_cmd.py +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/cli/commands/pr_summary_cmd.py +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/cli/commands/quality_cmd.py +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/cli/commands/refactor_cmd.py +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/cli/commands/review_cmd.py +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/cli/commands/serve_cmd.py +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/cli/commands/summary_cmd.py +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/cli/commands/tool_cmd.py +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/cli/commands/trace_cmd.py +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/cli/commands/tui_cmd.py +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/cli/commands/viz_cmd.py +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/cli/commands/watch_cmd.py +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/cli/commands/web_cmd.py +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/cli/commands/workspace_cmd.py +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/cli/router.py +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/config/__init__.py +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/context/__init__.py +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/daemon/__init__.py +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/daemon/watcher.py +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/docs/__init__.py +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/embeddings/__init__.py +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/embeddings/enhanced.py +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/evolution/__init__.py +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/evolution/budget_guard.py +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/evolution/commit_manager.py +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/evolution/context_builder.py +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/evolution/engine.py +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/evolution/patch_generator.py +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/evolution/test_runner.py +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/indexing/__init__.py +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/indexing/chunker.py +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/indexing/parallel.py +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/indexing/scanner.py +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/indexing/semantic_chunker.py +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/llm/cache.py +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/llm/cached_provider.py +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/llm/conversation.py +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/llm/mock_provider.py +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/llm/ollama_provider.py +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/llm/openai_provider.py +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/llm/provider.py +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/lsp/__init__.py +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/parsing/__init__.py +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/parsing/parser.py +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/plugins/__init__.py +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/plugins/examples/__init__.py +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/plugins/examples/code_quality.py +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/plugins/examples/search_annotator.py +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/scalability/__init__.py +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/search/__init__.py +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/search/grep.py +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/search/section_expander.py +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/services/__init__.py +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/storage/__init__.py +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/storage/chunk_hash_store.py +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/storage/hash_store.py +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/storage/index_manifest.py +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/storage/index_stats.py +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/storage/query_history.py +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/storage/symbol_registry.py +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/tests/__init__.py +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/tests/test_ai_features.py +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/tests/test_chunker.py +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/tests/test_config.py +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/tests/test_context.py +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/tests/test_embeddings.py +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/tests/test_endtoend.py +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/tests/test_enhanced_embeddings.py +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/tests/test_hash_store.py +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/tests/test_logging.py +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/tests/test_new_cli.py +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/tests/test_parser.py +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/tests/test_phase10.py +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/tests/test_phase11.py +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/tests/test_phase12.py +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/tests/test_phase20.py +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/tests/test_phase20b.py +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/tests/test_phase20c.py +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/tests/test_phase21.py +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/tests/test_phase8.py +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/tests/test_phase9.py +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/tests/test_plugins.py +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/tests/test_priority_features.py +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/tests/test_router.py +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/tests/test_scalability.py +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/tests/test_scanner.py +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/tests/test_search.py +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/tests/test_semantic_chunker.py +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/tests/test_tools.py +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/tests/test_vector_store.py +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/tests/test_watcher.py +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/tools/__init__.py +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/tools/executor.py +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/tui/__init__.py +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/utils/__init__.py +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/utils/logging.py +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/web/__init__.py +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/web/ui.py +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/semantic_code_intelligence/web/visualize.py +0 -0
- {codexa-0.4.3 → codexa-0.5.0}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: codexa
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.5.0
|
|
4
4
|
Summary: Developer intelligence CLI — semantic code search, AI-assisted understanding, and agent tooling for codebases
|
|
5
5
|
License: MIT
|
|
6
6
|
Project-URL: Homepage, https://codex-a.dev
|
|
@@ -65,9 +65,11 @@ Dynamic: license-file
|
|
|
65
65
|
|
|
66
66
|
<p align="center">
|
|
67
67
|
<a href="https://github.com/M9nx/CodexA/actions"><img src="https://github.com/M9nx/CodexA/actions/workflows/ci.yml/badge.svg" alt="CI"></a>
|
|
68
|
+
<a href="https://pypi.org/project/codexa/"><img src="https://img.shields.io/pypi/v/codexa?color=blue&label=PyPI" alt="PyPI"></a>
|
|
69
|
+
<a href="https://pepy.tech/project/codexa"><img src="https://img.shields.io/pepy/dt/codexa?color=blue&label=Downloads" alt="Downloads"></a>
|
|
68
70
|
<img src="https://img.shields.io/badge/python-3.11%2B-blue" alt="Python 3.11+">
|
|
69
|
-
<img src="https://img.shields.io/badge/version-0.
|
|
70
|
-
<img src="https://img.shields.io/badge/tests-
|
|
71
|
+
<img src="https://img.shields.io/badge/version-0.5.0-green" alt="Version">
|
|
72
|
+
<img src="https://img.shields.io/badge/tests-2657-brightgreen" alt="Tests">
|
|
71
73
|
<img src="https://img.shields.io/badge/coverage-79%25-brightgreen" alt="Coverage">
|
|
72
74
|
<img src="https://img.shields.io/badge/mypy-strict-blue" alt="mypy strict">
|
|
73
75
|
<img src="https://img.shields.io/badge/license-MIT-blue" alt="License">
|
|
@@ -84,17 +86,22 @@ structured tool protocol that any AI agent can call over HTTP or CLI.
|
|
|
84
86
|
|
|
85
87
|
| Area | What you get |
|
|
86
88
|
|------|-------------|
|
|
87
|
-
| **Code Indexing** | Scan repos, extract functions/classes, generate vector embeddings (sentence-transformers + FAISS), ONNX runtime option, parallel indexing, `--watch` live re-indexing, `.codexaignore` support |
|
|
88
|
-
| **
|
|
89
|
+
| **Code Indexing** | Scan repos, extract functions/classes, generate vector embeddings (sentence-transformers + FAISS), ONNX runtime option, parallel indexing, `--watch` live re-indexing, `.codexaignore` support, `--add`/`--inspect` per-file control, model-consistency guard, Ctrl+C partial-save |
|
|
90
|
+
| **Rust Search Engine** | Native `codexa-core` Rust crate via PyO3 — HNSW approximate nearest-neighbour search, BM25 keyword index, tree-sitter AST chunker (10 languages), memory-mapped vector persistence, parallel file scanner, optional ONNX embedding inference, optional Tantivy full-text search |
|
|
91
|
+
| **Multi-Mode Search** | Semantic, keyword (BM25), regex, hybrid (RRF), and raw filesystem grep (ripgrep backend) with full `-A/-B/-C/-w/-v/-c/-l/-L/--exclude/--no-ignore` flags, `--hybrid`/`--sem` shorthands, `--scores`, `--snippet-length`, `--no-snippet`, JSONL streaming |
|
|
92
|
+
| **RAG Pipeline** | 4-stage Retrieval-Augmented Generation — Retrieve → Deduplicate → Re-rank → Assemble with token budget, cross-encoder re-ranking, source citations |
|
|
89
93
|
| **Code Context** | Rich context windows — imports, dependencies, AST-based call graphs, surrounding code |
|
|
90
94
|
| **Repository Analysis** | Language breakdown (`codexa languages`), module summaries, component detection |
|
|
91
|
-
| **AI Agent Protocol** | 13 built-in tools exposed via HTTP bridge, MCP server (13 tools), MCP-over-SSE (`--mcp`), or CLI for any AI agent to invoke |
|
|
95
|
+
| **AI Agent Protocol** | 13 built-in tools exposed via HTTP bridge, MCP server (13 tools with pagination/cursors), MCP-over-SSE (`--mcp`), `codexa --serve` shorthand, Claude Desktop auto-config (`--claude-config`), or CLI for any AI agent to invoke |
|
|
92
96
|
| **Quality & Metrics** | Complexity analysis, maintainability scoring, quality gates for CI |
|
|
93
97
|
| **Multi-Repo Workspaces** | Link multiple repos under one workspace for cross-repo search & refactoring |
|
|
94
98
|
| **Interactive TUI** | Terminal REPL with mode switching for interactive exploration |
|
|
95
99
|
| **Streaming Responses** | Token-by-token streaming for chat and investigation commands |
|
|
96
100
|
| **Plugin System** | 22 hooks for extending every layer — from indexing to tool invocation |
|
|
97
101
|
| **VS Code Extension** | 4-panel sidebar (Search, Symbols, Quality, Tools), 8 commands, CodeLens, context menus, status bar |
|
|
102
|
+
| **Editor Plugins** | Zed, JetBrains (IntelliJ/PyCharm), Neovim (telescope.nvim), Vim, Sublime Text, Emacs, Helix, Eclipse -- all sharing the same MCP/bridge protocol |
|
|
103
|
+
| **Cross-Language Intelligence** | FFI pattern detection, polyglot dependency graphs, language-aware search boosting, universal multi-language call graph |
|
|
104
|
+
| **Multi-Agent Sessions** | Concurrent AI agent sessions with shared discovery, semantic diff (rename/move/signature/body detection), RAG code generation |
|
|
98
105
|
|
|
99
106
|
---
|
|
100
107
|
|
|
@@ -140,6 +147,15 @@ cd /path/to/your-project
|
|
|
140
147
|
codexa init
|
|
141
148
|
```
|
|
142
149
|
|
|
150
|
+
CodexA auto-detects your available RAM and picks the best embedding model.
|
|
151
|
+
Or choose a model profile explicitly:
|
|
152
|
+
|
|
153
|
+
```bash
|
|
154
|
+
codexa init --profile fast # mxbai-embed-xsmall — low RAM (<1 GB)
|
|
155
|
+
codexa init --profile balanced # MiniLM — good balance (~2 GB)
|
|
156
|
+
codexa init --profile precise # jina-code — best quality (~4 GB)
|
|
157
|
+
```
|
|
158
|
+
|
|
143
159
|
This creates a `.codexa/` directory with configuration, index storage, and session data.
|
|
144
160
|
|
|
145
161
|
### 3. Index the Codebase
|
|
@@ -284,7 +300,7 @@ cd CodexA
|
|
|
284
300
|
pip install -e ".[dev]"
|
|
285
301
|
|
|
286
302
|
# Verify
|
|
287
|
-
codexa --version # → codexa, version 0.
|
|
303
|
+
codexa --version # → codexa, version 0.5.0
|
|
288
304
|
```
|
|
289
305
|
|
|
290
306
|
### Step 2 — Initialize your target project
|
|
@@ -526,7 +542,7 @@ CodexA provides **39 commands** (plus subcommands) organized by capability:
|
|
|
526
542
|
| `codexa plugin list\|scaffold\|discover` | Plugin management |
|
|
527
543
|
| `codexa tui` | Interactive terminal REPL |
|
|
528
544
|
| `codexa mcp` | Start MCP (Model Context Protocol) server |
|
|
529
|
-
| `codexa models list\|info\|download\|switch` | Manage embedding models |
|
|
545
|
+
| `codexa models list\|info\|download\|switch\|profiles\|benchmark` | Manage and benchmark embedding models |
|
|
530
546
|
|
|
531
547
|
### VS Code Extension
|
|
532
548
|
|
|
@@ -583,8 +599,13 @@ Additional tools can be registered via the plugin system using the
|
|
|
583
599
|
│ /tools/invoke · /tools/list · /request · SSE stream │
|
|
584
600
|
├──────────────┬──────────────┬───────────────────────┤
|
|
585
601
|
│ Parsing │ Embedding │ Search │
|
|
586
|
-
│ tree-sitter │ sent-trans │ FAISS
|
|
602
|
+
│ tree-sitter │ sent-trans │ FAISS / Rust HNSW │
|
|
587
603
|
├──────────────┼──────────────┴───────────────────────┤
|
|
604
|
+
│ Rust Engine │ codexa-core (PyO3) │
|
|
605
|
+
│ (optional) │ HNSW · BM25 · AST chunk · mmap · RRF│
|
|
606
|
+
├──────────────┼──────────────────────────────────────┤
|
|
607
|
+
│ RAG Pipeline │ Retrieve → Dedup → Re-rank → Assemble│
|
|
608
|
+
├──────────────┼──────────────────────────────────────┤
|
|
588
609
|
│ Evolution │ Self-improving dev loop │
|
|
589
610
|
│ engine │ budget · task · patch · test · commit│
|
|
590
611
|
├──────────────┴──────────────────────────────────────┤
|
|
@@ -625,6 +646,9 @@ After `codexa init`, your project has `.codexa/config.json`:
|
|
|
625
646
|
}
|
|
626
647
|
```
|
|
627
648
|
|
|
649
|
+
> **Tip:** Instead of editing `model_name` manually, use `codexa init --profile fast|balanced|precise`
|
|
650
|
+
> or run `codexa models profiles` to see recommended models for your hardware.
|
|
651
|
+
|
|
628
652
|
---
|
|
629
653
|
|
|
630
654
|
## Documentation
|
|
@@ -655,7 +679,7 @@ Browse the docs at **http://localhost:5173** after running `npm run docs:dev`.
|
|
|
655
679
|
# Install dev dependencies
|
|
656
680
|
pip install -e ".[dev]"
|
|
657
681
|
|
|
658
|
-
# Run all
|
|
682
|
+
# Run all 2657 tests
|
|
659
683
|
pytest
|
|
660
684
|
|
|
661
685
|
# Run with coverage (gate: 70% minimum)
|
|
@@ -674,10 +698,11 @@ codexa --verbose search "query"
|
|
|
674
698
|
## Tech Stack
|
|
675
699
|
|
|
676
700
|
- **Python 3.11+** — No heavy frameworks, stdlib-first design
|
|
701
|
+
- **Rust (codexa-core)** — Native search engine via PyO3 — HNSW (instant-distance), BM25, tree-sitter AST chunking, mmap persistence, parallel scanning (rayon)
|
|
677
702
|
- **click** — CLI framework
|
|
678
703
|
- **sentence-transformers** — Embedding generation (`all-MiniLM-L6-v2`)
|
|
679
|
-
- **faiss-cpu** — Vector similarity search (
|
|
680
|
-
- **tree-sitter** — Multi-language code parsing
|
|
704
|
+
- **faiss-cpu** — Vector similarity search (with Rust HNSW acceleration)
|
|
705
|
+
- **tree-sitter** — Multi-language code parsing (Python + Rust)
|
|
681
706
|
- **watchfiles** — Rust-backed native file watching (inotify/FSEvents/ReadDirectoryChanges)
|
|
682
707
|
- **pydantic** — Configuration & data models
|
|
683
708
|
- **rich** — Terminal UI and formatting
|
|
@@ -5,9 +5,11 @@
|
|
|
5
5
|
|
|
6
6
|
<p align="center">
|
|
7
7
|
<a href="https://github.com/M9nx/CodexA/actions"><img src="https://github.com/M9nx/CodexA/actions/workflows/ci.yml/badge.svg" alt="CI"></a>
|
|
8
|
+
<a href="https://pypi.org/project/codexa/"><img src="https://img.shields.io/pypi/v/codexa?color=blue&label=PyPI" alt="PyPI"></a>
|
|
9
|
+
<a href="https://pepy.tech/project/codexa"><img src="https://img.shields.io/pepy/dt/codexa?color=blue&label=Downloads" alt="Downloads"></a>
|
|
8
10
|
<img src="https://img.shields.io/badge/python-3.11%2B-blue" alt="Python 3.11+">
|
|
9
|
-
<img src="https://img.shields.io/badge/version-0.
|
|
10
|
-
<img src="https://img.shields.io/badge/tests-
|
|
11
|
+
<img src="https://img.shields.io/badge/version-0.5.0-green" alt="Version">
|
|
12
|
+
<img src="https://img.shields.io/badge/tests-2657-brightgreen" alt="Tests">
|
|
11
13
|
<img src="https://img.shields.io/badge/coverage-79%25-brightgreen" alt="Coverage">
|
|
12
14
|
<img src="https://img.shields.io/badge/mypy-strict-blue" alt="mypy strict">
|
|
13
15
|
<img src="https://img.shields.io/badge/license-MIT-blue" alt="License">
|
|
@@ -24,17 +26,22 @@ structured tool protocol that any AI agent can call over HTTP or CLI.
|
|
|
24
26
|
|
|
25
27
|
| Area | What you get |
|
|
26
28
|
|------|-------------|
|
|
27
|
-
| **Code Indexing** | Scan repos, extract functions/classes, generate vector embeddings (sentence-transformers + FAISS), ONNX runtime option, parallel indexing, `--watch` live re-indexing, `.codexaignore` support |
|
|
28
|
-
| **
|
|
29
|
+
| **Code Indexing** | Scan repos, extract functions/classes, generate vector embeddings (sentence-transformers + FAISS), ONNX runtime option, parallel indexing, `--watch` live re-indexing, `.codexaignore` support, `--add`/`--inspect` per-file control, model-consistency guard, Ctrl+C partial-save |
|
|
30
|
+
| **Rust Search Engine** | Native `codexa-core` Rust crate via PyO3 — HNSW approximate nearest-neighbour search, BM25 keyword index, tree-sitter AST chunker (10 languages), memory-mapped vector persistence, parallel file scanner, optional ONNX embedding inference, optional Tantivy full-text search |
|
|
31
|
+
| **Multi-Mode Search** | Semantic, keyword (BM25), regex, hybrid (RRF), and raw filesystem grep (ripgrep backend) with full `-A/-B/-C/-w/-v/-c/-l/-L/--exclude/--no-ignore` flags, `--hybrid`/`--sem` shorthands, `--scores`, `--snippet-length`, `--no-snippet`, JSONL streaming |
|
|
32
|
+
| **RAG Pipeline** | 4-stage Retrieval-Augmented Generation — Retrieve → Deduplicate → Re-rank → Assemble with token budget, cross-encoder re-ranking, source citations |
|
|
29
33
|
| **Code Context** | Rich context windows — imports, dependencies, AST-based call graphs, surrounding code |
|
|
30
34
|
| **Repository Analysis** | Language breakdown (`codexa languages`), module summaries, component detection |
|
|
31
|
-
| **AI Agent Protocol** | 13 built-in tools exposed via HTTP bridge, MCP server (13 tools), MCP-over-SSE (`--mcp`), or CLI for any AI agent to invoke |
|
|
35
|
+
| **AI Agent Protocol** | 13 built-in tools exposed via HTTP bridge, MCP server (13 tools with pagination/cursors), MCP-over-SSE (`--mcp`), `codexa --serve` shorthand, Claude Desktop auto-config (`--claude-config`), or CLI for any AI agent to invoke |
|
|
32
36
|
| **Quality & Metrics** | Complexity analysis, maintainability scoring, quality gates for CI |
|
|
33
37
|
| **Multi-Repo Workspaces** | Link multiple repos under one workspace for cross-repo search & refactoring |
|
|
34
38
|
| **Interactive TUI** | Terminal REPL with mode switching for interactive exploration |
|
|
35
39
|
| **Streaming Responses** | Token-by-token streaming for chat and investigation commands |
|
|
36
40
|
| **Plugin System** | 22 hooks for extending every layer — from indexing to tool invocation |
|
|
37
41
|
| **VS Code Extension** | 4-panel sidebar (Search, Symbols, Quality, Tools), 8 commands, CodeLens, context menus, status bar |
|
|
42
|
+
| **Editor Plugins** | Zed, JetBrains (IntelliJ/PyCharm), Neovim (telescope.nvim), Vim, Sublime Text, Emacs, Helix, Eclipse -- all sharing the same MCP/bridge protocol |
|
|
43
|
+
| **Cross-Language Intelligence** | FFI pattern detection, polyglot dependency graphs, language-aware search boosting, universal multi-language call graph |
|
|
44
|
+
| **Multi-Agent Sessions** | Concurrent AI agent sessions with shared discovery, semantic diff (rename/move/signature/body detection), RAG code generation |
|
|
38
45
|
|
|
39
46
|
---
|
|
40
47
|
|
|
@@ -80,6 +87,15 @@ cd /path/to/your-project
|
|
|
80
87
|
codexa init
|
|
81
88
|
```
|
|
82
89
|
|
|
90
|
+
CodexA auto-detects your available RAM and picks the best embedding model.
|
|
91
|
+
Or choose a model profile explicitly:
|
|
92
|
+
|
|
93
|
+
```bash
|
|
94
|
+
codexa init --profile fast # mxbai-embed-xsmall — low RAM (<1 GB)
|
|
95
|
+
codexa init --profile balanced # MiniLM — good balance (~2 GB)
|
|
96
|
+
codexa init --profile precise # jina-code — best quality (~4 GB)
|
|
97
|
+
```
|
|
98
|
+
|
|
83
99
|
This creates a `.codexa/` directory with configuration, index storage, and session data.
|
|
84
100
|
|
|
85
101
|
### 3. Index the Codebase
|
|
@@ -224,7 +240,7 @@ cd CodexA
|
|
|
224
240
|
pip install -e ".[dev]"
|
|
225
241
|
|
|
226
242
|
# Verify
|
|
227
|
-
codexa --version # → codexa, version 0.
|
|
243
|
+
codexa --version # → codexa, version 0.5.0
|
|
228
244
|
```
|
|
229
245
|
|
|
230
246
|
### Step 2 — Initialize your target project
|
|
@@ -466,7 +482,7 @@ CodexA provides **39 commands** (plus subcommands) organized by capability:
|
|
|
466
482
|
| `codexa plugin list\|scaffold\|discover` | Plugin management |
|
|
467
483
|
| `codexa tui` | Interactive terminal REPL |
|
|
468
484
|
| `codexa mcp` | Start MCP (Model Context Protocol) server |
|
|
469
|
-
| `codexa models list\|info\|download\|switch` | Manage embedding models |
|
|
485
|
+
| `codexa models list\|info\|download\|switch\|profiles\|benchmark` | Manage and benchmark embedding models |
|
|
470
486
|
|
|
471
487
|
### VS Code Extension
|
|
472
488
|
|
|
@@ -523,8 +539,13 @@ Additional tools can be registered via the plugin system using the
|
|
|
523
539
|
│ /tools/invoke · /tools/list · /request · SSE stream │
|
|
524
540
|
├──────────────┬──────────────┬───────────────────────┤
|
|
525
541
|
│ Parsing │ Embedding │ Search │
|
|
526
|
-
│ tree-sitter │ sent-trans │ FAISS
|
|
542
|
+
│ tree-sitter │ sent-trans │ FAISS / Rust HNSW │
|
|
527
543
|
├──────────────┼──────────────┴───────────────────────┤
|
|
544
|
+
│ Rust Engine │ codexa-core (PyO3) │
|
|
545
|
+
│ (optional) │ HNSW · BM25 · AST chunk · mmap · RRF│
|
|
546
|
+
├──────────────┼──────────────────────────────────────┤
|
|
547
|
+
│ RAG Pipeline │ Retrieve → Dedup → Re-rank → Assemble│
|
|
548
|
+
├──────────────┼──────────────────────────────────────┤
|
|
528
549
|
│ Evolution │ Self-improving dev loop │
|
|
529
550
|
│ engine │ budget · task · patch · test · commit│
|
|
530
551
|
├──────────────┴──────────────────────────────────────┤
|
|
@@ -565,6 +586,9 @@ After `codexa init`, your project has `.codexa/config.json`:
|
|
|
565
586
|
}
|
|
566
587
|
```
|
|
567
588
|
|
|
589
|
+
> **Tip:** Instead of editing `model_name` manually, use `codexa init --profile fast|balanced|precise`
|
|
590
|
+
> or run `codexa models profiles` to see recommended models for your hardware.
|
|
591
|
+
|
|
568
592
|
---
|
|
569
593
|
|
|
570
594
|
## Documentation
|
|
@@ -595,7 +619,7 @@ Browse the docs at **http://localhost:5173** after running `npm run docs:dev`.
|
|
|
595
619
|
# Install dev dependencies
|
|
596
620
|
pip install -e ".[dev]"
|
|
597
621
|
|
|
598
|
-
# Run all
|
|
622
|
+
# Run all 2657 tests
|
|
599
623
|
pytest
|
|
600
624
|
|
|
601
625
|
# Run with coverage (gate: 70% minimum)
|
|
@@ -614,10 +638,11 @@ codexa --verbose search "query"
|
|
|
614
638
|
## Tech Stack
|
|
615
639
|
|
|
616
640
|
- **Python 3.11+** — No heavy frameworks, stdlib-first design
|
|
641
|
+
- **Rust (codexa-core)** — Native search engine via PyO3 — HNSW (instant-distance), BM25, tree-sitter AST chunking, mmap persistence, parallel scanning (rayon)
|
|
617
642
|
- **click** — CLI framework
|
|
618
643
|
- **sentence-transformers** — Embedding generation (`all-MiniLM-L6-v2`)
|
|
619
|
-
- **faiss-cpu** — Vector similarity search (
|
|
620
|
-
- **tree-sitter** — Multi-language code parsing
|
|
644
|
+
- **faiss-cpu** — Vector similarity search (with Rust HNSW acceleration)
|
|
645
|
+
- **tree-sitter** — Multi-language code parsing (Python + Rust)
|
|
621
646
|
- **watchfiles** — Rust-backed native file watching (inotify/FSEvents/ReadDirectoryChanges)
|
|
622
647
|
- **pydantic** — Configuration & data models
|
|
623
648
|
- **rich** — Terminal UI and formatting
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: codexa
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.5.0
|
|
4
4
|
Summary: Developer intelligence CLI — semantic code search, AI-assisted understanding, and agent tooling for codebases
|
|
5
5
|
License: MIT
|
|
6
6
|
Project-URL: Homepage, https://codex-a.dev
|
|
@@ -65,9 +65,11 @@ Dynamic: license-file
|
|
|
65
65
|
|
|
66
66
|
<p align="center">
|
|
67
67
|
<a href="https://github.com/M9nx/CodexA/actions"><img src="https://github.com/M9nx/CodexA/actions/workflows/ci.yml/badge.svg" alt="CI"></a>
|
|
68
|
+
<a href="https://pypi.org/project/codexa/"><img src="https://img.shields.io/pypi/v/codexa?color=blue&label=PyPI" alt="PyPI"></a>
|
|
69
|
+
<a href="https://pepy.tech/project/codexa"><img src="https://img.shields.io/pepy/dt/codexa?color=blue&label=Downloads" alt="Downloads"></a>
|
|
68
70
|
<img src="https://img.shields.io/badge/python-3.11%2B-blue" alt="Python 3.11+">
|
|
69
|
-
<img src="https://img.shields.io/badge/version-0.
|
|
70
|
-
<img src="https://img.shields.io/badge/tests-
|
|
71
|
+
<img src="https://img.shields.io/badge/version-0.5.0-green" alt="Version">
|
|
72
|
+
<img src="https://img.shields.io/badge/tests-2657-brightgreen" alt="Tests">
|
|
71
73
|
<img src="https://img.shields.io/badge/coverage-79%25-brightgreen" alt="Coverage">
|
|
72
74
|
<img src="https://img.shields.io/badge/mypy-strict-blue" alt="mypy strict">
|
|
73
75
|
<img src="https://img.shields.io/badge/license-MIT-blue" alt="License">
|
|
@@ -84,17 +86,22 @@ structured tool protocol that any AI agent can call over HTTP or CLI.
|
|
|
84
86
|
|
|
85
87
|
| Area | What you get |
|
|
86
88
|
|------|-------------|
|
|
87
|
-
| **Code Indexing** | Scan repos, extract functions/classes, generate vector embeddings (sentence-transformers + FAISS), ONNX runtime option, parallel indexing, `--watch` live re-indexing, `.codexaignore` support |
|
|
88
|
-
| **
|
|
89
|
+
| **Code Indexing** | Scan repos, extract functions/classes, generate vector embeddings (sentence-transformers + FAISS), ONNX runtime option, parallel indexing, `--watch` live re-indexing, `.codexaignore` support, `--add`/`--inspect` per-file control, model-consistency guard, Ctrl+C partial-save |
|
|
90
|
+
| **Rust Search Engine** | Native `codexa-core` Rust crate via PyO3 — HNSW approximate nearest-neighbour search, BM25 keyword index, tree-sitter AST chunker (10 languages), memory-mapped vector persistence, parallel file scanner, optional ONNX embedding inference, optional Tantivy full-text search |
|
|
91
|
+
| **Multi-Mode Search** | Semantic, keyword (BM25), regex, hybrid (RRF), and raw filesystem grep (ripgrep backend) with full `-A/-B/-C/-w/-v/-c/-l/-L/--exclude/--no-ignore` flags, `--hybrid`/`--sem` shorthands, `--scores`, `--snippet-length`, `--no-snippet`, JSONL streaming |
|
|
92
|
+
| **RAG Pipeline** | 4-stage Retrieval-Augmented Generation — Retrieve → Deduplicate → Re-rank → Assemble with token budget, cross-encoder re-ranking, source citations |
|
|
89
93
|
| **Code Context** | Rich context windows — imports, dependencies, AST-based call graphs, surrounding code |
|
|
90
94
|
| **Repository Analysis** | Language breakdown (`codexa languages`), module summaries, component detection |
|
|
91
|
-
| **AI Agent Protocol** | 13 built-in tools exposed via HTTP bridge, MCP server (13 tools), MCP-over-SSE (`--mcp`), or CLI for any AI agent to invoke |
|
|
95
|
+
| **AI Agent Protocol** | 13 built-in tools exposed via HTTP bridge, MCP server (13 tools with pagination/cursors), MCP-over-SSE (`--mcp`), `codexa --serve` shorthand, Claude Desktop auto-config (`--claude-config`), or CLI for any AI agent to invoke |
|
|
92
96
|
| **Quality & Metrics** | Complexity analysis, maintainability scoring, quality gates for CI |
|
|
93
97
|
| **Multi-Repo Workspaces** | Link multiple repos under one workspace for cross-repo search & refactoring |
|
|
94
98
|
| **Interactive TUI** | Terminal REPL with mode switching for interactive exploration |
|
|
95
99
|
| **Streaming Responses** | Token-by-token streaming for chat and investigation commands |
|
|
96
100
|
| **Plugin System** | 22 hooks for extending every layer — from indexing to tool invocation |
|
|
97
101
|
| **VS Code Extension** | 4-panel sidebar (Search, Symbols, Quality, Tools), 8 commands, CodeLens, context menus, status bar |
|
|
102
|
+
| **Editor Plugins** | Zed, JetBrains (IntelliJ/PyCharm), Neovim (telescope.nvim), Vim, Sublime Text, Emacs, Helix, Eclipse -- all sharing the same MCP/bridge protocol |
|
|
103
|
+
| **Cross-Language Intelligence** | FFI pattern detection, polyglot dependency graphs, language-aware search boosting, universal multi-language call graph |
|
|
104
|
+
| **Multi-Agent Sessions** | Concurrent AI agent sessions with shared discovery, semantic diff (rename/move/signature/body detection), RAG code generation |
|
|
98
105
|
|
|
99
106
|
---
|
|
100
107
|
|
|
@@ -140,6 +147,15 @@ cd /path/to/your-project
|
|
|
140
147
|
codexa init
|
|
141
148
|
```
|
|
142
149
|
|
|
150
|
+
CodexA auto-detects your available RAM and picks the best embedding model.
|
|
151
|
+
Or choose a model profile explicitly:
|
|
152
|
+
|
|
153
|
+
```bash
|
|
154
|
+
codexa init --profile fast # mxbai-embed-xsmall — low RAM (<1 GB)
|
|
155
|
+
codexa init --profile balanced # MiniLM — good balance (~2 GB)
|
|
156
|
+
codexa init --profile precise # jina-code — best quality (~4 GB)
|
|
157
|
+
```
|
|
158
|
+
|
|
143
159
|
This creates a `.codexa/` directory with configuration, index storage, and session data.
|
|
144
160
|
|
|
145
161
|
### 3. Index the Codebase
|
|
@@ -284,7 +300,7 @@ cd CodexA
|
|
|
284
300
|
pip install -e ".[dev]"
|
|
285
301
|
|
|
286
302
|
# Verify
|
|
287
|
-
codexa --version # → codexa, version 0.
|
|
303
|
+
codexa --version # → codexa, version 0.5.0
|
|
288
304
|
```
|
|
289
305
|
|
|
290
306
|
### Step 2 — Initialize your target project
|
|
@@ -526,7 +542,7 @@ CodexA provides **39 commands** (plus subcommands) organized by capability:
|
|
|
526
542
|
| `codexa plugin list\|scaffold\|discover` | Plugin management |
|
|
527
543
|
| `codexa tui` | Interactive terminal REPL |
|
|
528
544
|
| `codexa mcp` | Start MCP (Model Context Protocol) server |
|
|
529
|
-
| `codexa models list\|info\|download\|switch` | Manage embedding models |
|
|
545
|
+
| `codexa models list\|info\|download\|switch\|profiles\|benchmark` | Manage and benchmark embedding models |
|
|
530
546
|
|
|
531
547
|
### VS Code Extension
|
|
532
548
|
|
|
@@ -583,8 +599,13 @@ Additional tools can be registered via the plugin system using the
|
|
|
583
599
|
│ /tools/invoke · /tools/list · /request · SSE stream │
|
|
584
600
|
├──────────────┬──────────────┬───────────────────────┤
|
|
585
601
|
│ Parsing │ Embedding │ Search │
|
|
586
|
-
│ tree-sitter │ sent-trans │ FAISS
|
|
602
|
+
│ tree-sitter │ sent-trans │ FAISS / Rust HNSW │
|
|
587
603
|
├──────────────┼──────────────┴───────────────────────┤
|
|
604
|
+
│ Rust Engine │ codexa-core (PyO3) │
|
|
605
|
+
│ (optional) │ HNSW · BM25 · AST chunk · mmap · RRF│
|
|
606
|
+
├──────────────┼──────────────────────────────────────┤
|
|
607
|
+
│ RAG Pipeline │ Retrieve → Dedup → Re-rank → Assemble│
|
|
608
|
+
├──────────────┼──────────────────────────────────────┤
|
|
588
609
|
│ Evolution │ Self-improving dev loop │
|
|
589
610
|
│ engine │ budget · task · patch · test · commit│
|
|
590
611
|
├──────────────┴──────────────────────────────────────┤
|
|
@@ -625,6 +646,9 @@ After `codexa init`, your project has `.codexa/config.json`:
|
|
|
625
646
|
}
|
|
626
647
|
```
|
|
627
648
|
|
|
649
|
+
> **Tip:** Instead of editing `model_name` manually, use `codexa init --profile fast|balanced|precise`
|
|
650
|
+
> or run `codexa models profiles` to see recommended models for your hardware.
|
|
651
|
+
|
|
628
652
|
---
|
|
629
653
|
|
|
630
654
|
## Documentation
|
|
@@ -655,7 +679,7 @@ Browse the docs at **http://localhost:5173** after running `npm run docs:dev`.
|
|
|
655
679
|
# Install dev dependencies
|
|
656
680
|
pip install -e ".[dev]"
|
|
657
681
|
|
|
658
|
-
# Run all
|
|
682
|
+
# Run all 2657 tests
|
|
659
683
|
pytest
|
|
660
684
|
|
|
661
685
|
# Run with coverage (gate: 70% minimum)
|
|
@@ -674,10 +698,11 @@ codexa --verbose search "query"
|
|
|
674
698
|
## Tech Stack
|
|
675
699
|
|
|
676
700
|
- **Python 3.11+** — No heavy frameworks, stdlib-first design
|
|
701
|
+
- **Rust (codexa-core)** — Native search engine via PyO3 — HNSW (instant-distance), BM25, tree-sitter AST chunking, mmap persistence, parallel scanning (rayon)
|
|
677
702
|
- **click** — CLI framework
|
|
678
703
|
- **sentence-transformers** — Embedding generation (`all-MiniLM-L6-v2`)
|
|
679
|
-
- **faiss-cpu** — Vector similarity search (
|
|
680
|
-
- **tree-sitter** — Multi-language code parsing
|
|
704
|
+
- **faiss-cpu** — Vector similarity search (with Rust HNSW acceleration)
|
|
705
|
+
- **tree-sitter** — Multi-language code parsing (Python + Rust)
|
|
681
706
|
- **watchfiles** — Rust-backed native file watching (inotify/FSEvents/ReadDirectoryChanges)
|
|
682
707
|
- **pydantic** — Configuration & data models
|
|
683
708
|
- **rich** — Terminal UI and formatting
|
|
@@ -8,9 +8,13 @@ codexa.egg-info/entry_points.txt
|
|
|
8
8
|
codexa.egg-info/requires.txt
|
|
9
9
|
codexa.egg-info/top_level.txt
|
|
10
10
|
semantic_code_intelligence/__init__.py
|
|
11
|
+
semantic_code_intelligence/rust_backend.py
|
|
11
12
|
semantic_code_intelligence/version.py
|
|
12
13
|
semantic_code_intelligence/analysis/__init__.py
|
|
13
14
|
semantic_code_intelligence/analysis/ai_features.py
|
|
15
|
+
semantic_code_intelligence/analysis/codegen.py
|
|
16
|
+
semantic_code_intelligence/analysis/cross_language.py
|
|
17
|
+
semantic_code_intelligence/analysis/semantic_diff.py
|
|
14
18
|
semantic_code_intelligence/bridge/__init__.py
|
|
15
19
|
semantic_code_intelligence/bridge/context_provider.py
|
|
16
20
|
semantic_code_intelligence/bridge/protocol.py
|
|
@@ -103,12 +107,14 @@ semantic_code_intelligence/llm/mock_provider.py
|
|
|
103
107
|
semantic_code_intelligence/llm/ollama_provider.py
|
|
104
108
|
semantic_code_intelligence/llm/openai_provider.py
|
|
105
109
|
semantic_code_intelligence/llm/provider.py
|
|
110
|
+
semantic_code_intelligence/llm/rag.py
|
|
106
111
|
semantic_code_intelligence/llm/rate_limiter.py
|
|
107
112
|
semantic_code_intelligence/llm/reasoning.py
|
|
108
113
|
semantic_code_intelligence/llm/safety.py
|
|
109
114
|
semantic_code_intelligence/llm/streaming.py
|
|
110
115
|
semantic_code_intelligence/lsp/__init__.py
|
|
111
116
|
semantic_code_intelligence/mcp/__init__.py
|
|
117
|
+
semantic_code_intelligence/mcp/claude_config.py
|
|
112
118
|
semantic_code_intelligence/parsing/__init__.py
|
|
113
119
|
semantic_code_intelligence/parsing/parser.py
|
|
114
120
|
semantic_code_intelligence/plugins/__init__.py
|
|
@@ -125,6 +131,7 @@ semantic_code_intelligence/search/section_expander.py
|
|
|
125
131
|
semantic_code_intelligence/services/__init__.py
|
|
126
132
|
semantic_code_intelligence/services/indexing_service.py
|
|
127
133
|
semantic_code_intelligence/services/search_service.py
|
|
134
|
+
semantic_code_intelligence/sessions/__init__.py
|
|
128
135
|
semantic_code_intelligence/storage/__init__.py
|
|
129
136
|
semantic_code_intelligence/storage/chunk_hash_store.py
|
|
130
137
|
semantic_code_intelligence/storage/hash_store.py
|
|
@@ -166,6 +173,7 @@ semantic_code_intelligence/tests/test_phase24.py
|
|
|
166
173
|
semantic_code_intelligence/tests/test_phase25.py
|
|
167
174
|
semantic_code_intelligence/tests/test_phase26.py
|
|
168
175
|
semantic_code_intelligence/tests/test_phase27.py
|
|
176
|
+
semantic_code_intelligence/tests/test_phase38_42.py
|
|
169
177
|
semantic_code_intelligence/tests/test_phase8.py
|
|
170
178
|
semantic_code_intelligence/tests/test_phase9.py
|
|
171
179
|
semantic_code_intelligence/tests/test_plugins.py
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "codexa"
|
|
7
|
-
version = "0.
|
|
7
|
+
version = "0.5.0"
|
|
8
8
|
description = "Developer intelligence CLI — semantic code search, AI-assisted understanding, and agent tooling for codebases"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.11"
|
|
@@ -7,7 +7,7 @@ for feeding into LLMs or other AI systems.
|
|
|
7
7
|
from __future__ import annotations
|
|
8
8
|
|
|
9
9
|
import json
|
|
10
|
-
from dataclasses import dataclass, field
|
|
10
|
+
from dataclasses import asdict, dataclass, field
|
|
11
11
|
from pathlib import Path
|
|
12
12
|
from typing import Any
|
|
13
13
|
|
|
@@ -40,15 +40,7 @@ class LanguageStats:
|
|
|
40
40
|
|
|
41
41
|
def to_dict(self) -> dict[str, Any]:
|
|
42
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
|
-
}
|
|
43
|
+
return asdict(self)
|
|
52
44
|
|
|
53
45
|
|
|
54
46
|
@dataclass
|
|
@@ -251,13 +243,7 @@ class CodeExplanation:
|
|
|
251
243
|
|
|
252
244
|
def to_dict(self) -> dict[str, Any]:
|
|
253
245
|
"""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
|
-
}
|
|
246
|
+
return asdict(self)
|
|
261
247
|
|
|
262
248
|
def render(self) -> str:
|
|
263
249
|
"""Render the explanation as a Markdown-style string."""
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
"""Code generation — RAG-grounded scaffolding using codebase context.
|
|
2
|
+
|
|
3
|
+
Generates code scaffolds, tests, and documentation grounded in the
|
|
4
|
+
actual codebase via retrieval-augmented generation.
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
from __future__ import annotations
|
|
8
|
+
|
|
9
|
+
from dataclasses import dataclass, field
|
|
10
|
+
from typing import Any
|
|
11
|
+
|
|
12
|
+
from semantic_code_intelligence.utils.logging import get_logger
|
|
13
|
+
|
|
14
|
+
logger = get_logger("codegen")
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
@dataclass
|
|
18
|
+
class CodeGenRequest:
|
|
19
|
+
"""A request for code generation."""
|
|
20
|
+
|
|
21
|
+
prompt: str
|
|
22
|
+
kind: str = "scaffold" # scaffold, test, docstring, refactor
|
|
23
|
+
target_file: str | None = None
|
|
24
|
+
target_symbol: str | None = None
|
|
25
|
+
language: str | None = None
|
|
26
|
+
max_context_chunks: int = 5
|
|
27
|
+
|
|
28
|
+
def to_dict(self) -> dict[str, Any]:
|
|
29
|
+
return {
|
|
30
|
+
"prompt": self.prompt,
|
|
31
|
+
"kind": self.kind,
|
|
32
|
+
"target_file": self.target_file,
|
|
33
|
+
"target_symbol": self.target_symbol,
|
|
34
|
+
"language": self.language,
|
|
35
|
+
"max_context_chunks": self.max_context_chunks,
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
@dataclass
|
|
40
|
+
class CodeGenResult:
|
|
41
|
+
"""Result of a code generation request."""
|
|
42
|
+
|
|
43
|
+
generated_code: str = ""
|
|
44
|
+
context_used: list[dict[str, Any]] = field(default_factory=list)
|
|
45
|
+
model_used: str = ""
|
|
46
|
+
prompt_tokens: int = 0
|
|
47
|
+
success: bool = True
|
|
48
|
+
error: str = ""
|
|
49
|
+
|
|
50
|
+
def to_dict(self) -> dict[str, Any]:
|
|
51
|
+
return {
|
|
52
|
+
"generated_code": self.generated_code,
|
|
53
|
+
"context_used": self.context_used,
|
|
54
|
+
"model_used": self.model_used,
|
|
55
|
+
"prompt_tokens": self.prompt_tokens,
|
|
56
|
+
"success": self.success,
|
|
57
|
+
"error": self.error,
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
class CodeGenerator:
|
|
62
|
+
"""RAG-grounded code generator.
|
|
63
|
+
|
|
64
|
+
Retrieves relevant context from the indexed codebase, assembles a
|
|
65
|
+
prompt, and sends it to the configured LLM provider.
|
|
66
|
+
"""
|
|
67
|
+
|
|
68
|
+
def __init__(self, project_root: str) -> None:
|
|
69
|
+
from pathlib import Path
|
|
70
|
+
self._project_root = Path(project_root).resolve()
|
|
71
|
+
|
|
72
|
+
def generate(self, request: CodeGenRequest) -> CodeGenResult:
|
|
73
|
+
"""Generate code using RAG context + LLM."""
|
|
74
|
+
from pathlib import Path
|
|
75
|
+
|
|
76
|
+
from semantic_code_intelligence.config.settings import load_config
|
|
77
|
+
from semantic_code_intelligence.services.search_service import search_codebase
|
|
78
|
+
|
|
79
|
+
config = load_config(self._project_root)
|
|
80
|
+
result = CodeGenResult()
|
|
81
|
+
|
|
82
|
+
# Step 1: Retrieve relevant context
|
|
83
|
+
try:
|
|
84
|
+
search_results = search_codebase(
|
|
85
|
+
query=request.prompt,
|
|
86
|
+
project_root=self._project_root,
|
|
87
|
+
top_k=request.max_context_chunks,
|
|
88
|
+
mode="hybrid",
|
|
89
|
+
)
|
|
90
|
+
context_chunks = []
|
|
91
|
+
for sr in search_results:
|
|
92
|
+
context_chunks.append({
|
|
93
|
+
"file_path": sr.file_path,
|
|
94
|
+
"start_line": sr.start_line,
|
|
95
|
+
"content": sr.content[:500],
|
|
96
|
+
"score": round(sr.score, 3),
|
|
97
|
+
})
|
|
98
|
+
result.context_used = context_chunks
|
|
99
|
+
except Exception as exc:
|
|
100
|
+
logger.warning("Context retrieval failed: %s", exc)
|
|
101
|
+
context_chunks = []
|
|
102
|
+
|
|
103
|
+
# Step 2: Build the prompt
|
|
104
|
+
context_text = ""
|
|
105
|
+
for chunk in context_chunks:
|
|
106
|
+
context_text += f"\n--- {chunk['file_path']}:{chunk['start_line']} ---\n"
|
|
107
|
+
context_text += chunk["content"] + "\n"
|
|
108
|
+
|
|
109
|
+
system_prompt = (
|
|
110
|
+
"You are a code generator. Generate code based on the user's request, "
|
|
111
|
+
"grounded in the provided codebase context. Follow the existing code style "
|
|
112
|
+
"and patterns. Only output the code, no explanations."
|
|
113
|
+
)
|
|
114
|
+
|
|
115
|
+
user_prompt = f"Request: {request.prompt}\n"
|
|
116
|
+
if request.kind:
|
|
117
|
+
user_prompt += f"Type: {request.kind}\n"
|
|
118
|
+
if request.target_file:
|
|
119
|
+
user_prompt += f"Target file: {request.target_file}\n"
|
|
120
|
+
if request.language:
|
|
121
|
+
user_prompt += f"Language: {request.language}\n"
|
|
122
|
+
if context_text:
|
|
123
|
+
user_prompt += f"\nRelevant codebase context:\n{context_text}"
|
|
124
|
+
|
|
125
|
+
# Step 3: Send to LLM
|
|
126
|
+
try:
|
|
127
|
+
from semantic_code_intelligence.llm.providers import get_provider
|
|
128
|
+
|
|
129
|
+
provider = get_provider(config.llm)
|
|
130
|
+
response = provider.complete(
|
|
131
|
+
system_prompt=system_prompt,
|
|
132
|
+
user_prompt=user_prompt,
|
|
133
|
+
max_tokens=config.llm.max_tokens,
|
|
134
|
+
)
|
|
135
|
+
result.generated_code = response.content
|
|
136
|
+
result.model_used = config.llm.model
|
|
137
|
+
result.prompt_tokens = response.prompt_tokens
|
|
138
|
+
except Exception as exc:
|
|
139
|
+
result.success = False
|
|
140
|
+
result.error = str(exc)
|
|
141
|
+
logger.error("Code generation failed: %s", exc)
|
|
142
|
+
|
|
143
|
+
return result
|