mcp-vector-search 0.5.1__py3-none-any.whl → 0.6.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of mcp-vector-search might be problematic. Click here for more details.

@@ -0,0 +1,265 @@
1
+ """Shared utilities for language parsers.
2
+
3
+ This module contains common functionality used across multiple parsers
4
+ to reduce code duplication and improve maintainability.
5
+ """
6
+
7
+ from pathlib import Path
8
+ from re import Pattern
9
+
10
+ from ..config.constants import DEFAULT_CHUNK_SIZE
11
+ from ..core.models import CodeChunk
12
+
13
+
14
+ def split_into_lines(content: str) -> list[str]:
15
+ """Split content into lines, handling different line endings.
16
+
17
+ Args:
18
+ content: Text content to split
19
+
20
+ Returns:
21
+ List of lines with line endings preserved
22
+ """
23
+ # Handle different line endings and preserve them
24
+ return content.splitlines(keepends=True)
25
+
26
+
27
+ def get_line_range(lines: list[str], start_line: int, end_line: int) -> str:
28
+ """Get content from a range of lines.
29
+
30
+ Args:
31
+ lines: List of lines
32
+ start_line: Starting line number (1-indexed)
33
+ end_line: Ending line number (1-indexed, inclusive)
34
+
35
+ Returns:
36
+ Joined content from the line range
37
+ """
38
+ # Convert to 0-indexed
39
+ start_idx = max(0, start_line - 1)
40
+ end_idx = min(len(lines), end_line)
41
+
42
+ return "".join(lines[start_idx:end_idx])
43
+
44
+
45
+ def find_block_end(lines: list[str], start_line: int, indent_char: str = " ") -> int:
46
+ """Find the end of a code block based on indentation.
47
+
48
+ This is a simple heuristic that looks for the next line with equal or
49
+ lower indentation level than the starting line.
50
+
51
+ Args:
52
+ lines: List of lines
53
+ start_line: Starting line number (1-indexed)
54
+ indent_char: Character used for indentation (space or tab)
55
+
56
+ Returns:
57
+ End line number (1-indexed)
58
+ """
59
+ if start_line > len(lines):
60
+ return len(lines)
61
+
62
+ # Get indentation of starting line
63
+ start_idx = start_line - 1
64
+ start_indent = len(lines[start_idx]) - len(lines[start_idx].lstrip())
65
+
66
+ # Find next line with same or lower indentation
67
+ for i in range(start_idx + 1, len(lines)):
68
+ line = lines[i]
69
+ if line.strip(): # Skip empty lines
70
+ current_indent = len(line) - len(line.lstrip())
71
+ if current_indent <= start_indent:
72
+ return i # Return 0-indexed position, will be used as end_line
73
+
74
+ return len(lines)
75
+
76
+
77
+ def create_simple_chunks(
78
+ content: str, file_path: Path, chunk_size: int = DEFAULT_CHUNK_SIZE
79
+ ) -> list[CodeChunk]:
80
+ """Create simple line-based chunks from content.
81
+
82
+ This is a fallback chunking strategy when more sophisticated
83
+ parsing is not available.
84
+
85
+ Args:
86
+ content: File content
87
+ file_path: Path to source file
88
+ chunk_size: Number of lines per chunk
89
+
90
+ Returns:
91
+ List of code chunks
92
+ """
93
+ lines = split_into_lines(content)
94
+ chunks = []
95
+
96
+ for i in range(0, len(lines), chunk_size):
97
+ start_line = i + 1
98
+ end_line = min(i + chunk_size, len(lines))
99
+
100
+ chunk_content = get_line_range(lines, start_line, end_line)
101
+
102
+ if chunk_content.strip():
103
+ chunk = CodeChunk(
104
+ content=chunk_content,
105
+ start_line=start_line,
106
+ end_line=end_line,
107
+ file_path=str(file_path),
108
+ chunk_type="block",
109
+ metadata={"source": "simple_chunking"},
110
+ )
111
+ chunks.append(chunk)
112
+
113
+ return chunks
114
+
115
+
116
+ def extract_docstring(lines: list[str], start_line: int) -> str | None:
117
+ """Extract docstring/comment block starting from a given line.
118
+
119
+ Supports Python docstrings (triple quotes), JavaDoc (/** */),
120
+ and hash-based comments (# or //).
121
+
122
+ Args:
123
+ lines: List of lines
124
+ start_line: Line number to start looking (1-indexed)
125
+
126
+ Returns:
127
+ Docstring content or None if not found
128
+ """
129
+ if start_line > len(lines):
130
+ return None
131
+
132
+ start_idx = start_line - 1
133
+
134
+ # Check for Python-style docstring
135
+ triple_double = '"""'
136
+ triple_single = "'''"
137
+ for quote in [triple_double, triple_single]:
138
+ if quote in lines[start_idx]:
139
+ # Multi-line docstring
140
+ docstring_lines = []
141
+ in_docstring = False
142
+
143
+ for line in lines[start_idx:]:
144
+ if quote in line:
145
+ if in_docstring:
146
+ # End of docstring
147
+ docstring_lines.append(line[: line.index(quote) + 3])
148
+ break
149
+ else:
150
+ # Start of docstring
151
+ in_docstring = True
152
+ docstring_lines.append(line)
153
+ if line.count(quote) >= 2:
154
+ # Single-line docstring
155
+ break
156
+ elif in_docstring:
157
+ docstring_lines.append(line)
158
+
159
+ if docstring_lines:
160
+ return "".join(docstring_lines).strip()
161
+
162
+ # Check for JavaDoc-style comment
163
+ if start_idx > 0 and "/**" in lines[start_idx - 1]:
164
+ comment_lines = []
165
+ for i in range(start_idx - 1, -1, -1):
166
+ comment_lines.insert(0, lines[i])
167
+ if "/**" in lines[i]:
168
+ break
169
+
170
+ for i in range(start_idx, len(lines)):
171
+ if "*/" in lines[i]:
172
+ comment_lines.append(lines[i])
173
+ break
174
+ comment_lines.append(lines[i])
175
+
176
+ return "".join(comment_lines).strip()
177
+
178
+ # Check for hash/slash comments on previous lines
179
+ comment_lines = []
180
+ for i in range(start_idx - 1, -1, -1):
181
+ line = lines[i].strip()
182
+ if line.startswith("#") or line.startswith("//"):
183
+ comment_lines.insert(0, lines[i])
184
+ elif line:
185
+ break
186
+
187
+ if comment_lines:
188
+ return "".join(comment_lines).strip()
189
+
190
+ return None
191
+
192
+
193
+ def extract_imports_with_pattern(
194
+ content: str, pattern: Pattern[str], chunk_type: str = "import"
195
+ ) -> list[str]:
196
+ """Extract import/require/use statements using a regex pattern.
197
+
198
+ Args:
199
+ content: Source code content
200
+ pattern: Compiled regex pattern to match imports
201
+ chunk_type: Type of import (import, require, use, etc.)
202
+
203
+ Returns:
204
+ List of import statements
205
+ """
206
+ imports = []
207
+ for match in pattern.finditer(content):
208
+ import_line = match.group(0).strip()
209
+ imports.append(import_line)
210
+ return imports
211
+
212
+
213
+ def find_code_blocks_with_patterns(
214
+ content: str, lines: list[str], patterns: dict[str, Pattern[str]], file_path: Path
215
+ ) -> list[CodeChunk]:
216
+ """Find code blocks (functions, classes, etc.) using regex patterns.
217
+
218
+ This is a generic fallback parser that can be configured with different
219
+ patterns for different languages.
220
+
221
+ Args:
222
+ content: Source code content
223
+ lines: Pre-split lines
224
+ patterns: Dictionary mapping block types to compiled regex patterns
225
+ file_path: Path to source file
226
+
227
+ Returns:
228
+ List of code chunks
229
+ """
230
+ chunks = []
231
+
232
+ for block_type, pattern in patterns.items():
233
+ for match in pattern.finditer(content):
234
+ # Extract the name from the first capturing group
235
+ name = match.group(1) if match.groups() else "unknown"
236
+
237
+ # Find line number
238
+ match_pos = match.start()
239
+ start_line = content[:match_pos].count("\n") + 1
240
+
241
+ # Find end of block using indentation
242
+ end_line = find_block_end(lines, start_line)
243
+
244
+ # Get block content
245
+ block_content = get_line_range(lines, start_line, end_line)
246
+
247
+ if block_content.strip():
248
+ # Extract docstring
249
+ docstring = extract_docstring(lines, start_line + 1)
250
+
251
+ chunk = CodeChunk(
252
+ content=block_content,
253
+ start_line=start_line,
254
+ end_line=end_line,
255
+ file_path=str(file_path),
256
+ chunk_type=block_type,
257
+ metadata={
258
+ "name": name,
259
+ "docstring": docstring,
260
+ "source": "regex_fallback",
261
+ },
262
+ )
263
+ chunks.append(chunk)
264
+
265
+ return chunks
@@ -123,7 +123,7 @@ class GitignoreParser:
123
123
  with open(gitignore_path, encoding="utf-8", errors="ignore") as f:
