camel-ai 0.2.71a6__tar.gz → 0.2.71a7__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.71a6 → camel_ai-0.2.71a7}/PKG-INFO +1 -1
  2. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/__init__.py +1 -1
  3. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/societies/workforce/single_agent_worker.py +2 -0
  4. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/societies/workforce/worker.py +2 -0
  5. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/societies/workforce/workforce.py +3 -17
  6. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/toolkits/file_write_toolkit.py +179 -124
  7. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/pyproject.toml +1 -1
  8. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/.gitignore +0 -0
  9. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/LICENSE +0 -0
  10. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/README.md +0 -0
  11. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/agents/__init__.py +0 -0
  12. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/agents/_types.py +0 -0
  13. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/agents/_utils.py +0 -0
  14. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/agents/base.py +0 -0
  15. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/agents/chat_agent.py +0 -0
  16. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/agents/critic_agent.py +0 -0
  17. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/agents/deductive_reasoner_agent.py +0 -0
  18. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/agents/embodied_agent.py +0 -0
  19. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/agents/knowledge_graph_agent.py +0 -0
  20. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/agents/mcp_agent.py +0 -0
  21. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/agents/multi_hop_generator_agent.py +0 -0
  22. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/agents/programmed_agent_instruction.py +0 -0
  23. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/agents/repo_agent.py +0 -0
  24. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/agents/role_assignment_agent.py +0 -0
  25. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/agents/search_agent.py +0 -0
  26. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/agents/task_agent.py +0 -0
  27. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/agents/tool_agents/__init__.py +0 -0
  28. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/agents/tool_agents/base.py +0 -0
  29. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/agents/tool_agents/hugging_face_tool_agent.py +0 -0
  30. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/benchmarks/__init__.py +0 -0
  31. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/benchmarks/apibank.py +0 -0
  32. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/benchmarks/apibench.py +0 -0
  33. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/benchmarks/base.py +0 -0
  34. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/benchmarks/browsecomp.py +0 -0
  35. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/benchmarks/gaia.py +0 -0
  36. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/benchmarks/mock_website/README.md +0 -0
  37. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/benchmarks/mock_website/mock_web.py +0 -0
  38. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/benchmarks/mock_website/requirements.txt +0 -0
  39. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/benchmarks/mock_website/shopping_mall/app.py +0 -0
  40. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/benchmarks/mock_website/task.json +0 -0
  41. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/benchmarks/nexus.py +0 -0
  42. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/benchmarks/ragbench.py +0 -0
  43. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/bots/__init__.py +0 -0
  44. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/bots/discord/__init__.py +0 -0
  45. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/bots/discord/discord_app.py +0 -0
  46. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/bots/discord/discord_installation.py +0 -0
  47. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/bots/discord/discord_store.py +0 -0
  48. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/bots/slack/__init__.py +0 -0
  49. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/bots/slack/models.py +0 -0
  50. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/bots/slack/slack_app.py +0 -0
  51. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/bots/telegram_bot.py +0 -0
  52. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/configs/__init__.py +0 -0
  53. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/configs/aiml_config.py +0 -0
  54. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/configs/anthropic_config.py +0 -0
  55. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/configs/base_config.py +0 -0
  56. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/configs/bedrock_config.py +0 -0
  57. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/configs/cohere_config.py +0 -0
  58. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/configs/crynux_config.py +0 -0
  59. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/configs/deepseek_config.py +0 -0
  60. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/configs/gemini_config.py +0 -0
  61. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/configs/groq_config.py +0 -0
  62. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/configs/internlm_config.py +0 -0
  63. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/configs/litellm_config.py +0 -0
  64. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/configs/lmstudio_config.py +0 -0
  65. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/configs/mistral_config.py +0 -0
  66. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/configs/modelscope_config.py +0 -0
  67. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/configs/moonshot_config.py +0 -0
  68. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/configs/netmind_config.py +0 -0
  69. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/configs/novita_config.py +0 -0
  70. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/configs/nvidia_config.py +0 -0
  71. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/configs/ollama_config.py +0 -0
  72. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/configs/openai_config.py +0 -0
  73. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/configs/openrouter_config.py +0 -0
  74. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/configs/ppio_config.py +0 -0
  75. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/configs/qianfan_config.py +0 -0
  76. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/configs/qwen_config.py +0 -0
  77. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/configs/reka_config.py +0 -0
  78. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/configs/samba_config.py +0 -0
  79. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/configs/sglang_config.py +0 -0
  80. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/configs/siliconflow_config.py +0 -0
  81. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/configs/togetherai_config.py +0 -0
  82. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/configs/vllm_config.py +0 -0
  83. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/configs/watsonx_config.py +0 -0
  84. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/configs/yi_config.py +0 -0
  85. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/configs/zhipuai_config.py +0 -0
  86. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/data_collectors/__init__.py +0 -0
  87. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/data_collectors/alpaca_collector.py +0 -0
  88. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/data_collectors/base.py +0 -0
  89. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/data_collectors/sharegpt_collector.py +0 -0
  90. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/datagen/__init__.py +0 -0
  91. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/datagen/cot_datagen.py +0 -0
  92. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/datagen/evol_instruct/__init__.py +0 -0
  93. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/datagen/evol_instruct/evol_instruct.py +0 -0
  94. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/datagen/evol_instruct/scorer.py +0 -0
  95. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/datagen/evol_instruct/templates.py +0 -0
  96. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/datagen/self_improving_cot.py +0 -0
  97. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/datagen/self_instruct/__init__.py +0 -0
  98. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/datagen/self_instruct/filter/__init__.py +0 -0
  99. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/datagen/self_instruct/filter/filter_function.py +0 -0
  100. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/datagen/self_instruct/filter/filter_registry.py +0 -0
  101. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/datagen/self_instruct/filter/instruction_filter.py +0 -0
  102. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/datagen/self_instruct/self_instruct.py +0 -0
  103. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/datagen/self_instruct/templates.py +0 -0
  104. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/datagen/source2synth/__init__.py +0 -0
  105. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/datagen/source2synth/data_processor.py +0 -0
  106. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/datagen/source2synth/models.py +0 -0
  107. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/datagen/source2synth/user_data_processor_config.py +0 -0
  108. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/datahubs/__init__.py +0 -0
  109. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/datahubs/base.py +0 -0
  110. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/datahubs/huggingface.py +0 -0
  111. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/datahubs/models.py +0 -0
  112. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/datasets/__init__.py +0 -0
  113. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/datasets/base_generator.py +0 -0
  114. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/datasets/few_shot_generator.py +0 -0
  115. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/datasets/models.py +0 -0
  116. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/datasets/self_instruct_generator.py +0 -0
  117. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/datasets/static_dataset.py +0 -0
  118. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/embeddings/__init__.py +0 -0
  119. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/embeddings/azure_embedding.py +0 -0
  120. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/embeddings/base.py +0 -0
  121. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/embeddings/gemini_embedding.py +0 -0
  122. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/embeddings/jina_embedding.py +0 -0
  123. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/embeddings/mistral_embedding.py +0 -0
  124. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/embeddings/openai_compatible_embedding.py +0 -0
  125. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/embeddings/openai_embedding.py +0 -0
  126. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/embeddings/sentence_transformers_embeddings.py +0 -0
  127. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/embeddings/together_embedding.py +0 -0
  128. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/embeddings/vlm_embedding.py +0 -0
  129. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/environments/__init__.py +0 -0
  130. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/environments/models.py +0 -0
  131. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/environments/multi_step.py +0 -0
  132. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/environments/rlcards_env.py +0 -0
  133. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/environments/single_step.py +0 -0
  134. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/environments/tic_tac_toe.py +0 -0
  135. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/extractors/__init__.py +0 -0
  136. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/extractors/base.py +0 -0
  137. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/extractors/python_strategies.py +0 -0
  138. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/generators.py +0 -0
  139. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/human.py +0 -0
  140. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/interpreters/__init__.py +0 -0
  141. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/interpreters/base.py +0 -0
  142. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/interpreters/docker/Dockerfile +0 -0
  143. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/interpreters/docker_interpreter.py +0 -0
  144. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/interpreters/e2b_interpreter.py +0 -0
  145. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/interpreters/internal_python_interpreter.py +0 -0
  146. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/interpreters/interpreter_error.py +0 -0
  147. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/interpreters/ipython_interpreter.py +0 -0
  148. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/interpreters/subprocess_interpreter.py +0 -0
  149. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/loaders/__init__.py +0 -0
  150. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/loaders/apify_reader.py +0 -0
  151. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/loaders/base_io.py +0 -0
  152. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/loaders/base_loader.py +0 -0
  153. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/loaders/chunkr_reader.py +0 -0
  154. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/loaders/crawl4ai_reader.py +0 -0
  155. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/loaders/firecrawl_reader.py +0 -0
  156. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/loaders/jina_url_reader.py +0 -0
  157. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/loaders/markitdown.py +0 -0
  158. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/loaders/mineru_extractor.py +0 -0
  159. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/loaders/mistral_reader.py +0 -0
  160. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/loaders/pandas_reader.py +0 -0
  161. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/loaders/scrapegraph_reader.py +0 -0
  162. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/loaders/unstructured_io.py +0 -0
  163. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/logger.py +0 -0
  164. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/memories/__init__.py +0 -0
  165. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/memories/agent_memories.py +0 -0
  166. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/memories/base.py +0 -0
  167. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/memories/blocks/__init__.py +0 -0
  168. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/memories/blocks/chat_history_block.py +0 -0
  169. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/memories/blocks/vectordb_block.py +0 -0
  170. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/memories/context_creators/__init__.py +0 -0
  171. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/memories/context_creators/score_based.py +0 -0
  172. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/memories/records.py +0 -0
  173. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/messages/__init__.py +0 -0
  174. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/messages/base.py +0 -0
  175. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/messages/conversion/__init__.py +0 -0
  176. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/messages/conversion/alpaca.py +0 -0
  177. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/messages/conversion/conversation_models.py +0 -0
  178. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/messages/conversion/sharegpt/__init__.py +0 -0
  179. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/messages/conversion/sharegpt/function_call_formatter.py +0 -0
  180. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/messages/conversion/sharegpt/hermes/__init__.py +0 -0
  181. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/messages/conversion/sharegpt/hermes/hermes_function_formatter.py +0 -0
  182. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/messages/func_message.py +0 -0
  183. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/models/__init__.py +0 -0
  184. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/models/_utils.py +0 -0
  185. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/models/aiml_model.py +0 -0
  186. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/models/anthropic_model.py +0 -0
  187. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/models/aws_bedrock_model.py +0 -0
  188. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/models/azure_openai_model.py +0 -0
  189. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/models/base_audio_model.py +0 -0
  190. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/models/base_model.py +0 -0
  191. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/models/cohere_model.py +0 -0
  192. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/models/crynux_model.py +0 -0
  193. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/models/deepseek_model.py +0 -0
  194. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/models/fish_audio_model.py +0 -0
  195. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/models/gemini_model.py +0 -0
  196. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/models/groq_model.py +0 -0
  197. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/models/internlm_model.py +0 -0
  198. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/models/litellm_model.py +0 -0
  199. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/models/lmstudio_model.py +0 -0
  200. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/models/mistral_model.py +0 -0
  201. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/models/model_factory.py +0 -0
  202. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/models/model_manager.py +0 -0
  203. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/models/modelscope_model.py +0 -0
  204. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/models/moonshot_model.py +0 -0
  205. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/models/nemotron_model.py +0 -0
  206. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/models/netmind_model.py +0 -0
  207. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/models/novita_model.py +0 -0
  208. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/models/nvidia_model.py +0 -0
  209. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/models/ollama_model.py +0 -0
  210. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/models/openai_audio_models.py +0 -0
  211. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/models/openai_compatible_model.py +0 -0
  212. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/models/openai_model.py +0 -0
  213. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/models/openrouter_model.py +0 -0
  214. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/models/ppio_model.py +0 -0
  215. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/models/qianfan_model.py +0 -0
  216. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/models/qwen_model.py +0 -0
  217. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/models/reka_model.py +0 -0
  218. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/models/reward/__init__.py +0 -0
  219. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/models/reward/base_reward_model.py +0 -0
  220. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/models/reward/evaluator.py +0 -0
  221. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/models/reward/nemotron_model.py +0 -0
  222. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/models/reward/skywork_model.py +0 -0
  223. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/models/samba_model.py +0 -0
  224. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/models/sglang_model.py +0 -0
  225. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/models/siliconflow_model.py +0 -0
  226. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/models/stub_model.py +0 -0
  227. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/models/togetherai_model.py +0 -0
  228. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/models/vllm_model.py +0 -0
  229. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/models/volcano_model.py +0 -0
  230. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/models/watsonx_model.py +0 -0
  231. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/models/yi_model.py +0 -0
  232. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/models/zhipuai_model.py +0 -0
  233. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/personas/__init__.py +0 -0
  234. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/personas/persona.py +0 -0
  235. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/personas/persona_hub.py +0 -0
  236. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/prompts/__init__.py +0 -0
  237. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/prompts/ai_society.py +0 -0
  238. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/prompts/base.py +0 -0
  239. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/prompts/code.py +0 -0
  240. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/prompts/evaluation.py +0 -0
  241. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/prompts/generate_text_embedding_data.py +0 -0
  242. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/prompts/image_craft.py +0 -0
  243. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/prompts/misalignment.py +0 -0
  244. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/prompts/multi_condition_image_craft.py +0 -0
  245. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/prompts/object_recognition.py +0 -0
  246. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/prompts/persona_hub.py +0 -0
  247. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/prompts/prompt_templates.py +0 -0
  248. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/prompts/role_description_prompt_template.py +0 -0
  249. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/prompts/solution_extraction.py +0 -0
  250. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/prompts/task_prompt_template.py +0 -0
  251. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/prompts/translation.py +0 -0
  252. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/prompts/video_description_prompt.py +0 -0
  253. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/py.typed +0 -0
  254. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/responses/__init__.py +0 -0
  255. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/responses/agent_responses.py +0 -0
  256. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/retrievers/__init__.py +0 -0
  257. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/retrievers/auto_retriever.py +0 -0
  258. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/retrievers/base.py +0 -0
  259. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/retrievers/bm25_retriever.py +0 -0
  260. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/retrievers/cohere_rerank_retriever.py +0 -0
  261. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/retrievers/hybrid_retrival.py +0 -0
  262. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/retrievers/vector_retriever.py +0 -0
  263. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/runtimes/__init__.py +0 -0
  264. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/runtimes/api.py +0 -0
  265. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/runtimes/base.py +0 -0
  266. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/runtimes/configs.py +0 -0
  267. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/runtimes/daytona_runtime.py +0 -0
  268. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/runtimes/docker_runtime.py +0 -0
  269. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/runtimes/llm_guard_runtime.py +0 -0
  270. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/runtimes/remote_http_runtime.py +0 -0
  271. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/runtimes/ubuntu_docker_runtime.py +0 -0
  272. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/runtimes/utils/__init__.py +0 -0
  273. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/runtimes/utils/function_risk_toolkit.py +0 -0
  274. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/runtimes/utils/ignore_risk_toolkit.py +0 -0
  275. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/schemas/__init__.py +0 -0
  276. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/schemas/base.py +0 -0
  277. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/schemas/openai_converter.py +0 -0
  278. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/schemas/outlines_converter.py +0 -0
  279. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/services/agent_openapi_server.py +0 -0
  280. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/societies/__init__.py +0 -0
  281. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/societies/babyagi_playing.py +0 -0
  282. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/societies/role_playing.py +0 -0
  283. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/societies/workforce/__init__.py +0 -0
  284. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/societies/workforce/base.py +0 -0
  285. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/societies/workforce/prompts.py +0 -0
  286. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/societies/workforce/role_playing_worker.py +0 -0
  287. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/societies/workforce/structured_output_handler.py +0 -0
  288. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/societies/workforce/task_channel.py +0 -0
  289. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/societies/workforce/utils.py +0 -0
  290. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/societies/workforce/workforce_logger.py +0 -0
  291. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/storages/__init__.py +0 -0
  292. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/storages/graph_storages/__init__.py +0 -0
  293. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/storages/graph_storages/base.py +0 -0
  294. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/storages/graph_storages/graph_element.py +0 -0
  295. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/storages/graph_storages/nebula_graph.py +0 -0
  296. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/storages/graph_storages/neo4j_graph.py +0 -0
  297. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/storages/key_value_storages/__init__.py +0 -0
  298. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/storages/key_value_storages/base.py +0 -0
  299. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/storages/key_value_storages/in_memory.py +0 -0
  300. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/storages/key_value_storages/json.py +0 -0
  301. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/storages/key_value_storages/mem0_cloud.py +0 -0
  302. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/storages/key_value_storages/redis.py +0 -0
  303. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/storages/object_storages/__init__.py +0 -0
  304. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/storages/object_storages/amazon_s3.py +0 -0
  305. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/storages/object_storages/azure_blob.py +0 -0
  306. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/storages/object_storages/base.py +0 -0
  307. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/storages/object_storages/google_cloud.py +0 -0
  308. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/storages/vectordb_storages/__init__.py +0 -0
  309. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/storages/vectordb_storages/base.py +0 -0
  310. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/storages/vectordb_storages/chroma.py +0 -0
  311. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/storages/vectordb_storages/faiss.py +0 -0
  312. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/storages/vectordb_storages/milvus.py +0 -0
  313. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/storages/vectordb_storages/oceanbase.py +0 -0
  314. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/storages/vectordb_storages/pgvector.py +0 -0
  315. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/storages/vectordb_storages/qdrant.py +0 -0
  316. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/storages/vectordb_storages/tidb.py +0 -0
  317. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/storages/vectordb_storages/weaviate.py +0 -0
  318. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/tasks/__init__.py +0 -0
  319. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/tasks/task.py +0 -0
  320. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/tasks/task_prompt.py +0 -0
  321. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/terminators/__init__.py +0 -0
  322. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/terminators/base.py +0 -0
  323. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/terminators/response_terminator.py +0 -0
  324. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/terminators/token_limit_terminator.py +0 -0
  325. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/toolkits/__init__.py +0 -0
  326. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/toolkits/aci_toolkit.py +0 -0
  327. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/toolkits/arxiv_toolkit.py +0 -0
  328. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/toolkits/ask_news_toolkit.py +0 -0
  329. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/toolkits/async_browser_toolkit.py +0 -0
  330. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/toolkits/audio_analysis_toolkit.py +0 -0
  331. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/toolkits/base.py +0 -0
  332. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/toolkits/bohrium_toolkit.py +0 -0
  333. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/toolkits/browser_toolkit.py +0 -0
  334. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/toolkits/browser_toolkit_commons.py +0 -0
  335. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/toolkits/code_execution.py +0 -0
  336. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/toolkits/craw4ai_toolkit.py +0 -0
  337. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/toolkits/dappier_toolkit.py +0 -0
  338. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/toolkits/data_commons_toolkit.py +0 -0
  339. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/toolkits/edgeone_pages_mcp_toolkit.py +0 -0
  340. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/toolkits/excel_toolkit.py +0 -0
  341. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/toolkits/function_tool.py +0 -0
  342. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/toolkits/github_toolkit.py +0 -0
  343. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/toolkits/google_calendar_toolkit.py +0 -0
  344. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/toolkits/google_drive_mcp_toolkit.py +0 -0
  345. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/toolkits/google_maps_toolkit.py +0 -0
  346. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/toolkits/google_scholar_toolkit.py +0 -0
  347. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/toolkits/human_toolkit.py +0 -0
  348. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/toolkits/hybrid_browser_toolkit/__init__.py +0 -0
  349. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/toolkits/hybrid_browser_toolkit/actions.py +0 -0
  350. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/toolkits/hybrid_browser_toolkit/agent.py +0 -0
  351. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/toolkits/hybrid_browser_toolkit/browser_session.py +0 -0
  352. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/toolkits/hybrid_browser_toolkit/hybrid_browser_toolkit.py +0 -0
  353. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/toolkits/hybrid_browser_toolkit/snapshot.py +0 -0
  354. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/toolkits/hybrid_browser_toolkit/stealth_config.py +0 -0
  355. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/toolkits/hybrid_browser_toolkit/stealth_script.js +0 -0
  356. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/toolkits/hybrid_browser_toolkit/unified_analyzer.js +0 -0
  357. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/toolkits/image_analysis_toolkit.py +0 -0
  358. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/toolkits/jina_reranker_toolkit.py +0 -0
  359. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/toolkits/klavis_toolkit.py +0 -0
  360. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/toolkits/linkedin_toolkit.py +0 -0
  361. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/toolkits/markitdown_toolkit.py +0 -0
  362. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/toolkits/math_toolkit.py +0 -0
  363. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/toolkits/mcp_toolkit.py +0 -0
  364. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/toolkits/memory_toolkit.py +0 -0
  365. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/toolkits/meshy_toolkit.py +0 -0
  366. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/toolkits/message_agent_toolkit.py +0 -0
  367. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/toolkits/mineru_toolkit.py +0 -0
  368. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/toolkits/networkx_toolkit.py +0 -0
  369. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/toolkits/note_taking_toolkit.py +0 -0
  370. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/toolkits/notion_toolkit.py +0 -0
  371. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/toolkits/open_api_specs/biztoc/__init__.py +0 -0
  372. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/toolkits/open_api_specs/biztoc/ai-plugin.json +0 -0
  373. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/toolkits/open_api_specs/biztoc/openapi.yaml +0 -0
  374. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/toolkits/open_api_specs/coursera/__init__.py +0 -0
  375. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/toolkits/open_api_specs/coursera/openapi.yaml +0 -0
  376. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/toolkits/open_api_specs/create_qr_code/__init__.py +0 -0
  377. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/toolkits/open_api_specs/create_qr_code/openapi.yaml +0 -0
  378. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/toolkits/open_api_specs/klarna/__init__.py +0 -0
  379. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/toolkits/open_api_specs/klarna/openapi.yaml +0 -0
  380. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/toolkits/open_api_specs/nasa_apod/__init__.py +0 -0
  381. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/toolkits/open_api_specs/nasa_apod/openapi.yaml +0 -0
  382. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/toolkits/open_api_specs/outschool/__init__.py +0 -0
  383. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/toolkits/open_api_specs/outschool/ai-plugin.json +0 -0
  384. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/toolkits/open_api_specs/outschool/openapi.yaml +0 -0
  385. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/toolkits/open_api_specs/outschool/paths/__init__.py +0 -0
  386. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/toolkits/open_api_specs/outschool/paths/get_classes.py +0 -0
  387. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/toolkits/open_api_specs/outschool/paths/search_teachers.py +0 -0
  388. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/toolkits/open_api_specs/security_config.py +0 -0
  389. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/toolkits/open_api_specs/speak/__init__.py +0 -0
  390. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/toolkits/open_api_specs/speak/openapi.yaml +0 -0
  391. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/toolkits/open_api_specs/web_scraper/__init__.py +0 -0
  392. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/toolkits/open_api_specs/web_scraper/ai-plugin.json +0 -0
  393. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/toolkits/open_api_specs/web_scraper/openapi.yaml +0 -0
  394. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/toolkits/open_api_specs/web_scraper/paths/__init__.py +0 -0
  395. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/toolkits/open_api_specs/web_scraper/paths/scraper.py +0 -0
  396. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/toolkits/open_api_toolkit.py +0 -0
  397. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/toolkits/openai_agent_toolkit.py +0 -0
  398. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/toolkits/openai_image_toolkit.py +0 -0
  399. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/toolkits/openbb_toolkit.py +0 -0
  400. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/toolkits/page_script.js +0 -0
  401. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/toolkits/playwright_mcp_toolkit.py +0 -0
  402. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/toolkits/pptx_toolkit.py +0 -0
  403. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/toolkits/pubmed_toolkit.py +0 -0
  404. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/toolkits/pulse_mcp_search_toolkit.py +0 -0
  405. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/toolkits/pyautogui_toolkit.py +0 -0
  406. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/toolkits/reddit_toolkit.py +0 -0
  407. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/toolkits/retrieval_toolkit.py +0 -0
  408. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/toolkits/search_toolkit.py +0 -0
  409. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/toolkits/searxng_toolkit.py +0 -0
  410. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/toolkits/semantic_scholar_toolkit.py +0 -0
  411. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/toolkits/slack_toolkit.py +0 -0
  412. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/toolkits/stripe_toolkit.py +0 -0
  413. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/toolkits/sympy_toolkit.py +0 -0
  414. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/toolkits/task_planning_toolkit.py +0 -0
  415. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/toolkits/terminal_toolkit.py +0 -0
  416. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/toolkits/thinking_toolkit.py +0 -0
  417. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/toolkits/twitter_toolkit.py +0 -0
  418. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/toolkits/video_analysis_toolkit.py +0 -0
  419. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/toolkits/video_download_toolkit.py +0 -0
  420. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/toolkits/weather_toolkit.py +0 -0
  421. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/toolkits/whatsapp_toolkit.py +0 -0
  422. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/toolkits/wolfram_alpha_toolkit.py +0 -0
  423. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/toolkits/zapier_toolkit.py +0 -0
  424. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/types/__init__.py +0 -0
  425. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/types/agents/__init__.py +0 -0
  426. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/types/agents/tool_calling_record.py +0 -0
  427. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/types/enums.py +0 -0
  428. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/types/mcp_registries.py +0 -0
  429. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/types/openai_types.py +0 -0
  430. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/types/unified_model_type.py +0 -0
  431. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/utils/__init__.py +0 -0
  432. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/utils/async_func.py +0 -0
  433. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/utils/chunker/__init__.py +0 -0
  434. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/utils/chunker/base.py +0 -0
  435. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/utils/chunker/code_chunker.py +0 -0
  436. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/utils/chunker/uio_chunker.py +0 -0
  437. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/utils/commons.py +0 -0
  438. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/utils/constants.py +0 -0
  439. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/utils/deduplication.py +0 -0
  440. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/utils/filename.py +0 -0
  441. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/utils/langfuse.py +0 -0
  442. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/utils/mcp.py +0 -0
  443. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/utils/mcp_client.py +0 -0
  444. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/utils/message_summarizer.py +0 -0
  445. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/utils/response_format.py +0 -0
  446. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/utils/token_counting.py +0 -0
  447. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/utils/tool_result.py +0 -0
  448. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/verifiers/__init__.py +0 -0
  449. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/verifiers/base.py +0 -0
  450. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/verifiers/math_verifier.py +0 -0
  451. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/verifiers/models.py +0 -0
  452. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/camel/verifiers/physics_verifier.py +0 -0
  453. {camel_ai-0.2.71a6 → camel_ai-0.2.71a7}/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.71a6
