mcp-vector-search 0.8.4__py3-none-any.whl → 0.8.6__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.

@@ -1,7 +1,7 @@
1
1
  """MCP Vector Search - CLI-first semantic code search with MCP integration."""
2
2
 
3
- __version__ = "0.8.4"
4
- __build__ = "33"
3
+ __version__ = "0.8.6"
4
+ __build__ = "35"
5
5
  __author__ = "Robert Matsuoka"
6
6
  __email__ = "bobmatnyc@gmail.com"
7
7
 
@@ -53,13 +53,12 @@ class CodeChunk:
53
53
  # Generate chunk ID if not provided
54
54
  if self.chunk_id is None:
55
55
  import hashlib
56
- import uuid
57
56
 
58
- # Include name to differentiate chunks at same location
57
+ # Include name and first 50 chars of content for uniqueness
58
+ # This ensures deterministic IDs while handling same-location chunks
59
59
  name = self.function_name or self.class_name or ""
60
- # Add UUID to guarantee uniqueness even for identical chunks
61
- unique_suffix = str(uuid.uuid4())[:8]
62
- id_string = f"{self.file_path}:{self.chunk_type}:{name}:{self.start_line}:{self.end_line}:{unique_suffix}"
60
+ content_hash = hashlib.sha256(self.content[:100].encode()).hexdigest()[:8]
61
+ id_string = f"{self.file_path}:{self.chunk_type}:{name}:{self.start_line}:{self.end_line}:{content_hash}"
63
62
  self.chunk_id = hashlib.sha256(id_string.encode()).hexdigest()[:16]
64
63
 
65
64
  @property
@@ -73,10 +73,15 @@ class JavaScriptParser(BaseParser):
73
73
  """Recursively visit AST nodes."""
74
74
  node_type = node.type
75
75
 
76
+ # Check if this node type should be extracted
77
+ extracted = False
78
+
76
79
  if node_type == "function_declaration":
77
80
  chunks.extend(self._extract_function(node, lines, file_path, current_class))
81
+ extracted = True
78
82
  elif node_type == "arrow_function":
79
83
  chunks.extend(self._extract_arrow_function(node, lines, file_path, current_class))
84
+ extracted = True
80
85
  elif node_type == "class_declaration":
81
86
  class_chunks = self._extract_class(node, lines, file_path)
82
87
  chunks.extend(class_chunks)
@@ -85,17 +90,22 @@ class JavaScriptParser(BaseParser):
85
90
  class_name = self._get_node_name(node)
86
91
  for child in node.children:
87
92
  visit_node(child, class_name)
93
+ extracted = True
88
94
  elif node_type == "method_definition":
89
95
  chunks.extend(self._extract_method(node, lines, file_path, current_class))
96
+ extracted = True
90
97
  elif node_type == "lexical_declaration":
91
98
  # const/let declarations might be arrow functions
92
- chunks.extend(self._extract_variable_function(node, lines, file_path, current_class))
93
-
94
- # Recurse into children
95
- if hasattr(node, 'children'):
99
+ extracted_chunks = self._extract_variable_function(node, lines, file_path, current_class)
100
+ if extracted_chunks:
101
+ chunks.extend(extracted_chunks)
102
+ extracted = True
103
+
104
+ # Only recurse into children if we didn't extract this node
105
+ # This prevents double-extraction of arrow functions in variable declarations
106
+ if not extracted and hasattr(node, 'children'):
96
107
  for child in node.children:
97
- if child.type not in ("class_declaration", "function_declaration"):
98
- visit_node(child, current_class)
108
+ visit_node(child, current_class)
99
109
 
100
110
  visit_node(tree.root_node)
101
111
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mcp-vector-search
3
- Version: 0.8.4
3
+ Version: 0.8.6
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
@@ -1,4 +1,4 @@
1
- mcp_vector_search/__init__.py,sha256=M5nv5AoHPpQkDpjs3z7LVlatwiz3GoyAtx5eDyhiAx0,299
1
+ mcp_vector_search/__init__.py,sha256=GFx5OLK_afqJebQE8XyFQlZt6ijQuje3_g3yZphBgs4,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
4
  mcp_vector_search/cli/didyoumean.py,sha256=F_ss-EX4F9RgnMsEhdTwLpyNCah9SqnBZc2tBtzASck,15918
@@ -34,7 +34,7 @@ mcp_vector_search/core/exceptions.py,sha256=3bCjT8wmrLz_0e_Tayr90049zNTKYFWZa19k
34
34
  mcp_vector_search/core/factory.py,sha256=tM6Ft-V9buF7nn9xbRMU1ngji-BJOKt6BhtfQhFLmF4,10384
35
35
  mcp_vector_search/core/git_hooks.py,sha256=xOfPpzgKoNTwM-vbhAihUucgudBQk45bCAVR5zJOFlQ,10878
