camel-ai 0.2.73a12__tar.gz → 0.2.74__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.

Potentially problematic release.


This version of camel-ai might be problematic. Click here for more details.

Files changed (475) hide show
  1. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/PKG-INFO +3 -2
  2. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/__init__.py +1 -1
  3. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/interpreters/e2b_interpreter.py +34 -1
  4. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/models/anthropic_model.py +5 -3
  5. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/societies/workforce/prompts.py +3 -19
  6. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/societies/workforce/workforce.py +13 -8
  7. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/toolkits/hybrid_browser_toolkit/config_loader.py +3 -0
  8. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/toolkits/hybrid_browser_toolkit/hybrid_browser_toolkit_ts.py +225 -0
  9. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/toolkits/hybrid_browser_toolkit/ts/src/browser-session.ts +164 -8
  10. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/toolkits/hybrid_browser_toolkit/ts/src/config-loader.ts +2 -0
  11. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/toolkits/hybrid_browser_toolkit/ts/src/hybrid-browser-toolkit.ts +106 -1
  12. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/toolkits/hybrid_browser_toolkit/ts/src/types.ts +19 -1
  13. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/toolkits/hybrid_browser_toolkit/ts/websocket-server.js +20 -0
  14. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/toolkits/hybrid_browser_toolkit/ws_wrapper.py +41 -0
  15. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/toolkits/hybrid_browser_toolkit_py/actions.py +158 -0
  16. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/toolkits/hybrid_browser_toolkit_py/browser_session.py +55 -8
  17. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/toolkits/hybrid_browser_toolkit_py/config_loader.py +43 -0
  18. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/toolkits/hybrid_browser_toolkit_py/hybrid_browser_toolkit.py +312 -3
  19. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/toolkits/hybrid_browser_toolkit_py/snapshot.py +10 -4
  20. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/toolkits/hybrid_browser_toolkit_py/unified_analyzer.js +45 -4
  21. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/toolkits/note_taking_toolkit.py +3 -4
  22. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/toolkits/search_toolkit.py +192 -59
  23. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/toolkits/terminal_toolkit.py +12 -2
  24. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/types/enums.py +3 -0
  25. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/utils/token_counting.py +13 -2
  26. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/pyproject.toml +3 -2
  27. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/.gitignore +0 -0
  28. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/LICENSE +0 -0
  29. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/README.md +0 -0
  30. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/agents/__init__.py +0 -0
  31. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/agents/_types.py +0 -0
  32. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/agents/_utils.py +0 -0
  33. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/agents/base.py +0 -0
  34. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/agents/chat_agent.py +0 -0
  35. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/agents/critic_agent.py +0 -0
  36. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/agents/deductive_reasoner_agent.py +0 -0
  37. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/agents/embodied_agent.py +0 -0
  38. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/agents/knowledge_graph_agent.py +0 -0
  39. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/agents/mcp_agent.py +0 -0
  40. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/agents/multi_hop_generator_agent.py +0 -0
  41. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/agents/programmed_agent_instruction.py +0 -0
  42. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/agents/repo_agent.py +0 -0
  43. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/agents/role_assignment_agent.py +0 -0
  44. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/agents/search_agent.py +0 -0
  45. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/agents/task_agent.py +0 -0
  46. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/agents/tool_agents/__init__.py +0 -0
  47. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/agents/tool_agents/base.py +0 -0
  48. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/agents/tool_agents/hugging_face_tool_agent.py +0 -0
  49. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/benchmarks/__init__.py +0 -0
  50. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/benchmarks/apibank.py +0 -0
  51. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/benchmarks/apibench.py +0 -0
  52. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/benchmarks/base.py +0 -0
  53. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/benchmarks/browsecomp.py +0 -0
  54. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/benchmarks/gaia.py +0 -0
  55. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/benchmarks/mock_website/README.md +0 -0
  56. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/benchmarks/mock_website/mock_web.py +0 -0
  57. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/benchmarks/mock_website/requirements.txt +0 -0
  58. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/benchmarks/mock_website/shopping_mall/app.py +0 -0
  59. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/benchmarks/mock_website/task.json +0 -0
  60. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/benchmarks/nexus.py +0 -0
  61. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/benchmarks/ragbench.py +0 -0
  62. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/bots/__init__.py +0 -0
  63. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/bots/discord/__init__.py +0 -0
  64. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/bots/discord/discord_app.py +0 -0
  65. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/bots/discord/discord_installation.py +0 -0
  66. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/bots/discord/discord_store.py +0 -0
  67. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/bots/slack/__init__.py +0 -0
  68. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/bots/slack/models.py +0 -0
  69. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/bots/slack/slack_app.py +0 -0
  70. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/bots/telegram_bot.py +0 -0
  71. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/configs/__init__.py +0 -0
  72. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/configs/aiml_config.py +0 -0
  73. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/configs/anthropic_config.py +0 -0
  74. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/configs/base_config.py +0 -0
  75. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/configs/bedrock_config.py +0 -0
  76. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/configs/cohere_config.py +0 -0
  77. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/configs/crynux_config.py +0 -0
  78. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/configs/deepseek_config.py +0 -0
  79. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/configs/gemini_config.py +0 -0
  80. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/configs/groq_config.py +0 -0
  81. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/configs/internlm_config.py +0 -0
  82. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/configs/litellm_config.py +0 -0
  83. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/configs/lmstudio_config.py +0 -0
  84. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/configs/mistral_config.py +0 -0
  85. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/configs/modelscope_config.py +0 -0
  86. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/configs/moonshot_config.py +0 -0
  87. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/configs/netmind_config.py +0 -0
  88. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/configs/novita_config.py +0 -0
  89. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/configs/nvidia_config.py +0 -0
  90. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/configs/ollama_config.py +0 -0
  91. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/configs/openai_config.py +0 -0
  92. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/configs/openrouter_config.py +0 -0
  93. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/configs/ppio_config.py +0 -0
  94. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/configs/qianfan_config.py +0 -0
  95. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/configs/qwen_config.py +0 -0
  96. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/configs/reka_config.py +0 -0
  97. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/configs/samba_config.py +0 -0
  98. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/configs/sglang_config.py +0 -0
  99. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/configs/siliconflow_config.py +0 -0
  100. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/configs/togetherai_config.py +0 -0
  101. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/configs/vllm_config.py +0 -0
  102. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/configs/watsonx_config.py +0 -0
  103. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/configs/yi_config.py +0 -0
  104. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/configs/zhipuai_config.py +0 -0
  105. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/data_collectors/__init__.py +0 -0
  106. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/data_collectors/alpaca_collector.py +0 -0
  107. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/data_collectors/base.py +0 -0
  108. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/data_collectors/sharegpt_collector.py +0 -0
  109. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/datagen/__init__.py +0 -0
  110. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/datagen/cot_datagen.py +0 -0
  111. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/datagen/evol_instruct/__init__.py +0 -0
  112. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/datagen/evol_instruct/evol_instruct.py +0 -0
  113. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/datagen/evol_instruct/scorer.py +0 -0
  114. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/datagen/evol_instruct/templates.py +0 -0
  115. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/datagen/self_improving_cot.py +0 -0
  116. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/datagen/self_instruct/__init__.py +0 -0
  117. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/datagen/self_instruct/filter/__init__.py +0 -0
  118. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/datagen/self_instruct/filter/filter_function.py +0 -0
  119. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/datagen/self_instruct/filter/filter_registry.py +0 -0
  120. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/datagen/self_instruct/filter/instruction_filter.py +0 -0
  121. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/datagen/self_instruct/self_instruct.py +0 -0
  122. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/datagen/self_instruct/templates.py +0 -0
  123. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/datagen/source2synth/__init__.py +0 -0
  124. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/datagen/source2synth/data_processor.py +0 -0
  125. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/datagen/source2synth/models.py +0 -0
  126. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/datagen/source2synth/user_data_processor_config.py +0 -0
  127. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/datahubs/__init__.py +0 -0
  128. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/datahubs/base.py +0 -0
  129. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/datahubs/huggingface.py +0 -0
  130. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/datahubs/models.py +0 -0
  131. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/datasets/__init__.py +0 -0
  132. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/datasets/base_generator.py +0 -0
  133. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/datasets/few_shot_generator.py +0 -0
  134. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/datasets/models.py +0 -0
  135. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/datasets/self_instruct_generator.py +0 -0
  136. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/datasets/static_dataset.py +0 -0
  137. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/embeddings/__init__.py +0 -0
  138. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/embeddings/azure_embedding.py +0 -0
  139. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/embeddings/base.py +0 -0
  140. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/embeddings/gemini_embedding.py +0 -0
  141. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/embeddings/jina_embedding.py +0 -0
  142. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/embeddings/mistral_embedding.py +0 -0
  143. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/embeddings/openai_compatible_embedding.py +0 -0
  144. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/embeddings/openai_embedding.py +0 -0
  145. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/embeddings/sentence_transformers_embeddings.py +0 -0
  146. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/embeddings/together_embedding.py +0 -0
  147. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/embeddings/vlm_embedding.py +0 -0
  148. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/environments/__init__.py +0 -0
  149. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/environments/models.py +0 -0
  150. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/environments/multi_step.py +0 -0
  151. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/environments/rlcards_env.py +0 -0
  152. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/environments/single_step.py +0 -0
  153. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/environments/tic_tac_toe.py +0 -0
  154. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/extractors/__init__.py +0 -0
  155. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/extractors/base.py +0 -0
  156. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/extractors/python_strategies.py +0 -0
  157. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/generators.py +0 -0
  158. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/human.py +0 -0
  159. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/interpreters/__init__.py +0 -0
  160. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/interpreters/base.py +0 -0
  161. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/interpreters/docker/Dockerfile +0 -0
  162. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/interpreters/docker_interpreter.py +0 -0
  163. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/interpreters/internal_python_interpreter.py +0 -0
  164. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/interpreters/interpreter_error.py +0 -0
  165. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/interpreters/ipython_interpreter.py +0 -0
  166. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/interpreters/subprocess_interpreter.py +0 -0
  167. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/loaders/__init__.py +0 -0
  168. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/loaders/apify_reader.py +0 -0
  169. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/loaders/base_io.py +0 -0
  170. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/loaders/base_loader.py +0 -0
  171. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/loaders/chunkr_reader.py +0 -0
  172. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/loaders/crawl4ai_reader.py +0 -0
  173. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/loaders/firecrawl_reader.py +0 -0
  174. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/loaders/jina_url_reader.py +0 -0
  175. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/loaders/markitdown.py +0 -0
  176. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/loaders/mineru_extractor.py +0 -0
  177. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/loaders/mistral_reader.py +0 -0
  178. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/loaders/pandas_reader.py +0 -0
  179. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/loaders/scrapegraph_reader.py +0 -0
  180. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/loaders/unstructured_io.py +0 -0
  181. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/logger.py +0 -0
  182. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/memories/__init__.py +0 -0
  183. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/memories/agent_memories.py +0 -0
  184. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/memories/base.py +0 -0
  185. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/memories/blocks/__init__.py +0 -0
  186. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/memories/blocks/chat_history_block.py +0 -0
  187. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/memories/blocks/vectordb_block.py +0 -0
  188. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/memories/context_creators/__init__.py +0 -0
  189. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/memories/context_creators/score_based.py +0 -0
  190. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/memories/records.py +0 -0
  191. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/messages/__init__.py +0 -0
  192. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/messages/base.py +0 -0
  193. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/messages/conversion/__init__.py +0 -0
  194. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/messages/conversion/alpaca.py +0 -0
  195. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/messages/conversion/conversation_models.py +0 -0
  196. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/messages/conversion/sharegpt/__init__.py +0 -0
  197. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/messages/conversion/sharegpt/function_call_formatter.py +0 -0
  198. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/messages/conversion/sharegpt/hermes/__init__.py +0 -0
  199. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/messages/conversion/sharegpt/hermes/hermes_function_formatter.py +0 -0
  200. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/messages/func_message.py +0 -0
  201. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/models/__init__.py +0 -0
  202. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/models/_utils.py +0 -0
  203. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/models/aiml_model.py +0 -0
  204. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/models/aws_bedrock_model.py +0 -0
  205. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/models/azure_openai_model.py +0 -0
  206. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/models/base_audio_model.py +0 -0
  207. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/models/base_model.py +0 -0
  208. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/models/cohere_model.py +0 -0
  209. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/models/crynux_model.py +0 -0
  210. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/models/deepseek_model.py +0 -0
  211. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/models/fish_audio_model.py +0 -0
  212. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/models/gemini_model.py +0 -0
  213. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/models/groq_model.py +0 -0
  214. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/models/internlm_model.py +0 -0
  215. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/models/litellm_model.py +0 -0
  216. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/models/lmstudio_model.py +0 -0
  217. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/models/mistral_model.py +0 -0
  218. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/models/model_factory.py +0 -0
  219. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/models/model_manager.py +0 -0
  220. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/models/modelscope_model.py +0 -0
  221. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/models/moonshot_model.py +0 -0
  222. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/models/nemotron_model.py +0 -0
  223. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/models/netmind_model.py +0 -0
  224. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/models/novita_model.py +0 -0
  225. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/models/nvidia_model.py +0 -0
  226. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/models/ollama_model.py +0 -0
  227. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/models/openai_audio_models.py +0 -0
  228. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/models/openai_compatible_model.py +0 -0
  229. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/models/openai_model.py +0 -0
  230. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/models/openrouter_model.py +0 -0
  231. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/models/ppio_model.py +0 -0
  232. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/models/qianfan_model.py +0 -0
  233. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/models/qwen_model.py +0 -0
  234. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/models/reka_model.py +0 -0
  235. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/models/reward/__init__.py +0 -0
  236. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/models/reward/base_reward_model.py +0 -0
  237. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/models/reward/evaluator.py +0 -0
  238. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/models/reward/nemotron_model.py +0 -0
  239. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/models/reward/skywork_model.py +0 -0
  240. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/models/samba_model.py +0 -0
  241. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/models/sglang_model.py +0 -0
  242. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/models/siliconflow_model.py +0 -0
  243. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/models/stub_model.py +0 -0
  244. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/models/togetherai_model.py +0 -0
  245. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/models/vllm_model.py +0 -0
  246. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/models/volcano_model.py +0 -0
  247. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/models/watsonx_model.py +0 -0
  248. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/models/yi_model.py +0 -0
  249. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/models/zhipuai_model.py +0 -0
  250. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/personas/__init__.py +0 -0
  251. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/personas/persona.py +0 -0
  252. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/personas/persona_hub.py +0 -0
  253. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/prompts/__init__.py +0 -0
  254. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/prompts/ai_society.py +0 -0
  255. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/prompts/base.py +0 -0
  256. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/prompts/code.py +0 -0
  257. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/prompts/evaluation.py +0 -0
  258. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/prompts/generate_text_embedding_data.py +0 -0
  259. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/prompts/image_craft.py +0 -0
  260. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/prompts/misalignment.py +0 -0
  261. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/prompts/multi_condition_image_craft.py +0 -0
  262. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/prompts/object_recognition.py +0 -0
  263. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/prompts/persona_hub.py +0 -0
  264. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/prompts/prompt_templates.py +0 -0
  265. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/prompts/role_description_prompt_template.py +0 -0
  266. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/prompts/solution_extraction.py +0 -0
  267. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/prompts/task_prompt_template.py +0 -0
  268. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/prompts/translation.py +0 -0
  269. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/prompts/video_description_prompt.py +0 -0
  270. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/py.typed +0 -0
  271. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/responses/__init__.py +0 -0
  272. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/responses/agent_responses.py +0 -0
  273. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/retrievers/__init__.py +0 -0
  274. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/retrievers/auto_retriever.py +0 -0
  275. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/retrievers/base.py +0 -0
  276. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/retrievers/bm25_retriever.py +0 -0
  277. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/retrievers/cohere_rerank_retriever.py +0 -0
  278. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/retrievers/hybrid_retrival.py +0 -0
  279. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/retrievers/vector_retriever.py +0 -0
  280. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/runtimes/__init__.py +0 -0
  281. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/runtimes/api.py +0 -0
  282. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/runtimes/base.py +0 -0
  283. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/runtimes/configs.py +0 -0
  284. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/runtimes/daytona_runtime.py +0 -0
  285. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/runtimes/docker_runtime.py +0 -0
  286. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/runtimes/llm_guard_runtime.py +0 -0
  287. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/runtimes/remote_http_runtime.py +0 -0
  288. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/runtimes/ubuntu_docker_runtime.py +0 -0
  289. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/runtimes/utils/__init__.py +0 -0
  290. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/runtimes/utils/function_risk_toolkit.py +0 -0
  291. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/runtimes/utils/ignore_risk_toolkit.py +0 -0
  292. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/schemas/__init__.py +0 -0
  293. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/schemas/base.py +0 -0
  294. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/schemas/openai_converter.py +0 -0
  295. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/schemas/outlines_converter.py +0 -0
  296. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/services/agent_openapi_server.py +0 -0
  297. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/societies/__init__.py +0 -0
  298. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/societies/babyagi_playing.py +0 -0
  299. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/societies/role_playing.py +0 -0
  300. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/societies/workforce/__init__.py +0 -0
  301. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/societies/workforce/base.py +0 -0
  302. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/societies/workforce/role_playing_worker.py +0 -0
  303. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/societies/workforce/single_agent_worker.py +0 -0
  304. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/societies/workforce/structured_output_handler.py +0 -0
  305. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/societies/workforce/task_channel.py +0 -0
  306. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/societies/workforce/utils.py +0 -0
  307. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/societies/workforce/worker.py +0 -0
  308. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/societies/workforce/workforce_logger.py +0 -0
  309. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/storages/__init__.py +0 -0
  310. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/storages/graph_storages/__init__.py +0 -0
  311. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/storages/graph_storages/base.py +0 -0
  312. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/storages/graph_storages/graph_element.py +0 -0
  313. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/storages/graph_storages/nebula_graph.py +0 -0
  314. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/storages/graph_storages/neo4j_graph.py +0 -0
  315. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/storages/key_value_storages/__init__.py +0 -0
  316. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/storages/key_value_storages/base.py +0 -0
  317. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/storages/key_value_storages/in_memory.py +0 -0
  318. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/storages/key_value_storages/json.py +0 -0
  319. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/storages/key_value_storages/mem0_cloud.py +0 -0
  320. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/storages/key_value_storages/redis.py +0 -0
  321. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/storages/object_storages/__init__.py +0 -0
  322. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/storages/object_storages/amazon_s3.py +0 -0
  323. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/storages/object_storages/azure_blob.py +0 -0
  324. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/storages/object_storages/base.py +0 -0
  325. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/storages/object_storages/google_cloud.py +0 -0
  326. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/storages/vectordb_storages/__init__.py +0 -0
  327. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/storages/vectordb_storages/base.py +0 -0
  328. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/storages/vectordb_storages/chroma.py +0 -0
  329. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/storages/vectordb_storages/faiss.py +0 -0
  330. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/storages/vectordb_storages/milvus.py +0 -0
  331. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/storages/vectordb_storages/oceanbase.py +0 -0
  332. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/storages/vectordb_storages/pgvector.py +0 -0
  333. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/storages/vectordb_storages/qdrant.py +0 -0
  334. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/storages/vectordb_storages/surreal.py +0 -0
  335. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/storages/vectordb_storages/tidb.py +0 -0
  336. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/storages/vectordb_storages/weaviate.py +0 -0
  337. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/tasks/__init__.py +0 -0
  338. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/tasks/task.py +0 -0
  339. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/tasks/task_prompt.py +0 -0
  340. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/terminators/__init__.py +0 -0
  341. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/terminators/base.py +0 -0
  342. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/terminators/response_terminator.py +0 -0
  343. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/terminators/token_limit_terminator.py +0 -0
  344. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/toolkits/__init__.py +0 -0
  345. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/toolkits/aci_toolkit.py +0 -0
  346. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/toolkits/arxiv_toolkit.py +0 -0
  347. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/toolkits/ask_news_toolkit.py +0 -0
  348. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/toolkits/async_browser_toolkit.py +0 -0
  349. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/toolkits/audio_analysis_toolkit.py +0 -0
  350. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/toolkits/base.py +0 -0
  351. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/toolkits/bohrium_toolkit.py +0 -0
  352. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/toolkits/browser_toolkit.py +0 -0
  353. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/toolkits/browser_toolkit_commons.py +0 -0
  354. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/toolkits/code_execution.py +0 -0
  355. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/toolkits/craw4ai_toolkit.py +0 -0
  356. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/toolkits/dappier_toolkit.py +0 -0
  357. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/toolkits/data_commons_toolkit.py +0 -0
  358. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/toolkits/edgeone_pages_mcp_toolkit.py +0 -0
  359. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/toolkits/excel_toolkit.py +0 -0
  360. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/toolkits/file_write_toolkit.py +0 -0
  361. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/toolkits/function_tool.py +0 -0
  362. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/toolkits/github_toolkit.py +0 -0
  363. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/toolkits/google_calendar_toolkit.py +0 -0
  364. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/toolkits/google_drive_mcp_toolkit.py +0 -0
  365. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/toolkits/google_maps_toolkit.py +0 -0
  366. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/toolkits/google_scholar_toolkit.py +0 -0
  367. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/toolkits/human_toolkit.py +0 -0
  368. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/toolkits/hybrid_browser_toolkit/__init__.py +0 -0
  369. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/toolkits/hybrid_browser_toolkit/hybrid_browser_toolkit.py +0 -0
  370. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/toolkits/hybrid_browser_toolkit/ts/package-lock.json +0 -0
  371. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/toolkits/hybrid_browser_toolkit/ts/package.json +0 -0
  372. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/toolkits/hybrid_browser_toolkit/ts/src/browser-scripts.js +0 -0
  373. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/toolkits/hybrid_browser_toolkit/ts/src/index.ts +0 -0
  374. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/toolkits/hybrid_browser_toolkit/ts/tsconfig.json +0 -0
  375. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/toolkits/hybrid_browser_toolkit_py/__init__.py +0 -0
  376. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/toolkits/hybrid_browser_toolkit_py/agent.py +0 -0
  377. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/toolkits/hybrid_browser_toolkit_py/stealth_script.js +0 -0
  378. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/toolkits/image_analysis_toolkit.py +0 -0
  379. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/toolkits/jina_reranker_toolkit.py +0 -0
  380. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/toolkits/klavis_toolkit.py +0 -0
  381. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/toolkits/linkedin_toolkit.py +0 -0
  382. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/toolkits/markitdown_toolkit.py +0 -0
  383. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/toolkits/math_toolkit.py +0 -0
  384. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/toolkits/mcp_toolkit.py +0 -0
  385. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/toolkits/memory_toolkit.py +0 -0
  386. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/toolkits/meshy_toolkit.py +0 -0
  387. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/toolkits/message_agent_toolkit.py +0 -0
  388. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/toolkits/message_integration.py +0 -0
  389. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/toolkits/mineru_toolkit.py +0 -0
  390. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/toolkits/networkx_toolkit.py +0 -0
  391. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/toolkits/notion_mcp_toolkit.py +0 -0
  392. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/toolkits/notion_toolkit.py +0 -0
  393. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/toolkits/open_api_specs/biztoc/__init__.py +0 -0
  394. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/toolkits/open_api_specs/biztoc/ai-plugin.json +0 -0
  395. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/toolkits/open_api_specs/biztoc/openapi.yaml +0 -0
  396. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/toolkits/open_api_specs/coursera/__init__.py +0 -0
  397. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/toolkits/open_api_specs/coursera/openapi.yaml +0 -0
  398. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/toolkits/open_api_specs/create_qr_code/__init__.py +0 -0
  399. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/toolkits/open_api_specs/create_qr_code/openapi.yaml +0 -0
  400. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/toolkits/open_api_specs/klarna/__init__.py +0 -0
  401. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/toolkits/open_api_specs/klarna/openapi.yaml +0 -0
  402. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/toolkits/open_api_specs/nasa_apod/__init__.py +0 -0
  403. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/toolkits/open_api_specs/nasa_apod/openapi.yaml +0 -0
  404. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/toolkits/open_api_specs/outschool/__init__.py +0 -0
  405. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/toolkits/open_api_specs/outschool/ai-plugin.json +0 -0
  406. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/toolkits/open_api_specs/outschool/openapi.yaml +0 -0
  407. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/toolkits/open_api_specs/outschool/paths/__init__.py +0 -0
  408. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/toolkits/open_api_specs/outschool/paths/get_classes.py +0 -0
  409. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/toolkits/open_api_specs/outschool/paths/search_teachers.py +0 -0
  410. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/toolkits/open_api_specs/security_config.py +0 -0
  411. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/toolkits/open_api_specs/speak/__init__.py +0 -0
  412. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/toolkits/open_api_specs/speak/openapi.yaml +0 -0
  413. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/toolkits/open_api_specs/web_scraper/__init__.py +0 -0
  414. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/toolkits/open_api_specs/web_scraper/ai-plugin.json +0 -0
  415. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/toolkits/open_api_specs/web_scraper/openapi.yaml +0 -0
  416. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/toolkits/open_api_specs/web_scraper/paths/__init__.py +0 -0
  417. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/toolkits/open_api_specs/web_scraper/paths/scraper.py +0 -0
  418. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/toolkits/open_api_toolkit.py +0 -0
  419. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/toolkits/openai_agent_toolkit.py +0 -0
  420. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/toolkits/openai_image_toolkit.py +0 -0
  421. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/toolkits/openbb_toolkit.py +0 -0
  422. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/toolkits/origene_mcp_toolkit.py +0 -0
  423. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/toolkits/page_script.js +0 -0
  424. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/toolkits/playwright_mcp_toolkit.py +0 -0
  425. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/toolkits/pptx_toolkit.py +0 -0
  426. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/toolkits/pubmed_toolkit.py +0 -0
  427. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/toolkits/pulse_mcp_search_toolkit.py +0 -0
  428. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/toolkits/pyautogui_toolkit.py +0 -0
  429. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/toolkits/reddit_toolkit.py +0 -0
  430. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/toolkits/retrieval_toolkit.py +0 -0
  431. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/toolkits/screenshot_toolkit.py +0 -0
  432. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/toolkits/searxng_toolkit.py +0 -0
  433. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/toolkits/semantic_scholar_toolkit.py +0 -0
  434. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/toolkits/slack_toolkit.py +0 -0
  435. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/toolkits/stripe_toolkit.py +0 -0
  436. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/toolkits/sympy_toolkit.py +0 -0
  437. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/toolkits/task_planning_toolkit.py +0 -0
  438. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/toolkits/thinking_toolkit.py +0 -0
  439. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/toolkits/twitter_toolkit.py +0 -0
  440. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/toolkits/video_analysis_toolkit.py +0 -0
  441. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/toolkits/video_download_toolkit.py +0 -0
  442. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/toolkits/weather_toolkit.py +0 -0
  443. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/toolkits/web_deploy_toolkit.py +0 -0
  444. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/toolkits/whatsapp_toolkit.py +0 -0
  445. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/toolkits/wolfram_alpha_toolkit.py +0 -0
  446. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/toolkits/zapier_toolkit.py +0 -0
  447. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/types/__init__.py +0 -0
  448. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/types/agents/__init__.py +0 -0
  449. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/types/agents/tool_calling_record.py +0 -0
  450. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/types/mcp_registries.py +0 -0
  451. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/types/openai_types.py +0 -0
  452. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/types/unified_model_type.py +0 -0
  453. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/utils/__init__.py +0 -0
  454. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/utils/async_func.py +0 -0
  455. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/utils/chunker/__init__.py +0 -0
  456. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/utils/chunker/base.py +0 -0
  457. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/utils/chunker/code_chunker.py +0 -0
  458. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/utils/chunker/uio_chunker.py +0 -0
  459. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/utils/commons.py +0 -0
  460. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/utils/constants.py +0 -0
  461. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/utils/deduplication.py +0 -0
  462. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/utils/filename.py +0 -0
  463. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/utils/langfuse.py +0 -0
  464. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/utils/mcp.py +0 -0
  465. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/utils/mcp_client.py +0 -0
  466. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/utils/message_summarizer.py +0 -0
  467. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/utils/response_format.py +0 -0
  468. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/utils/tool_result.py +0 -0
  469. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/verifiers/__init__.py +0 -0
  470. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/verifiers/base.py +0 -0
  471. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/verifiers/math_verifier.py +0 -0
  472. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/verifiers/models.py +0 -0
  473. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/verifiers/physics_verifier.py +0 -0
  474. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/camel/verifiers/python_verifier.py +0 -0
  475. {camel_ai-0.2.73a12 → camel_ai-0.2.74}/hatch_build_npm.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: camel-ai
