beswarm 0.1.71__tar.gz → 0.1.72__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 (141) hide show
  1. {beswarm-0.1.71 → beswarm-0.1.72}/PKG-INFO +1 -1
  2. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/aient/setup.py +1 -1
  3. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/aient/src/aient/plugins/read_image.py +40 -7
  4. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm.egg-info/PKG-INFO +1 -1
  5. {beswarm-0.1.71 → beswarm-0.1.72}/pyproject.toml +1 -1
  6. {beswarm-0.1.71 → beswarm-0.1.72}/MANIFEST.in +0 -0
  7. {beswarm-0.1.71 → beswarm-0.1.72}/README.md +0 -0
  8. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/__init__.py +0 -0
  9. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/aient/main.py +0 -0
  10. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/aient/src/aient/__init__.py +0 -0
  11. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/aient/src/aient/core/__init__.py +0 -0
  12. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/aient/src/aient/core/log_config.py +0 -0
  13. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/aient/src/aient/core/models.py +0 -0
  14. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/aient/src/aient/core/request.py +0 -0
  15. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/aient/src/aient/core/response.py +0 -0
  16. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/aient/src/aient/core/test/test_base_api.py +0 -0
  17. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/aient/src/aient/core/test/test_geminimask.py +0 -0
  18. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/aient/src/aient/core/test/test_image.py +0 -0
  19. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/aient/src/aient/core/test/test_payload.py +0 -0
  20. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/aient/src/aient/core/utils.py +0 -0
  21. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/aient/src/aient/models/__init__.py +0 -0
  22. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/aient/src/aient/models/audio.py +0 -0
  23. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/aient/src/aient/models/base.py +0 -0
  24. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/aient/src/aient/models/chatgpt.py +0 -0
  25. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/aient/src/aient/models/claude.py +0 -0
  26. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/aient/src/aient/models/duckduckgo.py +0 -0
  27. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/aient/src/aient/models/gemini.py +0 -0
  28. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/aient/src/aient/models/groq.py +0 -0
  29. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/aient/src/aient/models/vertex.py +0 -0
  30. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/aient/src/aient/plugins/__init__.py +0 -0
  31. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/aient/src/aient/plugins/arXiv.py +0 -0
  32. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/aient/src/aient/plugins/config.py +0 -0
  33. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/aient/src/aient/plugins/excute_command.py +0 -0
  34. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/aient/src/aient/plugins/get_time.py +0 -0
  35. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/aient/src/aient/plugins/image.py +0 -0
  36. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/aient/src/aient/plugins/list_directory.py +0 -0
  37. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/aient/src/aient/plugins/read_file.py +0 -0
  38. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/aient/src/aient/plugins/registry.py +0 -0
  39. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/aient/src/aient/plugins/run_python.py +0 -0
  40. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/aient/src/aient/plugins/websearch.py +0 -0
  41. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/aient/src/aient/plugins/write_file.py +0 -0
  42. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/aient/src/aient/prompt/__init__.py +0 -0
  43. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/aient/src/aient/prompt/agent.py +0 -0
  44. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/aient/src/aient/utils/__init__.py +0 -0
  45. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/aient/src/aient/utils/prompt.py +0 -0
  46. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/aient/src/aient/utils/scripts.py +0 -0
  47. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/aient/test/chatgpt.py +0 -0
  48. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/aient/test/claude.py +0 -0
  49. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/aient/test/test.py +0 -0
  50. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/aient/test/test_API.py +0 -0
  51. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/aient/test/test_Deepbricks.py +0 -0
  52. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/aient/test/test_Web_crawler.py +0 -0
  53. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/aient/test/test_aiwaves.py +0 -0
  54. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/aient/test/test_aiwaves_arxiv.py +0 -0
  55. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/aient/test/test_ask_gemini.py +0 -0
  56. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/aient/test/test_class.py +0 -0
  57. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/aient/test/test_claude.py +0 -0
  58. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/aient/test/test_claude_zh_char.py +0 -0
  59. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/aient/test/test_ddg_search.py +0 -0
  60. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/aient/test/test_download_pdf.py +0 -0
  61. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/aient/test/test_gemini.py +0 -0
  62. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/aient/test/test_get_token_dict.py +0 -0
  63. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/aient/test/test_google_search.py +0 -0
  64. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/aient/test/test_jieba.py +0 -0
  65. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/aient/test/test_json.py +0 -0
  66. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/aient/test/test_logging.py +0 -0
  67. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/aient/test/test_ollama.py +0 -0
  68. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/aient/test/test_plugin.py +0 -0
  69. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/aient/test/test_py_run.py +0 -0
  70. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/aient/test/test_requests.py +0 -0
  71. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/aient/test/test_search.py +0 -0
  72. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/aient/test/test_tikitoken.py +0 -0
  73. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/aient/test/test_token.py +0 -0
  74. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/aient/test/test_url.py +0 -0
  75. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/aient/test/test_whisper.py +0 -0
  76. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/aient/test/test_wildcard.py +0 -0
  77. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/aient/test/test_yjh.py +0 -0
  78. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/queries/tree-sitter-language-pack/README.md +0 -0
  79. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/queries/tree-sitter-language-pack/arduino-tags.scm +0 -0
  80. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/queries/tree-sitter-language-pack/c-tags.scm +0 -0
  81. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/queries/tree-sitter-language-pack/chatito-tags.scm +0 -0
  82. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/queries/tree-sitter-language-pack/commonlisp-tags.scm +0 -0
  83. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/queries/tree-sitter-language-pack/cpp-tags.scm +0 -0
  84. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/queries/tree-sitter-language-pack/csharp-tags.scm +0 -0
  85. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/queries/tree-sitter-language-pack/d-tags.scm +0 -0
  86. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/queries/tree-sitter-language-pack/dart-tags.scm +0 -0
  87. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/queries/tree-sitter-language-pack/elisp-tags.scm +0 -0
  88. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/queries/tree-sitter-language-pack/elixir-tags.scm +0 -0
  89. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/queries/tree-sitter-language-pack/elm-tags.scm +0 -0
  90. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/queries/tree-sitter-language-pack/gleam-tags.scm +0 -0
  91. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/queries/tree-sitter-language-pack/go-tags.scm +0 -0
  92. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/queries/tree-sitter-language-pack/java-tags.scm +0 -0
  93. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/queries/tree-sitter-language-pack/javascript-tags.scm +0 -0
  94. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/queries/tree-sitter-language-pack/lua-tags.scm +0 -0
  95. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/queries/tree-sitter-language-pack/pony-tags.scm +0 -0
  96. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/queries/tree-sitter-language-pack/properties-tags.scm +0 -0
  97. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/queries/tree-sitter-language-pack/python-tags.scm +0 -0
  98. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/queries/tree-sitter-language-pack/r-tags.scm +0 -0
  99. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/queries/tree-sitter-language-pack/racket-tags.scm +0 -0
  100. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/queries/tree-sitter-language-pack/ruby-tags.scm +0 -0
  101. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/queries/tree-sitter-language-pack/rust-tags.scm +0 -0
  102. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/queries/tree-sitter-language-pack/solidity-tags.scm +0 -0
  103. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/queries/tree-sitter-language-pack/swift-tags.scm +0 -0
  104. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/queries/tree-sitter-language-pack/udev-tags.scm +0 -0
  105. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/queries/tree-sitter-languages/README.md +0 -0
  106. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/queries/tree-sitter-languages/c-tags.scm +0 -0
  107. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/queries/tree-sitter-languages/c_sharp-tags.scm +0 -0
  108. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/queries/tree-sitter-languages/cpp-tags.scm +0 -0
  109. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/queries/tree-sitter-languages/dart-tags.scm +0 -0
  110. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/queries/tree-sitter-languages/elisp-tags.scm +0 -0
  111. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/queries/tree-sitter-languages/elixir-tags.scm +0 -0
  112. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/queries/tree-sitter-languages/elm-tags.scm +0 -0
  113. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/queries/tree-sitter-languages/go-tags.scm +0 -0
  114. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/queries/tree-sitter-languages/hcl-tags.scm +0 -0
  115. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/queries/tree-sitter-languages/java-tags.scm +0 -0
  116. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/queries/tree-sitter-languages/javascript-tags.scm +0 -0
  117. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/queries/tree-sitter-languages/kotlin-tags.scm +0 -0
  118. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/queries/tree-sitter-languages/ocaml-tags.scm +0 -0
  119. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/queries/tree-sitter-languages/php-tags.scm +0 -0
  120. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/queries/tree-sitter-languages/python-tags.scm +0 -0
  121. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/queries/tree-sitter-languages/ql-tags.scm +0 -0
  122. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/queries/tree-sitter-languages/ruby-tags.scm +0 -0
  123. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/queries/tree-sitter-languages/rust-tags.scm +0 -0
  124. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/queries/tree-sitter-languages/scala-tags.scm +0 -0
  125. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/queries/tree-sitter-languages/typescript-tags.scm +0 -0
  126. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/tools/__init__.py +0 -0
  127. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/tools/click.py +0 -0
  128. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/tools/edit_file.py +0 -0
  129. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/tools/planner.py +0 -0
  130. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/tools/repomap.py +0 -0
  131. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/tools/screenshot.py +0 -0
  132. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/tools/search_arxiv.py +0 -0
  133. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/tools/search_web.py +0 -0
  134. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/tools/think.py +0 -0
  135. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/tools/worker.py +0 -0
  136. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm/utils.py +0 -0
  137. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm.egg-info/SOURCES.txt +0 -0
  138. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm.egg-info/dependency_links.txt +0 -0
  139. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm.egg-info/requires.txt +0 -0
  140. {beswarm-0.1.71 → beswarm-0.1.72}/beswarm.egg-info/top_level.txt +0 -0
  141. {beswarm-0.1.71 → beswarm-0.1.72}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: beswarm
