tree-sitter-analyzer 0.9.9__py3-none-any.whl → 1.1.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 tree-sitter-analyzer might be problematic. Click here for more details.

Files changed (28) hide show
  1. tree_sitter_analyzer/__init__.py +1 -1
  2. tree_sitter_analyzer/api.py +11 -2
  3. tree_sitter_analyzer/cli/commands/base_command.py +2 -2
  4. tree_sitter_analyzer/cli/commands/partial_read_command.py +2 -2
  5. tree_sitter_analyzer/cli/info_commands.py +7 -4
  6. tree_sitter_analyzer/cli_main.py +1 -2
  7. tree_sitter_analyzer/core/analysis_engine.py +2 -2
  8. tree_sitter_analyzer/core/query_service.py +162 -162
  9. tree_sitter_analyzer/file_handler.py +6 -4
  10. tree_sitter_analyzer/formatters/base_formatter.py +6 -4
  11. tree_sitter_analyzer/mcp/__init__.py +1 -1
  12. tree_sitter_analyzer/mcp/resources/__init__.py +1 -1
  13. tree_sitter_analyzer/mcp/resources/project_stats_resource.py +16 -5
  14. tree_sitter_analyzer/mcp/server.py +16 -11
  15. tree_sitter_analyzer/mcp/tools/__init__.py +1 -1
  16. tree_sitter_analyzer/mcp/utils/__init__.py +2 -2
  17. tree_sitter_analyzer/mcp/utils/error_handler.py +569 -569
  18. tree_sitter_analyzer/mcp/utils/path_resolver.py +240 -20
  19. tree_sitter_analyzer/output_manager.py +7 -3
  20. tree_sitter_analyzer/project_detector.py +27 -27
  21. tree_sitter_analyzer/security/boundary_manager.py +37 -28
  22. tree_sitter_analyzer/security/validator.py +23 -12
  23. tree_sitter_analyzer/table_formatter.py +6 -4
  24. tree_sitter_analyzer/utils.py +1 -2
  25. {tree_sitter_analyzer-0.9.9.dist-info → tree_sitter_analyzer-1.1.0.dist-info}/METADATA +38 -12
  26. {tree_sitter_analyzer-0.9.9.dist-info → tree_sitter_analyzer-1.1.0.dist-info}/RECORD +28 -28
  27. {tree_sitter_analyzer-0.9.9.dist-info → tree_sitter_analyzer-1.1.0.dist-info}/WHEEL +0 -0
  28. {tree_sitter_analyzer-0.9.9.dist-info → tree_sitter_analyzer-1.1.0.dist-info}/entry_points.txt +0 -0
@@ -6,8 +6,8 @@ Provides unified security validation framework inspired by code-index-mcp's
6
6
  ValidationHelper but enhanced for tree-sitter analyzer's requirements.
