beswarm 0.1.63__tar.gz → 0.1.65__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.63 → beswarm-0.1.65}/PKG-INFO +1 -1
  2. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/aient/setup.py +1 -1
  3. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/aient/src/aient/core/response.py +3 -2
  4. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/aient/src/aient/plugins/excute_command.py +3 -0
  5. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/tools/__init__.py +2 -0
  6. beswarm-0.1.65/beswarm/tools/screenshot.py +34 -0
  7. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/tools/worker.py +8 -3
  8. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm.egg-info/PKG-INFO +1 -1
  9. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm.egg-info/SOURCES.txt +1 -0
  10. {beswarm-0.1.63 → beswarm-0.1.65}/pyproject.toml +1 -1
  11. {beswarm-0.1.63 → beswarm-0.1.65}/MANIFEST.in +0 -0
  12. {beswarm-0.1.63 → beswarm-0.1.65}/README.md +0 -0
  13. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/__init__.py +0 -0
  14. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/aient/main.py +0 -0
  15. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/aient/src/aient/__init__.py +0 -0
  16. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/aient/src/aient/core/__init__.py +0 -0
  17. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/aient/src/aient/core/log_config.py +0 -0
  18. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/aient/src/aient/core/models.py +0 -0
  19. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/aient/src/aient/core/request.py +0 -0
  20. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/aient/src/aient/core/test/test_base_api.py +0 -0
  21. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/aient/src/aient/core/test/test_geminimask.py +0 -0
  22. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/aient/src/aient/core/test/test_image.py +0 -0
  23. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/aient/src/aient/core/test/test_payload.py +0 -0
  24. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/aient/src/aient/core/utils.py +0 -0
  25. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/aient/src/aient/models/__init__.py +0 -0
  26. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/aient/src/aient/models/audio.py +0 -0
  27. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/aient/src/aient/models/base.py +0 -0
  28. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/aient/src/aient/models/chatgpt.py +0 -0
  29. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/aient/src/aient/models/claude.py +0 -0
  30. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/aient/src/aient/models/duckduckgo.py +0 -0
  31. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/aient/src/aient/models/gemini.py +0 -0
  32. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/aient/src/aient/models/groq.py +0 -0
  33. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/aient/src/aient/models/vertex.py +0 -0
  34. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/aient/src/aient/plugins/__init__.py +0 -0
  35. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/aient/src/aient/plugins/arXiv.py +0 -0
  36. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/aient/src/aient/plugins/config.py +0 -0
  37. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/aient/src/aient/plugins/get_time.py +0 -0
  38. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/aient/src/aient/plugins/image.py +0 -0
  39. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/aient/src/aient/plugins/list_directory.py +0 -0
  40. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/aient/src/aient/plugins/read_file.py +0 -0
  41. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/aient/src/aient/plugins/read_image.py +0 -0
  42. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/aient/src/aient/plugins/registry.py +0 -0
  43. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/aient/src/aient/plugins/run_python.py +0 -0
  44. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/aient/src/aient/plugins/websearch.py +0 -0
  45. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/aient/src/aient/plugins/write_file.py +0 -0
  46. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/aient/src/aient/prompt/__init__.py +0 -0
  47. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/aient/src/aient/prompt/agent.py +0 -0
  48. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/aient/src/aient/utils/__init__.py +0 -0
  49. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/aient/src/aient/utils/prompt.py +0 -0
  50. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/aient/src/aient/utils/scripts.py +0 -0
  51. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/aient/test/chatgpt.py +0 -0
  52. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/aient/test/claude.py +0 -0
  53. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/aient/test/test.py +0 -0
  54. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/aient/test/test_API.py +0 -0
  55. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/aient/test/test_Deepbricks.py +0 -0
  56. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/aient/test/test_Web_crawler.py +0 -0
  57. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/aient/test/test_aiwaves.py +0 -0
  58. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/aient/test/test_aiwaves_arxiv.py +0 -0
  59. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/aient/test/test_ask_gemini.py +0 -0
  60. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/aient/test/test_class.py +0 -0
  61. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/aient/test/test_claude.py +0 -0
  62. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/aient/test/test_claude_zh_char.py +0 -0
  63. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/aient/test/test_ddg_search.py +0 -0
  64. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/aient/test/test_download_pdf.py +0 -0
  65. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/aient/test/test_gemini.py +0 -0
  66. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/aient/test/test_get_token_dict.py +0 -0
  67. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/aient/test/test_google_search.py +0 -0
  68. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/aient/test/test_jieba.py +0 -0
  69. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/aient/test/test_json.py +0 -0
  70. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/aient/test/test_logging.py +0 -0
  71. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/aient/test/test_ollama.py +0 -0
  72. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/aient/test/test_plugin.py +0 -0
  73. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/aient/test/test_py_run.py +0 -0
  74. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/aient/test/test_requests.py +0 -0
  75. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/aient/test/test_search.py +0 -0
  76. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/aient/test/test_tikitoken.py +0 -0
  77. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/aient/test/test_token.py +0 -0
  78. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/aient/test/test_url.py +0 -0
  79. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/aient/test/test_whisper.py +0 -0
  80. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/aient/test/test_wildcard.py +0 -0
  81. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/aient/test/test_yjh.py +0 -0
  82. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/queries/tree-sitter-language-pack/README.md +0 -0
  83. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/queries/tree-sitter-language-pack/arduino-tags.scm +0 -0
  84. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/queries/tree-sitter-language-pack/c-tags.scm +0 -0
  85. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/queries/tree-sitter-language-pack/chatito-tags.scm +0 -0
  86. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/queries/tree-sitter-language-pack/commonlisp-tags.scm +0 -0
  87. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/queries/tree-sitter-language-pack/cpp-tags.scm +0 -0
  88. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/queries/tree-sitter-language-pack/csharp-tags.scm +0 -0
  89. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/queries/tree-sitter-language-pack/d-tags.scm +0 -0
  90. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/queries/tree-sitter-language-pack/dart-tags.scm +0 -0
  91. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/queries/tree-sitter-language-pack/elisp-tags.scm +0 -0
  92. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/queries/tree-sitter-language-pack/elixir-tags.scm +0 -0
  93. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/queries/tree-sitter-language-pack/elm-tags.scm +0 -0
  94. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/queries/tree-sitter-language-pack/gleam-tags.scm +0 -0
  95. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/queries/tree-sitter-language-pack/go-tags.scm +0 -0
  96. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/queries/tree-sitter-language-pack/java-tags.scm +0 -0
  97. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/queries/tree-sitter-language-pack/javascript-tags.scm +0 -0
  98. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/queries/tree-sitter-language-pack/lua-tags.scm +0 -0
  99. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/queries/tree-sitter-language-pack/pony-tags.scm +0 -0
  100. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/queries/tree-sitter-language-pack/properties-tags.scm +0 -0
  101. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/queries/tree-sitter-language-pack/python-tags.scm +0 -0
  102. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/queries/tree-sitter-language-pack/r-tags.scm +0 -0
  103. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/queries/tree-sitter-language-pack/racket-tags.scm +0 -0
  104. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/queries/tree-sitter-language-pack/ruby-tags.scm +0 -0
  105. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/queries/tree-sitter-language-pack/rust-tags.scm +0 -0
  106. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/queries/tree-sitter-language-pack/solidity-tags.scm +0 -0
  107. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/queries/tree-sitter-language-pack/swift-tags.scm +0 -0
  108. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/queries/tree-sitter-language-pack/udev-tags.scm +0 -0
  109. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/queries/tree-sitter-languages/README.md +0 -0
  110. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/queries/tree-sitter-languages/c-tags.scm +0 -0
  111. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/queries/tree-sitter-languages/c_sharp-tags.scm +0 -0
  112. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/queries/tree-sitter-languages/cpp-tags.scm +0 -0
  113. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/queries/tree-sitter-languages/dart-tags.scm +0 -0
  114. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/queries/tree-sitter-languages/elisp-tags.scm +0 -0
  115. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/queries/tree-sitter-languages/elixir-tags.scm +0 -0
  116. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/queries/tree-sitter-languages/elm-tags.scm +0 -0
  117. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/queries/tree-sitter-languages/go-tags.scm +0 -0
  118. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/queries/tree-sitter-languages/hcl-tags.scm +0 -0
  119. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/queries/tree-sitter-languages/java-tags.scm +0 -0
  120. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/queries/tree-sitter-languages/javascript-tags.scm +0 -0
  121. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/queries/tree-sitter-languages/kotlin-tags.scm +0 -0
  122. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/queries/tree-sitter-languages/ocaml-tags.scm +0 -0
  123. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/queries/tree-sitter-languages/php-tags.scm +0 -0
  124. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/queries/tree-sitter-languages/python-tags.scm +0 -0
  125. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/queries/tree-sitter-languages/ql-tags.scm +0 -0
  126. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/queries/tree-sitter-languages/ruby-tags.scm +0 -0
  127. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/queries/tree-sitter-languages/rust-tags.scm +0 -0
  128. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/queries/tree-sitter-languages/scala-tags.scm +0 -0
  129. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/queries/tree-sitter-languages/typescript-tags.scm +0 -0
  130. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/tools/click.py +0 -0
  131. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/tools/edit_file.py +0 -0
  132. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/tools/planner.py +0 -0
  133. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/tools/repomap.py +0 -0
  134. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/tools/search_arxiv.py +0 -0
  135. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/tools/search_web.py +0 -0
  136. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/tools/think.py +0 -0
  137. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm/utils.py +0 -0
  138. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm.egg-info/dependency_links.txt +0 -0
  139. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm.egg-info/requires.txt +0 -0
  140. {beswarm-0.1.63 → beswarm-0.1.65}/beswarm.egg-info/top_level.txt +0 -0
  141. {beswarm-0.1.63 → beswarm-0.1.65}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: beswarm
