mcp-vector-search 0.15.5__tar.gz → 0.15.13__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.
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/CHANGELOG.md +66 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/PKG-INFO +2 -2
- mcp_vector_search-0.15.13/docs/development/OPENAI_API_INTEGRATION.md +333 -0
- mcp_vector_search-0.15.13/docs/development/ROOT_BREADCRUMB_FIX.md +305 -0
- mcp_vector_search-0.15.13/docs/development/d3js-tree-integration.md +310 -0
- mcp_vector_search-0.15.13/docs/development/mcp-installer-platform-forcing-fix.md +179 -0
- mcp_vector_search-0.15.13/docs/guides/CHAT_COMMAND_SETUP.md +333 -0
- mcp_vector_search-0.15.13/docs/research/dotfile-configuration-research-2025-12-08.md +542 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/pyproject.toml +1 -1
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/__init__.py +2 -2
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/cli/commands/chat.py +159 -32
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/cli/commands/index.py +18 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/cli/commands/setup.py +345 -7
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/cli/commands/visualize/templates/scripts.py +442 -120
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/cli/main.py +13 -3
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/config/settings.py +8 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/core/config_utils.py +112 -1
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/core/llm_client.py +118 -27
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/core/models.py +3 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/core/search.py +5 -0
- mcp_vector_search-0.15.13/tests/manual/test_d3_integration.md +226 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/vendor/py-mcp-installer-service/pyproject.toml +1 -1
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/vendor/py-mcp-installer-service/src/py_mcp_installer/installer.py +4 -4
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/vendor/py-mcp-installer-service/src/py_mcp_installer/platform_detector.py +52 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/.github/workflows/ci.yml +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/.github/workflows/update-homebrew.yml +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/.gitignore +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/.pre-commit-config.yaml +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/CLAUDE.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/DEPLOYMENT.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/LICENSE +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/Makefile +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/Makefile.backup.20251208_135237 +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/README.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/dev-mcp +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/DOCUMENTATION-STANDARDS.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/_archive/CLAUDE_20251009_pre_mpm_init.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/_archive/CLAUDE_MPM_INIT_SUMMARY_20251009.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/_archive/DEPLOY.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/_archive/ENGINEER_TASK.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/_archive/INSTALL.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/_archive/MPM_INIT_EXECUTIVE_SUMMARY.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/_archive/README.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/_archive/implementation-reports/README.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/_archive/implementation-reports/compact_folder_layout_deliverables.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/_archive/implementation-reports/compact_folder_layout_summary.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/_archive/implementation-reports/visualization_compact_folders_implementation.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/_archive/implementation-reports/visualization_compact_layout_fixes.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/_archive/implementation-reports/visualization_enhancements_code_review.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/_archive/implementation-reports/visualization_enhancements_summary.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/_archive/implementation-reports/visualization_implementation_plan.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/_archive/implementation-reports/visualization_implementation_summary.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/_archive/implementation-reports/visualization_improvements_spec.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/_archive/implementation-reports/visualization_test_report.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/_archive/implementation-reports/visualization_verification_report.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/_archive/summaries/BREADCRUMB_BUG_TEST_REPORT.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/_archive/summaries/CRITICAL_BUG_REPORT_visibleNodes_initialization.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/_archive/summaries/DOCUMENTATION_REORGANIZATION_COMPLETE.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/_archive/summaries/HOMEBREW_INTEGRATION_SUMMARY.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/_archive/summaries/HOMEBREW_INTEGRATION_USAGE.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/_archive/summaries/HOMEBREW_TAP_UPDATE_STATUS.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/_archive/summaries/HOMEBREW_TAP_UPDATE_SUMMARY.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/_archive/summaries/HOMEBREW_TEST_RESULTS.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/_archive/summaries/INVESTIGATION_REPORT_empty_nodes.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/_archive/summaries/LAYOUT_TEST_FAILURE_SUMMARY.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/_archive/summaries/MCP_AUTO_INSTALLATION_SUMMARY.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/_archive/summaries/PERFORMANCE_OPTIMIZATION_SUMMARY.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/_archive/summaries/PROJECT_CLEANUP_SUMMARY.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/_archive/summaries/QUICK_VERIFICATION_SUMMARY.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/_archive/summaries/README.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/_archive/summaries/REORGANIZATION_PLAN.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/_archive/summaries/REORGANIZATION_SUMMARY.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/_archive/summaries/breadcrumb_navigation_implementation.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/_archive/summaries/code_chunks_feature_summary.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/_archive/summaries/code_chunks_user_guide.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/_archive/summaries/cytoscape_fix_verification.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/_archive/summaries/llm-benchmark-implementation.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/_archive/summaries/mcp_installer_migration_complete.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/_archive/summaries/mcp_installer_migration_plan.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/_archive/summaries/submodule_integration_summary.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/_archive/summaries/visualization-controls-diagnosis.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/_archive/summaries/visualization_automatic_spacing_spinner_implementation.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/_archive/summaries/visualization_cli_fix_summary.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/_archive/summaries/visualization_enhancements_implementation.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/_archive/summaries/visualization_enhancements_test_results.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/_archive/summaries/visualization_enhancements_user_guide.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/_archive/summaries/visualization_optimization_summary.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/_archive/test-suite-summary.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/_archive/testing-strategy.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/advanced/README.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/advanced/troubleshooting.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/architecture/README.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/architecture/database-optimization.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/architecture/indexing-workflow.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/architecture/performance.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/configuration/README.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/deployment/CHANGELOG.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/deployment/HOMEBREW_INTEGRATION.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/deployment/HOMEBREW_QUICKSTART.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/deployment/README.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/deployment/RELEASES.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/deployment/VERSIONING_WORKFLOW.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/development/BUGFIX_VISUALIZATION_DATA_INIT.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/development/FULL_TREE_FAN_VISUALIZATION.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/development/MCP_AUTO_INSTALLATION_IMPLEMENTATION.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/development/PHASE1_STATE_MANAGEMENT_COMPLETE.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/development/README.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/development/STREAMING_JSON_IMPLEMENTATION.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/development/TREE_LAYOUT_IMPLEMENTATION.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/development/TWO_PHASE_LAYOUT_IMPLEMENTATION.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/development/VISUALIZATION_ARCHITECTURE_V2.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/development/VISUALIZATION_ARCHITECTURE_V2_SUMMARY.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/development/VISUALIZATION_V2_CHECKLIST.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/development/VISUALIZATION_V2_DIAGRAMS.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/development/VISUALIZATION_V2_IMPLEMENTATION_SUMMARY.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/development/VISUALIZATION_V2_INDEX.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/development/api.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/development/architecture.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/development/ast_circular_dependency_fix.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/development/code-quality.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/development/contributing.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/development/duplicate-node-rendering-fix.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/development/fix-visibleNodes-initialization.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/development/glob-pattern-fix-summary.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/development/hybrid-visualization-frontend-integration.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/development/mcp-installation-bug-fix-2025-12-01.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/development/monorepo-detection-fix.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/development/openrouter-setup-demo.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/development/openrouter-setup-enhancement.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/development/project-organization.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/development/root-node-filtering-fix.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/development/setup-api-key-interactive-prompt-fix.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/development/setup.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/development/testing.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/development/tree-navigation-test-guide.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/development/versioning.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/examples/README.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/examples/benchmark-output-example.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/getting-started/README.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/getting-started/configuration.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/getting-started/first-steps.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/getting-started/installation.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/guides/MCP_AUTO_INSTALLATION.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/guides/README.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/guides/api-key-storage.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/guides/chat-command.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/guides/cli-usage.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/guides/file-watching.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/guides/indexing.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/guides/llm-benchmarking.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/guides/mcp-integration.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/guides/searching.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/index.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/internal/README.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/internal/improvements.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/internal/install-enhancements.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/internal/refactoring-analysis.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/internal/search-analysis-report.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/internal/search-bug-analysis.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/internal/search-improvement-plan.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/internal/search-timing-analysis.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/internal/similarity-calculation-fix.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/prd/README.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/prd/mcp_vector_search_prd_updated.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/reference/MCP_SETUP.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/reference/README.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/reference/architecture.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/reference/cli-commands.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/reference/features.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/research/QUICK_FIX.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/research/README.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/research/automatic-setup-command-design-2025-11-30.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/research/claude-desktop-documentation-review-2025-12-02.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/research/claude-desktop-vs-code-installer-analysis-2025-12-02.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/research/code-graph-visualization-best-practices-2025-12-05.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/research/cycle-detection-analysis-2025-12-06.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/research/cytoscape-edge-error-investigation.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/research/d3-automatic-spacing-research-2025-12-05.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/research/gitignore-auto-update-implementation-2025-11-25.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/research/homebrew-token-investigation-2025-11-25.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/research/mcp-installation-bug-analysis-2025-12-01.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/research/pre-release-readiness-check-2025-12-02.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/research/screenshots/debug_simple.png +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/research/screenshots/visualization_final.png +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/research/screenshots/visualization_initial.png +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/research/search-filter-file-path-issue-analysis-2025-12-08.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/research/setup-command-design-2025-11-25.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/research/setup-installation-mcp-integration-analysis-2025-11-30.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/research/test_page.html +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/research/visualization-architecture-analysis-2025-12-06.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/research/visualization-layout-configuration-analysis-2025-12-08.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/research/visualization-server-startup-performance-issue-2025-12-08.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/research/visualization_bugs_found.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/research/visualization_debug_report.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/research/visualization_layout_test_report.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/research/visualization_test_report.json +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/research/visualization_test_report.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/research/visualization_uat_report.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/research/visualizer-filtering-analysis-2025-12-04.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/research/visualizer-issue-analysis-2025-12-03.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/summaries/py-mcp-installer-integration-test-results.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/summaries/root-node-filtering-fix-summary.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/examples/connection_pooling_example.py +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/examples/semi_automatic_reindexing_demo.py +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/mcp-vector-search-dev +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/mcp-vector-search-wrapper +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/project-template/.gitignore +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/project-template/MAKEFILE_EXTRACTION_REPORT.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/project-template/README.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/project-template/STRUCTURE.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/project-template/TEMPLATE_README.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/project-template/VERIFICATION.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/project-template/copier.yml +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/project-template/template/LICENSE.jinja +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/project-template/template/Makefile.jinja +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/project-template/template/README.md.jinja +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/project-template/template/pyproject.toml.jinja +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/pytest.ini +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/scripts/HOMEBREW_FORMULA_SUMMARY.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/scripts/HOMEBREW_QUICKSTART.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/scripts/HOMEBREW_UPDATE_QUICKREF.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/scripts/HOMEBREW_WORKFLOW.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/scripts/README.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/scripts/README_FAVICON.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/scripts/README_HOMEBREW_FORMULA.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/scripts/README_SUBMODULES.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/scripts/analyze_search_bottlenecks.py +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/scripts/benchmark_llm_models.py +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/scripts/build.sh +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/scripts/changeset.py +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/scripts/comprehensive_build.py +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/scripts/deploy-test.sh +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/scripts/dev-build.py +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/scripts/dev-setup.py +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/scripts/dev-test.sh +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/scripts/fix_linting.py +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/scripts/generate_favicon.py +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/scripts/mcp-dev +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/scripts/monitor_search_performance.py +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/scripts/publish.sh +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/scripts/quick_search_timing.py +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/scripts/reorganize-docs.sh +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/scripts/run_search_timing_tests.py +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/scripts/run_tests.py +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/scripts/search_performance_monitor.py +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/scripts/search_quality_analyzer.py +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/scripts/setup/mcp-vector-search.sh +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/scripts/setup/setup-alias.sh +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/scripts/setup-dev-mcp.sh +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/scripts/update_docs.py +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/scripts/update_homebrew_formula.py +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/scripts/update_submodules.sh +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/scripts/verify-install.sh +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/scripts/version_manager.py +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/scripts/wait_and_update_homebrew.sh +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/scripts/workflow.sh +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/security_scan_report_2025-12-02.txt +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/cli/__init__.py +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/cli/commands/__init__.py +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/cli/commands/auto_index.py +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/cli/commands/config.py +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/cli/commands/demo.py +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/cli/commands/init.py +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/cli/commands/install.py +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/cli/commands/install_old.py +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/cli/commands/mcp.py +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/cli/commands/reset.py +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/cli/commands/search.py +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/cli/commands/status.py +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/cli/commands/uninstall.py +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/cli/commands/visualize/__init__.py +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/cli/commands/visualize/cli.py +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/cli/commands/visualize/exporters/__init__.py +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/cli/commands/visualize/exporters/html_exporter.py +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/cli/commands/visualize/exporters/json_exporter.py +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/cli/commands/visualize/graph_builder.py +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/cli/commands/visualize/layout_engine.py +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/cli/commands/visualize/server.py +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/cli/commands/visualize/state_manager.py +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/cli/commands/visualize/templates/__init__.py +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/cli/commands/visualize/templates/base.py +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/cli/commands/visualize/templates/styles.py +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/cli/commands/visualize.py.original +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/cli/commands/watch.py +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/cli/didyoumean.py +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/cli/export.py +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/cli/history.py +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/cli/interactive.py +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/cli/output.py +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/cli/suggestions.py +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/config/__init__.py +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/config/constants.py +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/config/defaults.py +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/core/__init__.py +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/core/auto_indexer.py +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/core/connection_pool.py +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/core/database.py +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/core/directory_index.py +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/core/embeddings.py +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/core/exceptions.py +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/core/factory.py +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/core/git_hooks.py +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/core/indexer.py +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/core/project.py +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/core/scheduler.py +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/core/watcher.py +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/mcp/__init__.py +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/mcp/__main__.py +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/mcp/server.py +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/parsers/__init__.py +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/parsers/base.py +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/parsers/dart.py +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/parsers/html.py +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/parsers/javascript.py +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/parsers/php.py +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/parsers/python.py +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/parsers/registry.py +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/parsers/ruby.py +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/parsers/text.py +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/parsers/utils.py +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/py.typed +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/utils/__init__.py +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/utils/gitignore.py +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/utils/gitignore_updater.py +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/utils/monorepo.py +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/utils/timing.py +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/utils/version.py +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/tests/__init__.py +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/tests/conftest.py +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/tests/manual/apply_fix.sh +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/tests/manual/breadcrumb_test_results.json +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/tests/manual/bug_visualization.html +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/tests/manual/check_controls.scpt +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/tests/manual/debug_console_inspector.html +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/tests/manual/debug_network.js +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/tests/manual/get_selector_details.scpt +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/tests/manual/inspect_visualization_controls.js +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/tests/manual/investigate_visualization.py +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/tests/manual/package-lock.json +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/tests/manual/package.json +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/tests/manual/screenshot_after_wait.png +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/tests/manual/screenshot_verification.png +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/tests/manual/screenshots/01_initial_load.png +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/tests/manual/screenshots/02_node_click_1.png +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/tests/manual/screenshots/02_node_click_2.png +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/tests/manual/screenshots/03_root_button_click.png +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/tests/manual/screenshots/actual_visualization_console.png +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/tests/manual/screenshots/console_check.png +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/tests/manual/screenshots/final_view.png +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/tests/manual/screenshots/initial_view_layout.png +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/tests/manual/screenshots/json_parse_test.png +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/tests/manual/screenshots/network_tab.png +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/tests/manual/screenshots/simple_console.png +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/tests/manual/test_controls_safari.sh +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/tests/manual/test_css_fix.scpt +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/tests/manual/test_graph_large.json +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/tests/manual/test_graph_medium.json +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/tests/manual/test_graph_small.json +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/tests/manual/test_instructions.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/tests/manual/test_mcp_auto_install.sh +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/tests/manual/test_visualization.html +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/tests/manual/verification_report.json +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/tests/manual/verify_cytoscape_fix.html +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/tests/manual/verify_data_initialization_fix.py +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/tests/manual/verify_root_filtering.py +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/tests/manual/verify_streaming_load.sh +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/tests/manual/verify_visualization.py +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/tests/manual/verify_with_node.js +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/tests/manual/verify_with_wait.js +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/tests/sample_code/ast_test_javascript.js +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/tests/sample_code/ast_test_python.py +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/tests/sample_code/ast_test_typescript.ts +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/tests/unit/commands/__init__.py +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/uv.lock +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/vendor/py-mcp-installer-service/.github/workflows/ci.yml +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/vendor/py-mcp-installer-service/.gitignore +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/vendor/py-mcp-installer-service/CHANGELOG.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/vendor/py-mcp-installer-service/CONTRIBUTING.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/vendor/py-mcp-installer-service/LICENSE +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/vendor/py-mcp-installer-service/Makefile +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/vendor/py-mcp-installer-service/README.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/vendor/py-mcp-installer-service/RELEASING.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/vendor/py-mcp-installer-service/VERSION +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/vendor/py-mcp-installer-service/docs/ARCHITECTURE.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/vendor/py-mcp-installer-service/docs/DIAGRAMS.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/vendor/py-mcp-installer-service/docs/IMPLEMENTATION-PLAN.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/vendor/py-mcp-installer-service/docs/PROJECT-STRUCTURE.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/vendor/py-mcp-installer-service/docs/QUICK-REFERENCE.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/vendor/py-mcp-installer-service/docs/README.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/vendor/py-mcp-installer-service/docs/design/SUMMARY.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/vendor/py-mcp-installer-service/docs/research/mcp-server-installation-patterns-2025-12-05.md +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/vendor/py-mcp-installer-service/examples/phase3_demo.py +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/vendor/py-mcp-installer-service/scripts/manage_version.py +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/vendor/py-mcp-installer-service/scripts/release.sh +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/vendor/py-mcp-installer-service/setup.py +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/vendor/py-mcp-installer-service/src/py_mcp_installer/__init__.py +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/vendor/py-mcp-installer-service/src/py_mcp_installer/command_builder.py +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/vendor/py-mcp-installer-service/src/py_mcp_installer/config_manager.py +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/vendor/py-mcp-installer-service/src/py_mcp_installer/exceptions.py +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/vendor/py-mcp-installer-service/src/py_mcp_installer/installation_strategy.py +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/vendor/py-mcp-installer-service/src/py_mcp_installer/mcp_inspector.py +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/vendor/py-mcp-installer-service/src/py_mcp_installer/platforms/__init__.py +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/vendor/py-mcp-installer-service/src/py_mcp_installer/platforms/claude_code.py +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/vendor/py-mcp-installer-service/src/py_mcp_installer/platforms/codex.py +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/vendor/py-mcp-installer-service/src/py_mcp_installer/platforms/cursor.py +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/vendor/py-mcp-installer-service/src/py_mcp_installer/types.py +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/vendor/py-mcp-installer-service/src/py_mcp_installer/utils.py +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/vendor/py-mcp-installer-service/tests/__init__.py +0 -0
- {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/vendor/py-mcp-installer-service/tests/platforms/__init__.py +0 -0
|
@@ -7,6 +7,72 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [0.15.13] - 2025-12-08
|
|
11
|
+
|
|
12
|
+
### Fixed
|
|
13
|
+
- **Updated py-mcp-installer dependency to 0.1.1**
|
|
14
|
+
- Now requires py-mcp-installer>=0.1.1 which includes the platform forcing fix
|
|
15
|
+
- Fixes "Platform not supported: claude_code" error during `mcp-vector-search setup`
|
|
16
|
+
- Users must upgrade to get the fix: `pipx upgrade mcp-vector-search`
|
|
17
|
+
|
|
18
|
+
## [0.15.12] - 2025-12-08
|
|
19
|
+
|
|
20
|
+
### Fixed
|
|
21
|
+
- **`--version` flag now works correctly**
|
|
22
|
+
- Fixed "Error: Missing command" when running `mcp-vector-search --version`
|
|
23
|
+
- Added `is_eager=True` callback for version flag to process before command parsing
|
|
24
|
+
- The `-v` short form also works now
|
|
25
|
+
|
|
26
|
+
## [0.15.11] - 2025-12-08
|
|
27
|
+
|
|
28
|
+
### Fixed
|
|
29
|
+
- **MCP installer platform forcing bug**
|
|
30
|
+
- Fixed error "Platform not supported: claude_code" when forcing a platform
|
|
31
|
+
- Now correctly detects info for the specific forced platform
|
|
32
|
+
- Previously failed when another platform had higher confidence
|
|
33
|
+
- Added `detect_for_platform()` method to PlatformDetector
|
|
34
|
+
|
|
35
|
+
## [0.15.10] - 2025-12-08
|
|
36
|
+
|
|
37
|
+
### Added
|
|
38
|
+
- **`--think` flag for chat command**
|
|
39
|
+
- Uses advanced models for complex queries (gpt-4o / claude-sonnet-4)
|
|
40
|
+
- Better reasoning capabilities for architectural and design questions
|
|
41
|
+
- Higher cost but more thorough analysis
|
|
42
|
+
- Example: `mcp-vector-search chat "explain the authentication flow" --think`
|
|
43
|
+
|
|
44
|
+
## [0.15.9] - 2025-12-08
|
|
45
|
+
|
|
46
|
+
### Added
|
|
47
|
+
- **`--files` filter support for chat command**
|
|
48
|
+
- Filter chat results by file glob patterns (e.g., `--files "*.py"`)
|
|
49
|
+
- Works the same as the search command's `--files` option
|
|
50
|
+
- Examples: `chat "how does validation work?" --files "src/*.py"`
|
|
51
|
+
|
|
52
|
+
## [0.15.8] - 2025-12-08
|
|
53
|
+
|
|
54
|
+
### Fixed
|
|
55
|
+
- **Graceful handling of missing files during search**
|
|
56
|
+
- Changed noisy WARNING logs to silent DEBUG level for missing files
|
|
57
|
+
- Files deleted since indexing no longer spam warnings
|
|
58
|
+
- Added `file_missing` flag to SearchResult for optional filtering
|
|
59
|
+
- Hint: Use `mcp-vector-search index --force` to refresh stale index
|
|
60
|
+
|
|
61
|
+
## [0.15.7] - 2025-12-08
|
|
62
|
+
|
|
63
|
+
### Fixed
|
|
64
|
+
- **Index command crash: "name 'project_root' is not defined"**
|
|
65
|
+
- Fixed undefined variable reference in "Ready to Search" panel code
|
|
66
|
+
- Changed `project_root` to `indexer.project_root`
|
|
67
|
+
|
|
68
|
+
## [0.15.6] - 2025-12-08
|
|
69
|
+
|
|
70
|
+
### Added
|
|
71
|
+
- **Chat command shown in "Ready to Search" panel** after indexing completes
|
|
72
|
+
- Displays LLM configuration status (✓ OpenAI or ✓ OpenRouter when configured)
|
|
73
|
+
- Shows "(requires API key)" hint when no LLM is configured
|
|
74
|
+
- Helps users discover the chat feature immediately after setup
|
|
75
|
+
|
|
10
76
|
## [0.15.5] - 2025-12-08
|
|
11
77
|
|
|
12
78
|
### Fixed
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: mcp-vector-search
|
|
3
|
-
Version: 0.15.
|
|
3
|
+
Version: 0.15.13
|
|
4
4
|
Summary: CLI-first semantic code search with MCP integration and interactive D3.js visualization for exploring code relationships
|
|
5
5
|
Project-URL: Homepage, https://github.com/bobmatnyc/mcp-vector-search
|
|
6
6
|
Project-URL: Documentation, https://mcp-vector-search.readthedocs.io
|
|
@@ -49,7 +49,7 @@ Requires-Dist: httpx>=0.25.0
|
|
|
49
49
|
Requires-Dist: loguru>=0.7.0
|
|
50
50
|
Requires-Dist: mcp>=1.12.4
|
|
51
51
|
Requires-Dist: packaging>=23.0
|
|
52
|
-
Requires-Dist: py-mcp-installer>=0.1.
|
|
52
|
+
Requires-Dist: py-mcp-installer>=0.1.1
|
|
53
53
|
Requires-Dist: pydantic-settings>=2.1.0
|
|
54
54
|
Requires-Dist: pydantic>=2.5.0
|
|
55
55
|
Requires-Dist: rich>=13.0.0
|
|
@@ -0,0 +1,333 @@
|
|
|
1
|
+
# OpenAI API Integration
|
|
2
|
+
|
|
3
|
+
**Date**: December 8, 2025
|
|
4
|
+
**Status**: ✅ Completed
|
|
5
|
+
|
|
6
|
+
## Overview
|
|
7
|
+
|
|
8
|
+
Added OpenAI API support alongside OpenRouter for the `chat` command, giving users flexibility to choose their preferred LLM provider.
|
|
9
|
+
|
|
10
|
+
## What Changed
|
|
11
|
+
|
|
12
|
+
### 1. **Core LLM Client** (`src/mcp_vector_search/core/llm_client.py`)
|
|
13
|
+
|
|
14
|
+
**Changes:**
|
|
15
|
+
- Added support for both OpenAI and OpenRouter APIs
|
|
16
|
+
- Auto-detection of provider based on available API keys
|
|
17
|
+
- Provider-specific defaults:
|
|
18
|
+
- OpenAI: `gpt-4o-mini` (comparable to `claude-3-haiku`)
|
|
19
|
+
- OpenRouter: `anthropic/claude-3-haiku`
|
|
20
|
+
|
|
21
|
+
**Key Features:**
|
|
22
|
+
- **Provider Selection Priority**:
|
|
23
|
+
1. Explicit `provider` parameter
|
|
24
|
+
2. Preferred provider from config
|
|
25
|
+
3. Auto-detect: OpenAI if available, otherwise OpenRouter
|
|
26
|
+
- **Backward Compatibility**: Existing `api_key` parameter still works (assumes OpenRouter)
|
|
27
|
+
- **Environment Variables**:
|
|
28
|
+
- `OPENAI_API_KEY` for OpenAI
|
|
29
|
+
- `OPENROUTER_API_KEY` for OpenRouter
|
|
30
|
+
|
|
31
|
+
**New Class Attributes:**
|
|
32
|
+
```python
|
|
33
|
+
DEFAULT_MODELS = {
|
|
34
|
+
"openai": "gpt-4o-mini",
|
|
35
|
+
"openrouter": "anthropic/claude-3-haiku"
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
API_ENDPOINTS = {
|
|
39
|
+
"openai": "https://api.openai.com/v1/chat/completions",
|
|
40
|
+
"openrouter": "https://openrouter.ai/api/v1/chat/completions"
|
|
41
|
+
}
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
**Constructor Signature:**
|
|
45
|
+
```python
|
|
46
|
+
def __init__(
|
|
47
|
+
self,
|
|
48
|
+
api_key: str | None = None, # Deprecated
|
|
49
|
+
model: str | None = None,
|
|
50
|
+
timeout: float = TIMEOUT_SECONDS,
|
|
51
|
+
provider: LLMProvider | None = None, # NEW
|
|
52
|
+
openai_api_key: str | None = None, # NEW
|
|
53
|
+
openrouter_api_key: str | None = None, # NEW
|
|
54
|
+
) -> None:
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
### 2. **Configuration Storage** (`src/mcp_vector_search/core/config_utils.py`)
|
|
58
|
+
|
|
59
|
+
**New Functions:**
|
|
60
|
+
- `get_openai_api_key(config_dir)` - Get OpenAI key from env or config
|
|
61
|
+
- `save_openai_api_key(api_key, config_dir)` - Save OpenAI key to config
|
|
62
|
+
- `delete_openai_api_key(config_dir)` - Delete OpenAI key from config
|
|
63
|
+
- `get_preferred_llm_provider(config_dir)` - Get preferred provider
|
|
64
|
+
- `save_preferred_llm_provider(provider, config_dir)` - Set preferred provider
|
|
65
|
+
|
|
66
|
+
**Priority Order:**
|
|
67
|
+
1. Environment variable (e.g., `OPENAI_API_KEY`)
|
|
68
|
+
2. Config file (`~/.mcp-vector-search/config.json`)
|
|
69
|
+
|
|
70
|
+
### 3. **Settings Schema** (`src/mcp_vector_search/config/settings.py`)
|
|
71
|
+
|
|
72
|
+
**New Fields:**
|
|
73
|
+
```python
|
|
74
|
+
openai_api_key: str | None = Field(
|
|
75
|
+
default=None,
|
|
76
|
+
description="OpenAI API key for chat command (optional, can also use env var)"
|
|
77
|
+
)
|
|
78
|
+
preferred_llm_provider: str | None = Field(
|
|
79
|
+
default=None,
|
|
80
|
+
description="Preferred LLM provider: 'openai' or 'openrouter' (auto-detect if not set)"
|
|
81
|
+
)
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
### 4. **Chat Command** (`src/mcp_vector_search/cli/commands/chat.py`)
|
|
85
|
+
|
|
86
|
+
**New Options:**
|
|
87
|
+
- `--provider`: Force specific provider (`openai` or `openrouter`)
|
|
88
|
+
|
|
89
|
+
**Example Usage:**
|
|
90
|
+
```bash
|
|
91
|
+
# Auto-detect provider (OpenAI preferred if both keys set)
|
|
92
|
+
mcp-vector-search chat "where is similarity_threshold set?"
|
|
93
|
+
|
|
94
|
+
# Force OpenAI
|
|
95
|
+
mcp-vector-search chat "question" --provider openai
|
|
96
|
+
|
|
97
|
+
# Force OpenRouter
|
|
98
|
+
mcp-vector-search chat "question" --provider openrouter
|
|
99
|
+
|
|
100
|
+
# Custom model
|
|
101
|
+
mcp-vector-search chat "question" --model gpt-4o
|
|
102
|
+
mcp-vector-search chat "question" --model anthropic/claude-3.5-sonnet
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
**Updated Help Text:**
|
|
106
|
+
- Now mentions both OpenAI and OpenRouter
|
|
107
|
+
- Shows examples for both providers
|
|
108
|
+
- Clarifies auto-detection behavior
|
|
109
|
+
|
|
110
|
+
### 5. **Setup Command** (`src/mcp_vector_search/cli/commands/setup.py`)
|
|
111
|
+
|
|
112
|
+
**New Function:** `setup_llm_api_keys(project_root, interactive=True)`
|
|
113
|
+
|
|
114
|
+
**Interactive Setup Menu:**
|
|
115
|
+
```
|
|
116
|
+
LLM API Key Setup
|
|
117
|
+
|
|
118
|
+
The 'chat' command uses AI to answer questions about your code.
|
|
119
|
+
You can use OpenAI or OpenRouter (or both).
|
|
120
|
+
|
|
121
|
+
Current Configuration:
|
|
122
|
+
• OpenAI: sk-or...abc1 (config file)
|
|
123
|
+
• OpenRouter: not configured
|
|
124
|
+
• Preferred: openai
|
|
125
|
+
|
|
126
|
+
Options:
|
|
127
|
+
1. Configure OpenAI (recommended, fast & cheap)
|
|
128
|
+
2. Configure OpenRouter
|
|
129
|
+
3. Set preferred provider
|
|
130
|
+
4. Skip / Keep current
|
|
131
|
+
|
|
132
|
+
Select option (1-4):
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
**Helper Function:** `_setup_single_provider()`
|
|
136
|
+
- Handles setup for individual providers
|
|
137
|
+
- Supports adding, updating, and clearing API keys
|
|
138
|
+
- Shows obfuscated keys for security
|
|
139
|
+
|
|
140
|
+
## Configuration Storage
|
|
141
|
+
|
|
142
|
+
API keys are stored in `~/.mcp-vector-search/config.json`:
|
|
143
|
+
|
|
144
|
+
```json
|
|
145
|
+
{
|
|
146
|
+
"openai_api_key": "sk-...",
|
|
147
|
+
"openrouter_api_key": "sk-or-...",
|
|
148
|
+
"preferred_llm_provider": "openai"
|
|
149
|
+
}
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
**Security:**
|
|
153
|
+
- File permissions: `0600` (owner read/write only)
|
|
154
|
+
- Keys are obfuscated in UI: `sk-or...abc1234`
|
|
155
|
+
- Environment variables take precedence
|
|
156
|
+
|
|
157
|
+
## Provider Comparison
|
|
158
|
+
|
|
159
|
+
| Feature | OpenAI | OpenRouter |
|
|
160
|
+
|---------|--------|------------|
|
|
161
|
+
| **Default Model** | `gpt-4o-mini` | `anthropic/claude-3-haiku` |
|
|
162
|
+
| **Speed** | Fast | Fast |
|
|
163
|
+
| **Cost** | Very cheap | Very cheap |
|
|
164
|
+
| **Setup** | https://platform.openai.com/api-keys | https://openrouter.ai/keys |
|
|
165
|
+
| **Environment Variable** | `OPENAI_API_KEY` | `OPENROUTER_API_KEY` |
|
|
166
|
+
|
|
167
|
+
**Model Equivalents:**
|
|
168
|
+
- OpenRouter `anthropic/claude-3-haiku` ≈ OpenAI `gpt-4o-mini`
|
|
169
|
+
- OpenRouter `anthropic/claude-3.5-sonnet` ≈ OpenAI `gpt-4o`
|
|
170
|
+
|
|
171
|
+
## Migration Guide
|
|
172
|
+
|
|
173
|
+
### From OpenRouter-only to Both Providers
|
|
174
|
+
|
|
175
|
+
**Before (OpenRouter only):**
|
|
176
|
+
```bash
|
|
177
|
+
export OPENROUTER_API_KEY="sk-or-..."
|
|
178
|
+
mcp-vector-search chat "question"
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
**After (with OpenAI support):**
|
|
182
|
+
```bash
|
|
183
|
+
# Option A: Use OpenAI instead
|
|
184
|
+
export OPENAI_API_KEY="sk-..."
|
|
185
|
+
mcp-vector-search chat "question" # Auto-detects OpenAI
|
|
186
|
+
|
|
187
|
+
# Option B: Use both (OpenAI preferred by default)
|
|
188
|
+
export OPENAI_API_KEY="sk-..."
|
|
189
|
+
export OPENROUTER_API_KEY="sk-or-..."
|
|
190
|
+
mcp-vector-search chat "question" # Uses OpenAI
|
|
191
|
+
|
|
192
|
+
# Option C: Use both, force OpenRouter
|
|
193
|
+
export OPENAI_API_KEY="sk-..."
|
|
194
|
+
export OPENROUTER_API_KEY="sk-or-..."
|
|
195
|
+
mcp-vector-search chat "question" --provider openrouter
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
### Backward Compatibility
|
|
199
|
+
|
|
200
|
+
**Old code still works:**
|
|
201
|
+
```python
|
|
202
|
+
from mcp_vector_search.core.llm_client import LLMClient
|
|
203
|
+
|
|
204
|
+
# Old way (still supported, assumes OpenRouter)
|
|
205
|
+
client = LLMClient(api_key="sk-or-...")
|
|
206
|
+
|
|
207
|
+
# New way (explicit provider)
|
|
208
|
+
client = LLMClient(
|
|
209
|
+
openrouter_api_key="sk-or-...",
|
|
210
|
+
provider="openrouter"
|
|
211
|
+
)
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
## Testing
|
|
215
|
+
|
|
216
|
+
### Manual Testing Checklist
|
|
217
|
+
|
|
218
|
+
- [ ] **OpenAI API Key Setup**
|
|
219
|
+
- [ ] Environment variable: `export OPENAI_API_KEY="sk-..."`
|
|
220
|
+
- [ ] Config file: `mcp-vector-search setup` → Option 1
|
|
221
|
+
- [ ] Verify chat works: `mcp-vector-search chat "test"`
|
|
222
|
+
|
|
223
|
+
- [ ] **OpenRouter API Key Setup**
|
|
224
|
+
- [ ] Environment variable: `export OPENROUTER_API_KEY="sk-or-..."`
|
|
225
|
+
- [ ] Config file: `mcp-vector-search setup` → Option 2
|
|
226
|
+
- [ ] Verify chat works: `mcp-vector-search chat "test"`
|
|
227
|
+
|
|
228
|
+
- [ ] **Provider Selection**
|
|
229
|
+
- [ ] Auto-detect (OpenAI preferred if both set)
|
|
230
|
+
- [ ] Force OpenAI: `--provider openai`
|
|
231
|
+
- [ ] Force OpenRouter: `--provider openrouter`
|
|
232
|
+
- [ ] Set preferred in setup: Option 3
|
|
233
|
+
|
|
234
|
+
- [ ] **Error Handling**
|
|
235
|
+
- [ ] No API key → Clear error message with instructions
|
|
236
|
+
- [ ] Invalid provider → Validation error
|
|
237
|
+
- [ ] Wrong API key → 401 error with helpful message
|
|
238
|
+
|
|
239
|
+
- [ ] **Backward Compatibility**
|
|
240
|
+
- [ ] Existing OpenRouter users can continue without changes
|
|
241
|
+
- [ ] Old `api_key` parameter still works
|
|
242
|
+
|
|
243
|
+
### Example Test Commands
|
|
244
|
+
|
|
245
|
+
```bash
|
|
246
|
+
# Test OpenAI
|
|
247
|
+
export OPENAI_API_KEY="your-key"
|
|
248
|
+
mcp-vector-search chat "where is the similarity_threshold parameter set?"
|
|
249
|
+
|
|
250
|
+
# Test OpenRouter
|
|
251
|
+
export OPENROUTER_API_KEY="your-key"
|
|
252
|
+
mcp-vector-search chat "where is the similarity_threshold parameter set?" --provider openrouter
|
|
253
|
+
|
|
254
|
+
# Test auto-detection (both keys set)
|
|
255
|
+
export OPENAI_API_KEY="your-key"
|
|
256
|
+
export OPENROUTER_API_KEY="your-key"
|
|
257
|
+
mcp-vector-search chat "test" # Should use OpenAI
|
|
258
|
+
|
|
259
|
+
# Test provider override
|
|
260
|
+
mcp-vector-search chat "test" --provider openrouter # Should use OpenRouter
|
|
261
|
+
```
|
|
262
|
+
|
|
263
|
+
## Files Modified
|
|
264
|
+
|
|
265
|
+
1. **`src/mcp_vector_search/core/llm_client.py`** - Multi-provider LLM client
|
|
266
|
+
2. **`src/mcp_vector_search/core/config_utils.py`** - OpenAI key storage functions
|
|
267
|
+
3. **`src/mcp_vector_search/config/settings.py`** - New config fields
|
|
268
|
+
4. **`src/mcp_vector_search/cli/commands/setup.py`** - Interactive setup for both providers
|
|
269
|
+
5. **`src/mcp_vector_search/cli/commands/chat.py`** - Provider selection support
|
|
270
|
+
|
|
271
|
+
## Design Decisions
|
|
272
|
+
|
|
273
|
+
### Why Auto-detect OpenAI First?
|
|
274
|
+
|
|
275
|
+
**Decision**: When both API keys are present, prefer OpenAI by default.
|
|
276
|
+
|
|
277
|
+
**Rationale**:
|
|
278
|
+
1. **Wider Adoption**: More developers already have OpenAI accounts
|
|
279
|
+
2. **Simpler**: Direct API vs. proxy service
|
|
280
|
+
3. **Performance**: No proxy overhead
|
|
281
|
+
4. **User Expectation**: Most expect OpenAI when both are available
|
|
282
|
+
|
|
283
|
+
**Override**: Users can set `preferred_llm_provider` in config or use `--provider` flag.
|
|
284
|
+
|
|
285
|
+
### Why Keep OpenRouter?
|
|
286
|
+
|
|
287
|
+
**Decision**: Maintain full support for OpenRouter alongside OpenAI.
|
|
288
|
+
|
|
289
|
+
**Rationale**:
|
|
290
|
+
1. **Existing Users**: Don't break backward compatibility
|
|
291
|
+
2. **Model Access**: OpenRouter provides access to Claude models
|
|
292
|
+
3. **Flexibility**: Some users prefer unified billing across providers
|
|
293
|
+
4. **Future-Proofing**: Easy to add more providers later
|
|
294
|
+
|
|
295
|
+
### Why Not Use `litellm` Library?
|
|
296
|
+
|
|
297
|
+
**Decision**: Direct API integration instead of `litellm`.
|
|
298
|
+
|
|
299
|
+
**Rationale**:
|
|
300
|
+
1. **Zero Dependencies**: Keep package lightweight
|
|
301
|
+
2. **Simple Use Case**: Only need chat completions, not streaming/embeddings
|
|
302
|
+
3. **Control**: Direct control over error handling and retry logic
|
|
303
|
+
4. **Maintenance**: Less external dependency risk
|
|
304
|
+
|
|
305
|
+
## Future Enhancements
|
|
306
|
+
|
|
307
|
+
### Potential Additions:
|
|
308
|
+
|
|
309
|
+
1. **More Providers**:
|
|
310
|
+
- Anthropic Direct API
|
|
311
|
+
- Azure OpenAI
|
|
312
|
+
- Local models (Ollama)
|
|
313
|
+
|
|
314
|
+
2. **Model Auto-Selection**:
|
|
315
|
+
- Choose model based on query complexity
|
|
316
|
+
- Cost optimization
|
|
317
|
+
|
|
318
|
+
3. **Streaming Responses**:
|
|
319
|
+
- Real-time response display
|
|
320
|
+
- Better UX for long queries
|
|
321
|
+
|
|
322
|
+
4. **Caching**:
|
|
323
|
+
- Cache LLM responses for identical queries
|
|
324
|
+
- Reduce API costs
|
|
325
|
+
|
|
326
|
+
## Notes
|
|
327
|
+
|
|
328
|
+
- ✅ All syntax checks pass
|
|
329
|
+
- ✅ Backward compatible with existing OpenRouter users
|
|
330
|
+
- ✅ Environment variables take precedence over config file
|
|
331
|
+
- ✅ Secure config file storage (0600 permissions)
|
|
332
|
+
- ✅ Clear error messages for missing keys
|
|
333
|
+
- ✅ Interactive setup with user-friendly prompts
|