camel-ai 0.2.76a4__tar.gz → 0.2.76a5__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 (494) hide show
  1. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/.gitignore +4 -3
  2. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/PKG-INFO +25 -6
  3. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/README.md +18 -1
  4. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/__init__.py +1 -1
  5. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/agents/chat_agent.py +276 -21
  6. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/configs/__init__.py +3 -0
  7. camel_ai-0.2.76a5/camel/configs/cometapi_config.py +104 -0
  8. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/interpreters/docker/Dockerfile +3 -12
  9. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/memories/blocks/chat_history_block.py +4 -1
  10. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/memories/records.py +52 -8
  11. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/messages/base.py +1 -1
  12. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/models/__init__.py +2 -0
  13. camel_ai-0.2.76a5/camel/models/cometapi_model.py +83 -0
  14. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/models/model_factory.py +2 -0
  15. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/retrievers/auto_retriever.py +1 -0
  16. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/societies/workforce/workforce.py +9 -7
  17. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/storages/key_value_storages/json.py +15 -2
  18. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/storages/vectordb_storages/tidb.py +8 -6
  19. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/toolkits/__init__.py +4 -0
  20. camel_ai-0.2.76a5/camel/toolkits/dingtalk.py +1135 -0
  21. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/toolkits/edgeone_pages_mcp_toolkit.py +11 -31
  22. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/toolkits/google_drive_mcp_toolkit.py +12 -31
  23. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/toolkits/message_integration.py +3 -0
  24. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/toolkits/notion_mcp_toolkit.py +16 -26
  25. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/toolkits/origene_mcp_toolkit.py +8 -49
  26. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/toolkits/playwright_mcp_toolkit.py +12 -31
  27. camel_ai-0.2.76a5/camel/toolkits/resend_toolkit.py +168 -0
  28. camel_ai-0.2.76a5/camel/toolkits/terminal_toolkit/__init__.py +18 -0
  29. camel_ai-0.2.76a5/camel/toolkits/terminal_toolkit/terminal_toolkit.py +909 -0
  30. camel_ai-0.2.76a5/camel/toolkits/terminal_toolkit/utils.py +580 -0
  31. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/types/enums.py +109 -0
  32. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/types/unified_model_type.py +5 -0
  33. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/utils/commons.py +2 -0
  34. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/pyproject.toml +8 -5
  35. camel_ai-0.2.76a4/camel/toolkits/terminal_toolkit.py +0 -1798
  36. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/LICENSE +0 -0
  37. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/agents/__init__.py +0 -0
  38. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/agents/_types.py +0 -0
  39. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/agents/_utils.py +0 -0
  40. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/agents/base.py +0 -0
  41. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/agents/critic_agent.py +0 -0
  42. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/agents/deductive_reasoner_agent.py +0 -0
  43. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/agents/embodied_agent.py +0 -0
  44. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/agents/knowledge_graph_agent.py +0 -0
  45. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/agents/mcp_agent.py +0 -0
  46. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/agents/multi_hop_generator_agent.py +0 -0
  47. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/agents/programmed_agent_instruction.py +0 -0
  48. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/agents/repo_agent.py +0 -0
  49. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/agents/role_assignment_agent.py +0 -0
  50. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/agents/search_agent.py +0 -0
  51. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/agents/task_agent.py +0 -0
  52. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/agents/tool_agents/__init__.py +0 -0
  53. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/agents/tool_agents/base.py +0 -0
  54. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/agents/tool_agents/hugging_face_tool_agent.py +0 -0
  55. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/benchmarks/__init__.py +0 -0
  56. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/benchmarks/apibank.py +0 -0
  57. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/benchmarks/apibench.py +0 -0
  58. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/benchmarks/base.py +0 -0
  59. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/benchmarks/browsecomp.py +0 -0
  60. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/benchmarks/gaia.py +0 -0
  61. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/benchmarks/mock_website/README.md +0 -0
  62. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/benchmarks/mock_website/mock_web.py +0 -0
  63. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/benchmarks/mock_website/requirements.txt +0 -0
  64. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/benchmarks/mock_website/shopping_mall/app.py +0 -0
  65. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/benchmarks/mock_website/task.json +0 -0
  66. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/benchmarks/nexus.py +0 -0
  67. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/benchmarks/ragbench.py +0 -0
  68. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/bots/__init__.py +0 -0
  69. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/bots/discord/__init__.py +0 -0
  70. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/bots/discord/discord_app.py +0 -0
  71. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/bots/discord/discord_installation.py +0 -0
  72. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/bots/discord/discord_store.py +0 -0
  73. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/bots/slack/__init__.py +0 -0
  74. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/bots/slack/models.py +0 -0
  75. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/bots/slack/slack_app.py +0 -0
  76. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/bots/telegram_bot.py +0 -0
  77. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/configs/aiml_config.py +0 -0
  78. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/configs/amd_config.py +0 -0
  79. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/configs/anthropic_config.py +0 -0
  80. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/configs/base_config.py +0 -0
  81. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/configs/bedrock_config.py +0 -0
  82. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/configs/cohere_config.py +0 -0
  83. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/configs/crynux_config.py +0 -0
  84. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/configs/deepseek_config.py +0 -0
  85. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/configs/gemini_config.py +0 -0
  86. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/configs/groq_config.py +0 -0
  87. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/configs/internlm_config.py +0 -0
  88. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/configs/litellm_config.py +0 -0
  89. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/configs/lmstudio_config.py +0 -0
  90. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/configs/mistral_config.py +0 -0
  91. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/configs/modelscope_config.py +0 -0
  92. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/configs/moonshot_config.py +0 -0
  93. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/configs/nebius_config.py +0 -0
  94. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/configs/netmind_config.py +0 -0
  95. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/configs/novita_config.py +0 -0
  96. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/configs/nvidia_config.py +0 -0
  97. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/configs/ollama_config.py +0 -0
  98. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/configs/openai_config.py +0 -0
  99. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/configs/openrouter_config.py +0 -0
  100. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/configs/ppio_config.py +0 -0
  101. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/configs/qianfan_config.py +0 -0
  102. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/configs/qwen_config.py +0 -0
  103. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/configs/reka_config.py +0 -0
  104. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/configs/samba_config.py +0 -0
  105. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/configs/sglang_config.py +0 -0
  106. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/configs/siliconflow_config.py +0 -0
  107. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/configs/togetherai_config.py +0 -0
  108. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/configs/vllm_config.py +0 -0
  109. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/configs/watsonx_config.py +0 -0
  110. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/configs/yi_config.py +0 -0
  111. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/configs/zhipuai_config.py +0 -0
  112. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/data_collectors/__init__.py +0 -0
  113. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/data_collectors/alpaca_collector.py +0 -0
  114. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/data_collectors/base.py +0 -0
  115. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/data_collectors/sharegpt_collector.py +0 -0
  116. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/datagen/__init__.py +0 -0
  117. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/datagen/cot_datagen.py +0 -0
  118. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/datagen/evol_instruct/__init__.py +0 -0
  119. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/datagen/evol_instruct/evol_instruct.py +0 -0
  120. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/datagen/evol_instruct/scorer.py +0 -0
  121. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/datagen/evol_instruct/templates.py +0 -0
  122. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/datagen/self_improving_cot.py +0 -0
  123. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/datagen/self_instruct/__init__.py +0 -0
  124. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/datagen/self_instruct/filter/__init__.py +0 -0
  125. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/datagen/self_instruct/filter/filter_function.py +0 -0
  126. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/datagen/self_instruct/filter/filter_registry.py +0 -0
  127. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/datagen/self_instruct/filter/instruction_filter.py +0 -0
  128. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/datagen/self_instruct/self_instruct.py +0 -0
  129. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/datagen/self_instruct/templates.py +0 -0
  130. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/datagen/source2synth/__init__.py +0 -0
  131. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/datagen/source2synth/data_processor.py +0 -0
  132. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/datagen/source2synth/models.py +0 -0
  133. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/datagen/source2synth/user_data_processor_config.py +0 -0
  134. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/datahubs/__init__.py +0 -0
  135. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/datahubs/base.py +0 -0
  136. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/datahubs/huggingface.py +0 -0
  137. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/datahubs/models.py +0 -0
  138. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/datasets/__init__.py +0 -0
  139. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/datasets/base_generator.py +0 -0
  140. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/datasets/few_shot_generator.py +0 -0
  141. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/datasets/models.py +0 -0
  142. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/datasets/self_instruct_generator.py +0 -0
  143. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/datasets/static_dataset.py +0 -0
  144. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/embeddings/__init__.py +0 -0
  145. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/embeddings/azure_embedding.py +0 -0
  146. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/embeddings/base.py +0 -0
  147. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/embeddings/gemini_embedding.py +0 -0
  148. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/embeddings/jina_embedding.py +0 -0
  149. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/embeddings/mistral_embedding.py +0 -0
  150. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/embeddings/openai_compatible_embedding.py +0 -0
  151. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/embeddings/openai_embedding.py +0 -0
  152. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/embeddings/sentence_transformers_embeddings.py +0 -0
  153. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/embeddings/together_embedding.py +0 -0
  154. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/embeddings/vlm_embedding.py +0 -0
  155. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/environments/__init__.py +0 -0
  156. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/environments/models.py +0 -0
  157. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/environments/multi_step.py +0 -0
  158. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/environments/rlcards_env.py +0 -0
  159. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/environments/single_step.py +0 -0
  160. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/environments/tic_tac_toe.py +0 -0
  161. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/extractors/__init__.py +0 -0
  162. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/extractors/base.py +0 -0
  163. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/extractors/python_strategies.py +0 -0
  164. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/generators.py +0 -0
  165. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/human.py +0 -0
  166. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/interpreters/__init__.py +0 -0
  167. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/interpreters/base.py +0 -0
  168. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/interpreters/docker_interpreter.py +0 -0
  169. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/interpreters/e2b_interpreter.py +0 -0
  170. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/interpreters/internal_python_interpreter.py +0 -0
  171. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/interpreters/interpreter_error.py +0 -0
  172. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/interpreters/ipython_interpreter.py +0 -0
  173. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/interpreters/microsandbox_interpreter.py +0 -0
  174. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/interpreters/subprocess_interpreter.py +0 -0
  175. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/loaders/__init__.py +0 -0
  176. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/loaders/apify_reader.py +0 -0
  177. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/loaders/base_io.py +0 -0
  178. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/loaders/base_loader.py +0 -0
  179. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/loaders/chunkr_reader.py +0 -0
  180. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/loaders/crawl4ai_reader.py +0 -0
  181. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/loaders/firecrawl_reader.py +0 -0
  182. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/loaders/jina_url_reader.py +0 -0
  183. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/loaders/markitdown.py +0 -0
  184. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/loaders/mineru_extractor.py +0 -0
  185. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/loaders/mistral_reader.py +0 -0
  186. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/loaders/pandas_reader.py +0 -0
  187. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/loaders/scrapegraph_reader.py +0 -0
  188. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/loaders/unstructured_io.py +0 -0
  189. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/logger.py +0 -0
  190. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/memories/__init__.py +0 -0
  191. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/memories/agent_memories.py +0 -0
  192. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/memories/base.py +0 -0
  193. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/memories/blocks/__init__.py +0 -0
  194. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/memories/blocks/vectordb_block.py +0 -0
  195. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/memories/context_creators/__init__.py +0 -0
  196. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/memories/context_creators/score_based.py +0 -0
  197. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/messages/__init__.py +0 -0
  198. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/messages/conversion/__init__.py +0 -0
  199. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/messages/conversion/alpaca.py +0 -0
  200. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/messages/conversion/conversation_models.py +0 -0
  201. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/messages/conversion/sharegpt/__init__.py +0 -0
  202. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/messages/conversion/sharegpt/function_call_formatter.py +0 -0
  203. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/messages/conversion/sharegpt/hermes/__init__.py +0 -0
  204. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/messages/conversion/sharegpt/hermes/hermes_function_formatter.py +0 -0
  205. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/messages/func_message.py +0 -0
  206. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/models/_utils.py +0 -0
  207. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/models/aiml_model.py +0 -0
  208. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/models/amd_model.py +0 -0
  209. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/models/anthropic_model.py +0 -0
  210. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/models/aws_bedrock_model.py +0 -0
  211. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/models/azure_openai_model.py +0 -0
  212. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/models/base_audio_model.py +0 -0
  213. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/models/base_model.py +0 -0
  214. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/models/cohere_model.py +0 -0
  215. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/models/crynux_model.py +0 -0
  216. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/models/deepseek_model.py +0 -0
  217. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/models/fish_audio_model.py +0 -0
  218. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/models/gemini_model.py +0 -0
  219. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/models/groq_model.py +0 -0
  220. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/models/internlm_model.py +0 -0
  221. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/models/litellm_model.py +0 -0
  222. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/models/lmstudio_model.py +0 -0
  223. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/models/mistral_model.py +0 -0
  224. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/models/model_manager.py +0 -0
  225. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/models/modelscope_model.py +0 -0
  226. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/models/moonshot_model.py +0 -0
  227. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/models/nebius_model.py +0 -0
  228. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/models/nemotron_model.py +0 -0
  229. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/models/netmind_model.py +0 -0
  230. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/models/novita_model.py +0 -0
  231. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/models/nvidia_model.py +0 -0
  232. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/models/ollama_model.py +0 -0
  233. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/models/openai_audio_models.py +0 -0
  234. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/models/openai_compatible_model.py +0 -0
  235. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/models/openai_model.py +0 -0
  236. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/models/openrouter_model.py +0 -0
  237. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/models/ppio_model.py +0 -0
  238. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/models/qianfan_model.py +0 -0
  239. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/models/qwen_model.py +0 -0
  240. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/models/reka_model.py +0 -0
  241. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/models/reward/__init__.py +0 -0
  242. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/models/reward/base_reward_model.py +0 -0
  243. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/models/reward/evaluator.py +0 -0
  244. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/models/reward/nemotron_model.py +0 -0
  245. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/models/reward/skywork_model.py +0 -0
  246. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/models/samba_model.py +0 -0
  247. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/models/sglang_model.py +0 -0
  248. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/models/siliconflow_model.py +0 -0
  249. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/models/stub_model.py +0 -0
  250. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/models/togetherai_model.py +0 -0
  251. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/models/vllm_model.py +0 -0
  252. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/models/volcano_model.py +0 -0
  253. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/models/watsonx_model.py +0 -0
  254. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/models/yi_model.py +0 -0
  255. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/models/zhipuai_model.py +0 -0
  256. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/personas/__init__.py +0 -0
  257. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/personas/persona.py +0 -0
  258. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/personas/persona_hub.py +0 -0
  259. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/prompts/__init__.py +0 -0
  260. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/prompts/ai_society.py +0 -0
  261. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/prompts/base.py +0 -0
  262. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/prompts/code.py +0 -0
  263. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/prompts/evaluation.py +0 -0
  264. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/prompts/generate_text_embedding_data.py +0 -0
  265. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/prompts/image_craft.py +0 -0
  266. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/prompts/misalignment.py +0 -0
  267. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/prompts/multi_condition_image_craft.py +0 -0
  268. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/prompts/object_recognition.py +0 -0
  269. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/prompts/persona_hub.py +0 -0
  270. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/prompts/prompt_templates.py +0 -0
  271. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/prompts/role_description_prompt_template.py +0 -0
  272. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/prompts/solution_extraction.py +0 -0
  273. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/prompts/task_prompt_template.py +0 -0
  274. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/prompts/translation.py +0 -0
  275. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/prompts/video_description_prompt.py +0 -0
  276. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/py.typed +0 -0
  277. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/responses/__init__.py +0 -0
  278. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/responses/agent_responses.py +0 -0
  279. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/retrievers/__init__.py +0 -0
  280. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/retrievers/base.py +0 -0
  281. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/retrievers/bm25_retriever.py +0 -0
  282. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/retrievers/cohere_rerank_retriever.py +0 -0
  283. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/retrievers/hybrid_retrival.py +0 -0
  284. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/retrievers/vector_retriever.py +0 -0
  285. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/runtimes/__init__.py +0 -0
  286. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/runtimes/api.py +0 -0
  287. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/runtimes/base.py +0 -0
  288. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/runtimes/configs.py +0 -0
  289. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/runtimes/daytona_runtime.py +0 -0
  290. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/runtimes/docker_runtime.py +0 -0
  291. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/runtimes/llm_guard_runtime.py +0 -0
  292. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/runtimes/remote_http_runtime.py +0 -0
  293. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/runtimes/ubuntu_docker_runtime.py +0 -0
  294. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/runtimes/utils/__init__.py +0 -0
  295. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/runtimes/utils/function_risk_toolkit.py +0 -0
  296. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/runtimes/utils/ignore_risk_toolkit.py +0 -0
  297. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/schemas/__init__.py +0 -0
  298. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/schemas/base.py +0 -0
  299. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/schemas/openai_converter.py +0 -0
  300. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/schemas/outlines_converter.py +0 -0
  301. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/services/agent_openapi_server.py +0 -0
  302. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/societies/__init__.py +0 -0
  303. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/societies/babyagi_playing.py +0 -0
  304. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/societies/role_playing.py +0 -0
  305. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/societies/workforce/__init__.py +0 -0
  306. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/societies/workforce/base.py +0 -0
  307. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/societies/workforce/prompts.py +0 -0
  308. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/societies/workforce/role_playing_worker.py +0 -0
  309. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/societies/workforce/single_agent_worker.py +0 -0
  310. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/societies/workforce/structured_output_handler.py +0 -0
  311. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/societies/workforce/task_channel.py +0 -0
  312. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/societies/workforce/utils.py +0 -0
  313. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/societies/workforce/worker.py +0 -0
  314. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/societies/workforce/workforce_logger.py +0 -0
  315. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/storages/__init__.py +0 -0
  316. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/storages/graph_storages/__init__.py +0 -0
  317. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/storages/graph_storages/base.py +0 -0
  318. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/storages/graph_storages/graph_element.py +0 -0
  319. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/storages/graph_storages/nebula_graph.py +0 -0
  320. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/storages/graph_storages/neo4j_graph.py +0 -0
  321. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/storages/key_value_storages/__init__.py +0 -0
  322. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/storages/key_value_storages/base.py +0 -0
  323. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/storages/key_value_storages/in_memory.py +0 -0
  324. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/storages/key_value_storages/mem0_cloud.py +0 -0
  325. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/storages/key_value_storages/redis.py +0 -0
  326. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/storages/object_storages/__init__.py +0 -0
  327. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/storages/object_storages/amazon_s3.py +0 -0
  328. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/storages/object_storages/azure_blob.py +0 -0
  329. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/storages/object_storages/base.py +0 -0
  330. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/storages/object_storages/google_cloud.py +0 -0
  331. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/storages/vectordb_storages/__init__.py +0 -0
  332. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/storages/vectordb_storages/base.py +0 -0
  333. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/storages/vectordb_storages/chroma.py +0 -0
  334. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/storages/vectordb_storages/faiss.py +0 -0
  335. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/storages/vectordb_storages/milvus.py +0 -0
  336. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/storages/vectordb_storages/oceanbase.py +0 -0
  337. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/storages/vectordb_storages/pgvector.py +0 -0
  338. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/storages/vectordb_storages/qdrant.py +0 -0
  339. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/storages/vectordb_storages/surreal.py +0 -0
  340. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/storages/vectordb_storages/weaviate.py +0 -0
  341. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/tasks/__init__.py +0 -0
  342. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/tasks/task.py +0 -0
  343. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/tasks/task_prompt.py +0 -0
  344. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/terminators/__init__.py +0 -0
  345. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/terminators/base.py +0 -0
  346. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/terminators/response_terminator.py +0 -0
  347. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/terminators/token_limit_terminator.py +0 -0
  348. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/toolkits/aci_toolkit.py +0 -0
  349. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/toolkits/arxiv_toolkit.py +0 -0
  350. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/toolkits/ask_news_toolkit.py +0 -0
  351. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/toolkits/async_browser_toolkit.py +0 -0
  352. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/toolkits/audio_analysis_toolkit.py +0 -0
  353. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/toolkits/base.py +0 -0
  354. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/toolkits/bohrium_toolkit.py +0 -0
  355. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/toolkits/browser_toolkit.py +0 -0
  356. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/toolkits/browser_toolkit_commons.py +0 -0
  357. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/toolkits/code_execution.py +0 -0
  358. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/toolkits/context_summarizer_toolkit.py +0 -0
  359. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/toolkits/craw4ai_toolkit.py +0 -0
  360. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/toolkits/dappier_toolkit.py +0 -0
  361. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/toolkits/data_commons_toolkit.py +0 -0
  362. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/toolkits/excel_toolkit.py +0 -0
  363. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/toolkits/file_toolkit.py +0 -0
  364. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/toolkits/function_tool.py +0 -0
  365. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/toolkits/github_toolkit.py +0 -0
  366. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/toolkits/google_calendar_toolkit.py +0 -0
  367. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/toolkits/google_maps_toolkit.py +0 -0
  368. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/toolkits/google_scholar_toolkit.py +0 -0
  369. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/toolkits/human_toolkit.py +0 -0
  370. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/toolkits/hybrid_browser_toolkit/__init__.py +0 -0
  371. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/toolkits/hybrid_browser_toolkit/config_loader.py +0 -0
  372. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/toolkits/hybrid_browser_toolkit/hybrid_browser_toolkit.py +0 -0
  373. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/toolkits/hybrid_browser_toolkit/hybrid_browser_toolkit_ts.py +0 -0
  374. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/toolkits/hybrid_browser_toolkit/ts/package-lock.json +0 -0
  375. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/toolkits/hybrid_browser_toolkit/ts/package.json +0 -0
  376. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/toolkits/hybrid_browser_toolkit/ts/src/browser-scripts.js +0 -0
  377. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/toolkits/hybrid_browser_toolkit/ts/src/browser-session.ts +0 -0
  378. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/toolkits/hybrid_browser_toolkit/ts/src/config-loader.ts +0 -0
  379. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/toolkits/hybrid_browser_toolkit/ts/src/hybrid-browser-toolkit.ts +0 -0
  380. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/toolkits/hybrid_browser_toolkit/ts/src/index.ts +0 -0
  381. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/toolkits/hybrid_browser_toolkit/ts/src/parent-child-filter.ts +0 -0
  382. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/toolkits/hybrid_browser_toolkit/ts/src/snapshot-parser.ts +0 -0
  383. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/toolkits/hybrid_browser_toolkit/ts/src/som-screenshot-injected.ts +0 -0
  384. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/toolkits/hybrid_browser_toolkit/ts/src/types.ts +0 -0
  385. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/toolkits/hybrid_browser_toolkit/ts/tsconfig.json +0 -0
  386. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/toolkits/hybrid_browser_toolkit/ts/websocket-server.js +0 -0
  387. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/toolkits/hybrid_browser_toolkit/ws_wrapper.py +0 -0
  388. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/toolkits/hybrid_browser_toolkit_py/__init__.py +0 -0
  389. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/toolkits/hybrid_browser_toolkit_py/actions.py +0 -0
  390. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/toolkits/hybrid_browser_toolkit_py/agent.py +0 -0
  391. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/toolkits/hybrid_browser_toolkit_py/browser_session.py +0 -0
  392. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/toolkits/hybrid_browser_toolkit_py/config_loader.py +0 -0
  393. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/toolkits/hybrid_browser_toolkit_py/hybrid_browser_toolkit.py +0 -0
  394. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/toolkits/hybrid_browser_toolkit_py/snapshot.py +0 -0
  395. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/toolkits/hybrid_browser_toolkit_py/stealth_script.js +0 -0
  396. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/toolkits/hybrid_browser_toolkit_py/unified_analyzer.js +0 -0
  397. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/toolkits/image_analysis_toolkit.py +0 -0
  398. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/toolkits/image_generation_toolkit.py +0 -0
  399. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/toolkits/jina_reranker_toolkit.py +0 -0
  400. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/toolkits/klavis_toolkit.py +0 -0
  401. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/toolkits/linkedin_toolkit.py +0 -0
  402. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/toolkits/markitdown_toolkit.py +0 -0
  403. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/toolkits/math_toolkit.py +0 -0
  404. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/toolkits/mcp_toolkit.py +0 -0
  405. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/toolkits/memory_toolkit.py +0 -0
  406. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/toolkits/meshy_toolkit.py +0 -0
  407. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/toolkits/message_agent_toolkit.py +0 -0
  408. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/toolkits/mineru_toolkit.py +0 -0
  409. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/toolkits/minimax_mcp_toolkit.py +0 -0
  410. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/toolkits/networkx_toolkit.py +0 -0
  411. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/toolkits/note_taking_toolkit.py +0 -0
  412. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/toolkits/notion_toolkit.py +0 -0
  413. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/toolkits/open_api_specs/biztoc/__init__.py +0 -0
  414. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/toolkits/open_api_specs/biztoc/ai-plugin.json +0 -0
  415. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/toolkits/open_api_specs/biztoc/openapi.yaml +0 -0
  416. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/toolkits/open_api_specs/coursera/__init__.py +0 -0
  417. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/toolkits/open_api_specs/coursera/openapi.yaml +0 -0
  418. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/toolkits/open_api_specs/create_qr_code/__init__.py +0 -0
  419. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/toolkits/open_api_specs/create_qr_code/openapi.yaml +0 -0
  420. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/toolkits/open_api_specs/klarna/__init__.py +0 -0
  421. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/toolkits/open_api_specs/klarna/openapi.yaml +0 -0
  422. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/toolkits/open_api_specs/nasa_apod/__init__.py +0 -0
  423. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/toolkits/open_api_specs/nasa_apod/openapi.yaml +0 -0
  424. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/toolkits/open_api_specs/outschool/__init__.py +0 -0
  425. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/toolkits/open_api_specs/outschool/ai-plugin.json +0 -0
  426. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/toolkits/open_api_specs/outschool/openapi.yaml +0 -0
  427. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/toolkits/open_api_specs/outschool/paths/__init__.py +0 -0
  428. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/toolkits/open_api_specs/outschool/paths/get_classes.py +0 -0
  429. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/toolkits/open_api_specs/outschool/paths/search_teachers.py +0 -0
  430. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/toolkits/open_api_specs/security_config.py +0 -0
  431. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/toolkits/open_api_specs/speak/__init__.py +0 -0
  432. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/toolkits/open_api_specs/speak/openapi.yaml +0 -0
  433. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/toolkits/open_api_specs/web_scraper/__init__.py +0 -0
  434. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/toolkits/open_api_specs/web_scraper/ai-plugin.json +0 -0
  435. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/toolkits/open_api_specs/web_scraper/openapi.yaml +0 -0
  436. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/toolkits/open_api_specs/web_scraper/paths/__init__.py +0 -0
  437. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/toolkits/open_api_specs/web_scraper/paths/scraper.py +0 -0
  438. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/toolkits/open_api_toolkit.py +0 -0
  439. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/toolkits/openbb_toolkit.py +0 -0
  440. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/toolkits/page_script.js +0 -0
  441. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/toolkits/pptx_toolkit.py +0 -0
  442. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/toolkits/pubmed_toolkit.py +0 -0
  443. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/toolkits/pulse_mcp_search_toolkit.py +0 -0
  444. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/toolkits/pyautogui_toolkit.py +0 -0
  445. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/toolkits/reddit_toolkit.py +0 -0
  446. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/toolkits/retrieval_toolkit.py +0 -0
  447. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/toolkits/screenshot_toolkit.py +0 -0
  448. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/toolkits/search_toolkit.py +0 -0
  449. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/toolkits/searxng_toolkit.py +0 -0
  450. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/toolkits/semantic_scholar_toolkit.py +0 -0
  451. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/toolkits/slack_toolkit.py +0 -0
  452. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/toolkits/stripe_toolkit.py +0 -0
  453. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/toolkits/sympy_toolkit.py +0 -0
  454. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/toolkits/task_planning_toolkit.py +0 -0
  455. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/toolkits/thinking_toolkit.py +0 -0
  456. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/toolkits/twitter_toolkit.py +0 -0
  457. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/toolkits/vertex_ai_veo_toolkit.py +0 -0
  458. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/toolkits/video_analysis_toolkit.py +0 -0
  459. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/toolkits/video_download_toolkit.py +0 -0
  460. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/toolkits/weather_toolkit.py +0 -0
  461. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/toolkits/web_deploy_toolkit.py +0 -0
  462. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/toolkits/wechat_official_toolkit.py +0 -0
  463. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/toolkits/whatsapp_toolkit.py +0 -0
  464. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/toolkits/wolfram_alpha_toolkit.py +0 -0
  465. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/toolkits/zapier_toolkit.py +0 -0
  466. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/types/__init__.py +0 -0
  467. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/types/agents/__init__.py +0 -0
  468. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/types/agents/tool_calling_record.py +0 -0
  469. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/types/mcp_registries.py +0 -0
  470. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/types/openai_types.py +0 -0
  471. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/utils/__init__.py +0 -0
  472. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/utils/async_func.py +0 -0
  473. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/utils/chunker/__init__.py +0 -0
  474. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/utils/chunker/base.py +0 -0
  475. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/utils/chunker/code_chunker.py +0 -0
  476. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/utils/chunker/uio_chunker.py +0 -0
  477. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/utils/constants.py +0 -0
  478. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/utils/context_utils.py +0 -0
  479. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/utils/deduplication.py +0 -0
  480. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/utils/filename.py +0 -0
  481. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/utils/langfuse.py +0 -0
  482. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/utils/mcp.py +0 -0
  483. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/utils/mcp_client.py +0 -0
  484. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/utils/message_summarizer.py +0 -0
  485. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/utils/response_format.py +0 -0
  486. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/utils/token_counting.py +0 -0
  487. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/utils/tool_result.py +0 -0
  488. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/verifiers/__init__.py +0 -0
  489. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/verifiers/base.py +0 -0
  490. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/verifiers/math_verifier.py +0 -0
  491. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/verifiers/models.py +0 -0
  492. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/verifiers/physics_verifier.py +0 -0
  493. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/camel/verifiers/python_verifier.py +0 -0
  494. {camel_ai-0.2.76a4 → camel_ai-0.2.76a5}/hatch_build_npm.py +0 -0