124
124
  lines = f.readlines()
125
125
 
126
- for line_num, line in enumerate(lines, 1):
126
+ for _line_num, line in enumerate(lines, 1):
127
127
  line = line.strip()
128
128
 
129
129
  # Skip empty lines and comments
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mcp-vector-search
3
- Version: 0.5.1
3
+ Version: 0.6.0
4
4
  Summary: CLI-first semantic code search with MCP integration
5
5
  Project-URL: Homepage, https://github.com/bobmatnyc/mcp-vector-search
6
6
  Project-URL: Documentation, https://mcp-vector-search.readthedocs.io
@@ -44,6 +44,7 @@ Requires-Dist: click-didyoumean>=0.3.0
44
44
  Requires-Dist: httpx>=0.25.0
45
45
  Requires-Dist: loguru>=0.7.0
46
46
  Requires-Dist: mcp>=1.12.4
47
+ Requires-Dist: packaging>=23.0
47
48
  Requires-Dist: pydantic-settings>=2.1.0
48
49
  Requires-Dist: pydantic>=2.5.0
49
50
  Requires-Dist: rich>=13.0.0
@@ -62,7 +63,7 @@ Description-Content-Type: text/markdown
62
63
  [![Python 3.11+](https://img.shields.io/badge/python-3.11+-blue.svg)](https://www.python.org/downloads/)
63
64
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
64
65
 
65
- > ⚠️ **Alpha Release (v0.0.3)**: This is an early-stage project under active development. Expect breaking changes and rough edges. Feedback and contributions are welcome!
66
+ > ⚠️ **Alpha Release (v0.6.0)**: This is an early-stage project under active development. Expect breaking changes and rough edges. Feedback and contributions are welcome!
66
67
 
67
68
  A modern, fast, and intelligent code search tool that understands your codebase through semantic analysis and AST parsing. Built with Python, powered by ChromaDB, and designed for developer productivity.
68
69
 
@@ -73,6 +74,7 @@ A modern, fast, and intelligent code search tool that understands your codebase
73
74
  - **AST-Aware Parsing**: Understands code structure (functions, classes, methods)
74
75
  - **Multi-Language Support**: 8 languages - Python, JavaScript, TypeScript, Dart/Flutter, PHP, Ruby, HTML, and Markdown/Text (with extensible architecture)
75
76
  - **Real-time Indexing**: File watching with automatic index updates
77
+ - **Automatic Version Tracking**: Smart reindexing on tool upgrades
76
78
  - **Local-First**: Complete privacy with on-device processing
77
79
  - **Zero Configuration**: Auto-detects project structure and languages
78
80
 
@@ -1,60 +1,62 @@
1
- mcp_vector_search/__init__.py,sha256=wWzwwtd5LyUT8xL6wgwEixYc6hnUgUWgjsUwYPE6ub8,299
1
+ mcp_vector_search/__init__.py,sha256=WdjRcgYzYCEwrp2yc382O83RTxum5rX2oE_-xoPhV_8,299
2
2
  mcp_vector_search/py.typed,sha256=lCKeV9Qcn9sGtbRsgg-LJO2ZwWRuknnnlmomq3bJFH0,43
3
3
  mcp_vector_search/cli/__init__.py,sha256=TNB7CaOASz8u3yHWLbNmo8-GtHF0qwUjVKWAuNphKgo,40
4
- mcp_vector_search/cli/didyoumean.py,sha256=dzHtzGaCRtKGum1KqyPBNP4_7d2JNsxgcT4kD7rIfp4,15941
4
+ mcp_vector_search/cli/didyoumean.py,sha256=F_ss-EX4F9RgnMsEhdTwLpyNCah9SqnBZc2tBtzASck,15918
5
5
  mcp_vector_search/cli/export.py,sha256=iluxuRT2KELdKlQeDAlVkteiel4GGrng153UAw9H0as,10804
6
- mcp_vector_search/cli/history.py,sha256=osQVNiTIdGSRZQiJEjC_AYMmHxaqv7RSKSeuO325Ip0,9115
6
+ mcp_vector_search/cli/history.py,sha256=6wRrSfxpUe9hJXuaEeVxOVkFlcpqkIiGfwzDgd5N6c8,9323
7
7
  mcp_vector_search/cli/interactive.py,sha256=T7P4dAdvbglznzQYgiePv5YNyOx9FeE57Y3OKYnnbYE,12744
8
- mcp_vector_search/cli/main.py,sha256=b9au8AD_VETgSFeLSpcLYDOdRVVUL6aQms8D_wn84T8,16702
8
+ mcp_vector_search/cli/main.py,sha256=VsW2U-E-_9jB6UfA4vTE0K-d657WZyLyIM2hvXgre9c,17057
9
9
  mcp_vector_search/cli/output.py,sha256=7ShIk_UKzhDzRGxI6JluPu0gGkbmKOevqgIAKR4oCa0,12560
10
- mcp_vector_search/cli/suggestions.py,sha256=i3KF8AaMa86aT5n64xwdw8R_ZiS-UehnF97fM0YzWAU,13184
10
+ mcp_vector_search/cli/suggestions.py,sha256=h-UaxoLcHmFbhZSm0WG7nKJXAIRIqhv7aGsXijp7vA8,13273
11
11
  mcp_vector_search/cli/commands/__init__.py,sha256=vQls-YKZ54YEwmf7g1dL0T2SS9D4pdQljXzsUChG_V4,42
12
12
  mcp_vector_search/cli/commands/auto_index.py,sha256=imVVbxWRlA128NPdK9BetNNl3ELrsdq-hqcsLqyAmoM,12712
13
13
  mcp_vector_search/cli/commands/config.py,sha256=EHLqToCXrZs3gjIAg7pV8Bq8yVslUXWC4AnTcZQgSPQ,11337
14
14
  mcp_vector_search/cli/commands/index.py,sha256=soupoLR3EBsSzjqvzxurT9I6A8ZYM9asWVmJY3bDqMI,15394
15
- mcp_vector_search/cli/commands/init.py,sha256=orIJo71nETcLZCU6olWNVSz_jNWFhwDYu-1lHEqhkfA,25522
16
- mcp_vector_search/cli/commands/install.py,sha256=3Eiih--rizmpLNGyeDJlA93n8tSzUUJGm8GwMloVwy0,24617
15
+ mcp_vector_search/cli/commands/init.py,sha256=1kK2YmWnMCnAmWjI3Om3d_NE89APisL-vvUFfKcyp2I,26408
16
+ mcp_vector_search/cli/commands/install.py,sha256=phk7Eb7UOU5IsRfJyaDPdOfdUWli9gyA4cHjhgXcNEI,24609
17
17
  mcp_vector_search/cli/commands/mcp.py,sha256=FKZNxYrDc7HfPTFBUEypCv-8atsrHEdbtU6Yfg9QUMA,18569
18
- mcp_vector_search/cli/commands/reset.py,sha256=3gagCRnW7FRrUzJDgD49WfB7IK2TkQgMFnHRIZSr0zE,13733
19
- mcp_vector_search/cli/commands/search.py,sha256=PA3jOmWQCdkW-D6vCxodgWf8wpX2S3ZO4j_1OWjlY7E,19143
20
- mcp_vector_search/cli/commands/status.py,sha256=Aj2KZjnI7DtVUXTNfTcZuAnjK3Zhlt9TC4HWSViQMj8,17595
18
+ mcp_vector_search/cli/commands/reset.py,sha256=bsIT6zjDf6gsvIkVaRaUClYzlTyNe--8t0NWkBY0ldU,13724
19
+ mcp_vector_search/cli/commands/search.py,sha256=JFEkXQjevx2XZJhHTH8xy7G7XVcH5nGazJfacKSyEA4,20650
20
+ mcp_vector_search/cli/commands/status.py,sha256=7ro6M3aifV0cuCqqxJ278P9g-fbhzvjoOABUoitMrPo,18929
21
21
  mcp_vector_search/cli/commands/watch.py,sha256=2pyWRoo4fIppFnyQ4sW4IBLHmpb_IwnTjRnzHkVBPcQ,8927
22
22
  mcp_vector_search/config/__init__.py,sha256=r_qAQkU5gc0EQ2pv8EQARACe4klhrR_WRJqCb9lfGc0,54
23
- mcp_vector_search/config/defaults.py,sha256=62wM6NGwjLQW8mu0Wp9eIykii2-3dbxuqzszB7spkVw,4945
24
- mcp_vector_search/config/settings.py,sha256=v1bc2K2yTwDzQKiy_BQhTWCP7FinSWX99vQGTWJRD2I,4159
23
+ mcp_vector_search/config/constants.py,sha256=afXR6SvLLd8QYY4MG4s1vq-hCJiQsE5PhnE-XG9lvb4,1092
24
+ mcp_vector_search/config/defaults.py,sha256=CYeUOd5cTvyKDZpimgYEku28jeKo5w013dHiXxXP5kY,5128
25
+ mcp_vector_search/config/settings.py,sha256=m8o8j-tvWcuzrnNL6YWbi2fFbcB3lZY1kMNinJJUFCM,4328
25
26
  mcp_vector_search/core/__init__.py,sha256=bWKtKmmaFs7gG5XPCbrx77UYIVeO1FF8wIJxpj1dLNw,48
26
27
  mcp_vector_search/core/auto_indexer.py,sha256=0S4lZXaUgqEytMSA2FxQsh5hN7V1mbSLYVzEf_dslYQ,10307
27
28
  mcp_vector_search/core/connection_pool.py,sha256=Yo-gUQQbHawtuvh6OcJiAlbbvWQGQBd31QZOvs498fg,11224
28
- mcp_vector_search/core/database.py,sha256=wh55w42V5FbMX1rgo4zxLNb0t6fzq6UJx8NOBjAqfxs,35533
29
+ mcp_vector_search/core/database.py,sha256=4CDqtmxtg1EsajZP36Xwc43jD_84szVfq5SFLpJh3eg,35515
29
30
  mcp_vector_search/core/embeddings.py,sha256=wSMUNxZcuGPMxxQ1AbKqA1a3-0c6AiOqmuuI7OqTyaQ,10578
30
31
  mcp_vector_search/core/exceptions.py,sha256=3bCjT8wmrLz_0e_Tayr90049zNTKYFWZa19kl0saKz8,1597
31
- mcp_vector_search/core/factory.py,sha256=GnsCBcRndBaUBWSXwtt8QKInAo-rGGBTSOKznUFETwA,10016
32
+ mcp_vector_search/core/factory.py,sha256=tM6Ft-V9buF7nn9xbRMU1ngji-BJOKt6BhtfQhFLmF4,10384
32
33
  mcp_vector_search/core/git_hooks.py,sha256=xOfPpzgKoNTwM-vbhAihUucgudBQk45bCAVR5zJOFlQ,10878
33
- mcp_vector_search/core/indexer.py,sha256=_hY_9llmJdc2j5ct0eugSyMWUGLP1WEh7kzsEnCbroc,15758
34
+ mcp_vector_search/core/indexer.py,sha256=MlsMDcGvl1ww6wAtCeTVU5AkaBM-z2LP4HGXErKoDHM,18331
34
35
  mcp_vector_search/core/models.py,sha256=fnZxvUkd9Afxmdwtw2BJX7uik6rQTwuWBTTqTeqDi0A,6697
35
36
  mcp_vector_search/core/project.py,sha256=RNeLBZZw6SO5mXqCwYfhStTGuVgeMq1US5UftG0SBYk,10069
36
37
  mcp_vector_search/core/scheduler.py,sha256=PBSlu-ieDYCXOMGYY7QKv9UReFEDPHNmwnUv_xb4vxg,11761
37
- mcp_vector_search/core/search.py,sha256=ZnrKIEqjLNVnh3_lfsVE0p97EWlNDZxYcc5SHhJUlRE,29787
38
+ mcp_vector_search/core/search.py,sha256=9OC8-KwWdbw4y4QPQ-VXfz0encVHTJWYLtah3_chqG8,33682
38
39
  mcp_vector_search/core/watcher.py,sha256=-DFRCnuUfcqcTrkZPQqfJSvxKAxnpt-axgEj1V-B0O4,10862
39
40
  mcp_vector_search/mcp/__init__.py,sha256=gfKR0QV7Jqvj5y0LMBe9gSghd5_rPsvm_rml0ryQtoY,158
40
41
  mcp_vector_search/mcp/__main__.py,sha256=KgwB59HM5pRLe2Aj-fvDFcTp95lyT0wfmS3ENcx9gPc,571
41
42
  mcp_vector_search/mcp/server.py,sha256=YmHyvJqg_CjxEN356ShFrTPLgDKzaLXyrt8tNHVryEY,28322
42
43
  mcp_vector_search/parsers/__init__.py,sha256=jr0Yqz1xMok4lnG7_aXnkZThGuefrlAj8PWVbfeT3QQ,228
43
- mcp_vector_search/parsers/base.py,sha256=-zBY9T0modfegowaNyf5_upkS3ImR4TgrRwoSLuAiDw,5421
44
- mcp_vector_search/parsers/dart.py,sha256=Cs10Tw3XvvA_nJpUilKgrj8E2Sq6F3urODEFH_ZPS3M,21840
44
+ mcp_vector_search/parsers/base.py,sha256=kOurwRR4xlyIje9rHLlEVa-OCl1LK8ih_fAFWHFg78g,5395
45
+ mcp_vector_search/parsers/dart.py,sha256=li2JP0vwpSsZnMNq0PweZCD_o-y1jUwubHlSA8nm8KQ,21816
45
46
  mcp_vector_search/parsers/html.py,sha256=nzEVDV4oCBp3wpL8vp6WWx5eqiB39agu9E048JkuRJQ,13010
46
47
  mcp_vector_search/parsers/javascript.py,sha256=P7fT_tXCzUuXATTkTx_DyD4EuG0_KjIDlay09MhkKTE,9824
47
48
  mcp_vector_search/parsers/php.py,sha256=1QjnE8SAQF86VQ7pNfn1Pmpg5Dni4M7KCLU7212DkXM,24774
48
49
  mcp_vector_search/parsers/python.py,sha256=IB4gQ6DD6Oqvws5p3LQtHTJOtmH6f9FWmO9fQRfGQx4,15688
49
50
  mcp_vector_search/parsers/registry.py,sha256=L00EUp58ff_xatgQW-cBvE0AVBQi7cGtvr6zWV_NYbc,6457
50
51
  mcp_vector_search/parsers/ruby.py,sha256=xNn_z8txAWL7E1ULcFMiqn5idFhf5GQn8N3x1yE-c2k,23818
51
- mcp_vector_search/parsers/text.py,sha256=qKD-P76-lVjY16FH9ZffKihWaphoBV2R8laWXOwoNug,6024
52
+ mcp_vector_search/parsers/text.py,sha256=jvMdFspbmrrOR1GSGzf2gvBDCXz1cPN_xemoDK4fUvM,6084
53
+ mcp_vector_search/parsers/utils.py,sha256=10vT-GJSeDUoGSIslz8zq4RyavFiMtizCmcnn9cbQqE,8103
52
54
  mcp_vector_search/utils/__init__.py,sha256=Eq6lY-oPMfCt-GpPUbg9QbmTHuQVmTaVDBMU2183KVw,887
53
- mcp_vector_search/utils/gitignore.py,sha256=lc8_GK2L8dzlqPRZNB3XfQvVCbnLtz_l0eQN_13z8Xo,7684
55
+ mcp_vector_search/utils/gitignore.py,sha256=bzie3V5gOGIN7j3FNVLLCx8O_hfZJDUqqAy5T3lT3Ek,7685
54
56
  mcp_vector_search/utils/timing.py,sha256=THC7mfbTYnUpnnDcblgQacYMzbEkfFoIShx6plmhCgg,11285
55
57
  mcp_vector_search/utils/version.py,sha256=d7fS-CLemxb8UzZ9j18zH0Y0Ud097ljKKYYOPulnGPE,1138
56
- mcp_vector_search-0.5.1.dist-info/METADATA,sha256=6QMMzeEpShXc8-jF74xNpBEuNGbexHDpNZ5AqxsPY88,19021
57
- mcp_vector_search-0.5.1.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
58
- mcp_vector_search-0.5.1.dist-info/entry_points.txt,sha256=y3Ygtc_JiBchNEIL-tPABo7EbzBExGAxwGdkkeP5D2I,86
59
- mcp_vector_search-0.5.1.dist-info/licenses/LICENSE,sha256=FqZUgGJH_tZKZLQsMCpXaLawRyLmyFKRVfMwYyEcyTs,1072
60
- mcp_vector_search-0.5.1.dist-info/RECORD,,
58
+ mcp_vector_search-0.6.0.dist-info/METADATA,sha256=do--B4P_ROSsUmBn1n9xsO8ANdVOXkSYAcqY2YF_c7w,19120
59
+ mcp_vector_search-0.6.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
60
+ mcp_vector_search-0.6.0.dist-info/entry_points.txt,sha256=y3Ygtc_JiBchNEIL-tPABo7EbzBExGAxwGdkkeP5D2I,86
61
+ mcp_vector_search-0.6.0.dist-info/licenses/LICENSE,sha256=FqZUgGJH_tZKZLQsMCpXaLawRyLmyFKRVfMwYyEcyTs,1072
62
+ mcp_vector_search-0.6.0.dist-info/RECORD,,