36
36
  mcp_vector_search/core/indexer.py,sha256=IpCzP50wLOttWuUI-NE0qwYq-LlbDo5lrGfVMFMzwAM,29089
37
- mcp_vector_search/core/models.py,sha256=ynhb6-YuY7m4FwQBHdDbts3hYbJdr8UeYmQkag3EEKA,8814
37
+ mcp_vector_search/core/models.py,sha256=f9T2vZxhOUun1nGgdhNLGQGojZewFUi9W_rvYf-IfAo,8838
38
38
  mcp_vector_search/core/project.py,sha256=l81uc5B4CB8VXDbcHzF-_CagxIERDh23tH0iNqTePTs,10403
39
39
  mcp_vector_search/core/scheduler.py,sha256=PBSlu-ieDYCXOMGYY7QKv9UReFEDPHNmwnUv_xb4vxg,11761
40
40
  mcp_vector_search/core/search.py,sha256=9OC8-KwWdbw4y4QPQ-VXfz0encVHTJWYLtah3_chqG8,33682
@@ -46,7 +46,7 @@ mcp_vector_search/parsers/__init__.py,sha256=jr0Yqz1xMok4lnG7_aXnkZThGuefrlAj8PW
46
46
  mcp_vector_search/parsers/base.py,sha256=KS0bJeGoZamdqGS7KdAOGFxO_P_-TsjrlBnuzeu8B5U,8768
47
47
  mcp_vector_search/parsers/dart.py,sha256=li2JP0vwpSsZnMNq0PweZCD_o-y1jUwubHlSA8nm8KQ,21816
48
48
  mcp_vector_search/parsers/html.py,sha256=nzEVDV4oCBp3wpL8vp6WWx5eqiB39agu9E048JkuRJQ,13010
49
- mcp_vector_search/parsers/javascript.py,sha256=WlEBDr773TM4D6KNpHQq93vtbzZ7xtXWNkOivLGMsAE,23386
49
+ mcp_vector_search/parsers/javascript.py,sha256=BPBesLTf3wAMw6di7bx2HclDkxc0am2Bp4uLHXQ1BxI,23789
50
50
  mcp_vector_search/parsers/php.py,sha256=1QjnE8SAQF86VQ7pNfn1Pmpg5Dni4M7KCLU7212DkXM,24774
51
51
  mcp_vector_search/parsers/python.py,sha256=1KwubEIpyxHPCnlxN8EMb745A14JJ7J4YO2iVOeuHfs,19092
52
52
  mcp_vector_search/parsers/registry.py,sha256=L00EUp58ff_xatgQW-cBvE0AVBQi7cGtvr6zWV_NYbc,6457
@@ -57,8 +57,8 @@ mcp_vector_search/utils/__init__.py,sha256=Eq6lY-oPMfCt-GpPUbg9QbmTHuQVmTaVDBMU2
57
57
  mcp_vector_search/utils/gitignore.py,sha256=GiHQu9kv9PRLsWuNS8kbpXsTaBdhlsSHTu1NrZ8Ug5Y,8162
58
58
  mcp_vector_search/utils/timing.py,sha256=THC7mfbTYnUpnnDcblgQacYMzbEkfFoIShx6plmhCgg,11285
59
59
  mcp_vector_search/utils/version.py,sha256=d7fS-CLemxb8UzZ9j18zH0Y0Ud097ljKKYYOPulnGPE,1138
60
- mcp_vector_search-0.8.4.dist-info/METADATA,sha256=MZyBEwQ8cB6X5VBBPWdoAqnj_VLrD5hTLuJchLIo0IA,19120
61
- mcp_vector_search-0.8.4.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
62
- mcp_vector_search-0.8.4.dist-info/entry_points.txt,sha256=y3Ygtc_JiBchNEIL-tPABo7EbzBExGAxwGdkkeP5D2I,86
63
- mcp_vector_search-0.8.4.dist-info/licenses/LICENSE,sha256=FqZUgGJH_tZKZLQsMCpXaLawRyLmyFKRVfMwYyEcyTs,1072
64
- mcp_vector_search-0.8.4.dist-info/RECORD,,
60
+ mcp_vector_search-0.8.6.dist-info/METADATA,sha256=SyiFRK8r5ey_7DjYXBBYfW3fkh76M5jk4Gx4z19xOeo,19120
61
+ mcp_vector_search-0.8.6.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
62
+ mcp_vector_search-0.8.6.dist-info/entry_points.txt,sha256=y3Ygtc_JiBchNEIL-tPABo7EbzBExGAxwGdkkeP5D2I,86
63
+ mcp_vector_search-0.8.6.dist-info/licenses/LICENSE,sha256=FqZUgGJH_tZKZLQsMCpXaLawRyLmyFKRVfMwYyEcyTs,1072
64
+ mcp_vector_search-0.8.6.dist-info/RECORD,,