3
+ Version: 0.2.71a7
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.71a6'
17
+ __version__ = '0.2.71a7'
18
18
 
19
19
  __all__ = [
20
20
  '__version__',
@@ -344,6 +344,8 @@ class SingleAgentWorker(Worker):
344
344
  f"{Fore.RED}Error processing task {task.id}: "
345
345
  f"{type(e).__name__}: {e}{Fore.RESET}"
346
346
  )
347
+ # Store error information in task result
348
+ task.result = f"{type(e).__name__}: {e!s}"
347
349
  return TaskState.FAILED
348
350
  finally:
349
351
  # Return agent to pool or let it be garbage collected
@@ -103,6 +103,8 @@ class Worker(BaseNode, ABC):
103
103
  await self._channel.return_task(task.id)
104
104
  except Exception as e:
105
105
  logger.error(f"Error processing task {task.id}: {e}")
106
+ # Store error information in task result
107
+ task.result = f"{type(e).__name__}: {e!s}"
106
108
  task.set_state(TaskState.FAILED)
107
109
  await self._channel.return_task(task.id)
108
110
  finally:
@@ -2145,17 +2145,7 @@ class Workforce(BaseNode):
2145
2145
  f"Current pending tasks: {len(self._pending_tasks)}, "
2146
2146
  f"In-flight tasks: {self._in_flight_tasks}"
