beswarm 0.2.96__tar.gz → 0.2.98__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 (138) hide show
  1. {beswarm-0.2.96 → beswarm-0.2.98}/PKG-INFO +1 -1
  2. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm/agents/planact.py +2 -0
  3. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm/aient/aient/architext/architext/core.py +19 -0
  4. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm/aient/aient/architext/test/test.py +25 -0
  5. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm/aient/aient/models/chatgpt.py +3 -1
  6. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm.egg-info/PKG-INFO +1 -1
  7. {beswarm-0.2.96 → beswarm-0.2.98}/pyproject.toml +1 -1
  8. {beswarm-0.2.96 → beswarm-0.2.98}/MANIFEST.in +0 -0
  9. {beswarm-0.2.96 → beswarm-0.2.98}/README.md +0 -0
  10. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm/__init__.py +0 -0
  11. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm/agents/chatgroup.py +0 -0
  12. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm/aient/aient/__init__.py +0 -0
  13. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm/aient/aient/architext/architext/__init__.py +0 -0
  14. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm/aient/aient/architext/test/openai_client.py +0 -0
  15. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm/aient/aient/architext/test/test_save_load.py +0 -0
  16. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm/aient/aient/core/__init__.py +0 -0
  17. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm/aient/aient/core/log_config.py +0 -0
  18. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm/aient/aient/core/models.py +0 -0
  19. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm/aient/aient/core/request.py +0 -0
  20. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm/aient/aient/core/response.py +0 -0
  21. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm/aient/aient/core/test/test_base_api.py +0 -0
  22. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm/aient/aient/core/test/test_geminimask.py +0 -0
  23. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm/aient/aient/core/test/test_image.py +0 -0
  24. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm/aient/aient/core/test/test_payload.py +0 -0
  25. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm/aient/aient/core/utils.py +0 -0
  26. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm/aient/aient/models/__init__.py +0 -0
  27. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm/aient/aient/models/audio.py +0 -0
  28. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm/aient/aient/models/base.py +0 -0
  29. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm/aient/aient/plugins/__init__.py +0 -0
  30. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm/aient/aient/plugins/arXiv.py +0 -0
  31. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm/aient/aient/plugins/config.py +0 -0
  32. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm/aient/aient/plugins/excute_command.py +0 -0
  33. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm/aient/aient/plugins/get_time.py +0 -0
  34. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm/aient/aient/plugins/image.py +0 -0
  35. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm/aient/aient/plugins/list_directory.py +0 -0
  36. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm/aient/aient/plugins/read_file.py +0 -0
  37. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm/aient/aient/plugins/read_image.py +0 -0
  38. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm/aient/aient/plugins/readonly.py +0 -0
  39. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm/aient/aient/plugins/registry.py +0 -0
  40. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm/aient/aient/plugins/run_python.py +0 -0
  41. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm/aient/aient/plugins/websearch.py +0 -0
  42. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm/aient/aient/plugins/write_file.py +0 -0
  43. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm/aient/aient/utils/__init__.py +0 -0
  44. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm/aient/aient/utils/prompt.py +0 -0
  45. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm/aient/aient/utils/scripts.py +0 -0
  46. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm/aient/test/test_Web_crawler.py +0 -0
  47. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm/aient/test/test_ddg_search.py +0 -0
  48. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm/aient/test/test_google_search.py +0 -0
  49. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm/aient/test/test_ollama.py +0 -0
  50. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm/aient/test/test_plugin.py +0 -0
  51. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm/aient/test/test_search.py +0 -0
  52. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm/aient/test/test_url.py +0 -0
  53. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm/aient/test/test_whisper.py +0 -0
  54. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm/aient/test/test_yjh.py +0 -0
  55. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm/bemcp/bemcp/__init__.py +0 -0
  56. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm/bemcp/bemcp/decorator.py +0 -0
  57. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm/bemcp/bemcp/main.py +0 -0
  58. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm/bemcp/bemcp/utils.py +0 -0
  59. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm/bemcp/test/client.py +0 -0
  60. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm/bemcp/test/server.py +0 -0
  61. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm/broker.py +0 -0
  62. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm/core.py +0 -0
  63. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm/knowledge_graph.py +0 -0
  64. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm/prompt.py +0 -0
  65. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm/queries/tree-sitter-language-pack/README.md +0 -0
  66. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm/queries/tree-sitter-language-pack/arduino-tags.scm +0 -0
  67. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm/queries/tree-sitter-language-pack/c-tags.scm +0 -0
  68. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm/queries/tree-sitter-language-pack/chatito-tags.scm +0 -0
  69. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm/queries/tree-sitter-language-pack/commonlisp-tags.scm +0 -0
  70. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm/queries/tree-sitter-language-pack/cpp-tags.scm +0 -0
  71. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm/queries/tree-sitter-language-pack/csharp-tags.scm +0 -0
  72. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm/queries/tree-sitter-language-pack/d-tags.scm +0 -0
  73. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm/queries/tree-sitter-language-pack/dart-tags.scm +0 -0
  74. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm/queries/tree-sitter-language-pack/elisp-tags.scm +0 -0
  75. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm/queries/tree-sitter-language-pack/elixir-tags.scm +0 -0
  76. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm/queries/tree-sitter-language-pack/elm-tags.scm +0 -0
  77. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm/queries/tree-sitter-language-pack/gleam-tags.scm +0 -0
  78. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm/queries/tree-sitter-language-pack/go-tags.scm +0 -0
  79. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm/queries/tree-sitter-language-pack/java-tags.scm +0 -0
  80. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm/queries/tree-sitter-language-pack/javascript-tags.scm +0 -0
  81. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm/queries/tree-sitter-language-pack/lua-tags.scm +0 -0
  82. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm/queries/tree-sitter-language-pack/pony-tags.scm +0 -0
  83. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm/queries/tree-sitter-language-pack/properties-tags.scm +0 -0
  84. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm/queries/tree-sitter-language-pack/python-tags.scm +0 -0
  85. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm/queries/tree-sitter-language-pack/r-tags.scm +0 -0
  86. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm/queries/tree-sitter-language-pack/racket-tags.scm +0 -0
  87. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm/queries/tree-sitter-language-pack/ruby-tags.scm +0 -0
  88. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm/queries/tree-sitter-language-pack/rust-tags.scm +0 -0
  89. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm/queries/tree-sitter-language-pack/solidity-tags.scm +0 -0
  90. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm/queries/tree-sitter-language-pack/swift-tags.scm +0 -0
  91. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm/queries/tree-sitter-language-pack/udev-tags.scm +0 -0
  92. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm/queries/tree-sitter-languages/README.md +0 -0
  93. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm/queries/tree-sitter-languages/c-tags.scm +0 -0
  94. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm/queries/tree-sitter-languages/c_sharp-tags.scm +0 -0
  95. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm/queries/tree-sitter-languages/cpp-tags.scm +0 -0
  96. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm/queries/tree-sitter-languages/dart-tags.scm +0 -0
  97. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm/queries/tree-sitter-languages/elisp-tags.scm +0 -0
  98. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm/queries/tree-sitter-languages/elixir-tags.scm +0 -0
  99. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm/queries/tree-sitter-languages/elm-tags.scm +0 -0
  100. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm/queries/tree-sitter-languages/go-tags.scm +0 -0
  101. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm/queries/tree-sitter-languages/hcl-tags.scm +0 -0
  102. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm/queries/tree-sitter-languages/java-tags.scm +0 -0
  103. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm/queries/tree-sitter-languages/javascript-tags.scm +0 -0
  104. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm/queries/tree-sitter-languages/kotlin-tags.scm +0 -0
  105. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm/queries/tree-sitter-languages/ocaml-tags.scm +0 -0
  106. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm/queries/tree-sitter-languages/php-tags.scm +0 -0
  107. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm/queries/tree-sitter-languages/python-tags.scm +0 -0
  108. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm/queries/tree-sitter-languages/ql-tags.scm +0 -0
  109. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm/queries/tree-sitter-languages/ruby-tags.scm +0 -0
  110. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm/queries/tree-sitter-languages/rust-tags.scm +0 -0
  111. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm/queries/tree-sitter-languages/scala-tags.scm +0 -0
  112. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm/queries/tree-sitter-languages/typescript-tags.scm +0 -0
  113. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm/taskmanager.py +0 -0
  114. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm/tools/__init__.py +0 -0
  115. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm/tools/click.py +0 -0
  116. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm/tools/completion.py +0 -0
  117. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm/tools/deep_search.py +0 -0
  118. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm/tools/edit_file.py +0 -0
  119. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm/tools/graph.py +0 -0
  120. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm/tools/planner.py +0 -0
  121. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm/tools/repomap.py +0 -0
  122. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm/tools/request_input.py +0 -0
  123. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm/tools/screenshot.py +0 -0
  124. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm/tools/search_arxiv.py +0 -0
  125. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm/tools/search_web.py +0 -0
  126. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm/tools/subtasks.py +0 -0
  127. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm/tools/worker.py +0 -0
  128. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm/tools/write_csv.py +0 -0
  129. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm/utils.py +0 -0
  130. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm.egg-info/SOURCES.txt +0 -0
  131. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm.egg-info/dependency_links.txt +0 -0
  132. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm.egg-info/requires.txt +0 -0
  133. {beswarm-0.2.96 → beswarm-0.2.98}/beswarm.egg-info/top_level.txt +0 -0
  134. {beswarm-0.2.96 → beswarm-0.2.98}/setup.cfg +0 -0
  135. {beswarm-0.2.96 → beswarm-0.2.98}/test/test_TaskManager.py +0 -0
  136. {beswarm-0.2.96 → beswarm-0.2.98}/test/test_broker.py +0 -0
  137. {beswarm-0.2.96 → beswarm-0.2.98}/test/test_graph.py +0 -0
  138. {beswarm-0.2.96 → beswarm-0.2.98}/test/test_new_TaskManager.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: beswarm