3
- Version: 0.1.63
3
+ Version: 0.1.65
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.17",
7
+ version="1.1.18",
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",
@@ -54,8 +54,6 @@ async def fetch_gemini_response_stream(client, url, headers, payload, model):
54
54
  if line and '\"finishReason\": \"' in line:
55
55
  if "stop" not in line.lower():
56
56
  logger.error(f"finishReason: {line}")
57
- sse_string = await generate_sse_response(timestamp, model, stop="stop")
58
- yield sse_string
59
57
  is_finish = True
60
58
  if is_finish and '\"promptTokenCount\": ' in line:
61
59
  json_data = parse_json_safely( "{" + line + "}")
@@ -117,6 +115,9 @@ async def fetch_gemini_response_stream(client, url, headers, payload, model):
117
115
  sse_string = await generate_sse_response(timestamp, model, content=None, tools_id="chatcmpl-9inWv0yEtgn873CxMBzHeCeiHctTV", function_call_name=None, function_call_content=function_full_response)
118
116
  yield sse_string
119
117
 
118
+ sse_string = await generate_sse_response(timestamp, model, stop="stop")
119
+ yield sse_string
120
+
120
121
  sse_string = await generate_sse_response(timestamp, model, None, None, None, None, None, totalTokenCount, promptTokenCount, candidatesTokenCount)
