camel-ai 0.2.73a5__tar.gz → 0.2.73a8__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


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

Files changed (475) hide show
  1. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/PKG-INFO +4 -4
  2. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/__init__.py +1 -1
  3. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/agents/chat_agent.py +1 -6
  4. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/societies/__init__.py +2 -0
  5. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/toolkits/mcp_toolkit.py +341 -46
  6. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/toolkits/terminal_toolkit.py +201 -20
  7. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/pyproject.toml +4 -4
  8. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/.gitignore +0 -0
  9. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/LICENSE +0 -0
  10. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/README.md +0 -0
  11. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/agents/__init__.py +0 -0
  12. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/agents/_types.py +0 -0
  13. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/agents/_utils.py +0 -0
  14. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/agents/base.py +0 -0
  15. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/agents/critic_agent.py +0 -0
  16. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/agents/deductive_reasoner_agent.py +0 -0
  17. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/agents/embodied_agent.py +0 -0
  18. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/agents/knowledge_graph_agent.py +0 -0
  19. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/agents/mcp_agent.py +0 -0
  20. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/agents/multi_hop_generator_agent.py +0 -0
  21. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/agents/programmed_agent_instruction.py +0 -0
  22. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/agents/repo_agent.py +0 -0
  23. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/agents/role_assignment_agent.py +0 -0
  24. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/agents/search_agent.py +0 -0
  25. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/agents/task_agent.py +0 -0
  26. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/agents/tool_agents/__init__.py +0 -0
  27. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/agents/tool_agents/base.py +0 -0
  28. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/agents/tool_agents/hugging_face_tool_agent.py +0 -0
  29. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/benchmarks/__init__.py +0 -0
  30. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/benchmarks/apibank.py +0 -0
  31. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/benchmarks/apibench.py +0 -0
  32. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/benchmarks/base.py +0 -0
  33. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/benchmarks/browsecomp.py +0 -0
  34. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/benchmarks/gaia.py +0 -0
  35. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/benchmarks/mock_website/README.md +0 -0
  36. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/benchmarks/mock_website/mock_web.py +0 -0
  37. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/benchmarks/mock_website/requirements.txt +0 -0
  38. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/benchmarks/mock_website/shopping_mall/app.py +0 -0
  39. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/benchmarks/mock_website/task.json +0 -0
  40. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/benchmarks/nexus.py +0 -0
  41. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/benchmarks/ragbench.py +0 -0
  42. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/bots/__init__.py +0 -0
  43. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/bots/discord/__init__.py +0 -0
  44. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/bots/discord/discord_app.py +0 -0
  45. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/bots/discord/discord_installation.py +0 -0
  46. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/bots/discord/discord_store.py +0 -0
  47. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/bots/slack/__init__.py +0 -0
  48. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/bots/slack/models.py +0 -0
  49. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/bots/slack/slack_app.py +0 -0
  50. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/bots/telegram_bot.py +0 -0
  51. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/configs/__init__.py +0 -0
  52. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/configs/aiml_config.py +0 -0
  53. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/configs/anthropic_config.py +0 -0
  54. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/configs/base_config.py +0 -0
  55. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/configs/bedrock_config.py +0 -0
  56. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/configs/cohere_config.py +0 -0
  57. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/configs/crynux_config.py +0 -0
  58. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/configs/deepseek_config.py +0 -0
  59. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/configs/gemini_config.py +0 -0
  60. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/configs/groq_config.py +0 -0
  61. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/configs/internlm_config.py +0 -0
  62. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/configs/litellm_config.py +0 -0
  63. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/configs/lmstudio_config.py +0 -0
  64. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/configs/mistral_config.py +0 -0
  65. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/configs/modelscope_config.py +0 -0
  66. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/configs/moonshot_config.py +0 -0
  67. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/configs/netmind_config.py +0 -0
  68. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/configs/novita_config.py +0 -0
  69. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/configs/nvidia_config.py +0 -0
  70. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/configs/ollama_config.py +0 -0
  71. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/configs/openai_config.py +0 -0
  72. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/configs/openrouter_config.py +0 -0
  73. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/configs/ppio_config.py +0 -0
  74. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/configs/qianfan_config.py +0 -0
  75. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/configs/qwen_config.py +0 -0
  76. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/configs/reka_config.py +0 -0
  77. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/configs/samba_config.py +0 -0
  78. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/configs/sglang_config.py +0 -0
  79. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/configs/siliconflow_config.py +0 -0
  80. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/configs/togetherai_config.py +0 -0
  81. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/configs/vllm_config.py +0 -0
  82. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/configs/watsonx_config.py +0 -0
  83. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/configs/yi_config.py +0 -0
  84. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/configs/zhipuai_config.py +0 -0
  85. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/data_collectors/__init__.py +0 -0
  86. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/data_collectors/alpaca_collector.py +0 -0
  87. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/data_collectors/base.py +0 -0
  88. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/data_collectors/sharegpt_collector.py +0 -0
  89. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/datagen/__init__.py +0 -0
  90. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/datagen/cot_datagen.py +0 -0
  91. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/datagen/evol_instruct/__init__.py +0 -0
  92. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/datagen/evol_instruct/evol_instruct.py +0 -0
  93. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/datagen/evol_instruct/scorer.py +0 -0
  94. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/datagen/evol_instruct/templates.py +0 -0
  95. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/datagen/self_improving_cot.py +0 -0
  96. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/datagen/self_instruct/__init__.py +0 -0
  97. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/datagen/self_instruct/filter/__init__.py +0 -0
  98. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/datagen/self_instruct/filter/filter_function.py +0 -0
  99. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/datagen/self_instruct/filter/filter_registry.py +0 -0
  100. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/datagen/self_instruct/filter/instruction_filter.py +0 -0
  101. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/datagen/self_instruct/self_instruct.py +0 -0
  102. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/datagen/self_instruct/templates.py +0 -0
  103. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/datagen/source2synth/__init__.py +0 -0
  104. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/datagen/source2synth/data_processor.py +0 -0
  105. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/datagen/source2synth/models.py +0 -0
  106. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/datagen/source2synth/user_data_processor_config.py +0 -0
  107. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/datahubs/__init__.py +0 -0
  108. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/datahubs/base.py +0 -0
  109. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/datahubs/huggingface.py +0 -0
  110. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/datahubs/models.py +0 -0
  111. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/datasets/__init__.py +0 -0
  112. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/datasets/base_generator.py +0 -0
  113. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/datasets/few_shot_generator.py +0 -0
  114. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/datasets/models.py +0 -0
  115. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/datasets/self_instruct_generator.py +0 -0
  116. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/datasets/static_dataset.py +0 -0
  117. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/embeddings/__init__.py +0 -0
  118. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/embeddings/azure_embedding.py +0 -0
  119. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/embeddings/base.py +0 -0
  120. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/embeddings/gemini_embedding.py +0 -0
  121. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/embeddings/jina_embedding.py +0 -0
  122. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/embeddings/mistral_embedding.py +0 -0
  123. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/embeddings/openai_compatible_embedding.py +0 -0
  124. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/embeddings/openai_embedding.py +0 -0
  125. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/embeddings/sentence_transformers_embeddings.py +0 -0
  126. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/embeddings/together_embedding.py +0 -0
  127. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/embeddings/vlm_embedding.py +0 -0
  128. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/environments/__init__.py +0 -0
  129. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/environments/models.py +0 -0
  130. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/environments/multi_step.py +0 -0
  131. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/environments/rlcards_env.py +0 -0
  132. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/environments/single_step.py +0 -0
  133. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/environments/tic_tac_toe.py +0 -0
  134. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/extractors/__init__.py +0 -0
  135. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/extractors/base.py +0 -0
  136. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/extractors/python_strategies.py +0 -0
  137. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/generators.py +0 -0
  138. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/human.py +0 -0
  139. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/interpreters/__init__.py +0 -0
  140. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/interpreters/base.py +0 -0
  141. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/interpreters/docker/Dockerfile +0 -0
  142. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/interpreters/docker_interpreter.py +0 -0
  143. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/interpreters/e2b_interpreter.py +0 -0
  144. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/interpreters/internal_python_interpreter.py +0 -0
  145. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/interpreters/interpreter_error.py +0 -0
  146. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/interpreters/ipython_interpreter.py +0 -0
  147. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/interpreters/subprocess_interpreter.py +0 -0
  148. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/loaders/__init__.py +0 -0
  149. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/loaders/apify_reader.py +0 -0
  150. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/loaders/base_io.py +0 -0
  151. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/loaders/base_loader.py +0 -0
  152. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/loaders/chunkr_reader.py +0 -0
  153. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/loaders/crawl4ai_reader.py +0 -0
  154. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/loaders/firecrawl_reader.py +0 -0
  155. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/loaders/jina_url_reader.py +0 -0
  156. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/loaders/markitdown.py +0 -0
  157. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/loaders/mineru_extractor.py +0 -0
  158. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/loaders/mistral_reader.py +0 -0
  159. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/loaders/pandas_reader.py +0 -0
  160. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/loaders/scrapegraph_reader.py +0 -0
  161. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/loaders/unstructured_io.py +0 -0
  162. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/logger.py +0 -0
  163. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/memories/__init__.py +0 -0
  164. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/memories/agent_memories.py +0 -0
  165. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/memories/base.py +0 -0
  166. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/memories/blocks/__init__.py +0 -0
  167. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/memories/blocks/chat_history_block.py +0 -0
  168. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/memories/blocks/vectordb_block.py +0 -0
  169. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/memories/context_creators/__init__.py +0 -0
  170. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/memories/context_creators/score_based.py +0 -0
  171. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/memories/records.py +0 -0
  172. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/messages/__init__.py +0 -0
  173. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/messages/base.py +0 -0
  174. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/messages/conversion/__init__.py +0 -0
  175. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/messages/conversion/alpaca.py +0 -0
  176. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/messages/conversion/conversation_models.py +0 -0
  177. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/messages/conversion/sharegpt/__init__.py +0 -0
  178. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/messages/conversion/sharegpt/function_call_formatter.py +0 -0
  179. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/messages/conversion/sharegpt/hermes/__init__.py +0 -0
  180. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/messages/conversion/sharegpt/hermes/hermes_function_formatter.py +0 -0
  181. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/messages/func_message.py +0 -0
  182. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/models/__init__.py +0 -0
  183. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/models/_utils.py +0 -0
  184. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/models/aiml_model.py +0 -0
  185. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/models/anthropic_model.py +0 -0
  186. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/models/aws_bedrock_model.py +0 -0
  187. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/models/azure_openai_model.py +0 -0
  188. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/models/base_audio_model.py +0 -0
  189. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/models/base_model.py +0 -0
  190. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/models/cohere_model.py +0 -0
  191. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/models/crynux_model.py +0 -0
  192. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/models/deepseek_model.py +0 -0
  193. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/models/fish_audio_model.py +0 -0
  194. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/models/gemini_model.py +0 -0
  195. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/models/groq_model.py +0 -0
  196. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/models/internlm_model.py +0 -0
  197. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/models/litellm_model.py +0 -0
  198. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/models/lmstudio_model.py +0 -0
  199. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/models/mistral_model.py +0 -0
  200. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/models/model_factory.py +0 -0
  201. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/models/model_manager.py +0 -0
  202. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/models/modelscope_model.py +0 -0
  203. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/models/moonshot_model.py +0 -0
  204. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/models/nemotron_model.py +0 -0
  205. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/models/netmind_model.py +0 -0
  206. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/models/novita_model.py +0 -0
  207. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/models/nvidia_model.py +0 -0
  208. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/models/ollama_model.py +0 -0
  209. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/models/openai_audio_models.py +0 -0
  210. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/models/openai_compatible_model.py +0 -0
  211. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/models/openai_model.py +0 -0
  212. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/models/openrouter_model.py +0 -0
  213. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/models/ppio_model.py +0 -0
  214. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/models/qianfan_model.py +0 -0
  215. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/models/qwen_model.py +0 -0
  216. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/models/reka_model.py +0 -0
  217. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/models/reward/__init__.py +0 -0
  218. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/models/reward/base_reward_model.py +0 -0
  219. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/models/reward/evaluator.py +0 -0
  220. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/models/reward/nemotron_model.py +0 -0
  221. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/models/reward/skywork_model.py +0 -0
  222. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/models/samba_model.py +0 -0
  223. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/models/sglang_model.py +0 -0
  224. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/models/siliconflow_model.py +0 -0
  225. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/models/stub_model.py +0 -0
  226. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/models/togetherai_model.py +0 -0
  227. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/models/vllm_model.py +0 -0
  228. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/models/volcano_model.py +0 -0
  229. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/models/watsonx_model.py +0 -0
  230. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/models/yi_model.py +0 -0
  231. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/models/zhipuai_model.py +0 -0
  232. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/personas/__init__.py +0 -0
  233. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/personas/persona.py +0 -0
  234. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/personas/persona_hub.py +0 -0
  235. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/prompts/__init__.py +0 -0
  236. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/prompts/ai_society.py +0 -0
  237. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/prompts/base.py +0 -0
  238. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/prompts/code.py +0 -0
  239. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/prompts/evaluation.py +0 -0
  240. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/prompts/generate_text_embedding_data.py +0 -0
  241. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/prompts/image_craft.py +0 -0
  242. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/prompts/misalignment.py +0 -0
  243. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/prompts/multi_condition_image_craft.py +0 -0
  244. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/prompts/object_recognition.py +0 -0
  245. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/prompts/persona_hub.py +0 -0
  246. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/prompts/prompt_templates.py +0 -0
  247. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/prompts/role_description_prompt_template.py +0 -0
  248. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/prompts/solution_extraction.py +0 -0
  249. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/prompts/task_prompt_template.py +0 -0
  250. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/prompts/translation.py +0 -0
  251. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/prompts/video_description_prompt.py +0 -0
  252. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/py.typed +0 -0
  253. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/responses/__init__.py +0 -0
  254. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/responses/agent_responses.py +0 -0
  255. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/retrievers/__init__.py +0 -0
  256. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/retrievers/auto_retriever.py +0 -0
  257. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/retrievers/base.py +0 -0
  258. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/retrievers/bm25_retriever.py +0 -0
  259. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/retrievers/cohere_rerank_retriever.py +0 -0
  260. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/retrievers/hybrid_retrival.py +0 -0
  261. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/retrievers/vector_retriever.py +0 -0
  262. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/runtimes/__init__.py +0 -0
  263. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/runtimes/api.py +0 -0
  264. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/runtimes/base.py +0 -0
  265. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/runtimes/configs.py +0 -0
  266. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/runtimes/daytona_runtime.py +0 -0
  267. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/runtimes/docker_runtime.py +0 -0
  268. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/runtimes/llm_guard_runtime.py +0 -0
  269. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/runtimes/remote_http_runtime.py +0 -0
  270. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/runtimes/ubuntu_docker_runtime.py +0 -0
  271. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/runtimes/utils/__init__.py +0 -0
  272. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/runtimes/utils/function_risk_toolkit.py +0 -0
  273. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/runtimes/utils/ignore_risk_toolkit.py +0 -0
  274. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/schemas/__init__.py +0 -0
  275. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/schemas/base.py +0 -0
  276. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/schemas/openai_converter.py +0 -0
  277. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/schemas/outlines_converter.py +0 -0
  278. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/services/agent_openapi_server.py +0 -0
  279. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/societies/babyagi_playing.py +0 -0
  280. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/societies/role_playing.py +0 -0
  281. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/societies/workforce/__init__.py +0 -0
  282. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/societies/workforce/base.py +0 -0
  283. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/societies/workforce/prompts.py +0 -0
  284. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/societies/workforce/role_playing_worker.py +0 -0
  285. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/societies/workforce/single_agent_worker.py +0 -0
  286. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/societies/workforce/structured_output_handler.py +0 -0
  287. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/societies/workforce/task_channel.py +0 -0
  288. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/societies/workforce/utils.py +0 -0
  289. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/societies/workforce/worker.py +0 -0
  290. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/societies/workforce/workforce.py +0 -0
  291. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/societies/workforce/workforce_logger.py +0 -0
  292. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/storages/__init__.py +0 -0
  293. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/storages/graph_storages/__init__.py +0 -0
  294. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/storages/graph_storages/base.py +0 -0
  295. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/storages/graph_storages/graph_element.py +0 -0
  296. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/storages/graph_storages/nebula_graph.py +0 -0
  297. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/storages/graph_storages/neo4j_graph.py +0 -0
  298. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/storages/key_value_storages/__init__.py +0 -0
  299. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/storages/key_value_storages/base.py +0 -0
  300. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/storages/key_value_storages/in_memory.py +0 -0
  301. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/storages/key_value_storages/json.py +0 -0
  302. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/storages/key_value_storages/mem0_cloud.py +0 -0
  303. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/storages/key_value_storages/redis.py +0 -0
  304. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/storages/object_storages/__init__.py +0 -0
  305. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/storages/object_storages/amazon_s3.py +0 -0
  306. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/storages/object_storages/azure_blob.py +0 -0
  307. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/storages/object_storages/base.py +0 -0
  308. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/storages/object_storages/google_cloud.py +0 -0
  309. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/storages/vectordb_storages/__init__.py +0 -0
  310. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/storages/vectordb_storages/base.py +0 -0
  311. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/storages/vectordb_storages/chroma.py +0 -0
  312. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/storages/vectordb_storages/faiss.py +0 -0
  313. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/storages/vectordb_storages/milvus.py +0 -0
  314. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/storages/vectordb_storages/oceanbase.py +0 -0
  315. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/storages/vectordb_storages/pgvector.py +0 -0
  316. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/storages/vectordb_storages/qdrant.py +0 -0
  317. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/storages/vectordb_storages/surreal.py +0 -0
  318. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/storages/vectordb_storages/tidb.py +0 -0
  319. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/storages/vectordb_storages/weaviate.py +0 -0
  320. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/tasks/__init__.py +0 -0
  321. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/tasks/task.py +0 -0
  322. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/tasks/task_prompt.py +0 -0
  323. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/terminators/__init__.py +0 -0
  324. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/terminators/base.py +0 -0
  325. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/terminators/response_terminator.py +0 -0
  326. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/terminators/token_limit_terminator.py +0 -0
  327. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/toolkits/__init__.py +0 -0
  328. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/toolkits/aci_toolkit.py +0 -0
  329. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/toolkits/arxiv_toolkit.py +0 -0
  330. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/toolkits/ask_news_toolkit.py +0 -0
  331. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/toolkits/async_browser_toolkit.py +0 -0
  332. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/toolkits/audio_analysis_toolkit.py +0 -0
  333. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/toolkits/base.py +0 -0
  334. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/toolkits/bohrium_toolkit.py +0 -0
  335. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/toolkits/browser_toolkit.py +0 -0
  336. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/toolkits/browser_toolkit_commons.py +0 -0
  337. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/toolkits/code_execution.py +0 -0
  338. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/toolkits/craw4ai_toolkit.py +0 -0
  339. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/toolkits/dappier_toolkit.py +0 -0
  340. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/toolkits/data_commons_toolkit.py +0 -0
  341. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/toolkits/edgeone_pages_mcp_toolkit.py +0 -0
  342. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/toolkits/excel_toolkit.py +0 -0
  343. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/toolkits/file_write_toolkit.py +0 -0
  344. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/toolkits/function_tool.py +0 -0
  345. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/toolkits/github_toolkit.py +0 -0
  346. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/toolkits/google_calendar_toolkit.py +0 -0
  347. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/toolkits/google_drive_mcp_toolkit.py +0 -0
  348. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/toolkits/google_maps_toolkit.py +0 -0
  349. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/toolkits/google_scholar_toolkit.py +0 -0
  350. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/toolkits/human_toolkit.py +0 -0
  351. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/toolkits/hybrid_browser_toolkit/__init__.py +0 -0
  352. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/toolkits/hybrid_browser_toolkit/config_loader.py +0 -0
  353. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/toolkits/hybrid_browser_toolkit/hybrid_browser_toolkit.py +0 -0
  354. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/toolkits/hybrid_browser_toolkit/hybrid_browser_toolkit_ts.py +0 -0
  355. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/toolkits/hybrid_browser_toolkit/ts/package-lock.json +0 -0
  356. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/toolkits/hybrid_browser_toolkit/ts/package.json +0 -0
  357. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/toolkits/hybrid_browser_toolkit/ts/src/browser-scripts.js +0 -0
  358. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/toolkits/hybrid_browser_toolkit/ts/src/browser-session.ts +0 -0
  359. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/toolkits/hybrid_browser_toolkit/ts/src/config-loader.ts +0 -0
  360. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/toolkits/hybrid_browser_toolkit/ts/src/hybrid-browser-toolkit.ts +0 -0
  361. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/toolkits/hybrid_browser_toolkit/ts/src/index.ts +0 -0
  362. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/toolkits/hybrid_browser_toolkit/ts/src/types.ts +0 -0
  363. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/toolkits/hybrid_browser_toolkit/ts/tsconfig.json +0 -0
  364. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/toolkits/hybrid_browser_toolkit/ts/websocket-server.js +0 -0
  365. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/toolkits/hybrid_browser_toolkit/ws_wrapper.py +0 -0
  366. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/toolkits/hybrid_browser_toolkit_py/__init__.py +0 -0
  367. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/toolkits/hybrid_browser_toolkit_py/actions.py +0 -0
  368. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/toolkits/hybrid_browser_toolkit_py/agent.py +0 -0
  369. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/toolkits/hybrid_browser_toolkit_py/browser_session.py +0 -0
  370. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/toolkits/hybrid_browser_toolkit_py/config_loader.py +0 -0
  371. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/toolkits/hybrid_browser_toolkit_py/hybrid_browser_toolkit.py +0 -0
  372. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/toolkits/hybrid_browser_toolkit_py/snapshot.py +0 -0
  373. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/toolkits/hybrid_browser_toolkit_py/stealth_script.js +0 -0
  374. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/toolkits/hybrid_browser_toolkit_py/unified_analyzer.js +0 -0
  375. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/toolkits/image_analysis_toolkit.py +0 -0
  376. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/toolkits/jina_reranker_toolkit.py +0 -0
  377. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/toolkits/klavis_toolkit.py +0 -0
  378. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/toolkits/linkedin_toolkit.py +0 -0
  379. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/toolkits/markitdown_toolkit.py +0 -0
  380. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/toolkits/math_toolkit.py +0 -0
  381. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/toolkits/memory_toolkit.py +0 -0
  382. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/toolkits/meshy_toolkit.py +0 -0
  383. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/toolkits/message_agent_toolkit.py +0 -0
  384. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/toolkits/message_integration.py +0 -0
  385. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/toolkits/mineru_toolkit.py +0 -0
  386. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/toolkits/networkx_toolkit.py +0 -0
  387. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/toolkits/note_taking_toolkit.py +0 -0
  388. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/toolkits/notion_mcp_toolkit.py +0 -0
  389. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/toolkits/notion_toolkit.py +0 -0
  390. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/toolkits/open_api_specs/biztoc/__init__.py +0 -0
  391. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/toolkits/open_api_specs/biztoc/ai-plugin.json +0 -0
  392. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/toolkits/open_api_specs/biztoc/openapi.yaml +0 -0
  393. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/toolkits/open_api_specs/coursera/__init__.py +0 -0
  394. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/toolkits/open_api_specs/coursera/openapi.yaml +0 -0
  395. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/toolkits/open_api_specs/create_qr_code/__init__.py +0 -0
  396. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/toolkits/open_api_specs/create_qr_code/openapi.yaml +0 -0
  397. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/toolkits/open_api_specs/klarna/__init__.py +0 -0
  398. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/toolkits/open_api_specs/klarna/openapi.yaml +0 -0
  399. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/toolkits/open_api_specs/nasa_apod/__init__.py +0 -0
  400. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/toolkits/open_api_specs/nasa_apod/openapi.yaml +0 -0
  401. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/toolkits/open_api_specs/outschool/__init__.py +0 -0
  402. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/toolkits/open_api_specs/outschool/ai-plugin.json +0 -0
  403. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/toolkits/open_api_specs/outschool/openapi.yaml +0 -0
  404. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/toolkits/open_api_specs/outschool/paths/__init__.py +0 -0
  405. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/toolkits/open_api_specs/outschool/paths/get_classes.py +0 -0
  406. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/toolkits/open_api_specs/outschool/paths/search_teachers.py +0 -0
  407. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/toolkits/open_api_specs/security_config.py +0 -0
  408. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/toolkits/open_api_specs/speak/__init__.py +0 -0
  409. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/toolkits/open_api_specs/speak/openapi.yaml +0 -0
  410. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/toolkits/open_api_specs/web_scraper/__init__.py +0 -0
  411. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/toolkits/open_api_specs/web_scraper/ai-plugin.json +0 -0
  412. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/toolkits/open_api_specs/web_scraper/openapi.yaml +0 -0
  413. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/toolkits/open_api_specs/web_scraper/paths/__init__.py +0 -0
  414. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/toolkits/open_api_specs/web_scraper/paths/scraper.py +0 -0
  415. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/toolkits/open_api_toolkit.py +0 -0
  416. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/toolkits/openai_agent_toolkit.py +0 -0
  417. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/toolkits/openai_image_toolkit.py +0 -0
  418. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/toolkits/openbb_toolkit.py +0 -0
  419. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/toolkits/origene_mcp_toolkit.py +0 -0
  420. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/toolkits/page_script.js +0 -0
  421. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/toolkits/playwright_mcp_toolkit.py +0 -0
  422. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/toolkits/pptx_toolkit.py +0 -0
  423. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/toolkits/pubmed_toolkit.py +0 -0
  424. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/toolkits/pulse_mcp_search_toolkit.py +0 -0
  425. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/toolkits/pyautogui_toolkit.py +0 -0
  426. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/toolkits/reddit_toolkit.py +0 -0
  427. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/toolkits/retrieval_toolkit.py +0 -0
  428. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/toolkits/screenshot_toolkit.py +0 -0
  429. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/toolkits/search_toolkit.py +0 -0
  430. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/toolkits/searxng_toolkit.py +0 -0
  431. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/toolkits/semantic_scholar_toolkit.py +0 -0
  432. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/toolkits/slack_toolkit.py +0 -0
  433. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/toolkits/stripe_toolkit.py +0 -0
  434. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/toolkits/sympy_toolkit.py +0 -0
  435. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/toolkits/task_planning_toolkit.py +0 -0
  436. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/toolkits/thinking_toolkit.py +0 -0
  437. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/toolkits/twitter_toolkit.py +0 -0
  438. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/toolkits/video_analysis_toolkit.py +0 -0
  439. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/toolkits/video_download_toolkit.py +0 -0
  440. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/toolkits/weather_toolkit.py +0 -0
  441. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/toolkits/web_deploy_toolkit.py +0 -0
  442. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/toolkits/whatsapp_toolkit.py +0 -0
  443. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/toolkits/wolfram_alpha_toolkit.py +0 -0
  444. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/toolkits/zapier_toolkit.py +0 -0
  445. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/types/__init__.py +0 -0
  446. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/types/agents/__init__.py +0 -0
  447. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/types/agents/tool_calling_record.py +0 -0
  448. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/types/enums.py +0 -0
  449. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/types/mcp_registries.py +0 -0
  450. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/types/openai_types.py +0 -0
  451. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/types/unified_model_type.py +0 -0
  452. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/utils/__init__.py +0 -0
  453. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/utils/async_func.py +0 -0
  454. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/utils/chunker/__init__.py +0 -0
  455. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/utils/chunker/base.py +0 -0
  456. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/utils/chunker/code_chunker.py +0 -0
  457. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/utils/chunker/uio_chunker.py +0 -0
  458. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/utils/commons.py +0 -0
  459. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/utils/constants.py +0 -0
  460. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/utils/deduplication.py +0 -0
  461. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/utils/filename.py +0 -0
  462. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/utils/langfuse.py +0 -0
  463. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/utils/mcp.py +0 -0
  464. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/utils/mcp_client.py +0 -0
  465. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/utils/message_summarizer.py +0 -0
  466. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/utils/response_format.py +0 -0
  467. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/utils/token_counting.py +0 -0
  468. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/utils/tool_result.py +0 -0
  469. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/verifiers/__init__.py +0 -0
  470. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/verifiers/base.py +0 -0
  471. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/verifiers/math_verifier.py +0 -0
  472. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/verifiers/models.py +0 -0
  473. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/verifiers/physics_verifier.py +0 -0
  474. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/camel/verifiers/python_verifier.py +0 -0
  475. {camel_ai-0.2.73a5 → camel_ai-0.2.73a8}/hatch_build_npm.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: camel-ai