3
- Version: 0.2.96
3
+ Version: 0.2.98
4
4
  Summary: MAS
5
5
  Requires-Python: >=3.11
6
6
  Description-Content-Type: text/markdown
@@ -201,6 +201,8 @@ class WorkerAgent(BaseAgent):
201
201
  self.broker.publish(message, self.error_topic)
202
202
  else:
203
203
  self.broker.publish({"status": "new_message", "result": "\n✅ 工作智能体:\n" + response}, self.status_topic)
204
+ if len(self.agent.conversation["default"]) > 1 and self.agent.conversation["default"][-1].role == "user":
205
+ self.agent.conversation["default"].pop(-1)
204
206
  self.broker.publish({
205
207
  "conversation": self.agent.conversation["default"]
206
208
  }, self.publish_topic)
@@ -457,6 +457,15 @@ class Message(ABC):
457
457
  return len(self._items)
458
458
 
459
459
  def __repr__(self): return f"Message(role='{self.role}', items={[i.name for i in self._items]})"
460
+
461
+ def __contains__(self, item: Any) -> bool:
462
+ """Checks if a ContextProvider is in the message."""
463
+ if not isinstance(item, ContextProvider):
464
+ return False
465
+ # The `in` operator on a list checks for equality,
466
+ # and our custom __eq__ on ContextProvider handles the comparison logic.
467
+ return item in self._items
468
+
460
469
  def __bool__(self) -> bool:
