camel-ai 0.2.77__tar.gz → 0.2.78__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.77 → camel_ai-0.2.78}/PKG-INFO +10 -1
  2. {camel_ai-0.2.77 → camel_ai-0.2.78}/README.md +9 -0
  3. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/__init__.py +1 -1
  4. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/agents/chat_agent.py +17 -313
  5. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/excel_toolkit.py +1 -1
  6. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/file_toolkit.py +3 -2
  7. {camel_ai-0.2.77 → camel_ai-0.2.78}/pyproject.toml +2 -2
  8. {camel_ai-0.2.77 → camel_ai-0.2.78}/.gitignore +0 -0
  9. {camel_ai-0.2.77 → camel_ai-0.2.78}/LICENSE +0 -0
  10. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/agents/__init__.py +0 -0
  11. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/agents/_types.py +0 -0
  12. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/agents/_utils.py +0 -0
  13. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/agents/base.py +0 -0
  14. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/agents/critic_agent.py +0 -0
  15. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/agents/deductive_reasoner_agent.py +0 -0
  16. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/agents/embodied_agent.py +0 -0
  17. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/agents/knowledge_graph_agent.py +0 -0
  18. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/agents/mcp_agent.py +0 -0
  19. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/agents/multi_hop_generator_agent.py +0 -0
  20. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/agents/programmed_agent_instruction.py +0 -0
  21. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/agents/repo_agent.py +0 -0
  22. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/agents/role_assignment_agent.py +0 -0
  23. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/agents/search_agent.py +0 -0
  24. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/agents/task_agent.py +0 -0
  25. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/agents/tool_agents/__init__.py +0 -0
  26. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/agents/tool_agents/base.py +0 -0
  27. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/agents/tool_agents/hugging_face_tool_agent.py +0 -0
  28. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/benchmarks/__init__.py +0 -0
  29. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/benchmarks/apibank.py +0 -0
  30. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/benchmarks/apibench.py +0 -0
  31. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/benchmarks/base.py +0 -0
  32. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/benchmarks/browsecomp.py +0 -0
  33. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/benchmarks/gaia.py +0 -0
  34. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/benchmarks/mock_website/README.md +0 -0
  35. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/benchmarks/mock_website/mock_web.py +0 -0
  36. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/benchmarks/mock_website/requirements.txt +0 -0
  37. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/benchmarks/mock_website/shopping_mall/app.py +0 -0
  38. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/benchmarks/mock_website/task.json +0 -0
  39. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/benchmarks/nexus.py +0 -0
  40. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/benchmarks/ragbench.py +0 -0
  41. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/bots/__init__.py +0 -0
  42. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/bots/discord/__init__.py +0 -0
  43. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/bots/discord/discord_app.py +0 -0
  44. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/bots/discord/discord_installation.py +0 -0
  45. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/bots/discord/discord_store.py +0 -0
  46. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/bots/slack/__init__.py +0 -0
  47. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/bots/slack/models.py +0 -0
  48. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/bots/slack/slack_app.py +0 -0
  49. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/bots/telegram_bot.py +0 -0
  50. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/configs/__init__.py +0 -0
  51. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/configs/aiml_config.py +0 -0
  52. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/configs/amd_config.py +0 -0
  53. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/configs/anthropic_config.py +0 -0
  54. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/configs/base_config.py +0 -0
  55. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/configs/bedrock_config.py +0 -0
  56. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/configs/cohere_config.py +0 -0
  57. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/configs/cometapi_config.py +0 -0
  58. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/configs/crynux_config.py +0 -0
  59. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/configs/deepseek_config.py +0 -0
  60. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/configs/gemini_config.py +0 -0
  61. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/configs/groq_config.py +0 -0
  62. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/configs/internlm_config.py +0 -0
  63. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/configs/litellm_config.py +0 -0
  64. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/configs/lmstudio_config.py +0 -0
  65. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/configs/mistral_config.py +0 -0
  66. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/configs/modelscope_config.py +0 -0
  67. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/configs/moonshot_config.py +0 -0
  68. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/configs/nebius_config.py +0 -0
  69. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/configs/netmind_config.py +0 -0
  70. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/configs/novita_config.py +0 -0
  71. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/configs/nvidia_config.py +0 -0
  72. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/configs/ollama_config.py +0 -0
  73. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/configs/openai_config.py +0 -0
  74. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/configs/openrouter_config.py +0 -0
  75. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/configs/ppio_config.py +0 -0
  76. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/configs/qianfan_config.py +0 -0
  77. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/configs/qwen_config.py +0 -0
  78. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/configs/reka_config.py +0 -0
  79. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/configs/samba_config.py +0 -0
  80. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/configs/sglang_config.py +0 -0
  81. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/configs/siliconflow_config.py +0 -0
  82. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/configs/togetherai_config.py +0 -0
  83. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/configs/vllm_config.py +0 -0
  84. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/configs/watsonx_config.py +0 -0
  85. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/configs/yi_config.py +0 -0
  86. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/configs/zhipuai_config.py +0 -0
  87. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/data_collectors/__init__.py +0 -0
  88. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/data_collectors/alpaca_collector.py +0 -0
  89. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/data_collectors/base.py +0 -0
  90. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/data_collectors/sharegpt_collector.py +0 -0
  91. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/datagen/__init__.py +0 -0
  92. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/datagen/cot_datagen.py +0 -0
  93. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/datagen/evol_instruct/__init__.py +0 -0
  94. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/datagen/evol_instruct/evol_instruct.py +0 -0
  95. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/datagen/evol_instruct/scorer.py +0 -0
  96. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/datagen/evol_instruct/templates.py +0 -0
  97. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/datagen/self_improving_cot.py +0 -0
  98. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/datagen/self_instruct/__init__.py +0 -0
  99. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/datagen/self_instruct/filter/__init__.py +0 -0
  100. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/datagen/self_instruct/filter/filter_function.py +0 -0
  101. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/datagen/self_instruct/filter/filter_registry.py +0 -0
  102. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/datagen/self_instruct/filter/instruction_filter.py +0 -0
  103. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/datagen/self_instruct/self_instruct.py +0 -0
  104. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/datagen/self_instruct/templates.py +0 -0
  105. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/datagen/source2synth/__init__.py +0 -0
  106. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/datagen/source2synth/data_processor.py +0 -0
  107. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/datagen/source2synth/models.py +0 -0
  108. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/datagen/source2synth/user_data_processor_config.py +0 -0
  109. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/datahubs/__init__.py +0 -0
  110. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/datahubs/base.py +0 -0
  111. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/datahubs/huggingface.py +0 -0
  112. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/datahubs/models.py +0 -0
  113. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/datasets/__init__.py +0 -0
  114. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/datasets/base_generator.py +0 -0
  115. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/datasets/few_shot_generator.py +0 -0
  116. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/datasets/models.py +0 -0
  117. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/datasets/self_instruct_generator.py +0 -0
  118. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/datasets/static_dataset.py +0 -0
  119. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/embeddings/__init__.py +0 -0
  120. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/embeddings/azure_embedding.py +0 -0
  121. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/embeddings/base.py +0 -0
  122. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/embeddings/gemini_embedding.py +0 -0
  123. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/embeddings/jina_embedding.py +0 -0
  124. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/embeddings/mistral_embedding.py +0 -0
  125. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/embeddings/openai_compatible_embedding.py +0 -0
  126. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/embeddings/openai_embedding.py +0 -0
  127. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/embeddings/sentence_transformers_embeddings.py +0 -0
  128. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/embeddings/together_embedding.py +0 -0
  129. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/embeddings/vlm_embedding.py +0 -0
  130. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/environments/__init__.py +0 -0
  131. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/environments/models.py +0 -0
  132. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/environments/multi_step.py +0 -0
  133. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/environments/rlcards_env.py +0 -0
  134. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/environments/single_step.py +0 -0
  135. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/environments/tic_tac_toe.py +0 -0
  136. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/extractors/__init__.py +0 -0
  137. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/extractors/base.py +0 -0
  138. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/extractors/python_strategies.py +0 -0
  139. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/generators.py +0 -0
  140. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/human.py +0 -0
  141. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/interpreters/__init__.py +0 -0
  142. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/interpreters/base.py +0 -0
  143. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/interpreters/docker/Dockerfile +0 -0
  144. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/interpreters/docker_interpreter.py +0 -0
  145. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/interpreters/e2b_interpreter.py +0 -0
  146. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/interpreters/internal_python_interpreter.py +0 -0
  147. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/interpreters/interpreter_error.py +0 -0
  148. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/interpreters/ipython_interpreter.py +0 -0
  149. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/interpreters/microsandbox_interpreter.py +0 -0
  150. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/interpreters/subprocess_interpreter.py +0 -0
  151. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/loaders/__init__.py +0 -0
  152. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/loaders/apify_reader.py +0 -0
  153. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/loaders/base_io.py +0 -0
  154. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/loaders/base_loader.py +0 -0
  155. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/loaders/chunkr_reader.py +0 -0
  156. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/loaders/crawl4ai_reader.py +0 -0
  157. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/loaders/firecrawl_reader.py +0 -0
  158. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/loaders/jina_url_reader.py +0 -0
  159. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/loaders/markitdown.py +0 -0
  160. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/loaders/mineru_extractor.py +0 -0
  161. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/loaders/mistral_reader.py +0 -0
  162. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/loaders/scrapegraph_reader.py +0 -0
  163. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/loaders/unstructured_io.py +0 -0
  164. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/logger.py +0 -0
  165. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/memories/__init__.py +0 -0
  166. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/memories/agent_memories.py +0 -0
  167. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/memories/base.py +0 -0
  168. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/memories/blocks/__init__.py +0 -0
  169. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/memories/blocks/chat_history_block.py +0 -0
  170. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/memories/blocks/vectordb_block.py +0 -0
  171. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/memories/context_creators/__init__.py +0 -0
  172. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/memories/context_creators/score_based.py +0 -0
  173. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/memories/records.py +0 -0
  174. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/messages/__init__.py +0 -0
  175. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/messages/base.py +0 -0
  176. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/messages/conversion/__init__.py +0 -0
  177. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/messages/conversion/alpaca.py +0 -0
  178. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/messages/conversion/conversation_models.py +0 -0
  179. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/messages/conversion/sharegpt/__init__.py +0 -0
  180. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/messages/conversion/sharegpt/function_call_formatter.py +0 -0
  181. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/messages/conversion/sharegpt/hermes/__init__.py +0 -0
  182. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/messages/conversion/sharegpt/hermes/hermes_function_formatter.py +0 -0
  183. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/messages/func_message.py +0 -0
  184. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/models/__init__.py +0 -0
  185. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/models/_utils.py +0 -0
  186. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/models/aiml_model.py +0 -0
  187. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/models/amd_model.py +0 -0
  188. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/models/anthropic_model.py +0 -0
  189. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/models/aws_bedrock_model.py +0 -0
  190. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/models/azure_openai_model.py +0 -0
  191. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/models/base_audio_model.py +0 -0
  192. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/models/base_model.py +0 -0
  193. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/models/cohere_model.py +0 -0
  194. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/models/cometapi_model.py +0 -0
  195. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/models/crynux_model.py +0 -0
  196. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/models/deepseek_model.py +0 -0
  197. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/models/fish_audio_model.py +0 -0
  198. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/models/gemini_model.py +0 -0
  199. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/models/groq_model.py +0 -0
  200. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/models/internlm_model.py +0 -0
  201. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/models/litellm_model.py +0 -0
  202. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/models/lmstudio_model.py +0 -0
  203. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/models/mistral_model.py +0 -0
  204. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/models/model_factory.py +0 -0
  205. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/models/model_manager.py +0 -0
  206. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/models/modelscope_model.py +0 -0
  207. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/models/moonshot_model.py +0 -0
  208. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/models/nebius_model.py +0 -0
  209. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/models/nemotron_model.py +0 -0
  210. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/models/netmind_model.py +0 -0
  211. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/models/novita_model.py +0 -0
  212. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/models/nvidia_model.py +0 -0
  213. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/models/ollama_model.py +0 -0
  214. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/models/openai_audio_models.py +0 -0
  215. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/models/openai_compatible_model.py +0 -0
  216. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/models/openai_model.py +0 -0
  217. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/models/openrouter_model.py +0 -0
  218. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/models/ppio_model.py +0 -0
  219. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/models/qianfan_model.py +0 -0
  220. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/models/qwen_model.py +0 -0
  221. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/models/reka_model.py +0 -0
  222. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/models/reward/__init__.py +0 -0
  223. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/models/reward/base_reward_model.py +0 -0
  224. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/models/reward/evaluator.py +0 -0
  225. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/models/reward/nemotron_model.py +0 -0
  226. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/models/reward/skywork_model.py +0 -0
  227. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/models/samba_model.py +0 -0
  228. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/models/sglang_model.py +0 -0
  229. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/models/siliconflow_model.py +0 -0
  230. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/models/stub_model.py +0 -0
  231. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/models/togetherai_model.py +0 -0
  232. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/models/vllm_model.py +0 -0
  233. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/models/volcano_model.py +0 -0
  234. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/models/watsonx_model.py +0 -0
  235. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/models/yi_model.py +0 -0
  236. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/models/zhipuai_model.py +0 -0
  237. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/parsers/__init__.py +0 -0
  238. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/parsers/mcp_tool_call_parser.py +0 -0
  239. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/personas/__init__.py +0 -0
  240. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/personas/persona.py +0 -0
  241. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/personas/persona_hub.py +0 -0
  242. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/prompts/__init__.py +0 -0
  243. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/prompts/ai_society.py +0 -0
  244. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/prompts/base.py +0 -0
  245. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/prompts/code.py +0 -0
  246. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/prompts/evaluation.py +0 -0
  247. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/prompts/generate_text_embedding_data.py +0 -0
  248. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/prompts/image_craft.py +0 -0
  249. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/prompts/misalignment.py +0 -0
  250. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/prompts/multi_condition_image_craft.py +0 -0
  251. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/prompts/object_recognition.py +0 -0
  252. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/prompts/persona_hub.py +0 -0
  253. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/prompts/prompt_templates.py +0 -0
  254. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/prompts/role_description_prompt_template.py +0 -0
  255. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/prompts/solution_extraction.py +0 -0
  256. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/prompts/task_prompt_template.py +0 -0
  257. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/prompts/translation.py +0 -0
  258. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/prompts/video_description_prompt.py +0 -0
  259. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/py.typed +0 -0
  260. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/responses/__init__.py +0 -0
  261. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/responses/agent_responses.py +0 -0
  262. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/retrievers/__init__.py +0 -0
  263. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/retrievers/auto_retriever.py +0 -0
  264. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/retrievers/base.py +0 -0
  265. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/retrievers/bm25_retriever.py +0 -0
  266. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/retrievers/cohere_rerank_retriever.py +0 -0
  267. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/retrievers/hybrid_retrival.py +0 -0
  268. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/retrievers/vector_retriever.py +0 -0
  269. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/runtimes/__init__.py +0 -0
  270. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/runtimes/api.py +0 -0
  271. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/runtimes/base.py +0 -0
  272. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/runtimes/configs.py +0 -0
  273. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/runtimes/daytona_runtime.py +0 -0
  274. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/runtimes/docker_runtime.py +0 -0
  275. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/runtimes/llm_guard_runtime.py +0 -0
  276. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/runtimes/remote_http_runtime.py +0 -0
  277. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/runtimes/ubuntu_docker_runtime.py +0 -0
  278. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/runtimes/utils/__init__.py +0 -0
  279. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/runtimes/utils/function_risk_toolkit.py +0 -0
  280. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/runtimes/utils/ignore_risk_toolkit.py +0 -0
  281. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/schemas/__init__.py +0 -0
  282. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/schemas/base.py +0 -0
  283. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/schemas/openai_converter.py +0 -0
  284. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/schemas/outlines_converter.py +0 -0
  285. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/services/agent_openapi_server.py +0 -0
  286. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/societies/__init__.py +0 -0
  287. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/societies/babyagi_playing.py +0 -0
  288. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/societies/role_playing.py +0 -0
  289. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/societies/workforce/__init__.py +0 -0
  290. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/societies/workforce/base.py +0 -0
  291. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/societies/workforce/prompts.py +0 -0
  292. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/societies/workforce/role_playing_worker.py +0 -0
  293. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/societies/workforce/single_agent_worker.py +0 -0
  294. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/societies/workforce/structured_output_handler.py +0 -0
  295. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/societies/workforce/task_channel.py +0 -0
  296. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/societies/workforce/utils.py +0 -0
  297. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/societies/workforce/worker.py +0 -0
  298. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/societies/workforce/workforce.py +0 -0
  299. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/societies/workforce/workforce_logger.py +0 -0
  300. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/storages/__init__.py +0 -0
  301. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/storages/graph_storages/__init__.py +0 -0
  302. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/storages/graph_storages/base.py +0 -0
  303. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/storages/graph_storages/graph_element.py +0 -0
  304. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/storages/graph_storages/nebula_graph.py +0 -0
  305. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/storages/graph_storages/neo4j_graph.py +0 -0
  306. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/storages/key_value_storages/__init__.py +0 -0
  307. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/storages/key_value_storages/base.py +0 -0
  308. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/storages/key_value_storages/in_memory.py +0 -0
  309. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/storages/key_value_storages/json.py +0 -0
  310. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/storages/key_value_storages/mem0_cloud.py +0 -0
  311. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/storages/key_value_storages/redis.py +0 -0
  312. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/storages/object_storages/__init__.py +0 -0
  313. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/storages/object_storages/amazon_s3.py +0 -0
  314. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/storages/object_storages/azure_blob.py +0 -0
  315. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/storages/object_storages/base.py +0 -0
  316. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/storages/object_storages/google_cloud.py +0 -0
  317. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/storages/vectordb_storages/__init__.py +0 -0
  318. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/storages/vectordb_storages/base.py +0 -0
  319. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/storages/vectordb_storages/chroma.py +0 -0
  320. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/storages/vectordb_storages/faiss.py +0 -0
  321. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/storages/vectordb_storages/milvus.py +0 -0
  322. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/storages/vectordb_storages/oceanbase.py +0 -0
  323. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/storages/vectordb_storages/pgvector.py +0 -0
  324. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/storages/vectordb_storages/qdrant.py +0 -0
  325. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/storages/vectordb_storages/surreal.py +0 -0
  326. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/storages/vectordb_storages/tidb.py +0 -0
  327. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/storages/vectordb_storages/weaviate.py +0 -0
  328. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/tasks/__init__.py +0 -0
  329. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/tasks/task.py +0 -0
  330. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/tasks/task_prompt.py +0 -0
  331. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/terminators/__init__.py +0 -0
  332. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/terminators/base.py +0 -0
  333. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/terminators/response_terminator.py +0 -0
  334. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/terminators/token_limit_terminator.py +0 -0
  335. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/__init__.py +0 -0
  336. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/aci_toolkit.py +0 -0
  337. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/arxiv_toolkit.py +0 -0
  338. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/ask_news_toolkit.py +0 -0
  339. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/async_browser_toolkit.py +0 -0
  340. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/audio_analysis_toolkit.py +0 -0
  341. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/base.py +0 -0
  342. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/bohrium_toolkit.py +0 -0
  343. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/browser_toolkit.py +0 -0
  344. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/browser_toolkit_commons.py +0 -0
  345. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/code_execution.py +0 -0
  346. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/context_summarizer_toolkit.py +0 -0
  347. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/craw4ai_toolkit.py +0 -0
  348. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/dappier_toolkit.py +0 -0
  349. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/data_commons_toolkit.py +0 -0
  350. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/dingtalk.py +0 -0
  351. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/edgeone_pages_mcp_toolkit.py +0 -0
  352. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/function_tool.py +0 -0
  353. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/github_toolkit.py +0 -0
  354. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/google_calendar_toolkit.py +0 -0
  355. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/google_drive_mcp_toolkit.py +0 -0
  356. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/google_maps_toolkit.py +0 -0
  357. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/google_scholar_toolkit.py +0 -0
  358. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/human_toolkit.py +0 -0
  359. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/hybrid_browser_toolkit/__init__.py +0 -0
  360. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/hybrid_browser_toolkit/config_loader.py +0 -0
  361. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/hybrid_browser_toolkit/hybrid_browser_toolkit.py +0 -0
  362. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/hybrid_browser_toolkit/hybrid_browser_toolkit_ts.py +0 -0
  363. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/hybrid_browser_toolkit/installer.py +0 -0
  364. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/hybrid_browser_toolkit/ts/package-lock.json +0 -0
  365. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/hybrid_browser_toolkit/ts/package.json +0 -0
  366. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/hybrid_browser_toolkit/ts/src/browser-scripts.js +0 -0
  367. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/hybrid_browser_toolkit/ts/src/browser-session.ts +0 -0
  368. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/hybrid_browser_toolkit/ts/src/config-loader.ts +0 -0
  369. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/hybrid_browser_toolkit/ts/src/hybrid-browser-toolkit.ts +0 -0
  370. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/hybrid_browser_toolkit/ts/src/index.ts +0 -0
  371. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/hybrid_browser_toolkit/ts/src/parent-child-filter.ts +0 -0
  372. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/hybrid_browser_toolkit/ts/src/snapshot-parser.ts +0 -0
  373. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/hybrid_browser_toolkit/ts/src/som-screenshot-injected.ts +0 -0
  374. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/hybrid_browser_toolkit/ts/src/types.ts +0 -0
  375. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/hybrid_browser_toolkit/ts/tsconfig.json +0 -0
  376. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/hybrid_browser_toolkit/ts/websocket-server.js +0 -0
  377. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/hybrid_browser_toolkit/ws_wrapper.py +0 -0
  378. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/hybrid_browser_toolkit_py/__init__.py +0 -0
  379. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/hybrid_browser_toolkit_py/actions.py +0 -0
  380. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/hybrid_browser_toolkit_py/agent.py +0 -0
  381. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/hybrid_browser_toolkit_py/browser_session.py +0 -0
  382. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/hybrid_browser_toolkit_py/config_loader.py +0 -0
  383. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/hybrid_browser_toolkit_py/hybrid_browser_toolkit.py +0 -0
  384. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/hybrid_browser_toolkit_py/snapshot.py +0 -0
  385. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/hybrid_browser_toolkit_py/stealth_script.js +0 -0
  386. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/hybrid_browser_toolkit_py/unified_analyzer.js +0 -0
  387. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/image_analysis_toolkit.py +0 -0
  388. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/image_generation_toolkit.py +0 -0
  389. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/jina_reranker_toolkit.py +0 -0
  390. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/klavis_toolkit.py +0 -0
  391. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/linkedin_toolkit.py +0 -0
  392. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/markitdown_toolkit.py +0 -0
  393. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/math_toolkit.py +0 -0
  394. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/mcp_toolkit.py +0 -0
  395. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/memory_toolkit.py +0 -0
  396. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/meshy_toolkit.py +0 -0
  397. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/message_agent_toolkit.py +0 -0
  398. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/message_integration.py +0 -0
  399. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/mineru_toolkit.py +0 -0
  400. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/minimax_mcp_toolkit.py +0 -0
  401. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/networkx_toolkit.py +0 -0
  402. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/note_taking_toolkit.py +0 -0
  403. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/notion_mcp_toolkit.py +0 -0
  404. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/notion_toolkit.py +0 -0
  405. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/open_api_specs/biztoc/__init__.py +0 -0
  406. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/open_api_specs/biztoc/ai-plugin.json +0 -0
  407. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/open_api_specs/biztoc/openapi.yaml +0 -0
  408. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/open_api_specs/coursera/__init__.py +0 -0
  409. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/open_api_specs/coursera/openapi.yaml +0 -0
  410. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/open_api_specs/create_qr_code/__init__.py +0 -0
  411. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/open_api_specs/create_qr_code/openapi.yaml +0 -0
  412. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/open_api_specs/klarna/__init__.py +0 -0
  413. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/open_api_specs/klarna/openapi.yaml +0 -0
  414. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/open_api_specs/nasa_apod/__init__.py +0 -0
  415. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/open_api_specs/nasa_apod/openapi.yaml +0 -0
  416. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/open_api_specs/outschool/__init__.py +0 -0
  417. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/open_api_specs/outschool/ai-plugin.json +0 -0
  418. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/open_api_specs/outschool/openapi.yaml +0 -0
  419. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/open_api_specs/outschool/paths/__init__.py +0 -0
  420. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/open_api_specs/outschool/paths/get_classes.py +0 -0
  421. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/open_api_specs/outschool/paths/search_teachers.py +0 -0
  422. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/open_api_specs/security_config.py +0 -0
  423. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/open_api_specs/speak/__init__.py +0 -0
  424. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/open_api_specs/speak/openapi.yaml +0 -0
  425. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/open_api_specs/web_scraper/__init__.py +0 -0
  426. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/open_api_specs/web_scraper/ai-plugin.json +0 -0
  427. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/open_api_specs/web_scraper/openapi.yaml +0 -0
  428. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/open_api_specs/web_scraper/paths/__init__.py +0 -0
  429. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/open_api_specs/web_scraper/paths/scraper.py +0 -0
  430. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/open_api_toolkit.py +0 -0
  431. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/openbb_toolkit.py +0 -0
  432. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/origene_mcp_toolkit.py +0 -0
  433. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/page_script.js +0 -0
  434. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/playwright_mcp_toolkit.py +0 -0
  435. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/pptx_toolkit.py +0 -0
  436. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/pubmed_toolkit.py +0 -0
  437. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/pulse_mcp_search_toolkit.py +0 -0
  438. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/pyautogui_toolkit.py +0 -0
  439. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/reddit_toolkit.py +0 -0
  440. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/resend_toolkit.py +0 -0
  441. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/retrieval_toolkit.py +0 -0
  442. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/screenshot_toolkit.py +0 -0
  443. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/search_toolkit.py +0 -0
  444. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/searxng_toolkit.py +0 -0
  445. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/semantic_scholar_toolkit.py +0 -0
  446. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/slack_toolkit.py +0 -0
  447. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/stripe_toolkit.py +0 -0
  448. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/sympy_toolkit.py +0 -0
  449. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/task_planning_toolkit.py +0 -0
  450. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/terminal_toolkit/__init__.py +0 -0
  451. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/terminal_toolkit/terminal_toolkit.py +0 -0
  452. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/terminal_toolkit/utils.py +0 -0
  453. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/thinking_toolkit.py +0 -0
  454. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/twitter_toolkit.py +0 -0
  455. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/vertex_ai_veo_toolkit.py +0 -0
  456. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/video_analysis_toolkit.py +0 -0
  457. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/video_download_toolkit.py +0 -0
  458. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/weather_toolkit.py +0 -0
  459. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/web_deploy_toolkit.py +0 -0
  460. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/wechat_official_toolkit.py +0 -0
  461. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/whatsapp_toolkit.py +0 -0
  462. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/wolfram_alpha_toolkit.py +0 -0
  463. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/toolkits/zapier_toolkit.py +0 -0
  464. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/types/__init__.py +0 -0
  465. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/types/agents/__init__.py +0 -0
  466. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/types/agents/tool_calling_record.py +0 -0
  467. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/types/enums.py +0 -0
  468. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/types/mcp_registries.py +0 -0
  469. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/types/openai_types.py +0 -0
  470. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/types/unified_model_type.py +0 -0
  471. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/utils/__init__.py +0 -0
  472. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/utils/async_func.py +0 -0
  473. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/utils/chunker/__init__.py +0 -0
  474. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/utils/chunker/base.py +0 -0
  475. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/utils/chunker/code_chunker.py +0 -0
  476. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/utils/chunker/uio_chunker.py +0 -0
  477. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/utils/commons.py +0 -0
  478. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/utils/constants.py +0 -0
  479. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/utils/context_utils.py +0 -0
  480. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/utils/deduplication.py +0 -0
  481. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/utils/filename.py +0 -0
  482. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/utils/langfuse.py +0 -0
  483. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/utils/mcp.py +0 -0
  484. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/utils/mcp_client.py +0 -0
  485. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/utils/message_summarizer.py +0 -0
  486. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/utils/response_format.py +0 -0
  487. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/utils/token_counting.py +0 -0
  488. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/utils/tool_result.py +0 -0
  489. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/verifiers/__init__.py +0 -0
  490. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/verifiers/base.py +0 -0
  491. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/verifiers/math_verifier.py +0 -0
  492. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/verifiers/models.py +0 -0
  493. {camel_ai-0.2.77 → camel_ai-0.2.78}/camel/verifiers/physics_verifier.py +0 -0
  494. {camel_ai-0.2.77 → camel_ai-0.2.78}/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.77