3
- Version: 0.2.73a5
3
+ Version: 0.2.73a8
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
@@ -82,7 +82,7 @@ Requires-Dist: networkx<4,>=3.4.2; extra == 'all'
82
82
  Requires-Dist: newspaper3k<0.3,>=0.2.8; extra == 'all'
83
83
  Requires-Dist: notion-client<3,>=2.2.1; extra == 'all'
84
84
  Requires-Dist: numpy<=2.2,>=1.2; extra == 'all'
85
- Requires-Dist: onnxruntime<=1.20.1; extra == 'all'
85
+ Requires-Dist: onnxruntime<=1.19.2; extra == 'all'
86
86
  Requires-Dist: openapi-spec-validator<0.8,>=0.7.1; extra == 'all'
87
87
  Requires-Dist: openpyxl>=3.1.5; extra == 'all'
88
88
  Requires-Dist: pandas<2,>=1.5.3; extra == 'all'
@@ -213,7 +213,7 @@ Requires-Dist: docx2txt<0.9,>=0.8; extra == 'document-tools'
213
213
  Requires-Dist: docx>=0.2.4; extra == 'document-tools'
214
214
  Requires-Dist: markitdown>=0.1.1; extra == 'document-tools'
215
215
  Requires-Dist: numpy<=2.2,>=1.2; extra == 'document-tools'