7
7
  """
8
8
 
9
- import os
10
9
  import re
10
+ from pathlib import Path
11
11
 
12
12
  from ..exceptions import SecurityError
13
13
  from ..utils import log_debug, log_warning
@@ -75,11 +75,18 @@ class SecurityValidator:
75
75
  return False, "File path contains null bytes"
76
76
 
77
77
  # Layer 3: Windows drive letter check (only on non-Windows systems)
78
- if len(file_path) > 1 and file_path[1] == ":" and os.name != "nt":
78
+ # Check if we're on Windows by checking for drive letter support
79
+ import platform
80
+
81
+ if (
82
+ len(file_path) > 1
83
+ and file_path[1] == ":"
84
+ and platform.system() != "Windows"
85
+ ):
79
86
  return False, "Windows drive letters are not allowed on this system"
80
87
 
81
88
  # Layer 4: Absolute path check (cross-platform)
82
- if os.path.isabs(file_path) or file_path.startswith(("/", "\\")):
89
+ if Path(file_path).is_absolute() or file_path.startswith(("/", "\\")):
83
90
  # If project boundaries are configured, enforce them strictly
84
91
  if self.boundary_manager and self.boundary_manager.project_root:
85
92
  if not self.boundary_manager.is_within_project(file_path):
@@ -91,14 +98,17 @@ class SecurityValidator:
91
98
  # paths under system temp folder only (safe sandbox)
92
99
  import tempfile
93
100
 
94
- temp_dir = os.path.realpath(tempfile.gettempdir())
95
- real_path = os.path.realpath(file_path)
96
- if real_path.startswith(temp_dir + os.sep) or real_path == temp_dir:
101
+ temp_dir = Path(tempfile.gettempdir()).resolve()
102
+ real_path = Path(file_path).resolve()
103
+ try:
104
+ real_path.relative_to(temp_dir)
97
105
  return True, ""
106
+ except ValueError:
107
+ pass
98
108
  return False, "Absolute file paths are not allowed"
99
109
 
100
110
  # Layer 5: Path normalization and traversal check
101
- norm_path = os.path.normpath(file_path)
111
+ norm_path = str(Path(file_path))
102
112
  if "..\\" in norm_path or "../" in norm_path or norm_path.startswith(".."):
103
113
  log_warning(f"Path traversal attempt detected: {file_path}")
104
114
  return False, "Directory traversal not allowed"
@@ -106,7 +116,7 @@ class SecurityValidator:
106
116
  # Layer 6: Project boundary validation
107
117
  if self.boundary_manager and base_path:
108
118
  if not self.boundary_manager.is_within_project(
109
- os.path.join(base_path, norm_path)
119
+ str(Path(base_path) / norm_path)
110
120
  ):
111
121
  return (
112
122
  False,
@@ -115,8 +125,8 @@ class SecurityValidator:
115
125
 
116
126
  # Layer 7: Symbolic link check (if file exists)
117
127
  if base_path:
118
- full_path = os.path.join(base_path, norm_path)
119
- if os.path.exists(full_path) and os.path.islink(full_path):
128
+ full_path = Path(base_path) / norm_path
129
+ if full_path.exists() and full_path.is_symlink():
120
130
  log_warning(f"Symbolic link detected: {full_path}")
121
131
  return False, "Symbolic links are not allowed"
122
132
 
@@ -148,10 +158,11 @@ class SecurityValidator:
148
158
 
149
159
  # Check if path exists and is directory
150
160
  if must_exist:
151
- if not os.path.exists(dir_path):
161
+ dir_path_obj = Path(dir_path)
162
+ if not dir_path_obj.exists():
152
163
  return False, f"Directory does not exist: {dir_path}"
153
164
 
154
- if not os.path.isdir(dir_path):
165
+ if not dir_path_obj.is_dir():
155
166
  return False, f"Path is not a directory: {dir_path}"
156
167
 
157
168
  log_debug(f"Directory path validation passed: {dir_path}")
@@ -7,7 +7,6 @@ Provides table-formatted output for Java code analysis results.
7
7
 
8
8
  import csv
9
9
  import io
10
- import os
11
10
  from typing import Any
12
11
 
13
12
 
@@ -26,12 +25,15 @@ class TableFormatter:
26
25
 
27
26
  def _get_platform_newline(self) -> str:
28
27
  """Get platform-specific newline character"""
29
- return os.linesep
28
+ import os
29
+
30
+ return "\r\n" if os.name == "nt" else "\n" # Windows uses \r\n, others use \n
30
31
 
31
32
  def _convert_to_platform_newlines(self, text: str) -> str:
32
33
  """Convert standard \\n to platform-specific newline characters"""
33
- if os.linesep != "\n":
34
- return text.replace("\n", os.linesep)
34
+ platform_newline = self._get_platform_newline()
35
+ if platform_newline != "\n":
36
+ return text.replace("\n", platform_newline)
35
37
  return text
36
38
 
37
39
  def format_structure(self, structure_data: dict[str, Any]) -> str:
@@ -7,6 +7,7 @@ Provides logging, debugging, and common utility functions.
7
7
 
8
8
  import atexit
9
9
  import logging
10
+ import os
10
11
  import sys
11
12
  from functools import wraps
12
13
  from typing import Any
@@ -17,8 +18,6 @@ def setup_logger(
17
18
  name: str = "tree_sitter_analyzer", level: int = logging.WARNING
18
19
  ) -> logging.Logger:
19
20
  """Setup unified logger for the project"""
20
- import os
21
-
22
21
  # Get log level from environment variable
23
22
  env_level = os.environ.get("LOG_LEVEL", "").upper()
24
23
  if env_level == "DEBUG":
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: tree-sitter-analyzer
3
- Version: 0.9.9
3
+ Version: 1.1.0
4
4
  Summary: Extensible multi-language code analyzer framework using Tree-sitter with dynamic plugin architecture
5
5
  Project-URL: Homepage, https://github.com/aimasteracc/tree-sitter-analyzer
6
6
  Project-URL: Documentation, https://github.com/aimasteracc/tree-sitter-analyzer#readme
@@ -39,6 +39,32 @@ Requires-Dist: tree-sitter-java>=0.23.5
39
39
  Requires-Dist: tree-sitter-javascript>=0.23.1
40
40
  Requires-Dist: tree-sitter-python>=0.23.6
41
41
  Requires-Dist: tree-sitter==0.24.0
42
+ Provides-Extra: all
43
+ Requires-Dist: anyio>=4.0.0; extra == 'all'
44
+ Requires-Dist: black>=24.0.0; extra == 'all'
45
+ Requires-Dist: httpx<1.0.0,>=0.27.0; extra == 'all'
46
+ Requires-Dist: isort>=5.13.0; extra == 'all'
47
+ Requires-Dist: mcp>=1.12.2; extra == 'all'
48
+ Requires-Dist: memory-profiler>=0.61.0; extra == 'all'
49
+ Requires-Dist: mypy>=1.17.0; extra == 'all'
50
+ Requires-Dist: pre-commit>=3.0.0; extra == 'all'
51
+ Requires-Dist: psutil<6,>=5.9.6; extra == 'all'
52
+ Requires-Dist: pydantic-settings>=2.2.1; extra == 'all'
53
+ Requires-Dist: pydantic>=2.5.0; extra == 'all'
54
+ Requires-Dist: pytest-asyncio>=1.1.0; extra == 'all'
55
+ Requires-Dist: pytest-cov>=4.0.0; extra == 'all'
56
+ Requires-Dist: pytest-mock>=3.14.1; extra == 'all'
57
+ Requires-Dist: pytest>=8.4.1; extra == 'all'
58
+ Requires-Dist: ruff>=0.5.0; extra == 'all'
59
+ Requires-Dist: tree-sitter-c>=0.20.0; extra == 'all'
60
+ Requires-Dist: tree-sitter-cpp>=0.23.4; extra == 'all'
61
+ Requires-Dist: tree-sitter-go>=0.20.0; extra == 'all'
62
+ Requires-Dist: tree-sitter-java>=0.23.5; extra == 'all'
63
+ Requires-Dist: tree-sitter-javascript>=0.23.1; extra == 'all'
64
+ Requires-Dist: tree-sitter-python>=0.23.0; extra == 'all'
65
+ Requires-Dist: tree-sitter-rust>=0.20.0; extra == 'all'
66
+ Requires-Dist: tree-sitter-typescript>=0.20.0; extra == 'all'
67
+ Requires-Dist: types-psutil>=5.9.0; extra == 'all'
42
68
  Provides-Extra: all-languages
43
69
  Requires-Dist: tree-sitter-c>=0.20.0; extra == 'all-languages'
44
70
  Requires-Dist: tree-sitter-cpp>=0.23.4; extra == 'all-languages'
@@ -137,11 +163,11 @@ Description-Content-Type: text/markdown
137
163
 
138
164
  [![Python Version](https://img.shields.io/badge/python-3.10%2B-blue.svg)](https://python.org)
139
165
  [![License](https://img.shields.io/badge/license-MIT-green.svg)](LICENSE)
140
- [![Tests](https://img.shields.io/badge/tests-1358%20passed-brightgreen.svg)](#quality-assurance)
141
- [![Coverage](https://img.shields.io/badge/coverage-74.54%25-green.svg)](#quality-assurance)
166
+ [![Tests](https://img.shields.io/badge/1504-brightgreen.svg)](#quality-assurance)
167
+ [![Coverage](https://img.shields.io/badge/coverage-74.30%25-green.svg)](#quality-assurance)
142
168
  [![Quality](https://img.shields.io/badge/quality-enterprise%20grade-blue.svg)](#quality-assurance)
143
169
  [![PyPI](https://img.shields.io/pypi/v/tree-sitter-analyzer.svg)](https://pypi.org/project/tree-sitter-analyzer/)
144
- [![Version](https://img.shields.io/badge/version-0.9.9-blue.svg)](https://github.com/aimasteracc/tree-sitter-analyzer/releases)
170
+ [![Version](https://img.shields.io/badge/version-1.0.0-blue.svg)](https://github.com/aimasteracc/tree-sitter-analyzer/releases)
145
171
  [![GitHub Stars](https://img.shields.io/github/stars/aimasteracc/tree-sitter-analyzer.svg?style=social)](https://github.com/aimasteracc/tree-sitter-analyzer)
146
172
 
147
173
  ## 🚀 Break Through LLM Token Limits, Let AI Understand Code Files of Any Size
@@ -556,17 +582,17 @@ Tree-sitter Analyzer automatically detects and protects project boundaries:
556
582
  ## 🏆 Quality Assurance
557
583
 
558
584
  ### 📊 **Quality Metrics**
559
- - **1,358 Tests** - 100% pass rate ✅
560
- - **74.54% Code Coverage** - Industry-leading level
585
+ - **1,1504** - 100% pass rate ✅
586
+ - **74.44% Code Coverage** - Industry-leading level
561
587
  - **Zero Test Failures** - Complete CI/CD ready
562
588
  - **Cross-platform Compatible** - Windows, macOS, Linux
563
589
 
564
- ### ⚡ **Latest Quality Achievements (v0.9.9)**
565
- - ✅ **Unified Path Resolution System** - Centralized PathResolver for all MCP tools
566
- - ✅ **Cross-platform Compatibility** - Fixed Windows path separator issues
567
- - ✅ **MCP Tools Enhancement** - Eliminated FileNotFoundError in all tools
568
- - ✅ **Comprehensive Test Coverage** - 74.54% coverage with 1358 tests
569
- - ✅ **Multi-language Documentation** - Complete updates in EN/ZH/JA
590
+ ### ⚡ **Latest Quality Achievements (v1.0.0)**
591
+ - ✅ **Cross-Platform Path Compatibility** - Fixed Windows short path names and macOS symlink differences
592
+ - ✅ **Windows Environment** - Implemented robust path normalization using Windows API
593
+ - ✅ **macOS Environment** - Fixed `/var` vs `/private/var` symlink differences
594
+ - ✅ **Comprehensive Test Coverage** - 74.44% coverage with 1504 tests
595
+ - ✅ **GitFlow Implementation** - Professional branching strategy with develop/release branches. See [GitFlow Documentation](GITFLOW.md) for details.
570
596
 
571
597
  ### ⚙️ **Running Tests**
572
598
  ```bash
@@ -1,40 +1,40 @@
1
- tree_sitter_analyzer/__init__.py,sha256=s3ujsrPqtaOM9-Z0B6L3Nd_TdSTFM2MPF96l0yFoAK8,3067
1
+ tree_sitter_analyzer/__init__.py,sha256=mNfMb8IDk8tBcuUUMUaS9rBKhut-K8cc85Gz6EiceOI,3067
2
2
  tree_sitter_analyzer/__main__.py,sha256=Zl79tpe4UaMu-7yeztc06tgP0CVMRnvGgas4ZQP5SCs,228
3
- tree_sitter_analyzer/api.py,sha256=naRtGuZ27AIVfn6Rid0zQcHDI71UpO9Nh4NQM9JyD3c,16954
4
- tree_sitter_analyzer/cli_main.py,sha256=4uIwje6n2qQvTsX4RBgqFgznxJs8RcCnS1GQjrR5IGQ,10354
3
+ tree_sitter_analyzer/api.py,sha256=N_bcf1pLwzXS3elPn30OySLR6ehsHdWpchXMycjl0PY,17399
4
+ tree_sitter_analyzer/cli_main.py,sha256=jWjVJ5AgNmtf6Z7CgeK3IF-zi7yIiu9zn4Oyvzl-iNQ,10349
5
5
  tree_sitter_analyzer/encoding_utils.py,sha256=NHkqOt7GdrxgMsd3k0rVxSO0mWJZXODw3uwl2Qk9ufc,14803
6
6
  tree_sitter_analyzer/exceptions.py,sha256=AZryCQyKXekAg8lQZd3zqULnjhCKovBNNpnUlNGDhcI,11615
7
- tree_sitter_analyzer/file_handler.py,sha256=nUD17QIdOJ2bnXekuo-QzGQFv0f2rxCSJi-zWeQFSAs,6636
7
+ tree_sitter_analyzer/file_handler.py,sha256=mtWz-DE4yfmak347s0e20xFNy3qddcek58Enom5GlZQ,6689
8
8
  tree_sitter_analyzer/language_detector.py,sha256=pn3nQClo8b_Ar8dS5X3hq9_t5IIlIcizIC0twMaowU4,11693
9
9
  tree_sitter_analyzer/language_loader.py,sha256=P1vOa9NR_iVCpawpjziP1uQTX1uL6bgzTb6F9tw4pAc,7900
10
10
  tree_sitter_analyzer/models.py,sha256=SrPxiRvlcH0uyOao47tzK-rVqK82JkmmxdU6yJlucSc,16014
11
- tree_sitter_analyzer/output_manager.py,sha256=saZ8Ss6PhUJgjjwviLgrePFL7CCLMixxdKtdrpuFgHM,8146
12
- tree_sitter_analyzer/project_detector.py,sha256=VdZTnY25M2fJTA3MLUzPIjXJtOCPATKlkshEF3eUV7U,9444
11
+ tree_sitter_analyzer/output_manager.py,sha256=iqzYion317D6EIEliUTiwUM8d4XHy3cHImCDcElhyNY,8263
12
+ tree_sitter_analyzer/project_detector.py,sha256=10-aaIvgQSOkoR-1cWAyWVHAdEnJUEv0yOdxzN_VEv0,9463
13
13
  tree_sitter_analyzer/query_loader.py,sha256=jcJc6_kIMeZINfTVGuiEmDii9LViP_pbJfg4A9phJY4,9863
14
- tree_sitter_analyzer/table_formatter.py,sha256=Pcow5vNQtX4lTgdQ-DaNd5Wc2xnWwv7KkjNxnfZPxAQ,27551
15
- tree_sitter_analyzer/utils.py,sha256=3TvlQpzOiuesRI_HD0C-BON4NKvvC8yhutV2ssjWmwo,10753
14
+ tree_sitter_analyzer/table_formatter.py,sha256=qqMFEavDpqfqn6Qt2QPShUvqzVdBLYsbwuBar1WVnkw,27689
15
+ tree_sitter_analyzer/utils.py,sha256=1x6V7xqrhHMyVQFnUzWWxK3D7maK2XqboK0BLW_PLyQ,10748
16
16
  tree_sitter_analyzer/cli/__init__.py,sha256=O_3URpbdu5Ilb2-r48LjbZuWtOWQu_BhL3pa6C0G3Bk,871
17
17
  tree_sitter_analyzer/cli/__main__.py,sha256=Xq8o8-0dPnMDU9WZqmqhzr98rx8rvoffTUHAkAwl-L8,218
18
- tree_sitter_analyzer/cli/info_commands.py,sha256=Eev5iG9upn9id1nE2W7Z6-Q5s-o2pDDnMvoyZxh8nmg,4284
18
+ tree_sitter_analyzer/cli/info_commands.py,sha256=thWCLZ4iGVmqxuQfUz3t-uNRv9X3lgtWnsUJm6mbJ7o,4432
19
19
  tree_sitter_analyzer/cli/commands/__init__.py,sha256=jpcpM1ptLuxLMBDUv1y_a87k8RAw1otFzeYpWtXvz3Y,671
20
20
  tree_sitter_analyzer/cli/commands/advanced_command.py,sha256=xDZI4zKTMHNdf7fc_QN0eAQ8a5MnRb5DJ29ERLBDUQs,3424
21
- tree_sitter_analyzer/cli/commands/base_command.py,sha256=o_xjKhn2J5bbGeNC980tALozT1WlsttI0owhLbV2hDM,6597
21
+ tree_sitter_analyzer/cli/commands/base_command.py,sha256=MGlRA6sIcMt6ta-07NOFcPz8-eUwwS2g-JlBVYn105s,6611
22
22
  tree_sitter_analyzer/cli/commands/default_command.py,sha256=RAR_eaOK3EndIqU7QL5UAn44mwyhItTN7aUaKL1WmSc,524
23
- tree_sitter_analyzer/cli/commands/partial_read_command.py,sha256=RGZsEBybu6PhOQDHBXuhs6l4ZlDcFaxj2bNOvSqKY80,4605
23
+ tree_sitter_analyzer/cli/commands/partial_read_command.py,sha256=lbuy9X_q5pyf_cJXVvx_AYJg_tfxF1R0U93Is-MVW_A,4619
24
24
  tree_sitter_analyzer/cli/commands/query_command.py,sha256=VFuCFJxffjSUrMa7NB_KJmMexUnJmnazpTDbw-i9Ulw,4003
25
25
  tree_sitter_analyzer/cli/commands/structure_command.py,sha256=0iJwjOgtW838hXleXogWhbu6eQFfrLR1QgKe5PFBqvU,5220
26
26
  tree_sitter_analyzer/cli/commands/summary_command.py,sha256=02WA3sOzfT83FVT6sW7nK04zVcZ9Qj_1S0WloqlTnFk,3602
27
27
  tree_sitter_analyzer/cli/commands/table_command.py,sha256=GvGpLZ_YwE5syufNMfvjPrzwt-bXUtAF7EoOQ0Dr_O0,9441
28
28
  tree_sitter_analyzer/core/__init__.py,sha256=VlYOy1epW16vjaVd__knESewnU0sfXF9a4hjrFxiSEE,440
29
- tree_sitter_analyzer/core/analysis_engine.py,sha256=CyNMMC10YgdJWIY9tdjkaariIyO-UV_yFVPFsewGzaA,18897
29
+ tree_sitter_analyzer/core/analysis_engine.py,sha256=NNbYIfIgZPY0Q2ZC2do_akw3pa5_fbbnowU4hRsDS9Q,18904
30
30
  tree_sitter_analyzer/core/cache_service.py,sha256=0oZGuTpeHBKYNdnqAOVi6VlQukYMIHncz2pbVfNpSqE,9762
31
31
  tree_sitter_analyzer/core/engine.py,sha256=VFXGowDj6EfjFSh2MQDkQIc-4ISXaOg38n4lUhVY5Os,18721
32
32
  tree_sitter_analyzer/core/parser.py,sha256=qT3yIlTRdod4tf_2o1hU_B-GYGukyM2BtaFxzSoxois,9293
33
33
  tree_sitter_analyzer/core/query.py,sha256=UhQxUmQitFobe2YM7Ifhi3X2WdHVb02KzeBunueYJ4I,16397
34
34
  tree_sitter_analyzer/core/query_filter.py,sha256=PvGztAZFooFNZe6iHNmbg6RUNtMvq6f6hBZFzllig6Y,6591
35
- tree_sitter_analyzer/core/query_service.py,sha256=lHlvtu7LoG-IEAOqQ-RwF-a5puEI9wqaGez4cnJZiO4,5704
35
+ tree_sitter_analyzer/core/query_service.py,sha256=j9v3w2j3axhxzFEbZLovDNT2h6kF4PWbJVL_PmKl3ho,5542
36
36
  tree_sitter_analyzer/formatters/__init__.py,sha256=yVb4HF_4EEPRwTf3y3-vM2NllrhykG3zlvQhN-6dB4c,31
37
- tree_sitter_analyzer/formatters/base_formatter.py,sha256=Uv6uVgUKwbBn6of26bnvr4u6CmX2ka1a405VL17CGFU,5763
37
+ tree_sitter_analyzer/formatters/base_formatter.py,sha256=XZwZ0klyCnmNkpWnMP7dy0XGaHForjE-BnBt1XZoQE8,5901
38
38
  tree_sitter_analyzer/formatters/formatter_factory.py,sha256=mCnAbEHycoSttSuF4dU78hzcxyg-h57bo0_bj00zw58,2069
39
39
  tree_sitter_analyzer/formatters/java_formatter.py,sha256=0jxKfrWtsr_K2VG1zW0LH2E6w6nfpIhcXTfIyWw3Jmc,11163
40
40
  tree_sitter_analyzer/formatters/python_formatter.py,sha256=gHP4OtEwvv2ASbmTbyZNvQSP5r4Et4-sAMWr36y0k1Y,9840
@@ -47,12 +47,12 @@ tree_sitter_analyzer/languages/__init__.py,sha256=VTXxJgVjHJAciLhX0zzXOS4EygZMte
47
47
  tree_sitter_analyzer/languages/java_plugin.py,sha256=ZTtDgyUdv-b9fFvCMEL3xS-yr0rfMueKkVleDybisag,47233
48
48
  tree_sitter_analyzer/languages/javascript_plugin.py,sha256=k14kHfi5II9MRTsVuy0NQq5l2KZYncCnM1Q6T1c5q_U,15844
49
49
  tree_sitter_analyzer/languages/python_plugin.py,sha256=MJ03F_Nv-nmInIkEFmPyEXYhyGbLHyr5kCbj2taEDYk,29144
50
- tree_sitter_analyzer/mcp/__init__.py,sha256=Dj4aqt_6inDKQ1xmA6DNMNDQBHzToqBjSWazdAWZgCY,944
51
- tree_sitter_analyzer/mcp/server.py,sha256=93baLte6ub2rnxr5EKfeknpN1t2BWraTm6Mk4imvHVU,25068
52
- tree_sitter_analyzer/mcp/resources/__init__.py,sha256=SWnK8liTQkuQXlVgyRP9mf5HzpqmqohShrC98xlNnDc,1389
50
+ tree_sitter_analyzer/mcp/__init__.py,sha256=FfuHi1pWJpRERx21AB5HktTljmh5-OnmpVuCye_SFOY,944
51
+ tree_sitter_analyzer/mcp/server.py,sha256=m-Vf2BQBzx5jCJRGLooznUP8R6cYfdYTZva5qPjZtv0,25222
52
+ tree_sitter_analyzer/mcp/resources/__init__.py,sha256=zBHnLTvNn9p4qW2Ck8afOAD3f40YcgByn3rXuDl524s,1389
53
53
  tree_sitter_analyzer/mcp/resources/code_file_resource.py,sha256=ZX5ZYSJfylBedpL80kTDlco2YZqgRMb5f3OW0VvOVRM,6166
54
- tree_sitter_analyzer/mcp/resources/project_stats_resource.py,sha256=V5-daZ99SU4rOt7qLk9GmhkzdXJpEINBobNlT14ojYY,19441
55
- tree_sitter_analyzer/mcp/tools/__init__.py,sha256=u7JrSLwE95y50mfjSus6HRdtdhkNbVrW8jP4AooawEU,762
54
+ tree_sitter_analyzer/mcp/resources/project_stats_resource.py,sha256=r2owXkWrZ-Ee9hLGpt-SSNOxzrzuNVgNXcwxQghCcrM,20057
55
+ tree_sitter_analyzer/mcp/tools/__init__.py,sha256=9tAOgJjB75SQNY0X7kr9GHj37DEwV3bTU7Qb6kuimBs,762
56
56
  tree_sitter_analyzer/mcp/tools/analyze_scale_tool.py,sha256=ZiwIzVbzSMoUXpuC94-N9_xLrlSCWEFlHv2nB_ibOgU,27856
57
57
  tree_sitter_analyzer/mcp/tools/analyze_scale_tool_cli_compatible.py,sha256=mssed7bEfGeGxW4mOf7dg8BDS1oqHLolIBNX9DaZ3DM,8997
58
58
  tree_sitter_analyzer/mcp/tools/base_tool.py,sha256=FVSMgKIliQ5EBVQEfjYwWeqzWt9OqOFDr3dyACIDxig,1210
@@ -60,9 +60,9 @@ tree_sitter_analyzer/mcp/tools/query_tool.py,sha256=UzJSfVXr6DsF1E8EdysMHxlYOREZ
60
60
  tree_sitter_analyzer/mcp/tools/read_partial_tool.py,sha256=Hc4PnF7wBBRhxVlzuqaz1rBA5rWSNvC6qEiWSLqdogI,11504
61
61
  tree_sitter_analyzer/mcp/tools/table_format_tool.py,sha256=YeZs5tL8hjWOCR-v6VekNDMyCQOcNI06wHGbGdnacIQ,15451
62
62
  tree_sitter_analyzer/mcp/tools/universal_analyze_tool.py,sha256=cdc1K-NZomQK7PD1viVR1kBaNWwDeo1FrU0nn5sb1YA,22141
63
- tree_sitter_analyzer/mcp/utils/__init__.py,sha256=6f4xTAfA7kCdk3e8r_ee-j7h84OLBEFSNvA3o-TOMqM,3148
64
- tree_sitter_analyzer/mcp/utils/error_handler.py,sha256=_XeGjfF331EEeHUnJ5cGvJB7WP0lHkD8RXtBayQElr4,18973
65
- tree_sitter_analyzer/mcp/utils/path_resolver.py,sha256=L9qTXEDwJw3I9nFIQCOdaec0Nuq-6ZvM_UXaOBV-w-c,6196
63
+ tree_sitter_analyzer/mcp/utils/__init__.py,sha256=Nsx6Yan_t_GuUpYgXAnRA6hoW--24ov9WoaSS4gst18,3148
64
+ tree_sitter_analyzer/mcp/utils/error_handler.py,sha256=msrQHX67K3vhJsEc3OPRz5mmWU_yoHz55Lnxy0IZuy4,18404
65
+ tree_sitter_analyzer/mcp/utils/path_resolver.py,sha256=7pZvJ1CjKnLKTGvBBOitCLxgWaHNVQo2SwQrxuyqXkI,14976
66
66
  tree_sitter_analyzer/plugins/__init__.py,sha256=ITE9bTz7NO4axnn8g5Z-1_ydhSLT0RnY6Y1J9OhUP3E,10326
67
67
  tree_sitter_analyzer/plugins/base.py,sha256=FMRAOtjtDutNV8RnB6cmFgdvcjxKRAbrrzqldBBT1yk,17167
68
68
  tree_sitter_analyzer/plugins/manager.py,sha256=PyEY3jeuCBpDVqguWhaAu7nzUZM17_pI6wml2e0Hamo,12535
@@ -72,10 +72,10 @@ tree_sitter_analyzer/queries/javascript.py,sha256=pnXrgISwDE5GhPHDbUKEGI3thyLmeb
72
72
  tree_sitter_analyzer/queries/python.py,sha256=L33KRUyV3sAvA3_HFkPyGgtiq0ygSpNY_n2YojodPlc,7570
73
73
  tree_sitter_analyzer/queries/typescript.py,sha256=eersyAF7TladuCWa8WE_-cO9YTF1LUSjLIl-tk2fZDo,6708
74
74
  tree_sitter_analyzer/security/__init__.py,sha256=ZTqTt24hsljCpTXAZpJC57L7MU5lJLTf_XnlvEzXwEE,623
75
- tree_sitter_analyzer/security/boundary_manager.py,sha256=CUQWU5j1zdjEbN9UmArcYkq9HbemhttQzk0pVk-vxZs,8153
75
+ tree_sitter_analyzer/security/boundary_manager.py,sha256=vdoxABe7e7pAhyuu3-NM9iVz0irHdR1EMwbICdwdr8Y,8644
76
76
  tree_sitter_analyzer/security/regex_checker.py,sha256=jWK6H8PTPgzbwRPfK_RZ8bBTS6rtEbgjY5vr3YWjQ_U,9616
77
- tree_sitter_analyzer/security/validator.py,sha256=UPAPcrnmI2mNzbYOm0MabnJMGllK6HlOQ9KX-2bRfgU,8986
78
- tree_sitter_analyzer-0.9.9.dist-info/METADATA,sha256=AVFrofFfqm7E8_ssEozsZ8L6eRNEb-DlVn3JqjzcK9M,23670
79
- tree_sitter_analyzer-0.9.9.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
80
- tree_sitter_analyzer-0.9.9.dist-info/entry_points.txt,sha256=U4tfLGXgCWubKm2PyEb3zxhQ2pm7zVotMyfyS0CodD8,486
81
- tree_sitter_analyzer-0.9.9.dist-info/RECORD,,
77
+ tree_sitter_analyzer/security/validator.py,sha256=PWczaviFTOLjyCDMFnmZNDdL-D9Y-7Mfw-EkXFpT83g,9262
78
+ tree_sitter_analyzer-1.1.0.dist-info/METADATA,sha256=K4wyQP2czsCZpx54DH5ulq1fomzlo_TU-lQ3EnmVTQY,25064
79
+ tree_sitter_analyzer-1.1.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
80
+ tree_sitter_analyzer-1.1.0.dist-info/entry_points.txt,sha256=U4tfLGXgCWubKm2PyEb3zxhQ2pm7zVotMyfyS0CodD8,486
81
+ tree_sitter_analyzer-1.1.0.dist-info/RECORD,,