121
122
  yield sse_string
122
123
 
@@ -185,6 +185,9 @@ def excute_command(command):
185
185
  # print(f"is_same: {is_same}", flush=True)
186
186
  # print(f"\n\n\n", flush=True)
187
187
  new_output_lines.append(line)
188
+ # 限制输出行数
189
+ if len(new_output_lines) > 500:
190
+ new_output_lines = new_output_lines[:250] + new_output_lines[-250:]
188
191
  final_output_log = "\n".join(new_output_lines)
189
192
  # print(f"output_lines: {len(new_output_lines)}")
190
193
 
@@ -1,6 +1,7 @@
1
1
  from .think import think
2
2
  from .edit_file import edit_file
3
3
  from .worker import worker, worker_gen
4
+ from .screenshot import save_screenshot_to_file
4
5
 
5
6
  from .search_arxiv import search_arxiv
6
7
  from .repomap import get_code_repo_map
@@ -45,4 +46,5 @@ __all__ = [
45
46
  "scroll_screen",
46
47
  "register_tool",
47
48
  "search_web",
49
+ "save_screenshot_to_file",
48
50
  ]
@@ -0,0 +1,34 @@
1
+ from ..aient.src.aient.plugins import register_tool
2
+
3
+ @register_tool()
4
+ def save_screenshot_to_file(save_path):
5
+ """
6
+ 截取当前屏幕并保存到指定路径
7
+
8
+ 参数:
9
+ save_path: 截图保存的完整路径,包括文件名和扩展名
10
+
11
+ 返回:
12
+ 成功返回True,失败返回False
13
+ """
14
+ try:
15
+ import os
16
+ import pyautogui
17
+
18
+ # 确保目标目录存在
19
+ save_dir = os.path.dirname(save_path)
20
+ if save_dir and not os.path.exists(save_dir):
21
+ os.makedirs(save_dir)
22
+
23
+ # 截取屏幕
24
+ screenshot = pyautogui.screenshot()
25
+ img_width, img_height = pyautogui.size()
26
+
27
+ # 保存截图到指定路径
28
+ screenshot.save(save_path)
29
+ return f"截图成功保存,尺寸: {img_width}x{img_height},保存路径: {save_path}"
30
+
31
+ except ImportError:
32
+ return "请安装所需库: pip install Pillow pyautogui"
33
+ except Exception as e:
34
+ return f"截取屏幕或保存图像时出错: {e}"
@@ -99,8 +99,10 @@ async def worker(goal, tools, work_dir, cache_messages=None):
99
99
  extracted_content = f"<latest_file_content>{match.group(1)}</latest_file_content>\n\n"