216
- Requires-Dist: onnxruntime<=1.20.1; extra == 'document-tools'
216
+ Requires-Dist: onnxruntime<=1.19.2; extra == 'document-tools'
217
217
  Requires-Dist: openapi-spec-validator<0.8,>=0.7.1; extra == 'document-tools'
218
218
  Requires-Dist: openpyxl>=3.1.5; extra == 'document-tools'
219
219
  Requires-Dist: pandasai<3,>=2.3.0; extra == 'document-tools'
@@ -268,7 +268,7 @@ Requires-Dist: mcp-server-fetch==2025.1.17; extra == 'owl'
268
268
  Requires-Dist: mcp-simple-arxiv==0.2.2; extra == 'owl'
269
269
  Requires-Dist: newspaper3k<0.3,>=0.2.8; extra == 'owl'
270
270
  Requires-Dist: numpy<=2.2,>=1.2; extra == 'owl'
271
- Requires-Dist: onnxruntime<=1.20.1; extra == 'owl'
271
+ Requires-Dist: onnxruntime<=1.19.2; extra == 'owl'
272
272
  Requires-Dist: openapi-spec-validator<0.8,>=0.7.1; extra == 'owl'
273
273
  Requires-Dist: openpyxl>=3.1.5; extra == 'owl'
274
274
  Requires-Dist: pandas<2,>=1.5.3; extra == 'owl'