3
- Version: 0.2.73a12
3
+ Version: 0.2.74
4
4
  Summary: Communicative Agents for AI Society Study
5
5
  Project-URL: Homepage, https://www.camel-ai.org/
6
6
  Project-URL: Repository, https://github.com/camel-ai/camel
@@ -237,7 +237,7 @@ Requires-Dist: exa-py<2,>=1.10.0; extra == 'eigent'
237
237
  Requires-Dist: ffmpeg-python<0.3,>=0.2.0; extra == 'eigent'
238
238
  Requires-Dist: html2text>=2024.2.26; extra == 'eigent'
239
239
  Requires-Dist: imageio[pyav]<3,>=2.34.2; extra == 'eigent'
240
- Requires-Dist: markitdown>=0.1.1; extra == 'eigent'
240
+ Requires-Dist: markitdown[all]>=0.1.1; extra == 'eigent'
241
241
  Requires-Dist: mcp-server-fetch==2025.1.17; extra == 'eigent'
242
242
  Requires-Dist: mcp-simple-arxiv==0.2.2; extra == 'eigent'
243
243
  Requires-Dist: numpy<=2.2,>=1.2; extra == 'eigent'
@@ -254,6 +254,7 @@ Requires-Dist: python-pptx>=1.0.2; extra == 'eigent'
254
254
  Requires-Dist: reportlab>=4.4.2; extra == 'eigent'