@@ -432,8 +432,9 @@ benchmark/gaia/results.jsonl
432
432
  # Secret files for docker
433
433
  .container/.env
434
434
 
435
- # Environment variables file
436
- .env
435
+ # Environment variables files (ignore real envs, keep examples)
436
+ /.env*
437
+ !/.env*.example
437
438
 
438
439
  ##### Node.js/TypeScript.gitignore #####
439
440
  # Hybrid Browser Toolkit TypeScript
@@ -462,4 +463,4 @@ yarn-error.log*
462
463
  *.tgz
463
464
 
464
465
  # Yarn Integrity file
465
- .yarn-integrity
466
+ .yarn-integrity
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: camel-ai
3
- Version: 0.2.76a4
3
+ Version: 0.2.76a5
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
@@ -11,7 +11,7 @@ License-File: LICENSE
11
11
  Keywords: ai-societies,artificial-intelligence,communicative-ai,cooperative-ai,deep-learning,large-language-models,multi-agent-systems,natural-language-processing
12
12
  Requires-Python: <3.13,>=3.10
13
13
  Requires-Dist: colorama<0.5,>=0.4.6
14
- Requires-Dist: docstring-parser<0.16,>=0.15
14
+ Requires-Dist: docstring-parser<0.18,>=0.17.0
15
15
  Requires-Dist: httpx<1.0.0dev,>=0.28.0
