camel-ai 0.2.72a0__tar.gz → 0.2.72a2__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 (453) hide show
  1. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/PKG-INFO +1 -1
  2. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/__init__.py +1 -1
  3. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/societies/workforce/prompts.py +15 -11
  4. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/toolkits/terminal_toolkit.py +239 -16
  5. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/pyproject.toml +1 -1
  6. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/.gitignore +0 -0
  7. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/LICENSE +0 -0
  8. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/README.md +0 -0
  9. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/agents/__init__.py +0 -0
  10. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/agents/_types.py +0 -0
  11. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/agents/_utils.py +0 -0
  12. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/agents/base.py +0 -0
  13. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/agents/chat_agent.py +0 -0
  14. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/agents/critic_agent.py +0 -0
  15. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/agents/deductive_reasoner_agent.py +0 -0
  16. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/agents/embodied_agent.py +0 -0
  17. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/agents/knowledge_graph_agent.py +0 -0
  18. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/agents/mcp_agent.py +0 -0
  19. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/agents/multi_hop_generator_agent.py +0 -0
  20. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/agents/programmed_agent_instruction.py +0 -0
  21. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/agents/repo_agent.py +0 -0
  22. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/agents/role_assignment_agent.py +0 -0
  23. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/agents/search_agent.py +0 -0
  24. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/agents/task_agent.py +0 -0
  25. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/agents/tool_agents/__init__.py +0 -0
  26. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/agents/tool_agents/base.py +0 -0
  27. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/agents/tool_agents/hugging_face_tool_agent.py +0 -0
  28. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/benchmarks/__init__.py +0 -0
  29. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/benchmarks/apibank.py +0 -0
  30. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/benchmarks/apibench.py +0 -0
  31. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/benchmarks/base.py +0 -0
  32. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/benchmarks/browsecomp.py +0 -0
  33. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/benchmarks/gaia.py +0 -0
  34. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/benchmarks/mock_website/README.md +0 -0
  35. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/benchmarks/mock_website/mock_web.py +0 -0
  36. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/benchmarks/mock_website/requirements.txt +0 -0
  37. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/benchmarks/mock_website/shopping_mall/app.py +0 -0
  38. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/benchmarks/mock_website/task.json +0 -0
  39. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/benchmarks/nexus.py +0 -0
  40. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/benchmarks/ragbench.py +0 -0
  41. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/bots/__init__.py +0 -0
  42. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/bots/discord/__init__.py +0 -0
  43. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/bots/discord/discord_app.py +0 -0
  44. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/bots/discord/discord_installation.py +0 -0
  45. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/bots/discord/discord_store.py +0 -0
  46. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/bots/slack/__init__.py +0 -0
  47. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/bots/slack/models.py +0 -0
  48. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/bots/slack/slack_app.py +0 -0
  49. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/bots/telegram_bot.py +0 -0
  50. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/configs/__init__.py +0 -0
  51. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/configs/aiml_config.py +0 -0
  52. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/configs/anthropic_config.py +0 -0
  53. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/configs/base_config.py +0 -0
  54. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/configs/bedrock_config.py +0 -0
  55. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/configs/cohere_config.py +0 -0
  56. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/configs/crynux_config.py +0 -0
  57. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/configs/deepseek_config.py +0 -0
  58. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/configs/gemini_config.py +0 -0
  59. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/configs/groq_config.py +0 -0
  60. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/configs/internlm_config.py +0 -0
  61. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/configs/litellm_config.py +0 -0
  62. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/configs/lmstudio_config.py +0 -0
  63. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/configs/mistral_config.py +0 -0
  64. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/configs/modelscope_config.py +0 -0
  65. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/configs/moonshot_config.py +0 -0
  66. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/configs/netmind_config.py +0 -0
  67. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/configs/novita_config.py +0 -0
  68. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/configs/nvidia_config.py +0 -0
  69. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/configs/ollama_config.py +0 -0
  70. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/configs/openai_config.py +0 -0
  71. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/configs/openrouter_config.py +0 -0
  72. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/configs/ppio_config.py +0 -0
  73. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/configs/qianfan_config.py +0 -0
  74. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/configs/qwen_config.py +0 -0
  75. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/configs/reka_config.py +0 -0
  76. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/configs/samba_config.py +0 -0
  77. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/configs/sglang_config.py +0 -0
  78. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/configs/siliconflow_config.py +0 -0
  79. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/configs/togetherai_config.py +0 -0
  80. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/configs/vllm_config.py +0 -0
  81. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/configs/watsonx_config.py +0 -0
  82. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/configs/yi_config.py +0 -0
  83. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/configs/zhipuai_config.py +0 -0
  84. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/data_collectors/__init__.py +0 -0
  85. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/data_collectors/alpaca_collector.py +0 -0
  86. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/data_collectors/base.py +0 -0
  87. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/data_collectors/sharegpt_collector.py +0 -0
  88. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/datagen/__init__.py +0 -0
  89. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/datagen/cot_datagen.py +0 -0
  90. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/datagen/evol_instruct/__init__.py +0 -0
  91. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/datagen/evol_instruct/evol_instruct.py +0 -0
  92. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/datagen/evol_instruct/scorer.py +0 -0
  93. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/datagen/evol_instruct/templates.py +0 -0
  94. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/datagen/self_improving_cot.py +0 -0
  95. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/datagen/self_instruct/__init__.py +0 -0
  96. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/datagen/self_instruct/filter/__init__.py +0 -0
  97. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/datagen/self_instruct/filter/filter_function.py +0 -0
  98. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/datagen/self_instruct/filter/filter_registry.py +0 -0
  99. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/datagen/self_instruct/filter/instruction_filter.py +0 -0
  100. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/datagen/self_instruct/self_instruct.py +0 -0
  101. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/datagen/self_instruct/templates.py +0 -0
  102. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/datagen/source2synth/__init__.py +0 -0
  103. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/datagen/source2synth/data_processor.py +0 -0
  104. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/datagen/source2synth/models.py +0 -0
  105. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/datagen/source2synth/user_data_processor_config.py +0 -0
  106. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/datahubs/__init__.py +0 -0
  107. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/datahubs/base.py +0 -0
  108. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/datahubs/huggingface.py +0 -0
  109. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/datahubs/models.py +0 -0
  110. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/datasets/__init__.py +0 -0
  111. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/datasets/base_generator.py +0 -0
  112. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/datasets/few_shot_generator.py +0 -0
  113. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/datasets/models.py +0 -0
  114. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/datasets/self_instruct_generator.py +0 -0
  115. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/datasets/static_dataset.py +0 -0
  116. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/embeddings/__init__.py +0 -0
  117. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/embeddings/azure_embedding.py +0 -0
  118. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/embeddings/base.py +0 -0
  119. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/embeddings/gemini_embedding.py +0 -0
  120. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/embeddings/jina_embedding.py +0 -0
  121. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/embeddings/mistral_embedding.py +0 -0
  122. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/embeddings/openai_compatible_embedding.py +0 -0
  123. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/embeddings/openai_embedding.py +0 -0
  124. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/embeddings/sentence_transformers_embeddings.py +0 -0
  125. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/embeddings/together_embedding.py +0 -0
  126. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/embeddings/vlm_embedding.py +0 -0
  127. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/environments/__init__.py +0 -0
  128. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/environments/models.py +0 -0
  129. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/environments/multi_step.py +0 -0
  130. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/environments/rlcards_env.py +0 -0
  131. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/environments/single_step.py +0 -0
  132. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/environments/tic_tac_toe.py +0 -0
  133. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/extractors/__init__.py +0 -0
  134. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/extractors/base.py +0 -0
  135. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/extractors/python_strategies.py +0 -0
  136. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/generators.py +0 -0
  137. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/human.py +0 -0
  138. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/interpreters/__init__.py +0 -0
  139. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/interpreters/base.py +0 -0
  140. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/interpreters/docker/Dockerfile +0 -0
  141. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/interpreters/docker_interpreter.py +0 -0
  142. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/interpreters/e2b_interpreter.py +0 -0
  143. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/interpreters/internal_python_interpreter.py +0 -0
  144. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/interpreters/interpreter_error.py +0 -0
  145. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/interpreters/ipython_interpreter.py +0 -0
  146. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/interpreters/subprocess_interpreter.py +0 -0
  147. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/loaders/__init__.py +0 -0
  148. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/loaders/apify_reader.py +0 -0
  149. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/loaders/base_io.py +0 -0
  150. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/loaders/base_loader.py +0 -0
  151. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/loaders/chunkr_reader.py +0 -0
  152. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/loaders/crawl4ai_reader.py +0 -0
  153. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/loaders/firecrawl_reader.py +0 -0
  154. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/loaders/jina_url_reader.py +0 -0
  155. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/loaders/markitdown.py +0 -0
  156. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/loaders/mineru_extractor.py +0 -0
  157. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/loaders/mistral_reader.py +0 -0
  158. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/loaders/pandas_reader.py +0 -0
  159. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/loaders/scrapegraph_reader.py +0 -0
  160. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/loaders/unstructured_io.py +0 -0
  161. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/logger.py +0 -0
  162. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/memories/__init__.py +0 -0
  163. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/memories/agent_memories.py +0 -0
  164. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/memories/base.py +0 -0
  165. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/memories/blocks/__init__.py +0 -0
  166. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/memories/blocks/chat_history_block.py +0 -0
  167. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/memories/blocks/vectordb_block.py +0 -0
  168. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/memories/context_creators/__init__.py +0 -0
  169. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/memories/context_creators/score_based.py +0 -0
  170. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/memories/records.py +0 -0
  171. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/messages/__init__.py +0 -0
  172. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/messages/base.py +0 -0
  173. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/messages/conversion/__init__.py +0 -0
  174. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/messages/conversion/alpaca.py +0 -0
  175. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/messages/conversion/conversation_models.py +0 -0
  176. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/messages/conversion/sharegpt/__init__.py +0 -0
  177. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/messages/conversion/sharegpt/function_call_formatter.py +0 -0
  178. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/messages/conversion/sharegpt/hermes/__init__.py +0 -0
  179. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/messages/conversion/sharegpt/hermes/hermes_function_formatter.py +0 -0
  180. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/messages/func_message.py +0 -0
  181. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/models/__init__.py +0 -0
  182. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/models/_utils.py +0 -0
  183. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/models/aiml_model.py +0 -0
  184. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/models/anthropic_model.py +0 -0
  185. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/models/aws_bedrock_model.py +0 -0
  186. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/models/azure_openai_model.py +0 -0
  187. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/models/base_audio_model.py +0 -0
  188. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/models/base_model.py +0 -0
  189. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/models/cohere_model.py +0 -0
  190. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/models/crynux_model.py +0 -0
  191. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/models/deepseek_model.py +0 -0
  192. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/models/fish_audio_model.py +0 -0
  193. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/models/gemini_model.py +0 -0
  194. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/models/groq_model.py +0 -0
  195. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/models/internlm_model.py +0 -0
  196. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/models/litellm_model.py +0 -0
  197. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/models/lmstudio_model.py +0 -0
  198. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/models/mistral_model.py +0 -0
  199. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/models/model_factory.py +0 -0
  200. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/models/model_manager.py +0 -0
  201. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/models/modelscope_model.py +0 -0
  202. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/models/moonshot_model.py +0 -0
  203. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/models/nemotron_model.py +0 -0
  204. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/models/netmind_model.py +0 -0
  205. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/models/novita_model.py +0 -0
  206. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/models/nvidia_model.py +0 -0
  207. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/models/ollama_model.py +0 -0
  208. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/models/openai_audio_models.py +0 -0
  209. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/models/openai_compatible_model.py +0 -0
  210. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/models/openai_model.py +0 -0
  211. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/models/openrouter_model.py +0 -0
  212. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/models/ppio_model.py +0 -0
  213. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/models/qianfan_model.py +0 -0
  214. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/models/qwen_model.py +0 -0
  215. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/models/reka_model.py +0 -0
  216. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/models/reward/__init__.py +0 -0
  217. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/models/reward/base_reward_model.py +0 -0
  218. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/models/reward/evaluator.py +0 -0
  219. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/models/reward/nemotron_model.py +0 -0
  220. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/models/reward/skywork_model.py +0 -0
  221. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/models/samba_model.py +0 -0
  222. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/models/sglang_model.py +0 -0
  223. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/models/siliconflow_model.py +0 -0
  224. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/models/stub_model.py +0 -0
  225. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/models/togetherai_model.py +0 -0
  226. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/models/vllm_model.py +0 -0
  227. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/models/volcano_model.py +0 -0
  228. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/models/watsonx_model.py +0 -0
  229. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/models/yi_model.py +0 -0
  230. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/models/zhipuai_model.py +0 -0
  231. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/personas/__init__.py +0 -0
  232. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/personas/persona.py +0 -0
  233. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/personas/persona_hub.py +0 -0
  234. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/prompts/__init__.py +0 -0
  235. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/prompts/ai_society.py +0 -0
  236. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/prompts/base.py +0 -0
  237. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/prompts/code.py +0 -0
  238. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/prompts/evaluation.py +0 -0
  239. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/prompts/generate_text_embedding_data.py +0 -0
  240. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/prompts/image_craft.py +0 -0
  241. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/prompts/misalignment.py +0 -0
  242. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/prompts/multi_condition_image_craft.py +0 -0
  243. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/prompts/object_recognition.py +0 -0
  244. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/prompts/persona_hub.py +0 -0
  245. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/prompts/prompt_templates.py +0 -0
  246. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/prompts/role_description_prompt_template.py +0 -0
  247. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/prompts/solution_extraction.py +0 -0
  248. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/prompts/task_prompt_template.py +0 -0
  249. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/prompts/translation.py +0 -0
  250. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/prompts/video_description_prompt.py +0 -0
  251. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/py.typed +0 -0
  252. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/responses/__init__.py +0 -0
  253. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/responses/agent_responses.py +0 -0
  254. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/retrievers/__init__.py +0 -0
  255. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/retrievers/auto_retriever.py +0 -0
  256. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/retrievers/base.py +0 -0
  257. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/retrievers/bm25_retriever.py +0 -0
  258. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/retrievers/cohere_rerank_retriever.py +0 -0
  259. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/retrievers/hybrid_retrival.py +0 -0
  260. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/retrievers/vector_retriever.py +0 -0
  261. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/runtimes/__init__.py +0 -0
  262. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/runtimes/api.py +0 -0
  263. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/runtimes/base.py +0 -0
  264. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/runtimes/configs.py +0 -0
  265. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/runtimes/daytona_runtime.py +0 -0
  266. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/runtimes/docker_runtime.py +0 -0
  267. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/runtimes/llm_guard_runtime.py +0 -0
  268. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/runtimes/remote_http_runtime.py +0 -0
  269. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/runtimes/ubuntu_docker_runtime.py +0 -0
  270. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/runtimes/utils/__init__.py +0 -0
  271. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/runtimes/utils/function_risk_toolkit.py +0 -0
  272. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/runtimes/utils/ignore_risk_toolkit.py +0 -0
  273. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/schemas/__init__.py +0 -0
  274. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/schemas/base.py +0 -0
  275. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/schemas/openai_converter.py +0 -0
  276. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/schemas/outlines_converter.py +0 -0
  277. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/services/agent_openapi_server.py +0 -0
  278. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/societies/__init__.py +0 -0
  279. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/societies/babyagi_playing.py +0 -0
  280. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/societies/role_playing.py +0 -0
  281. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/societies/workforce/__init__.py +0 -0
  282. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/societies/workforce/base.py +0 -0
  283. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/societies/workforce/role_playing_worker.py +0 -0
  284. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/societies/workforce/single_agent_worker.py +2 -2
  285. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/societies/workforce/structured_output_handler.py +0 -0
  286. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/societies/workforce/task_channel.py +0 -0
  287. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/societies/workforce/utils.py +0 -0
  288. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/societies/workforce/worker.py +0 -0
  289. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/societies/workforce/workforce.py +0 -0
  290. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/societies/workforce/workforce_logger.py +0 -0
  291. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/storages/__init__.py +0 -0
  292. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/storages/graph_storages/__init__.py +0 -0
  293. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/storages/graph_storages/base.py +0 -0
  294. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/storages/graph_storages/graph_element.py +0 -0
  295. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/storages/graph_storages/nebula_graph.py +0 -0
  296. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/storages/graph_storages/neo4j_graph.py +0 -0
  297. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/storages/key_value_storages/__init__.py +0 -0
  298. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/storages/key_value_storages/base.py +0 -0
  299. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/storages/key_value_storages/in_memory.py +0 -0
  300. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/storages/key_value_storages/json.py +0 -0
  301. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/storages/key_value_storages/mem0_cloud.py +0 -0
  302. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/storages/key_value_storages/redis.py +0 -0
  303. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/storages/object_storages/__init__.py +0 -0
  304. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/storages/object_storages/amazon_s3.py +0 -0
  305. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/storages/object_storages/azure_blob.py +0 -0
  306. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/storages/object_storages/base.py +0 -0
  307. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/storages/object_storages/google_cloud.py +0 -0
  308. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/storages/vectordb_storages/__init__.py +0 -0
  309. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/storages/vectordb_storages/base.py +0 -0
  310. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/storages/vectordb_storages/chroma.py +0 -0
  311. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/storages/vectordb_storages/faiss.py +0 -0
  312. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/storages/vectordb_storages/milvus.py +0 -0
  313. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/storages/vectordb_storages/oceanbase.py +0 -0
  314. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/storages/vectordb_storages/pgvector.py +0 -0
  315. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/storages/vectordb_storages/qdrant.py +0 -0
  316. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/storages/vectordb_storages/tidb.py +0 -0
  317. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/storages/vectordb_storages/weaviate.py +0 -0
  318. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/tasks/__init__.py +0 -0
  319. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/tasks/task.py +0 -0
  320. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/tasks/task_prompt.py +0 -0
  321. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/terminators/__init__.py +0 -0
  322. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/terminators/base.py +0 -0
  323. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/terminators/response_terminator.py +0 -0
  324. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/terminators/token_limit_terminator.py +0 -0
  325. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/toolkits/__init__.py +0 -0
  326. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/toolkits/aci_toolkit.py +0 -0
  327. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/toolkits/arxiv_toolkit.py +0 -0
  328. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/toolkits/ask_news_toolkit.py +0 -0
  329. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/toolkits/async_browser_toolkit.py +0 -0
  330. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/toolkits/audio_analysis_toolkit.py +0 -0
  331. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/toolkits/base.py +0 -0
  332. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/toolkits/bohrium_toolkit.py +0 -0
  333. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/toolkits/browser_toolkit.py +0 -0
  334. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/toolkits/browser_toolkit_commons.py +0 -0
  335. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/toolkits/code_execution.py +0 -0
  336. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/toolkits/craw4ai_toolkit.py +0 -0
  337. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/toolkits/dappier_toolkit.py +0 -0
  338. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/toolkits/data_commons_toolkit.py +0 -0
  339. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/toolkits/edgeone_pages_mcp_toolkit.py +0 -0
  340. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/toolkits/excel_toolkit.py +0 -0
  341. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/toolkits/file_write_toolkit.py +0 -0
  342. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/toolkits/function_tool.py +0 -0
  343. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/toolkits/github_toolkit.py +0 -0
  344. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/toolkits/google_calendar_toolkit.py +0 -0
  345. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/toolkits/google_drive_mcp_toolkit.py +0 -0
  346. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/toolkits/google_maps_toolkit.py +0 -0
  347. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/toolkits/google_scholar_toolkit.py +0 -0
  348. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/toolkits/human_toolkit.py +0 -0
  349. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/toolkits/hybrid_browser_toolkit/__init__.py +0 -0
  350. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/toolkits/hybrid_browser_toolkit/actions.py +0 -0
  351. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/toolkits/hybrid_browser_toolkit/agent.py +0 -0
  352. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/toolkits/hybrid_browser_toolkit/browser_session.py +0 -0
  353. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/toolkits/hybrid_browser_toolkit/config_loader.py +0 -0
  354. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/toolkits/hybrid_browser_toolkit/hybrid_browser_toolkit.py +0 -0
  355. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/toolkits/hybrid_browser_toolkit/snapshot.py +0 -0
  356. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/toolkits/hybrid_browser_toolkit/stealth_script.js +0 -0
  357. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/toolkits/hybrid_browser_toolkit/unified_analyzer.js +0 -0
  358. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/toolkits/image_analysis_toolkit.py +0 -0
  359. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/toolkits/jina_reranker_toolkit.py +0 -0
  360. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/toolkits/klavis_toolkit.py +0 -0
  361. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/toolkits/linkedin_toolkit.py +0 -0
  362. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/toolkits/markitdown_toolkit.py +0 -0
  363. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/toolkits/math_toolkit.py +0 -0
  364. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/toolkits/mcp_toolkit.py +0 -0
  365. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/toolkits/memory_toolkit.py +0 -0
  366. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/toolkits/meshy_toolkit.py +0 -0
  367. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/toolkits/message_agent_toolkit.py +0 -0
  368. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/toolkits/mineru_toolkit.py +0 -0
  369. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/toolkits/networkx_toolkit.py +0 -0
  370. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/toolkits/note_taking_toolkit.py +0 -0
  371. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/toolkits/notion_toolkit.py +0 -0
  372. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/toolkits/open_api_specs/biztoc/__init__.py +0 -0
  373. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/toolkits/open_api_specs/biztoc/ai-plugin.json +0 -0
  374. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/toolkits/open_api_specs/biztoc/openapi.yaml +0 -0
  375. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/toolkits/open_api_specs/coursera/__init__.py +0 -0
  376. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/toolkits/open_api_specs/coursera/openapi.yaml +0 -0
  377. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/toolkits/open_api_specs/create_qr_code/__init__.py +0 -0
  378. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/toolkits/open_api_specs/create_qr_code/openapi.yaml +0 -0
  379. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/toolkits/open_api_specs/klarna/__init__.py +0 -0
  380. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/toolkits/open_api_specs/klarna/openapi.yaml +0 -0
  381. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/toolkits/open_api_specs/nasa_apod/__init__.py +0 -0
  382. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/toolkits/open_api_specs/nasa_apod/openapi.yaml +0 -0
  383. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/toolkits/open_api_specs/outschool/__init__.py +0 -0
  384. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/toolkits/open_api_specs/outschool/ai-plugin.json +0 -0
  385. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/toolkits/open_api_specs/outschool/openapi.yaml +0 -0
  386. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/toolkits/open_api_specs/outschool/paths/__init__.py +0 -0
  387. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/toolkits/open_api_specs/outschool/paths/get_classes.py +0 -0
  388. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/toolkits/open_api_specs/outschool/paths/search_teachers.py +0 -0
  389. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/toolkits/open_api_specs/security_config.py +0 -0
  390. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/toolkits/open_api_specs/speak/__init__.py +0 -0
  391. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/toolkits/open_api_specs/speak/openapi.yaml +0 -0
  392. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/toolkits/open_api_specs/web_scraper/__init__.py +0 -0
  393. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/toolkits/open_api_specs/web_scraper/ai-plugin.json +0 -0
  394. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/toolkits/open_api_specs/web_scraper/openapi.yaml +0 -0
  395. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/toolkits/open_api_specs/web_scraper/paths/__init__.py +0 -0
  396. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/toolkits/open_api_specs/web_scraper/paths/scraper.py +0 -0
  397. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/toolkits/open_api_toolkit.py +0 -0
  398. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/toolkits/openai_agent_toolkit.py +0 -0
  399. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/toolkits/openai_image_toolkit.py +0 -0
  400. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/toolkits/openbb_toolkit.py +0 -0
  401. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/toolkits/page_script.js +0 -0
  402. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/toolkits/playwright_mcp_toolkit.py +0 -0
  403. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/toolkits/pptx_toolkit.py +0 -0
  404. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/toolkits/pubmed_toolkit.py +0 -0
  405. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/toolkits/pulse_mcp_search_toolkit.py +0 -0
  406. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/toolkits/pyautogui_toolkit.py +0 -0
  407. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/toolkits/reddit_toolkit.py +0 -0
  408. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/toolkits/retrieval_toolkit.py +0 -0
  409. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/toolkits/search_toolkit.py +0 -0
  410. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/toolkits/searxng_toolkit.py +0 -0
  411. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/toolkits/semantic_scholar_toolkit.py +0 -0
  412. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/toolkits/slack_toolkit.py +0 -0
  413. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/toolkits/stripe_toolkit.py +0 -0
  414. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/toolkits/sympy_toolkit.py +0 -0
  415. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/toolkits/task_planning_toolkit.py +0 -0
  416. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/toolkits/thinking_toolkit.py +0 -0
  417. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/toolkits/twitter_toolkit.py +0 -0
  418. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/toolkits/video_analysis_toolkit.py +0 -0
  419. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/toolkits/video_download_toolkit.py +0 -0
  420. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/toolkits/weather_toolkit.py +0 -0
  421. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/toolkits/whatsapp_toolkit.py +0 -0
  422. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/toolkits/wolfram_alpha_toolkit.py +0 -0
  423. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/toolkits/zapier_toolkit.py +0 -0
  424. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/types/__init__.py +0 -0
  425. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/types/agents/__init__.py +0 -0
  426. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/types/agents/tool_calling_record.py +0 -0
  427. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/types/enums.py +0 -0
  428. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/types/mcp_registries.py +0 -0
  429. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/types/openai_types.py +0 -0
  430. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/types/unified_model_type.py +0 -0
  431. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/utils/__init__.py +0 -0
  432. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/utils/async_func.py +0 -0
  433. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/utils/chunker/__init__.py +0 -0
  434. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/utils/chunker/base.py +0 -0
  435. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/utils/chunker/code_chunker.py +0 -0
  436. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/utils/chunker/uio_chunker.py +0 -0
  437. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/utils/commons.py +0 -0
  438. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/utils/constants.py +0 -0
  439. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/utils/deduplication.py +0 -0
  440. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/utils/filename.py +0 -0
  441. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/utils/langfuse.py +0 -0
  442. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/utils/mcp.py +0 -0
  443. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/utils/mcp_client.py +0 -0
  444. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/utils/message_summarizer.py +0 -0
  445. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/utils/response_format.py +0 -0
  446. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/utils/token_counting.py +0 -0
  447. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/utils/tool_result.py +0 -0
  448. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/verifiers/__init__.py +0 -0
  449. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/verifiers/base.py +0 -0
  450. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/verifiers/math_verifier.py +0 -0
  451. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/verifiers/models.py +0 -0
  452. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/camel/verifiers/physics_verifier.py +0 -0
  453. {camel_ai-0.2.72a0 → camel_ai-0.2.72a2}/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.72a0