255
255
  Requires-Dist: requests-oauthlib<2,>=1.3.1; extra == 'eigent'
256
256
  Requires-Dist: scenedetect>=0.6.5.2; extra == 'eigent'
257
+ Requires-Dist: slack-sdk<4,>=3.27.2; extra == 'eigent'
257
258
  Requires-Dist: tabulate>=0.9.0; extra == 'eigent'
258
259
  Requires-Dist: websockets<15.1,>=13.0; extra == 'eigent'
259
260
  Requires-Dist: wikipedia<2,>=1; extra == 'eigent'
@@ -14,7 +14,7 @@
14
14
 
15
15
  from camel.logger import disable_logging, enable_logging, set_log_level
16
16
 
17
- __version__ = '0.2.73a12'
17
+ __version__ = '0.2.74'
18
18
 
19
19
  __all__ = [
20
20
  '__version__',
@@ -28,6 +28,11 @@ class E2BInterpreter(BaseInterpreter):
28
28
  Args:
29
29
  require_confirm (bool, optional): If True, prompt user before running
30
30
  code strings for security. (default: :obj:`True`)
31
+
32
+ Environment Variables:
33
+ E2B_API_KEY: The API key for authenticating with the E2B service.
34
+ E2B_DOMAIN: The base URL for the E2B API. If not provided,
35
+ will use the default E2B endpoint.
31
36
  """
32
37
 
33
38
  _CODE_TYPE_MAPPING: ClassVar[Dict[str, Optional[str]]] = {
@@ -55,7 +60,35 @@ class E2BInterpreter(BaseInterpreter):
55
60
  from e2b_code_interpreter import Sandbox
56
61
 
57
62
  self.require_confirm = require_confirm
58
- self._sandbox = Sandbox(api_key=os.environ.get("E2B_API_KEY"))
63
+
64
+ # Get API key from environment variable
65
+ api_key = os.environ.get("E2B_API_KEY")
66
+
67
+ # Get domain from environment variable
68
+ domain = os.environ.get("E2B_DOMAIN")
69
+
70
+ # Create sandbox with appropriate parameters
71
+ sandbox_kwargs = {"api_key": api_key}
72
+
73
+ # Only add domain if it's provided
74
+ # (to maintain compatibility with standard E2B)
75
+ if domain:
76
+ sandbox_kwargs["domain"] = domain
77
+ logger.info(f"Using custom E2B endpoint: {domain}")
78
+
79
+ try:
80
+ self._sandbox = Sandbox(**sandbox_kwargs)
81
+ except TypeError as e:
82
+ if domain and "domain" in str(e):
83
+ logger.warning(
84
+ f"The e2b_code_interpreter library doesn't support "
85
+ f"custom domain. "
86
+ f"Using default E2B endpoint. Error: {e}"
87
+ )
88
+ # Fallback to default configuration without domain
89
+ self._sandbox = Sandbox(api_key=api_key)
90
+ else:
91
+ raise e
59
92
 
60
93
  def __del__(self) -> None:
61
94
  r"""Destructor for the E2BInterpreter class.
@@ -21,8 +21,8 @@ from camel.messages import OpenAIMessage
21
21
  from camel.models.openai_compatible_model import OpenAICompatibleModel
22
22
  from camel.types import ChatCompletion, ChatCompletionChunk, ModelType
23
23
  from camel.utils import (
24
- AnthropicTokenCounter,
25
24
  BaseTokenCounter,
25
+ OpenAITokenCounter,
26
26
  api_keys_required,
27
27
  dependencies_required,
28
28
  )
@@ -141,11 +141,13 @@ class AnthropicModel(OpenAICompatibleModel):
141
141
  r"""Initialize the token counter for the model backend.
142
142
 
143
143
  Returns:
144
- BaseTokenCounter: The token counter following the model's
144
+ OpenAITokenCounter: The token counter following the model's
145
145
  tokenization style.
146
146
  """
147
+ # TODO: use anthropic token counter
148
+
147
149
  if not self._token_counter:
148
- self._token_counter = AnthropicTokenCounter(self.model_type)
150
+ self._token_counter = OpenAITokenCounter(ModelType.GPT_4O_MINI)
149
151
  return self._token_counter
150
152
 
151
153
  def check_model_config(self):
@@ -198,10 +198,9 @@ Now you should summarize the scenario and return the result of the task.
198
198
 
199
199
  TASK_DECOMPOSE_PROMPT = r"""You need to either decompose a complex task or enhance a simple one, following these important principles to maximize efficiency and clarity for the executing agents:
200
200
 
201
- 0. **Enhance Simple Tasks, Don't Decompose**: First, evaluate if the task is a single, straightforward action.
202
- * **If the task is simple, DO NOT decompose it.** Instead, **rewrite and enhance** it by consolidating the main goal with any specific details from the additional information into a single, self-contained instruction. The goal is to produce a high-quality task with a clear, specific deliverable.
203
- * For example, a vague task like "Generate a report about camel-ai" should be enhanced to "Generate a comprehensive, well-structured report about camel-ai as one HTML file".
204
- * **Only decompose if a task is truly complex**: A task is complex if it involves multiple distinct steps, requires different worker skills, or can be significantly sped up by running parts in parallel.
201
+ 0. **Analyze Task Complexity**: First, evaluate if the task is a single, straightforward action or a complex one.
202
+ * **If the task is complex or could be decomposed into multiple subtasks run in parallel, decompose it.** A task is considered complex if it involves multiple distinct steps, requires different skills, or can be significantly sped up by running parts in parallel.
203
+ * **If the task is simple, do not decompose it.** Instead, **rewrite and enhance** it to produce a high-quality task with a clear, specific deliverable.
205
204
 
206
205
  1. **Self-Contained Subtasks** (if decomposing): This is critical principle. Each subtask's description **must be fully self-sufficient and independently understandable**. The agent executing the subtask has **no knowledge** of the parent task, other subtasks, or the overall workflow.
207
206
  * **DO NOT** use relative references like "the first task," "the paper mentioned above," or "the result from the previous step."
@@ -230,21 +229,6 @@ These principles aim to reduce overall completion time by maximizing concurrent
230
229
 
231
230
  **EXAMPLE FORMAT ONLY** (DO NOT use this example content for actual task decomposition):
232
231
 
233
- ***
234
- **Example 0: Simple Task (Enhance, Don't Decompose)**
235
-
236
- * **Overall Task**: "Generate a report about camel-ai"
237
- * **Available Workers**:
238
- * `DocumentAgent`: A worker that can read documents and write summaries.
239
- * **Correct Output**:
240
- ```xml
241
- <tasks>
242
- <task>Generate a comprehensive, well-structured report about camel-ai as one HTML file</task>
243
- </tasks>
244
- ```
245
- * **Reasoning**: The original task is simple but its details are vague. It is **enhanced** by consolidating all given details (output format, content focus) into a single, precise, and self-contained instruction. This follows the "Enhance Simple Tasks" principle and does not invent new information.
246
- ***
247
-
248
232
  ***
249
233
  **Example 1: Sequential Task for a Single Worker**
250
234
 
@@ -84,7 +84,7 @@ logger = get_logger(__name__)
84
84
  # Constants for configuration values
85
85
  MAX_TASK_RETRIES = 3
86
86
  MAX_PENDING_TASKS_LIMIT = 20
87
- TASK_TIMEOUT_SECONDS = 180.0
87
+ TASK_TIMEOUT_SECONDS = 480.0
88
88
  DEFAULT_WORKER_POOL_SIZE = 10
89
89
 
90
90
 
@@ -163,6 +163,11 @@ class Workforce(BaseNode):
163
163
  for graceful shutdown when a task fails 3 times. During this
164
164
  period, the workforce remains active for debugging.
165
165
  Set to 0 for immediate shutdown. (default: :obj:`15.0`)
166
+ task_timeout_seconds (Optional[float], optional): The timeout in
167
+ seconds for waiting for tasks to be returned by workers. If None,
168
+ uses the global TASK_TIMEOUT_SECONDS value (600.0 seconds).
169
+ Increase this value for tasks that require more processing time.
170
+ (default: :obj:`None`)
166
171
  share_memory (bool, optional): Whether to enable shared memory across
167
172
  SingleAgentWorker instances in the workforce. When enabled, all
168
173
  SingleAgentWorker instances, coordinator agent, and task planning
@@ -231,6 +236,7 @@ class Workforce(BaseNode):
231
236
  graceful_shutdown_timeout: float = 15.0,
232
237
  share_memory: bool = False,
233
238
  use_structured_output_handler: bool = True,
239
+ task_timeout_seconds: Optional[float] = None,
234
240
  ) -> None:
235
241
  super().__init__(description)
236
242
  self._child_listening_tasks: Deque[
@@ -241,6 +247,9 @@ class Workforce(BaseNode):
241
247
  self.graceful_shutdown_timeout = graceful_shutdown_timeout
242
248
  self.share_memory = share_memory
243
249
  self.use_structured_output_handler = use_structured_output_handler
250
+ self.task_timeout_seconds = (
251
+ task_timeout_seconds or TASK_TIMEOUT_SECONDS
252
+ )
244
253
  if self.use_structured_output_handler:
245
254
  self.structured_handler = StructuredOutputHandler()
246
255
  self.metrics_logger = WorkforceLogger(workforce_id=self.node_id)
@@ -343,12 +352,7 @@ class Workforce(BaseNode):
343
352
  # Set up task agent with default system message and required tools
344
353
  task_sys_msg = BaseMessage.make_assistant_message(
345
354
  role_name="Task Planner",
346
- content="You are going to compose and decompose tasks. Keep "
347
- "tasks that are sequential and require the same type of "
348
- "agent together in one agent process. Only decompose tasks "
349
- "that can be handled in parallel and require different types "
350
- "of agents. This ensures efficient execution by minimizing "
351
- "context switching between agents.",
355
+ content="You are going to handle tasks.",
352
356
  )
353
357
  task_planning_tools = TaskPlanningToolkit().get_tools()
354
358
 
@@ -2311,7 +2315,7 @@ class Workforce(BaseNode):
2311
2315
  # Add timeout to prevent indefinite waiting
2312
2316
  return await asyncio.wait_for(
2313
2317
  self._channel.get_returned_task_by_publisher(self.node_id),
2314
- timeout=TASK_TIMEOUT_SECONDS,
2318
+ timeout=self.task_timeout_seconds,
2315
2319
  )
2316
2320
  except Exception as e:
2317
2321
  error_msg = (
@@ -3066,6 +3070,7 @@ class Workforce(BaseNode):
3066
3070
  graceful_shutdown_timeout=self.graceful_shutdown_timeout,
3067
3071
  share_memory=self.share_memory,
3068
3072
  use_structured_output_handler=self.use_structured_output_handler,
3073
+ task_timeout_seconds=self.task_timeout_seconds,
3069
3074
  )
3070
3075
 
3071
3076
  for child in self._children:
@@ -23,6 +23,7 @@ class BrowserConfig:
23
23
  headless: bool = True
24
24
  user_data_dir: Optional[str] = None
25
25
  stealth: bool = False
26
+ console_log_limit: int = 1000
26
27
 
27
28
  # Default settings
28
29
  default_start_url: str = "https://google.com/"
@@ -105,6 +106,8 @@ class ConfigLoader:
105
106
  browser_kwargs["connect_over_cdp"] = value
106
107
  elif key == "cdpUrl":
107
108
  browser_kwargs["cdp_url"] = value
109
+ elif key == "consoleLogLimit":
110
+ browser_kwargs["console_log_limit"] = value
108
111
  elif key == "cacheDir":
109
112
  toolkit_kwargs["cache_dir"] = value
110
113
  elif key == "browserLogToFile":
@@ -64,11 +64,16 @@ class HybridBrowserToolkit(BaseToolkit, RegisteredAgentToolkit):
64
64
  "browser_select",
65
65
  "browser_scroll",
66
66
  "browser_enter",
67
+ "browser_mouse_control",
68
+ "browser_mouse_drag",
69
+ "browser_press_key",
67
70
  "browser_wait_user",
68
71
  "browser_solve_task",
69
72
  "browser_switch_tab",
70
73
  "browser_close_tab",
71
74
  "browser_get_tab_info",
75
+ "browser_console_view",
76
+ "browser_console_exec",
72
77
  ]
73
78
 
74
79
  def __init__(
@@ -863,6 +868,156 @@ class HybridBrowserToolkit(BaseToolkit, RegisteredAgentToolkit):
863
868
  "total_tabs": 0,
864
869
  }
865
870
 
871
+ async def browser_mouse_control(
872
+ self, *, control: str, x: float, y: float
873
+ ) -> Dict[str, Any]:
874
+ r"""Control the mouse to interact with browser with x, y coordinates
875
+
876
+ Args:
877
+ control ([str]): The action to perform: 'click', 'right_click'
878
+ or 'dblclick'.
879
+ x (float): x-coordinate for the control action.
880
+ y (float): y-coordinate for the control action.
881
+
882
+ Returns:
883
+ Dict[str, Any]: A dictionary with the result of the action:
884
+ - "result" (str): Confirmation of the action.
885
+ - "snapshot" (str): A snapshot of the page after mouse
886
+ control action.
887
+ - "tabs" (List[Dict]): Information about all open tabs.
888
+ - "current_tab" (int): Index of the active tab.
889
+ - "total_tabs" (int): Total number of open tabs.
890
+ """
891
+ try:
892
+ ws_wrapper = await self._get_ws_wrapper()
893
+ result = await ws_wrapper.mouse_control(control, x, y)
894
+
895
+ # Add tab information
896
+ tab_info = await ws_wrapper.get_tab_info()
897
+ result.update(
898
+ {
899
+ "tabs": tab_info,
900
+ "current_tab": next(
901
+ (
902
+ i
903
+ for i, tab in enumerate(tab_info)
904
+ if tab.get("is_current")
905
+ ),
906
+ 0,
907
+ ),
908
+ "total_tabs": len(tab_info),
909
+ }
910
+ )
911
+
912
+ return result
913
+ except Exception as e:
914
+ logger.error(f"Failed to control mouse: {e}")
915
+ return {
916
+ "result": f"Error with mouse control: {e}",
917
+ "snapshot": "",
918
+ "tabs": [],
919
+ "current_tab": 0,
920
+ "total_tabs": 0,
921
+ }
922
+
923
+ async def browser_mouse_drag(
924
+ self, *, from_ref: str, to_ref: str
925
+ ) -> Dict[str, Any]:
926
+ r"""Control the mouse to drag and drop in the browser using ref IDs.
927
+
928
+ Args:
929
+ from_ref (str): The `ref` ID of the source element to drag from.
930
+ to_ref (str): The `ref` ID of the target element to drag to.
931
+
932
+ Returns:
933
+ Dict[str, Any]: A dictionary with the result of the action:
934
+ - "result" (str): Confirmation of the action.
935
+ - "snapshot" (str): A new page snapshot.
936
+ - "tabs" (List[Dict]): Information about all open tabs.
937
+ - "current_tab" (int): Index of the active tab.
938
+ - "total_tabs" (int): Total number of open tabs.
939
+ """
940
+ try:
941
+ ws_wrapper = await self._get_ws_wrapper()
942
+ result = await ws_wrapper.mouse_drag(from_ref, to_ref)
943
+
944
+ # Add tab information
945
+ tab_info = await ws_wrapper.get_tab_info()
946
+ result.update(
947
+ {
948
+ "tabs": tab_info,
949
+ "current_tab": next(
950
+ (
951
+ i
952
+ for i, tab in enumerate(tab_info)
953
+ if tab.get("is_current")
954
+ ),
955
+ 0,
956
+ ),
957
+ "total_tabs": len(tab_info),
958
+ }
959
+ )
960
+
961
+ return result
962
+ except Exception as e:
963
+ logger.error(f"Error with mouse drag and drop: {e}")
964
+ return {
965
+ "result": f"Error with mouse drag and drop: {e}",
966
+ "snapshot": "",
967
+ "tabs": [],
968
+ "current_tab": 0,
969
+ "total_tabs": 0,
970
+ }
971
+
972
+ async def browser_press_key(self, *, keys: List[str]) -> Dict[str, Any]:
973
+ r"""Press key and key combinations.
974
+ Supports single key press or combination of keys by concatenating
975
+ them with '+' separator.
976
+
977
+ Args:
978
+ keys (List[str]): key or list of keys.
979
+
980
+ Returns:
981
+ Dict[str, Any]: A dictionary with the result of the action:
982
+ - "result" (str): Confirmation of the action.
983
+ - "snapshot" (str): A snapshot of the page after
984
+ press key action.
985
+ - "tabs" (List[Dict]): Information about all open tabs.
986
+ - "current_tab" (int): Index of the active tab.
987
+ - "total_tabs" (int): Total number of open tabs.
988
+ """
989
+ try:
990
+ ws_wrapper = await self._get_ws_wrapper()
991
+ result = await ws_wrapper.press_key(keys)
992
+
993
+ # Add tab information
994
+ tab_info = await ws_wrapper.get_tab_info()
995
+ result.update(
996
+ {
997
+ "tabs": tab_info,
998
+ "current_tab": next(
999
+ (
1000
+ i
1001
+ for i, tab in enumerate(tab_info)
1002
+ if tab.get("is_current")
1003
+ ),
1004
+ 0,
1005
+ ),
1006
+ "total_tabs": len(tab_info),
1007
+ }
1008
+ )
1009
+
1010
+ return result
1011
+ except Exception as e:
1012
+ logger.error(f"Failed to press key: {e}")
1013
+ return {
1014
+ "result": f"Error with press key: {e}",
1015
+ "snapshot": "",
1016
+ "tabs": [],
1017
+ "current_tab": 0,
1018
+ "total_tabs": 0,
1019
+ }
1020
+
866
1021
  async def browser_switch_tab(self, *, tab_id: str) -> Dict[str, Any]:
867
1022
  r"""Switches to a different browser tab using its ID.
868
1023
 
@@ -1002,6 +1157,71 @@ class HybridBrowserToolkit(BaseToolkit, RegisteredAgentToolkit):
1002
1157
  "total_tabs": 0,
1003
1158
  }
