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.
Files changed (409) hide show
  1. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/CHANGELOG.md +66 -0
  2. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/PKG-INFO +2 -2
  3. mcp_vector_search-0.15.13/docs/development/OPENAI_API_INTEGRATION.md +333 -0
  4. mcp_vector_search-0.15.13/docs/development/ROOT_BREADCRUMB_FIX.md +305 -0
  5. mcp_vector_search-0.15.13/docs/development/d3js-tree-integration.md +310 -0
  6. mcp_vector_search-0.15.13/docs/development/mcp-installer-platform-forcing-fix.md +179 -0
  7. mcp_vector_search-0.15.13/docs/guides/CHAT_COMMAND_SETUP.md +333 -0
  8. mcp_vector_search-0.15.13/docs/research/dotfile-configuration-research-2025-12-08.md +542 -0
  9. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/pyproject.toml +1 -1
  10. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/__init__.py +2 -2
  11. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/cli/commands/chat.py +159 -32
  12. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/cli/commands/index.py +18 -0
  13. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/cli/commands/setup.py +345 -7
  14. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/cli/commands/visualize/templates/scripts.py +442 -120
  15. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/cli/main.py +13 -3
  16. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/config/settings.py +8 -0
  17. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/core/config_utils.py +112 -1
  18. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/core/llm_client.py +118 -27
  19. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/core/models.py +3 -0
  20. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/core/search.py +5 -0
  21. mcp_vector_search-0.15.13/tests/manual/test_d3_integration.md +226 -0
  22. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/vendor/py-mcp-installer-service/pyproject.toml +1 -1
  23. {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
  24. {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
  25. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/.github/workflows/ci.yml +0 -0
  26. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/.github/workflows/update-homebrew.yml +0 -0
  27. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/.gitignore +0 -0
  28. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/.pre-commit-config.yaml +0 -0
  29. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/CLAUDE.md +0 -0
  30. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/DEPLOYMENT.md +0 -0
  31. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/LICENSE +0 -0
  32. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/Makefile +0 -0
  33. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/Makefile.backup.20251208_135237 +0 -0
  34. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/README.md +0 -0
  35. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/dev-mcp +0 -0
  36. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/DOCUMENTATION-STANDARDS.md +0 -0
  37. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/_archive/CLAUDE_20251009_pre_mpm_init.md +0 -0
  38. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/_archive/CLAUDE_MPM_INIT_SUMMARY_20251009.md +0 -0
  39. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/_archive/DEPLOY.md +0 -0
  40. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/_archive/ENGINEER_TASK.md +0 -0
  41. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/_archive/INSTALL.md +0 -0
  42. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/_archive/MPM_INIT_EXECUTIVE_SUMMARY.md +0 -0
  43. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/_archive/README.md +0 -0
  44. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/_archive/implementation-reports/README.md +0 -0
  45. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/_archive/implementation-reports/compact_folder_layout_deliverables.md +0 -0
  46. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/_archive/implementation-reports/compact_folder_layout_summary.md +0 -0
  47. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/_archive/implementation-reports/visualization_compact_folders_implementation.md +0 -0
  48. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/_archive/implementation-reports/visualization_compact_layout_fixes.md +0 -0
  49. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/_archive/implementation-reports/visualization_enhancements_code_review.md +0 -0
  50. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/_archive/implementation-reports/visualization_enhancements_summary.md +0 -0
  51. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/_archive/implementation-reports/visualization_implementation_plan.md +0 -0
  52. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/_archive/implementation-reports/visualization_implementation_summary.md +0 -0
  53. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/_archive/implementation-reports/visualization_improvements_spec.md +0 -0
  54. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/_archive/implementation-reports/visualization_test_report.md +0 -0
  55. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/_archive/implementation-reports/visualization_verification_report.md +0 -0
  56. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/_archive/summaries/BREADCRUMB_BUG_TEST_REPORT.md +0 -0
  57. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/_archive/summaries/CRITICAL_BUG_REPORT_visibleNodes_initialization.md +0 -0
  58. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/_archive/summaries/DOCUMENTATION_REORGANIZATION_COMPLETE.md +0 -0
  59. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/_archive/summaries/HOMEBREW_INTEGRATION_SUMMARY.md +0 -0
  60. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/_archive/summaries/HOMEBREW_INTEGRATION_USAGE.md +0 -0
  61. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/_archive/summaries/HOMEBREW_TAP_UPDATE_STATUS.md +0 -0
  62. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/_archive/summaries/HOMEBREW_TAP_UPDATE_SUMMARY.md +0 -0
  63. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/_archive/summaries/HOMEBREW_TEST_RESULTS.md +0 -0
  64. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/_archive/summaries/INVESTIGATION_REPORT_empty_nodes.md +0 -0
  65. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/_archive/summaries/LAYOUT_TEST_FAILURE_SUMMARY.md +0 -0
  66. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/_archive/summaries/MCP_AUTO_INSTALLATION_SUMMARY.md +0 -0
  67. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/_archive/summaries/PERFORMANCE_OPTIMIZATION_SUMMARY.md +0 -0
  68. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/_archive/summaries/PROJECT_CLEANUP_SUMMARY.md +0 -0
  69. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/_archive/summaries/QUICK_VERIFICATION_SUMMARY.md +0 -0
  70. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/_archive/summaries/README.md +0 -0
  71. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/_archive/summaries/REORGANIZATION_PLAN.md +0 -0
  72. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/_archive/summaries/REORGANIZATION_SUMMARY.md +0 -0
  73. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/_archive/summaries/breadcrumb_navigation_implementation.md +0 -0
  74. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/_archive/summaries/code_chunks_feature_summary.md +0 -0
  75. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/_archive/summaries/code_chunks_user_guide.md +0 -0
  76. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/_archive/summaries/cytoscape_fix_verification.md +0 -0
  77. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/_archive/summaries/llm-benchmark-implementation.md +0 -0
  78. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/_archive/summaries/mcp_installer_migration_complete.md +0 -0
  79. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/_archive/summaries/mcp_installer_migration_plan.md +0 -0
  80. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/_archive/summaries/submodule_integration_summary.md +0 -0
  81. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/_archive/summaries/visualization-controls-diagnosis.md +0 -0
  82. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/_archive/summaries/visualization_automatic_spacing_spinner_implementation.md +0 -0
  83. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/_archive/summaries/visualization_cli_fix_summary.md +0 -0
  84. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/_archive/summaries/visualization_enhancements_implementation.md +0 -0
  85. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/_archive/summaries/visualization_enhancements_test_results.md +0 -0
  86. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/_archive/summaries/visualization_enhancements_user_guide.md +0 -0
  87. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/_archive/summaries/visualization_optimization_summary.md +0 -0
  88. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/_archive/test-suite-summary.md +0 -0
  89. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/_archive/testing-strategy.md +0 -0
  90. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/advanced/README.md +0 -0
  91. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/advanced/troubleshooting.md +0 -0
  92. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/architecture/README.md +0 -0
  93. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/architecture/database-optimization.md +0 -0
  94. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/architecture/indexing-workflow.md +0 -0
  95. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/architecture/performance.md +0 -0
  96. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/configuration/README.md +0 -0
  97. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/deployment/CHANGELOG.md +0 -0
  98. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/deployment/HOMEBREW_INTEGRATION.md +0 -0
  99. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/deployment/HOMEBREW_QUICKSTART.md +0 -0
  100. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/deployment/README.md +0 -0
  101. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/deployment/RELEASES.md +0 -0
  102. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/deployment/VERSIONING_WORKFLOW.md +0 -0
  103. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/development/BUGFIX_VISUALIZATION_DATA_INIT.md +0 -0
  104. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/development/FULL_TREE_FAN_VISUALIZATION.md +0 -0
  105. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/development/MCP_AUTO_INSTALLATION_IMPLEMENTATION.md +0 -0
  106. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/development/PHASE1_STATE_MANAGEMENT_COMPLETE.md +0 -0
  107. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/development/README.md +0 -0
  108. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/development/STREAMING_JSON_IMPLEMENTATION.md +0 -0
  109. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/development/TREE_LAYOUT_IMPLEMENTATION.md +0 -0
  110. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/development/TWO_PHASE_LAYOUT_IMPLEMENTATION.md +0 -0
  111. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/development/VISUALIZATION_ARCHITECTURE_V2.md +0 -0
  112. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/development/VISUALIZATION_ARCHITECTURE_V2_SUMMARY.md +0 -0
  113. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/development/VISUALIZATION_V2_CHECKLIST.md +0 -0
  114. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/development/VISUALIZATION_V2_DIAGRAMS.md +0 -0
  115. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/development/VISUALIZATION_V2_IMPLEMENTATION_SUMMARY.md +0 -0
  116. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/development/VISUALIZATION_V2_INDEX.md +0 -0
  117. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/development/api.md +0 -0
  118. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/development/architecture.md +0 -0
  119. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/development/ast_circular_dependency_fix.md +0 -0
  120. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/development/code-quality.md +0 -0
  121. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/development/contributing.md +0 -0
  122. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/development/duplicate-node-rendering-fix.md +0 -0
  123. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/development/fix-visibleNodes-initialization.md +0 -0
  124. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/development/glob-pattern-fix-summary.md +0 -0
  125. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/development/hybrid-visualization-frontend-integration.md +0 -0
  126. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/development/mcp-installation-bug-fix-2025-12-01.md +0 -0
  127. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/development/monorepo-detection-fix.md +0 -0
  128. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/development/openrouter-setup-demo.md +0 -0
  129. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/development/openrouter-setup-enhancement.md +0 -0
  130. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/development/project-organization.md +0 -0
  131. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/development/root-node-filtering-fix.md +0 -0
  132. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/development/setup-api-key-interactive-prompt-fix.md +0 -0
  133. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/development/setup.md +0 -0
  134. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/development/testing.md +0 -0
  135. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/development/tree-navigation-test-guide.md +0 -0
  136. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/development/versioning.md +0 -0
  137. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/examples/README.md +0 -0
  138. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/examples/benchmark-output-example.md +0 -0
  139. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/getting-started/README.md +0 -0
  140. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/getting-started/configuration.md +0 -0
  141. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/getting-started/first-steps.md +0 -0
  142. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/getting-started/installation.md +0 -0
  143. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/guides/MCP_AUTO_INSTALLATION.md +0 -0
  144. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/guides/README.md +0 -0
  145. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/guides/api-key-storage.md +0 -0
  146. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/guides/chat-command.md +0 -0
  147. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/guides/cli-usage.md +0 -0
  148. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/guides/file-watching.md +0 -0
  149. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/guides/indexing.md +0 -0
  150. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/guides/llm-benchmarking.md +0 -0
  151. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/guides/mcp-integration.md +0 -0
  152. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/guides/searching.md +0 -0
  153. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/index.md +0 -0
  154. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/internal/README.md +0 -0
  155. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/internal/improvements.md +0 -0
  156. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/internal/install-enhancements.md +0 -0
  157. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/internal/refactoring-analysis.md +0 -0
  158. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/internal/search-analysis-report.md +0 -0
  159. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/internal/search-bug-analysis.md +0 -0
  160. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/internal/search-improvement-plan.md +0 -0
  161. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/internal/search-timing-analysis.md +0 -0
  162. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/internal/similarity-calculation-fix.md +0 -0
  163. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/prd/README.md +0 -0
  164. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/prd/mcp_vector_search_prd_updated.md +0 -0
  165. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/reference/MCP_SETUP.md +0 -0
  166. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/reference/README.md +0 -0
  167. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/reference/architecture.md +0 -0
  168. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/reference/cli-commands.md +0 -0
  169. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/reference/features.md +0 -0
  170. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/research/QUICK_FIX.md +0 -0
  171. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/research/README.md +0 -0
  172. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/research/automatic-setup-command-design-2025-11-30.md +0 -0
  173. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/research/claude-desktop-documentation-review-2025-12-02.md +0 -0
  174. {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
  175. {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
  176. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/research/cycle-detection-analysis-2025-12-06.md +0 -0
  177. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/research/cytoscape-edge-error-investigation.md +0 -0
  178. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/research/d3-automatic-spacing-research-2025-12-05.md +0 -0
  179. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/research/gitignore-auto-update-implementation-2025-11-25.md +0 -0
  180. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/research/homebrew-token-investigation-2025-11-25.md +0 -0
  181. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/research/mcp-installation-bug-analysis-2025-12-01.md +0 -0
  182. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/research/pre-release-readiness-check-2025-12-02.md +0 -0
  183. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/research/screenshots/debug_simple.png +0 -0
  184. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/research/screenshots/visualization_final.png +0 -0
  185. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/research/screenshots/visualization_initial.png +0 -0
  186. {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
  187. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/research/setup-command-design-2025-11-25.md +0 -0
  188. {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
  189. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/research/test_page.html +0 -0
  190. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/research/visualization-architecture-analysis-2025-12-06.md +0 -0
  191. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/research/visualization-layout-configuration-analysis-2025-12-08.md +0 -0
  192. {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
  193. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/research/visualization_bugs_found.md +0 -0
  194. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/research/visualization_debug_report.md +0 -0
  195. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/research/visualization_layout_test_report.md +0 -0
  196. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/research/visualization_test_report.json +0 -0
  197. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/research/visualization_test_report.md +0 -0
  198. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/research/visualization_uat_report.md +0 -0
  199. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/research/visualizer-filtering-analysis-2025-12-04.md +0 -0
  200. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/research/visualizer-issue-analysis-2025-12-03.md +0 -0
  201. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/summaries/py-mcp-installer-integration-test-results.md +0 -0
  202. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/docs/summaries/root-node-filtering-fix-summary.md +0 -0
  203. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/examples/connection_pooling_example.py +0 -0
  204. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/examples/semi_automatic_reindexing_demo.py +0 -0
  205. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/mcp-vector-search-dev +0 -0
  206. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/mcp-vector-search-wrapper +0 -0
  207. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/project-template/.gitignore +0 -0
  208. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/project-template/MAKEFILE_EXTRACTION_REPORT.md +0 -0
  209. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/project-template/README.md +0 -0
  210. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/project-template/STRUCTURE.md +0 -0
  211. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/project-template/TEMPLATE_README.md +0 -0
  212. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/project-template/VERIFICATION.md +0 -0
  213. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/project-template/copier.yml +0 -0
  214. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/project-template/template/LICENSE.jinja +0 -0
  215. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/project-template/template/Makefile.jinja +0 -0
  216. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/project-template/template/README.md.jinja +0 -0
  217. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/project-template/template/pyproject.toml.jinja +0 -0
  218. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/pytest.ini +0 -0
  219. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/scripts/HOMEBREW_FORMULA_SUMMARY.md +0 -0
  220. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/scripts/HOMEBREW_QUICKSTART.md +0 -0
  221. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/scripts/HOMEBREW_UPDATE_QUICKREF.md +0 -0
  222. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/scripts/HOMEBREW_WORKFLOW.md +0 -0
  223. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/scripts/README.md +0 -0
  224. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/scripts/README_FAVICON.md +0 -0
  225. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/scripts/README_HOMEBREW_FORMULA.md +0 -0
  226. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/scripts/README_SUBMODULES.md +0 -0
  227. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/scripts/analyze_search_bottlenecks.py +0 -0
  228. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/scripts/benchmark_llm_models.py +0 -0
  229. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/scripts/build.sh +0 -0
  230. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/scripts/changeset.py +0 -0
  231. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/scripts/comprehensive_build.py +0 -0
  232. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/scripts/deploy-test.sh +0 -0
  233. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/scripts/dev-build.py +0 -0
  234. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/scripts/dev-setup.py +0 -0
  235. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/scripts/dev-test.sh +0 -0
  236. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/scripts/fix_linting.py +0 -0
  237. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/scripts/generate_favicon.py +0 -0
  238. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/scripts/mcp-dev +0 -0
  239. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/scripts/monitor_search_performance.py +0 -0
  240. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/scripts/publish.sh +0 -0
  241. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/scripts/quick_search_timing.py +0 -0
  242. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/scripts/reorganize-docs.sh +0 -0
  243. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/scripts/run_search_timing_tests.py +0 -0
  244. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/scripts/run_tests.py +0 -0
  245. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/scripts/search_performance_monitor.py +0 -0
  246. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/scripts/search_quality_analyzer.py +0 -0
  247. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/scripts/setup/mcp-vector-search.sh +0 -0
  248. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/scripts/setup/setup-alias.sh +0 -0
  249. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/scripts/setup-dev-mcp.sh +0 -0
  250. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/scripts/update_docs.py +0 -0
  251. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/scripts/update_homebrew_formula.py +0 -0
  252. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/scripts/update_submodules.sh +0 -0
  253. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/scripts/verify-install.sh +0 -0
  254. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/scripts/version_manager.py +0 -0
  255. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/scripts/wait_and_update_homebrew.sh +0 -0
  256. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/scripts/workflow.sh +0 -0
  257. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/security_scan_report_2025-12-02.txt +0 -0
  258. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/cli/__init__.py +0 -0
  259. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/cli/commands/__init__.py +0 -0
  260. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/cli/commands/auto_index.py +0 -0
  261. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/cli/commands/config.py +0 -0
  262. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/cli/commands/demo.py +0 -0
  263. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/cli/commands/init.py +0 -0
  264. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/cli/commands/install.py +0 -0
  265. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/cli/commands/install_old.py +0 -0
  266. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/cli/commands/mcp.py +0 -0
  267. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/cli/commands/reset.py +0 -0
  268. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/cli/commands/search.py +0 -0
  269. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/cli/commands/status.py +0 -0
  270. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/cli/commands/uninstall.py +0 -0
  271. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/cli/commands/visualize/__init__.py +0 -0
  272. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/cli/commands/visualize/cli.py +0 -0
  273. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/cli/commands/visualize/exporters/__init__.py +0 -0
  274. {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
  275. {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
  276. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/cli/commands/visualize/graph_builder.py +0 -0
  277. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/cli/commands/visualize/layout_engine.py +0 -0
  278. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/cli/commands/visualize/server.py +0 -0
  279. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/cli/commands/visualize/state_manager.py +0 -0
  280. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/cli/commands/visualize/templates/__init__.py +0 -0
  281. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/cli/commands/visualize/templates/base.py +0 -0
  282. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/cli/commands/visualize/templates/styles.py +0 -0
  283. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/cli/commands/visualize.py.original +0 -0
  284. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/cli/commands/watch.py +0 -0
  285. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/cli/didyoumean.py +0 -0
  286. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/cli/export.py +0 -0
  287. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/cli/history.py +0 -0
  288. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/cli/interactive.py +0 -0
  289. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/cli/output.py +0 -0
  290. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/cli/suggestions.py +0 -0
  291. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/config/__init__.py +0 -0
  292. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/config/constants.py +0 -0
  293. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/config/defaults.py +0 -0
  294. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/core/__init__.py +0 -0
  295. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/core/auto_indexer.py +0 -0
  296. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/core/connection_pool.py +0 -0
  297. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/core/database.py +0 -0
  298. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/core/directory_index.py +0 -0
  299. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/core/embeddings.py +0 -0
  300. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/core/exceptions.py +0 -0
  301. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/core/factory.py +0 -0
  302. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/core/git_hooks.py +0 -0
  303. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/core/indexer.py +0 -0
  304. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/core/project.py +0 -0
  305. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/core/scheduler.py +0 -0
  306. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/core/watcher.py +0 -0
  307. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/mcp/__init__.py +0 -0
  308. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/mcp/__main__.py +0 -0
  309. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/mcp/server.py +0 -0
  310. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/parsers/__init__.py +0 -0
  311. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/parsers/base.py +0 -0
  312. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/parsers/dart.py +0 -0
  313. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/parsers/html.py +0 -0
  314. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/parsers/javascript.py +0 -0
  315. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/parsers/php.py +0 -0
  316. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/parsers/python.py +0 -0
  317. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/parsers/registry.py +0 -0
  318. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/parsers/ruby.py +0 -0
  319. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/parsers/text.py +0 -0
  320. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/parsers/utils.py +0 -0
  321. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/py.typed +0 -0
  322. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/utils/__init__.py +0 -0
  323. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/utils/gitignore.py +0 -0
  324. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/utils/gitignore_updater.py +0 -0
  325. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/utils/monorepo.py +0 -0
  326. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/utils/timing.py +0 -0
  327. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/src/mcp_vector_search/utils/version.py +0 -0
  328. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/tests/__init__.py +0 -0
  329. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/tests/conftest.py +0 -0
  330. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/tests/manual/apply_fix.sh +0 -0
  331. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/tests/manual/breadcrumb_test_results.json +0 -0
  332. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/tests/manual/bug_visualization.html +0 -0
  333. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/tests/manual/check_controls.scpt +0 -0
  334. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/tests/manual/debug_console_inspector.html +0 -0
  335. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/tests/manual/debug_network.js +0 -0
  336. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/tests/manual/get_selector_details.scpt +0 -0
  337. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/tests/manual/inspect_visualization_controls.js +0 -0
  338. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/tests/manual/investigate_visualization.py +0 -0
  339. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/tests/manual/package-lock.json +0 -0
  340. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/tests/manual/package.json +0 -0
  341. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/tests/manual/screenshot_after_wait.png +0 -0
  342. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/tests/manual/screenshot_verification.png +0 -0
  343. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/tests/manual/screenshots/01_initial_load.png +0 -0
  344. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/tests/manual/screenshots/02_node_click_1.png +0 -0
  345. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/tests/manual/screenshots/02_node_click_2.png +0 -0
  346. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/tests/manual/screenshots/03_root_button_click.png +0 -0
  347. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/tests/manual/screenshots/actual_visualization_console.png +0 -0
  348. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/tests/manual/screenshots/console_check.png +0 -0
  349. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/tests/manual/screenshots/final_view.png +0 -0
  350. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/tests/manual/screenshots/initial_view_layout.png +0 -0
  351. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/tests/manual/screenshots/json_parse_test.png +0 -0
  352. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/tests/manual/screenshots/network_tab.png +0 -0
  353. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/tests/manual/screenshots/simple_console.png +0 -0
  354. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/tests/manual/test_controls_safari.sh +0 -0
  355. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/tests/manual/test_css_fix.scpt +0 -0
  356. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/tests/manual/test_graph_large.json +0 -0
  357. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/tests/manual/test_graph_medium.json +0 -0
  358. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/tests/manual/test_graph_small.json +0 -0
  359. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/tests/manual/test_instructions.md +0 -0
  360. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/tests/manual/test_mcp_auto_install.sh +0 -0
  361. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/tests/manual/test_visualization.html +0 -0
  362. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/tests/manual/verification_report.json +0 -0
  363. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/tests/manual/verify_cytoscape_fix.html +0 -0
  364. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/tests/manual/verify_data_initialization_fix.py +0 -0
  365. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/tests/manual/verify_root_filtering.py +0 -0
  366. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/tests/manual/verify_streaming_load.sh +0 -0
  367. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/tests/manual/verify_visualization.py +0 -0
  368. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/tests/manual/verify_with_node.js +0 -0
  369. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/tests/manual/verify_with_wait.js +0 -0
  370. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/tests/sample_code/ast_test_javascript.js +0 -0
  371. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/tests/sample_code/ast_test_python.py +0 -0
  372. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/tests/sample_code/ast_test_typescript.ts +0 -0
  373. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/tests/unit/commands/__init__.py +0 -0
  374. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/uv.lock +0 -0
  375. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/vendor/py-mcp-installer-service/.github/workflows/ci.yml +0 -0
  376. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/vendor/py-mcp-installer-service/.gitignore +0 -0
  377. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/vendor/py-mcp-installer-service/CHANGELOG.md +0 -0
  378. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/vendor/py-mcp-installer-service/CONTRIBUTING.md +0 -0
  379. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/vendor/py-mcp-installer-service/LICENSE +0 -0
  380. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/vendor/py-mcp-installer-service/Makefile +0 -0
  381. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/vendor/py-mcp-installer-service/README.md +0 -0
  382. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/vendor/py-mcp-installer-service/RELEASING.md +0 -0
  383. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/vendor/py-mcp-installer-service/VERSION +0 -0
  384. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/vendor/py-mcp-installer-service/docs/ARCHITECTURE.md +0 -0
  385. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/vendor/py-mcp-installer-service/docs/DIAGRAMS.md +0 -0
  386. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/vendor/py-mcp-installer-service/docs/IMPLEMENTATION-PLAN.md +0 -0
  387. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/vendor/py-mcp-installer-service/docs/PROJECT-STRUCTURE.md +0 -0
  388. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/vendor/py-mcp-installer-service/docs/QUICK-REFERENCE.md +0 -0
  389. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/vendor/py-mcp-installer-service/docs/README.md +0 -0
  390. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/vendor/py-mcp-installer-service/docs/design/SUMMARY.md +0 -0
  391. {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
  392. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/vendor/py-mcp-installer-service/examples/phase3_demo.py +0 -0
  393. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/vendor/py-mcp-installer-service/scripts/manage_version.py +0 -0
  394. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/vendor/py-mcp-installer-service/scripts/release.sh +0 -0
  395. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/vendor/py-mcp-installer-service/setup.py +0 -0
  396. {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
  397. {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
  398. {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
  399. {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
  400. {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
  401. {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
  402. {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
  403. {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
  404. {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
  405. {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
  406. {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
  407. {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
  408. {mcp_vector_search-0.15.5 → mcp_vector_search-0.15.13}/vendor/py-mcp-installer-service/tests/__init__.py +0 -0
  409. {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.5
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.0
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