@@ -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.73a5'
17
+ __version__ = '0.2.73a8'
18
18
 
19
19
  __all__ = [
20
20
  '__version__',
@@ -2798,12 +2798,7 @@ class ChatAgent(BaseAgent):
2798
2798
  )
2799
2799
  thread = threading.Thread(
2800
2800
  target=tool_worker,
2801
- args=(
2802
- self._internal_tools[function_name],
2803
- args,
2804
- result_queue,
2805
- tool_call_data,
2806
- ),
2801
+ args=(result_queue, tool_call_data),
2807
2802
  )
2808
2803
  thread.start()
2809
2804
 
@@ -13,8 +13,10 @@
13
13
  # ========= Copyright 2023-2024 @ CAMEL-AI.org. All Rights Reserved. =========
14
14
  from .babyagi_playing import BabyAGI
15
15
  from .role_playing import RolePlaying
16
+ from .workforce import Workforce
16
17
 
17
18
  __all__ = [
18
19
  'RolePlaying',
19
20
  'BabyAGI',
21
+ 'Workforce',
20
22
  ]
@@ -14,6 +14,7 @@
14
14
 
15
15
  import json
16
16
  import os
17
+ import warnings
17
18
  from contextlib import AsyncExitStack
18
19
  from typing import Any, Dict, List, Optional