16
16
  Requires-Dist: jsonschema<5,>=4
17
17
  Requires-Dist: mcp>=1.3.0
@@ -109,13 +109,14 @@ Requires-Dist: pytest-asyncio<0.24,>=0.23.0; extra == 'all'
109
109
  Requires-Dist: pytest-cov<5,>=4; extra == 'all'
110
110
  Requires-Dist: pytest<8,>=7; extra == 'all'
111
111
  Requires-Dist: python-pptx>=1.0.2; extra == 'all'
112
- Requires-Dist: pytidb-experimental==0.0.1.dev4; extra == 'all'
112
+ Requires-Dist: pytidb>=0.0.13; extra == 'all'
113
113
  Requires-Dist: qdrant-client<2,>=1.9.0; extra == 'all'
114
114
  Requires-Dist: rank-bm25<0.3,>=0.2.2; extra == 'all'
115
115
  Requires-Dist: redis<6,>=5.0.6; extra == 'all'
116
116
  Requires-Dist: reka-api<4,>=3.0.8; extra == 'all'
117
117
  Requires-Dist: reportlab>=4.4.2; extra == 'all'
118
118
  Requires-Dist: requests-oauthlib<2,>=1.3.1; extra == 'all'
119
+ Requires-Dist: resend<3,>=2.0.0; extra == 'all'
119
120
  Requires-Dist: rlcard<1.3.0,>=1.0.0; extra == 'all'