2147
2147
  )
2148
- logger.warning(error_msg)
2149
-
2150
- if self._pending_tasks and self._assignees:
2151
- for task in self._pending_tasks:
2152
- if task.id in self._assignees:
2153
- # Mark task as failed and decrement counter
2154
- task.set_state(TaskState.FAILED)
2155
- self._decrement_in_flight_tasks(
2156
- task.id, "timeout/error in _get_returned_task"
2157
- )
2158
- return task
2148
+ logger.error(error_msg, exc_info=True)
2159
2149
  return None
2160
2150
 
2161
2151
  async def _post_ready_tasks(self) -> None:
@@ -2231,12 +2221,8 @@ class Workforce(BaseNode):
2231
2221
  task.failure_count += 1
2232
2222
 
2233
2223
  # Determine detailed failure information
2234
- if is_task_result_insufficient(task):
2235
- failure_reason = "Worker returned unhelpful "
2236
- f"response: {task.result[:100] if task.result else ''}..."
2237
- else:
2238
- failure_reason = "Task marked as failed despite "
2239
- f"having result: {(task.result or '')[:100]}..."
2224
+ # Use the actual error/result stored in task.result
2225
+ failure_reason = task.result or "Unknown error"
2240
2226
 
2241
2227
  # Add context about the worker and task
2242
2228
  worker_id = task.assigned_worker_id or "unknown"
@@ -14,10 +14,7 @@
14
14
  import re
15
15
  from datetime import datetime
16
16
  from pathlib import Path
17
- from typing import TYPE_CHECKING, List, Optional, Tuple, Union
18
-
19
- if TYPE_CHECKING:
20
- from reportlab.platypus import Table
17
+ from typing import List, Optional, Tuple, Union
21
18
 
22
19
  from camel.logger import get_logger
23
20
  from camel.toolkits.base import BaseToolkit
@@ -26,9 +23,6 @@ from camel.utils import MCPServer, dependencies_required
26
23
 
27
24
  logger = get_logger(__name__)
28
25
 
29
- # Default format when no extension is provided
30
- DEFAULT_FORMAT = '.md'
31
-
32
26
 
33
27
  @MCPServer()
34
28
  class FileWriteToolkit(BaseToolkit):
@@ -92,6 +86,22 @@ class FileWriteToolkit(BaseToolkit):
92
86
  path_obj = path_obj.parent / sanitized_filename
93
87
  return path_obj.resolve()
94
88
 
89
+ def _sanitize_filename(self, filename: str) -> str:
90
+ r"""Sanitize a filename by replacing any character that is not
91
+ alphanumeric, a dot (.), hyphen (-), or underscore (_) with an
92
+ underscore (_).
93
+
94
+ Args:
95
+ filename (str): The original filename which may contain spaces or
96
+ special characters.
97
+
98
+ Returns:
99
+ str: The sanitized filename with disallowed characters replaced by
100
+ underscores.
101
+ """
102
+ safe = re.sub(r'[^\w\-.]', '_', filename)
103
+ return safe
104
+
95
105
  def _write_text_file(
96
106
  self, file_path: Path, content: str, encoding: str = "utf-8"
97
107
  ) -> None:
