camel-ai 0.2.65__py3-none-any.whl → 0.2.83a6__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 +5107 -995
- 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 +29 -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/function_gemma_config.py +59 -0
- 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 +109 -230
- 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 +18 -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 +214 -115
- camel/models/base_audio_model.py +5 -3
- camel/models/base_model.py +378 -31
- camel/models/cerebras_model.py +83 -0
- camel/models/cohere_model.py +18 -49
- camel/models/cometapi_model.py +83 -0
- camel/models/crynux_model.py +11 -18
- camel/models/deepseek_model.py +20 -84
- camel/models/fish_audio_model.py +8 -2
- camel/models/function_gemma_model.py +889 -0
- camel/models/gemini_model.py +391 -52
- camel/models/groq_model.py +11 -19
- camel/models/internlm_model.py +11 -18
- camel/models/litellm_model.py +57 -49
- camel/models/lmstudio_model.py +17 -20
- camel/models/minimax_model.py +83 -0
- camel/models/mistral_model.py +20 -47
- camel/models/model_factory.py +39 -3
- camel/models/model_manager.py +26 -8
- camel/models/modelscope_model.py +13 -193
- camel/models/moonshot_model.py +183 -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 +190 -71
- camel/models/openai_model.py +192 -86
- 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 +23 -49
- 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 +50 -75
- camel/models/sglang_model.py +90 -68
- 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 +158 -19
- camel/models/watsonx_model.py +9 -47
- 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 +145 -0
- camel/societies/workforce/prompts.py +259 -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 +5354 -372
- 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 +57 -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 +106 -6
- 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 +205 -27
- 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 +1958 -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 +1940 -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 +325 -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 +728 -0
- camel/toolkits/microsoft_outlook_mail_toolkit.py +1885 -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 +606 -156
- 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 +1281 -0
- camel/toolkits/terminal_toolkit/utils.py +659 -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 +381 -41
- camel/types/mcp_registries.py +2 -2
- camel/types/openai_types.py +4 -4
- camel/types/unified_model_type.py +46 -10
- camel/utils/__init__.py +5 -2
- camel/utils/agent_context.py +41 -0
- 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 +18 -10
- 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.83a6.dist-info}/METADATA +355 -117
- camel_ai-0.2.83a6.dist-info/RECORD +511 -0
- {camel_ai-0.2.65.dist-info → camel_ai-0.2.83a6.dist-info}/WHEEL +1 -1
- {camel_ai-0.2.65.dist-info → camel_ai-0.2.83a6.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
|
@@ -0,0 +1,490 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
# ========= Copyright 2023-2026 @ CAMEL-AI.org. All Rights Reserved. =========
|
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
# you may not use this file except in compliance with the License.
|
|
5
|
+
# You may obtain a copy of the License at
|
|
6
|
+
#
|
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
#
|
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
# See the License for the specific language governing permissions and
|
|
13
|
+
# limitations under the License.
|
|
14
|
+
# ========= Copyright 2023-2026 @ CAMEL-AI.org. All Rights Reserved. =========
|
|
15
|
+
|
|
16
|
+
"""
|
|
17
|
+
Configuration for browser automation including stealth mode and timeouts.
|
|
18
|
+
|
|
19
|
+
This module contains all the configuration needed to make the browser
|
|
20
|
+
appear as a regular user browser and configure action timeouts.
|
|
21
|
+
"""
|
|
22
|
+
|
|
23
|
+
import os
|
|
24
|
+
from typing import Any, Dict, List, Optional
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
class BrowserConfig:
|
|
28
|
+
r"""Configuration class for browser settings including stealth mode and
|
|
29
|
+
timeouts."""
|
|
30
|
+
|
|
31
|
+
# Default timeout values (in milliseconds)
|
|
32
|
+
DEFAULT_ACTION_TIMEOUT = 3000
|
|
33
|
+
DEFAULT_SHORT_TIMEOUT = 1000
|
|
34
|
+
DEFAULT_NAVIGATION_TIMEOUT = 10000
|
|
35
|
+
DEFAULT_NETWORK_IDLE_TIMEOUT = 5000
|
|
36
|
+
DEFAULT_SCREENSHOT_TIMEOUT = 15000
|
|
37
|
+
DEFAULT_PAGE_STABILITY_TIMEOUT = 1500
|
|
38
|
+
DEFAULT_DOM_CONTENT_LOADED_TIMEOUT = 5000
|
|
39
|
+
|
|
40
|
+
# Default action limits
|
|
41
|
+
DEFAULT_MAX_SCROLL_AMOUNT = 5000 # Maximum scroll distance in pixels
|
|
42
|
+
|
|
43
|
+
# Default config limits
|
|
44
|
+
DEFAULT_MAX_LOG_LIMIT = 1000
|
|
45
|
+
|
|
46
|
+
@staticmethod
|
|
47
|
+
def get_timeout_config() -> Dict[str, int]:
|
|
48
|
+
r"""Get timeout configuration with environment variable support.
|
|
49
|
+
|
|
50
|
+
Returns:
|
|
51
|
+
Dict[str, int]: Timeout configuration in milliseconds.
|
|
52
|
+
"""
|
|
53
|
+
return {
|
|
54
|
+
'default_timeout': int(
|
|
55
|
+
os.getenv(
|
|
56
|
+
'HYBRID_BROWSER_DEFAULT_TIMEOUT',
|
|
57
|
+
BrowserConfig.DEFAULT_ACTION_TIMEOUT,
|
|
58
|
+
)
|
|
59
|
+
),
|
|
60
|
+
'short_timeout': int(
|
|
61
|
+
os.getenv(
|
|
62
|
+
'HYBRID_BROWSER_SHORT_TIMEOUT',
|
|
63
|
+
BrowserConfig.DEFAULT_SHORT_TIMEOUT,
|
|
64
|
+
)
|
|
65
|
+
),
|
|
66
|
+
'navigation_timeout': int(
|
|
67
|
+
os.getenv(
|
|
68
|
+
'HYBRID_BROWSER_NAVIGATION_TIMEOUT',
|
|
69
|
+
BrowserConfig.DEFAULT_NAVIGATION_TIMEOUT,
|
|
70
|
+
)
|
|
71
|
+
),
|
|
72
|
+
'network_idle_timeout': int(
|
|
73
|
+
os.getenv(
|
|
74
|
+
'HYBRID_BROWSER_NETWORK_IDLE_TIMEOUT',
|
|
75
|
+
BrowserConfig.DEFAULT_NETWORK_IDLE_TIMEOUT,
|
|
76
|
+
)
|
|
77
|
+
),
|
|
78
|
+
'screenshot_timeout': int(
|
|
79
|
+
os.getenv(
|
|
80
|
+
'HYBRID_BROWSER_SCREENSHOT_TIMEOUT',
|
|
81
|
+
BrowserConfig.DEFAULT_SCREENSHOT_TIMEOUT,
|
|
82
|
+
)
|
|
83
|
+
),
|
|
84
|
+
'page_stability_timeout': int(
|
|
85
|
+
os.getenv(
|
|
86
|
+
'HYBRID_BROWSER_PAGE_STABILITY_TIMEOUT',
|
|
87
|
+
BrowserConfig.DEFAULT_PAGE_STABILITY_TIMEOUT,
|
|
88
|
+
)
|
|
89
|
+
),
|
|
90
|
+
'dom_content_loaded_timeout': int(
|
|
91
|
+
os.getenv(
|
|
92
|
+
'HYBRID_BROWSER_DOM_CONTENT_LOADED_TIMEOUT',
|
|
93
|
+
BrowserConfig.DEFAULT_DOM_CONTENT_LOADED_TIMEOUT,
|
|
94
|
+
)
|
|
95
|
+
),
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
@staticmethod
|
|
99
|
+
def get_action_limits() -> Dict[str, int]:
|
|
100
|
+
r"""Get action limits configuration with environment variable support.
|
|
101
|
+
|
|
102
|
+
Returns:
|
|
103
|
+
Dict[str, int]: Action limits configuration.
|
|
104
|
+
"""
|
|
105
|
+
return {
|
|
106
|
+
'max_scroll_amount': int(
|
|
107
|
+
os.getenv(
|
|
108
|
+
'HYBRID_BROWSER_MAX_SCROLL_AMOUNT',
|
|
109
|
+
BrowserConfig.DEFAULT_MAX_SCROLL_AMOUNT,
|
|
110
|
+
)
|
|
111
|
+
),
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
@staticmethod
|
|
115
|
+
def get_log_limits() -> Dict[str, int]:
|
|
116
|
+
r"""Get log limits configuration with environment variable support.
|
|
117
|
+
|
|
118
|
+
Returns:
|
|
119
|
+
Dict[str, int]: Console Log limits configuration.
|
|
120
|
+
"""
|
|
121
|
+
return {
|
|
122
|
+
'max_log_limit': int(
|
|
123
|
+
os.getenv(
|
|
124
|
+
'HYBRID_BROWSER_MAX_LOG_LIMIT',
|
|
125
|
+
BrowserConfig.DEFAULT_MAX_LOG_LIMIT,
|
|
126
|
+
)
|
|
127
|
+
),
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
@staticmethod
|
|
131
|
+
def get_action_timeout(override: Optional[int] = None) -> int:
|
|
132
|
+
r"""Get action timeout with optional override.
|
|
133
|
+
|
|
134
|
+
Args:
|
|
135
|
+
override: Optional timeout override value in milliseconds.
|
|
136
|
+
|
|
137
|
+
Returns:
|
|
138
|
+
int: Timeout value in milliseconds.
|
|
139
|
+
"""
|
|
140
|
+
if override is not None:
|
|
141
|
+
return override
|
|
142
|
+
return BrowserConfig.get_timeout_config()['default_timeout']
|
|
143
|
+
|
|
144
|
+
@staticmethod
|
|
145
|
+
def get_short_timeout(override: Optional[int] = None) -> int:
|
|
146
|
+
r"""Get short timeout with optional override.
|
|
147
|
+
|
|
148
|
+
Args:
|
|
149
|
+
override: Optional timeout override value in milliseconds.
|
|
150
|
+
|
|
151
|
+
Returns:
|
|
152
|
+
int: Timeout value in milliseconds.
|
|
153
|
+
"""
|
|
154
|
+
if override is not None:
|
|
155
|
+
return override
|
|
156
|
+
return BrowserConfig.get_timeout_config()['short_timeout']
|
|
157
|
+
|
|
158
|
+
@staticmethod
|
|
159
|
+
def get_navigation_timeout(override: Optional[int] = None) -> int:
|
|
160
|
+
r"""Get navigation timeout with optional override.
|
|
161
|
+
|
|
162
|
+
Args:
|
|
163
|
+
override: Optional timeout override value in milliseconds.
|
|
164
|
+
|
|
165
|
+
Returns:
|
|
166
|
+
int: Timeout value in milliseconds.
|
|
167
|
+
"""
|
|
168
|
+
if override is not None:
|
|
169
|
+
return override
|
|
170
|
+
return BrowserConfig.get_timeout_config()['navigation_timeout']
|
|
171
|
+
|
|
172
|
+
@staticmethod
|
|
173
|
+
def get_network_idle_timeout(override: Optional[int] = None) -> int:
|
|
174
|
+
r"""Get network idle timeout with optional override.
|
|
175
|
+
|
|
176
|
+
Args:
|
|
177
|
+
override: Optional timeout override value in milliseconds.
|
|
178
|
+
|
|
179
|
+
Returns:
|
|
180
|
+
int: Timeout value in milliseconds.
|
|
181
|
+
"""
|
|
182
|
+
if override is not None:
|
|
183
|
+
return override
|
|
184
|
+
return BrowserConfig.get_timeout_config()['network_idle_timeout']
|
|
185
|
+
|
|
186
|
+
@staticmethod
|
|
187
|
+
def get_max_scroll_amount(override: Optional[int] = None) -> int:
|
|
188
|
+
r"""Get maximum scroll amount with optional override.
|
|
189
|
+
|
|
190
|
+
Args:
|
|
191
|
+
override: Optional scroll amount override value in pixels.
|
|
192
|
+
|
|
193
|
+
Returns:
|
|
194
|
+
int: Maximum scroll amount in pixels.
|
|
195
|
+
"""
|
|
196
|
+
if override is not None:
|
|
197
|
+
return override
|
|
198
|
+
return BrowserConfig.get_action_limits()['max_scroll_amount']
|
|
199
|
+
|
|
200
|
+
@staticmethod
|
|
201
|
+
def get_max_log_limit(override: Optional[int] = None) -> int:
|
|
202
|
+
r"""Get maximum log limit with optional override.
|
|
203
|
+
|
|
204
|
+
Args:
|
|
205
|
+
override: Optional log limit override value.
|
|
206
|
+
|
|
207
|
+
Returns:
|
|
208
|
+
int: Maximum log limit.
|
|
209
|
+
"""
|
|
210
|
+
if override is not None:
|
|
211
|
+
return override
|
|
212
|
+
return BrowserConfig.get_log_limits()['max_log_limit']
|
|
213
|
+
|
|
214
|
+
@staticmethod
|
|
215
|
+
def get_screenshot_timeout(override: Optional[int] = None) -> int:
|
|
216
|
+
r"""Get screenshot timeout with optional override.
|
|
217
|
+
|
|
218
|
+
Args:
|
|
219
|
+
override: Optional timeout override value in milliseconds.
|
|
220
|
+
|
|
221
|
+
Returns:
|
|
222
|
+
int: Timeout value in milliseconds.
|
|
223
|
+
"""
|
|
224
|
+
if override is not None:
|
|
225
|
+
return override
|
|
226
|
+
return BrowserConfig.get_timeout_config()['screenshot_timeout']
|
|
227
|
+
|
|
228
|
+
@staticmethod
|
|
229
|
+
def get_page_stability_timeout(override: Optional[int] = None) -> int:
|
|
230
|
+
r"""Get page stability timeout with optional override.
|
|
231
|
+
|
|
232
|
+
Args:
|
|
233
|
+
override: Optional timeout override value in milliseconds.
|
|
234
|
+
|
|
235
|
+
Returns:
|
|
236
|
+
int: Timeout value in milliseconds.
|
|
237
|
+
"""
|
|
238
|
+
if override is not None:
|
|
239
|
+
return override
|
|
240
|
+
return BrowserConfig.get_timeout_config()['page_stability_timeout']
|
|
241
|
+
|
|
242
|
+
@staticmethod
|
|
243
|
+
def get_dom_content_loaded_timeout(override: Optional[int] = None) -> int:
|
|
244
|
+
r"""Get DOM content loaded timeout with optional override.
|
|
245
|
+
|
|
246
|
+
Args:
|
|
247
|
+
override: Optional timeout override value in milliseconds.
|
|
248
|
+
|
|
249
|
+
Returns:
|
|
250
|
+
int: Timeout value in milliseconds.
|
|
251
|
+
"""
|
|
252
|
+
if override is not None:
|
|
253
|
+
return override
|
|
254
|
+
return BrowserConfig.get_timeout_config()['dom_content_loaded_timeout']
|
|
255
|
+
|
|
256
|
+
@staticmethod
|
|
257
|
+
def get_launch_args() -> List[str]:
|
|
258
|
+
r"""Get Chrome launch arguments for stealth mode.
|
|
259
|
+
|
|
260
|
+
Returns:
|
|
261
|
+
List[str]: Chrome command line arguments to avoid detection.
|
|
262
|
+
"""
|
|
263
|
+
return [
|
|
264
|
+
'--disable-blink-features=AutomationControlled',
|
|
265
|
+
'--disable-features=VizDisplayCompositor',
|
|
266
|
+
'--disable-ipc-flooding-protection',
|
|
267
|
+
'--disable-renderer-backgrounding',
|
|
268
|
+
'--disable-backgrounding-occluded-windows',
|
|
269
|
+
'--disable-dev-shm-usage',
|
|
270
|
+
'--disable-extensions',
|
|
271
|
+
'--disable-plugins',
|
|
272
|
+
'--disable-default-apps',
|
|
273
|
+
'--disable-sync',
|
|
274
|
+
'--no-default-browser-check',
|
|
275
|
+
'--no-first-run',
|
|
276
|
+
'--no-sandbox',
|
|
277
|
+
'--disable-setuid-sandbox',
|
|
278
|
+
'--disable-web-security',
|
|
279
|
+
'--disable-features=TranslateUI',
|
|
280
|
+
'--disable-features=BlinkGenPropertyTrees',
|
|
281
|
+
'--disable-component-extensions-with-background-pages',
|
|
282
|
+
]
|
|
283
|
+
|
|
284
|
+
@staticmethod
|
|
285
|
+
def get_context_options() -> Dict[str, Any]:
|
|
286
|
+
r"""Get browser context options for stealth mode.
|
|
287
|
+
|
|
288
|
+
Returns:
|
|
289
|
+
Dict[str, Any]: Browser context configuration options.
|
|
290
|
+
"""
|
|
291
|
+
return {
|
|
292
|
+
'user_agent': (
|
|
293
|
+
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) '
|
|
294
|
+
'AppleWebKit/537.36 (KHTML, like Gecko) '
|
|
295
|
+
'Chrome/131.0.0.0 Safari/537.36'
|
|
296
|
+
),
|
|
297
|
+
'viewport': {'width': 1920, 'height': 1080},
|
|
298
|
+
'locale': 'en-US',
|
|
299
|
+
'timezone_id': 'America/New_York',
|
|
300
|
+
'geolocation': {'latitude': 40.7128, 'longitude': -74.0060},
|
|
301
|
+
'permissions': ['geolocation'],
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
@staticmethod
|
|
305
|
+
def get_http_headers() -> Dict[str, str]:
|
|
306
|
+
r"""Get HTTP headers for stealth mode.
|
|
307
|
+
|
|
308
|
+
Returns:
|
|
309
|
+
Dict[str, str]: HTTP headers to appear more like a real browser.
|
|
310
|
+
"""
|
|
311
|
+
return {
|
|
312
|
+
'Accept': (
|
|
313
|
+
'text/html,application/xhtml+xml,application/xml;q=0.9,'
|
|
314
|
+
'image/avif,image/webp,image/apng,*/*;q=0.8,'
|
|
315
|
+
'application/signed-exchange;v=b3;q=0.7'
|
|
316
|
+
),
|
|
317
|
+
'Accept-Language': 'en-US,en;q=0.9',
|
|
318
|
+
'Accept-Encoding': 'gzip, deflate, br, zstd',
|
|
319
|
+
'Cache-Control': 'max-age=0',
|
|
320
|
+
'Sec-Ch-Ua': (
|
|
321
|
+
'"Google Chrome";v="131", "Chromium";v="131", '
|
|
322
|
+
'"Not=A?Brand";v="24"'
|
|
323
|
+
),
|
|
324
|
+
'Sec-Ch-Ua-Mobile': '?0',
|
|
325
|
+
'Sec-Ch-Ua-Platform': '"Windows"',
|
|
326
|
+
'Sec-Fetch-Dest': 'document',
|
|
327
|
+
'Sec-Fetch-Mode': 'navigate',
|
|
328
|
+
'Sec-Fetch-Site': 'none',
|
|
329
|
+
'Sec-Fetch-User': '?1',
|
|
330
|
+
'Upgrade-Insecure-Requests': '1',
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
@staticmethod
|
|
334
|
+
def get_stealth_config() -> Dict[str, Any]:
|
|
335
|
+
r"""Get stealth configuration.
|
|
336
|
+
|
|
337
|
+
Returns:
|
|
338
|
+
Dict[str, Any]: Complete stealth configuration.
|
|
339
|
+
"""
|
|
340
|
+
return {
|
|
341
|
+
'launch_args': BrowserConfig.get_launch_args(),
|
|
342
|
+
'context_options': BrowserConfig.get_context_options(),
|
|
343
|
+
'http_headers': BrowserConfig.get_http_headers(),
|
|
344
|
+
}
|
|
345
|
+
|
|
346
|
+
@staticmethod
|
|
347
|
+
def get_all_config() -> Dict[str, Any]:
|
|
348
|
+
r"""Get all browser configuration including stealth, timeouts,
|
|
349
|
+
and action limits.
|
|
350
|
+
|
|
351
|
+
Returns:
|
|
352
|
+
Dict[str, Any]: Complete browser configuration.
|
|
353
|
+
"""
|
|
354
|
+
return {
|
|
355
|
+
'timeouts': BrowserConfig.get_timeout_config(),
|
|
356
|
+
'action_limits': BrowserConfig.get_action_limits(),
|
|
357
|
+
'stealth': BrowserConfig.get_stealth_config(),
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
|
|
361
|
+
# Legacy ConfigLoader class for compatibility (now just wraps BrowserConfig)
|
|
362
|
+
class ConfigLoader:
|
|
363
|
+
r"""Legacy wrapper for BrowserConfig - maintained for backward
|
|
364
|
+
compatibility."""
|
|
365
|
+
|
|
366
|
+
@classmethod
|
|
367
|
+
def get_browser_config(cls):
|
|
368
|
+
r"""Get the BrowserConfig class."""
|
|
369
|
+
return BrowserConfig
|
|
370
|
+
|
|
371
|
+
@classmethod
|
|
372
|
+
def get_stealth_config(cls):
|
|
373
|
+
r"""Get the StealthConfig class (alias)."""
|
|
374
|
+
return BrowserConfig # StealthConfig is an alias for BrowserConfig
|
|
375
|
+
|
|
376
|
+
@classmethod
|
|
377
|
+
def get_timeout_config(cls) -> Dict[str, int]:
|
|
378
|
+
r"""Get timeout configuration."""
|
|
379
|
+
return BrowserConfig.get_timeout_config()
|
|
380
|
+
|
|
381
|
+
@classmethod
|
|
382
|
+
def get_action_timeout(cls, override: Optional[int] = None) -> int:
|
|
383
|
+
r"""Get action timeout with optional override."""
|
|
384
|
+
return BrowserConfig.get_action_timeout(override)
|
|
385
|
+
|
|
386
|
+
@classmethod
|
|
387
|
+
def get_short_timeout(cls, override: Optional[int] = None) -> int:
|
|
388
|
+
r"""Get short timeout with optional override."""
|
|
389
|
+
return BrowserConfig.get_short_timeout(override)
|
|
390
|
+
|
|
391
|
+
@classmethod
|
|
392
|
+
def get_navigation_timeout(cls, override: Optional[int] = None) -> int:
|
|
393
|
+
r"""Get navigation timeout with optional override."""
|
|
394
|
+
return BrowserConfig.get_navigation_timeout(override)
|
|
395
|
+
|
|
396
|
+
@classmethod
|
|
397
|
+
def get_network_idle_timeout(cls, override: Optional[int] = None) -> int:
|
|
398
|
+
r"""Get network idle timeout with optional override."""
|
|
399
|
+
return BrowserConfig.get_network_idle_timeout(override)
|
|
400
|
+
|
|
401
|
+
@classmethod
|
|
402
|
+
def get_max_scroll_amount(cls, override: Optional[int] = None) -> int:
|
|
403
|
+
r"""Get maximum scroll amount with optional override."""
|
|
404
|
+
return BrowserConfig.get_max_scroll_amount(override)
|
|
405
|
+
|
|
406
|
+
@classmethod
|
|
407
|
+
def get_max_log_limit(cls, override: Optional[int] = None) -> int:
|
|
408
|
+
r"""Get maximum log limit with optional override."""
|
|
409
|
+
return BrowserConfig.get_max_log_limit(override)
|
|
410
|
+
|
|
411
|
+
@classmethod
|
|
412
|
+
def get_screenshot_timeout(cls, override: Optional[int] = None) -> int:
|
|
413
|
+
r"""Get screenshot timeout with optional override."""
|
|
414
|
+
return BrowserConfig.get_screenshot_timeout(override)
|
|
415
|
+
|
|
416
|
+
@classmethod
|
|
417
|
+
def get_page_stability_timeout(cls, override: Optional[int] = None) -> int:
|
|
418
|
+
r"""Get page stability timeout with optional override."""
|
|
419
|
+
return BrowserConfig.get_page_stability_timeout(override)
|
|
420
|
+
|
|
421
|
+
@classmethod
|
|
422
|
+
def get_dom_content_loaded_timeout(
|
|
423
|
+
cls, override: Optional[int] = None
|
|
424
|
+
) -> int:
|
|
425
|
+
r"""Get DOM content loaded timeout with optional override."""
|
|
426
|
+
return BrowserConfig.get_dom_content_loaded_timeout(override)
|
|
427
|
+
|
|
428
|
+
|
|
429
|
+
# Backward compatibility aliases and convenience functions
|
|
430
|
+
StealthConfig = BrowserConfig
|
|
431
|
+
|
|
432
|
+
|
|
433
|
+
def get_browser_config():
|
|
434
|
+
r"""Get BrowserConfig class."""
|
|
435
|
+
return BrowserConfig
|
|
436
|
+
|
|
437
|
+
|
|
438
|
+
def get_stealth_config():
|
|
439
|
+
r"""Get StealthConfig class."""
|
|
440
|
+
return BrowserConfig
|
|
441
|
+
|
|
442
|
+
|
|
443
|
+
def get_timeout_config() -> Dict[str, int]:
|
|
444
|
+
r"""Get timeout configuration."""
|
|
445
|
+
return BrowserConfig.get_timeout_config()
|
|
446
|
+
|
|
447
|
+
|
|
448
|
+
def get_action_timeout(override: Optional[int] = None) -> int:
|
|
449
|
+
r"""Get action timeout with optional override."""
|
|
450
|
+
return BrowserConfig.get_action_timeout(override)
|
|
451
|
+
|
|
452
|
+
|
|
453
|
+
def get_short_timeout(override: Optional[int] = None) -> int:
|
|
454
|
+
r"""Get short timeout with optional override."""
|
|
455
|
+
return BrowserConfig.get_short_timeout(override)
|
|
456
|
+
|
|
457
|
+
|
|
458
|
+
def get_navigation_timeout(override: Optional[int] = None) -> int:
|
|
459
|
+
r"""Get navigation timeout with optional override."""
|
|
460
|
+
return BrowserConfig.get_navigation_timeout(override)
|
|
461
|
+
|
|
462
|
+
|
|
463
|
+
def get_network_idle_timeout(override: Optional[int] = None) -> int:
|
|
464
|
+
r"""Get network idle timeout with optional override."""
|
|
465
|
+
return BrowserConfig.get_network_idle_timeout(override)
|
|
466
|
+
|
|
467
|
+
|
|
468
|
+
def get_max_scroll_amount(override: Optional[int] = None) -> int:
|
|
469
|
+
r"""Get maximum scroll amount with optional override."""
|
|
470
|
+
return BrowserConfig.get_max_scroll_amount(override)
|
|
471
|
+
|
|
472
|
+
|
|
473
|
+
def get_max_log_limit(override: Optional[int] = None) -> int:
|
|
474
|
+
r"""Get maximum log limit with optional override."""
|
|
475
|
+
return BrowserConfig.get_max_log_limit(override)
|
|
476
|
+
|
|
477
|
+
|
|
478
|
+
def get_screenshot_timeout(override: Optional[int] = None) -> int:
|
|
479
|
+
r"""Get screenshot timeout with optional override."""
|
|
480
|
+
return BrowserConfig.get_screenshot_timeout(override)
|
|
481
|
+
|
|
482
|
+
|
|
483
|
+
def get_page_stability_timeout(override: Optional[int] = None) -> int:
|
|
484
|
+
r"""Get page stability timeout with optional override."""
|
|
485
|
+
return BrowserConfig.get_page_stability_timeout(override)
|
|
486
|
+
|
|
487
|
+
|
|
488
|
+
def get_dom_content_loaded_timeout(override: Optional[int] = None) -> int:
|
|
489
|
+
r"""Get DOM content loaded timeout with optional override."""
|
|
490
|
+
return BrowserConfig.get_dom_content_loaded_timeout(override)
|