ag2 0.9.5__tar.gz → 0.9.6__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 ag2 might be problematic. Click here for more details.
- {ag2-0.9.5 → ag2-0.9.6}/.devcontainer/setup.sh +3 -0
- {ag2-0.9.5 → ag2-0.9.6}/PKG-INFO +1 -1
- {ag2-0.9.5 → ag2-0.9.6}/autogen/coding/docker_commandline_code_executor.py +29 -9
- ag2-0.9.6/autogen/environments/__init__.py +10 -0
- ag2-0.9.6/autogen/environments/docker_python_environment.py +375 -0
- ag2-0.9.6/autogen/environments/python_environment.py +134 -0
- ag2-0.9.6/autogen/environments/system_python_environment.py +86 -0
- ag2-0.9.6/autogen/environments/venv_python_environment.py +224 -0
- ag2-0.9.6/autogen/environments/working_directory.py +75 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/llm_config.py +6 -3
- {ag2-0.9.5 → ag2-0.9.6}/autogen/mcp/mcp_proxy/mcp_proxy.py +4 -4
- {ag2-0.9.5 → ag2-0.9.6}/autogen/oai/client.py +28 -7
- {ag2-0.9.5 → ag2-0.9.6}/autogen/tools/experimental/__init__.py +2 -0
- ag2-0.9.6/autogen/tools/experimental/code_execution/__init__.py +7 -0
- ag2-0.9.6/autogen/tools/experimental/code_execution/python_code_execution.py +88 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/version.py +1 -1
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/advanced-concepts/code-execution.mdx +6 -0
- ag2-0.9.6/website/docs/user-guide/reference-tools/code-execution.mdx +144 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/mint-json-template.json.jinja +5 -2
- ag2-0.9.6/website/snippets/reference-tools/code-execution-docker.mdx +55 -0
- ag2-0.9.6/website/snippets/reference-tools/code-execution-system.mdx +53 -0
- ag2-0.9.6/website/snippets/reference-tools/code-execution-venv.mdx +56 -0
- {ag2-0.9.5 → ag2-0.9.6}/.coveragerc +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/.devcontainer/Dockerfile +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/.devcontainer/README.md +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/.devcontainer/devcontainer.json +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/.devcontainer/python-3.10/devcontainer.json +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/.devcontainer/python-3.11/devcontainer.json +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/.devcontainer/python-3.12/devcontainer.json +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/.devcontainer/python-3.13/devcontainer.json +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/.gitattributes +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/.github/ISSUE_TEMPLATE/general_issue.yml +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/.github/ISSUE_TEMPLATE.md +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/.github/dependabot.yml +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/.github/workflows/build-docs.yml +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/.github/workflows/build-mkdocs.yml +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/.github/workflows/contrib-graph-rag-tests.yml +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/.github/workflows/contrib-llm-test.yml +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/.github/workflows/contrib-test.yml +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/.github/workflows/core-llm-test.yml +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/.github/workflows/core-test.yml +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/.github/workflows/deploy-website-mintlify.yml +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/.github/workflows/deploy-website.yml +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/.github/workflows/docs-check-broken-links.yml +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/.github/workflows/integration-test.yml +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/.github/workflows/lfs-check.yml +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/.github/workflows/mkdocs-check-broken-links.yml +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/.github/workflows/pr-checks.yml +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/.github/workflows/python-package.yml +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/.github/workflows/test-with-optional-deps.yml +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/.github/workflows/type-check.yml +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/.gitignore +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/.muffet-excluded-links.txt +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/.pre-commit-config.yaml +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/CITATION.cff +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/LICENSE +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/MAINTAINERS.md +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/NOTICE.md +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/OAI_CONFIG_LIST_sample +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/README.md +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/TRANSPARENCY_FAQS.md +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/announcements.md +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/__init__.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/_website/__init__.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/_website/generate_api_references.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/_website/generate_mkdocs.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/_website/notebook_processor.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/_website/process_notebooks.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/_website/utils.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/__init__.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/agent.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/assistant_agent.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/chat.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/contrib/__init__.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/contrib/agent_eval/README.md +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/contrib/agent_eval/agent_eval.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/contrib/agent_eval/criterion.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/contrib/agent_eval/critic_agent.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/contrib/agent_eval/quantifier_agent.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/contrib/agent_eval/subcritic_agent.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/contrib/agent_eval/task.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/contrib/agent_optimizer.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/contrib/capabilities/__init__.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/contrib/capabilities/agent_capability.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/contrib/capabilities/generate_images.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/contrib/capabilities/teachability.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/contrib/capabilities/text_compressors.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/contrib/capabilities/tools_capability.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/contrib/capabilities/transform_messages.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/contrib/capabilities/transforms.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/contrib/capabilities/transforms_util.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/contrib/capabilities/vision_capability.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/contrib/captainagent/__init__.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/contrib/captainagent/agent_builder.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/contrib/captainagent/captainagent.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/contrib/captainagent/tool_retriever.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/contrib/captainagent/tools/README.md +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/contrib/captainagent/tools/__init__.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/contrib/captainagent/tools/data_analysis/calculate_correlation.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/contrib/captainagent/tools/data_analysis/calculate_skewness_and_kurtosis.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/contrib/captainagent/tools/data_analysis/detect_outlier_iqr.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/contrib/captainagent/tools/data_analysis/detect_outlier_zscore.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/contrib/captainagent/tools/data_analysis/explore_csv.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/contrib/captainagent/tools/data_analysis/shapiro_wilk_test.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/contrib/captainagent/tools/information_retrieval/arxiv_download.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/contrib/captainagent/tools/information_retrieval/arxiv_search.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/contrib/captainagent/tools/information_retrieval/extract_pdf_image.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/contrib/captainagent/tools/information_retrieval/extract_pdf_text.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/contrib/captainagent/tools/information_retrieval/get_wikipedia_text.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/contrib/captainagent/tools/information_retrieval/get_youtube_caption.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/contrib/captainagent/tools/information_retrieval/image_qa.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/contrib/captainagent/tools/information_retrieval/optical_character_recognition.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/contrib/captainagent/tools/information_retrieval/perform_web_search.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/contrib/captainagent/tools/information_retrieval/scrape_wikipedia_tables.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/contrib/captainagent/tools/information_retrieval/transcribe_audio_file.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/contrib/captainagent/tools/information_retrieval/youtube_download.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/contrib/captainagent/tools/math/calculate_circle_area_from_diameter.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/contrib/captainagent/tools/math/calculate_day_of_the_week.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/contrib/captainagent/tools/math/calculate_fraction_sum.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/contrib/captainagent/tools/math/calculate_matrix_power.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/contrib/captainagent/tools/math/calculate_reflected_point.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/contrib/captainagent/tools/math/complex_numbers_product.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/contrib/captainagent/tools/math/compute_currency_conversion.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/contrib/captainagent/tools/math/count_distinct_permutations.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/contrib/captainagent/tools/math/evaluate_expression.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/contrib/captainagent/tools/math/find_continuity_point.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/contrib/captainagent/tools/math/fraction_to_mixed_numbers.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/contrib/captainagent/tools/math/modular_inverse_sum.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/contrib/captainagent/tools/math/simplify_mixed_numbers.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/contrib/captainagent/tools/math/sum_of_digit_factorials.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/contrib/captainagent/tools/math/sum_of_primes_below.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/contrib/captainagent/tools/requirements.txt +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/contrib/captainagent/tools/tool_description.tsv +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/contrib/gpt_assistant_agent.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/contrib/graph_rag/__init__.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/contrib/graph_rag/document.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/contrib/graph_rag/falkor_graph_query_engine.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/contrib/graph_rag/falkor_graph_rag_capability.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/contrib/graph_rag/graph_query_engine.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/contrib/graph_rag/graph_rag_capability.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/contrib/graph_rag/neo4j_graph_query_engine.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/contrib/graph_rag/neo4j_graph_rag_capability.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/contrib/graph_rag/neo4j_native_graph_query_engine.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/contrib/graph_rag/neo4j_native_graph_rag_capability.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/contrib/img_utils.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/contrib/llamaindex_conversable_agent.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/contrib/llava_agent.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/contrib/math_user_proxy_agent.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/contrib/multimodal_conversable_agent.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/contrib/qdrant_retrieve_user_proxy_agent.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/contrib/rag/__init__.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/contrib/rag/chromadb_query_engine.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/contrib/rag/llamaindex_query_engine.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/contrib/rag/mongodb_query_engine.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/contrib/rag/query_engine.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/contrib/retrieve_assistant_agent.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/contrib/retrieve_user_proxy_agent.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/contrib/society_of_mind_agent.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/contrib/swarm_agent.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/contrib/text_analyzer_agent.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/contrib/vectordb/__init__.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/contrib/vectordb/base.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/contrib/vectordb/chromadb.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/contrib/vectordb/couchbase.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/contrib/vectordb/mongodb.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/contrib/vectordb/pgvectordb.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/contrib/vectordb/qdrant.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/contrib/vectordb/utils.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/contrib/web_surfer.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/conversable_agent.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/group/__init__.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/group/available_condition.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/group/context_condition.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/group/context_expression.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/group/context_str.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/group/context_variables.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/group/group_tool_executor.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/group/group_utils.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/group/guardrails.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/group/handoffs.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/group/llm_condition.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/group/multi_agent_chat.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/group/on_condition.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/group/on_context_condition.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/group/patterns/__init__.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/group/patterns/auto.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/group/patterns/manual.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/group/patterns/pattern.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/group/patterns/random.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/group/patterns/round_robin.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/group/reply_result.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/group/speaker_selection_result.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/group/targets/__init__.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/group/targets/group_chat_target.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/group/targets/group_manager_target.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/group/targets/transition_target.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/group/targets/transition_utils.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/groupchat.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/realtime/__init__.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/realtime/experimental/__init__.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/realtime/experimental/audio_adapters/__init__.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/realtime/experimental/audio_adapters/twilio_audio_adapter.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/realtime/experimental/audio_adapters/websocket_audio_adapter.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/realtime/experimental/audio_observer.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/realtime/experimental/clients/__init__.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/realtime/experimental/clients/gemini/__init__.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/realtime/experimental/clients/gemini/client.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/realtime/experimental/clients/oai/__init__.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/realtime/experimental/clients/oai/base_client.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/realtime/experimental/clients/oai/rtc_client.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/realtime/experimental/clients/oai/utils.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/realtime/experimental/clients/realtime_client.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/realtime/experimental/function_observer.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/realtime/experimental/realtime_agent.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/realtime/experimental/realtime_events.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/realtime/experimental/realtime_observer.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/realtime/experimental/realtime_swarm.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/realtime/experimental/websockets.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/realtime_agent/__init__.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/user_proxy_agent.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agentchat/utils.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agents/__init__.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agents/contrib/__init__.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agents/contrib/time/__init__.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agents/contrib/time/time_reply_agent.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agents/contrib/time/time_tool_agent.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agents/experimental/__init__.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agents/experimental/deep_research/__init__.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agents/experimental/deep_research/deep_research.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agents/experimental/discord/__init__.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agents/experimental/discord/discord.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agents/experimental/document_agent/__init__.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agents/experimental/document_agent/chroma_query_engine.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agents/experimental/document_agent/docling_doc_ingest_agent.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agents/experimental/document_agent/document_agent.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agents/experimental/document_agent/document_conditions.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agents/experimental/document_agent/document_utils.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agents/experimental/document_agent/inmemory_query_engine.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agents/experimental/document_agent/parser_utils.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agents/experimental/document_agent/url_utils.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agents/experimental/reasoning/__init__.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agents/experimental/reasoning/reasoning_agent.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agents/experimental/slack/__init__.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agents/experimental/slack/slack.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agents/experimental/telegram/__init__.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agents/experimental/telegram/telegram.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agents/experimental/websurfer/__init__.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agents/experimental/websurfer/websurfer.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agents/experimental/wikipedia/__init__.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/agents/experimental/wikipedia/wikipedia.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/browser_utils.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/cache/__init__.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/cache/abstract_cache_base.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/cache/cache.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/cache/cache_factory.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/cache/cosmos_db_cache.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/cache/disk_cache.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/cache/in_memory_cache.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/cache/redis_cache.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/code_utils.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/coding/__init__.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/coding/base.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/coding/factory.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/coding/func_with_reqs.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/coding/jupyter/__init__.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/coding/jupyter/base.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/coding/jupyter/docker_jupyter_server.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/coding/jupyter/embedded_ipython_code_executor.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/coding/jupyter/import_utils.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/coding/jupyter/jupyter_client.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/coding/jupyter/jupyter_code_executor.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/coding/jupyter/local_jupyter_server.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/coding/local_commandline_code_executor.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/coding/markdown_code_extractor.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/coding/utils.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/doc_utils.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/events/__init__.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/events/agent_events.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/events/base_event.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/events/client_events.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/events/helpers.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/events/print_event.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/exception_utils.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/extensions/__init__.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/fast_depends/__init__.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/fast_depends/_compat.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/fast_depends/core/__init__.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/fast_depends/core/build.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/fast_depends/core/model.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/fast_depends/dependencies/__init__.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/fast_depends/dependencies/model.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/fast_depends/dependencies/provider.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/fast_depends/library/__init__.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/fast_depends/library/model.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/fast_depends/py.typed +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/fast_depends/schema.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/fast_depends/use.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/fast_depends/utils.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/formatting_utils.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/function_utils.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/graph_utils.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/import_utils.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/interop/__init__.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/interop/crewai/__init__.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/interop/crewai/crewai.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/interop/interoperability.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/interop/interoperable.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/interop/langchain/__init__.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/interop/langchain/langchain_chat_model_factory.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/interop/langchain/langchain_tool.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/interop/litellm/__init__.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/interop/litellm/litellm_config_factory.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/interop/pydantic_ai/__init__.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/interop/pydantic_ai/pydantic_ai.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/interop/registry.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/io/__init__.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/io/base.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/io/console.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/io/processors/__init__.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/io/processors/base.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/io/processors/console_event_processor.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/io/run_response.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/io/thread_io_stream.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/io/websockets.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/json_utils.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/logger/__init__.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/logger/base_logger.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/logger/file_logger.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/logger/logger_factory.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/logger/logger_utils.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/logger/sqlite_logger.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/math_utils.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/mcp/__init__.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/mcp/__main__.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/mcp/helpers.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/mcp/mcp_client.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/mcp/mcp_proxy/__init__.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/mcp/mcp_proxy/fastapi_code_generator_helpers.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/mcp/mcp_proxy/operation_grouping.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/mcp/mcp_proxy/operation_renaming.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/mcp/mcp_proxy/patch_fastapi_code_generator.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/mcp/mcp_proxy/security.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/mcp/mcp_proxy/security_schema_visitor.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/messages/__init__.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/messages/agent_messages.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/messages/base_message.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/messages/client_messages.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/messages/print_message.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/oai/__init__.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/oai/anthropic.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/oai/bedrock.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/oai/cerebras.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/oai/client_utils.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/oai/cohere.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/oai/gemini.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/oai/gemini_types.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/oai/groq.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/oai/mistral.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/oai/oai_models/__init__.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/oai/oai_models/_models.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/oai/oai_models/chat_completion.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/oai/oai_models/chat_completion_audio.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/oai/oai_models/chat_completion_message.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/oai/oai_models/chat_completion_message_tool_call.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/oai/oai_models/chat_completion_token_logprob.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/oai/oai_models/completion_usage.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/oai/ollama.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/oai/openai_responses.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/oai/openai_utils.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/oai/together.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/retrieve_utils.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/runtime_logging.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/token_count_utils.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/tools/__init__.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/tools/contrib/__init__.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/tools/contrib/time/__init__.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/tools/contrib/time/time.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/tools/dependency_injection.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/tools/experimental/browser_use/__init__.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/tools/experimental/browser_use/browser_use.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/tools/experimental/crawl4ai/__init__.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/tools/experimental/crawl4ai/crawl4ai.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/tools/experimental/deep_research/__init__.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/tools/experimental/deep_research/deep_research.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/tools/experimental/duckduckgo/__init__.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/tools/experimental/duckduckgo/duckduckgo_search.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/tools/experimental/firecrawl/__init__.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/tools/experimental/firecrawl/firecrawl_tool.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/tools/experimental/google/__init__.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/tools/experimental/google/authentication/__init__.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/tools/experimental/google/authentication/credentials_hosted_provider.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/tools/experimental/google/authentication/credentials_local_provider.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/tools/experimental/google/authentication/credentials_provider.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/tools/experimental/google/drive/__init__.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/tools/experimental/google/drive/drive_functions.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/tools/experimental/google/drive/toolkit.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/tools/experimental/google/model.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/tools/experimental/google/toolkit_protocol.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/tools/experimental/google_search/__init__.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/tools/experimental/google_search/google_search.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/tools/experimental/google_search/youtube_search.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/tools/experimental/messageplatform/__init__.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/tools/experimental/messageplatform/discord/__init__.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/tools/experimental/messageplatform/discord/discord.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/tools/experimental/messageplatform/slack/__init__.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/tools/experimental/messageplatform/slack/slack.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/tools/experimental/messageplatform/telegram/__init__.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/tools/experimental/messageplatform/telegram/telegram.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/tools/experimental/perplexity/__init__.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/tools/experimental/perplexity/perplexity_search.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/tools/experimental/reliable/__init__.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/tools/experimental/reliable/reliable.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/tools/experimental/searxng/__init__.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/tools/experimental/searxng/searxng_search.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/tools/experimental/tavily/__init__.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/tools/experimental/tavily/tavily_search.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/tools/experimental/web_search_preview/__init__.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/tools/experimental/web_search_preview/web_search_preview.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/tools/experimental/wikipedia/__init__.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/tools/experimental/wikipedia/wikipedia.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/tools/function_utils.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/tools/tool.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/tools/toolkit.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/autogen/types.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/azure-pipelines.yml +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/codecov.yml +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/license_original/LICENSE-CC +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/license_original/LICENSE_original_MIT +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/pyproject.toml +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/scripts/broken-links-check.sh +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/scripts/build-setup-files.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/scripts/devcontainer/generate-devcontainers.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/scripts/devcontainer/generate-devcontainers.sh +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/scripts/devcontainer/templates/devcontainer.json.jinja +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/scripts/docs_build.sh +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/scripts/docs_build_mkdocs.sh +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/scripts/docs_serve.sh +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/scripts/docs_serve_mkdocs.sh +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/scripts/integration-test.sh +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/scripts/lint.sh +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/scripts/pre-commit-build-setup-files.sh +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/scripts/pre-commit-license-check.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/scripts/pre-commit-lint.sh +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/scripts/pre-commit-mypy-run.sh +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/scripts/show-coverage-report.sh +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/scripts/test-core-llm.sh +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/scripts/test-core-skip-llm.sh +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/scripts/test-docs.sh +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/scripts/test-skip-llm.sh +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/scripts/test.sh +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/setup.jinja +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/setup_autogen.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/templates/client_template/main.jinja2 +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/templates/config_template/config.jinja2 +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/templates/main.jinja2 +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/.gitignore +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/README.md +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/blogs_and_user_stories_authors.yml +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/.gitignore +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2023-04-21-LLM-tuning-math/img/level2algebra.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2023-04-21-LLM-tuning-math/img/level3algebra.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2023-04-21-LLM-tuning-math/img/level4algebra.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2023-04-21-LLM-tuning-math/img/level5algebra.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2023-04-21-LLM-tuning-math/index.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2023-05-18-GPT-adaptive-humaneval/img/design.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2023-05-18-GPT-adaptive-humaneval/img/humaneval.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2023-05-18-GPT-adaptive-humaneval/index.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2023-06-28-MathChat/img/mathchatflow.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2023-06-28-MathChat/img/result.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2023-06-28-MathChat/index.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2023-07-14-Local-LLMs/index.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2023-10-18-RetrieveChat/img/autogen-rag.gif +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2023-10-18-RetrieveChat/img/retrievechat-arch.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2023-10-18-RetrieveChat/index.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2023-10-26-TeachableAgent/img/teachable-arch.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2023-10-26-TeachableAgent/index.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2023-11-06-LMM-Agent/img/teaser.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2023-11-06-LMM-Agent/index.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2023-11-09-EcoAssistant/img/chat.webp +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2023-11-09-EcoAssistant/img/results.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2023-11-09-EcoAssistant/img/system.webp +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2023-11-09-EcoAssistant/img/template-demo.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2023-11-09-EcoAssistant/img/template.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2023-11-09-EcoAssistant/index.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2023-11-13-OAI-assistants/img/teaser.jpg +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2023-11-13-OAI-assistants/index.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2023-11-20-AgentEval/img/agenteval-CQ.webp +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2023-11-20-AgentEval/img/math-problems-plot.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2023-11-20-AgentEval/img/tasks-taxonomy.webp +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2023-11-20-AgentEval/index.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2023-11-26-Agent-AutoBuild/img/agent_autobuild.webp +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2023-11-26-Agent-AutoBuild/index.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2023-12-01-AutoGenStudio/img/autogenstudio_config.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2023-12-01-AutoGenStudio/img/autogenstudio_home.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2023-12-01-AutoGenStudio/img/autogenstudio_skills.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2023-12-01-AutoGenStudio/index.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2023-12-23-AgentOptimizer/img/agentoptimizer.webp +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2023-12-23-AgentOptimizer/index.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2023-12-29-AgentDescriptions/index.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2024-01-23-Code-execution-in-docker/index.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2024-01-25-AutoGenBench/img/teaser.jpg +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2024-01-25-AutoGenBench/index.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2024-01-26-Custom-Models/index.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2024-02-02-AutoAnny/img/AutoAnnyLogo.jpg +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2024-02-02-AutoAnny/index.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2024-02-11-FSM-GroupChat/img/FSM_logic.webp +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2024-02-11-FSM-GroupChat/img/FSM_of_multi-agents.webp +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2024-02-11-FSM-GroupChat/img/teaser.webp +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2024-02-11-FSM-GroupChat/index.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2024-02-29-StateFlow/img/alfworld.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2024-02-29-StateFlow/img/bash_result.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2024-02-29-StateFlow/img/intercode.webp +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2024-02-29-StateFlow/img/sf_example_1.webp +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2024-02-29-StateFlow/index.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2024-03-03-AutoGen-Update/img/contributors.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2024-03-03-AutoGen-Update/img/dalle_gpt4v.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2024-03-03-AutoGen-Update/img/gaia.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2024-03-03-AutoGen-Update/img/love.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2024-03-03-AutoGen-Update/img/teach.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2024-03-03-AutoGen-Update/index.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2024-03-11-AutoDefense/img/architecture.webp +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2024-03-11-AutoDefense/img/defense-agency-design.webp +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2024-03-11-AutoDefense/img/table-4agents.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2024-03-11-AutoDefense/img/table-agents.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2024-03-11-AutoDefense/img/table-compared-methods.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2024-03-11-AutoDefense/index.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2024-05-24-Agent/img/agents.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2024-05-24-Agent/img/leadership.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2024-05-24-Agent/index.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2024-06-21-AgentEval/img/agenteval_ov_v3.webp +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2024-06-21-AgentEval/index.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2024-06-24-AltModels-Classes/img/agentstogether.jpeg +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2024-06-24-AltModels-Classes/index.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2024-07-25-AgentOps/img/autogen-integration.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2024-07-25-AgentOps/img/dashboard.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2024-07-25-AgentOps/img/flow.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2024-07-25-AgentOps/img/session-replay.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2024-07-25-AgentOps/index.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2024-11-15-CaptainAgent/img/build.webp +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2024-11-15-CaptainAgent/img/chat.webp +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2024-11-15-CaptainAgent/img/overall.webp +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2024-11-15-CaptainAgent/index.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2024-11-17-Swarm/index.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2024-11-27-Prompt-Leakage-Probing/img/probing_flow.webp +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2024-11-27-Prompt-Leakage-Probing/img/prompt_leakage_report.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2024-11-27-Prompt-Leakage-Probing/img/prompt_leakage_social_img.webp +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2024-11-27-Prompt-Leakage-Probing/img/prompt_test_chat.webp +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2024-11-27-Prompt-Leakage-Probing/index.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2024-12-02-ReasoningAgent2/img/reasoningagent_1.webp +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2024-12-02-ReasoningAgent2/img/reasoningagent_2.webp +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2024-12-02-ReasoningAgent2/img/tree-of-thoughts.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2024-12-02-ReasoningAgent2/index.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2024-12-06-FalkorDB-Structured/img/falkordb.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2024-12-06-FalkorDB-Structured/img/tripplanner.webp +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2024-12-06-FalkorDB-Structured/index.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2024-12-20-RealtimeAgent/index.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2024-12-20-Reasoning-Update/img/mcts_example.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2024-12-20-Reasoning-Update/img/reasoningagent_1.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2024-12-20-Reasoning-Update/index.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2024-12-20-Tools-interoperability/index.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2025-01-07-Tools-Dependency-Injection/index.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2025-01-08-RealtimeAgent-over-websocket/index.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2025-01-09-RealtimeAgent-over-WebRTC/index.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2025-01-10-WebSockets/img/structured_messages_with_websockets.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2025-01-10-WebSockets/index.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2025-01-22-Tools-ChatContext-Dependency-Injection/index.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2025-01-29-RealtimeAgent-with-gemini/img/RealtimeAgent_gemini.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2025-01-29-RealtimeAgent-with-gemini/index.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2025-01-31-WebSurferAgent/index.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2025-01-31-Websurfing-Tools/index.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2025-02-05-Communication-Agents/img/commsagents_discord_msg.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2025-02-05-Communication-Agents/img/commsagents_slack_finalmsg.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2025-02-05-Communication-Agents/img/commsagents_slack_msg.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2025-02-05-Communication-Agents/img/commsagents_telegram_msg.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2025-02-05-Communication-Agents/index.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2025-02-13-DeepResearchAgent/index.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2025-04-16-Reasoning/img/cognition.jpg +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2025-04-16-Reasoning/img/iter.jpg +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2025-04-16-Reasoning/img/partner.jpg +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2025-04-16-Reasoning/img/threads.jpeg +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2025-04-16-Reasoning/index.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2025-04-28-0.9-Release-Announcement/index.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2025-05-07-AG2-Copilot-Integration/img/AG2-CopilotKit.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2025-05-07-AG2-Copilot-Integration/img/ag2-copilotkit-architecture.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2025-05-07-AG2-Copilot-Integration/img/quick-start-1.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2025-05-07-AG2-Copilot-Integration/img/quick-start-2.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2025-05-07-AG2-Copilot-Integration/index.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2025-06-12-ReAct-Loops-in-GroupChat/img/image1.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2025-06-12-ReAct-Loops-in-GroupChat/img/image2.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2025-06-12-ReAct-Loops-in-GroupChat/img/image3.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2025-06-12-ReAct-Loops-in-GroupChat/img/image4.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/_blogs/2025-06-12-ReAct-Loops-in-GroupChat/index.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/community-talks/2025-04-10-NOVA/index.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/contributor-guide/Migration-Guide.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/contributor-guide/Research.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/contributor-guide/building/creating-a-tool.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/contributor-guide/building/creating-an-agent.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/contributor-guide/contributing.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/contributor-guide/documentation.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/contributor-guide/file-bug-report.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/contributor-guide/how-ag2-works/assets/generate-reply.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/contributor-guide/how-ag2-works/assets/initiate-chat.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/contributor-guide/how-ag2-works/generate-reply.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/contributor-guide/how-ag2-works/hooks.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/contributor-guide/how-ag2-works/initiate-chat.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/contributor-guide/how-ag2-works/overview.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/contributor-guide/maintainer.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/contributor-guide/pre-commit.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/contributor-guide/setup-development-environment.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/contributor-guide/tests.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/ecosystem/agentops.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/ecosystem/azure_cosmos_db.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/ecosystem/composio.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/ecosystem/databricks.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/ecosystem/img/ecosystem-databricks.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/ecosystem/img/ecosystem-fabric.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/ecosystem/img/ecosystem-llamaindex.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/ecosystem/img/ecosystem-memgpt.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/ecosystem/img/ecosystem-ollama.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/ecosystem/img/ecosystem-promptflow.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/ecosystem/llamaindex.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/ecosystem/mem0.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/ecosystem/memgpt.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/ecosystem/microsoft-fabric.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/ecosystem/ollama.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/ecosystem/pgvector.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/ecosystem/portkey.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/ecosystem/promptflow.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/faq/FAQ.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/home/quickstart.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/installation/Installation.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/installation/Optional-Dependencies.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/quick-start.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/use-cases/.gitignore +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/use-cases/community-gallery/community-gallery.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/use-cases/notebooks/Notebooks.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/use-cases/use-cases/assets/game-design-page.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/use-cases/use-cases/assets/game-designed.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/use-cases/use-cases/assets/travel-planning-falkordb.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/use-cases/use-cases/assets/travel-planning-itinerary.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/use-cases/use-cases/assets/travel-planning-overview.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/use-cases/use-cases/customer-service.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/use-cases/use-cases/game-design.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/use-cases/use-cases/travel-planning.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/advanced-concepts/assets/code-execution-in-conversation.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/advanced-concepts/assets/code-executor-docker.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/advanced-concepts/assets/code-executor-no-docker.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/advanced-concepts/assets/code-executor-stock-chart.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/advanced-concepts/assets/group-chat-fsm.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/advanced-concepts/assets/group-chat.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/advanced-concepts/assets/nested-chats.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/advanced-concepts/assets/sequential-two-agent-chat.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/advanced-concepts/assets/swarm-enhanced-01.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/advanced-concepts/assets/swarm-enhanced-02.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/advanced-concepts/assets/swarm-enhanced-03.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/advanced-concepts/assets/swarm-enhanced-04.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/advanced-concepts/assets/two-agent-chat.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/advanced-concepts/ending-a-chat.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/advanced-concepts/groupchat/custom-group-chat.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/advanced-concepts/groupchat/groupchat.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/advanced-concepts/groupchat/resuming-group-chat.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/advanced-concepts/groupchat/tools.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/advanced-concepts/llm-configuration-deep-dive.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/advanced-concepts/nested-chat.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/advanced-concepts/orchestration/assets/nested-chats.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/advanced-concepts/orchestration/assets/sequential-two-agent-chat.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/advanced-concepts/orchestration/ending-a-chat.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/advanced-concepts/orchestration/group-chat/agent-tools-functions.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/advanced-concepts/orchestration/group-chat/context-variables.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/advanced-concepts/orchestration/group-chat/guardrails.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/advanced-concepts/orchestration/group-chat/handoffs.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/advanced-concepts/orchestration/group-chat/introduction.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/advanced-concepts/orchestration/group-chat/patterns.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/advanced-concepts/orchestration/group-chat.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/advanced-concepts/orchestration/nested-chat.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/advanced-concepts/orchestration/orchestrations.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/advanced-concepts/orchestration/sequential-chat.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/advanced-concepts/orchestration/swarm/deprecation.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/advanced-concepts/orchestration/two-agent-chat.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/advanced-concepts/orchestrations.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/advanced-concepts/pattern-cookbook/assets/context_aware_routing.jpeg +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/advanced-concepts/pattern-cookbook/assets/context_aware_routing_flow.jpeg +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/advanced-concepts/pattern-cookbook/assets/escalation.jpeg +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/advanced-concepts/pattern-cookbook/assets/escalation_flow.jpeg +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/advanced-concepts/pattern-cookbook/assets/feedback_loop.jpeg +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/advanced-concepts/pattern-cookbook/assets/feedback_loop_flow.jpeg +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/advanced-concepts/pattern-cookbook/assets/hierarchical.jpeg +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/advanced-concepts/pattern-cookbook/assets/hierarchical_flow.jpeg +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/advanced-concepts/pattern-cookbook/assets/organic.jpeg +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/advanced-concepts/pattern-cookbook/assets/organic_flow.jpeg +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/advanced-concepts/pattern-cookbook/assets/pipeline.jpeg +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/advanced-concepts/pattern-cookbook/assets/pipeline_flow.jpeg +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/advanced-concepts/pattern-cookbook/assets/redundant.jpeg +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/advanced-concepts/pattern-cookbook/assets/redundant_flow.jpeg +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/advanced-concepts/pattern-cookbook/assets/star.jpeg +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/advanced-concepts/pattern-cookbook/assets/star_flow.jpeg +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/advanced-concepts/pattern-cookbook/assets/triage_tasks.jpeg +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/advanced-concepts/pattern-cookbook/assets/triage_tasks_flow.jpeg +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/advanced-concepts/pattern-cookbook/context_aware_routing.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/advanced-concepts/pattern-cookbook/escalation.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/advanced-concepts/pattern-cookbook/feedback_loop.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/advanced-concepts/pattern-cookbook/hierarchical.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/advanced-concepts/pattern-cookbook/organic.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/advanced-concepts/pattern-cookbook/overview.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/advanced-concepts/pattern-cookbook/pipeline.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/advanced-concepts/pattern-cookbook/redundant.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/advanced-concepts/pattern-cookbook/star.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/advanced-concepts/pattern-cookbook/triage_with_tasks.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/advanced-concepts/rag.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/advanced-concepts/realtime-agent/index.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/advanced-concepts/realtime-agent/twilio.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/advanced-concepts/realtime-agent/webrtc.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/advanced-concepts/realtime-agent/websocket.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/advanced-concepts/sequential-chat.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/advanced-concepts/tools/basics.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/advanced-concepts/tools/controlling-use.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/advanced-concepts/tools/index.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/advanced-concepts/tools/interop/crewai.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/advanced-concepts/tools/interop/langchain.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/advanced-concepts/tools/interop/pydanticai.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/advanced-concepts/tools/mcp/client.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/advanced-concepts/tools/tools-with-secrets.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/advanced-concepts/two-agent-chat.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/basic-concepts/assets/human-in-the-loop-example.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/basic-concepts/assets/overview-workflow.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/basic-concepts/conversable-agent.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/basic-concepts/human-in-the-loop.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/basic-concepts/installing-ag2.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/basic-concepts/introducing-group-chat.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/basic-concepts/introducing-swarm-orchestration.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/basic-concepts/introducing-tools.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/basic-concepts/llm-configuration.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/basic-concepts/overview.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/basic-concepts/structured-outputs.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/getting-started/Getting-Started.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/models/amazon-bedrock.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/models/anthropic.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/models/assets/ag2-agentchat.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/models/assets/chat-example.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/models/assets/create-gcp-svc.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/models/assets/gemini-coding-chart.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/models/cerebras.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/models/cohere.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/models/deepseek-v3.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/models/google-gemini.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/models/google-vertexai.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/models/groq.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/models/litellm-proxy-server/azure.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/models/litellm-proxy-server/installation.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/models/litellm-proxy-server/openai.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/models/litellm-proxy-server/watsonx.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/models/lm-studio.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/models/mistralai.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/models/ollama.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/models/openai.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/models/openai_responses.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/models/togetherai.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/models/vLLM.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/reference-agents/assets/commsagents_discordoutput.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/reference-agents/assets/commsagents_tools.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/reference-agents/assets/commsplatforms_discord_sentmsg.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/reference-agents/assets/commsplatforms_slack_sentmsg.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/reference-agents/assets/commsplatforms_telegram_sentmsg.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/reference-agents/assets/docagent_tests_story1.md +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/reference-agents/assets/docagent_tests_story2.md +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/reference-agents/assets/websurferagent_animated.gif +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/reference-agents/captainagent.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/reference-agents/communication-platforms/discordagent.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/reference-agents/communication-platforms/overview.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/reference-agents/communication-platforms/slackagent.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/reference-agents/communication-platforms/telegramagent.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/reference-agents/deepresearchagent.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/reference-agents/docagent-performance.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/reference-agents/docagent.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/reference-agents/index.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/reference-agents/reasoningagent.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/reference-agents/websurferagent.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/reference-agents/wikipediaagent.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/reference-tools/browser-use.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/reference-tools/communication-platforms/discord.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/reference-tools/communication-platforms/slack.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/reference-tools/communication-platforms/telegram.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/reference-tools/crawl4ai.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/reference-tools/deep-research.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/reference-tools/firecrawl.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/reference-tools/google-api/google-drive.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/reference-tools/google-api/google-search.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/reference-tools/google-api/youtube-search.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/reference-tools/index.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/reference-tools/perplexity-search.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/reference-tools/searxng-search.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-guide/reference-tools/wikipedia-search.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-stories/2025-02-11-NOVA/img/nexla_ag2.webp +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-stories/2025-02-11-NOVA/img/nova_architecture.webp +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-stories/2025-02-11-NOVA/index.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-stories/2025-04-03-Fortune-500-RAG-Chatbot/img/01.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-stories/2025-04-03-Fortune-500-RAG-Chatbot/img/02.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-stories/2025-04-03-Fortune-500-RAG-Chatbot/img/banner.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-stories/2025-04-03-Fortune-500-RAG-Chatbot/img/profile.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-stories/2025-04-03-Fortune-500-RAG-Chatbot/index.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-stories/2025-04-04-AgentWeb/img/01.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-stories/2025-04-04-AgentWeb/img/banner.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-stories/2025-04-04-AgentWeb/img/profile.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-stories/2025-04-04-AgentWeb/index.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-stories/2025-04-11-Productionizing-OSS-Agents/img/banner.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-stories/2025-04-11-Productionizing-OSS-Agents/index.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-stories/2025-04-15-CMBAgent/img/banner.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-stories/2025-04-15-CMBAgent/img/boris_profile.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-stories/2025-04-15-CMBAgent/img/flow-chart.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-stories/2025-04-15-CMBAgent/img/francisco_profile.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-stories/2025-04-15-CMBAgent/img/inigo_profile.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-stories/2025-04-15-CMBAgent/img/james_profile.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-stories/2025-04-15-CMBAgent/index.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-stories/2025-04-30-Cegid-Pulse-OS/img/01.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-stories/2025-04-30-Cegid-Pulse-OS/img/banner.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-stories/2025-04-30-Cegid-Pulse-OS/img/profile.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docs/user-stories/2025-04-30-Cegid-Pulse-OS/index.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/docusaurus.config.js +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/generate_api_references.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/logo/ag2-white.svg +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/logo/ag2.svg +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/logo/favicon.svg +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/mako_templates/text.mako +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/mint-app-gallery-deps.js +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/mint-script.js +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/mint-style.css +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/mkdocs/.gitignore +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/mkdocs/README.md +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/mkdocs/create_api_docs.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/mkdocs/data/gallery_items.yml +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/mkdocs/data/people.yml +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/mkdocs/docs/.gitignore +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/mkdocs/docs/index.md +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/mkdocs/docs/javascripts/extra.js +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/mkdocs/docs/stylesheets/extra.css +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/mkdocs/docs.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/mkdocs/docs_src/__init__.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/mkdocs/expand_markdown.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/mkdocs/generate_mkdocs.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/mkdocs/includes/.gitkeep +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/mkdocs/mkdocs.yml +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/mkdocs/overrides/404.html +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/mkdocs/overrides/home.html +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/mkdocs/overrides/images/blue-bg.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/mkdocs/overrides/images/bot-left-corner.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/mkdocs/overrides/images/bot-right-corner.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/mkdocs/overrides/images/button-shine.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/mkdocs/overrides/images/city-horizon.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/mkdocs/overrides/images/cloud.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/mkdocs/overrides/images/conversation.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/mkdocs/overrides/images/green-bg.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/mkdocs/overrides/images/human.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/mkdocs/overrides/images/intuitive.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/mkdocs/overrides/images/purple-bg.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/mkdocs/overrides/images/sun.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/mkdocs/overrides/images/top-left-corner.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/mkdocs/overrides/images/top-right-corner.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/mkdocs/overrides/images/yellow-bg.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/mkdocs/overrides/main.html +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/mkdocs/templates/redirect.html +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/mkdocs/update_releases.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/package-lock.json +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/package.json +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/process_notebooks.py +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/snippets/advanced-concepts/realtime-agent/img/1_service_running.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/snippets/advanced-concepts/realtime-agent/img/2_incoming_call.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/snippets/advanced-concepts/realtime-agent/img/3_request_for_flight_cancellation.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/snippets/advanced-concepts/realtime-agent/img/4_flight_number_name.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/snippets/advanced-concepts/realtime-agent/img/5_refund_policy.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/snippets/advanced-concepts/realtime-agent/img/6_flight_refunded.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/snippets/advanced-concepts/realtime-agent/img/realtime_agent_swarm.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/snippets/advanced-concepts/realtime-agent/img/twilio_endpoint_config.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/snippets/advanced-concepts/realtime-agent/img/twilio_phone_numbers.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/snippets/advanced-concepts/realtime-agent/img/webrtc_chat.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/snippets/advanced-concepts/realtime-agent/img/webrtc_communication_diagram.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/snippets/advanced-concepts/realtime-agent/img/webrtc_connection_diagram.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/snippets/advanced-concepts/realtime-agent/img/websocket_chat.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/snippets/advanced-concepts/realtime-agent/img/websocket_communication_diagram.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/snippets/advanced-concepts/realtime-agent/twilio.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/snippets/advanced-concepts/realtime-agent/webrtc.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/snippets/advanced-concepts/realtime-agent/websocket.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/snippets/components/ClientSideComponent.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/snippets/components/GalleryPage.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/snippets/data/GalleryItems.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/snippets/interop/crewai.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/snippets/interop/langchain.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/snippets/interop/pydanticai.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/snippets/mcp/client.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/snippets/python-examples/conversableagentchat.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/snippets/python-examples/groupchat.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/snippets/python-examples/groupchatcustomfsm.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/snippets/python-examples/groupchatcustomfunc.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/snippets/python-examples/humanintheloop.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/snippets/python-examples/humanintheloop_financial.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/snippets/python-examples/nestedchat.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/snippets/python-examples/sequentialchat.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/snippets/python-examples/structured_output.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/snippets/python-examples/swarm.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/snippets/python-examples/swarmgroupchat.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/snippets/python-examples/toolregister.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/snippets/python-examples/websurferagent.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/snippets/reference-agents/deep-research.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/snippets/reference-agents/img/DeepResearchAgent.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/snippets/reference-tools/browser-use.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/snippets/reference-tools/crawl4ai.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/snippets/reference-tools/deep-research.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/snippets/reference-tools/google-drive.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/snippets/utils/runmethodhelp.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/static/.nojekyll +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/static/img/ag.ico +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/static/img/ag.svg +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/static/img/ag2.ico +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/static/img/ag2.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/static/img/ag2.svg +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/static/img/auto.svg +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/static/img/autogen.svg +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/static/img/autogen_agentchat.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/static/img/autogen_app.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/static/img/autogen_app.svg +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/static/img/chat_example.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/static/img/conv.svg +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/static/img/conv_2.svg +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/static/img/cover.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/static/img/create_gcp_svc.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/static/img/ecosystem-composio.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/static/img/extend.svg +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/static/img/fast.svg +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/static/img/favicon-dark.svg +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/static/img/favicon.svg +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/static/img/flaml.svg +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/static/img/flaml_logo.ico +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/static/img/flaml_logo_fill.svg +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/static/img/gallery/TensionCode.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/static/img/gallery/agent-e.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/static/img/gallery/autotx.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/static/img/gallery/composio-autogen.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/static/img/gallery/default.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/static/img/gallery/robot.jpg +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/static/img/gallery/webagent.jpg +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/static/img/gallery/x-force-ide-ui.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/static/img/homepage-hero-background-large.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/static/img/homepage-hero-background.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/static/img/logo.svg +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/static/img/love.png +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/talks/2024-08-26/index.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/talks/2024-09-23/index.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/talks/2024-09-30/index.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/talks/2024-10-14/index.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/talks/2024-10-15/index.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/talks/2024-11-04/index.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/talks/2024-11-11/index.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/talks/2024-11-12/index.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/talks/2024-11-18/index.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/talks/2024-11-25/index.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/talks/2024-11-28/index.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/talks/2024-12-12/index.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/talks/2024-12-19/index.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/talks/2024-12-19-special_talk/index.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/talks/2025-01-16/index.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/talks/2025-01-23/index.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/talks/future_talks/index.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/user-guide/captainagent/_category_.json +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/user-guide/captainagent/agent_library.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/user-guide/captainagent/configurations.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/user-guide/captainagent/tool_library.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/user-guide/handling_long_contexts/_category_.json +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/user-guide/handling_long_contexts/compressing_text_w_llmligua.mdx +0 -0
- {ag2-0.9.5 → ag2-0.9.6}/website/user-guide/handling_long_contexts/intro_to_transform_messages.mdx +0 -0
{ag2-0.9.5 → ag2-0.9.6}/PKG-INFO
RENAMED
|
@@ -71,6 +71,8 @@ class DockerCommandLineCodeExecutor(CodeExecutor):
|
|
|
71
71
|
auto_remove: bool = True,
|
|
72
72
|
stop_container: bool = True,
|
|
73
73
|
execution_policies: Optional[dict[str, bool]] = None,
|
|
74
|
+
*,
|
|
75
|
+
container_create_kwargs: Optional[dict[str, Any]] = None,
|
|
74
76
|
):
|
|
75
77
|
"""(Experimental) A code executor class that executes code through
|
|
76
78
|
a command line environment in a Docker container.
|
|
@@ -98,6 +100,11 @@ class DockerCommandLineCodeExecutor(CodeExecutor):
|
|
|
98
100
|
whether code in that language should be executed. True means code in that language
|
|
99
101
|
will be executed, False means it will only be saved to a file. This overrides the
|
|
100
102
|
default execution policies. Defaults to None.
|
|
103
|
+
container_create_kwargs: Optional dict forwarded verbatim to
|
|
104
|
+
"docker.client.containers.create". Use it to set advanced Docker
|
|
105
|
+
options (environment variables, GPU device_requests, port mappings, etc.).
|
|
106
|
+
Values here override the class defaults when keys collide. Defaults to None.
|
|
107
|
+
|
|
101
108
|
|
|
102
109
|
Raises:
|
|
103
110
|
ValueError: On argument error, or if the container fails to start.
|
|
@@ -128,16 +135,29 @@ class DockerCommandLineCodeExecutor(CodeExecutor):
|
|
|
128
135
|
if container_name is None:
|
|
129
136
|
container_name = f"autogen-code-exec-{uuid.uuid4()}"
|
|
130
137
|
|
|
138
|
+
# build kwargs for docker.create
|
|
139
|
+
base_kwargs: dict[str, Any] = {
|
|
140
|
+
"image": image,
|
|
141
|
+
"name": container_name,
|
|
142
|
+
"entrypoint": "/bin/sh",
|
|
143
|
+
"tty": True,
|
|
144
|
+
"auto_remove": auto_remove,
|
|
145
|
+
"volumes": {str(bind_dir.resolve()): {"bind": "/workspace", "mode": "rw"}},
|
|
146
|
+
"working_dir": "/workspace",
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
if container_create_kwargs:
|
|
150
|
+
for k in ("entrypoint", "volumes", "working_dir", "tty"):
|
|
151
|
+
if k in container_create_kwargs:
|
|
152
|
+
logging.warning(
|
|
153
|
+
"DockerCommandLineCodeExecutor: overriding default %s=%s",
|
|
154
|
+
k,
|
|
155
|
+
container_create_kwargs[k],
|
|
156
|
+
)
|
|
157
|
+
base_kwargs.update(container_create_kwargs)
|
|
158
|
+
|
|
131
159
|
# Start a container from the image, read to exec commands later
|
|
132
|
-
self._container = client.containers.create(
|
|
133
|
-
image,
|
|
134
|
-
name=container_name,
|
|
135
|
-
entrypoint="/bin/sh",
|
|
136
|
-
tty=True,
|
|
137
|
-
auto_remove=auto_remove,
|
|
138
|
-
volumes={str(bind_dir.resolve()): {"bind": "/workspace", "mode": "rw"}},
|
|
139
|
-
working_dir="/workspace",
|
|
140
|
-
)
|
|
160
|
+
self._container = client.containers.create(**base_kwargs)
|
|
141
161
|
self._container.start()
|
|
142
162
|
|
|
143
163
|
_wait_for_ready(self._container)
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# Copyright (c) 2023 - 2025, AG2ai, Inc., AG2ai open-source projects maintainers and core contributors
|
|
2
|
+
#
|
|
3
|
+
# SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
|
|
5
|
+
from .docker_python_environment import DockerPythonEnvironment
|
|
6
|
+
from .system_python_environment import SystemPythonEnvironment
|
|
7
|
+
from .venv_python_environment import VenvPythonEnvironment
|
|
8
|
+
from .working_directory import WorkingDirectory
|
|
9
|
+
|
|
10
|
+
__all__ = ["DockerPythonEnvironment", "SystemPythonEnvironment", "VenvPythonEnvironment", "WorkingDirectory"]
|
|
@@ -0,0 +1,375 @@
|
|
|
1
|
+
# Copyright (c) 2023 - 2025, AG2ai, Inc., AG2ai open-source projects maintainers and core contributors
|
|
2
|
+
#
|
|
3
|
+
# SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
|
|
5
|
+
import logging
|
|
6
|
+
import os
|
|
7
|
+
import shutil
|
|
8
|
+
import subprocess
|
|
9
|
+
import tempfile
|
|
10
|
+
import uuid
|
|
11
|
+
from typing import Any, Optional, Tuple
|
|
12
|
+
|
|
13
|
+
from asyncer import asyncify
|
|
14
|
+
|
|
15
|
+
from .python_environment import PythonEnvironment
|
|
16
|
+
|
|
17
|
+
__all__ = ["DockerPythonEnvironment"]
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
class DockerPythonEnvironment(PythonEnvironment):
|
|
21
|
+
"""A Python environment using Docker containers for isolated execution."""
|
|
22
|
+
|
|
23
|
+
def __init__(
|
|
24
|
+
self,
|
|
25
|
+
image: str = "python:3.11-slim",
|
|
26
|
+
container_name_prefix: str = "ag2_docker_env_",
|
|
27
|
+
volumes: Optional[dict[str, str]] = None,
|
|
28
|
+
environment: Optional[dict[str, str]] = None,
|
|
29
|
+
network: Optional[str] = None,
|
|
30
|
+
pip_packages: Optional[list[str]] = None,
|
|
31
|
+
requirements_file: Optional[str] = None,
|
|
32
|
+
dockerfile: Optional[str] = None,
|
|
33
|
+
build_args: Optional[dict[str, str]] = None,
|
|
34
|
+
cleanup_container: bool = True,
|
|
35
|
+
keep_container_running: bool = False,
|
|
36
|
+
container_startup_timeout: int = 30,
|
|
37
|
+
):
|
|
38
|
+
"""
|
|
39
|
+
Initialize a Docker Python environment.
|
|
40
|
+
|
|
41
|
+
Args:
|
|
42
|
+
image: Docker image to use (ignored if dockerfile is provided)
|
|
43
|
+
container_name_prefix: Prefix for container names
|
|
44
|
+
volumes: Dictionary mapping host paths to container paths for mounting
|
|
45
|
+
environment: Dictionary of environment variables to set in the container
|
|
46
|
+
network: Docker network to attach the container to
|
|
47
|
+
pip_packages: List of pip packages to install in the container
|
|
48
|
+
requirements_file: Path to requirements.txt file to install in the container
|
|
49
|
+
dockerfile: Optional path to a Dockerfile to build and use instead of pulling an image
|
|
50
|
+
build_args: Optional build arguments for the Dockerfile
|
|
51
|
+
cleanup_container: Whether to remove the container after use
|
|
52
|
+
keep_container_running: Whether to keep the container running after execution
|
|
53
|
+
container_startup_timeout: Timeout in seconds for container startup
|
|
54
|
+
"""
|
|
55
|
+
self.image = image
|
|
56
|
+
self.container_name_prefix = container_name_prefix
|
|
57
|
+
self.volumes = volumes or {}
|
|
58
|
+
self.environment = environment or {}
|
|
59
|
+
self.network = network
|
|
60
|
+
self.pip_packages = pip_packages or []
|
|
61
|
+
self.requirements_file = requirements_file
|
|
62
|
+
self.dockerfile = dockerfile
|
|
63
|
+
self.build_args = build_args or {}
|
|
64
|
+
self.cleanup_container = cleanup_container
|
|
65
|
+
self.keep_container_running = keep_container_running
|
|
66
|
+
self.container_startup_timeout = container_startup_timeout
|
|
67
|
+
|
|
68
|
+
# Internal state
|
|
69
|
+
self._container_id = None
|
|
70
|
+
self._container_name = None
|
|
71
|
+
self._custom_image_name = None
|
|
72
|
+
self._temp_dir = None
|
|
73
|
+
|
|
74
|
+
super().__init__()
|
|
75
|
+
|
|
76
|
+
def _setup_environment(self) -> None:
|
|
77
|
+
"""Set up the Docker environment."""
|
|
78
|
+
# Verify Docker is installed and accessible
|
|
79
|
+
try:
|
|
80
|
+
result = subprocess.run(["docker", "--version"], capture_output=True, text=True, check=True)
|
|
81
|
+
logging.info(f"Docker version: {result.stdout.strip()}")
|
|
82
|
+
except (subprocess.SubprocessError, FileNotFoundError) as e:
|
|
83
|
+
raise RuntimeError(
|
|
84
|
+
"Docker not found or not accessible. Please ensure Docker is installed and running."
|
|
85
|
+
) from e
|
|
86
|
+
|
|
87
|
+
# Create a temporary directory for file operations
|
|
88
|
+
self._temp_dir = tempfile.mkdtemp(prefix="ag2_docker_")
|
|
89
|
+
|
|
90
|
+
# Generate a unique container name
|
|
91
|
+
self._container_name = f"{self.container_name_prefix}{uuid.uuid4().hex[:8]}"
|
|
92
|
+
|
|
93
|
+
# Build custom image if Dockerfile is provided
|
|
94
|
+
if self.dockerfile:
|
|
95
|
+
self._build_custom_image()
|
|
96
|
+
else:
|
|
97
|
+
# Pull the specified image
|
|
98
|
+
try:
|
|
99
|
+
subprocess.run(
|
|
100
|
+
["docker", "pull", self.image],
|
|
101
|
+
check=True,
|
|
102
|
+
stdout=subprocess.PIPE,
|
|
103
|
+
stderr=subprocess.PIPE,
|
|
104
|
+
text=True,
|
|
105
|
+
)
|
|
106
|
+
logging.info(f"Pulled Docker image: {self.image}")
|
|
107
|
+
except subprocess.CalledProcessError as e:
|
|
108
|
+
raise RuntimeError(f"Failed to pull Docker image: {e.stderr}") from e
|
|
109
|
+
|
|
110
|
+
# Start the container
|
|
111
|
+
self._start_container()
|
|
112
|
+
|
|
113
|
+
def _build_custom_image(self) -> None:
|
|
114
|
+
"""Build a custom Docker image from the provided Dockerfile."""
|
|
115
|
+
if not os.path.exists(self.dockerfile):
|
|
116
|
+
raise RuntimeError(f"Dockerfile not found at: {self.dockerfile}")
|
|
117
|
+
|
|
118
|
+
# Create a unique image name
|
|
119
|
+
self._custom_image_name = f"ag2-custom-python-{uuid.uuid4().hex[:8]}"
|
|
120
|
+
|
|
121
|
+
# Build command
|
|
122
|
+
build_cmd = ["docker", "build", "-t", self._custom_image_name]
|
|
123
|
+
|
|
124
|
+
# Add build args
|
|
125
|
+
for arg_name, arg_value in self.build_args.items():
|
|
126
|
+
build_cmd.extend(["--build-arg", f"{arg_name}={arg_value}"])
|
|
127
|
+
|
|
128
|
+
# Add Dockerfile path
|
|
129
|
+
build_cmd.extend(["-f", self.dockerfile, os.path.dirname(self.dockerfile)])
|
|
130
|
+
|
|
131
|
+
try:
|
|
132
|
+
logging.info(f"Building custom Docker image: {self._custom_image_name}")
|
|
133
|
+
_ = subprocess.run(
|
|
134
|
+
build_cmd,
|
|
135
|
+
check=True,
|
|
136
|
+
stdout=subprocess.PIPE,
|
|
137
|
+
stderr=subprocess.PIPE,
|
|
138
|
+
text=True,
|
|
139
|
+
)
|
|
140
|
+
logging.info(f"Built custom Docker image: {self._custom_image_name}")
|
|
141
|
+
except subprocess.CalledProcessError as e:
|
|
142
|
+
raise RuntimeError(f"Failed to build Docker image: {e.stderr}") from e
|
|
143
|
+
|
|
144
|
+
# Use the custom image
|
|
145
|
+
self.image = self._custom_image_name
|
|
146
|
+
|
|
147
|
+
def _start_container(self) -> None:
|
|
148
|
+
"""Start the Docker container."""
|
|
149
|
+
# Basic container run command
|
|
150
|
+
run_cmd = ["docker", "run", "--name", self._container_name]
|
|
151
|
+
|
|
152
|
+
# Add detached mode flag to run container in background
|
|
153
|
+
run_cmd.append("-d")
|
|
154
|
+
|
|
155
|
+
# Add network if specified
|
|
156
|
+
if self.network:
|
|
157
|
+
run_cmd.extend(["--network", self.network])
|
|
158
|
+
|
|
159
|
+
# Add environment variables
|
|
160
|
+
for env_name, env_value in self.environment.items():
|
|
161
|
+
run_cmd.extend(["-e", f"{env_name}={env_value}"])
|
|
162
|
+
|
|
163
|
+
# Add volume mounts including temp directory
|
|
164
|
+
work_dir_mount = f"{self._temp_dir}:/workspace"
|
|
165
|
+
run_cmd.extend(["-v", work_dir_mount])
|
|
166
|
+
|
|
167
|
+
for host_path, container_path in self.volumes.items():
|
|
168
|
+
run_cmd.extend(["-v", f"{host_path}:{container_path}"])
|
|
169
|
+
|
|
170
|
+
# Set workspace as working directory
|
|
171
|
+
run_cmd.extend(["-w", "/workspace"])
|
|
172
|
+
|
|
173
|
+
# Add tty to keep container running
|
|
174
|
+
run_cmd.append("-t")
|
|
175
|
+
|
|
176
|
+
# Add image name
|
|
177
|
+
run_cmd.append(self.image)
|
|
178
|
+
|
|
179
|
+
# Initial command to keep container running
|
|
180
|
+
run_cmd.extend(["tail", "-f", "/dev/null"])
|
|
181
|
+
|
|
182
|
+
try:
|
|
183
|
+
# Start the container
|
|
184
|
+
logging.info(f"Starting Docker container: {self._container_name}")
|
|
185
|
+
result = subprocess.run(
|
|
186
|
+
run_cmd,
|
|
187
|
+
check=True,
|
|
188
|
+
stdout=subprocess.PIPE,
|
|
189
|
+
stderr=subprocess.PIPE,
|
|
190
|
+
text=True,
|
|
191
|
+
)
|
|
192
|
+
|
|
193
|
+
# Get container ID
|
|
194
|
+
self._container_id = result.stdout.strip()
|
|
195
|
+
logging.info(f"Started Docker container: {self._container_name} ({self._container_id})")
|
|
196
|
+
|
|
197
|
+
# Install pip packages if specified
|
|
198
|
+
if self.pip_packages or self.requirements_file:
|
|
199
|
+
self._install_packages()
|
|
200
|
+
|
|
201
|
+
except subprocess.CalledProcessError as e:
|
|
202
|
+
raise RuntimeError(f"Failed to start Docker container: {e.stderr}") from e
|
|
203
|
+
|
|
204
|
+
def _install_packages(self) -> None:
|
|
205
|
+
"""Install Python packages in the running container."""
|
|
206
|
+
# Install pip packages
|
|
207
|
+
if self.pip_packages:
|
|
208
|
+
packages_str = " ".join(self.pip_packages)
|
|
209
|
+
try:
|
|
210
|
+
logging.info(f"Installing pip packages: {packages_str}")
|
|
211
|
+
_ = subprocess.run(
|
|
212
|
+
["docker", "exec", self._container_name, "pip", "install", "--no-cache-dir"] + self.pip_packages,
|
|
213
|
+
check=True,
|
|
214
|
+
stdout=subprocess.PIPE,
|
|
215
|
+
stderr=subprocess.PIPE,
|
|
216
|
+
text=True,
|
|
217
|
+
)
|
|
218
|
+
logging.info("Successfully installed pip packages")
|
|
219
|
+
except subprocess.CalledProcessError as e:
|
|
220
|
+
logging.warning(f"Failed to install pip packages: {e.stderr}")
|
|
221
|
+
|
|
222
|
+
# Install from requirements file
|
|
223
|
+
if self.requirements_file:
|
|
224
|
+
if os.path.exists(self.requirements_file):
|
|
225
|
+
# Copy requirements file to temp directory
|
|
226
|
+
req_filename = os.path.basename(self.requirements_file)
|
|
227
|
+
temp_req_path = os.path.join(self._temp_dir, req_filename)
|
|
228
|
+
shutil.copy(self.requirements_file, temp_req_path)
|
|
229
|
+
|
|
230
|
+
try:
|
|
231
|
+
logging.info(f"Installing requirements from: {req_filename}")
|
|
232
|
+
_ = subprocess.run(
|
|
233
|
+
[
|
|
234
|
+
"docker",
|
|
235
|
+
"exec",
|
|
236
|
+
self._container_name,
|
|
237
|
+
"pip",
|
|
238
|
+
"install",
|
|
239
|
+
"--no-cache-dir",
|
|
240
|
+
"-r",
|
|
241
|
+
f"/workspace/{req_filename}",
|
|
242
|
+
],
|
|
243
|
+
check=True,
|
|
244
|
+
stdout=subprocess.PIPE,
|
|
245
|
+
stderr=subprocess.PIPE,
|
|
246
|
+
text=True,
|
|
247
|
+
)
|
|
248
|
+
logging.info("Successfully installed requirements")
|
|
249
|
+
except subprocess.CalledProcessError as e:
|
|
250
|
+
logging.warning(f"Failed to install requirements: {e.stderr}")
|
|
251
|
+
else:
|
|
252
|
+
logging.warning(f"Requirements file not found: {self.requirements_file}")
|
|
253
|
+
|
|
254
|
+
def _cleanup_environment(self) -> None:
|
|
255
|
+
"""Clean up the Docker environment."""
|
|
256
|
+
if self._container_id:
|
|
257
|
+
# Stop the container if it's running and we want to clean it up
|
|
258
|
+
if not self.keep_container_running:
|
|
259
|
+
try:
|
|
260
|
+
logging.info(f"Stopping Docker container: {self._container_name}")
|
|
261
|
+
subprocess.run(
|
|
262
|
+
["docker", "stop", self._container_name],
|
|
263
|
+
check=True,
|
|
264
|
+
stdout=subprocess.PIPE,
|
|
265
|
+
stderr=subprocess.PIPE,
|
|
266
|
+
text=True,
|
|
267
|
+
)
|
|
268
|
+
except subprocess.CalledProcessError:
|
|
269
|
+
logging.warning(f"Failed to stop Docker container: {self._container_name}")
|
|
270
|
+
|
|
271
|
+
# Remove the container if cleanup is enabled
|
|
272
|
+
if self.cleanup_container and not self.keep_container_running:
|
|
273
|
+
try:
|
|
274
|
+
logging.info(f"Removing Docker container: {self._container_name}")
|
|
275
|
+
subprocess.run(
|
|
276
|
+
["docker", "rm", "-f", self._container_name],
|
|
277
|
+
check=True,
|
|
278
|
+
stdout=subprocess.PIPE,
|
|
279
|
+
stderr=subprocess.PIPE,
|
|
280
|
+
text=True,
|
|
281
|
+
)
|
|
282
|
+
except subprocess.CalledProcessError:
|
|
283
|
+
logging.warning(f"Failed to remove Docker container: {self._container_name}")
|
|
284
|
+
|
|
285
|
+
# Remove the custom image if it was created
|
|
286
|
+
if self._custom_image_name and self.cleanup_container:
|
|
287
|
+
try:
|
|
288
|
+
logging.info(f"Removing custom Docker image: {self._custom_image_name}")
|
|
289
|
+
subprocess.run(
|
|
290
|
+
["docker", "rmi", self._custom_image_name],
|
|
291
|
+
check=True,
|
|
292
|
+
stdout=subprocess.PIPE,
|
|
293
|
+
stderr=subprocess.PIPE,
|
|
294
|
+
text=True,
|
|
295
|
+
)
|
|
296
|
+
except subprocess.CalledProcessError:
|
|
297
|
+
logging.warning(f"Failed to remove custom Docker image: {self._custom_image_name}")
|
|
298
|
+
|
|
299
|
+
# Clean up the temporary directory
|
|
300
|
+
if self._temp_dir and os.path.exists(self._temp_dir):
|
|
301
|
+
try:
|
|
302
|
+
shutil.rmtree(self._temp_dir)
|
|
303
|
+
except Exception as e:
|
|
304
|
+
logging.warning(f"Failed to remove temporary directory: {e}")
|
|
305
|
+
|
|
306
|
+
def get_executable(self) -> str:
|
|
307
|
+
"""Get the path to the Python executable in the Docker container."""
|
|
308
|
+
# This is a virtual path in the container
|
|
309
|
+
return "python"
|
|
310
|
+
|
|
311
|
+
async def execute_code(self, code: str, script_path: str, timeout: int = 30) -> dict[str, Any]:
|
|
312
|
+
"""Execute code in the Docker container."""
|
|
313
|
+
# Ensure the container is running
|
|
314
|
+
if not self._container_id:
|
|
315
|
+
return {"success": False, "error": "Docker container not started"}
|
|
316
|
+
|
|
317
|
+
try:
|
|
318
|
+
# Calculate the relative path within the temp directory
|
|
319
|
+
if os.path.isabs(script_path):
|
|
320
|
+
rel_path = os.path.basename(script_path)
|
|
321
|
+
host_script_path = os.path.join(self._temp_dir, rel_path)
|
|
322
|
+
else:
|
|
323
|
+
rel_path = script_path
|
|
324
|
+
host_script_path = os.path.join(self._temp_dir, rel_path)
|
|
325
|
+
|
|
326
|
+
# Ensure the directory for the script exists
|
|
327
|
+
script_dir = os.path.dirname(host_script_path)
|
|
328
|
+
if script_dir:
|
|
329
|
+
os.makedirs(script_dir, exist_ok=True)
|
|
330
|
+
|
|
331
|
+
# Write the code to the script file on the host
|
|
332
|
+
await asyncify(self._write_to_file)(host_script_path, code)
|
|
333
|
+
|
|
334
|
+
# Path to the script in the container
|
|
335
|
+
container_script_path = f"/workspace/{rel_path}"
|
|
336
|
+
|
|
337
|
+
# Execute the script in the container
|
|
338
|
+
exec_cmd = ["docker", "exec", self._container_name, "python", container_script_path]
|
|
339
|
+
|
|
340
|
+
# Run the command with a timeout
|
|
341
|
+
result = await asyncify(self._run_subprocess_with_timeout)(exec_cmd, timeout)
|
|
342
|
+
|
|
343
|
+
return {
|
|
344
|
+
"success": result[0],
|
|
345
|
+
"stdout": result[1],
|
|
346
|
+
"stderr": result[2],
|
|
347
|
+
"returncode": result[3] if result[0] else 1,
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
except Exception as e:
|
|
351
|
+
return {"success": False, "error": f"Execution error: {str(e)}"}
|
|
352
|
+
|
|
353
|
+
def _run_subprocess_with_timeout(self, cmd: list[str], timeout: int) -> Tuple[bool, str, str, int]:
|
|
354
|
+
"""
|
|
355
|
+
Run a subprocess with timeout and return status, stdout, stderr, and return code.
|
|
356
|
+
|
|
357
|
+
Args:
|
|
358
|
+
cmd: Command to run as a list of strings
|
|
359
|
+
timeout: Maximum execution time in seconds
|
|
360
|
+
|
|
361
|
+
Returns:
|
|
362
|
+
Tuple of (success, stdout, stderr, return_code)
|
|
363
|
+
"""
|
|
364
|
+
try:
|
|
365
|
+
result = subprocess.run(
|
|
366
|
+
cmd,
|
|
367
|
+
capture_output=True,
|
|
368
|
+
text=True,
|
|
369
|
+
timeout=timeout,
|
|
370
|
+
)
|
|
371
|
+
return (result.returncode == 0, result.stdout, result.stderr, result.returncode)
|
|
372
|
+
except subprocess.TimeoutExpired:
|
|
373
|
+
return (False, "", f"Execution timed out after {timeout} seconds", -1)
|
|
374
|
+
except Exception as e:
|
|
375
|
+
return (False, "", str(e), -1)
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
# Copyright (c) 2023 - 2025, AG2ai, Inc., AG2ai open-source projects maintainers and core contributors
|
|
2
|
+
#
|
|
3
|
+
# SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
|
|
5
|
+
import subprocess
|
|
6
|
+
from abc import ABC, abstractmethod
|
|
7
|
+
from contextvars import ContextVar
|
|
8
|
+
from typing import Any, Optional
|
|
9
|
+
|
|
10
|
+
__all__ = ["PythonEnvironment"]
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class PythonEnvironment(ABC):
|
|
14
|
+
"""Python execution environments base class"""
|
|
15
|
+
|
|
16
|
+
# Shared context variable for tracking the current environment
|
|
17
|
+
_current_python_environment: ContextVar["PythonEnvironment"] = ContextVar("_current_python_environment")
|
|
18
|
+
|
|
19
|
+
def __init__(self):
|
|
20
|
+
"""
|
|
21
|
+
Initialize the Python environment.
|
|
22
|
+
"""
|
|
23
|
+
self._token = None
|
|
24
|
+
|
|
25
|
+
# Set up the environment
|
|
26
|
+
self._setup_environment()
|
|
27
|
+
|
|
28
|
+
def __enter__(self):
|
|
29
|
+
"""
|
|
30
|
+
Enter the environment context.
|
|
31
|
+
Sets this environment as the current one.
|
|
32
|
+
"""
|
|
33
|
+
# Set this as the current Python environment in the context
|
|
34
|
+
self._token = PythonEnvironment._current_python_environment.set(self)
|
|
35
|
+
|
|
36
|
+
return self
|
|
37
|
+
|
|
38
|
+
def __exit__(self, exc_type, exc_val, exc_tb):
|
|
39
|
+
"""
|
|
40
|
+
Exit the environment context.
|
|
41
|
+
Resets the current environment and performs cleanup.
|
|
42
|
+
"""
|
|
43
|
+
# Reset the context variable if this was the active environment
|
|
44
|
+
if self._token is not None:
|
|
45
|
+
PythonEnvironment._current_python_environment.reset(self._token)
|
|
46
|
+
self._token = None
|
|
47
|
+
|
|
48
|
+
# Clean up resources
|
|
49
|
+
self._cleanup_environment()
|
|
50
|
+
|
|
51
|
+
@abstractmethod
|
|
52
|
+
def _setup_environment(self) -> None:
|
|
53
|
+
"""Set up the Python environment. Called by __enter__."""
|
|
54
|
+
pass
|
|
55
|
+
|
|
56
|
+
@abstractmethod
|
|
57
|
+
def _cleanup_environment(self) -> None:
|
|
58
|
+
"""Clean up the Python environment. Called by __exit__."""
|
|
59
|
+
pass
|
|
60
|
+
|
|
61
|
+
@abstractmethod
|
|
62
|
+
def get_executable(self) -> str:
|
|
63
|
+
"""
|
|
64
|
+
Get the path to the Python executable in this environment.
|
|
65
|
+
|
|
66
|
+
Returns:
|
|
67
|
+
The full path to the Python executable.
|
|
68
|
+
"""
|
|
69
|
+
pass
|
|
70
|
+
|
|
71
|
+
@abstractmethod
|
|
72
|
+
async def execute_code(self, code: str, script_path: str, timeout: int = 30) -> dict[str, Any]:
|
|
73
|
+
"""
|
|
74
|
+
Execute the given code in this environment.
|
|
75
|
+
|
|
76
|
+
Args:
|
|
77
|
+
code: The Python code to execute.
|
|
78
|
+
script_path: Path where the code should be saved before execution.
|
|
79
|
+
timeout: Maximum execution time in seconds.
|
|
80
|
+
|
|
81
|
+
Returns:
|
|
82
|
+
dict with execution results including stdout, stderr, and success status.
|
|
83
|
+
"""
|
|
84
|
+
pass
|
|
85
|
+
|
|
86
|
+
# Utility method for subclasses to wrap (for async support)
|
|
87
|
+
def _write_to_file(self, script_path: str, content: str) -> None:
|
|
88
|
+
"""
|
|
89
|
+
Write content to a file (blocking operation).
|
|
90
|
+
|
|
91
|
+
This is a helper method for use with asyncify in async contexts.
|
|
92
|
+
|
|
93
|
+
Args:
|
|
94
|
+
script_path: Path to the file to write.
|
|
95
|
+
content: Content to write to the file.
|
|
96
|
+
"""
|
|
97
|
+
with open(script_path, "w") as f:
|
|
98
|
+
f.write(content)
|
|
99
|
+
|
|
100
|
+
# Utility method for subclasses to wrap (for async support)
|
|
101
|
+
def _run_subprocess(self, cmd: list[str], timeout: int) -> subprocess.CompletedProcess:
|
|
102
|
+
"""
|
|
103
|
+
Run a subprocess (blocking operation).
|
|
104
|
+
|
|
105
|
+
This is a helper method for use with asyncify in async contexts.
|
|
106
|
+
|
|
107
|
+
Args:
|
|
108
|
+
cmd: Command to run as a list of strings.
|
|
109
|
+
timeout: Maximum execution time in seconds.
|
|
110
|
+
|
|
111
|
+
Returns:
|
|
112
|
+
CompletedProcess instance with results of the subprocess.
|
|
113
|
+
"""
|
|
114
|
+
return subprocess.run(cmd, capture_output=True, text=True, timeout=timeout)
|
|
115
|
+
|
|
116
|
+
@classmethod
|
|
117
|
+
def get_current_python_environment(
|
|
118
|
+
cls, python_environment: Optional["PythonEnvironment"] = None
|
|
119
|
+
) -> Optional["PythonEnvironment"]:
|
|
120
|
+
"""
|
|
121
|
+
Get the current Python environment or the specified one if provided.
|
|
122
|
+
|
|
123
|
+
Args:
|
|
124
|
+
python_environment: Optional environment to return if specified.
|
|
125
|
+
|
|
126
|
+
Returns:
|
|
127
|
+
The current Python environment or None if none is active.
|
|
128
|
+
"""
|
|
129
|
+
if python_environment is not None:
|
|
130
|
+
return python_environment
|
|
131
|
+
try:
|
|
132
|
+
return cls._current_python_environment.get()
|
|
133
|
+
except LookupError:
|
|
134
|
+
return None
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
# Copyright (c) 2023 - 2025, AG2ai, Inc., AG2ai open-source projects maintainers and core contributors
|
|
2
|
+
#
|
|
3
|
+
# SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
|
|
5
|
+
import logging
|
|
6
|
+
import os
|
|
7
|
+
import subprocess
|
|
8
|
+
import sys
|
|
9
|
+
from typing import Any, Optional
|
|
10
|
+
|
|
11
|
+
from asyncer import asyncify
|
|
12
|
+
|
|
13
|
+
from .python_environment import PythonEnvironment
|
|
14
|
+
|
|
15
|
+
__all__ = ["SystemPythonEnvironment"]
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
class SystemPythonEnvironment(PythonEnvironment):
|
|
19
|
+
"""A Python environment using the system's Python installation."""
|
|
20
|
+
|
|
21
|
+
def __init__(
|
|
22
|
+
self,
|
|
23
|
+
executable: Optional[str] = None,
|
|
24
|
+
):
|
|
25
|
+
"""
|
|
26
|
+
Initialize a system Python environment.
|
|
27
|
+
|
|
28
|
+
Args:
|
|
29
|
+
executable: Optional path to a specific Python executable. If None, uses the current Python executable.
|
|
30
|
+
"""
|
|
31
|
+
self._executable = executable or sys.executable
|
|
32
|
+
super().__init__()
|
|
33
|
+
|
|
34
|
+
def _setup_environment(self) -> None:
|
|
35
|
+
"""Set up the system Python environment."""
|
|
36
|
+
# Verify the Python executable exists
|
|
37
|
+
if not os.path.exists(self._executable):
|
|
38
|
+
raise RuntimeError(f"Python executable not found at: {self._executable}")
|
|
39
|
+
|
|
40
|
+
logging.info(f"Using system Python at: {self._executable}")
|
|
41
|
+
|
|
42
|
+
def _cleanup_environment(self) -> None:
|
|
43
|
+
"""Clean up the system Python environment."""
|
|
44
|
+
# No cleanup needed for system Python
|
|
45
|
+
pass
|
|
46
|
+
|
|
47
|
+
def get_executable(self) -> str:
|
|
48
|
+
"""Get the path to the Python executable."""
|
|
49
|
+
return self._executable
|
|
50
|
+
|
|
51
|
+
async def execute_code(self, code: str, script_path: str, timeout: int = 30) -> dict[str, Any]:
|
|
52
|
+
"""Execute code using the system Python."""
|
|
53
|
+
try:
|
|
54
|
+
# Get the Python executable
|
|
55
|
+
python_executable = self.get_executable()
|
|
56
|
+
|
|
57
|
+
# Verify the executable exists
|
|
58
|
+
if not os.path.exists(python_executable):
|
|
59
|
+
return {"success": False, "error": f"Python executable not found at {python_executable}"}
|
|
60
|
+
|
|
61
|
+
# Ensure the directory for the script exists
|
|
62
|
+
script_dir = os.path.dirname(script_path)
|
|
63
|
+
if script_dir:
|
|
64
|
+
os.makedirs(script_dir, exist_ok=True)
|
|
65
|
+
|
|
66
|
+
# Write the code to the script file using asyncify (from base class)
|
|
67
|
+
await asyncify(self._write_to_file)(script_path, code)
|
|
68
|
+
|
|
69
|
+
logging.info(f"Wrote code to {script_path}")
|
|
70
|
+
|
|
71
|
+
try:
|
|
72
|
+
# Execute directly with subprocess using asyncify for better reliability
|
|
73
|
+
result = await asyncify(self._run_subprocess)([python_executable, script_path], timeout)
|
|
74
|
+
|
|
75
|
+
# Main execution result
|
|
76
|
+
return {
|
|
77
|
+
"success": result.returncode == 0,
|
|
78
|
+
"stdout": result.stdout,
|
|
79
|
+
"stderr": result.stderr,
|
|
80
|
+
"returncode": result.returncode,
|
|
81
|
+
}
|
|
82
|
+
except subprocess.TimeoutExpired:
|
|
83
|
+
return {"success": False, "error": f"Execution timed out after {timeout} seconds"}
|
|
84
|
+
|
|
85
|
+
except Exception as e:
|
|
86
|
+
return {"success": False, "error": f"Execution error: {str(e)}"}
|