3
+ Version: 0.2.78
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
@@ -916,6 +916,7 @@ Real-world usecases demonstrating how CAMEL’s multi-agent framework enables re
916
916
  |:---|:---|
917
917
  | **[ChatDev](https://github.com/OpenBMB/ChatDev/tree/main/camel)** | Communicative Agents for software Development |
918
918
  | **[Paper2Poster](https://github.com/Paper2Poster/Paper2Poster)** | Multimodal poster automation from scientific papers |
919
+ | **[Paper2Video](https://github.com/showlab/Paper2Video)** | Automatic video generation from scientific papers |
919
920
 
920
921
  ### Product Projects
921
922
 
@@ -948,6 +949,14 @@ We are actively involved in community events including:
948
949
  >
949
950
  > We also welcome you to help CAMEL grow by sharing it on social media, at events, or during conferences. Your support makes a big difference!
950
951
 
952
+ ## Contributors
953
+
954
+ <a href="https://github.com/camel-ai/camel/graphs/contributors">
955
+ <img src="https://contrib.rocks/image?repo=camel-ai/camel" />
956
+ </a>
957
+
958
+ Made with [contrib.rocks](https://contrib.rocks).
959
+
951
960
  <br>
952
961
 
953
962
  ## Community & Contact
@@ -517,6 +517,7 @@ Real-world usecases demonstrating how CAMEL’s multi-agent framework enables re
517
517
  |:---|:---|
518
518
  | **[ChatDev](https://github.com/OpenBMB/ChatDev/tree/main/camel)** | Communicative Agents for software Development |
519
519
  | **[Paper2Poster](https://github.com/Paper2Poster/Paper2Poster)** | Multimodal poster automation from scientific papers |
520
+ | **[Paper2Video](https://github.com/showlab/Paper2Video)** | Automatic video generation from scientific papers |
520
521
 
521
522
  ### Product Projects
522
523
 
@@ -549,6 +550,14 @@ We are actively involved in community events including:
549
550
  >
550
551
  > We also welcome you to help CAMEL grow by sharing it on social media, at events, or during conferences. Your support makes a big difference!
551
552
 
553
+ ## Contributors
554
+
555
+ <a href="https://github.com/camel-ai/camel/graphs/contributors">
556
+ <img src="https://contrib.rocks/image?repo=camel-ai/camel" />
557
+ </a>
558
+
559
+ Made with [contrib.rocks](https://contrib.rocks).
560
+
552
561
  <br>
553
562
 
554
563
  ## Community & Contact
@@ -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.77'
17
+ __version__ = '0.2.78'
18
18
 
19
19
  __all__ = [
20
20
  '__version__',
@@ -30,7 +30,6 @@ import threading
30
30
  import time
31
31
  import uuid
32
32
  import warnings
33
- from dataclasses import dataclass
34
33
  from datetime import datetime
35
34
  from pathlib import Path
36
35
  from typing import (
@@ -160,53 +159,6 @@ SIMPLE_FORMAT_PROMPT = TextPrompt(
160
159
  )
161
160
 
162
161
 
163
- @dataclass
164
- class _ToolOutputHistoryEntry:
165
- tool_name: str
166
- tool_call_id: str
167
- result_text: str
168
- record_uuids: List[str]
169
- record_timestamps: List[float]
170
- preview_text: str
171
- cached: bool = False
172
- cache_id: Optional[str] = None
173
-
174
-
175
- class _ToolOutputCacheManager:
176
- r"""Minimal persistent store for caching verbose tool outputs."""
177
-
178
- def __init__(self, base_dir: Union[str, Path]) -> None:
179
- self.base_dir = Path(base_dir).expanduser().resolve()
180
- self.base_dir.mkdir(parents=True, exist_ok=True)
181
-
182
- def save(
183
- self,
184
- tool_name: str,
185
- tool_call_id: str,
186
- content: str,
187
- ) -> Tuple[str, Path]:
188
- cache_id = uuid.uuid4().hex
189
- filename = f"{cache_id}.txt"
190
- path = self.base_dir / filename
191
- header = (
192
- f"# Cached tool output\n"
193
- f"tool_name: {tool_name}\n"
194
- f"tool_call_id: {tool_call_id}\n"
195
- f"cache_id: {cache_id}\n"
196
- f"---\n"
197
- )
198
- path.write_text(f"{header}{content}", encoding="utf-8")
199
- return cache_id, path
200
-
201
- def load(self, cache_id: str) -> str:
202
- path = self.base_dir / f"{cache_id}.txt"
203
- if not path.exists():
204
- raise FileNotFoundError(
205
- f"Cached tool output {cache_id} not found at {path}"
206
- )
207
- return path.read_text(encoding="utf-8")
208
-
209
-
210
162
  class StreamContentAccumulator:
211
163
  r"""Manages content accumulation across streaming responses to ensure
212
164
  all responses contain complete cumulative content."""
@@ -452,19 +404,6 @@ class ChatAgent(BaseAgent):
452
404
  usage. When enabled, removes FUNCTION/TOOL role messages and
453
405
  ASSISTANT messages with tool_calls after each step.
454
406
  (default: :obj:`False`)
455
- enable_tool_output_cache (bool, optional): Whether to offload verbose
456
- historical tool outputs to a local cache and replace them with
457
- lightweight references in memory. Only older tool results whose
458
- payload length exceeds ``tool_output_cache_threshold`` are cached.
459
- (default: :obj:`False`)
460
- tool_output_cache_threshold (int, optional): Minimum character length
461
- of a tool result before it becomes eligible for caching. Values
462
- below or equal to zero disable caching regardless of the toggle.
463
- (default: :obj:`2000`)
464
- tool_output_cache_dir (Optional[Union[str, Path]], optional): Target
465
- directory for cached tool outputs. When omitted, a ``tool_cache``
466
- directory relative to the current working directory is used.
467
- (default: :obj:`None`)
468
407
  retry_attempts (int, optional): Maximum number of retry attempts for
469
408
  rate limit errors. (default: :obj:`3`)
470
409
  retry_delay (float, optional): Initial delay in seconds between
@@ -516,9 +455,6 @@ class ChatAgent(BaseAgent):
516
455
  mask_tool_output: bool = False,
517
456
  pause_event: Optional[Union[threading.Event, asyncio.Event]] = None,
518
457
  prune_tool_calls_from_memory: bool = False,
519
- enable_tool_output_cache: bool = False,
520
- tool_output_cache_threshold: int = 2000,
521
- tool_output_cache_dir: Optional[Union[str, Path]] = None,
522
458
  retry_attempts: int = 3,
523
459
  retry_delay: float = 1.0,
524
460
  step_timeout: Optional[float] = None,
@@ -538,28 +474,6 @@ class ChatAgent(BaseAgent):
538
474
  # Assign unique ID
539
475
  self.agent_id = agent_id if agent_id else str(uuid.uuid4())
540
476
 
541
- self._tool_output_cache_enabled = (
542
- enable_tool_output_cache and tool_output_cache_threshold > 0
543
- )
544
- self._tool_output_cache_threshold = max(0, tool_output_cache_threshold)
545
- self._tool_output_cache_dir: Optional[Path]
546
- self._tool_output_cache_manager: Optional[_ToolOutputCacheManager]
547
- if self._tool_output_cache_enabled:
548
- cache_dir = (
549
- Path(tool_output_cache_dir).expanduser()
550
- if tool_output_cache_dir is not None
551
- else Path("tool_cache")
552
- )
553
- self._tool_output_cache_dir = cache_dir
554
- self._tool_output_cache_manager = _ToolOutputCacheManager(
555
- cache_dir
556
- )
557
- else:
558
- self._tool_output_cache_dir = None
559
- self._tool_output_cache_manager = None
560
- self._tool_output_history: List[_ToolOutputHistoryEntry] = []
561
- self._cache_lookup_tool_name = "retrieve_cached_tool_output"
562
-
563
477
  # Set up memory
564
478
  context_creator = ScoreBasedContextCreator(
565
479
  self.model_backend.token_counter,
@@ -606,8 +520,6 @@ class ChatAgent(BaseAgent):
606
520
  convert_to_function_tool(tool) for tool in (tools or [])
607
521
  ]
608
522
  }
609
- if self._tool_output_cache_enabled:
610
- self._ensure_tool_cache_lookup_tool()
611
523
 
612
524
  # Register agent with toolkits that have RegisteredAgentToolkit mixin
613
525
  if toolkits_to_register_agent:
@@ -644,8 +556,6 @@ class ChatAgent(BaseAgent):
644
556
  r"""Resets the :obj:`ChatAgent` to its initial state."""
645
557
  self.terminated = False
646
558
  self.init_messages()
647
- if self._tool_output_cache_enabled:
648
- self._tool_output_history.clear()
649
559
  for terminator in self.response_terminators:
650
560
  terminator.reset()
651
561
 
@@ -866,178 +776,6 @@ class ChatAgent(BaseAgent):
866
776
  for tool in tools:
867
777
  self.add_tool(tool)
868
778
 
869
- def retrieve_cached_tool_output(self, cache_id: str) -> str:
870
- r"""Load a cached tool output by its cache identifier.
871
-
872
- Args:
873
- cache_id (str): Identifier provided in cached tool messages.
874
-
875
- Returns:
876
- str: The cached content or an explanatory error message.
877
- """
878
- if not self._tool_output_cache_manager:
879
- return "Tool output caching is disabled for this agent instance."
880
-
881
- normalized_cache_id = cache_id.strip()
882
- if not normalized_cache_id:
883
- return "Please provide a non-empty cache_id."
884
-
885
- try:
886
- return self._tool_output_cache_manager.load(normalized_cache_id)
887
- except FileNotFoundError:
888
- return (
889
- f"Cache entry '{normalized_cache_id}' was not found. "
890
- "Verify the identifier and try again."
891
- )
892
-
893
- def _ensure_tool_cache_lookup_tool(self) -> None:
894
- if not self._tool_output_cache_enabled:
895
- return
896
- lookup_name = self._cache_lookup_tool_name
897
- if lookup_name in self._internal_tools:
898
- return
899
- lookup_tool = convert_to_function_tool(
900
- self.retrieve_cached_tool_output
901
- )
902
- self._internal_tools[lookup_tool.get_function_name()] = lookup_tool
903
-
904
- def _serialize_tool_result(self, result: Any) -> str:
905
- if isinstance(result, str):
906
- return result
907
- try:
908
- return json.dumps(result, ensure_ascii=False)
909
- except (TypeError, ValueError):
910
- return str(result)
911
-
912
- def _summarize_tool_result(self, text: str, limit: int = 160) -> str:
913
- normalized = re.sub(r"\s+", " ", text).strip()
914
- if len(normalized) <= limit:
915
- return normalized
916
- return normalized[: max(0, limit - 3)].rstrip() + "..."
917
-
918
- def _register_tool_output_for_cache(
919
- self,
920
- func_name: str,
921
- tool_call_id: str,
922
- result_text: str,
923
- records: List[MemoryRecord],
924
- ) -> None:
925
- if not records:
926
- return
927
-
928
- entry = _ToolOutputHistoryEntry(
929
- tool_name=func_name,
930
- tool_call_id=tool_call_id,
931
- result_text=result_text,
932
- record_uuids=[str(record.uuid) for record in records],
933
- record_timestamps=[record.timestamp for record in records],
934
- preview_text=self._summarize_tool_result(result_text),
935
- )
936
- self._tool_output_history.append(entry)
937
- self._process_tool_output_cache()
938
-
939
- def _process_tool_output_cache(self) -> None:
940
- if (
941
- not self._tool_output_cache_enabled
942
- or not self._tool_output_history
943
- or self._tool_output_cache_manager is None
944
- ):
945
- return
946
-
947
- # Only cache older results; keep the latest expanded for immediate use.
948
- for entry in self._tool_output_history[:-1]:
949
- if entry.cached:
950
- continue
951
- if len(entry.result_text) < self._tool_output_cache_threshold:
952
- continue
953
- self._cache_tool_output_entry(entry)
954
-
955
- def _cache_tool_output_entry(self, entry: _ToolOutputHistoryEntry) -> None:
956
- if self._tool_output_cache_manager is None or not entry.record_uuids:
957
- return
958
-
959
- try:
960
- cache_id, cache_path = self._tool_output_cache_manager.save(
961
- entry.tool_name,
962
- entry.tool_call_id,
963
- entry.result_text,
964
- )
965
- except Exception as exc: # pragma: no cover - defensive
966
- logger.warning(
967
- "Failed to persist cached tool output for %s (%s): %s",
968
- entry.tool_name,
969
- entry.tool_call_id,
970
- exc,
971
- )
972
- return
973
-
974
- timestamp = (
975
- entry.record_timestamps[0]
976
- if entry.record_timestamps
977
- else time.time_ns() / 1_000_000_000
978
- )
979
- reference_message = FunctionCallingMessage(
980
- role_name=self.role_name,
981
- role_type=self.role_type,
982
- meta_dict={
983
- "cache_id": cache_id,
984
- "cached_preview": entry.preview_text,
985
- "cached_tool_output_path": str(cache_path),
986
- },
987
- content="",
988
- func_name=entry.tool_name,
989
- result=self._build_cache_reference_text(entry, cache_id),
990
- tool_call_id=entry.tool_call_id,
991
- )
992
-
993
- chat_history_block = getattr(self.memory, "_chat_history_block", None)
994
- storage = getattr(chat_history_block, "storage", None)
995
- if storage is None:
996
- return
997
-
998
- existing_records = storage.load()
999
- updated_records = [
1000
- record
1001
- for record in existing_records
1002
- if record["uuid"] not in entry.record_uuids
1003
- ]
1004
- new_record = MemoryRecord(
1005
- message=reference_message,
1006
- role_at_backend=OpenAIBackendRole.FUNCTION,
1007
- timestamp=timestamp,
1008
- agent_id=self.agent_id,
1009
- )
1010
- updated_records.append(new_record.to_dict())
1011
- updated_records.sort(key=lambda record: record["timestamp"])
1012
- storage.clear()
1013
- storage.save(updated_records)
1014
-
1015
- logger.info(
1016
- "Cached tool output '%s' (%s) to %s with cache_id=%s",
1017
- entry.tool_name,
1018
- entry.tool_call_id,
1019
- cache_path,
1020
- cache_id,
1021
- )
1022
-
1023
- entry.cached = True
1024
- entry.cache_id = cache_id
1025
- entry.record_uuids = [str(new_record.uuid)]
1026
- entry.record_timestamps = [timestamp]
1027
-
1028
- def _build_cache_reference_text(
1029
- self, entry: _ToolOutputHistoryEntry, cache_id: str
1030
- ) -> str:
1031
- preview = entry.preview_text or "[no preview available]"
1032
- return (
1033
- "[cached tool output]\n"
1034
- f"tool: {entry.tool_name}\n"
1035
- f"cache_id: {cache_id}\n"
1036
- f"preview: {preview}\n"
1037
- f"Use `{self._cache_lookup_tool_name}` with this cache_id to "
1038
- "retrieve the full content."
1039
- )
1040
-
1041
779
  def add_external_tool(
1042
780
  self, tool: Union[FunctionTool, Callable, Dict[str, Any]]
1043
781
  ) -> None:
@@ -1082,8 +820,7 @@ class ChatAgent(BaseAgent):
1082
820
  message: BaseMessage,
1083
821
  role: OpenAIBackendRole,
1084
822
  timestamp: Optional[float] = None,
1085
- return_records: bool = False,
1086
- ) -> Optional[List[MemoryRecord]]:
823
+ ) -> None:
1087
824
  r"""Updates the agent memory with a new message.
1088
825
 
1089
826
  If the single *message* exceeds the model's context window, it will
@@ -1103,29 +840,21 @@ class ChatAgent(BaseAgent):
1103
840
  timestamp (Optional[float], optional): Custom timestamp for the
1104
841
  memory record. If `None`, the current time will be used.
1105
842
  (default: :obj:`None`)
1106
- return_records (bool, optional): When ``True`` the method returns
1107
- the list of :class:`MemoryRecord` objects written to memory.
1108
- (default: :obj:`False`)
1109
-
1110
- Returns:
1111
- Optional[List[MemoryRecord]]: The records that were written when
1112
- ``return_records`` is ``True``; otherwise ``None``.
843
+ (default: obj:`None`)
1113
844
  """
1114
845
 
1115
- written_records: List[MemoryRecord] = []
1116
-
1117
846
  # 1. Helper to write a record to memory
1118
847
  def _write_single_record(
1119
848
  message: BaseMessage, role: OpenAIBackendRole, timestamp: float
1120
849
  ):
1121
- record = MemoryRecord(
1122
- message=message,
1123
- role_at_backend=role,
1124
- timestamp=timestamp,
1125
- agent_id=self.agent_id,
850
+ self.memory.write_record(
851
+ MemoryRecord(
852
+ message=message,
853
+ role_at_backend=role,
854
+ timestamp=timestamp,
855
+ agent_id=self.agent_id,
856
+ )
1126
857
  )
1127
- written_records.append(record)
1128
- self.memory.write_record(record)
1129
858
 
1130
859
  base_ts = (
1131
860
  timestamp
@@ -1140,7 +869,7 @@ class ChatAgent(BaseAgent):
1140
869
  token_limit = context_creator.token_limit
1141
870
  except AttributeError:
1142
871
  _write_single_record(message, role, base_ts)
1143
- return written_records if return_records else None
872
+ return
1144
873
 
1145
874
  # 3. Check if slicing is necessary
1146
875
  try:
@@ -1156,14 +885,14 @@ class ChatAgent(BaseAgent):
1156
885
 
1157
886
  if current_tokens <= remaining_budget:
1158
887
  _write_single_record(message, role, base_ts)
1159
- return written_records if return_records else None
888
+ return
1160
889
  except Exception as e:
1161
890
  logger.warning(
1162
891
  f"Token calculation failed before chunking, "
1163
892
  f"writing message as-is. Error: {e}"
1164
893
  )
1165
894
  _write_single_record(message, role, base_ts)
1166
- return written_records if return_records else None
895
+ return
1167
896
 
1168
897
  # 4. Perform slicing
1169
898
  logger.warning(
@@ -1184,18 +913,18 @@ class ChatAgent(BaseAgent):
1184
913
 
1185
914
  if not text_to_chunk or not text_to_chunk.strip():
1186
915
  _write_single_record(message, role, base_ts)
1187
- return written_records if return_records else None
916
+ return
1188
917
  # Encode the entire text to get a list of all token IDs
1189
918
  try:
1190
919
  all_token_ids = token_counter.encode(text_to_chunk)
1191
920
  except Exception as e:
1192
921
  logger.error(f"Failed to encode text for chunking: {e}")
1193
922
  _write_single_record(message, role, base_ts) # Fallback
1194
- return written_records if return_records else None
923
+ return
1195
924
 
1196
925
  if not all_token_ids:
1197
926
  _write_single_record(message, role, base_ts) # Nothing to chunk
1198
- return written_records if return_records else None
927
+ return
1199
928
 
1200
929
  # 1. Base chunk size: one-tenth of the smaller of (a) total token
1201
930
  # limit and (b) current remaining budget. This prevents us from
@@ -1261,8 +990,6 @@ class ChatAgent(BaseAgent):
1261
990
  # Increment timestamp slightly to maintain order
1262
991
  _write_single_record(new_msg, role, base_ts + i * 1e-6)
1263
992
 
1264
- return written_records if return_records else None
1265
-
1266
993
  def load_memory(self, memory: AgentMemory) -> None:
1267
994
  r"""Load the provided memory into the agent.
1268
995
 
@@ -1583,8 +1310,6 @@ class ChatAgent(BaseAgent):
1583
1310
  None
1584
1311
  """
1585
1312
  self.memory.clear()
1586
- if self._tool_output_cache_enabled:
1587
- self._tool_output_history.clear()
1588
1313
 
1589
1314
  if self.system_message is not None:
1590
1315
  self.update_memory(self.system_message, OpenAIBackendRole.SYSTEM)
@@ -3015,18 +2740,14 @@ class ChatAgent(BaseAgent):
3015
2740
  base_timestamp = current_time_ns / 1_000_000_000 # Convert to seconds
3016
2741
 
3017
2742
  self.update_memory(
3018
- assist_msg,
3019
- OpenAIBackendRole.ASSISTANT,
3020
- timestamp=base_timestamp,
3021
- return_records=self._tool_output_cache_enabled,
2743
+ assist_msg, OpenAIBackendRole.ASSISTANT, timestamp=base_timestamp
3022
2744
  )
3023
2745
 
3024
2746
  # Add minimal increment to ensure function message comes after
3025
- func_records = self.update_memory(
2747
+ self.update_memory(
3026
2748
  func_msg,
3027
2749
  OpenAIBackendRole.FUNCTION,
3028
2750
  timestamp=base_timestamp + 1e-6,
3029
- return_records=self._tool_output_cache_enabled,
3030
2751
  )
3031
2752
 
3032
2753
  # Record information about this tool call
@@ -3037,20 +2758,6 @@ class ChatAgent(BaseAgent):
3037
2758
  tool_call_id=tool_call_id,
3038
2759
  )
3039
2760
 
3040
- if (
3041
- self._tool_output_cache_enabled
3042
- and not mask_output
3043
- and func_records
3044
- and self._tool_output_cache_manager is not None
3045
- ):
3046
- serialized_result = self._serialize_tool_result(result)
3047
- self._register_tool_output_for_cache(
3048
- func_name,
3049
- tool_call_id,
3050
- serialized_result,
3051
- cast(List[MemoryRecord], func_records),
3052
- )
3053
-
3054
2761
  return tool_record
3055
2762
 
3056
2763
  def _stream(
@@ -4402,9 +4109,6 @@ class ChatAgent(BaseAgent):
4402
4109
  tool_execution_timeout=self.tool_execution_timeout,
4403
4110
  pause_event=self.pause_event,
4404
4111
  prune_tool_calls_from_memory=self.prune_tool_calls_from_memory,
4405
- enable_tool_output_cache=self._tool_output_cache_enabled,
4406
- tool_output_cache_threshold=self._tool_output_cache_threshold,
4407
- tool_output_cache_dir=self._tool_output_cache_dir,
4408
4112
  stream_accumulate=self.stream_accumulate,
4409
4113
  )
4410
4114
 
@@ -872,7 +872,7 @@ class ExcelToolkit(BaseToolkit):
872
872
  import csv
873
873
 
874
874
  with open(
875
- resolved_csv_path, 'w', newline='', encoding='utf-8'
875
+ resolved_csv_path, 'w', newline='', encoding='utf-8-sig'
876
876
  ) as csvfile:
877
877
  writer = csv.writer(csvfile)
878
878
  writer.writerows(data)
@@ -906,7 +906,7 @@ class FileToolkit(BaseToolkit):
906
906
  self,
907
907
  file_path: Path,
908
908
  content: Union[str, List[List]],
909
- encoding: str = "utf-8",
909
+ encoding: str = "utf-8-sig",
910
910
  ) -> None:
911
911
  r"""Write CSV content to a file.
912
912
 
@@ -914,7 +914,8 @@ class FileToolkit(BaseToolkit):
914
914
  file_path (Path): The target file path.
915
915
  content (Union[str, List[List]]): The CSV content as a string or
916
916
  list of lists.
917
- encoding (str): Character encoding to use. (default: :obj:`utf-8`)
917
+ encoding (str): Character encoding to use.
918
+ (default: :obj:`utf-8-sig`)
918
919
  """
919
920
  import csv
920
921
 
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "camel-ai"
7
- version = "0.2.77"
7
+ version = "0.2.78"
8
8
  description = "Communicative Agents for AI Society Study"
9
9
  authors = [{ name = "CAMEL-AI.org" }]
10
10
  requires-python = ">=3.10,<3.13"
@@ -660,7 +660,7 @@ ignore_missing_imports = true
660
660
  # Ref: https://github.com/codespell-project/codespell#using-a-config-file
661
661
  # the .py file needs to be listed twice since pre-commit and codespell treat
662
662
  # that path differently.
663
- skip = '.git*,*.pdf,*.svg,*.lock,*.css,examples/toolkits/semantic_scholar_toolkit.py,./examples/toolkits/semantic_scholar_toolkit.py,examples/usecases,./examples/usecases,examples/agents/agent_tool_call_cache.py,./examples/agents/agent_tool_call_cache.py'
663
+ skip = '.git*,*.pdf,*.svg,*.lock,*.css,examples/toolkits/semantic_scholar_toolkit.py,./examples/toolkits/semantic_scholar_toolkit.py,examples/usecases,./examples/usecases'
664
664
  check-hidden = true
665
665
  # Ignore long lines as usually some kind of base64 encodings e.g. in ipynb
666
666
  ignore-regex = '^\s*"image/\S+": ".*|^.{300,}|\b(NotIn|Unsupport)\b'
File without changes
File without changes