camel-ai 0.2.73a0__tar.gz → 0.2.73a2__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.
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/PKG-INFO +3 -3
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/__init__.py +1 -1
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/agents/chat_agent.py +26 -1
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/__init__.py +2 -0
- camel_ai-0.2.73a2/camel/toolkits/hybrid_browser_toolkit/hybrid_browser_toolkit.py +177 -0
- camel_ai-0.2.73a0/camel/toolkits/hybrid_browser_toolkit/hybrid_browser_toolkit.py → camel_ai-0.2.73a2/camel/toolkits/hybrid_browser_toolkit/hybrid_browser_toolkit_ts.py +1 -1
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/hybrid_browser_toolkit/ts/src/browser-session.ts +46 -17
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/hybrid_browser_toolkit/ts/websocket-server.js +46 -2
- camel_ai-0.2.73a2/camel/toolkits/hybrid_browser_toolkit_py/__init__.py +17 -0
- camel_ai-0.2.73a2/camel/toolkits/hybrid_browser_toolkit_py/actions.py +417 -0
- camel_ai-0.2.73a2/camel/toolkits/hybrid_browser_toolkit_py/agent.py +311 -0
- camel_ai-0.2.73a2/camel/toolkits/hybrid_browser_toolkit_py/browser_session.py +740 -0
- camel_ai-0.2.73a2/camel/toolkits/hybrid_browser_toolkit_py/config_loader.py +447 -0
- camel_ai-0.2.73a2/camel/toolkits/hybrid_browser_toolkit_py/hybrid_browser_toolkit.py +1994 -0
- camel_ai-0.2.73a2/camel/toolkits/hybrid_browser_toolkit_py/snapshot.py +227 -0
- camel_ai-0.2.73a2/camel/toolkits/hybrid_browser_toolkit_py/stealth_script.js +0 -0
- camel_ai-0.2.73a2/camel/toolkits/hybrid_browser_toolkit_py/unified_analyzer.js +1002 -0
- camel_ai-0.2.73a2/camel/toolkits/notion_mcp_toolkit.py +234 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/slack_toolkit.py +38 -48
- camel_ai-0.2.73a2/hatch_build_npm.py +293 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/pyproject.toml +3 -3
- camel_ai-0.2.73a0/hatch_build_npm.py +0 -213
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/.gitignore +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/LICENSE +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/README.md +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/agents/__init__.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/agents/_types.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/agents/_utils.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/agents/base.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/agents/critic_agent.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/agents/deductive_reasoner_agent.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/agents/embodied_agent.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/agents/knowledge_graph_agent.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/agents/mcp_agent.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/agents/multi_hop_generator_agent.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/agents/programmed_agent_instruction.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/agents/repo_agent.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/agents/role_assignment_agent.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/agents/search_agent.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/agents/task_agent.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/agents/tool_agents/__init__.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/agents/tool_agents/base.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/agents/tool_agents/hugging_face_tool_agent.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/benchmarks/__init__.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/benchmarks/apibank.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/benchmarks/apibench.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/benchmarks/base.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/benchmarks/browsecomp.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/benchmarks/gaia.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/benchmarks/mock_website/README.md +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/benchmarks/mock_website/mock_web.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/benchmarks/mock_website/requirements.txt +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/benchmarks/mock_website/shopping_mall/app.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/benchmarks/mock_website/task.json +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/benchmarks/nexus.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/benchmarks/ragbench.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/bots/__init__.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/bots/discord/__init__.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/bots/discord/discord_app.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/bots/discord/discord_installation.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/bots/discord/discord_store.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/bots/slack/__init__.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/bots/slack/models.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/bots/slack/slack_app.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/bots/telegram_bot.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/configs/__init__.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/configs/aiml_config.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/configs/anthropic_config.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/configs/base_config.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/configs/bedrock_config.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/configs/cohere_config.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/configs/crynux_config.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/configs/deepseek_config.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/configs/gemini_config.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/configs/groq_config.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/configs/internlm_config.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/configs/litellm_config.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/configs/lmstudio_config.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/configs/mistral_config.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/configs/modelscope_config.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/configs/moonshot_config.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/configs/netmind_config.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/configs/novita_config.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/configs/nvidia_config.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/configs/ollama_config.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/configs/openai_config.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/configs/openrouter_config.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/configs/ppio_config.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/configs/qianfan_config.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/configs/qwen_config.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/configs/reka_config.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/configs/samba_config.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/configs/sglang_config.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/configs/siliconflow_config.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/configs/togetherai_config.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/configs/vllm_config.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/configs/watsonx_config.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/configs/yi_config.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/configs/zhipuai_config.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/data_collectors/__init__.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/data_collectors/alpaca_collector.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/data_collectors/base.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/data_collectors/sharegpt_collector.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/datagen/__init__.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/datagen/cot_datagen.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/datagen/evol_instruct/__init__.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/datagen/evol_instruct/evol_instruct.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/datagen/evol_instruct/scorer.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/datagen/evol_instruct/templates.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/datagen/self_improving_cot.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/datagen/self_instruct/__init__.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/datagen/self_instruct/filter/__init__.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/datagen/self_instruct/filter/filter_function.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/datagen/self_instruct/filter/filter_registry.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/datagen/self_instruct/filter/instruction_filter.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/datagen/self_instruct/self_instruct.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/datagen/self_instruct/templates.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/datagen/source2synth/__init__.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/datagen/source2synth/data_processor.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/datagen/source2synth/models.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/datagen/source2synth/user_data_processor_config.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/datahubs/__init__.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/datahubs/base.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/datahubs/huggingface.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/datahubs/models.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/datasets/__init__.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/datasets/base_generator.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/datasets/few_shot_generator.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/datasets/models.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/datasets/self_instruct_generator.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/datasets/static_dataset.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/embeddings/__init__.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/embeddings/azure_embedding.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/embeddings/base.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/embeddings/gemini_embedding.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/embeddings/jina_embedding.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/embeddings/mistral_embedding.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/embeddings/openai_compatible_embedding.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/embeddings/openai_embedding.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/embeddings/sentence_transformers_embeddings.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/embeddings/together_embedding.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/embeddings/vlm_embedding.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/environments/__init__.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/environments/models.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/environments/multi_step.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/environments/rlcards_env.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/environments/single_step.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/environments/tic_tac_toe.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/extractors/__init__.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/extractors/base.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/extractors/python_strategies.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/generators.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/human.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/interpreters/__init__.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/interpreters/base.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/interpreters/docker/Dockerfile +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/interpreters/docker_interpreter.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/interpreters/e2b_interpreter.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/interpreters/internal_python_interpreter.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/interpreters/interpreter_error.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/interpreters/ipython_interpreter.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/interpreters/subprocess_interpreter.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/loaders/__init__.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/loaders/apify_reader.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/loaders/base_io.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/loaders/base_loader.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/loaders/chunkr_reader.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/loaders/crawl4ai_reader.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/loaders/firecrawl_reader.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/loaders/jina_url_reader.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/loaders/markitdown.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/loaders/mineru_extractor.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/loaders/mistral_reader.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/loaders/pandas_reader.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/loaders/scrapegraph_reader.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/loaders/unstructured_io.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/logger.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/memories/__init__.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/memories/agent_memories.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/memories/base.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/memories/blocks/__init__.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/memories/blocks/chat_history_block.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/memories/blocks/vectordb_block.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/memories/context_creators/__init__.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/memories/context_creators/score_based.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/memories/records.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/messages/__init__.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/messages/base.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/messages/conversion/__init__.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/messages/conversion/alpaca.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/messages/conversion/conversation_models.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/messages/conversion/sharegpt/__init__.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/messages/conversion/sharegpt/function_call_formatter.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/messages/conversion/sharegpt/hermes/__init__.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/messages/conversion/sharegpt/hermes/hermes_function_formatter.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/messages/func_message.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/models/__init__.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/models/_utils.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/models/aiml_model.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/models/anthropic_model.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/models/aws_bedrock_model.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/models/azure_openai_model.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/models/base_audio_model.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/models/base_model.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/models/cohere_model.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/models/crynux_model.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/models/deepseek_model.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/models/fish_audio_model.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/models/gemini_model.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/models/groq_model.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/models/internlm_model.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/models/litellm_model.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/models/lmstudio_model.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/models/mistral_model.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/models/model_factory.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/models/model_manager.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/models/modelscope_model.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/models/moonshot_model.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/models/nemotron_model.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/models/netmind_model.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/models/novita_model.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/models/nvidia_model.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/models/ollama_model.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/models/openai_audio_models.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/models/openai_compatible_model.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/models/openai_model.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/models/openrouter_model.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/models/ppio_model.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/models/qianfan_model.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/models/qwen_model.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/models/reka_model.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/models/reward/__init__.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/models/reward/base_reward_model.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/models/reward/evaluator.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/models/reward/nemotron_model.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/models/reward/skywork_model.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/models/samba_model.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/models/sglang_model.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/models/siliconflow_model.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/models/stub_model.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/models/togetherai_model.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/models/vllm_model.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/models/volcano_model.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/models/watsonx_model.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/models/yi_model.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/models/zhipuai_model.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/personas/__init__.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/personas/persona.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/personas/persona_hub.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/prompts/__init__.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/prompts/ai_society.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/prompts/base.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/prompts/code.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/prompts/evaluation.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/prompts/generate_text_embedding_data.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/prompts/image_craft.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/prompts/misalignment.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/prompts/multi_condition_image_craft.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/prompts/object_recognition.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/prompts/persona_hub.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/prompts/prompt_templates.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/prompts/role_description_prompt_template.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/prompts/solution_extraction.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/prompts/task_prompt_template.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/prompts/translation.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/prompts/video_description_prompt.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/py.typed +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/responses/__init__.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/responses/agent_responses.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/retrievers/__init__.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/retrievers/auto_retriever.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/retrievers/base.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/retrievers/bm25_retriever.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/retrievers/cohere_rerank_retriever.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/retrievers/hybrid_retrival.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/retrievers/vector_retriever.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/runtimes/__init__.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/runtimes/api.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/runtimes/base.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/runtimes/configs.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/runtimes/daytona_runtime.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/runtimes/docker_runtime.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/runtimes/llm_guard_runtime.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/runtimes/remote_http_runtime.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/runtimes/ubuntu_docker_runtime.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/runtimes/utils/__init__.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/runtimes/utils/function_risk_toolkit.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/runtimes/utils/ignore_risk_toolkit.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/schemas/__init__.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/schemas/base.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/schemas/openai_converter.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/schemas/outlines_converter.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/services/agent_openapi_server.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/societies/__init__.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/societies/babyagi_playing.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/societies/role_playing.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/societies/workforce/__init__.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/societies/workforce/base.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/societies/workforce/prompts.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/societies/workforce/role_playing_worker.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/societies/workforce/single_agent_worker.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/societies/workforce/structured_output_handler.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/societies/workforce/task_channel.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/societies/workforce/utils.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/societies/workforce/worker.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/societies/workforce/workforce.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/societies/workforce/workforce_logger.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/storages/__init__.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/storages/graph_storages/__init__.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/storages/graph_storages/base.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/storages/graph_storages/graph_element.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/storages/graph_storages/nebula_graph.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/storages/graph_storages/neo4j_graph.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/storages/key_value_storages/__init__.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/storages/key_value_storages/base.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/storages/key_value_storages/in_memory.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/storages/key_value_storages/json.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/storages/key_value_storages/mem0_cloud.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/storages/key_value_storages/redis.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/storages/object_storages/__init__.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/storages/object_storages/amazon_s3.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/storages/object_storages/azure_blob.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/storages/object_storages/base.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/storages/object_storages/google_cloud.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/storages/vectordb_storages/__init__.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/storages/vectordb_storages/base.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/storages/vectordb_storages/chroma.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/storages/vectordb_storages/faiss.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/storages/vectordb_storages/milvus.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/storages/vectordb_storages/oceanbase.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/storages/vectordb_storages/pgvector.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/storages/vectordb_storages/qdrant.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/storages/vectordb_storages/surreal.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/storages/vectordb_storages/tidb.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/storages/vectordb_storages/weaviate.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/tasks/__init__.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/tasks/task.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/tasks/task_prompt.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/terminators/__init__.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/terminators/base.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/terminators/response_terminator.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/terminators/token_limit_terminator.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/aci_toolkit.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/arxiv_toolkit.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/ask_news_toolkit.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/async_browser_toolkit.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/audio_analysis_toolkit.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/base.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/bohrium_toolkit.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/browser_toolkit.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/browser_toolkit_commons.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/code_execution.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/craw4ai_toolkit.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/dappier_toolkit.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/data_commons_toolkit.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/edgeone_pages_mcp_toolkit.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/excel_toolkit.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/file_write_toolkit.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/function_tool.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/github_toolkit.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/google_calendar_toolkit.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/google_drive_mcp_toolkit.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/google_maps_toolkit.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/google_scholar_toolkit.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/human_toolkit.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/hybrid_browser_toolkit/__init__.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/hybrid_browser_toolkit/config_loader.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/hybrid_browser_toolkit/ts/package-lock.json +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/hybrid_browser_toolkit/ts/package.json +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/hybrid_browser_toolkit/ts/src/browser-scripts.js +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/hybrid_browser_toolkit/ts/src/config-loader.ts +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/hybrid_browser_toolkit/ts/src/hybrid-browser-toolkit.ts +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/hybrid_browser_toolkit/ts/src/index.ts +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/hybrid_browser_toolkit/ts/src/types.ts +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/hybrid_browser_toolkit/ts/tsconfig.json +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/hybrid_browser_toolkit/ws_wrapper.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/image_analysis_toolkit.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/jina_reranker_toolkit.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/klavis_toolkit.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/linkedin_toolkit.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/markitdown_toolkit.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/math_toolkit.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/mcp_toolkit.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/memory_toolkit.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/meshy_toolkit.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/message_agent_toolkit.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/message_integration.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/mineru_toolkit.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/networkx_toolkit.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/note_taking_toolkit.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/notion_toolkit.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/open_api_specs/biztoc/__init__.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/open_api_specs/biztoc/ai-plugin.json +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/open_api_specs/biztoc/openapi.yaml +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/open_api_specs/coursera/__init__.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/open_api_specs/coursera/openapi.yaml +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/open_api_specs/create_qr_code/__init__.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/open_api_specs/create_qr_code/openapi.yaml +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/open_api_specs/klarna/__init__.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/open_api_specs/klarna/openapi.yaml +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/open_api_specs/nasa_apod/__init__.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/open_api_specs/nasa_apod/openapi.yaml +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/open_api_specs/outschool/__init__.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/open_api_specs/outschool/ai-plugin.json +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/open_api_specs/outschool/openapi.yaml +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/open_api_specs/outschool/paths/__init__.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/open_api_specs/outschool/paths/get_classes.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/open_api_specs/outschool/paths/search_teachers.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/open_api_specs/security_config.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/open_api_specs/speak/__init__.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/open_api_specs/speak/openapi.yaml +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/open_api_specs/web_scraper/__init__.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/open_api_specs/web_scraper/ai-plugin.json +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/open_api_specs/web_scraper/openapi.yaml +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/open_api_specs/web_scraper/paths/__init__.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/open_api_specs/web_scraper/paths/scraper.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/open_api_toolkit.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/openai_agent_toolkit.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/openai_image_toolkit.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/openbb_toolkit.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/origene_mcp_toolkit.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/page_script.js +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/playwright_mcp_toolkit.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/pptx_toolkit.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/pubmed_toolkit.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/pulse_mcp_search_toolkit.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/pyautogui_toolkit.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/reddit_toolkit.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/retrieval_toolkit.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/screenshot_toolkit.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/search_toolkit.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/searxng_toolkit.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/semantic_scholar_toolkit.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/stripe_toolkit.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/sympy_toolkit.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/task_planning_toolkit.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/terminal_toolkit.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/thinking_toolkit.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/twitter_toolkit.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/video_analysis_toolkit.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/video_download_toolkit.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/weather_toolkit.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/web_deploy_toolkit.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/whatsapp_toolkit.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/wolfram_alpha_toolkit.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/zapier_toolkit.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/types/__init__.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/types/agents/__init__.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/types/agents/tool_calling_record.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/types/enums.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/types/mcp_registries.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/types/openai_types.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/types/unified_model_type.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/utils/__init__.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/utils/async_func.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/utils/chunker/__init__.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/utils/chunker/base.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/utils/chunker/code_chunker.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/utils/chunker/uio_chunker.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/utils/commons.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/utils/constants.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/utils/deduplication.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/utils/filename.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/utils/langfuse.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/utils/mcp.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/utils/mcp_client.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/utils/message_summarizer.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/utils/response_format.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/utils/token_counting.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/utils/tool_result.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/verifiers/__init__.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/verifiers/base.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/verifiers/math_verifier.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/verifiers/models.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/verifiers/physics_verifier.py +0 -0
- {camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/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.
|
|
3
|
+
Version: 0.2.73a2
|
|
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
|
|
@@ -128,7 +128,7 @@ Requires-Dist: sympy<2,>=1.13.3; extra == 'all'
|
|
|
128
128
|
Requires-Dist: tabulate>=0.9.0; extra == 'all'
|
|
129
129
|
Requires-Dist: tavily-python<0.6,>=0.5.0; extra == 'all'
|
|
130
130
|
Requires-Dist: textblob<0.18,>=0.17.1; extra == 'all'
|
|
131
|
-
Requires-Dist: traceroot==0.0.
|
|
131
|
+
Requires-Dist: traceroot==0.0.4a5; extra == 'all'
|
|
132
132
|
Requires-Dist: transformers<5,>=4; extra == 'all'
|
|
133
133
|
Requires-Dist: tree-sitter-python<0.24,>=0.23.6; extra == 'all'
|
|
134
134
|
Requires-Dist: tree-sitter<0.24,>=0.23.2; extra == 'all'
|
|
@@ -193,7 +193,7 @@ Requires-Dist: ipykernel<7,>=6.0.0; extra == 'dev-tools'
|
|
|
193
193
|
Requires-Dist: jupyter-client<9,>=8.6.2; extra == 'dev-tools'
|
|
194
194
|
Requires-Dist: langfuse>=2.60.5; extra == 'dev-tools'
|
|
195
195
|
Requires-Dist: mcp>=1.3.0; extra == 'dev-tools'
|
|
196
|
-
Requires-Dist: traceroot==0.0.
|
|
196
|
+
Requires-Dist: traceroot==0.0.4a5; extra == 'dev-tools'
|
|
197
197
|
Requires-Dist: tree-sitter-python<0.24,>=0.23.6; extra == 'dev-tools'
|
|
198
198
|
Requires-Dist: tree-sitter<0.24,>=0.23.2; extra == 'dev-tools'
|
|
199
199
|
Requires-Dist: typer>=0.15.2; extra == 'dev-tools'
|
|
@@ -2929,7 +2929,32 @@ class ChatAgent(BaseAgent):
|
|
|
2929
2929
|
if function_name in self._internal_tools:
|
|
2930
2930
|
tool = self._internal_tools[function_name]
|
|
2931
2931
|
try:
|
|
2932
|
-
|
|
2932
|
+
# Try different invocation paths in order of preference
|
|
2933
|
+
if hasattr(tool, 'func') and hasattr(
|
|
2934
|
+
tool.func, 'async_call'
|
|
2935
|
+
):
|
|
2936
|
+
# Case: FunctionTool wrapping an MCP tool
|
|
2937
|
+
result = await tool.func.async_call(**args)
|
|
2938
|
+
|
|
2939
|
+
elif hasattr(tool, 'async_call') and callable(
|
|
2940
|
+
tool.async_call
|
|
2941
|
+
):
|
|
2942
|
+
# Case: tool itself has async_call
|
|
2943
|
+
result = await tool.async_call(**args)
|
|
2944
|
+
|
|
2945
|
+
elif hasattr(tool, 'func') and asyncio.iscoroutinefunction(
|
|
2946
|
+
tool.func
|
|
2947
|
+
):
|
|
2948
|
+
# Case: tool wraps a direct async function
|
|
2949
|
+
result = await tool.func(**args)
|
|
2950
|
+
|
|
2951
|
+
elif asyncio.iscoroutinefunction(tool):
|
|
2952
|
+
# Case: tool is itself a coroutine function
|
|
2953
|
+
result = await tool(**args)
|
|
2954
|
+
|
|
2955
|
+
else:
|
|
2956
|
+
# Fallback: synchronous call
|
|
2957
|
+
result = tool(**args)
|
|
2933
2958
|
|
|
2934
2959
|
# Only record the tool response message, not the assistant
|
|
2935
2960
|
# message assistant message with tool_calls was already
|
|
@@ -88,6 +88,7 @@ from .message_agent_toolkit import AgentCommunicationToolkit
|
|
|
88
88
|
from .web_deploy_toolkit import WebDeployToolkit
|
|
89
89
|
from .screenshot_toolkit import ScreenshotToolkit
|
|
90
90
|
from .message_integration import ToolkitMessageIntegration
|
|
91
|
+
from .notion_mcp_toolkit import NotionMCPToolkit
|
|
91
92
|
|
|
92
93
|
__all__ = [
|
|
93
94
|
'BaseToolkit',
|
|
@@ -165,4 +166,5 @@ __all__ = [
|
|
|
165
166
|
'ScreenshotToolkit',
|
|
166
167
|
'RegisteredAgentToolkit',
|
|
167
168
|
'ToolkitMessageIntegration',
|
|
169
|
+
'NotionMCPToolkit',
|
|
168
170
|
]
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
# ========= Copyright 2023-2024 @ CAMEL-AI.org. All Rights Reserved. =========
|
|
2
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
3
|
+
# you may not use this file except in compliance with the License.
|
|
4
|
+
# You may obtain a copy of the License at
|
|
5
|
+
#
|
|
6
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
7
|
+
#
|
|
8
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
9
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
10
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
11
|
+
# See the License for the specific language governing permissions and
|
|
12
|
+
# limitations under the License.
|
|
13
|
+
# ========= Copyright 2023-2024 @ CAMEL-AI.org. All Rights Reserved. =========
|
|
14
|
+
|
|
15
|
+
from typing import Any, List, Literal, Optional
|
|
16
|
+
|
|
17
|
+
from camel.models import BaseModelBackend
|
|
18
|
+
from camel.toolkits.base import BaseToolkit
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
class HybridBrowserToolkit(BaseToolkit):
|
|
22
|
+
r"""A hybrid browser toolkit that can switch between TypeScript and Python
|
|
23
|
+
implementations.
|
|
24
|
+
|
|
25
|
+
This wrapper allows users to choose between:
|
|
26
|
+
- 'typescript': WebSocket-based implementation using TypeScript/Node.js
|
|
27
|
+
- 'python': Pure Python implementation using Playwright directly
|
|
28
|
+
"""
|
|
29
|
+
|
|
30
|
+
def __new__(
|
|
31
|
+
cls,
|
|
32
|
+
*,
|
|
33
|
+
mode: Literal["typescript", "python"] = "typescript",
|
|
34
|
+
headless: bool = True,
|
|
35
|
+
user_data_dir: Optional[str] = None,
|
|
36
|
+
stealth: bool = False,
|
|
37
|
+
web_agent_model: Optional[BaseModelBackend] = None,
|
|
38
|
+
cache_dir: str = "tmp/",
|
|
39
|
+
enabled_tools: Optional[List[str]] = None,
|
|
40
|
+
browser_log_to_file: bool = False,
|
|
41
|
+
session_id: Optional[str] = None,
|
|
42
|
+
default_start_url: str = "https://google.com/",
|
|
43
|
+
default_timeout: Optional[int] = None,
|
|
44
|
+
short_timeout: Optional[int] = None,
|
|
45
|
+
navigation_timeout: Optional[int] = None,
|
|
46
|
+
network_idle_timeout: Optional[int] = None,
|
|
47
|
+
screenshot_timeout: Optional[int] = None,
|
|
48
|
+
page_stability_timeout: Optional[int] = None,
|
|
49
|
+
dom_content_loaded_timeout: Optional[int] = None,
|
|
50
|
+
viewport_limit: bool = False,
|
|
51
|
+
connect_over_cdp: bool = False,
|
|
52
|
+
cdp_url: Optional[str] = None,
|
|
53
|
+
**kwargs: Any,
|
|
54
|
+
) -> Any:
|
|
55
|
+
r"""Create a HybridBrowserToolkit instance with the specified mode.
|
|
56
|
+
|
|
57
|
+
Args:
|
|
58
|
+
mode (Literal["typescript", "python"]): Implementation mode.
|
|
59
|
+
- 'typescript': Uses WebSocket-based TypeScript implementation
|
|
60
|
+
- 'python': Uses pure Python Playwright implementation
|
|
61
|
+
Defaults to "typescript".
|
|
62
|
+
headless (bool): Whether to run browser in headless mode.
|
|
63
|
+
Defaults to True.
|
|
64
|
+
user_data_dir (Optional[str]): Directory for user data
|
|
65
|
+
persistence. Defaults to None.
|
|
66
|
+
stealth (bool): Whether to enable stealth mode. Defaults to
|
|
67
|
+
False.
|
|
68
|
+
web_agent_model (Optional[BaseModelBackend]): Model for web
|
|
69
|
+
agent operations. Defaults to None.
|
|
70
|
+
cache_dir (str): Directory for caching. Defaults to "tmp/".
|
|
71
|
+
enabled_tools (Optional[List[str]]): List of enabled tools.
|
|
72
|
+
Defaults to None.
|
|
73
|
+
browser_log_to_file (bool): Whether to log browser actions to
|
|
74
|
+
file. Defaults to False.
|
|
75
|
+
session_id (Optional[str]): Session identifier. Defaults to None.
|
|
76
|
+
default_start_url (str): Default URL to start with. Defaults
|
|
77
|
+
to "https://google.com/".
|
|
78
|
+
default_timeout (Optional[int]): Default timeout in
|
|
79
|
+
milliseconds. Defaults to None.
|
|
80
|
+
short_timeout (Optional[int]): Short timeout in milliseconds.
|
|
81
|
+
Defaults to None.
|
|
82
|
+
navigation_timeout (Optional[int]): Navigation timeout in
|
|
83
|
+
milliseconds. Defaults to None.
|
|
84
|
+
network_idle_timeout (Optional[int]): Network idle timeout in
|
|
85
|
+
milliseconds. Defaults to None.
|
|
86
|
+
screenshot_timeout (Optional[int]): Screenshot timeout in
|
|
87
|
+
milliseconds. Defaults to None.
|
|
88
|
+
page_stability_timeout (Optional[int]): Page stability timeout
|
|
89
|
+
in milliseconds. Defaults to None.
|
|
90
|
+
dom_content_loaded_timeout (Optional[int]): DOM content loaded
|
|
91
|
+
timeout in milliseconds. Defaults to None.
|
|
92
|
+
viewport_limit (bool): Whether to filter page snapshot
|
|
93
|
+
elements to only those visible in the current viewport.
|
|
94
|
+
Defaults to False.
|
|
95
|
+
connect_over_cdp (bool): Whether to connect to an existing
|
|
96
|
+
browser via Chrome DevTools Protocol. Defaults to False.
|
|
97
|
+
(Only supported in TypeScript mode)
|
|
98
|
+
cdp_url (Optional[str]): WebSocket endpoint URL for CDP
|
|
99
|
+
connection. Required when connect_over_cdp is True.
|
|
100
|
+
Defaults to None. (Only supported in TypeScript mode)
|
|
101
|
+
**kwargs: Additional keyword arguments passed to the
|
|
102
|
+
implementation.
|
|
103
|
+
|
|
104
|
+
Returns:
|
|
105
|
+
HybridBrowserToolkit instance of the specified implementation.
|
|
106
|
+
"""
|
|
107
|
+
if mode == "typescript":
|
|
108
|
+
from .hybrid_browser_toolkit_ts import (
|
|
109
|
+
HybridBrowserToolkit as TSToolkit,
|
|
110
|
+
)
|
|
111
|
+
|
|
112
|
+
return TSToolkit(
|
|
113
|
+
headless=headless,
|
|
114
|
+
user_data_dir=user_data_dir,
|
|
115
|
+
stealth=stealth,
|
|
116
|
+
web_agent_model=web_agent_model,
|
|
117
|
+
cache_dir=cache_dir,
|
|
118
|
+
enabled_tools=enabled_tools,
|
|
119
|
+
browser_log_to_file=browser_log_to_file,
|
|
120
|
+
session_id=session_id,
|
|
121
|
+
default_start_url=default_start_url,
|
|
122
|
+
default_timeout=default_timeout,
|
|
123
|
+
short_timeout=short_timeout,
|
|
124
|
+
navigation_timeout=navigation_timeout,
|
|
125
|
+
network_idle_timeout=network_idle_timeout,
|
|
126
|
+
screenshot_timeout=screenshot_timeout,
|
|
127
|
+
page_stability_timeout=page_stability_timeout,
|
|
128
|
+
dom_content_loaded_timeout=dom_content_loaded_timeout,
|
|
129
|
+
viewport_limit=viewport_limit,
|
|
130
|
+
connect_over_cdp=connect_over_cdp,
|
|
131
|
+
cdp_url=cdp_url,
|
|
132
|
+
**kwargs,
|
|
133
|
+
)
|
|
134
|
+
elif mode == "python":
|
|
135
|
+
from ..hybrid_browser_toolkit_py import (
|
|
136
|
+
HybridBrowserToolkit as PyToolkit,
|
|
137
|
+
)
|
|
138
|
+
|
|
139
|
+
# Note: Python implementation doesn't support CDP connection
|
|
140
|
+
if connect_over_cdp:
|
|
141
|
+
raise ValueError(
|
|
142
|
+
"CDP connection is only supported in TypeScript mode"
|
|
143
|
+
)
|
|
144
|
+
|
|
145
|
+
# Note: Python implementation doesn't support viewport_limit
|
|
146
|
+
if viewport_limit:
|
|
147
|
+
import warnings
|
|
148
|
+
|
|
149
|
+
warnings.warn(
|
|
150
|
+
"viewport_limit is not supported "
|
|
151
|
+
"in Python mode and will be ignored",
|
|
152
|
+
UserWarning,
|
|
153
|
+
)
|
|
154
|
+
|
|
155
|
+
return PyToolkit(
|
|
156
|
+
headless=headless,
|
|
157
|
+
user_data_dir=user_data_dir,
|
|
158
|
+
stealth=stealth,
|
|
159
|
+
web_agent_model=web_agent_model,
|
|
160
|
+
cache_dir=cache_dir,
|
|
161
|
+
enabled_tools=enabled_tools,
|
|
162
|
+
browser_log_to_file=browser_log_to_file,
|
|
163
|
+
session_id=session_id,
|
|
164
|
+
default_start_url=default_start_url,
|
|
165
|
+
default_timeout=default_timeout,
|
|
166
|
+
short_timeout=short_timeout,
|
|
167
|
+
navigation_timeout=navigation_timeout,
|
|
168
|
+
network_idle_timeout=network_idle_timeout,
|
|
169
|
+
screenshot_timeout=screenshot_timeout,
|
|
170
|
+
page_stability_timeout=page_stability_timeout,
|
|
171
|
+
dom_content_loaded_timeout=dom_content_loaded_timeout,
|
|
172
|
+
**kwargs,
|
|
173
|
+
)
|
|
174
|
+
else:
|
|
175
|
+
raise ValueError(
|
|
176
|
+
f"Invalid mode: {mode}. Must be 'typescript' or 'python'."
|
|
177
|
+
)
|
|
@@ -518,7 +518,7 @@ class HybridBrowserToolkit(BaseToolkit, RegisteredAgentToolkit):
|
|
|
518
518
|
|
|
519
519
|
Returns:
|
|
520
520
|
str: A confirmation message indicating the screenshot was
|
|
521
|
-
captured, the file path where it was saved, and optionally the
|
|
521
|
+
captured, the file path where it was saved, and optionally the
|
|
522
522
|
agent's analysis if `read_image` is `True`.
|
|
523
523
|
"""
|
|
524
524
|
import base64
|
|
@@ -50,20 +50,28 @@ export class HybridBrowserSession {
|
|
|
50
50
|
// Handle existing pages
|
|
51
51
|
const pages = this.context.pages();
|
|
52
52
|
if (pages.length > 0) {
|
|
53
|
-
// Map existing pages
|
|
53
|
+
// Map existing pages - for CDP, only use pages with about:blank URL
|
|
54
|
+
let availablePageFound = false;
|
|
54
55
|
for (const page of pages) {
|
|
55
|
-
const
|
|
56
|
-
|
|
57
|
-
if (
|
|
58
|
-
|
|
56
|
+
const pageUrl = page.url();
|
|
57
|
+
// In CDP mode, only consider pages with about:blank as available
|
|
58
|
+
if (pageUrl === 'about:blank') {
|
|
59
|
+
const tabId = this.generateTabId();
|
|
60
|
+
this.pages.set(tabId, page);
|
|
61
|
+
if (!this.currentTabId) {
|
|
62
|
+
this.currentTabId = tabId;
|
|
63
|
+
availablePageFound = true;
|
|
64
|
+
}
|
|
59
65
|
}
|
|
60
66
|
}
|
|
67
|
+
|
|
68
|
+
// If no available blank pages found in CDP mode, we cannot create new ones
|
|
69
|
+
if (!availablePageFound) {
|
|
70
|
+
throw new Error('No available blank tabs found in CDP mode. The frontend should have pre-created blank tabs.');
|
|
71
|
+
}
|
|
61
72
|
} else {
|
|
62
|
-
//
|
|
63
|
-
|
|
64
|
-
const initialTabId = this.generateTabId();
|
|
65
|
-
this.pages.set(initialTabId, initialPage);
|
|
66
|
-
this.currentTabId = initialTabId;
|
|
73
|
+
// In CDP mode, newPage is not supported
|
|
74
|
+
throw new Error('No pages available in CDP mode and newPage() is not supported. Ensure the frontend has pre-created blank tabs.');
|
|
67
75
|
}
|
|
68
76
|
} else {
|
|
69
77
|
// Original launch logic
|
|
@@ -626,18 +634,39 @@ export class HybridBrowserSession {
|
|
|
626
634
|
throw new Error('Browser context not initialized');
|
|
627
635
|
}
|
|
628
636
|
|
|
629
|
-
|
|
630
637
|
const navigationStart = Date.now();
|
|
631
638
|
|
|
632
|
-
//
|
|
633
|
-
|
|
639
|
+
// In CDP mode, find an available blank tab instead of creating new page
|
|
640
|
+
let newPage: Page | null = null;
|
|
641
|
+
let newTabId: string | null = null;
|
|
634
642
|
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
643
|
+
const browserConfig = this.configLoader.getBrowserConfig();
|
|
644
|
+
if (browserConfig.connectOverCdp) {
|
|
645
|
+
// CDP mode: find an available blank tab
|
|
646
|
+
const allPages = this.context.pages();
|
|
647
|
+
for (const page of allPages) {
|
|
648
|
+
const pageUrl = page.url();
|
|
649
|
+
// Check if this page is not already tracked and is blank
|
|
650
|
+
const isTracked = Array.from(this.pages.values()).includes(page);
|
|
651
|
+
if (!isTracked && pageUrl === 'about:blank') {
|
|
652
|
+
newPage = page;
|
|
653
|
+
newTabId = this.generateTabId();
|
|
654
|
+
this.pages.set(newTabId, newPage);
|
|
655
|
+
break;
|
|
656
|
+
}
|
|
657
|
+
}
|
|
658
|
+
|
|
659
|
+
if (!newPage || !newTabId) {
|
|
660
|
+
throw new Error('No available blank tabs in CDP mode. Frontend should create more blank tabs when half are used.');
|
|
661
|
+
}
|
|
662
|
+
} else {
|
|
663
|
+
// Non-CDP mode: create new page as usual
|
|
664
|
+
newPage = await this.context.newPage();
|
|
665
|
+
newTabId = this.generateTabId();
|
|
666
|
+
this.pages.set(newTabId, newPage);
|
|
667
|
+
}
|
|
638
668
|
|
|
639
669
|
// Set up page properties
|
|
640
|
-
const browserConfig = this.configLoader.getBrowserConfig();
|
|
641
670
|
newPage.setDefaultNavigationTimeout(browserConfig.navigationTimeout);
|
|
642
671
|
newPage.setDefaultTimeout(browserConfig.navigationTimeout);
|
|
643
672
|
|
{camel_ai-0.2.73a0 → camel_ai-0.2.73a2}/camel/toolkits/hybrid_browser_toolkit/ts/websocket-server.js
RENAMED
|
@@ -78,8 +78,52 @@ class WebSocketBrowserServer {
|
|
|
78
78
|
switch (command) {
|
|
79
79
|
case 'init':
|
|
80
80
|
console.log('Initializing toolkit with params:', JSON.stringify(params, null, 2));
|
|
81
|
-
|
|
82
|
-
|
|
81
|
+
|
|
82
|
+
// Check if CDP is available first
|
|
83
|
+
let useCdp = false;
|
|
84
|
+
let cdpUrl = params.cdpUrl || 'http://localhost:9222';
|
|
85
|
+
|
|
86
|
+
// Extract base URL and port for validation
|
|
87
|
+
const baseUrl = cdpUrl.includes('/devtools/') ? cdpUrl.split('/devtools/')[0] : cdpUrl;
|
|
88
|
+
|
|
89
|
+
try {
|
|
90
|
+
// Test if Chrome debug port is accessible and get page URL
|
|
91
|
+
const response = await fetch(`${baseUrl}/json`);
|
|
92
|
+
if (response.ok) {
|
|
93
|
+
const pages = await response.json();
|
|
94
|
+
if (pages && pages.length > 0) {
|
|
95
|
+
// If user provided a specific page URL, use it; otherwise use first available
|
|
96
|
+
if (cdpUrl.includes('/devtools/page/') || cdpUrl.includes('/devtools/browser/')) {
|
|
97
|
+
useCdp = true;
|
|
98
|
+
console.log(`Using provided CDP URL: ${cdpUrl}`);
|
|
99
|
+
} else {
|
|
100
|
+
// Use the first available page
|
|
101
|
+
const firstPage = pages[0];
|
|
102
|
+
const pageUrl = firstPage.devtoolsFrontendUrl;
|
|
103
|
+
const pageId = pageUrl.match(/ws=localhost:\d+(.*)$/)?.[1];
|
|
104
|
+
|
|
105
|
+
if (pageId) {
|
|
106
|
+
useCdp = true;
|
|
107
|
+
cdpUrl = `${baseUrl}${pageId}`;
|
|
108
|
+
console.log(`Chrome debug port detected, using CDP connection to: ${pageId}`);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
} catch (error) {
|
|
114
|
+
console.log('Chrome debug port not accessible, will start new browser instance');
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
const config = {
|
|
118
|
+
connectOverCdp: useCdp,
|
|
119
|
+
cdpUrl: useCdp ? cdpUrl : undefined,
|
|
120
|
+
headless: false,
|
|
121
|
+
...params
|
|
122
|
+
};
|
|
123
|
+
|
|
124
|
+
console.log('Final config:', JSON.stringify(config, null, 2));
|
|
125
|
+
this.toolkit = new HybridBrowserToolkit(config);
|
|
126
|
+
return { message: 'Toolkit initialized with CDP connection' };
|
|
83
127
|
|
|
84
128
|
case 'open_browser':
|
|
85
129
|
if (!this.toolkit) throw new Error('Toolkit not initialized');
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# ========= Copyright 2023-2024 @ CAMEL-AI.org. All Rights Reserved. =========
|
|
2
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
3
|
+
# you may not use this file except in compliance with the License.
|
|
4
|
+
# You may obtain a copy of the License at
|
|
5
|
+
#
|
|
6
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
7
|
+
#
|
|
8
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
9
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
10
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
11
|
+
# See the License for the specific language governing permissions and
|
|
12
|
+
# limitations under the License.
|
|
13
|
+
# ========= Copyright 2023-2024 @ CAMEL-AI.org. All Rights Reserved. =========
|
|
14
|
+
|
|
15
|
+
from .hybrid_browser_toolkit import HybridBrowserToolkit
|
|
16
|
+
|
|
17
|
+
__all__ = ["HybridBrowserToolkit"]
|