3
- Version: 0.1.71
3
+ Version: 0.1.72
4
4
  Summary: MAS
5
5
  Requires-Python: >=3.11
6
6
  Description-Content-Type: text/markdown
@@ -4,7 +4,7 @@ from setuptools import setup, find_packages
4
4
 
5
5
  setup(
6
6
  name="aient",
7
- version="1.1.22",
7
+ version="1.1.23",
8
8
  description="Aient: The Awakening of Agent.",
9
9
  long_description=Path.open(Path("README.md"), encoding="utf-8").read(),
10
10
  long_description_content_type="text/markdown",
@@ -2,6 +2,8 @@ import os
2
2
  import base64
3
3
  import mimetypes
4
4
  from .registry import register_tool
5
+ import io
6
+ from PIL import Image, UnidentifiedImageError
5
7
 
6
8
  @register_tool()
7
9
  def read_image(image_path: str):
@@ -16,7 +18,12 @@ def read_image(image_path: str):
16
18
  str: 成功时返回包含图片MIME类型和Base64编码数据的格式化字符串。
17
19
  失败时返回错误信息字符串。
18
20
  """
21
+ original_max_pixels = Image.MAX_IMAGE_PIXELS
19
22
  try:
23
+ # 暂时禁用解压炸弹检查,以允许打开非常大的图像进行缩放。
24
+ # 这是安全的,因为我们控制代码,并且会立即对图像进行缩减。
25
+ Image.MAX_IMAGE_PIXELS = None
26
+
20
27
  # 检查路径是否存在
21
28
  if not os.path.exists(image_path):
22
29
  return f"<tool_error>图片路径 '{image_path}' 不存在。</tool_error>"
@@ -31,17 +38,40 @@ def read_image(image_path: str):
31
38
  # 如果mimetypes无法识别,或者不是图片类型
32
39
  return f"<tool_error>文件 '{image_path}' 的MIME类型无法识别为图片 (检测到: {mime_type})。请确保文件是常见的图片格式 (e.g., PNG, JPG, GIF, WEBP)。</tool_error>"
33
40
 
34
- with open(image_path, "rb") as image_file:
35
- image_data = image_file.read()
41
+ max_dim = 3072
42
+ with Image.open(image_path) as img:
43
+ width, height = img.size
44
+
45
+ target_img = img
46
+ if width > max_dim or height > max_dim:
47
+ if width > height:
48
+ new_width = max_dim
49
+ new_height = int(height * (max_dim / width))
50
+ else:
51
+ new_height = max_dim
52
+ new_width = int(width * (max_dim / height))
53
+
54
+ try:
55
+ resampling_filter = Image.Resampling.LANCZOS
56
+ except AttributeError:
57
+ # 兼容旧版 Pillow
58
+ resampling_filter = Image.LANCZOS
59
+
60
+ target_img = img.resize((new_width, new_height), resampling_filter)
61
+
62
+ # 将处理后的图片保存到内存中的字节流
63
+ img_byte_arr = io.BytesIO()
64
+ # 保留原始图片格式以获得最佳兼容性,如果无法确定格式,默认为PNG
65
+ img_format = img.format or 'PNG'
66
+ target_img.save(img_byte_arr, format=img_format)
67
+ image_data = img_byte_arr.getvalue()
36
68
 
37
69
  base64_encoded_data = base64.b64encode(image_data).decode('utf-8')
38
70
 
39
- # 返回一个描述性字符串,模仿 list_directory.py 的风格
40
- # 包含完整的 Base64 数据
41
- # 注意:对于非常大的图片,这可能会产生非常长的输出字符串。
42
- # return f"成功读取图片 '{image_path}':\n MIME 类型: {mime_type}\n Base64 数据: {base64_encoded_data}"
43
71
  return f"data:{mime_type};base64," + base64_encoded_data
44
72
 
73
+ except UnidentifiedImageError:
74
+ return f"<tool_error>无法识别的图片格式 '{image_path}',文件可能已损坏或格式不受支持。</tool_error>"
45
75
  except FileNotFoundError:
46
76
  # 这个异常通常由 open() 抛出,如果 os.path.exists 通过但文件在读取前被删除
47
77
  # 或者路径检查逻辑未能完全覆盖所有情况 (理论上不应发生)
@@ -51,4 +81,7 @@ def read_image(image_path: str):
51
81
  except IOError as e: # 例如文件损坏无法读取,或磁盘问题
52
82
  return f"<tool_error>读取图片 '{image_path}' 时发生 I/O 错误: {e}</tool_error>"
53
83
  except Exception as e:
54
- return f"<tool_error>读取图片 '{image_path}' 时发生未知错误: {e}</tool_error>"
84
+ return f"<tool_error>读取图片 '{image_path}' 时发生未知错误: {e}</tool_error>"
85
+ finally:
86
+ # 恢复原始限制以避免副作用。
87
+ Image.MAX_IMAGE_PIXELS = original_max_pixels
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: beswarm
3
- Version: 0.1.71
3
+ Version: 0.1.72
4
4
  Summary: MAS
5
5
  Requires-Python: >=3.11
6
6
  Description-Content-Type: text/markdown
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "beswarm"
3
- version = "0.1.71"
3
+ version = "0.1.72"
4
4
  description = "MAS"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.11"
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes