camel-ai 0.2.65__py3-none-any.whl → 0.2.82__py3-none-any.whl
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.
- camel/__init__.py +3 -3
- camel/agents/__init__.py +2 -2
- camel/agents/_types.py +9 -4
- camel/agents/_utils.py +40 -2
- camel/agents/base.py +2 -2
- camel/agents/chat_agent.py +4835 -947
- camel/agents/critic_agent.py +2 -2
- camel/agents/deductive_reasoner_agent.py +56 -56
- camel/agents/embodied_agent.py +2 -2
- camel/agents/knowledge_graph_agent.py +20 -20
- camel/agents/mcp_agent.py +35 -36
- camel/agents/multi_hop_generator_agent.py +3 -3
- camel/agents/programmed_agent_instruction.py +2 -2
- camel/agents/repo_agent.py +4 -3
- camel/agents/role_assignment_agent.py +2 -2
- camel/agents/search_agent.py +2 -2
- camel/agents/task_agent.py +2 -2
- camel/agents/tool_agents/__init__.py +2 -2
- camel/agents/tool_agents/base.py +2 -2
- camel/agents/tool_agents/hugging_face_tool_agent.py +3 -3
- camel/benchmarks/__init__.py +2 -2
- camel/benchmarks/apibank.py +5 -5
- camel/benchmarks/apibench.py +2 -2
- camel/benchmarks/base.py +2 -2
- camel/benchmarks/browsecomp.py +44 -33
- camel/benchmarks/gaia.py +17 -13
- camel/benchmarks/mock_website/README.md +1 -3
- camel/benchmarks/mock_website/mock_web.py +2 -2
- camel/benchmarks/mock_website/requirements.txt +1 -1
- camel/benchmarks/mock_website/shopping_mall/app.py +2 -2
- camel/benchmarks/mock_website/task.json +1 -1
- camel/benchmarks/nexus.py +3 -3
- camel/benchmarks/ragbench.py +2 -2
- camel/bots/__init__.py +2 -2
- camel/bots/discord/__init__.py +2 -2
- camel/bots/discord/discord_app.py +2 -2
- camel/bots/discord/discord_installation.py +2 -2
- camel/bots/discord/discord_store.py +3 -3
- camel/bots/slack/__init__.py +2 -2
- camel/bots/slack/models.py +4 -4
- camel/bots/slack/slack_app.py +2 -2
- camel/bots/telegram_bot.py +2 -2
- camel/configs/__init__.py +23 -2
- camel/configs/aihubmix_config.py +90 -0
- camel/configs/aiml_config.py +2 -2
- camel/configs/amd_config.py +70 -0
- camel/configs/anthropic_config.py +2 -2
- camel/configs/base_config.py +2 -2
- camel/configs/bedrock_config.py +5 -3
- camel/configs/cerebras_config.py +98 -0
- camel/configs/cohere_config.py +2 -2
- camel/configs/cometapi_config.py +106 -0
- camel/configs/crynux_config.py +2 -2
- camel/configs/deepseek_config.py +9 -8
- camel/configs/gemini_config.py +6 -4
- camel/configs/groq_config.py +6 -4
- camel/configs/internlm_config.py +6 -4
- camel/configs/litellm_config.py +2 -2
- camel/configs/lmstudio_config.py +6 -4
- camel/configs/minimax_config.py +95 -0
- camel/configs/mistral_config.py +2 -2
- camel/configs/modelscope_config.py +5 -3
- camel/configs/moonshot_config.py +2 -2
- camel/configs/nebius_config.py +105 -0
- camel/configs/netmind_config.py +2 -2
- camel/configs/novita_config.py +2 -2
- camel/configs/nvidia_config.py +2 -2
- camel/configs/ollama_config.py +2 -2
- camel/configs/openai_config.py +5 -3
- camel/configs/openrouter_config.py +6 -4
- camel/configs/ppio_config.py +2 -2
- camel/configs/qianfan_config.py +85 -0
- camel/configs/qwen_config.py +2 -2
- camel/configs/reka_config.py +2 -2
- camel/configs/samba_config.py +6 -4
- camel/configs/sglang_config.py +2 -2
- camel/configs/siliconflow_config.py +2 -2
- camel/configs/togetherai_config.py +2 -2
- camel/configs/vllm_config.py +4 -2
- camel/configs/watsonx_config.py +2 -2
- camel/configs/yi_config.py +6 -4
- camel/configs/zhipuai_config.py +6 -4
- camel/data_collectors/__init__.py +2 -2
- camel/data_collectors/alpaca_collector.py +18 -9
- camel/data_collectors/base.py +2 -2
- camel/data_collectors/sharegpt_collector.py +2 -2
- camel/datagen/__init__.py +2 -2
- camel/datagen/cot_datagen.py +3 -3
- camel/datagen/evol_instruct/__init__.py +2 -2
- camel/datagen/evol_instruct/evol_instruct.py +2 -2
- camel/datagen/evol_instruct/scorer.py +12 -12
- camel/datagen/evol_instruct/templates.py +16 -16
- camel/datagen/self_improving_cot.py +5 -5
- camel/datagen/self_instruct/__init__.py +2 -2
- camel/datagen/self_instruct/filter/__init__.py +2 -2
- camel/datagen/self_instruct/filter/filter_function.py +2 -2
- camel/datagen/self_instruct/filter/filter_registry.py +2 -2
- camel/datagen/self_instruct/filter/instruction_filter.py +2 -2
- camel/datagen/self_instruct/self_instruct.py +2 -2
- camel/datagen/self_instruct/templates.py +47 -47
- camel/datagen/source2synth/__init__.py +2 -2
- camel/datagen/source2synth/data_processor.py +2 -2
- camel/datagen/source2synth/models.py +2 -2
- camel/datagen/source2synth/user_data_processor_config.py +2 -2
- camel/datahubs/__init__.py +2 -2
- camel/datahubs/base.py +2 -2
- camel/datahubs/huggingface.py +2 -2
- camel/datahubs/models.py +2 -2
- camel/datasets/__init__.py +2 -2
- camel/datasets/base_generator.py +41 -12
- camel/datasets/few_shot_generator.py +18 -18
- camel/datasets/models.py +2 -2
- camel/datasets/self_instruct_generator.py +2 -2
- camel/datasets/static_dataset.py +2 -2
- camel/embeddings/__init__.py +2 -2
- camel/embeddings/azure_embedding.py +2 -2
- camel/embeddings/base.py +2 -2
- camel/embeddings/gemini_embedding.py +2 -2
- camel/embeddings/jina_embedding.py +2 -2
- camel/embeddings/mistral_embedding.py +2 -2
- camel/embeddings/openai_compatible_embedding.py +2 -2
- camel/embeddings/openai_embedding.py +2 -2
- camel/embeddings/sentence_transformers_embeddings.py +2 -2
- camel/embeddings/together_embedding.py +2 -2
- camel/embeddings/vlm_embedding.py +2 -2
- camel/environments/__init__.py +14 -2
- camel/environments/models.py +2 -2
- camel/environments/multi_step.py +2 -2
- camel/environments/rlcards_env.py +860 -0
- camel/environments/single_step.py +30 -5
- camel/environments/tic_tac_toe.py +3 -3
- camel/extractors/__init__.py +2 -2
- camel/extractors/base.py +2 -2
- camel/extractors/python_strategies.py +2 -2
- camel/generators.py +2 -2
- camel/human.py +2 -2
- camel/interpreters/__init__.py +4 -2
- camel/interpreters/base.py +2 -2
- camel/interpreters/docker/Dockerfile +14 -24
- camel/interpreters/docker_interpreter.py +5 -4
- camel/interpreters/e2b_interpreter.py +36 -3
- camel/interpreters/internal_python_interpreter.py +53 -4
- camel/interpreters/interpreter_error.py +2 -2
- camel/interpreters/ipython_interpreter.py +2 -2
- camel/interpreters/microsandbox_interpreter.py +395 -0
- camel/interpreters/subprocess_interpreter.py +2 -2
- camel/loaders/__init__.py +13 -4
- camel/loaders/apify_reader.py +2 -2
- camel/loaders/base_io.py +2 -2
- camel/loaders/base_loader.py +85 -0
- camel/loaders/chunkr_reader.py +11 -2
- camel/loaders/crawl4ai_reader.py +2 -2
- camel/loaders/firecrawl_reader.py +6 -6
- camel/loaders/jina_url_reader.py +2 -2
- camel/loaders/markitdown.py +2 -2
- camel/loaders/mineru_extractor.py +2 -2
- camel/loaders/mistral_reader.py +2 -2
- camel/loaders/scrapegraph_reader.py +2 -2
- camel/loaders/unstructured_io.py +2 -2
- camel/logger.py +5 -5
- camel/memories/__init__.py +2 -2
- camel/memories/agent_memories.py +86 -3
- camel/memories/base.py +36 -2
- camel/memories/blocks/__init__.py +2 -2
- camel/memories/blocks/chat_history_block.py +125 -7
- camel/memories/blocks/vectordb_block.py +10 -3
- camel/memories/context_creators/__init__.py +2 -2
- camel/memories/context_creators/score_based.py +31 -239
- camel/memories/records.py +90 -10
- camel/messages/__init__.py +2 -2
- camel/messages/base.py +178 -43
- camel/messages/conversion/__init__.py +2 -2
- camel/messages/conversion/alpaca.py +2 -2
- camel/messages/conversion/conversation_models.py +2 -2
- camel/messages/conversion/sharegpt/__init__.py +2 -2
- camel/messages/conversion/sharegpt/function_call_formatter.py +2 -2
- camel/messages/conversion/sharegpt/hermes/__init__.py +2 -2
- camel/messages/conversion/sharegpt/hermes/hermes_function_formatter.py +2 -2
- camel/messages/func_message.py +54 -17
- camel/models/__init__.py +16 -2
- camel/models/_utils.py +3 -3
- camel/models/aihubmix_model.py +83 -0
- camel/models/aiml_model.py +11 -18
- camel/models/amd_model.py +101 -0
- camel/models/anthropic_model.py +127 -20
- camel/models/aws_bedrock_model.py +12 -35
- camel/models/azure_openai_model.py +212 -89
- camel/models/base_audio_model.py +5 -3
- camel/models/base_model.py +195 -26
- camel/models/cerebras_model.py +83 -0
- camel/models/cohere_model.py +16 -21
- camel/models/cometapi_model.py +83 -0
- camel/models/crynux_model.py +11 -18
- camel/models/deepseek_model.py +18 -58
- camel/models/fish_audio_model.py +8 -2
- camel/models/gemini_model.py +389 -26
- camel/models/groq_model.py +11 -19
- camel/models/internlm_model.py +11 -18
- camel/models/litellm_model.py +56 -34
- camel/models/lmstudio_model.py +17 -20
- camel/models/minimax_model.py +83 -0
- camel/models/mistral_model.py +18 -19
- camel/models/model_factory.py +37 -3
- camel/models/model_manager.py +26 -8
- camel/models/modelscope_model.py +13 -193
- camel/models/moonshot_model.py +195 -21
- camel/models/nebius_model.py +83 -0
- camel/models/nemotron_model.py +19 -9
- camel/models/netmind_model.py +11 -18
- camel/models/novita_model.py +11 -18
- camel/models/nvidia_model.py +11 -18
- camel/models/ollama_model.py +14 -21
- camel/models/openai_audio_models.py +2 -2
- camel/models/openai_compatible_model.py +188 -45
- camel/models/openai_model.py +216 -71
- camel/models/openrouter_model.py +11 -19
- camel/models/ppio_model.py +11 -18
- camel/models/qianfan_model.py +89 -0
- camel/models/qwen_model.py +13 -193
- camel/models/reka_model.py +21 -21
- camel/models/reward/__init__.py +2 -2
- camel/models/reward/base_reward_model.py +2 -2
- camel/models/reward/evaluator.py +2 -2
- camel/models/reward/nemotron_model.py +2 -2
- camel/models/reward/skywork_model.py +2 -2
- camel/models/samba_model.py +48 -47
- camel/models/sglang_model.py +88 -40
- camel/models/siliconflow_model.py +12 -35
- camel/models/stub_model.py +10 -7
- camel/models/togetherai_model.py +11 -18
- camel/models/vllm_model.py +10 -18
- camel/models/volcano_model.py +16 -20
- camel/models/watsonx_model.py +7 -19
- camel/models/yi_model.py +11 -18
- camel/models/zhipuai_model.py +70 -18
- camel/parsers/__init__.py +18 -0
- camel/parsers/mcp_tool_call_parser.py +176 -0
- camel/personas/__init__.py +2 -2
- camel/personas/persona.py +2 -2
- camel/personas/persona_hub.py +2 -2
- camel/prompts/__init__.py +2 -2
- camel/prompts/ai_society.py +2 -2
- camel/prompts/base.py +2 -2
- camel/prompts/code.py +2 -2
- camel/prompts/evaluation.py +2 -2
- camel/prompts/generate_text_embedding_data.py +2 -2
- camel/prompts/image_craft.py +2 -2
- camel/prompts/misalignment.py +2 -2
- camel/prompts/multi_condition_image_craft.py +2 -2
- camel/prompts/object_recognition.py +2 -2
- camel/prompts/persona_hub.py +3 -3
- camel/prompts/prompt_templates.py +2 -2
- camel/prompts/role_description_prompt_template.py +2 -2
- camel/prompts/solution_extraction.py +8 -8
- camel/prompts/task_prompt_template.py +2 -2
- camel/prompts/translation.py +2 -2
- camel/prompts/video_description_prompt.py +3 -3
- camel/responses/__init__.py +2 -2
- camel/responses/agent_responses.py +2 -2
- camel/retrievers/__init__.py +2 -2
- camel/retrievers/auto_retriever.py +3 -2
- camel/retrievers/base.py +2 -2
- camel/retrievers/bm25_retriever.py +2 -2
- camel/retrievers/cohere_rerank_retriever.py +2 -2
- camel/retrievers/hybrid_retrival.py +2 -2
- camel/retrievers/vector_retriever.py +2 -2
- camel/runtimes/Dockerfile.multi-toolkit +90 -0
- camel/runtimes/__init__.py +2 -2
- camel/runtimes/api.py +79 -23
- camel/runtimes/base.py +2 -2
- camel/runtimes/configs.py +13 -13
- camel/runtimes/daytona_runtime.py +17 -18
- camel/runtimes/docker_runtime.py +12 -12
- camel/runtimes/llm_guard_runtime.py +26 -26
- camel/runtimes/remote_http_runtime.py +11 -11
- camel/runtimes/ubuntu_docker_runtime.py +2 -2
- camel/runtimes/utils/__init__.py +2 -2
- camel/runtimes/utils/function_risk_toolkit.py +2 -2
- camel/runtimes/utils/ignore_risk_toolkit.py +2 -2
- camel/schemas/__init__.py +2 -2
- camel/schemas/base.py +2 -2
- camel/schemas/openai_converter.py +3 -3
- camel/schemas/outlines_converter.py +2 -2
- camel/services/agent_openapi_server.py +380 -0
- camel/societies/__init__.py +4 -2
- camel/societies/babyagi_playing.py +2 -2
- camel/societies/role_playing.py +201 -80
- camel/societies/workforce/__init__.py +10 -3
- camel/societies/workforce/base.py +2 -2
- camel/societies/workforce/events.py +143 -0
- camel/societies/workforce/prompts.py +258 -33
- camel/societies/workforce/role_playing_worker.py +88 -31
- camel/societies/workforce/single_agent_worker.py +638 -40
- camel/societies/workforce/structured_output_handler.py +512 -0
- camel/societies/workforce/task_channel.py +182 -38
- camel/societies/workforce/utils.py +780 -65
- camel/societies/workforce/worker.py +92 -26
- camel/societies/workforce/workflow_memory_manager.py +1746 -0
- camel/societies/workforce/workforce.py +5276 -355
- camel/societies/workforce/workforce_callback.py +103 -0
- camel/societies/workforce/workforce_logger.py +647 -0
- camel/societies/workforce/workforce_metrics.py +33 -0
- camel/storages/__init__.py +6 -2
- camel/storages/graph_storages/__init__.py +2 -2
- camel/storages/graph_storages/base.py +2 -2
- camel/storages/graph_storages/graph_element.py +2 -2
- camel/storages/graph_storages/nebula_graph.py +4 -4
- camel/storages/graph_storages/neo4j_graph.py +7 -7
- camel/storages/key_value_storages/__init__.py +2 -2
- camel/storages/key_value_storages/base.py +2 -2
- camel/storages/key_value_storages/in_memory.py +2 -2
- camel/storages/key_value_storages/json.py +17 -4
- camel/storages/key_value_storages/mem0_cloud.py +50 -49
- camel/storages/key_value_storages/redis.py +2 -2
- camel/storages/object_storages/__init__.py +2 -2
- camel/storages/object_storages/amazon_s3.py +2 -2
- camel/storages/object_storages/azure_blob.py +2 -2
- camel/storages/object_storages/base.py +2 -2
- camel/storages/object_storages/google_cloud.py +3 -3
- camel/storages/vectordb_storages/__init__.py +8 -2
- camel/storages/vectordb_storages/base.py +2 -2
- camel/storages/vectordb_storages/chroma.py +731 -0
- camel/storages/vectordb_storages/faiss.py +2 -2
- camel/storages/vectordb_storages/milvus.py +2 -2
- camel/storages/vectordb_storages/oceanbase.py +15 -15
- camel/storages/vectordb_storages/pgvector.py +349 -0
- camel/storages/vectordb_storages/qdrant.py +6 -6
- camel/storages/vectordb_storages/surreal.py +372 -0
- camel/storages/vectordb_storages/tidb.py +11 -8
- camel/storages/vectordb_storages/weaviate.py +2 -2
- camel/tasks/__init__.py +2 -2
- camel/tasks/task.py +348 -26
- camel/tasks/task_prompt.py +3 -3
- camel/terminators/__init__.py +2 -2
- camel/terminators/base.py +2 -2
- camel/terminators/response_terminator.py +2 -2
- camel/terminators/token_limit_terminator.py +2 -2
- camel/toolkits/__init__.py +54 -10
- camel/toolkits/aci_toolkit.py +66 -21
- camel/toolkits/arxiv_toolkit.py +8 -8
- camel/toolkits/ask_news_toolkit.py +2 -2
- camel/toolkits/async_browser_toolkit.py +4 -4
- camel/toolkits/audio_analysis_toolkit.py +3 -3
- camel/toolkits/base.py +65 -7
- camel/toolkits/bohrium_toolkit.py +2 -2
- camel/toolkits/browser_toolkit.py +34 -21
- camel/toolkits/browser_toolkit_commons.py +4 -4
- camel/toolkits/code_execution.py +31 -4
- camel/toolkits/context_summarizer_toolkit.py +684 -0
- camel/toolkits/craw4ai_toolkit.py +93 -0
- camel/toolkits/dappier_toolkit.py +12 -8
- camel/toolkits/data_commons_toolkit.py +2 -2
- camel/toolkits/dingtalk.py +1135 -0
- camel/toolkits/earth_science_toolkit.py +5367 -0
- camel/toolkits/edgeone_pages_mcp_toolkit.py +49 -0
- camel/toolkits/excel_toolkit.py +905 -71
- camel/toolkits/file_toolkit.py +1402 -0
- camel/toolkits/function_tool.py +126 -18
- camel/toolkits/github_toolkit.py +109 -22
- camel/toolkits/gmail_toolkit.py +1839 -0
- camel/toolkits/google_calendar_toolkit.py +40 -6
- camel/toolkits/google_drive_mcp_toolkit.py +54 -0
- camel/toolkits/google_maps_toolkit.py +2 -2
- camel/toolkits/google_scholar_toolkit.py +2 -2
- camel/toolkits/human_toolkit.py +36 -12
- camel/toolkits/hybrid_browser_toolkit/__init__.py +18 -0
- camel/toolkits/hybrid_browser_toolkit/config_loader.py +185 -0
- camel/toolkits/hybrid_browser_toolkit/hybrid_browser_toolkit.py +246 -0
- camel/toolkits/hybrid_browser_toolkit/hybrid_browser_toolkit_ts.py +1973 -0
- camel/toolkits/hybrid_browser_toolkit/installer.py +203 -0
- camel/toolkits/hybrid_browser_toolkit/ts/package-lock.json +4589 -0
- camel/toolkits/hybrid_browser_toolkit/ts/package.json +33 -0
- camel/toolkits/hybrid_browser_toolkit/ts/src/browser-scripts.js +125 -0
- camel/toolkits/hybrid_browser_toolkit/ts/src/browser-session.ts +1929 -0
- camel/toolkits/hybrid_browser_toolkit/ts/src/config-loader.ts +233 -0
- camel/toolkits/hybrid_browser_toolkit/ts/src/hybrid-browser-toolkit.ts +589 -0
- camel/toolkits/hybrid_browser_toolkit/ts/src/index.ts +7 -0
- camel/toolkits/hybrid_browser_toolkit/ts/src/parent-child-filter.ts +226 -0
- camel/toolkits/hybrid_browser_toolkit/ts/src/snapshot-parser.ts +219 -0
- camel/toolkits/hybrid_browser_toolkit/ts/src/som-screenshot-injected.ts +543 -0
- camel/toolkits/hybrid_browser_toolkit/ts/src/types.ts +129 -0
- camel/toolkits/hybrid_browser_toolkit/ts/tsconfig.json +27 -0
- camel/toolkits/hybrid_browser_toolkit/ts/websocket-server.js +319 -0
- camel/toolkits/hybrid_browser_toolkit/ws_wrapper.py +1037 -0
- camel/toolkits/hybrid_browser_toolkit_py/__init__.py +17 -0
- camel/toolkits/hybrid_browser_toolkit_py/actions.py +575 -0
- camel/toolkits/hybrid_browser_toolkit_py/agent.py +311 -0
- camel/toolkits/hybrid_browser_toolkit_py/browser_session.py +787 -0
- camel/toolkits/hybrid_browser_toolkit_py/config_loader.py +490 -0
- camel/toolkits/hybrid_browser_toolkit_py/hybrid_browser_toolkit.py +2390 -0
- camel/toolkits/hybrid_browser_toolkit_py/snapshot.py +233 -0
- camel/toolkits/hybrid_browser_toolkit_py/stealth_script.js +0 -0
- camel/toolkits/hybrid_browser_toolkit_py/unified_analyzer.js +1043 -0
- camel/toolkits/image_analysis_toolkit.py +3 -6
- camel/toolkits/image_generation_toolkit.py +390 -0
- camel/toolkits/jina_reranker_toolkit.py +5 -6
- camel/toolkits/klavis_toolkit.py +7 -3
- camel/toolkits/linkedin_toolkit.py +2 -2
- camel/toolkits/markitdown_toolkit.py +104 -0
- camel/toolkits/math_toolkit.py +66 -12
- camel/toolkits/mcp_toolkit.py +412 -36
- camel/toolkits/memory_toolkit.py +7 -3
- camel/toolkits/meshy_toolkit.py +2 -2
- camel/toolkits/message_agent_toolkit.py +608 -0
- camel/toolkits/message_integration.py +724 -0
- camel/toolkits/mineru_toolkit.py +2 -2
- camel/toolkits/minimax_mcp_toolkit.py +195 -0
- camel/toolkits/networkx_toolkit.py +2 -2
- camel/toolkits/note_taking_toolkit.py +277 -0
- camel/toolkits/notion_mcp_toolkit.py +224 -0
- camel/toolkits/notion_toolkit.py +2 -2
- camel/toolkits/open_api_specs/biztoc/__init__.py +2 -2
- camel/toolkits/open_api_specs/biztoc/ai-plugin.json +1 -1
- camel/toolkits/open_api_specs/coursera/__init__.py +2 -2
- camel/toolkits/open_api_specs/create_qr_code/__init__.py +2 -2
- camel/toolkits/open_api_specs/klarna/__init__.py +2 -2
- camel/toolkits/open_api_specs/nasa_apod/__init__.py +2 -2
- camel/toolkits/open_api_specs/outschool/__init__.py +2 -2
- camel/toolkits/open_api_specs/outschool/ai-plugin.json +1 -1
- camel/toolkits/open_api_specs/outschool/openapi.yaml +1 -1
- camel/toolkits/open_api_specs/outschool/paths/__init__.py +2 -2
- camel/toolkits/open_api_specs/outschool/paths/get_classes.py +2 -2
- camel/toolkits/open_api_specs/outschool/paths/search_teachers.py +2 -2
- camel/toolkits/open_api_specs/security_config.py +2 -2
- camel/toolkits/open_api_specs/speak/__init__.py +2 -2
- camel/toolkits/open_api_specs/web_scraper/__init__.py +2 -2
- camel/toolkits/open_api_specs/web_scraper/ai-plugin.json +1 -1
- camel/toolkits/open_api_specs/web_scraper/paths/__init__.py +2 -2
- camel/toolkits/open_api_specs/web_scraper/paths/scraper.py +2 -2
- camel/toolkits/open_api_toolkit.py +2 -2
- camel/toolkits/openbb_toolkit.py +7 -3
- camel/toolkits/origene_mcp_toolkit.py +56 -0
- camel/toolkits/page_script.js +53 -53
- camel/toolkits/playwright_mcp_toolkit.py +13 -31
- camel/toolkits/pptx_toolkit.py +36 -23
- camel/toolkits/pubmed_toolkit.py +2 -2
- camel/toolkits/pulse_mcp_search_toolkit.py +2 -2
- camel/toolkits/pyautogui_toolkit.py +2 -2
- camel/toolkits/reddit_toolkit.py +2 -2
- camel/toolkits/resend_toolkit.py +168 -0
- camel/toolkits/retrieval_toolkit.py +2 -2
- camel/toolkits/screenshot_toolkit.py +213 -0
- camel/toolkits/search_toolkit.py +539 -146
- camel/toolkits/searxng_toolkit.py +2 -2
- camel/toolkits/semantic_scholar_toolkit.py +2 -2
- camel/toolkits/slack_toolkit.py +108 -58
- camel/toolkits/sql_toolkit.py +712 -0
- camel/toolkits/stripe_toolkit.py +2 -2
- camel/toolkits/sympy_toolkit.py +3 -3
- camel/toolkits/task_planning_toolkit.py +5 -5
- camel/toolkits/terminal_toolkit/__init__.py +18 -0
- camel/toolkits/terminal_toolkit/terminal_toolkit.py +1070 -0
- camel/toolkits/terminal_toolkit/utils.py +532 -0
- camel/toolkits/thinking_toolkit.py +3 -3
- camel/toolkits/twitter_toolkit.py +2 -2
- camel/toolkits/vertex_ai_veo_toolkit.py +590 -0
- camel/toolkits/video_analysis_toolkit.py +109 -29
- camel/toolkits/video_download_toolkit.py +19 -16
- camel/toolkits/weather_toolkit.py +2 -2
- camel/toolkits/web_deploy_toolkit.py +1219 -0
- camel/toolkits/wechat_official_toolkit.py +483 -0
- camel/toolkits/whatsapp_toolkit.py +2 -2
- camel/toolkits/wolfram_alpha_toolkit.py +2 -2
- camel/toolkits/zapier_toolkit.py +7 -3
- camel/types/__init__.py +4 -4
- camel/types/agents/__init__.py +2 -2
- camel/types/agents/tool_calling_record.py +6 -3
- camel/types/enums.py +378 -39
- camel/types/mcp_registries.py +2 -2
- camel/types/openai_types.py +4 -4
- camel/types/unified_model_type.py +38 -6
- camel/utils/__init__.py +2 -2
- camel/utils/async_func.py +2 -2
- camel/utils/chunker/__init__.py +2 -2
- camel/utils/chunker/base.py +2 -2
- camel/utils/chunker/code_chunker.py +2 -2
- camel/utils/chunker/uio_chunker.py +2 -2
- camel/utils/commons.py +38 -7
- camel/utils/constants.py +5 -2
- camel/utils/context_utils.py +1134 -0
- camel/utils/deduplication.py +2 -2
- camel/utils/filename.py +2 -2
- camel/utils/langfuse.py +2 -2
- camel/utils/mcp.py +140 -6
- camel/utils/mcp_client.py +48 -38
- camel/utils/message_summarizer.py +148 -0
- camel/utils/response_format.py +2 -2
- camel/utils/token_counting.py +45 -22
- camel/utils/tool_result.py +44 -0
- camel/verifiers/__init__.py +2 -2
- camel/verifiers/base.py +2 -2
- camel/verifiers/math_verifier.py +2 -2
- camel/verifiers/models.py +2 -2
- camel/verifiers/physics_verifier.py +2 -2
- camel/verifiers/python_verifier.py +2 -2
- {camel_ai-0.2.65.dist-info → camel_ai-0.2.82.dist-info}/METADATA +327 -94
- camel_ai-0.2.82.dist-info/RECORD +507 -0
- {camel_ai-0.2.65.dist-info → camel_ai-0.2.82.dist-info}/WHEEL +1 -1
- {camel_ai-0.2.65.dist-info → camel_ai-0.2.82.dist-info}/licenses/LICENSE +1 -1
- camel/loaders/pandas_reader.py +0 -368
- camel/toolkits/dalle_toolkit.py +0 -175
- camel/toolkits/file_write_toolkit.py +0 -444
- camel/toolkits/openai_agent_toolkit.py +0 -135
- camel/toolkits/terminal_toolkit.py +0 -1037
- camel_ai-0.2.65.dist-info/RECORD +0 -426
camel/toolkits/function_tool.py
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# ========= Copyright 2023-
|
|
1
|
+
# ========= Copyright 2023-2025 @ CAMEL-AI.org. All Rights Reserved. =========
|
|
2
2
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
3
3
|
# you may not use this file except in compliance with the License.
|
|
4
4
|
# You may obtain a copy of the License at
|
|
@@ -10,12 +10,15 @@
|
|
|
10
10
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
11
11
|
# See the License for the specific language governing permissions and
|
|
12
12
|
# limitations under the License.
|
|
13
|
-
# ========= Copyright 2023-
|
|
13
|
+
# ========= Copyright 2023-2025 @ CAMEL-AI.org. All Rights Reserved. =========
|
|
14
14
|
import ast
|
|
15
|
+
import asyncio
|
|
16
|
+
import functools
|
|
15
17
|
import inspect
|
|
16
18
|
import logging
|
|
17
19
|
import textwrap
|
|
18
20
|
import warnings
|
|
21
|
+
from concurrent.futures import ThreadPoolExecutor
|
|
19
22
|
from inspect import Parameter, getsource, signature
|
|
20
23
|
from typing import Any, Callable, Dict, Mapping, Optional, Tuple, Type
|
|
21
24
|
|
|
@@ -31,6 +34,9 @@ from camel.utils import get_pydantic_object_schema, to_pascal
|
|
|
31
34
|
|
|
32
35
|
logger = logging.getLogger(__name__)
|
|
33
36
|
|
|
37
|
+
# Shared thread pool for running sync tools without blocking the event loop
|
|
38
|
+
_SYNC_TOOL_EXECUTOR = ThreadPoolExecutor(max_workers=64)
|
|
39
|
+
|
|
34
40
|
|
|
35
41
|
def _remove_a_key(d: Dict, remove_key: Any) -> None:
|
|
36
42
|
r"""Remove a key from a dictionary recursively."""
|
|
@@ -156,7 +162,12 @@ def get_openai_tool_schema(func: Callable) -> Dict[str, Any]:
|
|
|
156
162
|
if (name := param.arg_name) in parameters_dict["properties"] and (
|
|
157
163
|
description := param.description
|
|
158
164
|
):
|
|
159
|
-
|
|
165
|
+
# OpenAI does not allow descriptions on properties that use $ref.
|
|
166
|
+
# To avoid schema errors, we only add the description if "$ref" is
|
|
167
|
+
# not present.
|
|
168
|
+
prop = parameters_dict["properties"][name]
|
|
169
|
+
if "$ref" not in prop:
|
|
170
|
+
prop["description"] = description
|
|
160
171
|
|
|
161
172
|
short_description = docstring.short_description or ""
|
|
162
173
|
long_description = docstring.long_description or ""
|
|
@@ -190,7 +201,9 @@ def sanitize_and_enforce_required(parameters_dict):
|
|
|
190
201
|
r"""Cleans and updates the function schema to conform with OpenAI's
|
|
191
202
|
requirements:
|
|
192
203
|
- Removes invalid 'default' fields from the parameters schema.
|
|
193
|
-
- Ensures all fields
|
|
204
|
+
- Ensures all fields are marked as required or have null type for optional
|
|
205
|
+
fields.
|
|
206
|
+
- Recursively adds additionalProperties: false to all nested objects.
|
|
194
207
|
|
|
195
208
|
Args:
|
|
196
209
|
parameters_dict (dict): The dictionary representing the function
|
|
@@ -198,8 +211,38 @@ def sanitize_and_enforce_required(parameters_dict):
|
|
|
198
211
|
|
|
199
212
|
Returns:
|
|
200
213
|
dict: The updated dictionary with invalid defaults removed and all
|
|
201
|
-
fields
|
|
214
|
+
fields properly configured for strict mode.
|
|
202
215
|
"""
|
|
216
|
+
|
|
217
|
+
def _add_additional_properties_false(obj):
|
|
218
|
+
r"""Recursively add additionalProperties: false to all objects."""
|
|
219
|
+
if isinstance(obj, dict):
|
|
220
|
+
if (
|
|
221
|
+
obj.get("type") == "object"
|
|
222
|
+
and "additionalProperties" not in obj
|
|
223
|
+
):
|
|
224
|
+
obj["additionalProperties"] = False
|
|
225
|
+
|
|
226
|
+
# Process nested structures
|
|
227
|
+
for key, value in obj.items():
|
|
228
|
+
if key == "properties" and isinstance(value, dict):
|
|
229
|
+
for prop_value in value.values():
|
|
230
|
+
_add_additional_properties_false(prop_value)
|
|
231
|
+
elif key in [
|
|
232
|
+
"items",
|
|
233
|
+
"allOf",
|
|
234
|
+
"oneOf",
|
|
235
|
+
"anyOf",
|
|
236
|
+
] and isinstance(value, (dict, list)):
|
|
237
|
+
if isinstance(value, dict):
|
|
238
|
+
_add_additional_properties_false(value)
|
|
239
|
+
elif isinstance(value, list):
|
|
240
|
+
for item in value:
|
|
241
|
+
_add_additional_properties_false(item)
|
|
242
|
+
elif key == "$defs" and isinstance(value, dict):
|
|
243
|
+
for def_value in value.values():
|
|
244
|
+
_add_additional_properties_false(def_value)
|
|
245
|
+
|
|
203
246
|
# Check if 'function' and 'parameters' exist
|
|
204
247
|
if (
|
|
205
248
|
'function' in parameters_dict
|
|
@@ -209,12 +252,65 @@ def sanitize_and_enforce_required(parameters_dict):
|
|
|
209
252
|
parameters = parameters_dict['function']['parameters']
|
|
210
253
|
properties = parameters.get('properties', {})
|
|
211
254
|
|
|
212
|
-
#
|
|
213
|
-
|
|
214
|
-
|
|
255
|
+
# Track which fields should be required vs optional
|
|
256
|
+
required_fields = []
|
|
257
|
+
|
|
258
|
+
# Process each property
|
|
259
|
+
for field_name, field_schema in properties.items():
|
|
260
|
+
# Check if this field had a default value (making it optional)
|
|
261
|
+
had_default = 'default' in field_schema
|
|
262
|
+
|
|
263
|
+
# Remove 'default' key from field schema as required by OpenAI
|
|
264
|
+
field_schema.pop('default', None)
|
|
265
|
+
|
|
266
|
+
if had_default:
|
|
267
|
+
# This field is optional - add null to its type
|
|
268
|
+
current_type = field_schema.get('type')
|
|
269
|
+
has_ref = '$ref' in field_schema
|
|
270
|
+
has_any_of = 'anyOf' in field_schema
|
|
271
|
+
|
|
272
|
+
if has_ref:
|
|
273
|
+
# Fields with $ref shouldn't have additional type field
|
|
274
|
+
# The $ref itself defines the type structure
|
|
275
|
+
pass
|
|
276
|
+
elif has_any_of:
|
|
277
|
+
# Field already has anyOf
|
|
278
|
+
any_of_types = field_schema['anyOf']
|
|
279
|
+
has_null_type = any(
|
|
280
|
+
item.get('type') == 'null' for item in any_of_types
|
|
281
|
+
)
|
|
282
|
+
if not has_null_type:
|
|
283
|
+
# Add null type to anyOf
|
|
284
|
+
field_schema['anyOf'].append({'type': 'null'})
|
|
285
|
+
# Remove conflicting type field if it exists
|
|
286
|
+
if 'type' in field_schema:
|
|
287
|
+
del field_schema['type']
|
|
288
|
+
elif current_type:
|
|
289
|
+
if isinstance(current_type, str):
|
|
290
|
+
# Single type - convert to array with null
|
|
291
|
+
field_schema['type'] = [current_type, 'null']
|
|
292
|
+
elif (
|
|
293
|
+
isinstance(current_type, list)
|
|
294
|
+
and 'null' not in current_type
|
|
295
|
+
):
|
|
296
|
+
# Array of types - add null if not present
|
|
297
|
+
field_schema['type'] = [*current_type, 'null']
|
|
298
|
+
else:
|
|
299
|
+
# No type specified, add null type
|
|
300
|
+
field_schema['type'] = ['null']
|
|
301
|
+
|
|
302
|
+
# Optional fields are still marked as required in strict mode
|
|
303
|
+
# but with null type to indicate they can be omitted
|
|
304
|
+
required_fields.append(field_name)
|
|
305
|
+
else:
|
|
306
|
+
# This field is required
|
|
307
|
+
required_fields.append(field_name)
|
|
308
|
+
|
|
309
|
+
# Set all fields as required (strict mode requirement)
|
|
310
|
+
parameters['required'] = required_fields
|
|
215
311
|
|
|
216
|
-
#
|
|
217
|
-
parameters
|
|
312
|
+
# Recursively add additionalProperties: false to all objects
|
|
313
|
+
_add_additional_properties_false(parameters)
|
|
218
314
|
|
|
219
315
|
return parameters_dict
|
|
220
316
|
|
|
@@ -392,10 +488,15 @@ class FunctionTool:
|
|
|
392
488
|
result = self.func(*args, **kwargs)
|
|
393
489
|
return result
|
|
394
490
|
except Exception as e:
|
|
491
|
+
parts = []
|
|
492
|
+
if args:
|
|
493
|
+
parts.append(f"args={args}")
|
|
494
|
+
if kwargs:
|
|
495
|
+
parts.append(f"kwargs={kwargs}")
|
|
496
|
+
args_str = ", ".join(parts) if parts else "no arguments"
|
|
395
497
|
raise ValueError(
|
|
396
498
|
f"Execution of function {self.func.__name__} failed with "
|
|
397
|
-
f"
|
|
398
|
-
f"Error: {e}"
|
|
499
|
+
f"{args_str}. Error: {e}"
|
|
399
500
|
)
|
|
400
501
|
|
|
401
502
|
async def async_call(self, *args: Any, **kwargs: Any) -> Any:
|
|
@@ -405,7 +506,13 @@ class FunctionTool:
|
|
|
405
506
|
if self.is_async:
|
|
406
507
|
return await self.func(*args, **kwargs)
|
|
407
508
|
else:
|
|
408
|
-
|
|
509
|
+
# Run sync function in executor to avoid blocking event loop
|
|
510
|
+
# Use functools.partial to properly capture args/kwargs
|
|
511
|
+
loop = asyncio.get_running_loop()
|
|
512
|
+
return await loop.run_in_executor(
|
|
513
|
+
_SYNC_TOOL_EXECUTOR,
|
|
514
|
+
functools.partial(self.func, *args, **kwargs),
|
|
515
|
+
)
|
|
409
516
|
|
|
410
517
|
@property
|
|
411
518
|
def is_async(self) -> bool:
|
|
@@ -437,8 +544,8 @@ class FunctionTool:
|
|
|
437
544
|
|
|
438
545
|
# Check the function description, if no description then raise warming
|
|
439
546
|
if not openai_tool_schema["function"].get("description"):
|
|
440
|
-
warnings.warn(f"""Function description is missing for
|
|
441
|
-
{openai_tool_schema['function']['name']}. This may
|
|
547
|
+
warnings.warn(f"""Function description is missing for
|
|
548
|
+
{openai_tool_schema['function']['name']}. This may
|
|
442
549
|
affect the quality of tool calling.""")
|
|
443
550
|
|
|
444
551
|
# Validate whether parameters
|
|
@@ -459,9 +566,10 @@ class FunctionTool:
|
|
|
459
566
|
param_dict = properties[param_name]
|
|
460
567
|
if "description" not in param_dict:
|
|
461
568
|
warnings.warn(
|
|
462
|
-
f"Parameter description is missing "
|
|
463
|
-
f"
|
|
464
|
-
f"
|
|
569
|
+
f"Parameter description is missing for the "
|
|
570
|
+
f"function '{openai_tool_schema['function']['name']}'. "
|
|
571
|
+
f"The parameter definition is {param_dict}. "
|
|
572
|
+
f"This may affect the quality of tool calling."
|
|
465
573
|
)
|
|
466
574
|
|
|
467
575
|
def get_openai_tool_schema(self) -> Dict[str, Any]:
|
camel/toolkits/github_toolkit.py
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# ========= Copyright 2023-
|
|
1
|
+
# ========= Copyright 2023-2025 @ CAMEL-AI.org. All Rights Reserved. =========
|
|
2
2
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
3
3
|
# you may not use this file except in compliance with the License.
|
|
4
4
|
# You may obtain a copy of the License at
|
|
@@ -10,10 +10,11 @@
|
|
|
10
10
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
11
11
|
# See the License for the specific language governing permissions and
|
|
12
12
|
# limitations under the License.
|
|
13
|
-
# ========= Copyright 2023-
|
|
13
|
+
# ========= Copyright 2023-2025 @ CAMEL-AI.org. All Rights Reserved. =========
|
|
14
14
|
|
|
15
15
|
import logging
|
|
16
16
|
import os
|
|
17
|
+
import warnings
|
|
17
18
|
from typing import Dict, List, Literal, Optional, Union
|
|
18
19
|
|
|
19
20
|
from camel.toolkits import FunctionTool
|
|
@@ -80,7 +81,7 @@ class GithubToolkit(BaseToolkit):
|
|
|
80
81
|
)
|
|
81
82
|
return GITHUB_ACCESS_TOKEN
|
|
82
83
|
|
|
83
|
-
def
|
|
84
|
+
def github_create_pull_request(
|
|
84
85
|
self,
|
|
85
86
|
repo_name: str,
|
|
86
87
|
file_path: str,
|
|
@@ -150,7 +151,7 @@ class GithubToolkit(BaseToolkit):
|
|
|
150
151
|
else:
|
|
151
152
|
raise ValueError("PRs with multiple files aren't supported yet.")
|
|
152
153
|
|
|
153
|
-
def
|
|
154
|
+
def github_get_issue_list(
|
|
154
155
|
self, repo_name: str, state: Literal["open", "closed", "all"] = "all"
|
|
155
156
|
) -> List[Dict[str, object]]:
|
|
156
157
|
r"""Retrieves all issues from the GitHub repository.
|
|
@@ -158,7 +159,7 @@ class GithubToolkit(BaseToolkit):
|
|
|
158
159
|
Args:
|
|
159
160
|
repo_name (str): The name of the GitHub repository.
|
|
160
161
|
state (Literal["open", "closed", "all"]): The state of pull
|
|
161
|
-
requests to retrieve. (default: :obj
|
|
162
|
+
requests to retrieve. (default: :obj:`all`)
|
|
162
163
|
Options are:
|
|
163
164
|
- "open": Retrieve only open pull requests.
|
|
164
165
|
- "closed": Retrieve only closed pull requests.
|
|
@@ -177,7 +178,9 @@ class GithubToolkit(BaseToolkit):
|
|
|
177
178
|
|
|
178
179
|
return issues_info
|
|
179
180
|
|
|
180
|
-
def
|
|
181
|
+
def github_get_issue_content(
|
|
182
|
+
self, repo_name: str, issue_number: int
|
|
183
|
+
) -> str:
|
|
181
184
|
r"""Retrieves the content of a specific issue by its number.
|
|
182
185
|
|
|
183
186
|
Args:
|
|
@@ -194,7 +197,7 @@ class GithubToolkit(BaseToolkit):
|
|
|
194
197
|
except Exception as e:
|
|
195
198
|
return f"can't get Issue number {issue_number}: {e!s}"
|
|
196
199
|
|
|
197
|
-
def
|
|
200
|
+
def github_get_pull_request_list(
|
|
198
201
|
self, repo_name: str, state: Literal["open", "closed", "all"] = "all"
|
|
199
202
|
) -> List[Dict[str, object]]:
|
|
200
203
|
r"""Retrieves all pull requests from the GitHub repository.
|
|
@@ -202,7 +205,7 @@ class GithubToolkit(BaseToolkit):
|
|
|
202
205
|
Args:
|
|
203
206
|
repo_name (str): The name of the GitHub repository.
|
|
204
207
|
state (Literal["open", "closed", "all"]): The state of pull
|
|
205
|
-
requests to retrieve. (default: :obj
|
|
208
|
+
requests to retrieve. (default: :obj:`all`)
|
|
206
209
|
Options are:
|
|
207
210
|
- "open": Retrieve only open pull requests.
|
|
208
211
|
- "closed": Retrieve only closed pull requests.
|
|
@@ -221,7 +224,7 @@ class GithubToolkit(BaseToolkit):
|
|
|
221
224
|
|
|
222
225
|
return pull_requests_info
|
|
223
226
|
|
|
224
|
-
def
|
|
227
|
+
def github_get_pull_request_code(
|
|
225
228
|
self, repo_name: str, pr_number: int
|
|
226
229
|
) -> List[Dict[str, str]]:
|
|
227
230
|
r"""Retrieves the code changes of a specific pull request.
|
|
@@ -253,7 +256,7 @@ class GithubToolkit(BaseToolkit):
|
|
|
253
256
|
|
|
254
257
|
return files_changed
|
|
255
258
|
|
|
256
|
-
def
|
|
259
|
+
def github_get_pull_request_comments(
|
|
257
260
|
self, repo_name: str, pr_number: int
|
|
258
261
|
) -> List[Dict[str, str]]:
|
|
259
262
|
r"""Retrieves the comments from a specific pull request.
|
|
@@ -278,14 +281,16 @@ class GithubToolkit(BaseToolkit):
|
|
|
278
281
|
|
|
279
282
|
return comments
|
|
280
283
|
|
|
281
|
-
def
|
|
284
|
+
def github_get_all_file_paths(
|
|
285
|
+
self, repo_name: str, path: str = ""
|
|
286
|
+
) -> List[str]:
|
|
282
287
|
r"""Recursively retrieves all file paths in the GitHub repository.
|
|
283
288
|
|
|
284
289
|
Args:
|
|
285
290
|
repo_name (str): The name of the GitHub repository.
|
|
286
291
|
path (str): The repository path to start the traversal from.
|
|
287
292
|
empty string means starts from the root directory.
|
|
288
|
-
(default: :obj
|
|
293
|
+
(default: :obj:`""`)
|
|
289
294
|
|
|
290
295
|
Returns:
|
|
291
296
|
List[str]: A list of file paths within the specified directory
|
|
@@ -308,13 +313,15 @@ class GithubToolkit(BaseToolkit):
|
|
|
308
313
|
for content in contents:
|
|
309
314
|
if content.type == "dir":
|
|
310
315
|
# If it's a directory, recursively retrieve its file paths
|
|
311
|
-
files.extend(self.
|
|
316
|
+
files.extend(self.github_get_all_file_paths(content.path))
|
|
312
317
|
else:
|
|
313
318
|
# If it's a file, add its path to the list
|
|
314
319
|
files.append(content.path)
|
|
315
320
|
return files
|
|
316
321
|
|
|
317
|
-
def
|
|
322
|
+
def github_retrieve_file_content(
|
|
323
|
+
self, repo_name: str, file_path: str
|
|
324
|
+
) -> str:
|
|
318
325
|
r"""Retrieves the content of a file from the GitHub repository.
|
|
319
326
|
|
|
320
327
|
Args:
|
|
@@ -343,12 +350,92 @@ class GithubToolkit(BaseToolkit):
|
|
|
343
350
|
the functions in the toolkit.
|
|
344
351
|
"""
|
|
345
352
|
return [
|
|
346
|
-
FunctionTool(self.
|
|
347
|
-
FunctionTool(self.
|
|
348
|
-
FunctionTool(self.
|
|
349
|
-
FunctionTool(self.
|
|
350
|
-
FunctionTool(self.
|
|
351
|
-
FunctionTool(self.
|
|
352
|
-
FunctionTool(self.
|
|
353
|
-
FunctionTool(self.
|
|
353
|
+
FunctionTool(self.github_create_pull_request),
|
|
354
|
+
FunctionTool(self.github_get_issue_list),
|
|
355
|
+
FunctionTool(self.github_get_issue_content),
|
|
356
|
+
FunctionTool(self.github_get_pull_request_list),
|
|
357
|
+
FunctionTool(self.github_get_pull_request_code),
|
|
358
|
+
FunctionTool(self.github_get_pull_request_comments),
|
|
359
|
+
FunctionTool(self.github_get_all_file_paths),
|
|
360
|
+
FunctionTool(self.github_retrieve_file_content),
|
|
354
361
|
]
|
|
362
|
+
|
|
363
|
+
# Deprecated method aliases for backward compatibility
|
|
364
|
+
def create_pull_request(self, *args, **kwargs):
|
|
365
|
+
r"""Deprecated: Use github_create_pull_request instead."""
|
|
366
|
+
warnings.warn(
|
|
367
|
+
"create_pull_request is deprecated. Use "
|
|
368
|
+
"github_create_pull_request instead.",
|
|
369
|
+
DeprecationWarning,
|
|
370
|
+
stacklevel=2,
|
|
371
|
+
)
|
|
372
|
+
return self.github_create_pull_request(*args, **kwargs)
|
|
373
|
+
|
|
374
|
+
def get_issue_list(self, *args, **kwargs):
|
|
375
|
+
r"""Deprecated: Use github_get_issue_list instead."""
|
|
376
|
+
warnings.warn(
|
|
377
|
+
"get_issue_list is deprecated. Use github_get_issue_list instead.",
|
|
378
|
+
DeprecationWarning,
|
|
379
|
+
stacklevel=2,
|
|
380
|
+
)
|
|
381
|
+
return self.github_get_issue_list(*args, **kwargs)
|
|
382
|
+
|
|
383
|
+
def get_issue_content(self, *args, **kwargs):
|
|
384
|
+
r"""Deprecated: Use github_get_issue_content instead."""
|
|
385
|
+
warnings.warn(
|
|
386
|
+
"get_issue_content is deprecated. Use "
|
|
387
|
+
"github_get_issue_content instead.",
|
|
388
|
+
DeprecationWarning,
|
|
389
|
+
stacklevel=2,
|
|
390
|
+
)
|
|
391
|
+
return self.github_get_issue_content(*args, **kwargs)
|
|
392
|
+
|
|
393
|
+
def get_pull_request_list(self, *args, **kwargs):
|
|
394
|
+
r"""Deprecated: Use github_get_pull_request_list instead."""
|
|
395
|
+
warnings.warn(
|
|
396
|
+
"get_pull_request_list is deprecated. "
|
|
397
|
+
"Use github_get_pull_request_list instead.",
|
|
398
|
+
DeprecationWarning,
|
|
399
|
+
stacklevel=2,
|
|
400
|
+
)
|
|
401
|
+
return self.github_get_pull_request_list(*args, **kwargs)
|
|
402
|
+
|
|
403
|
+
def get_pull_request_code(self, *args, **kwargs):
|
|
404
|
+
r"""Deprecated: Use github_get_pull_request_code instead."""
|
|
405
|
+
warnings.warn(
|
|
406
|
+
"get_pull_request_code is deprecated. Use "
|
|
407
|
+
"github_get_pull_request_code instead.",
|
|
408
|
+
DeprecationWarning,
|
|
409
|
+
stacklevel=2,
|
|
410
|
+
)
|
|
411
|
+
return self.github_get_pull_request_code(*args, **kwargs)
|
|
412
|
+
|
|
413
|
+
def get_pull_request_comments(self, *args, **kwargs):
|
|
414
|
+
r"""Deprecated: Use github_get_pull_request_comments instead."""
|
|
415
|
+
warnings.warn(
|
|
416
|
+
"get_pull_request_comments is deprecated. "
|
|
417
|
+
"Use github_get_pull_request_comments instead.",
|
|
418
|
+
DeprecationWarning,
|
|
419
|
+
stacklevel=2,
|
|
420
|
+
)
|
|
421
|
+
return self.github_get_pull_request_comments(*args, **kwargs)
|
|
422
|
+
|
|
423
|
+
def get_all_file_paths(self, *args, **kwargs):
|
|
424
|
+
r"""Deprecated: Use github_get_all_file_paths instead."""
|
|
425
|
+
warnings.warn(
|
|
426
|
+
"get_all_file_paths is deprecated. Use "
|
|
427
|
+
"github_get_all_file_paths instead.",
|
|
428
|
+
DeprecationWarning,
|
|
429
|
+
stacklevel=2,
|
|
430
|
+
)
|
|
431
|
+
return self.github_get_all_file_paths(*args, **kwargs)
|
|
432
|
+
|
|
433
|
+
def retrieve_file_content(self, *args, **kwargs):
|
|
434
|
+
r"""Deprecated: Use github_retrieve_file_content instead."""
|
|
435
|
+
warnings.warn(
|
|
436
|
+
"retrieve_file_content is deprecated. "
|
|
437
|
+
"Use github_retrieve_file_content instead.",
|
|
438
|
+
DeprecationWarning,
|
|
439
|
+
stacklevel=2,
|
|
440
|
+
)
|
|
441
|
+
return self.github_retrieve_file_content(*args, **kwargs)
|