461
470
  return bool(self._items)
462
471
  def get(self, key: str, default: Any = None) -> Any:
@@ -717,3 +726,13 @@ class Messages:
717
726
 
718
727
  def __len__(self) -> int: return len(self._messages)
719
728
  def __iter__(self): return iter(self._messages)
729
+
730
+ def __contains__(self, item: Any) -> bool:
731
+ """Checks if a Message or ContextProvider is in the collection."""
732
+ if isinstance(item, Message):
733
+ # Check for object identity
734
+ return any(item is msg for msg in self._messages)
735
+ if isinstance(item, ContextProvider):
736
+ # Check if any message contains the provider
737
+ return any(item in msg for msg in self._messages)
738
+ return False
@@ -1409,6 +1409,31 @@ Files: {Files(visible=True, name="files")}
1409
1409
  # 5. 验证 provider 索引
1410
1410
  self.assertIsNotNone(messages.provider(text_provider.name))
1411
1411
 
1412
+ async def test_zi_provider_in_message_and_messages(self):
1413
+ """测试 `in` 操作符是否能检查 provider 是否存在于 Message 或 Messages 中"""
1414
+ # 1. 准备 providers 和 messages
1415
+ text_hi = Texts("hi")
1416
+ text_hello = Texts("hello")
1417
+ text_world = Texts("world")
1418
+
1419
+ message = UserMessage(text_hello, text_hi)
1420
+ messages_collection = Messages(SystemMessage("System"), message)
1421
+
1422
+ # 2. 测试 `in` Message
1423
+ self.assertTrue(Texts("hi") in UserMessage(Texts("hello"), Texts("hi")))
1424
+ self.assertTrue(text_hi in message)
1425
+ self.assertTrue(text_hello in message)
1426
+ self.assertFalse(text_world in message)
1427
+
1428
+ # 3. 测试 `in` Messages
1429
+ self.assertTrue(text_hi in messages_collection)
1430
+ self.assertTrue(text_hello in messages_collection)
1431
+ self.assertFalse(text_world in messages_collection)
1432
+
1433
+ # 4. 测试一个 Message 对象是否在 Messages 中
1434
+ self.assertTrue(message in messages_collection)
1435
+ self.assertFalse(UserMessage("not in collection") in messages_collection)
1436
+
1412
1437
 
1413
1438
  # ==============================================================================
1414
1439
  # 6. 演示
@@ -476,7 +476,9 @@ class chatgpt(BaseLLM):
476
476
  # 删除 task_complete 跟其他工具一起调用的情况,因为 task_complete 必须单独调用
477
477
  if len(function_parameter) > 1:
478
478
  function_parameter = [tool_dict for tool_dict in function_parameter if tool_dict.get("function_name", "") != "task_complete"]
479
- function_parameter = [tool_dict for tool_dict in function_parameter if tool_dict.get("function_name", "") != "get_task_result"]
479
+ # 仅当存在其他工具时,才删除 get_task_result
480
+ if any(tool.get("function_name") != "get_task_result" for tool in function_parameter):
481
+ function_parameter = [tool_dict for tool_dict in function_parameter if tool_dict.get("function_name", "") != "get_task_result"]
480
482
  if len(function_parameter) == 1 and function_parameter[0].get("function_name", "") == "task_complete":
481
483
  raise TaskComplete(safe_get(function_parameter, 0, "parameter", "message", default="The task has been completed."))
482
484
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: beswarm
3
- Version: 0.2.96
3
+ Version: 0.2.98
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.2.96"
3
+ version = "0.2.98"
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
File without changes
File without changes
File without changes
File without changes