@@ -104,7 +114,6 @@ class FileWriteToolkit(BaseToolkit):
104
114
  """
105
115
  with file_path.open("w", encoding=encoding) as f:
106
116
  f.write(content)
107
- logger.debug(f"Wrote text to {file_path} with {encoding} encoding")
108
117
 
109
118
  def _generate_unique_filename(self, file_path: Path) -> Path:
110
119
  r"""Generate a unique filename if the target file already exists.
@@ -163,7 +172,6 @@ class FileWriteToolkit(BaseToolkit):
163
172
  para.style = style
164
173
 
165
174
  document.save(str(file_path))
166
- logger.debug(f"Wrote DOCX to {file_path} with default formatting")
167
175
 
168
176
  @dependencies_required('reportlab')
169
177
  def _write_pdf_file(
@@ -331,9 +339,6 @@ class FileWriteToolkit(BaseToolkit):
331
339
  isinstance(row, list) for row in content
332
340
  ):
333
341
  # Content is a table (List[List[str]])
334
- logger.debug(
335
- f"Processing content as table with {len(content)} rows"
336
- )
337
342
  if content:
338
343
  table = self._create_pdf_table(content)
339
344
  story.append(table)
@@ -364,7 +369,6 @@ class FileWriteToolkit(BaseToolkit):
364
369
 