120
121
  Requires-Dist: rouge<2,>=1.0.1; extra == 'all'
121
122
  Requires-Dist: scenedetect>=0.6.5.2; extra == 'all'
@@ -154,6 +155,7 @@ Requires-Dist: notion-client<3,>=2.2.1; extra == 'communication-tools'
154
155
  Requires-Dist: praw<8,>=7.7.1; extra == 'communication-tools'
155
156
  Requires-Dist: pygithub<3,>=2.6.0; extra == 'communication-tools'
156
157
  Requires-Dist: pytelegrambotapi<5,>=4.18.0; extra == 'communication-tools'
158
+ Requires-Dist: resend<3,>=2.0.0; extra == 'communication-tools'
157
159
  Requires-Dist: slack-bolt<2,>=1.20.1; extra == 'communication-tools'
158
160
  Requires-Dist: slack-sdk<4,>=3.27.2; extra == 'communication-tools'
159
161
  Provides-Extra: data-tools
@@ -342,7 +344,7 @@ Requires-Dist: pandasai<3,>=2.3.0; extra == 'rag'
342
344
  Requires-Dist: protobuf>=6.0.0; extra == 'rag'
343
345
  Requires-Dist: pymilvus<3,>=2.4.0; extra == 'rag'
344
346
  Requires-Dist: pyobvector>=0.1.18; extra == 'rag'