100
100
  else:
101
101
  extracted_content = ""
102
-
103
- conversation_history[0]["content"] = extracted_content + conversation_history[0]["content"]
102
+ if isinstance(conversation_history[0]["content"], str):
103
+ conversation_history[0]["content"] = extracted_content + conversation_history[0]["content"]
104
+ elif isinstance(conversation_history[0]["content"], list) and extracted_content:
105
+ conversation_history[0]["content"].append({"type": "text", "text": extracted_content})
104
106
 
105
107
  instruction_agent.conversation["default"][1:] = conversation_history
106
108
  if "find_and_click_element" in str(tools_json):
@@ -221,7 +223,10 @@ async def worker_gen(goal, tools, work_dir, cache_messages=None):
221
223
  else:
222
224
  extracted_content = ""
223
225
 
224
- conversation_history[0]["content"] = extracted_content + conversation_history[0]["content"]
226
+ if isinstance(conversation_history[0]["content"], str):
227
+ conversation_history[0]["content"] = extracted_content + conversation_history[0]["content"]
228
+ elif isinstance(conversation_history[0]["content"], list) and extracted_content:
229
+ conversation_history[0]["content"].append({"type": "text", "text": extracted_content})
225
230
 
226
231
  instruction_agent.conversation["default"][1:] = conversation_history
227
232
  if "find_and_click_element" in str(tools_json):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: beswarm
3
- Version: 0.1.63
3
+ Version: 0.1.65
4
4
  Summary: MAS
5
5
  Requires-Python: >=3.11
6
6
  Description-Content-Type: text/markdown
@@ -132,6 +132,7 @@ beswarm/tools/click.py
132
132
  beswarm/tools/edit_file.py
133
133
  beswarm/tools/planner.py
134
134
  beswarm/tools/repomap.py
135
+ beswarm/tools/screenshot.py
135
136
  beswarm/tools/search_arxiv.py
136
137
  beswarm/tools/search_web.py
137
138
  beswarm/tools/think.py
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "beswarm"
3
- version = "0.1.63"
3
+ version = "0.1.65"
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