365
370
  # Process content
366
371
  lines = content.split('\n')
367
- logger.debug(f"Processing {len(lines)} lines of content")
368
372
 
369
373
  # Parse all tables from the content first
370
374
  tables = self._parse_markdown_table(lines)
@@ -396,8 +400,6 @@ class FileWriteToolkit(BaseToolkit):
396
400
  )
397
401
 
398
402
  if current_table_idx < len(tables):
399
- table_row_count = len(tables[current_table_idx])
400
- logger.debug(f"Adding table with {table_row_count} rows")
401
403
  try:
402
404
  table = self._create_pdf_table(
403
405
  tables[current_table_idx]
@@ -530,10 +532,8 @@ class FileWriteToolkit(BaseToolkit):
530
532
  addMapping(font_name, 0, 1, font_name) # italic
531
533
  addMapping(font_name, 1, 0, font_name) # bold
532
534
  addMapping(font_name, 1, 1, font_name) # bold italic
533
- logger.debug(f"Registered Chinese font: {font_path}")
534
535
  return font_name
535
- except Exception as e:
536
- logger.debug(f"Failed to register font {font_path}: {e}")
536
+ except Exception:
537
537
  continue
538
538
 
539
539
  # Fallback to Helvetica if no Chinese font found
@@ -559,38 +559,29 @@ class FileWriteToolkit(BaseToolkit):
559
559
 
560
560
  # Check for table (Markdown-style)
561
561
  if self._is_table_row(line):
562
- logger.debug(f"Found table line: {line}")
563
-
564
562
  if not in_table:
565
563
  in_table = True
566
564
  current_table_data = []
567
- logger.debug("Starting new table")
568
565
 
569
566
  # Skip separator lines (e.g., |---|---|)
570
567
  if self._is_table_separator(line):
571
- logger.debug("Skipping separator line")
572
568
  continue
573
569
 
574
570
  # Parse table row
575
571
  cells = self._parse_table_row(line)
576
572
  if cells:
577
573
  current_table_data.append(cells)
578
- logger.debug(f"Added table row: {cells}")
579
574
  continue
580
575
 
581
576
  # If we were in a table and now we're not, finalize the table
582
577
  if in_table:
583
578
  if current_table_data:
584
- row_count = len(current_table_data)
585
- logger.debug(f"Finalizing table with {row_count} rows")
586
579
  tables.append(current_table_data)
587
580
  current_table_data = []
588
581
  in_table = False
589
582
 
590
583
  # Add any remaining table
591
584
  if in_table and current_table_data:
592
- row_count = len(current_table_data)
593
- logger.debug(f"Adding final table with {row_count} rows")
594
585
  tables.append(current_table_data)
595
586
 
596
587
  return tables
@@ -646,7 +637,7 @@ class FileWriteToolkit(BaseToolkit):
646
637
 
647
638
  return cells
648
639
 
649
- def _create_pdf_table(self, table_data: List[List[str]]) -> "Table":
640
+ def _create_pdf_table(self, table_data: List[List[str]]):
650
641
  r"""Create a formatted table for PDF.
651
642
 
652
643
  Args:
@@ -656,40 +647,153 @@ class FileWriteToolkit(BaseToolkit):
656
647
  Table: A formatted reportlab Table object.
657
648
  """
658
649
  from reportlab.lib import colors
659
- from reportlab.platypus import Table, TableStyle
650
+ from reportlab.lib.pagesizes import A4
651
+ from reportlab.lib.styles import ParagraphStyle
652
+ from reportlab.platypus import Paragraph, Table, TableStyle
660
653
 
661
654
  try:
662
655
  # Get Chinese font for table
663
656
  chinese_font = self._register_chinese_font()
664
657
 
665
- # Debug: Log table data
666
- logger.debug(f"Creating table with {len(table_data)} rows")
667
- for i, row in enumerate(table_data):
668
- logger.debug(f"Row {i}: {row}")
658
+ # Calculate available width (A4 width minus margins)
659
+ page_width = A4[0] # A4 width in points
660
+ margins = 144 # left + right margins (72 each)
661
+ available_width = page_width - margins
662
+
663
+ # Calculate column widths and font size based on content
664
+ if table_data:
665
+ num_columns = len(table_data[0])
666
+
667
+ # Calculate max content length for each column
668
+ max_lengths = [0] * num_columns
669
+ max_cell_length = 0
670
+ for row in table_data:
671
+ for i, cell in enumerate(row):
672
+ if i < len(max_lengths):
673
+ cell_length = len(str(cell))
674
+ max_lengths[i] = max(max_lengths[i], cell_length)
675
+ max_cell_length = max(max_cell_length, cell_length)
676
+
677
+ # Dynamic font size calculation based on columns and content
678
+ # Base font sizes
679
+ base_header_font = 9
680
+ base_body_font = 8
681
+
682
+ # Calculate font size factor based on columns and content
683
+ column_factors = {10: 0.6, 8: 0.7, 6: 0.8, 4: 0.9}
684
+ font_size_factor = next(
685
+ (
686
+ factor
687
+ for cols, factor in column_factors.items()
688
+ if num_columns > cols
689
+ ),
690
+ 1.0,
691
+ )
692
+
693
+ # Further adjust if max cell content is very long
694
+ if max_cell_length > 30:
695
+ font_size_factor *= 0.8
696
+ elif max_cell_length > 20:
697
+ font_size_factor *= 0.9
698
+
699
+ header_font_size = max(
700
+ 5, int(base_header_font * font_size_factor)
701
+ )
702
+ body_font_size = max(5, int(base_body_font * font_size_factor))
703
+
704
+ # Calculate minimum column width based on font size
705
+ min_col_width = max(30, 40 * font_size_factor)
706
+
707
+ # Distribute width proportionally with minimum width
708
+ total_length = sum(max_lengths)
709
+ if total_length > 0:
710
+ # Calculate proportional widths
711
+ proportional_widths = [
712
+ (length / total_length) * available_width
713
+ for length in max_lengths
714
+ ]
715
+
716
+ # Ensure minimum width and adjust if necessary
717
+ col_widths = []
718
+ total_width = 0
719
+ for width in proportional_widths:
720
+ adjusted_width = max(min_col_width, width)
721
+ col_widths.append(adjusted_width)
722
+ total_width += adjusted_width
723
+
724
+ # Scale down if total exceeds available width
725
+ if total_width > available_width:
726
+ scale_factor = available_width / total_width
727
+ col_widths = [w * scale_factor for w in col_widths]
728
+ else:
729
+ col_widths = [available_width / num_columns] * num_columns
730
+
731
+ # Adjust padding based on font size
732
+ h_padding = max(2, int(6 * font_size_factor))
733
+ v_padding = max(2, int(4 * font_size_factor))
734
+ else:
735
+ col_widths = None
736
+ header_font_size = 9
737
+ body_font_size = 8
738
+ h_padding = 6
739
+ v_padding = 4
740
+
741
+ # Create paragraph styles for wrapping text
742
+ header_style = ParagraphStyle(
743
+ 'TableHeader',
744
+ fontName=chinese_font,
745
+ fontSize=header_font_size,
746
+ textColor=colors.whitesmoke,
747
+ alignment=0, # LEFT alignment
748
+ leading=header_font_size * 1.2,
749
+ )
669
750
 
670
- # Create table
671
- table = Table(table_data)
751
+ body_style = ParagraphStyle(
752
+ 'TableBody',
753
+ fontName=chinese_font,
754
+ fontSize=body_font_size,
755
+ textColor=colors.black,
756
+ alignment=0, # LEFT alignment
757
+ leading=body_font_size * 1.2,
758
+ )
759
+
760
+ # Convert table data to Paragraph objects for text wrapping
761
+ wrapped_data = []
762
+ for row_idx, row in enumerate(table_data):
763
+ wrapped_row = []
764
+ for cell in row:
765
+ cell_text = str(cell)
766
+ # Use header style for first row, body style for others
767
+ style = header_style if row_idx == 0 else body_style
768
+ # Escape special characters for XML
769
+ cell_text = (
770
+ cell_text.replace('&', '&amp;')
771
+ .replace('<', '&lt;')
772
+ .replace('>', '&gt;')
773
+ )
774
+ para = Paragraph(cell_text, style)
775
+ wrapped_row.append(para)
776
+ wrapped_data.append(wrapped_row)
672
777
 
673
- # Style the table with Chinese font support
778
+ # Create table with wrapped data
779
+ table = Table(wrapped_data, colWidths=col_widths, repeatRows=1)
780
+
781
+ # Style the table with dynamic formatting
674
782
  table.setStyle(
675
783
  TableStyle(
676
784
  [
677
785
  ('BACKGROUND', (0, 0), (-1, 0), colors.grey),
678
- ('TEXTCOLOR', (0, 0), (-1, 0), colors.whitesmoke),
679
- ('ALIGN', (0, 0), (-1, -1), 'CENTER'),
680
- ('FONTNAME', (0, 0), (-1, 0), chinese_font),
681
- ('FONTSIZE', (0, 0), (-1, 0), 10),
682
- ('BOTTOMPADDING', (0, 0), (-1, 0), 12),
683
- ('BACKGROUND', (0, 1), (-1, -1), colors.beige),
684
- ('FONTNAME', (0, 1), (-1, -1), chinese_font),
685
- ('FONTSIZE', (0, 1), (-1, -1), 9),
686
- ('GRID', (0, 0), (-1, -1), 1, colors.black),
687
- ('VALIGN', (0, 0), (-1, -1), 'MIDDLE'),
786
+ ('BACKGROUND', (0, 1), (-1, -1), colors.white),
787
+ ('GRID', (0, 0), (-1, -1), 0.5, colors.black),
788
+ ('VALIGN', (0, 0), (-1, -1), 'TOP'),
789
+ ('LEFTPADDING', (0, 0), (-1, -1), h_padding),
790
+ ('RIGHTPADDING', (0, 0), (-1, -1), h_padding),
791
+ ('TOPPADDING', (0, 0), (-1, -1), v_padding),
792
+ ('BOTTOMPADDING', (0, 0), (-1, -1), v_padding),
688
793
  ]
689
794
  )
690
795
  )
691
796
 
692
- logger.debug("Table created successfully")
693
797
  return table
694
798
 
695
799
  except Exception as e:
@@ -708,18 +812,20 @@ class FileWriteToolkit(BaseToolkit):
708
812
  Returns:
709
813
  str: Text with HTML formatting.
710
814
  """
711
- # Bold text (check double markers first)
712
- text = re.sub(r'\*\*(.*?)\*\*', r'<b>\1</b>', text)
713
- text = re.sub(r'__(.*?)__', r'<b>\1</b>', text)
714
-
715
- # Italic text (single markers after double markers)
716
- text = re.sub(
717
- r'(?<!\*)\*(?!\*)(.*?)(?<!\*)\*(?!\*)', r'<i>\1</i>', text
718
- )
719
- text = re.sub(r'(?<!_)_(?!_)(.*?)(?<!_)_(?!_)', r'<i>\1</i>', text)
815
+ # Define conversion patterns
816
+ conversions = [
817
+ (r'\*\*(.*?)\*\*', r'<b>\1</b>'), # Bold with **
818
+ (r'__(.*?)__', r'<b>\1</b>'), # Bold with __
819
+ (
820
+ r'(?<!\*)\*(?!\*)(.*?)(?<!\*)\*(?!\*)',
821
+ r'<i>\1</i>',
822
+ ), # Italic with *
823
+ (r'(?<!_)_(?!_)(.*?)(?<!_)_(?!_)', r'<i>\1</i>'), # Italic with _
824
+ (r'`(.*?)`', r'<font name="Courier">\1</font>'), # Inline code
825
+ ]
720
826
 
721
- # Code (inline)
722
- text = re.sub(r'`(.*?)`', r'<font name="Courier">\1</font>', text)
827
+ for pattern, replacement in conversions:
828
+ text = re.sub(pattern, replacement, text)
723
829
 
724
830
  return text
725
831
 
@@ -745,7 +851,6 @@ class FileWriteToolkit(BaseToolkit):
745
851
  else:
746
852
  writer = csv.writer(f)
747
853
  writer.writerows(content)
748
- logger.debug(f"Wrote CSV to {file_path} with {encoding} encoding")
749
854
 
750
855
  def _write_json_file(
751
856
  self,
@@ -774,52 +879,19 @@ class FileWriteToolkit(BaseToolkit):
774
879
  else:
775
880
  # If not string, dump as JSON
776
881
  json.dump(content, f, ensure_ascii=False)
777
- logger.debug(f"Wrote JSON to {file_path} with {encoding} encoding")
778
-
779
- def _write_yaml_file(
780
- self,
781
- file_path: Path,
782
- content: str,
783
- encoding: str = "utf-8",
784
- ) -> None:
785
- r"""Write YAML content to a file.
786
-
787
- Args:
788
- file_path (Path): The target file path.
789
- content (str): The YAML content as a string.
790
- encoding (str): Character encoding to use. (default: :obj:`utf-8`)
791
- """
792
- with file_path.open("w", encoding=encoding) as f:
793
- f.write(content)
794
- logger.debug(f"Wrote YAML to {file_path} with {encoding} encoding")
795
-
796
- def _write_html_file(
797
- self, file_path: Path, content: str, encoding: str = "utf-8"
798
- ) -> None:
799
- r"""Write text content to an HTML file.
800
-
801
- Args:
802
- file_path (Path): The target file path.
803
- content (str): The HTML content to write.
804
- encoding (str): Character encoding to use. (default: :obj:`utf-8`)
805
- """
806
- with file_path.open("w", encoding=encoding) as f:
807
- f.write(content)
808
- logger.debug(f"Wrote HTML to {file_path} with {encoding} encoding")
809
882
 
810
- def _write_markdown_file(
883
+ def _write_simple_text_file(
811
884
  self, file_path: Path, content: str, encoding: str = "utf-8"
812
885
  ) -> None:
813
- r"""Write text content to a Markdown file.
886
+ r"""Write text content to a file (used for HTML, Markdown, YAML, etc.).
814
887
 
815
888
  Args:
816
889
  file_path (Path): The target file path.
817
- content (str): The Markdown content to write.
890
+ content (str): The content to write.
818
891
  encoding (str): Character encoding to use. (default: :obj:`utf-8`)
819
892
  """
820
893
  with file_path.open("w", encoding=encoding) as f:
821
894
  f.write(content)
822
- logger.debug(f"Wrote Markdown to {file_path} with {encoding} encoding")
823
895
 
824
896
  def write_to_file(
825
897
  self,
@@ -861,10 +933,10 @@ class FileWriteToolkit(BaseToolkit):
861
933
 
862
934
  extension = file_path.suffix.lower()
863
935
 
864
- # If no extension is provided, use the default format
936
+ # If no extension is provided, use markdown as default
865
937
  if extension == "":
866
- file_path = file_path.with_suffix(DEFAULT_FORMAT)
867
- extension = DEFAULT_FORMAT
938
+ file_path = file_path.with_suffix('.md')
939
+ extension = '.md'
868
940
 
869
941
  try:
870
942
  # Get encoding or use default
@@ -884,16 +956,15 @@ class FileWriteToolkit(BaseToolkit):
884
956
  content, # type: ignore[arg-type]
885
957
  encoding=file_encoding,
886
958
  )
887
- elif extension in [".yml", ".yaml"]:
888
- self._write_yaml_file(
889
- file_path, str(content), encoding=file_encoding
890
- )
891
- elif extension in [".html", ".htm"]:
892
- self._write_html_file(
893
- file_path, str(content), encoding=file_encoding
894
- )
895
- elif extension in [".md", ".markdown"]:
896
- self._write_markdown_file(
959
+ elif extension in [
960
+ ".yml",
961
+ ".yaml",
962
+ ".html",
963
+ ".htm",
964
+ ".md",
965
+ ".markdown",
966
+ ]:
967
+ self._write_simple_text_file(
897
968
  file_path, str(content), encoding=file_encoding
898
969
  )
899
970
  else:
@@ -924,19 +995,3 @@ class FileWriteToolkit(BaseToolkit):
924
995
  return [
925
996
  FunctionTool(self.write_to_file),
926
997
  ]
927
-
928
- def _sanitize_filename(self, filename: str) -> str:
929
- r"""Sanitize a filename by replacing any character that is not
930
- alphanumeric, a dot (.), hyphen (-), or underscore (_) with an
931
- underscore (_).
932
-
933
- Args:
934
- filename (str): The original filename which may contain spaces or
935
- special characters.
936
-
937
- Returns:
938
- str: The sanitized filename with disallowed characters replaced by
939
- underscores.
940
- """
941
- safe = re.sub(r'[^\w\-.]', '_', filename)
942
- return safe
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "camel-ai"
7
- version = "0.2.71a6"
7
+ version = "0.2.71a7"
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