19
20
 
@@ -24,6 +25,11 @@ from camel.utils.mcp_client import MCPClient, create_mcp_client
24
25
 
25
26
  logger = get_logger(__name__)
26
27
 
28
+ # Suppress parameter description warnings for MCP tools
29
+ warnings.filterwarnings(
30
+ "ignore", message="Parameter description is missing", category=UserWarning
31
+ )
32
+
27
33
 
28
34
  class MCPConnectionError(Exception):
29
35
  r"""Raised when MCP connection fails."""
@@ -446,7 +452,7 @@ class MCPToolkit(BaseToolkit):
446
452
 
447
453
  def _ensure_strict_tool_schema(self, tool: FunctionTool) -> FunctionTool:
448
454
  r"""Ensure a tool has a strict schema compatible with OpenAI's
449
- requirements.
455
+ requirements according to the structured outputs specification.
450
456
 
451
457
  Args:
452
458
  tool (FunctionTool): The tool to check and update if necessary.
@@ -457,60 +463,333 @@ class MCPToolkit(BaseToolkit):
457
463
  try:
458
464
  schema = tool.get_openai_tool_schema()
459
465
 
460
- # Check if any object in the schema has additionalProperties: true
461
- def _has_additional_properties_true(obj):
462
- r"""Recursively check if any object has additionalProperties: true""" # noqa: E501
466
+ # Helper functions for validation and transformation
467
+ def _validate_and_fix_schema(obj, path="", in_root=True):
468
+ r"""Recursively validate and fix schema to meet strict
469
+ requirements.
470
+ """
463
471
  if isinstance(obj, dict):
464
- if obj.get("additionalProperties") is True:
465
- return True
466
- for value in obj.values():
467
- if _has_additional_properties_true(value):
468
- return True
472
+ # Check if this is the root object
473
+ if in_root and path == "":
474
+ # Root must be an object, not anyOf
475
+ if "anyOf" in obj and "type" not in obj:
476
+ raise ValueError(
477
+ "Root object must not be anyOf and must "
478
+ "be an object"
479
+ )
480
+ if obj.get("type") and obj["type"] != "object":
481
+ raise ValueError(
482
+ "Root object must have type 'object'"
483
+ )
484
+
485
+ # Handle object types
486
+ if obj.get("type") == "object":
487
+ # Ensure additionalProperties is false
488
+ obj["additionalProperties"] = False
489
+
490
+ # Process properties
491
+ if "properties" in obj:
492
+ props = obj["properties"]
493
+ # Only set required if it doesn't exist or needs
494
+ # updating
495
+ if "required" not in obj:
496
+ # If no required field exists, make all fields
497
+ # required
498
+ obj["required"] = list(props.keys())
499
+ else:
500
+ # Ensure required field only contains valid
501
+ # property names
502
+ existing_required = obj.get("required", [])
503
+ valid_required = [
504
+ req
505
+ for req in existing_required
506
+ if req in props
507
+ ]
508
+ # Add any missing properties to required
509
+ for prop_name in props:
510
+ if prop_name not in valid_required:
511
+ valid_required.append(prop_name)
512
+ obj["required"] = valid_required
513
+
514
+ # Recursively process each property
515
+ for prop_name, prop_schema in props.items():
516
+ _validate_and_fix_schema(
517
+ prop_schema, f"{path}.{prop_name}", False
518
+ )
519
+
520
+ # Handle arrays
521
+ elif obj.get("type") == "array":
522
+ if "items" in obj:
523
+ _validate_and_fix_schema(
524
+ obj["items"], f"{path}.items", False
525
+ )
526
+
527
+ # Handle anyOf
528
+ elif "anyOf" in obj:
529
+ # Validate anyOf schemas
530
+ for i, schema in enumerate(obj["anyOf"]):
531
+ _validate_and_fix_schema(
532
+ schema, f"{path}.anyOf[{i}]", False
533
+ )
534
+
535
+ # Handle string format validation
536
+ elif obj.get("type") == "string":
537
+ if "format" in obj:
538
+ allowed_formats = [
539
+ "date-time",
540
+ "time",
541
+ "date",
542
+ "duration",
543
+ "email",
544
+ "hostname",
545
+ "ipv4",
546
+ "ipv6",
547
+ "uuid",
548
+ ]
549
+ if obj["format"] not in allowed_formats:
550
+ del obj["format"] # Remove unsupported format
551
+
552
+ # Handle number/integer validation
553
+ elif obj.get("type") in ["number", "integer"]:
554
+ # These properties are supported
555
+ supported_props = [
556
+ "multipleOf",
557
+ "maximum",
558
+ "exclusiveMaximum",
559
+ "minimum",
560
+ "exclusiveMinimum",
561
+ ]
562
+ # Remove any unsupported properties
563
+ for key in list(obj.keys()):
564
+ if key not in [
565
+ *supported_props,
566
+ "type",
567
+ "description",
568
+ "default",
569
+ ]:
570
+ del obj[key]
571
+
572
+ # Process nested structures
573
+ for key in ["allOf", "oneOf", "$defs", "definitions"]:
574
+ if key in obj:
575
+ if isinstance(obj[key], list):
576
+ for i, item in enumerate(obj[key]):
577
+ _validate_and_fix_schema(
578
+ item, f"{path}.{key}[{i}]", False
579
+ )
580
+ elif isinstance(obj[key], dict):
581
+ for def_name, def_schema in obj[key].items():
582
+ _validate_and_fix_schema(
583
+ def_schema,
584
+ f"{path}.{key}.{def_name}",
585
+ False,
586
+ )
587
+
469
588
  elif isinstance(obj, list):
470
- for item in obj:
471
- if _has_additional_properties_true(item):
472
- return True
473
- return False
474
-
475
- # FIRST: Check if the schema contains additionalProperties: true
476
- # This must be checked before strict mode validation
477
- if _has_additional_properties_true(schema):
478
- # Force strict mode to False and log warning
479
- if "function" in schema:
480
- schema["function"]["strict"] = False
481
- tool.set_openai_tool_schema(schema)
482
- logger.warning(
483
- f"Tool '{tool.get_function_name()}' contains "
484
- f"additionalProperties: true which is incompatible with "
485
- f"OpenAI strict mode. Setting strict=False for this tool."
486
- )
487
- return tool
589
+ for i, item in enumerate(obj):
590
+ _validate_and_fix_schema(item, f"{path}[{i}]", False)
591
+
592
+ def _check_schema_limits(obj, counts=None):
593
+ r"""Check if schema exceeds OpenAI limits."""
594
+ if counts is None:
595
+ counts = {
596
+ "properties": 0,
597
+ "depth": 0,
598
+ "enums": 0,
599
+ "string_length": 0,
600
+ }
601
+
602
+ def _count_properties(o, depth=0):
603
+ if isinstance(o, dict):
604
+ if depth > 5:
605
+ raise ValueError(
606
+ "Schema exceeds maximum nesting depth of 5"
607
+ )
608
+
609
+ if o.get("type") == "object" and "properties" in o:
610
+ counts["properties"] += len(o["properties"])
611
+ for prop in o["properties"].values():
612
+ _count_properties(prop, depth + 1)
613
+
614
+ if "enum" in o:
615
+ counts["enums"] += len(o["enum"])
616
+ if isinstance(o["enum"], list):
617
+ for val in o["enum"]:
618
+ if isinstance(val, str):
619
+ counts["string_length"] += len(val)
620
+
621
+ # Count property names
622
+ if "properties" in o:
623
+ for name in o["properties"].keys():
624
+ counts["string_length"] += len(name)
625
+
626
+ # Process nested structures
627
+ for key in ["items", "allOf", "oneOf", "anyOf"]:
628
+ if key in o:
629
+ if isinstance(o[key], dict):
630
+ _count_properties(o[key], depth)
631
+ elif isinstance(o[key], list):
632
+ for item in o[key]:
633
+ _count_properties(item, depth)
634
+
635
+ _count_properties(obj)
636
+
637
+ # Check limits, reference: https://platform.openai.com/docs/guides/structured-outputs?api-mode=responses#objects-have-limitations-on-nesting-depth-and-size # noqa: E501
638
+ if counts["properties"] > 5000:
639
+ raise ValueError(
640
+ "Schema exceeds maximum of 5000 properties"
641
+ )
642
+ if counts["enums"] > 1000:
643
+ raise ValueError(
644
+ "Schema exceeds maximum of 1000 enum values"
645
+ )
646
+ if counts["string_length"] > 120000:
647
+ raise ValueError(
648
+ "Schema exceeds maximum total string length of 120000"
649
+ )
488
650
 
489
- # SECOND: Check if the tool already has strict mode enabled
490
- # Only do this if there are no additionalProperties conflicts
651
+ return True
652
+
653
+ # Check if schema has any issues that prevent strict mode
654
+ def _has_strict_mode_issues(obj):
655
+ r"""Check for any issues that would prevent strict mode."""
656
+ issues = []
657
+
658
+ def _check_issues(o, path=""):
659
+ if isinstance(o, dict):
660
+ # Check for additionalProperties: true
661
+ if o.get("additionalProperties") is True:
662
+ issues.append(
663
+ f"additionalProperties: true at {path}"
664
+ )
665
+
666
+ # Check for unsupported keywords
667
+ unsupported = [
668
+ "not",
669
+ "dependentRequired",
670
+ "dependentSchemas",
671
+ "if",
672
+ "then",
673
+ "else",
674
+ "patternProperties",
675
+ ]
676
+ for keyword in unsupported:
677
+ if keyword in o:
678
+ issues.append(
679
+ f"Unsupported keyword '{keyword}' "
680
+ f"at {path}"
681
+ )
682
+
683
+ # Recursively check
684
+ for key, value in o.items():
685
+ if isinstance(value, (dict, list)):
686
+ _check_issues(value, f"{path}.{key}")
687
+
688
+ elif isinstance(o, list):
689
+ for i, item in enumerate(o):
690
+ _check_issues(item, f"{path}[{i}]")
691
+
692
+ _check_issues(obj)
693
+ return issues
694
+
695
+ # Check if already strict and compliant
491
696
  if schema.get("function", {}).get("strict") is True:
492
- return tool
493
-
494
- # Update the schema to be strict
697
+ # Validate it's actually compliant
698
+ try:
699
+ params = schema["function"].get("parameters", {})
700
+ if params:
701
+ _validate_and_fix_schema(params)
702
+ _check_schema_limits(params)
703
+ return tool
704
+ except Exception:
705
+ # Not actually compliant, continue to fix it
706
+ pass
707
+
708
+ # Apply sanitization first to handle optional fields properly
495
709
  if "function" in schema:
710
+ # Apply the sanitization function first
711
+ from camel.toolkits.function_tool import (
712
+ sanitize_and_enforce_required,
713
+ )
714
+
715
+ schema = sanitize_and_enforce_required(schema)
716
+
717
+ # Special handling for schemas with additionalProperties that
718
+ # aren't false These can't use strict mode
719
+ def _has_open_props(obj, path=""):
720
+ """Check if any object has additionalProperties that
721
+ isn't false."""
722
+ if isinstance(obj, dict):
723
+ if (
724
+ obj.get("type") == "object"
725
+ and "additionalProperties" in obj
726
+ ):
727
+ if obj["additionalProperties"] is not False:
728
+ return True
729
+
730
+ # Recurse through the schema
731
+ for key, value in obj.items():
732
+ if key in [
733
+ "properties",
734
+ "items",
735
+ "allOf",
736
+ "oneOf",
737
+ "anyOf",
738
+ ]:
739
+ if isinstance(value, dict):
740
+ if _has_open_props(value, f"{path}.{key}"):
741
+ return True
742
+ elif isinstance(value, list):
743
+ for i, item in enumerate(value):
744
+ if _has_open_props(
745
+ item,
746
+ f"{path}.{key}[{i}]",
747
+ ):
748
+ return True
749
+ elif isinstance(value, dict) and key not in [
750
+ "description",
751
+ "type",
752
+ "enum",
753
+ ]:
754
+ if _has_open_props(value, f"{path}.{key}"):
755
+ return True
756
+ return False
757
+
758
+ # Check if schema has dynamic additionalProperties
759
+ if _has_open_props(schema["function"].get("parameters", {})):
760
+ # Can't use strict mode with dynamic additionalProperties
761
+ schema["function"]["strict"] = False
762
+ tool.set_openai_tool_schema(schema)
763
+ logger.warning(
764
+ f"Tool '{tool.get_function_name()}' has "
765
+ f"dynamic additionalProperties and cannot use "
766
+ f"strict mode"
767
+ )
768
+ return tool
769
+
770
+ # Now check for blocking issues after sanitization
771
+ issues = _has_strict_mode_issues(schema)
772
+ if issues:
773
+ # Can't use strict mode
774
+ schema["function"]["strict"] = False
775
+ tool.set_openai_tool_schema(schema)
776
+ logger.warning(
777
+ f"Tool '{tool.get_function_name()}' has "
778
+ f"issues preventing strict mode: "
779
+ f"{'; '.join(issues[:3])}{'...' if len(issues) > 3 else ''}" # noqa: E501
780
+ )
781
+ return tool
782
+
783
+ # Enable strict mode
496
784
  schema["function"]["strict"] = True
