mcp-vector-search 0.12.6__py3-none-any.whl → 1.0.3__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) hide show
  1. mcp_vector_search/__init__.py +2 -2
  2. mcp_vector_search/analysis/__init__.py +64 -0
  3. mcp_vector_search/analysis/collectors/__init__.py +39 -0
  4. mcp_vector_search/analysis/collectors/base.py +164 -0
  5. mcp_vector_search/analysis/collectors/complexity.py +743 -0
  6. mcp_vector_search/analysis/metrics.py +341 -0
  7. mcp_vector_search/analysis/reporters/__init__.py +5 -0
  8. mcp_vector_search/analysis/reporters/console.py +222 -0
  9. mcp_vector_search/cli/commands/analyze.py +408 -0
  10. mcp_vector_search/cli/commands/chat.py +1262 -0
  11. mcp_vector_search/cli/commands/index.py +21 -3
  12. mcp_vector_search/cli/commands/init.py +13 -0
  13. mcp_vector_search/cli/commands/install.py +597 -335
  14. mcp_vector_search/cli/commands/install_old.py +8 -4
  15. mcp_vector_search/cli/commands/mcp.py +78 -6
  16. mcp_vector_search/cli/commands/reset.py +68 -26
  17. mcp_vector_search/cli/commands/search.py +30 -7
  18. mcp_vector_search/cli/commands/setup.py +1133 -0
  19. mcp_vector_search/cli/commands/status.py +37 -2
  20. mcp_vector_search/cli/commands/uninstall.py +276 -357
  21. mcp_vector_search/cli/commands/visualize/__init__.py +39 -0
  22. mcp_vector_search/cli/commands/visualize/cli.py +276 -0
  23. mcp_vector_search/cli/commands/visualize/exporters/__init__.py +12 -0
  24. mcp_vector_search/cli/commands/visualize/exporters/html_exporter.py +33 -0
  25. mcp_vector_search/cli/commands/visualize/exporters/json_exporter.py +29 -0
  26. mcp_vector_search/cli/commands/visualize/graph_builder.py +714 -0
  27. mcp_vector_search/cli/commands/visualize/layout_engine.py +469 -0
  28. mcp_vector_search/cli/commands/visualize/server.py +311 -0
  29. mcp_vector_search/cli/commands/visualize/state_manager.py +428 -0
  30. mcp_vector_search/cli/commands/visualize/templates/__init__.py +16 -0
  31. mcp_vector_search/cli/commands/visualize/templates/base.py +180 -0
  32. mcp_vector_search/cli/commands/visualize/templates/scripts.py +2507 -0
  33. mcp_vector_search/cli/commands/visualize/templates/styles.py +1313 -0
  34. mcp_vector_search/cli/commands/visualize.py.original +2536 -0
  35. mcp_vector_search/cli/didyoumean.py +22 -2
  36. mcp_vector_search/cli/main.py +115 -159
  37. mcp_vector_search/cli/output.py +24 -8
  38. mcp_vector_search/config/__init__.py +4 -0
  39. mcp_vector_search/config/default_thresholds.yaml +52 -0
  40. mcp_vector_search/config/settings.py +12 -0
  41. mcp_vector_search/config/thresholds.py +185 -0
  42. mcp_vector_search/core/auto_indexer.py +3 -3
  43. mcp_vector_search/core/boilerplate.py +186 -0
  44. mcp_vector_search/core/config_utils.py +394 -0
  45. mcp_vector_search/core/database.py +369 -94
  46. mcp_vector_search/core/exceptions.py +11 -0
  47. mcp_vector_search/core/git_hooks.py +4 -4
  48. mcp_vector_search/core/indexer.py +221 -4
  49. mcp_vector_search/core/llm_client.py +751 -0
  50. mcp_vector_search/core/models.py +3 -0
  51. mcp_vector_search/core/project.py +17 -0
  52. mcp_vector_search/core/scheduler.py +11 -11
  53. mcp_vector_search/core/search.py +179 -29
  54. mcp_vector_search/mcp/server.py +24 -5
  55. mcp_vector_search/utils/__init__.py +2 -0
  56. mcp_vector_search/utils/gitignore_updater.py +212 -0
  57. mcp_vector_search/utils/monorepo.py +66 -4
  58. mcp_vector_search/utils/timing.py +10 -6
  59. {mcp_vector_search-0.12.6.dist-info → mcp_vector_search-1.0.3.dist-info}/METADATA +182 -52
  60. mcp_vector_search-1.0.3.dist-info/RECORD +97 -0
  61. {mcp_vector_search-0.12.6.dist-info → mcp_vector_search-1.0.3.dist-info}/WHEEL +1 -1
  62. {mcp_vector_search-0.12.6.dist-info → mcp_vector_search-1.0.3.dist-info}/entry_points.txt +1 -0
  63. mcp_vector_search/cli/commands/visualize.py +0 -1467
  64. mcp_vector_search-0.12.6.dist-info/RECORD +0 -68
  65. {mcp_vector_search-0.12.6.dist-info → mcp_vector_search-1.0.3.dist-info}/licenses/LICENSE +0 -0
