camel-ai 0.2.73a0__tar.gz → 0.2.73a2__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 (476) hide show
  1. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/PKG-INFO +3 -3
  2. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/__init__.py +1 -1
  3. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/agents/chat_agent.py +26 -1
  4. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/__init__.py +2 -0
  5. camel_ai-0.2.73a2/camel/toolkits/hybrid_browser_toolkit/hybrid_browser_toolkit.py +177 -0
  6. camel_ai-0.2.73a0/camel/toolkits/hybrid_browser_toolkit/hybrid_browser_toolkit.py → camel_ai-0.2.73a2/camel/toolkits/hybrid_browser_toolkit/hybrid_browser_toolkit_ts.py +1 -1
  7. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/hybrid_browser_toolkit/ts/src/browser-session.ts +46 -17
  8. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/hybrid_browser_toolkit/ts/websocket-server.js +46 -2
  9. camel_ai-0.2.73a2/camel/toolkits/hybrid_browser_toolkit_py/__init__.py +17 -0
  10. camel_ai-0.2.73a2/camel/toolkits/hybrid_browser_toolkit_py/actions.py +417 -0
  11. camel_ai-0.2.73a2/camel/toolkits/hybrid_browser_toolkit_py/agent.py +311 -0
  12. camel_ai-0.2.73a2/camel/toolkits/hybrid_browser_toolkit_py/browser_session.py +740 -0
  13. camel_ai-0.2.73a2/camel/toolkits/hybrid_browser_toolkit_py/config_loader.py +447 -0
  14. camel_ai-0.2.73a2/camel/toolkits/hybrid_browser_toolkit_py/hybrid_browser_toolkit.py +1994 -0
  15. camel_ai-0.2.73a2/camel/toolkits/hybrid_browser_toolkit_py/snapshot.py +227 -0
  16. camel_ai-0.2.73a2/camel/toolkits/hybrid_browser_toolkit_py/stealth_script.js +0 -0
  17. camel_ai-0.2.73a2/camel/toolkits/hybrid_browser_toolkit_py/unified_analyzer.js +1002 -0
  18. camel_ai-0.2.73a2/camel/toolkits/notion_mcp_toolkit.py +234 -0
  19. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/slack_toolkit.py +38 -48
  20. camel_ai-0.2.73a2/hatch_build_npm.py +293 -0
  21. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/pyproject.toml +3 -3
  22. camel_ai-0.2.73a0/hatch_build_npm.py +0 -213
  23. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/.gitignore +0 -0
  24. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/LICENSE +0 -0
  25. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/README.md +0 -0
  26. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/agents/__init__.py +0 -0
  27. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/agents/_types.py +0 -0
  28. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/agents/_utils.py +0 -0
  29. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/agents/base.py +0 -0
  30. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/agents/critic_agent.py +0 -0
  31. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/agents/deductive_reasoner_agent.py +0 -0
  32. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/agents/embodied_agent.py +0 -0
  33. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/agents/knowledge_graph_agent.py +0 -0
  34. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/agents/mcp_agent.py +0 -0
  35. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/agents/multi_hop_generator_agent.py +0 -0
  36. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/agents/programmed_agent_instruction.py +0 -0
  37. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/agents/repo_agent.py +0 -0
  38. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/agents/role_assignment_agent.py +0 -0
  39. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/agents/search_agent.py +0 -0
  40. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/agents/task_agent.py +0 -0
  41. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/agents/tool_agents/__init__.py +0 -0
  42. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/agents/tool_agents/base.py +0 -0
  43. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/agents/tool_agents/hugging_face_tool_agent.py +0 -0
  44. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/benchmarks/__init__.py +0 -0
  45. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/benchmarks/apibank.py +0 -0
  46. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/benchmarks/apibench.py +0 -0
  47. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/benchmarks/base.py +0 -0
  48. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/benchmarks/browsecomp.py +0 -0
  49. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/benchmarks/gaia.py +0 -0
  50. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/benchmarks/mock_website/README.md +0 -0
  51. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/benchmarks/mock_website/mock_web.py +0 -0
  52. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/benchmarks/mock_website/requirements.txt +0 -0
  53. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/benchmarks/mock_website/shopping_mall/app.py +0 -0
  54. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/benchmarks/mock_website/task.json +0 -0
  55. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/benchmarks/nexus.py +0 -0
  56. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/benchmarks/ragbench.py +0 -0
  57. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/bots/__init__.py +0 -0
  58. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/bots/discord/__init__.py +0 -0
  59. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/bots/discord/discord_app.py +0 -0
  60. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/bots/discord/discord_installation.py +0 -0
  61. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/bots/discord/discord_store.py +0 -0
  62. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/bots/slack/__init__.py +0 -0
  63. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/bots/slack/models.py +0 -0
  64. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/bots/slack/slack_app.py +0 -0
  65. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/bots/telegram_bot.py +0 -0
  66. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/configs/__init__.py +0 -0
  67. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/configs/aiml_config.py +0 -0
  68. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/configs/anthropic_config.py +0 -0
  69. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/configs/base_config.py +0 -0
  70. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/configs/bedrock_config.py +0 -0
  71. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/configs/cohere_config.py +0 -0
  72. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/configs/crynux_config.py +0 -0
  73. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/configs/deepseek_config.py +0 -0
  74. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/configs/gemini_config.py +0 -0
  75. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/configs/groq_config.py +0 -0
  76. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/configs/internlm_config.py +0 -0
  77. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/configs/litellm_config.py +0 -0
  78. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/configs/lmstudio_config.py +0 -0
  79. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/configs/mistral_config.py +0 -0
  80. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/configs/modelscope_config.py +0 -0
  81. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/configs/moonshot_config.py +0 -0
  82. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/configs/netmind_config.py +0 -0
  83. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/configs/novita_config.py +0 -0
  84. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/configs/nvidia_config.py +0 -0
  85. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/configs/ollama_config.py +0 -0
  86. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/configs/openai_config.py +0 -0
  87. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/configs/openrouter_config.py +0 -0
  88. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/configs/ppio_config.py +0 -0
  89. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/configs/qianfan_config.py +0 -0
  90. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/configs/qwen_config.py +0 -0
  91. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/configs/reka_config.py +0 -0
  92. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/configs/samba_config.py +0 -0
  93. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/configs/sglang_config.py +0 -0
  94. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/configs/siliconflow_config.py +0 -0
  95. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/configs/togetherai_config.py +0 -0
  96. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/configs/vllm_config.py +0 -0
  97. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/configs/watsonx_config.py +0 -0
  98. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/configs/yi_config.py +0 -0
  99. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/configs/zhipuai_config.py +0 -0
  100. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/data_collectors/__init__.py +0 -0
  101. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/data_collectors/alpaca_collector.py +0 -0
  102. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/data_collectors/base.py +0 -0
  103. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/data_collectors/sharegpt_collector.py +0 -0
  104. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/datagen/__init__.py +0 -0
  105. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/datagen/cot_datagen.py +0 -0
  106. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/datagen/evol_instruct/__init__.py +0 -0
  107. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/datagen/evol_instruct/evol_instruct.py +0 -0
  108. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/datagen/evol_instruct/scorer.py +0 -0
  109. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/datagen/evol_instruct/templates.py +0 -0
  110. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/datagen/self_improving_cot.py +0 -0
  111. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/datagen/self_instruct/__init__.py +0 -0
  112. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/datagen/self_instruct/filter/__init__.py +0 -0
  113. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/datagen/self_instruct/filter/filter_function.py +0 -0
  114. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/datagen/self_instruct/filter/filter_registry.py +0 -0
  115. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/datagen/self_instruct/filter/instruction_filter.py +0 -0
  116. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/datagen/self_instruct/self_instruct.py +0 -0
  117. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/datagen/self_instruct/templates.py +0 -0
  118. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/datagen/source2synth/__init__.py +0 -0
  119. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/datagen/source2synth/data_processor.py +0 -0
  120. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/datagen/source2synth/models.py +0 -0
  121. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/datagen/source2synth/user_data_processor_config.py +0 -0
  122. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/datahubs/__init__.py +0 -0
  123. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/datahubs/base.py +0 -0
  124. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/datahubs/huggingface.py +0 -0
  125. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/datahubs/models.py +0 -0
  126. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/datasets/__init__.py +0 -0
  127. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/datasets/base_generator.py +0 -0
  128. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/datasets/few_shot_generator.py +0 -0
  129. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/datasets/models.py +0 -0
  130. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/datasets/self_instruct_generator.py +0 -0
  131. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/datasets/static_dataset.py +0 -0
  132. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/embeddings/__init__.py +0 -0
  133. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/embeddings/azure_embedding.py +0 -0
  134. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/embeddings/base.py +0 -0
  135. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/embeddings/gemini_embedding.py +0 -0
  136. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/embeddings/jina_embedding.py +0 -0
  137. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/embeddings/mistral_embedding.py +0 -0
  138. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/embeddings/openai_compatible_embedding.py +0 -0
  139. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/embeddings/openai_embedding.py +0 -0
  140. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/embeddings/sentence_transformers_embeddings.py +0 -0
  141. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/embeddings/together_embedding.py +0 -0
  142. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/embeddings/vlm_embedding.py +0 -0
  143. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/environments/__init__.py +0 -0
  144. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/environments/models.py +0 -0
  145. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/environments/multi_step.py +0 -0
  146. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/environments/rlcards_env.py +0 -0
  147. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/environments/single_step.py +0 -0
  148. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/environments/tic_tac_toe.py +0 -0
  149. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/extractors/__init__.py +0 -0
  150. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/extractors/base.py +0 -0
  151. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/extractors/python_strategies.py +0 -0
  152. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/generators.py +0 -0
  153. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/human.py +0 -0
  154. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/interpreters/__init__.py +0 -0
  155. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/interpreters/base.py +0 -0
  156. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/interpreters/docker/Dockerfile +0 -0
  157. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/interpreters/docker_interpreter.py +0 -0
  158. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/interpreters/e2b_interpreter.py +0 -0
  159. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/interpreters/internal_python_interpreter.py +0 -0
  160. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/interpreters/interpreter_error.py +0 -0
  161. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/interpreters/ipython_interpreter.py +0 -0
  162. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/interpreters/subprocess_interpreter.py +0 -0
  163. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/loaders/__init__.py +0 -0
  164. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/loaders/apify_reader.py +0 -0
  165. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/loaders/base_io.py +0 -0
  166. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/loaders/base_loader.py +0 -0
  167. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/loaders/chunkr_reader.py +0 -0
  168. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/loaders/crawl4ai_reader.py +0 -0
  169. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/loaders/firecrawl_reader.py +0 -0
  170. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/loaders/jina_url_reader.py +0 -0
  171. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/loaders/markitdown.py +0 -0
  172. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/loaders/mineru_extractor.py +0 -0
  173. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/loaders/mistral_reader.py +0 -0
  174. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/loaders/pandas_reader.py +0 -0
  175. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/loaders/scrapegraph_reader.py +0 -0
  176. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/loaders/unstructured_io.py +0 -0
  177. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/logger.py +0 -0
  178. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/memories/__init__.py +0 -0
  179. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/memories/agent_memories.py +0 -0
  180. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/memories/base.py +0 -0
  181. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/memories/blocks/__init__.py +0 -0
  182. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/memories/blocks/chat_history_block.py +0 -0
  183. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/memories/blocks/vectordb_block.py +0 -0
  184. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/memories/context_creators/__init__.py +0 -0
  185. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/memories/context_creators/score_based.py +0 -0
  186. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/memories/records.py +0 -0
  187. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/messages/__init__.py +0 -0
  188. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/messages/base.py +0 -0
  189. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/messages/conversion/__init__.py +0 -0
  190. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/messages/conversion/alpaca.py +0 -0
  191. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/messages/conversion/conversation_models.py +0 -0
  192. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/messages/conversion/sharegpt/__init__.py +0 -0
  193. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/messages/conversion/sharegpt/function_call_formatter.py +0 -0
  194. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/messages/conversion/sharegpt/hermes/__init__.py +0 -0
  195. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/messages/conversion/sharegpt/hermes/hermes_function_formatter.py +0 -0
  196. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/messages/func_message.py +0 -0
  197. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/models/__init__.py +0 -0
  198. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/models/_utils.py +0 -0
  199. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/models/aiml_model.py +0 -0
  200. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/models/anthropic_model.py +0 -0
  201. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/models/aws_bedrock_model.py +0 -0
  202. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/models/azure_openai_model.py +0 -0
  203. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/models/base_audio_model.py +0 -0
  204. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/models/base_model.py +0 -0
  205. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/models/cohere_model.py +0 -0
  206. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/models/crynux_model.py +0 -0
  207. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/models/deepseek_model.py +0 -0
  208. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/models/fish_audio_model.py +0 -0
  209. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/models/gemini_model.py +0 -0
  210. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/models/groq_model.py +0 -0
  211. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/models/internlm_model.py +0 -0
  212. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/models/litellm_model.py +0 -0
  213. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/models/lmstudio_model.py +0 -0
  214. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/models/mistral_model.py +0 -0
  215. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/models/model_factory.py +0 -0
  216. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/models/model_manager.py +0 -0
  217. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/models/modelscope_model.py +0 -0
  218. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/models/moonshot_model.py +0 -0
  219. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/models/nemotron_model.py +0 -0
  220. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/models/netmind_model.py +0 -0
  221. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/models/novita_model.py +0 -0
  222. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/models/nvidia_model.py +0 -0
  223. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/models/ollama_model.py +0 -0
  224. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/models/openai_audio_models.py +0 -0
  225. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/models/openai_compatible_model.py +0 -0
  226. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/models/openai_model.py +0 -0
  227. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/models/openrouter_model.py +0 -0
  228. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/models/ppio_model.py +0 -0
  229. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/models/qianfan_model.py +0 -0
  230. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/models/qwen_model.py +0 -0
  231. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/models/reka_model.py +0 -0
  232. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/models/reward/__init__.py +0 -0
  233. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/models/reward/base_reward_model.py +0 -0
  234. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/models/reward/evaluator.py +0 -0
  235. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/models/reward/nemotron_model.py +0 -0
  236. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/models/reward/skywork_model.py +0 -0
  237. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/models/samba_model.py +0 -0
  238. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/models/sglang_model.py +0 -0
  239. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/models/siliconflow_model.py +0 -0
  240. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/models/stub_model.py +0 -0
  241. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/models/togetherai_model.py +0 -0
  242. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/models/vllm_model.py +0 -0
  243. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/models/volcano_model.py +0 -0
  244. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/models/watsonx_model.py +0 -0
  245. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/models/yi_model.py +0 -0
  246. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/models/zhipuai_model.py +0 -0
  247. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/personas/__init__.py +0 -0
  248. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/personas/persona.py +0 -0
  249. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/personas/persona_hub.py +0 -0
  250. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/prompts/__init__.py +0 -0
  251. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/prompts/ai_society.py +0 -0
  252. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/prompts/base.py +0 -0
  253. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/prompts/code.py +0 -0
  254. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/prompts/evaluation.py +0 -0
  255. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/prompts/generate_text_embedding_data.py +0 -0
  256. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/prompts/image_craft.py +0 -0
  257. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/prompts/misalignment.py +0 -0
  258. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/prompts/multi_condition_image_craft.py +0 -0
  259. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/prompts/object_recognition.py +0 -0
  260. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/prompts/persona_hub.py +0 -0
  261. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/prompts/prompt_templates.py +0 -0
  262. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/prompts/role_description_prompt_template.py +0 -0
  263. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/prompts/solution_extraction.py +0 -0
  264. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/prompts/task_prompt_template.py +0 -0
  265. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/prompts/translation.py +0 -0
  266. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/prompts/video_description_prompt.py +0 -0
  267. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/py.typed +0 -0
  268. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/responses/__init__.py +0 -0
  269. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/responses/agent_responses.py +0 -0
  270. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/retrievers/__init__.py +0 -0
  271. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/retrievers/auto_retriever.py +0 -0
  272. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/retrievers/base.py +0 -0
  273. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/retrievers/bm25_retriever.py +0 -0
  274. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/retrievers/cohere_rerank_retriever.py +0 -0
  275. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/retrievers/hybrid_retrival.py +0 -0
  276. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/retrievers/vector_retriever.py +0 -0
  277. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/runtimes/__init__.py +0 -0
  278. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/runtimes/api.py +0 -0
  279. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/runtimes/base.py +0 -0
  280. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/runtimes/configs.py +0 -0
  281. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/runtimes/daytona_runtime.py +0 -0
  282. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/runtimes/docker_runtime.py +0 -0
  283. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/runtimes/llm_guard_runtime.py +0 -0
  284. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/runtimes/remote_http_runtime.py +0 -0
  285. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/runtimes/ubuntu_docker_runtime.py +0 -0
  286. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/runtimes/utils/__init__.py +0 -0
  287. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/runtimes/utils/function_risk_toolkit.py +0 -0
  288. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/runtimes/utils/ignore_risk_toolkit.py +0 -0
  289. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/schemas/__init__.py +0 -0
  290. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/schemas/base.py +0 -0
  291. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/schemas/openai_converter.py +0 -0
  292. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/schemas/outlines_converter.py +0 -0
  293. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/services/agent_openapi_server.py +0 -0
  294. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/societies/__init__.py +0 -0
  295. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/societies/babyagi_playing.py +0 -0
  296. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/societies/role_playing.py +0 -0
  297. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/societies/workforce/__init__.py +0 -0
  298. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/societies/workforce/base.py +0 -0
  299. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/societies/workforce/prompts.py +0 -0
  300. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/societies/workforce/role_playing_worker.py +0 -0
  301. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/societies/workforce/single_agent_worker.py +0 -0
  302. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/societies/workforce/structured_output_handler.py +0 -0
  303. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/societies/workforce/task_channel.py +0 -0
  304. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/societies/workforce/utils.py +0 -0
  305. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/societies/workforce/worker.py +0 -0
  306. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/societies/workforce/workforce.py +0 -0
  307. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/societies/workforce/workforce_logger.py +0 -0
  308. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/storages/__init__.py +0 -0
  309. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/storages/graph_storages/__init__.py +0 -0
  310. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/storages/graph_storages/base.py +0 -0
  311. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/storages/graph_storages/graph_element.py +0 -0
  312. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/storages/graph_storages/nebula_graph.py +0 -0
  313. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/storages/graph_storages/neo4j_graph.py +0 -0
  314. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/storages/key_value_storages/__init__.py +0 -0
  315. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/storages/key_value_storages/base.py +0 -0
  316. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/storages/key_value_storages/in_memory.py +0 -0
  317. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/storages/key_value_storages/json.py +0 -0
  318. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/storages/key_value_storages/mem0_cloud.py +0 -0
  319. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/storages/key_value_storages/redis.py +0 -0
  320. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/storages/object_storages/__init__.py +0 -0
  321. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/storages/object_storages/amazon_s3.py +0 -0
  322. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/storages/object_storages/azure_blob.py +0 -0
  323. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/storages/object_storages/base.py +0 -0
  324. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/storages/object_storages/google_cloud.py +0 -0
  325. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/storages/vectordb_storages/__init__.py +0 -0
  326. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/storages/vectordb_storages/base.py +0 -0
  327. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/storages/vectordb_storages/chroma.py +0 -0
  328. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/storages/vectordb_storages/faiss.py +0 -0
  329. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/storages/vectordb_storages/milvus.py +0 -0
  330. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/storages/vectordb_storages/oceanbase.py +0 -0
  331. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/storages/vectordb_storages/pgvector.py +0 -0
  332. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/storages/vectordb_storages/qdrant.py +0 -0
  333. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/storages/vectordb_storages/surreal.py +0 -0
  334. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/storages/vectordb_storages/tidb.py +0 -0
  335. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/storages/vectordb_storages/weaviate.py +0 -0
  336. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/tasks/__init__.py +0 -0
  337. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/tasks/task.py +0 -0
  338. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/tasks/task_prompt.py +0 -0
  339. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/terminators/__init__.py +0 -0
  340. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/terminators/base.py +0 -0
  341. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/terminators/response_terminator.py +0 -0
  342. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/terminators/token_limit_terminator.py +0 -0
  343. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/aci_toolkit.py +0 -0
  344. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/arxiv_toolkit.py +0 -0
  345. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/ask_news_toolkit.py +0 -0
  346. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/async_browser_toolkit.py +0 -0
  347. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/audio_analysis_toolkit.py +0 -0
  348. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/base.py +0 -0
  349. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/bohrium_toolkit.py +0 -0
  350. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/browser_toolkit.py +0 -0
  351. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/browser_toolkit_commons.py +0 -0
  352. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/code_execution.py +0 -0
  353. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/craw4ai_toolkit.py +0 -0
  354. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/dappier_toolkit.py +0 -0
  355. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/data_commons_toolkit.py +0 -0
  356. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/edgeone_pages_mcp_toolkit.py +0 -0
  357. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/excel_toolkit.py +0 -0
  358. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/file_write_toolkit.py +0 -0
  359. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/function_tool.py +0 -0
  360. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/github_toolkit.py +0 -0
  361. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/google_calendar_toolkit.py +0 -0
  362. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/google_drive_mcp_toolkit.py +0 -0
  363. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/google_maps_toolkit.py +0 -0
  364. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/google_scholar_toolkit.py +0 -0
  365. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/human_toolkit.py +0 -0
  366. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/hybrid_browser_toolkit/__init__.py +0 -0
  367. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/hybrid_browser_toolkit/config_loader.py +0 -0
  368. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/hybrid_browser_toolkit/ts/package-lock.json +0 -0
  369. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/hybrid_browser_toolkit/ts/package.json +0 -0
  370. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/hybrid_browser_toolkit/ts/src/browser-scripts.js +0 -0
  371. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/hybrid_browser_toolkit/ts/src/config-loader.ts +0 -0
  372. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/hybrid_browser_toolkit/ts/src/hybrid-browser-toolkit.ts +0 -0
  373. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/hybrid_browser_toolkit/ts/src/index.ts +0 -0
  374. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/hybrid_browser_toolkit/ts/src/types.ts +0 -0
  375. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/hybrid_browser_toolkit/ts/tsconfig.json +0 -0
  376. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/hybrid_browser_toolkit/ws_wrapper.py +0 -0
  377. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/image_analysis_toolkit.py +0 -0
  378. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/jina_reranker_toolkit.py +0 -0
  379. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/klavis_toolkit.py +0 -0
  380. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/linkedin_toolkit.py +0 -0
  381. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/markitdown_toolkit.py +0 -0
  382. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/math_toolkit.py +0 -0
  383. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/mcp_toolkit.py +0 -0
  384. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/memory_toolkit.py +0 -0
  385. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/meshy_toolkit.py +0 -0
  386. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/message_agent_toolkit.py +0 -0
  387. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/message_integration.py +0 -0
  388. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/mineru_toolkit.py +0 -0
  389. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/networkx_toolkit.py +0 -0
  390. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/note_taking_toolkit.py +0 -0
  391. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/notion_toolkit.py +0 -0
  392. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/open_api_specs/biztoc/__init__.py +0 -0
  393. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/open_api_specs/biztoc/ai-plugin.json +0 -0
  394. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/open_api_specs/biztoc/openapi.yaml +0 -0
  395. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/open_api_specs/coursera/__init__.py +0 -0
  396. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/open_api_specs/coursera/openapi.yaml +0 -0
  397. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/open_api_specs/create_qr_code/__init__.py +0 -0
  398. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/open_api_specs/create_qr_code/openapi.yaml +0 -0
  399. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/open_api_specs/klarna/__init__.py +0 -0
  400. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/open_api_specs/klarna/openapi.yaml +0 -0
  401. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/open_api_specs/nasa_apod/__init__.py +0 -0
  402. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/open_api_specs/nasa_apod/openapi.yaml +0 -0
  403. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/open_api_specs/outschool/__init__.py +0 -0
  404. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/open_api_specs/outschool/ai-plugin.json +0 -0
  405. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/open_api_specs/outschool/openapi.yaml +0 -0
  406. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/open_api_specs/outschool/paths/__init__.py +0 -0
  407. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/open_api_specs/outschool/paths/get_classes.py +0 -0
  408. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/open_api_specs/outschool/paths/search_teachers.py +0 -0
  409. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/open_api_specs/security_config.py +0 -0
  410. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/open_api_specs/speak/__init__.py +0 -0
  411. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/open_api_specs/speak/openapi.yaml +0 -0
  412. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/open_api_specs/web_scraper/__init__.py +0 -0
  413. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/open_api_specs/web_scraper/ai-plugin.json +0 -0
  414. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/open_api_specs/web_scraper/openapi.yaml +0 -0
  415. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/open_api_specs/web_scraper/paths/__init__.py +0 -0
  416. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/open_api_specs/web_scraper/paths/scraper.py +0 -0
  417. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/open_api_toolkit.py +0 -0
  418. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/openai_agent_toolkit.py +0 -0
  419. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/openai_image_toolkit.py +0 -0
  420. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/openbb_toolkit.py +0 -0
  421. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/origene_mcp_toolkit.py +0 -0
  422. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/page_script.js +0 -0
  423. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/playwright_mcp_toolkit.py +0 -0
  424. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/pptx_toolkit.py +0 -0
  425. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/pubmed_toolkit.py +0 -0
  426. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/pulse_mcp_search_toolkit.py +0 -0
  427. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/pyautogui_toolkit.py +0 -0
  428. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/reddit_toolkit.py +0 -0
  429. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/retrieval_toolkit.py +0 -0
  430. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/screenshot_toolkit.py +0 -0
  431. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/search_toolkit.py +0 -0
  432. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/searxng_toolkit.py +0 -0
  433. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/semantic_scholar_toolkit.py +0 -0
  434. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/stripe_toolkit.py +0 -0
  435. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/sympy_toolkit.py +0 -0
  436. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/task_planning_toolkit.py +0 -0
  437. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/terminal_toolkit.py +0 -0
  438. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/thinking_toolkit.py +0 -0
  439. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/twitter_toolkit.py +0 -0
  440. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/video_analysis_toolkit.py +0 -0
  441. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/video_download_toolkit.py +0 -0
  442. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/weather_toolkit.py +0 -0
  443. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/web_deploy_toolkit.py +0 -0
  444. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/whatsapp_toolkit.py +0 -0
  445. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/wolfram_alpha_toolkit.py +0 -0
  446. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/zapier_toolkit.py +0 -0
  447. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/types/__init__.py +0 -0
  448. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/types/agents/__init__.py +0 -0
  449. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/types/agents/tool_calling_record.py +0 -0
  450. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/types/enums.py +0 -0
  451. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/types/mcp_registries.py +0 -0
  452. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/types/openai_types.py +0 -0
  453. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/types/unified_model_type.py +0 -0
  454. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/utils/__init__.py +0 -0
  455. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/utils/async_func.py +0 -0
  456. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/utils/chunker/__init__.py +0 -0
  457. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/utils/chunker/base.py +0 -0
  458. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/utils/chunker/code_chunker.py +0 -0
  459. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/utils/chunker/uio_chunker.py +0 -0
  460. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/utils/commons.py +0 -0
  461. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/utils/constants.py +0 -0
  462. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/utils/deduplication.py +0 -0
  463. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/utils/filename.py +0 -0
  464. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/utils/langfuse.py +0 -0
  465. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/utils/mcp.py +0 -0
  466. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/utils/mcp_client.py +0 -0
  467. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/utils/message_summarizer.py +0 -0
  468. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/utils/response_format.py +0 -0
  469. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/utils/token_counting.py +0 -0
  470. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/utils/tool_result.py +0 -0
  471. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/verifiers/__init__.py +0 -0
  472. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/verifiers/base.py +0 -0
  473. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/verifiers/math_verifier.py +0 -0
  474. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/verifiers/models.py +0 -0
  475. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/verifiers/physics_verifier.py +0 -0
  476. {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/verifiers/python_verifier.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: camel-ai
3
- Version: 0.2.73a0
3
+ Version: 0.2.73a2
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
@@ -128,7 +128,7 @@ Requires-Dist: sympy<2,>=1.13.3; extra == 'all'
128
128
  Requires-Dist: tabulate>=0.9.0; extra == 'all'
129
129
  Requires-Dist: tavily-python<0.6,>=0.5.0; extra == 'all'
130
130
  Requires-Dist: textblob<0.18,>=0.17.1; extra == 'all'
131
- Requires-Dist: traceroot==0.0.4a4; extra == 'all'
131
+ Requires-Dist: traceroot==0.0.4a5; extra == 'all'
132
132
  Requires-Dist: transformers<5,>=4; extra == 'all'
133
133
  Requires-Dist: tree-sitter-python<0.24,>=0.23.6; extra == 'all'
134
134
  Requires-Dist: tree-sitter<0.24,>=0.23.2; extra == 'all'
@@ -193,7 +193,7 @@ Requires-Dist: ipykernel<7,>=6.0.0; extra == 'dev-tools'
193
193
  Requires-Dist: jupyter-client<9,>=8.6.2; extra == 'dev-tools'
194
194
  Requires-Dist: langfuse>=2.60.5; extra == 'dev-tools'
195
195
  Requires-Dist: mcp>=1.3.0; extra == 'dev-tools'
196
- Requires-Dist: traceroot==0.0.4a4; extra == 'dev-tools'
196
+ Requires-Dist: traceroot==0.0.4a5; extra == 'dev-tools'
197
197
  Requires-Dist: tree-sitter-python<0.24,>=0.23.6; extra == 'dev-tools'
198
198
  Requires-Dist: tree-sitter<0.24,>=0.23.2; extra == 'dev-tools'
199
199
  Requires-Dist: typer>=0.15.2; extra == 'dev-tools'
@@ -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.73a0'
17
+ __version__ = '0.2.73a2'
18
18
 
19
19
  __all__ = [
20
20
  '__version__',
@@ -2929,7 +2929,32 @@ class ChatAgent(BaseAgent):
2929
2929
  if function_name in self._internal_tools:
2930
2930
  tool = self._internal_tools[function_name]
2931
2931
  try:
2932
- result = await tool.async_call(**args)
2932
+ # Try different invocation paths in order of preference
2933
+ if hasattr(tool, 'func') and hasattr(
2934
+ tool.func, 'async_call'
2935
+ ):
2936
+ # Case: FunctionTool wrapping an MCP tool
2937
+ result = await tool.func.async_call(**args)
2938
+
2939
+ elif hasattr(tool, 'async_call') and callable(
2940
+ tool.async_call
2941
+ ):
2942
+ # Case: tool itself has async_call
2943
+ result = await tool.async_call(**args)
2944
+
2945
+ elif hasattr(tool, 'func') and asyncio.iscoroutinefunction(
2946
+ tool.func
2947
+ ):
2948
+ # Case: tool wraps a direct async function
2949
+ result = await tool.func(**args)
2950
+
2951
+ elif asyncio.iscoroutinefunction(tool):
2952
+ # Case: tool is itself a coroutine function
2953
+ result = await tool(**args)
2954
+
2955
+ else:
2956
+ # Fallback: synchronous call
2957
+ result = tool(**args)
2933
2958
 
2934
2959
  # Only record the tool response message, not the assistant
2935
2960
  # message assistant message with tool_calls was already
@@ -88,6 +88,7 @@ from .message_agent_toolkit import AgentCommunicationToolkit
88
88
  from .web_deploy_toolkit import WebDeployToolkit
89
89
  from .screenshot_toolkit import ScreenshotToolkit
90
90
  from .message_integration import ToolkitMessageIntegration
91
+ from .notion_mcp_toolkit import NotionMCPToolkit
91
92
 
92
93
  __all__ = [
93
94
  'BaseToolkit',
@@ -165,4 +166,5 @@ __all__ = [
165
166
  'ScreenshotToolkit',
166
167
  'RegisteredAgentToolkit',
167
168
  'ToolkitMessageIntegration',
169
+ 'NotionMCPToolkit',
168
170
  ]
@@ -0,0 +1,177 @@
1
+ # ========= Copyright 2023-2024 @ CAMEL-AI.org. All Rights Reserved. =========
2
+ # Licensed under the Apache License, Version 2.0 (the "License");
3
+ # you may not use this file except in compliance with the License.
4
+ # You may obtain a copy of the License at
5
+ #
6
+ # http://www.apache.org/licenses/LICENSE-2.0
7
+ #
8
+ # Unless required by applicable law or agreed to in writing, software
9
+ # distributed under the License is distributed on an "AS IS" BASIS,
10
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11
+ # See the License for the specific language governing permissions and
12
+ # limitations under the License.
13
+ # ========= Copyright 2023-2024 @ CAMEL-AI.org. All Rights Reserved. =========
14
+
15
+ from typing import Any, List, Literal, Optional
16
+
17
+ from camel.models import BaseModelBackend
18
+ from camel.toolkits.base import BaseToolkit
19
+
20
+
21
+ class HybridBrowserToolkit(BaseToolkit):
22
+ r"""A hybrid browser toolkit that can switch between TypeScript and Python
23
+ implementations.
24
+
25
+ This wrapper allows users to choose between:
26
+ - 'typescript': WebSocket-based implementation using TypeScript/Node.js
27
+ - 'python': Pure Python implementation using Playwright directly
28
+ """
29
+
30
+ def __new__(
31
+ cls,
32
+ *,
33
+ mode: Literal["typescript", "python"] = "typescript",
34
+ headless: bool = True,
35
+ user_data_dir: Optional[str] = None,
36
+ stealth: bool = False,
37
+ web_agent_model: Optional[BaseModelBackend] = None,
38
+ cache_dir: str = "tmp/",
39
+ enabled_tools: Optional[List[str]] = None,
40
+ browser_log_to_file: bool = False,
41
+ session_id: Optional[str] = None,
42
+ default_start_url: str = "https://google.com/",
43
+ default_timeout: Optional[int] = None,
44
+ short_timeout: Optional[int] = None,
45
+ navigation_timeout: Optional[int] = None,
46
+ network_idle_timeout: Optional[int] = None,
47
+ screenshot_timeout: Optional[int] = None,
48
+ page_stability_timeout: Optional[int] = None,
49
+ dom_content_loaded_timeout: Optional[int] = None,
50
+ viewport_limit: bool = False,
51
+ connect_over_cdp: bool = False,
52
+ cdp_url: Optional[str] = None,
53
+ **kwargs: Any,
54
+ ) -> Any:
55
+ r"""Create a HybridBrowserToolkit instance with the specified mode.
56
+
57
+ Args:
58
+ mode (Literal["typescript", "python"]): Implementation mode.
59
+ - 'typescript': Uses WebSocket-based TypeScript implementation
60
+ - 'python': Uses pure Python Playwright implementation
61
+ Defaults to "typescript".
62
+ headless (bool): Whether to run browser in headless mode.
63
+ Defaults to True.
64
+ user_data_dir (Optional[str]): Directory for user data
65
+ persistence. Defaults to None.
66
+ stealth (bool): Whether to enable stealth mode. Defaults to
67
+ False.
68
+ web_agent_model (Optional[BaseModelBackend]): Model for web
69
+ agent operations. Defaults to None.
70
+ cache_dir (str): Directory for caching. Defaults to "tmp/".
71
+ enabled_tools (Optional[List[str]]): List of enabled tools.
72
+ Defaults to None.
73
+ browser_log_to_file (bool): Whether to log browser actions to
74
+ file. Defaults to False.
75
+ session_id (Optional[str]): Session identifier. Defaults to None.
76
+ default_start_url (str): Default URL to start with. Defaults
77
+ to "https://google.com/".
78
+ default_timeout (Optional[int]): Default timeout in
79
+ milliseconds. Defaults to None.
80
+ short_timeout (Optional[int]): Short timeout in milliseconds.
81
+ Defaults to None.
82
+ navigation_timeout (Optional[int]): Navigation timeout in
83
+ milliseconds. Defaults to None.
84
+ network_idle_timeout (Optional[int]): Network idle timeout in
85
+ milliseconds. Defaults to None.
86
+ screenshot_timeout (Optional[int]): Screenshot timeout in
87
+ milliseconds. Defaults to None.
88
+ page_stability_timeout (Optional[int]): Page stability timeout
89
+ in milliseconds. Defaults to None.
90
+ dom_content_loaded_timeout (Optional[int]): DOM content loaded
91
+ timeout in milliseconds. Defaults to None.
92
+ viewport_limit (bool): Whether to filter page snapshot
93
+ elements to only those visible in the current viewport.
94
+ Defaults to False.
95
+ connect_over_cdp (bool): Whether to connect to an existing
96
+ browser via Chrome DevTools Protocol. Defaults to False.
97
+ (Only supported in TypeScript mode)
98
+ cdp_url (Optional[str]): WebSocket endpoint URL for CDP
99
+ connection. Required when connect_over_cdp is True.
100
+ Defaults to None. (Only supported in TypeScript mode)
101
+ **kwargs: Additional keyword arguments passed to the
102
+ implementation.
103
+
104
+ Returns:
105
+ HybridBrowserToolkit instance of the specified implementation.
106
+ """
107
+ if mode == "typescript":
108
+ from .hybrid_browser_toolkit_ts import (
109
+ HybridBrowserToolkit as TSToolkit,
110
+ )
111
+
112
+ return TSToolkit(
113
+ headless=headless,
114
+ user_data_dir=user_data_dir,
115
+ stealth=stealth,
116
+ web_agent_model=web_agent_model,
117
+ cache_dir=cache_dir,
118
+ enabled_tools=enabled_tools,
119
+ browser_log_to_file=browser_log_to_file,
120
+ session_id=session_id,
121
+ default_start_url=default_start_url,
122
+ default_timeout=default_timeout,
123
+ short_timeout=short_timeout,
124
+ navigation_timeout=navigation_timeout,
125
+ network_idle_timeout=network_idle_timeout,
126
+ screenshot_timeout=screenshot_timeout,
127
+ page_stability_timeout=page_stability_timeout,
128
+ dom_content_loaded_timeout=dom_content_loaded_timeout,
129
+ viewport_limit=viewport_limit,
130
+ connect_over_cdp=connect_over_cdp,
131
+ cdp_url=cdp_url,
132
+ **kwargs,
133
+ )
134
+ elif mode == "python":
135
+ from ..hybrid_browser_toolkit_py import (
136
+ HybridBrowserToolkit as PyToolkit,
137
+ )
138
+
139
+ # Note: Python implementation doesn't support CDP connection
140
+ if connect_over_cdp:
141
+ raise ValueError(
142
+ "CDP connection is only supported in TypeScript mode"
143
+ )
144
+
145
+ # Note: Python implementation doesn't support viewport_limit
146
+ if viewport_limit:
147
+ import warnings
148
+
149
+ warnings.warn(
150
+ "viewport_limit is not supported "
151
+ "in Python mode and will be ignored",
152
+ UserWarning,
153
+ )
154
+
155
+ return PyToolkit(
156
+ headless=headless,
157
+ user_data_dir=user_data_dir,
158
+ stealth=stealth,
159
+ web_agent_model=web_agent_model,
160
+ cache_dir=cache_dir,
161
+ enabled_tools=enabled_tools,
162
+ browser_log_to_file=browser_log_to_file,
163
+ session_id=session_id,
164
+ default_start_url=default_start_url,
165
+ default_timeout=default_timeout,
166
+ short_timeout=short_timeout,
167
+ navigation_timeout=navigation_timeout,
168
+ network_idle_timeout=network_idle_timeout,
169
+ screenshot_timeout=screenshot_timeout,
170
+ page_stability_timeout=page_stability_timeout,
171
+ dom_content_loaded_timeout=dom_content_loaded_timeout,
172
+ **kwargs,
173
+ )
174
+ else:
175
+ raise ValueError(
176
+ f"Invalid mode: {mode}. Must be 'typescript' or 'python'."
177
+ )
@@ -518,7 +518,7 @@ class HybridBrowserToolkit(BaseToolkit, RegisteredAgentToolkit):
518
518
 
519
519
  Returns:
520
520
  str: A confirmation message indicating the screenshot was
521
- captured, the file path where it was saved, and optionally the
521
+ captured, the file path where it was saved, and optionally the
522
522
  agent's analysis if `read_image` is `True`.
523
523
  """
524
524
  import base64
@@ -50,20 +50,28 @@ export class HybridBrowserSession {
50
50
  // Handle existing pages
51
51
  const pages = this.context.pages();
52
52
  if (pages.length > 0) {
53
- // Map existing pages
53
+ // Map existing pages - for CDP, only use pages with about:blank URL
54
+ let availablePageFound = false;
54
55
  for (const page of pages) {
55
- const tabId = this.generateTabId();
56
- this.pages.set(tabId, page);
57
- if (!this.currentTabId) {
58
- this.currentTabId = tabId;
56
+ const pageUrl = page.url();
57
+ // In CDP mode, only consider pages with about:blank as available
58
+ if (pageUrl === 'about:blank') {
59
+ const tabId = this.generateTabId();
60
+ this.pages.set(tabId, page);
61
+ if (!this.currentTabId) {
62
+ this.currentTabId = tabId;
63
+ availablePageFound = true;
64
+ }
59
65
  }
60
66
  }
67
+
68
+ // If no available blank pages found in CDP mode, we cannot create new ones
69
+ if (!availablePageFound) {
70
+ throw new Error('No available blank tabs found in CDP mode. The frontend should have pre-created blank tabs.');
71
+ }
61
72
  } else {
62
- // Create initial page if none exist
63
- const initialPage = await this.context.newPage();
64
- const initialTabId = this.generateTabId();
65
- this.pages.set(initialTabId, initialPage);
66
- this.currentTabId = initialTabId;
73
+ // In CDP mode, newPage is not supported
74
+ throw new Error('No pages available in CDP mode and newPage() is not supported. Ensure the frontend has pre-created blank tabs.');
67
75
  }
68
76
  } else {
69
77
  // Original launch logic
@@ -626,18 +634,39 @@ export class HybridBrowserSession {
626
634
  throw new Error('Browser context not initialized');
627
635
  }
628
636
 
629
-
630
637
  const navigationStart = Date.now();
631
638
 
632
- // Create a new page (tab)
633
- const newPage = await this.context.newPage();
639
+ // In CDP mode, find an available blank tab instead of creating new page
640
+ let newPage: Page | null = null;
641
+ let newTabId: string | null = null;
634
642
 
635
- // Generate tab ID for the new page
636
- const newTabId = this.generateTabId();
637
- this.pages.set(newTabId, newPage);
643
+ const browserConfig = this.configLoader.getBrowserConfig();
644
+ if (browserConfig.connectOverCdp) {
645
+ // CDP mode: find an available blank tab
646
+ const allPages = this.context.pages();
647
+ for (const page of allPages) {
648
+ const pageUrl = page.url();
649
+ // Check if this page is not already tracked and is blank
650
+ const isTracked = Array.from(this.pages.values()).includes(page);
651
+ if (!isTracked && pageUrl === 'about:blank') {
652
+ newPage = page;
653
+ newTabId = this.generateTabId();
654
+ this.pages.set(newTabId, newPage);
655
+ break;
656
+ }
657
+ }
658
+
659
+ if (!newPage || !newTabId) {
660
+ throw new Error('No available blank tabs in CDP mode. Frontend should create more blank tabs when half are used.');
661
+ }
662
+ } else {
663
+ // Non-CDP mode: create new page as usual
664
+ newPage = await this.context.newPage();
665
+ newTabId = this.generateTabId();
666
+ this.pages.set(newTabId, newPage);
667
+ }
638
668
 
639
669
  // Set up page properties
640
- const browserConfig = this.configLoader.getBrowserConfig();
641
670
  newPage.setDefaultNavigationTimeout(browserConfig.navigationTimeout);
642
671
  newPage.setDefaultTimeout(browserConfig.navigationTimeout);
643
672
 
@@ -78,8 +78,52 @@ class WebSocketBrowserServer {
78
78
  switch (command) {
79
79
  case 'init':
80
80
  console.log('Initializing toolkit with params:', JSON.stringify(params, null, 2));
81
- this.toolkit = new HybridBrowserToolkit(params);
82
- return { message: 'Toolkit initialized' };
81
+
82
+ // Check if CDP is available first
83
+ let useCdp = false;
84
+ let cdpUrl = params.cdpUrl || 'http://localhost:9222';
85
+
86
+ // Extract base URL and port for validation
87
+ const baseUrl = cdpUrl.includes('/devtools/') ? cdpUrl.split('/devtools/')[0] : cdpUrl;
88
+
89
+ try {
90
+ // Test if Chrome debug port is accessible and get page URL
91
+ const response = await fetch(`${baseUrl}/json`);
92
+ if (response.ok) {
93
+ const pages = await response.json();
94
+ if (pages && pages.length > 0) {
95
+ // If user provided a specific page URL, use it; otherwise use first available
96
+ if (cdpUrl.includes('/devtools/page/') || cdpUrl.includes('/devtools/browser/')) {
97
+ useCdp = true;
98
+ console.log(`Using provided CDP URL: ${cdpUrl}`);
99
+ } else {
100
+ // Use the first available page
101
+ const firstPage = pages[0];
102
+ const pageUrl = firstPage.devtoolsFrontendUrl;
103
+ const pageId = pageUrl.match(/ws=localhost:\d+(.*)$/)?.[1];
104
+
105
+ if (pageId) {
106
+ useCdp = true;
107
+ cdpUrl = `${baseUrl}${pageId}`;
108
+ console.log(`Chrome debug port detected, using CDP connection to: ${pageId}`);
109
+ }
110
+ }
111
+ }
112
+ }
113
+ } catch (error) {
114
+ console.log('Chrome debug port not accessible, will start new browser instance');
115
+ }
116
+
117
+ const config = {
118
+ connectOverCdp: useCdp,
119
+ cdpUrl: useCdp ? cdpUrl : undefined,
120
+ headless: false,
121
+ ...params
122
+ };
123
+
124
+ console.log('Final config:', JSON.stringify(config, null, 2));
125
+ this.toolkit = new HybridBrowserToolkit(config);
126
+ return { message: 'Toolkit initialized with CDP connection' };
83
127
 
84
128
  case 'open_browser':
85
129
  if (!this.toolkit) throw new Error('Toolkit not initialized');
@@ -0,0 +1,17 @@
1
+ # ========= Copyright 2023-2024 @ CAMEL-AI.org. All Rights Reserved. =========
2
+ # Licensed under the Apache License, Version 2.0 (the "License");
3
+ # you may not use this file except in compliance with the License.
4
+ # You may obtain a copy of the License at
5
+ #
6
+ # http://www.apache.org/licenses/LICENSE-2.0
7
+ #
8
+ # Unless required by applicable law or agreed to in writing, software
9
+ # distributed under the License is distributed on an "AS IS" BASIS,
10
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11
+ # See the License for the specific language governing permissions and
12
+ # limitations under the License.
13
+ # ========= Copyright 2023-2024 @ CAMEL-AI.org. All Rights Reserved. =========
14
+
15
+ from .hybrid_browser_toolkit import HybridBrowserToolkit
16
+
17
+ __all__ = ["HybridBrowserToolkit"]