497
785
 
498
- # Ensure parameters have proper strict mode configuration
499
786
  parameters = schema["function"].get("parameters", {})
500
787
  if parameters:
501
- # Ensure additionalProperties is false
502
- parameters["additionalProperties"] = False
503
-
504
- # Process properties to handle optional fields
505
- properties = parameters.get("properties", {})
506
- parameters["required"] = list(properties.keys())
507
-
508
- # Apply the sanitization function from function_tool
509
- from camel.toolkits.function_tool import (
510
- sanitize_and_enforce_required,
511
- )
788
+ # Validate and fix the parameters schema
789
+ _validate_and_fix_schema(parameters)
512
790
 
513
- schema = sanitize_and_enforce_required(schema)
791
+ # Check schema limits
792
+ _check_schema_limits(parameters)
514
793
 
515
794
  tool.set_openai_tool_schema(schema)
516
795
  logger.debug(
@@ -518,7 +797,23 @@ class MCPToolkit(BaseToolkit):
518
797
  )
519
798
 
520
799
  except Exception as e:
521
- logger.warning(f"Failed to ensure strict schema for tool: {e}")
800
+ # If we can't make it strict, disable strict mode
801
+ try:
802
+ if "function" in schema:
803
+ schema["function"]["strict"] = False
804
+ tool.set_openai_tool_schema(schema)
805
+ logger.warning(
806
+ f"Failed to ensure strict schema for "
807
+ f"tool '{tool.get_function_name()}': {str(e)[:100]}. "
808
+ f"Setting strict=False."
809
+ )
810
+ except Exception as inner_e:
811
+ # If even setting strict=False fails, log the error
812
+ logger.error(
813
+ f"Critical error processing "
814
+ f"tool '{tool.get_function_name()}': {inner_e}. "
815
+ f"Tool may not function correctly."
816
+ )
522
817
 
523
818
  return tool
524
819