345
- Requires-Dist: pytidb-experimental==0.0.1.dev4; extra == 'rag'
347
+ Requires-Dist: pytidb>=0.0.13; extra == 'rag'
346
348
  Requires-Dist: qdrant-client<2,>=1.9.0; extra == 'rag'
347
349
  Requires-Dist: rank-bm25<0.3,>=0.2.2; extra == 'rag'
348
350
  Requires-Dist: unstructured==0.16.20; extra == 'rag'
@@ -365,7 +367,7 @@ Requires-Dist: protobuf>=6.0.0; extra == 'storage'
365
367
  Requires-Dist: psycopg[binary]<4,>=3.1.18; extra == 'storage'
366
368
  Requires-Dist: pymilvus<3,>=2.4.0; extra == 'storage'
367
369
  Requires-Dist: pyobvector>=0.1.18; extra == 'storage'
368
- Requires-Dist: pytidb-experimental==0.0.1.dev4; extra == 'storage'
370
+ Requires-Dist: pytidb>=0.0.13; extra == 'storage'
369
371
  Requires-Dist: qdrant-client<2,>=1.9.0; extra == 'storage'
370
372
  Requires-Dist: redis<6,>=5.0.6; extra == 'storage'
371
373
  Requires-Dist: surrealdb>=1.0.6; extra == 'storage'
@@ -414,9 +416,14 @@ Description-Content-Type: text/markdown
414
416
  [![Star][star-image]][star-url]
415
417
  [![Package License][package-license-image]][package-license-url]
416
418
  [![PyPI Download][package-download-image]][package-download-url]
419
+ [![][join-us-image]][join-us]
417
420
 
418
421
  <a href="https://trendshift.io/repositories/649" target="_blank"><img src="https://trendshift.io/api/badge/repositories/649" alt="camel-ai/camel | Trendshift" style="width: 250px; height: 55px;" width="250" height="55"/></a>
419
422
 
423
+ [English](README.md) |
424
+ [简体中文](README.zh.md) |
425
+ [日本語](README.ja.md)
426
+
420
427
  </div>
421
428
 
422
429
 