1004
1159
 
1160
+ async def browser_console_view(self) -> Dict[str, Any]:
1161
+ r"""View current page console logs.
1162
+
1163
+ Returns:
1164
+ Dict[str, Any]: A dictionary with tab information:
1165
+ - "console_messages" (List[Dict]) : List of messages logged
1166
+ in the current page
1167
+
1168
+ """
1169
+ try:
1170
+ ws_wrapper = await self._get_ws_wrapper()
1171
+ console_logs = await ws_wrapper.console_view()
1172
+
1173
+ return {"console_messages": console_logs}
1174
+ except Exception as e:
1175
+ logger.error(f"Failed to get console view: {e}")
1176
+ return {"console_messages": []}
1177
+
1178
+ async def browser_console_exec(self, code: str) -> Dict[str, Any]:
1179
+ r"""Execute javascript code in the console of the current page and get
1180
+ results.
1181
+
1182
+ Args:
1183
+ code (str): JavaScript code to execute in the browser console.
1184
+
1185
+ Returns:
1186
+ Dict[str, Any]: A dictionary with the result of the action:
1187
+ - "result" (str): Confirmation of the action.
1188
+ - "snapshot" (str): A snapshot of the active tab after
1189
+ console execute action.
1190
+ - "tabs" (List[Dict]): Information about remaining tabs.
1191
+ - "current_tab" (int): Index of the new active tab.
1192
+ - "total_tabs" (int): Total number of remaining tabs.
1193
+ """
1194
+ try:
1195
+ ws_wrapper = await self._get_ws_wrapper()
1196
+ result = await ws_wrapper.console_exec(code)
1197
+
1198
+ tab_info = await ws_wrapper.get_tab_info()
1199
+ result.update(
1200
+ {
1201
+ "tabs": tab_info,
1202
+ "current_tab": next(
1203
+ (
1204
+ i
1205
+ for i, tab in enumerate(tab_info)
1206
+ if tab.get("is_current")
1207
+ ),
1208
+ 0,
1209
+ ),
1210
+ "total_tabs": len(tab_info),
1211
+ }
1212
+ )
1213
+
1214
+ return result
1215
+ except Exception as e:
1216
+ logger.error(f"Failed to execute javascript in console: {e}")
1217
+ return {
1218
+ "result": f"Error in code execution: {e}",
1219
+ "snapshot": "",
1220
+ "tabs": [],
1221
+ "current_tab": 0,
1222
+ "total_tabs": 0,
1223
+ }
1224
+
1005
1225
  # Additional methods for backward compatibility
1006
1226
  async def browser_wait_user(
1007
1227
  self, timeout_sec: Optional[float] = None
@@ -1146,10 +1366,15 @@ class HybridBrowserToolkit(BaseToolkit, RegisteredAgentToolkit):
1146
1366
  "browser_select": self.browser_select,
1147
1367
  "browser_scroll": self.browser_scroll,
1148
1368
  "browser_enter": self.browser_enter,
1369
+ "browser_mouse_click": self.browser_mouse_control,
1370
+ "browser_mouse_drag": self.browser_mouse_drag,
1371
+ "browser_press_key": self.browser_press_key,
1149
1372
  "browser_wait_user": self.browser_wait_user,
1150
1373
  "browser_switch_tab": self.browser_switch_tab,
1151
1374
  "browser_close_tab": self.browser_close_tab,
1152
1375
  "browser_get_tab_info": self.browser_get_tab_info,
1376
+ "browser_console_view": self.browser_console_view,
1377
+ "browser_console_exec": self.browser_console_exec,
1153
1378
  }
1154
1379
 
1155
1380
  enabled_tools = []