@@ -390,8 +390,26 @@ async def _run_batch_indexing(
390
390
 
391
391
  # Add next-step hints
392
392
  if indexed_count > 0:
393
+ # Check if LLM is configured for chat command
394
+ from mcp_vector_search.core.config_utils import (
395
+ get_openai_api_key,
396
+ get_openrouter_api_key,
397
+ )
398
+
399
+ config_dir = indexer.project_root / ".mcp-vector-search"
400
+ has_openai = get_openai_api_key(config_dir) is not None
401
+ has_openrouter = get_openrouter_api_key(config_dir) is not None
402
+ llm_configured = has_openai or has_openrouter
403
+
404
+ if llm_configured:
405
+ provider = "OpenAI" if has_openai else "OpenRouter"
406
+ chat_hint = f"[cyan]mcp-vector-search chat 'question'[/cyan] - Ask AI about your code [green](✓ {provider})[/green]"
407
+ else:
408
+ chat_hint = "[cyan]mcp-vector-search chat 'question'[/cyan] - Ask AI about your code [dim](requires API key)[/dim]"
409
+
393
410
  steps = [
394
411
  "[cyan]mcp-vector-search search 'your query'[/cyan] - Try semantic search",
412
+ chat_hint,
395
413
  "[cyan]mcp-vector-search status[/cyan] - View detailed statistics",
396
414
  ]
397
415
  print_next_steps(steps, title="Ready to Search")
@@ -567,9 +585,9 @@ async def _reindex_single_file(project_root: Path, file_path: Path) -> None:
567
585
  # Setup components
568
586
  embedding_function, cache = create_embedding_function(
569
587
  model_name=config.embedding_model,
570
- cache_dir=get_default_cache_path(project_root)
571
- if config.cache_embeddings
572
- else None,
588
+ cache_dir=(
589
+ get_default_cache_path(project_root) if config.cache_embeddings else None
590
+ ),
573
591
  )
574
592
 
575
593
  database = ChromaVectorDatabase(
@@ -432,6 +432,19 @@ async def run_init_setup(
432
432
  claude_cmd = get_claude_command()
433
433
  server_command = get_mcp_server_command(project_root)
434
434
 
435
+ # First, try to remove existing server (safe to ignore if doesn't exist)
436
+ # This ensures clean registration when server already exists
437
+ print_info("Updating MCP server configuration...")
438
+ remove_cmd = [claude_cmd, "mcp", "remove", "mcp-vector-search"]
439
+
440
+ subprocess.run(
441
+ remove_cmd,
442
+ capture_output=True,
443
+ text=True,
444
+ timeout=10,
445
+ )
446
+ # Ignore result - it's OK if server doesn't exist
447
+
435
448
  # Install MCP server with project scope for team sharing
436
449
  cmd_args = [
437
450
  claude_cmd,