@@ -454,6 +461,8 @@ Join us ([*Discord*](https://discord.camel-ai.org/) or [*WeChat*](https://ghli.o
454
461
 
455
462
  <br>
456
463
 
464
+ [![][image-join-us]][join-us]
465
+
457
466
  <details>
458
467
  <summary><kbd>Table of contents</kbd></summary>
459
468
 
@@ -643,6 +652,13 @@ This example demonstrates how to create a `ChatAgent` using the CAMEL framework
643
652
  export OPENAI_API_KEY='your_openai_api_key'
644
653
  ```
645
654
 
655
+ Alternatively, use a `.env` file:
656
+
657
+ ```bash
658
+ cp .env.example .env
659
+ # then edit .env and add your keys
660
+ ```
661
+
646
662
  3. **Run the following Python code:**
647
663
 
648
664
  ```python
@@ -1005,4 +1021,7 @@ The source code is licensed under Apache 2.0.
1005
1021
  [reddit-url]: https://www.reddit.com/r/CamelAI/
1006
1022
  [reddit-image]: https://img.shields.io/reddit/subreddit-subscribers/CamelAI?style=plastic&logo=reddit&label=r%2FCAMEL&labelColor=white
1007
1023
  [ambassador-url]: https://www.camel-ai.org/community
1008
- [package-download-url]: https://pypi.org/project/camel-ai
1024
+ [package-download-url]: https://pypi.org/project/camel-ai
1025
+ [join-us]:https://eigent-ai.notion.site/eigent-ai-careers
1026
+ [join-us-image]:https://img.shields.io/badge/Join%20Us-yellow?style=plastic
1027
+ [image-join-us]: https://camel-ai.github.io/camel_asset/graphics/join_us.png
@@ -17,9 +17,14 @@
17
17
  [![Star][star-image]][star-url]
18
18
  [![Package License][package-license-image]][package-license-url]
19
19
  [![PyPI Download][package-download-image]][package-download-url]
20
+ [![][join-us-image]][join-us]
20
21
 
21
22
  <a href="https://trendshift.io/repositories/649" target="_blank"><img src="https://trendshift.io/api/badge/repositories/649" alt="camel-ai/camel | Trendshift" style="width: 250px; height: 55px;" width="250" height="55"/></a>
22
23
 
24
+ [English](README.md) |
25
+ [简体中文](README.zh.md) |
26
+ [日本語](README.ja.md)
27
+
23
28
  </div>
24
29
 
25
30
 
@@ -57,6 +62,8 @@ Join us ([*Discord*](https://discord.camel-ai.org/) or [*WeChat*](https://ghli.o
57
62
 
58
63
  <br>
59
64
 
65
+ [![][image-join-us]][join-us]
66
+
60
67
  <details>
61
68
  <summary><kbd>Table of contents</kbd></summary>
62
69
 
@@ -246,6 +253,13 @@ This example demonstrates how to create a `ChatAgent` using the CAMEL framework
246
253
  export OPENAI_API_KEY='your_openai_api_key'
247
254
  ```
248
255
 
256
+ Alternatively, use a `.env` file:
257
+
258
+ ```bash
259
+ cp .env.example .env
260
+ # then edit .env and add your keys
261
+ ```
262
+
249
263
  3. **Run the following Python code:**
250
264
 
251
265
  ```python
@@ -608,4 +622,7 @@ The source code is licensed under Apache 2.0.
608
622
  [reddit-url]: https://www.reddit.com/r/CamelAI/
609
623
  [reddit-image]: https://img.shields.io/reddit/subreddit-subscribers/CamelAI?style=plastic&logo=reddit&label=r%2FCAMEL&labelColor=white
610
624
  [ambassador-url]: https://www.camel-ai.org/community
611
- [package-download-url]: https://pypi.org/project/camel-ai
625
+ [package-download-url]: https://pypi.org/project/camel-ai
626
+ [join-us]:https://eigent-ai.notion.site/eigent-ai-careers
627
+ [join-us-image]:https://img.shields.io/badge/Join%20Us-yellow?style=plastic
628
+ [image-join-us]: https://camel-ai.github.io/camel_asset/graphics/join_us.png
@@ -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.76a4'
17
+ __version__ = '0.2.76a5'
18
18
 
19
19
  __all__ = [
20
20
  '__version__',
@@ -23,6 +23,7 @@ import textwrap
23
23
  import threading
24
24
  import time
25
25
  import uuid
26
+ from datetime import datetime
26
27
  from pathlib import Path
27
28
  from typing import (
28
29
  TYPE_CHECKING,
@@ -93,6 +94,7 @@ from camel.utils import (
93
94
  model_from_json_schema,
94
95
  )
95
96
  from camel.utils.commons import dependencies_required
97
+ from camel.utils.context_utils import ContextUtility
96
98
 
97
99
  if TYPE_CHECKING:
98
100
  from camel.terminators import ResponseTerminator
@@ -142,7 +144,7 @@ class StreamContentAccumulator:
142
144
 
143
145
  def __init__(self):
144
146
  self.base_content = "" # Content before tool calls
145
- self.current_content = "" # Current streaming content
147
+ self.current_content = [] # Accumulated streaming fragments
146
148
  self.tool_status_messages = [] # Accumulated tool status messages
147
149
 
148
150
  def set_base_content(self, content: str):
@@ -151,7 +153,7 @@ class StreamContentAccumulator:
151
153
 
152
154
  def add_streaming_content(self, new_content: str):
153
155
  r"""Add new streaming content."""
154
- self.current_content += new_content
156
+ self.current_content.append(new_content)
155
157
 
156
158
  def add_tool_status(self, status_message: str):
157
159
  r"""Add a tool status message."""
@@ -160,16 +162,18 @@ class StreamContentAccumulator:
160
162
  def get_full_content(self) -> str:
161
163
  r"""Get the complete accumulated content."""
162
164
  tool_messages = "".join(self.tool_status_messages)
163
- return self.base_content + tool_messages + self.current_content
165
+ current = "".join(self.current_content)
166
+ return self.base_content + tool_messages + current
164
167
 
165
168
  def get_content_with_new_status(self, status_message: str) -> str:
166
169
  r"""Get content with a new status message appended."""
167
170
  tool_messages = "".join([*self.tool_status_messages, status_message])
168
- return self.base_content + tool_messages + self.current_content
171
+ current = "".join(self.current_content)
172
+ return self.base_content + tool_messages + current
169
173
 
170
174
  def reset_streaming_content(self):
171
175
  r"""Reset only the streaming content, keep base and tool status."""
172
- self.current_content = ""
176
+ self.current_content = []
173
177
 
174
178
 
175
179
  class StreamingChatAgentResponse:
@@ -397,6 +401,10 @@ class ChatAgent(BaseAgent):
397
401
  step_timeout (Optional[float], optional): Timeout in seconds for the
398
402
  entire step operation. If None, no timeout is applied.
399
403
  (default: :obj:`None`)
404
+ stream_accumulate (bool, optional): When True, partial streaming
405
+ updates return accumulated content (current behavior). When False,
406
+ partial updates return only the incremental delta. (default:
407
+ :obj:`True`)
400
408
  """
401
409
 
402
410
  def __init__(
@@ -440,6 +448,7 @@ class ChatAgent(BaseAgent):
440
448
  retry_attempts: int = 3,
441
449
  retry_delay: float = 1.0,
442
450
  step_timeout: Optional[float] = None,
451
+ stream_accumulate: bool = True,
443
452
  ) -> None:
444
453
  if isinstance(model, ModelManager):
445
454
  self.model_backend = model
@@ -528,6 +537,9 @@ class ChatAgent(BaseAgent):
528
537
  self.retry_attempts = max(1, retry_attempts)
529
538
  self.retry_delay = max(0.0, retry_delay)
530
539
  self.step_timeout = step_timeout
540
+ self._context_utility: Optional[ContextUtility] = None
541
+ self._context_summary_agent: Optional["ChatAgent"] = None
542
+ self.stream_accumulate = stream_accumulate
531
543
 
532
544
  def reset(self):
533
545
  r"""Resets the :obj:`ChatAgent` to its initial state."""
@@ -1034,6 +1046,163 @@ class ChatAgent(BaseAgent):
1034
1046
  json_store.save(to_save)
1035
1047
  logger.info(f"Memory saved to {path}")
1036
1048
 
1049
+ def summarize(
1050
+ self,
1051
+ filename: Optional[str] = None,
1052
+ summary_prompt: Optional[str] = None,
1053
+ working_directory: Optional[Union[str, Path]] = None,
1054
+ ) -> Dict[str, Any]:
1055
+ r"""Summarize the agent's current conversation context and persist it
1056
+ to a markdown file.
1057
+
1058
+ Args:
1059
+ filename (Optional[str]): The base filename (without extension) to
1060
+ use for the markdown file. Defaults to a timestamped name when
1061
+ not provided.
1062
+ summary_prompt (Optional[str]): Custom prompt for the summarizer.
1063
+ When omitted, a default prompt highlighting key decisions,
1064
+ action items, and open questions is used.
1065
+ working_directory (Optional[str|Path]): Optional directory to save
1066
+ the markdown summary file. If provided, overrides the default
1067
+ directory used by ContextUtility.
1068
+
1069
+ Returns:
1070
+ Dict[str, Any]: A dictionary containing the summary text, file
1071
+ path, and status message.
1072
+ """
1073
+
1074
+ result: Dict[str, Any] = {
1075
+ "summary": "",
1076
+ "file_path": None,
1077
+ "status": "",
1078
+ }
1079
+
1080
+ try:
1081
+ if self._context_utility is None:
1082
+ if working_directory is not None:
1083
+ self._context_utility = ContextUtility(
1084
+ working_directory=str(working_directory)
1085
+ )
1086
+ else:
1087
+ self._context_utility = ContextUtility()
1088
+
1089
+ # Get conversation directly from agent's memory
1090
+ messages, _ = self.memory.get_context()
1091
+
1092
+ if not messages:
1093
+ status_message = (
1094
+ "No conversation context available to summarize."
1095
+ )
1096
+ result["status"] = status_message
1097
+ return result
1098
+
1099
+ # Convert messages to conversation text
1100
+ conversation_lines = []
1101
+ for message in messages:
1102
+ role = message.get('role', 'unknown')
1103
+ content = message.get('content', '')
1104
+ if content:
1105
+ conversation_lines.append(f"{role}: {content}")
1106
+
1107
+ conversation_text = "\n".join(conversation_lines).strip()
1108
+
1109
+ if not conversation_text:
1110
+ status_message = (
1111
+ "Conversation context is empty; skipping summary."
1112
+ )
1113
+ result["status"] = status_message
1114
+ return result
1115
+
1116
+ if self._context_summary_agent is None:
1117
+ self._context_summary_agent = ChatAgent(
1118
+ system_message=(
1119
+ "You are a helpful assistant that summarizes "
1120
+ "conversations into concise markdown bullet lists."
1121
+ ),
1122
+ model=self.model_backend,
1123
+ agent_id=f"{self.agent_id}_context_summarizer",
1124
+ )
1125
+ else:
1126
+ self._context_summary_agent.reset()
1127
+
1128
+ if summary_prompt:
1129
+ prompt_text = (
1130
+ f"{summary_prompt.rstrip()}\n\n"
1131
+ f"Context information:\n{conversation_text}"
1132
+ )
1133
+ else:
1134
+ prompt_text = (
1135
+ "Summarize the context information in concise markdown "
1136
+ "bullet points highlighting key decisions, action items.\n"
1137
+ f"Context information:\n{conversation_text}"
1138
+ )
1139
+
1140
+ try:
1141
+ response = self._context_summary_agent.step(prompt_text)
1142
+ except Exception as step_exc:
1143
+ error_message = (
1144
+ f"Failed to generate summary using model: {step_exc}"
1145
+ )
1146
+ logger.error(error_message)
1147
+ result["status"] = error_message
1148
+ return result
1149
+
1150
+ if not response.msgs:
1151
+ status_message = (
1152
+ "Failed to generate summary from model response."
1153
+ )
1154
+ result["status"] = status_message
1155
+ return result
1156
+
1157
+ summary_content = response.msgs[-1].content.strip()
1158
+ if not summary_content:
1159
+ status_message = "Generated summary is empty."
1160
+ result["status"] = status_message
1161
+ return result
1162
+
1163
+ base_filename = (
1164
+ filename
1165
+ if filename
1166
+ else f"context_summary_{datetime.now().strftime('%Y%m%d_%H%M%S')}" # noqa: E501
1167
+ )
1168
+ base_filename = Path(base_filename).with_suffix("").name
1169
+
1170
+ metadata = self._context_utility.get_session_metadata()
1171
+ metadata.update(
1172
+ {
1173
+ "agent_id": self.agent_id,
1174
+ "message_count": len(messages),
1175
+ }
1176
+ )
1177
+
1178
+ save_status = self._context_utility.save_markdown_file(
1179
+ base_filename,
1180
+ summary_content,
1181
+ title="Conversation Summary",
1182
+ metadata=metadata,
1183
+ )
1184
+
1185
+ file_path = (
1186
+ self._context_utility.get_working_directory()
1187
+ / f"{base_filename}.md"
1188
+ )
1189
+
1190
+ result.update(
1191
+ {
1192
+ "summary": summary_content,
1193
+ "file_path": str(file_path),
1194
+ "status": save_status,
1195
+ }
1196
+ )
1197
+ logger.info("Conversation summary saved to %s", file_path)
1198
+ return result
1199
+
1200
+ except Exception as exc:
1201
+ error_message = f"Failed to summarize conversation context: {exc}"
1202
+ logger.error(error_message)
1203
+ result["status"] = error_message
1204
+ return result
1205
+
1037
1206
  def clear_memory(self) -> None:
1038
1207
  r"""Clear the agent's memory and reset to initial state.
1039
1208
 
@@ -1239,6 +1408,35 @@ class ChatAgent(BaseAgent):
1239
1408
  # and True to indicate we used prompt formatting
1240
1409
  return modified_message, None, True
1241
1410
 
1411
+ def _is_called_from_registered_toolkit(self) -> bool:
1412
+ r"""Check if current step/astep call originates from a
1413
+ RegisteredAgentToolkit.
1414
+
1415
+ This method uses stack inspection to detect if the current call
1416
+ is originating from a toolkit that inherits from
1417
+ RegisteredAgentToolkit. When detected, tools should be disabled to
1418
+ prevent recursive calls.
1419
+
1420
+ Returns:
1421
+ bool: True if called from a RegisteredAgentToolkit, False otherwise
1422
+ """
1423
+ import inspect
1424
+
1425
+ from camel.toolkits.base import RegisteredAgentToolkit
1426
+
1427
+ try:
1428
+ for frame_info in inspect.stack():
1429
+ frame_locals = frame_info.frame.f_locals
1430
+ if 'self' in frame_locals:
1431
+ caller_self = frame_locals['self']
1432
+ if isinstance(caller_self, RegisteredAgentToolkit):
1433
+ return True
1434
+
1435
+ except Exception:
1436
+ return False
1437
+
1438
+ return False
1439
+
1242
1440
  def _apply_prompt_based_parsing(
1243
1441
  self,
1244
1442
  response: ModelResponse,
@@ -1432,6 +1630,10 @@ class ChatAgent(BaseAgent):
1432
1630
  except ImportError:
1433
1631
  pass # Langfuse not available
1434
1632
 
1633
+ # Check if this call is from a RegisteredAgentToolkit to prevent tool
1634
+ # use
1635
+ disable_tools = self._is_called_from_registered_toolkit()
1636
+
1435
1637
  # Handle response format compatibility with non-strict tools
1436
1638
  original_response_format = response_format
1437
1639
  input_message, response_format, used_prompt_formatting = (
@@ -1479,7 +1681,9 @@ class ChatAgent(BaseAgent):
1479
1681
  num_tokens=num_tokens,
1480
1682
  current_iteration=iteration_count,
1481
1683
  response_format=response_format,
1482
- tool_schemas=self._get_full_tool_schemas(),
1684
+ tool_schemas=[]
1685
+ if disable_tools
1686
+ else self._get_full_tool_schemas(),
1483
1687
  prev_num_openai_messages=prev_num_openai_messages,
1484
1688
  )
1485
1689
  prev_num_openai_messages = len(openai_messages)
@@ -1644,6 +1848,10 @@ class ChatAgent(BaseAgent):
1644
1848
  except ImportError:
1645
1849
  pass # Langfuse not available
1646
1850
 
1851
+ # Check if this call is from a RegisteredAgentToolkit to prevent tool
1852
+ # use
1853
+ disable_tools = self._is_called_from_registered_toolkit()
1854
+
1647
1855
  # Handle response format compatibility with non-strict tools
1648
1856
  original_response_format = response_format
1649
1857
  input_message, response_format, used_prompt_formatting = (
@@ -1679,13 +1887,14 @@ class ChatAgent(BaseAgent):
1679
1887
  return self._step_terminate(
1680
1888
  e.args[1], tool_call_records, "max_tokens_exceeded"
1681
1889
  )
1682
-
1683
1890
  response = await self._aget_model_response(
1684
1891
  openai_messages,
1685
1892
  num_tokens=num_tokens,
1686
1893
  current_iteration=iteration_count,
1687
1894
  response_format=response_format,
1688
- tool_schemas=self._get_full_tool_schemas(),
1895
+ tool_schemas=[]
1896
+ if disable_tools
1897
+ else self._get_full_tool_schemas(),
1689
1898
  prev_num_openai_messages=prev_num_openai_messages,
1690
1899
  )
1691
1900
  prev_num_openai_messages = len(openai_messages)
@@ -3668,15 +3877,18 @@ class ChatAgent(BaseAgent):
3668
3877
  ) -> ChatAgentResponse:
3669
3878
  r"""Create a streaming response using content accumulator."""
3670
3879
 
3671
- # Add new content to accumulator and get full content
3880
+ # Add new content; only build full content when needed
3672
3881
  accumulator.add_streaming_content(new_content)
3673
- full_content = accumulator.get_full_content()
3882
+ if self.stream_accumulate:
3883
+ message_content = accumulator.get_full_content()
3884
+ else:
3885
+ message_content = new_content
3674
3886
 
3675
3887
  message = BaseMessage(
3676
3888
  role_name=self.role_name,
3677
3889
  role_type=self.role_type,
3678
3890
  meta_dict={},
3679
- content=full_content,
3891
+ content=message_content,
3680
3892
  )
3681
3893
 
3682
3894
  return ChatAgentResponse(
@@ -3686,7 +3898,7 @@ class ChatAgent(BaseAgent):
3686
3898
  "id": response_id,
3687
3899
  "usage": step_token_usage.copy(),
3688
3900
  "finish_reasons": ["streaming"],
3689
- "num_tokens": self._get_token_count(full_content),
3901
+ "num_tokens": self._get_token_count(message_content),
3690
3902
  "tool_calls": tool_call_records or [],
3691
3903
  "external_tool_requests": None,
3692
3904
  "streaming": True,
@@ -3759,7 +3971,7 @@ class ChatAgent(BaseAgent):
3759
3971
  self.memory.get_context_creator(), "token_limit", None
3760
3972
  ),
3761
3973
  output_language=self._output_language,
3762
- tools=cloned_tools,
3974
+ tools=cast(List[Union[FunctionTool, Callable]], cloned_tools),
3763
3975
  toolkits_to_register_agent=toolkits_to_register,
3764
3976
  external_tools=[
3765
3977
  schema for schema in self._external_tool_schemas.values()
@@ -3773,6 +3985,7 @@ class ChatAgent(BaseAgent):
3773
3985
  tool_execution_timeout=self.tool_execution_timeout,
3774
3986
  pause_event=self.pause_event,
3775
3987
  prune_tool_calls_from_memory=self.prune_tool_calls_from_memory,
3988
+ stream_accumulate=self.stream_accumulate,
3776
3989
  )
3777
3990
 
3778
3991
  # Copy memory if requested
@@ -3787,9 +4000,7 @@ class ChatAgent(BaseAgent):
3787
4000
 
3788
4001
  def _clone_tools(
3789
4002
  self,
3790
- ) -> Tuple[
3791
- List[Union[FunctionTool, Callable]], List[RegisteredAgentToolkit]
3792
- ]:
4003
+ ) -> Tuple[List[FunctionTool], List[RegisteredAgentToolkit]]:
3793
4004
  r"""Clone tools and return toolkits that need agent registration.
3794
4005
 
3795
4006
  This method handles stateful toolkits by cloning them if they have
@@ -3841,18 +4052,62 @@ class ChatAgent(BaseAgent):
3841
4052
  # Toolkit doesn't support cloning, use original
3842
4053
  cloned_toolkits[toolkit_id] = toolkit_instance
3843
4054
 
4055
+ if getattr(
4056
+ tool.func, "__message_integration_enhanced__", False
4057
+ ):
4058
+ cloned_tools.append(
4059
+ FunctionTool(
4060
+ func=tool.func,
4061
+ openai_tool_schema=tool.get_openai_tool_schema(),
4062
+ )
4063
+ )
4064
+ continue
4065
+
3844
4066
  # Get the method from the cloned (or original) toolkit
3845
4067
  toolkit = cloned_toolkits[toolkit_id]
3846
4068
  method_name = tool.func.__name__
4069
+
3847
4070
  if hasattr(toolkit, method_name):
3848
4071
  new_method = getattr(toolkit, method_name)
3849
- cloned_tools.append(new_method)
4072
+ # Wrap cloned method into a new FunctionTool,
4073
+ # preserving schema
4074
+ try:
4075
+ new_tool = FunctionTool(
4076
+ func=new_method,
4077
+ openai_tool_schema=tool.get_openai_tool_schema(),
4078
+ )
4079
+ cloned_tools.append(new_tool)
4080
+ except Exception as e:
4081
+ # If wrapping fails, fallback to wrapping the original
4082
+ # function with its schema to maintain consistency
4083
+ logger.warning(
4084
+ f"Failed to wrap cloned toolkit "
4085
+ f"method '{method_name}' "
4086
+ f"with FunctionTool: {e}. Using original "
4087
+ f"function with preserved schema instead."
4088
+ )
4089
+ cloned_tools.append(
4090
+ FunctionTool(
4091
+ func=tool.func,
4092
+ openai_tool_schema=tool.get_openai_tool_schema(),
4093
+ )
4094
+ )
3850
4095
  else:
3851
- # Fallback to original function
3852
- cloned_tools.append(tool.func)
4096
+ # Fallback to original function wrapped in FunctionTool
4097
+ cloned_tools.append(
4098
+ FunctionTool(
4099
+ func=tool.func,
4100
+ openai_tool_schema=tool.get_openai_tool_schema(),
4101
+ )
4102
+ )
3853
4103
  else:
3854
- # Not a toolkit method, just use the original function
3855
- cloned_tools.append(tool.func)
4104
+ # Not a toolkit method, preserve FunctionTool schema directly
4105
+ cloned_tools.append(
4106
+ FunctionTool(
4107
+ func=tool.func,
4108
+ openai_tool_schema=tool.get_openai_tool_schema(),
4109
+ )
4110
+ )
3856
4111
 
3857
4112
  return cloned_tools, toolkits_to_register
3858
4113
 
@@ -17,6 +17,7 @@ from .anthropic_config import ANTHROPIC_API_PARAMS, AnthropicConfig
17
17
  from .base_config import BaseConfig
18
18
  from .bedrock_config import BEDROCK_API_PARAMS, BedrockConfig
19
19
  from .cohere_config import COHERE_API_PARAMS, CohereConfig
20
+ from .cometapi_config import COMETAPI_API_PARAMS, CometAPIConfig
20
21
  from .crynux_config import CRYNUX_API_PARAMS, CrynuxConfig
21
22
  from .deepseek_config import DEEPSEEK_API_PARAMS, DeepSeekConfig
22
23
  from .gemini_config import Gemini_API_PARAMS, GeminiConfig
@@ -90,6 +91,8 @@ __all__ = [
90
91
  'TOGETHERAI_API_PARAMS',
91
92
  'CohereConfig',
92
93
  'COHERE_API_PARAMS',
94
+ 'CometAPIConfig',
95
+ 'COMETAPI_API_PARAMS',
93
96
  'YiConfig',
94
97
  'YI_API_PARAMS',
95
98
  'QwenConfig',