3
+ Version: 0.2.72a2
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
@@ -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.72a0'
17
+ __version__ = '0.2.72a2'
18
18
 
19
19
  __all__ = [
20
20
  '__version__',
@@ -202,16 +202,20 @@ TASK_DECOMPOSE_PROMPT = r"""You need to decompose the given task into subtasks a
202
202
  * **DO NOT** use relative references like "the first task," "the paper mentioned above," or "the result from the previous step."
203
203
  * **DO** write explicit instructions. For example, instead of "Analyze the document," write "Analyze the document titled 'The Future of AI'." The system will automatically provide the necessary inputs (like the document itself) from previous steps.
204
204
 
205
- 1. **Strategic Grouping for Sequential Work**:
205
+ 2. **Define Clear Deliverables**: Each subtask must specify a clear, concrete deliverable. This tells the agent exactly what to produce and provides a clear "definition of done."
206
+ * **DO NOT** use vague verbs like "analyze," "look into," or "research" without defining the output.
207
+ * **DO** specify the format and content of the output. For example, instead of "Analyze the attached report," write "Summarize the key findings of the attached report in a 3-bullet-point list." Instead of "Find contacts," write "Extract all names and email addresses from the document and return them as a JSON list of objects, where each object has a 'name' and 'email' key."
208
+
209
+ 3. **Strategic Grouping for Sequential Work**:
206
210
  * If a series of steps must be done in order *and* can be handled by the same worker type, group them into a single subtask to maintain flow and minimize handoffs.
207
211
 
208
- 2. **Aggressive Parallelization**:
212
+ 4. **Aggressive Parallelization**:
209
213
  * **Across Different Worker Specializations**: If distinct phases of the overall task require different types of workers (e.g., research by a 'SearchAgent', then content creation by a 'DocumentAgent'), define these as separate subtasks.
210
214
  * **Within a Single Phase (Data/Task Parallelism)**: If a phase involves repetitive operations on multiple items (e.g., processing 10 documents, fetching 5 web pages, analyzing 3 datasets):
211
215
  * Decompose this into parallel subtasks, one for each item or a small batch of items.
212
216
  * This applies even if the same type of worker handles these parallel subtasks. The goal is to leverage multiple available workers or allow concurrent processing.
213
217
 
214
- 3. **Subtask Design for Efficiency**:
218
+ 5. **Subtask Design for Efficiency**:
215
219
  * **Actionable and Well-Defined**: Each subtask should have a clear, achievable goal.
216
220
  * **Balanced Granularity**: Make subtasks large enough to be meaningful but small enough to enable parallelism and quick feedback. Avoid overly large subtasks that hide parallel opportunities.
217
221
  * **Consider Dependencies**: While you list tasks sequentially, think about the true dependencies. The workforce manager will handle execution based on these implied dependencies and worker availability.
@@ -229,10 +233,10 @@ These principles aim to reduce overall completion time by maximizing concurrent
229
233
  * **Correct Decomposition**:
230
234
  ```xml
231
235
  <tasks>
232
- <task>Create a short blog post about the benefits of Python by researching key benefits, writing a 300-word article, and finding a suitable image.</task>
236
+ <task>Create a short blog post about the benefits of Python by researching key benefits, writing a 300-word article, and finding a suitable image. The final output should be a single string containing the 300-word article followed by the image URL.</task>
233
237
  </tasks>
234
238
  ```
235
- * **Reasoning**: All steps are sequential and can be handled by the same worker type (`Document Agent`). Grouping them into one subtask is efficient and maintains the workflow, following the "Strategic Grouping" principle.
239
+ * **Reasoning**: All steps are sequential and can be handled by the same worker type (`Document Agent`). Grouping them into one subtask is efficient and maintains the workflow, following the "Strategic Grouping" principle. **The deliverable is clearly defined as a single string.**
236
240
 
237
241
  ***
238
242
  **Example 2: Parallel Task Across Different Workers**
@@ -245,14 +249,14 @@ These principles aim to reduce overall completion time by maximizing concurrent
245
249
  * **Correct Decomposition**:
246
250
  ```xml
247
251
  <tasks>
248
- <task>Create a financial summary for Apple (AAPL) for Q2.</task>
249
- <task>Create a financial summary for Google (GOOGL) for Q2.</task>
250
- <task>Perform market sentiment analysis for Apple (AAPL) for Q2.</task>
251
- <task>Perform market sentiment analysis for Google (GOOGL) for Q2.</task>
252
- <task>Compile the provided financial summaries and market sentiment analyses for Apple (AAPL) and Google (GOOGL) into a single Q2 performance report.</task>
252
+ <task>Create a 1-paragraph financial summary for Apple (AAPL) for Q2, covering revenue, net income, and EPS. The output must be a plain text paragraph.</task>
253
+ <task>Create a 1-paragraph financial summary for Google (GOOGL) for Q2, covering revenue, net income, and EPS. The output must be a plain text paragraph.</task>
254
+ <task>Perform a market sentiment analysis for Apple (AAPL) for Q2, returning a single sentiment score from -1 (very negative) to 1 (very positive). The output must be a single floating-point number.</task>
255
+ <task>Perform a market sentiment analysis for Google (GOOGL) for Q2, returning a single sentiment score from -1 (very negative) to 1 (very positive). The output must be a single floating-point number.</task>
256
+ <task>Compile the provided financial summaries and market sentiment scores for Apple (AAPL) and Google (GOOGL) into a single Q2 performance report. The report should be a markdown-formatted document.</task>
253
257
  </tasks>
254
258
  ```
255
- * **Reasoning**: The financial analysis and market research can be done in parallel for both companies. The final report depends on all previous steps. This decomposition leverages worker specialization and parallelism, following the "Aggressive Parallelization" principle.
259
+ * **Reasoning**: The financial analysis and market research can be done in parallel for both companies. The final report depends on all previous steps. This decomposition leverages worker specialization and parallelism, following the "Aggressive Parallelization" principle. **Each subtask has a clearly defined deliverable.**
256
260
  ***
257
261
 
258
262
  **END OF EXAMPLES** - Now, apply these principles and examples to decompose the following task.
@@ -16,6 +16,7 @@ import atexit
16
16
  import os
17
17
  import platform
18
18
  import queue
19
+ import shutil
19
20
  import subprocess
20
21
  import sys
21
22
  import threading
@@ -41,21 +42,25 @@ class TerminalToolkit(BaseToolkit):
41
42
 
42
43
  Args:
43
44
  timeout (Optional[float]): The timeout for terminal operations.
45
+ (default: :obj:`None`)
44
46
  shell_sessions (Optional[Dict[str, Any]]): A dictionary to store
45
- shell session information. If None, an empty dictionary will be
46
- used. (default: :obj:`{}`)
47
- working_dir (str): The working directory for operations.
48
- If specified, all execution and write operations will be restricted
49
- to this directory. Read operations can access paths outside this
50
- directory.(default: :obj:`"./workspace"`)
47
+ shell session information. If :obj:`None`, an empty dictionary
48
+ will be used. (default: :obj:`None`)
49
+ working_directory (Optional[str]): The working directory for
50
+ operations. If not provided, it will be determined by the
51
+ `CAMEL_WORKDIR` environment variable (if set). If the
52
+ environment variable is not set, it defaults to `./workspace`. All
53
+ execution and write operations will be restricted to this
54
+ directory. Read operations can access paths outside this
55
+ directory. (default: :obj:`None`)
51
56
  need_terminal (bool): Whether to create a terminal interface.
52
57
  (default: :obj:`True`)
53
- use_shell_mode (bool): Whether to use shell mode for command execution.
54
- (default: :obj:`True`)
58
+ use_shell_mode (bool): Whether to use shell mode for command
59
+ execution. (default: :obj:`True`)
55
60
  clone_current_env (bool): Whether to clone the current Python
56
- environment.(default: :obj:`False`)
57
- safe_mode (bool): Whether to enable safe mode to restrict operations.
58
- (default: :obj:`True`)
61
+ environment. (default: :obj:`False`)
62
+ safe_mode (bool): Whether to enable safe mode to restrict
63
+ operations. (default: :obj:`True`)
59
64
 
60
65
  Note:
61
66
  Most functions are compatible with Unix-based systems (macOS, Linux).
@@ -67,7 +72,7 @@ class TerminalToolkit(BaseToolkit):
67
72
  self,
68
73
  timeout: Optional[float] = None,
69
74
  shell_sessions: Optional[Dict[str, Any]] = None,
70
- working_dir: str = "./workspace",
75
+ working_directory: Optional[str] = None,
71
76
  need_terminal: bool = True,
72
77
  use_shell_mode: bool = True,
73
78
  clone_current_env: bool = False,
@@ -88,12 +93,22 @@ class TerminalToolkit(BaseToolkit):
88
93
 
89
94
  self.python_executable = sys.executable
90
95
  self.is_macos = platform.system() == 'Darwin'
96
+ self.initial_env_path = None
97
+ self.initial_env_prepared = False
91
98
 
92
99
  atexit.register(self.__del__)
93
100
 
94
- if not os.path.exists(working_dir):
95
- os.makedirs(working_dir, exist_ok=True)
96
- self.working_dir = os.path.abspath(working_dir)
101
+ if working_directory:
102
+ self.working_dir = os.path.abspath(working_directory)
103
+ else:
104
+ camel_workdir = os.environ.get("CAMEL_WORKDIR")
105
+ if camel_workdir:
106
+ self.working_dir = os.path.abspath(camel_workdir)
107
+ else:
108
+ self.working_dir = os.path.abspath("./workspace")
109
+
110
+ if not os.path.exists(self.working_dir):
111
+ os.makedirs(self.working_dir, exist_ok=True)
97
112
  self._update_terminal_output(
98
113
  f"Working directory set to: {self.working_dir}\n"
99
114
  )
@@ -108,6 +123,7 @@ class TerminalToolkit(BaseToolkit):
108
123
  self._clone_current_environment()
109
124
  else:
110
125
  self.cloned_env_path = None
126
+ self._prepare_initial_environment()
111
127
 
112
128
  if need_terminal:
113
129
  if self.is_macos:
@@ -192,6 +208,187 @@ class TerminalToolkit(BaseToolkit):
192
208
  )
193
209
  logger.error(f"Failed to create environment: {e}")
194
210
 
211
+ def _is_uv_environment(self) -> bool:
212
+ r"""Detect whether the current Python runtime is managed by uv."""
213
+ return (
214
+ "UV_CACHE_DIR" in os.environ
215
+ or "uv" in sys.executable
216
+ or shutil.which("uv") is not None
217
+ )
218
+
219
+ def _prepare_initial_environment(self):
220
+ r"""Prepare initial environment with Python 3.10, pip, and other
221
+ essential tools.
222
+ """
223
+ try:
224
+ self.initial_env_path = os.path.join(
225
+ self.working_dir, ".initial_env"
226
+ )
227
+
228
+ if os.path.exists(self.initial_env_path):
229
+ self._update_terminal_output(
230
+ f"Using existing initial environment"
231
+ f": {self.initial_env_path}\n"
232
+ )
233
+ self.initial_env_prepared = True
234
+ return
235
+
236
+ self._update_terminal_output(
237
+ f"Preparing initial environment at: {self.initial_env_path}\n"
238
+ )
239
+
240
+ # Create the initial environment directory
241
+ os.makedirs(self.initial_env_path, exist_ok=True)
242
+
243
+ # Check if we should use uv
244
+ if self._is_uv_environment():
245
+ self._setup_initial_env_with_uv()
246
+ else:
247
+ self._setup_initial_env_with_venv()
248
+
249
+ self.initial_env_prepared = True
250
+ self._update_terminal_output(
251
+ "Initial environment prepared successfully!\n"
252
+ )
253
+
254
+ except Exception as e:
255
+ self._update_terminal_output(
256
+ f"Failed to prepare initial environment: {e!s}\n"
257
+ )
258
+ logger.error(f"Failed to prepare initial environment: {e}")
259
+
260
+ def _setup_initial_env_with_uv(self):
261
+ r"""Set up initial environment using uv."""
262
+ try:
263
+ # Create virtual environment with Python 3.10 using uv
264
+ subprocess.run(
265
+ ["uv", "venv", "--python", "3.10", self.initial_env_path],
266
+ check=True,
267
+ capture_output=True,
268
+ cwd=self.working_dir,
269
+ timeout=300,
270
+ )
271
+
272
+ # Get the python path from the new environment
273
+ if self.os_type == 'Windows':
274
+ python_path = os.path.join(
275
+ self.initial_env_path, "Scripts", "python.exe"
276
+ )
277
+ else:
278
+ python_path = os.path.join(
279
+ self.initial_env_path, "bin", "python"
280
+ )
281
+
282
+ # Install essential packages using uv
283
+ essential_packages = ["pip", "setuptools", "wheel"]
284
+ subprocess.run(
285
+ [
286
+ "uv",
287
+ "pip",
288
+ "install",
289
+ "--python",
290
+ python_path,
291
+ *essential_packages,
292
+ ],
293
+ check=True,
294
+ capture_output=True,
295
+ cwd=self.working_dir,
296
+ timeout=300,
297
+ )
298
+
299
+ # Check if Node.js is available (but don't install it)
300
+ self._check_nodejs_availability()
301
+
302
+ self._update_terminal_output(
303
+ "[UV] Initial environment created with Python 3.10 "
304
+ "and essential packages\n"
305
+ )
306
+
307
+ except subprocess.CalledProcessError as e:
308
+ error_msg = e.stderr.decode() if e.stderr else str(e)
309
+ raise Exception(f"UV setup failed: {error_msg}")
310
+ except subprocess.TimeoutExpired:
311
+ raise Exception("UV setup timed out after 5 minutes")
312
+
313
+ def _setup_initial_env_with_venv(self):
314
+ r"""Set up initial environment using standard venv."""
315
+ try:
316
+ # Create virtual environment with system Python
317
+ venv.create(
318
+ self.initial_env_path,
319
+ with_pip=True,
320
+ system_site_packages=False,
321
+ )
322
+
323
+ # Get pip path
324
+ if self.os_type == 'Windows':
325
+ pip_path = os.path.join(
326
+ self.initial_env_path, "Scripts", "pip.exe"
327
+ )
328
+ else:
329
+ pip_path = os.path.join(self.initial_env_path, "bin", "pip")
330
+
331
+ # Upgrade pip and install essential packages
332
+ essential_packages = ["pip", "setuptools", "wheel"]
333
+ subprocess.run(
334
+ [pip_path, "install", "--upgrade", *essential_packages],
335
+ check=True,
336
+ capture_output=True,
337
+ cwd=self.working_dir,
338
+ timeout=300,
339
+ )
340
+
341
+ # Check if Node.js is available (but don't install it)
342
+ self._check_nodejs_availability()
343
+
344
+ self._update_terminal_output(
345
+ "Initial environment created with system Python and "
346
+ "essential packages\n"
347
+ )
348
+
349
+ except subprocess.CalledProcessError as e:
350
+ error_msg = e.stderr.decode() if e.stderr else str(e)
351
+ raise Exception(f"Venv setup failed: {error_msg}")
352
+ except subprocess.TimeoutExpired:
353
+ raise Exception("Venv setup timed out after 5 minutes")
354
+
355
+ def _check_nodejs_availability(self):
356
+ r"""Check if Node.js is available without modifying the system."""
357
+ try:
358
+ # Check if Node.js is already available in the system
359
+ node_result = subprocess.run(
360
+ ["node", "--version"],
361
+ check=False,
362
+ capture_output=True,
363
+ timeout=10,
364
+ )
365
+
366
+ npm_result = subprocess.run(
367
+ ["npm", "--version"],
368
+ check=False,
369
+ capture_output=True,
370
+ timeout=10,
371
+ )
372
+
373
+ if node_result.returncode == 0 and npm_result.returncode == 0:
374
+ node_version = node_result.stdout.decode().strip()
375
+ npm_version = npm_result.stdout.decode().strip()
376
+ self._update_terminal_output(
377
+ f"Node.js {node_version} and npm {npm_version} "
378
+ "are available\n"
379
+ )
380
+ else:
381
+ self._update_terminal_output(
382
+ "Note: Node.js not found. If needed, please install it "
383
+ "manually.\n"
384
+ )
385
+
386
+ except Exception as e:
387
+ self._update_terminal_output(
388
+ f"Note: Could not check Node.js availability - {e}.\n"
389
+ )
390
+ logger.warning(f"Failed to check Node.js: {e}")
391
+
195
392
  def _create_terminal(self):
196
393
  r"""Create a terminal GUI. If GUI creation fails, fallback
197
394
  to file output."""
@@ -722,6 +919,7 @@ class TerminalToolkit(BaseToolkit):
722
919
 
723
920
  if command.startswith('python') or command.startswith('pip'):
724
921
  if self.cloned_env_path:
922
+ # Use cloned environment
725
923
  if self.os_type == 'Windows':
726
924
  base_path = os.path.join(
727
925
  self.cloned_env_path, "Scripts"
@@ -732,7 +930,20 @@ class TerminalToolkit(BaseToolkit):
732
930
  base_path = os.path.join(self.cloned_env_path, "bin")
733
931
  python_path = os.path.join(base_path, "python")
734
932
  pip_path = os.path.join(base_path, "pip")
933
+ elif self.initial_env_prepared and self.initial_env_path:
934
+ # Use initial prepared environment
935
+ if self.os_type == 'Windows':
936
+ base_path = os.path.join(
937
+ self.initial_env_path, "Scripts"
938
+ )
939
+ python_path = os.path.join(base_path, "python.exe")
940
+ pip_path = os.path.join(base_path, "pip.exe")
941
+ else:
942
+ base_path = os.path.join(self.initial_env_path, "bin")
943
+ python_path = os.path.join(base_path, "python")
944
+ pip_path = os.path.join(base_path, "pip")
735
945
  else:
946
+ # Fall back to system Python
736
947
  python_path = self.python_executable
737
948
  pip_path = f'"{python_path}" -m pip'
738
949
 
@@ -1298,13 +1509,25 @@ class TerminalToolkit(BaseToolkit):
1298
1509
  f"'{session_id}': {e}"
1299
1510
  )
1300
1511
 
1301
- # Close file output if it exists
1512
+ # Clean up file output if it exists
1302
1513
  if hasattr(self, 'log_file') and self.is_macos:
1303
1514
  try:
1304
1515
  logger.info(f"Final terminal log saved to: {self.log_file}")
1305
1516
  except Exception as e:
1306
1517
  logger.error(f"Error logging file information: {e}")
1307
1518
 
1519
+ # Clean up initial environment if it exists
1520
+ if hasattr(self, 'initial_env_path') and self.initial_env_path:
1521
+ try:
1522
+ if os.path.exists(self.initial_env_path):
1523
+ shutil.rmtree(self.initial_env_path)
1524
+ logger.info(
1525
+ f"Cleaned up initial environment: "
1526
+ f"{self.initial_env_path}"
1527
+ )
1528
+ except Exception as e:
1529
+ logger.error(f"Error cleaning up initial environment: {e}")
1530
+
1308
1531
  # Clean up GUI resources if they exist
1309
1532
  if hasattr(self, 'root') and self.root:
1310
1533
  try:
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "camel-ai"
7
- version = "0.2.72a0"
7
+ version = "0.2.72a2"
8
8
  description = "Communicative Agents for AI Society Study"
9
9
  authors = [{ name = "CAMEL-AI.org" }]
10
10
  requires-python = ">=3.10,<3.13"
File without changes
File without changes
File without changes