ag2 0.10.2__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- ag2-0.10.2.dist-info/METADATA +819 -0
- ag2-0.10.2.dist-info/RECORD +423 -0
- ag2-0.10.2.dist-info/WHEEL +4 -0
- ag2-0.10.2.dist-info/licenses/LICENSE +201 -0
- ag2-0.10.2.dist-info/licenses/NOTICE.md +19 -0
- autogen/__init__.py +88 -0
- autogen/_website/__init__.py +3 -0
- autogen/_website/generate_api_references.py +426 -0
- autogen/_website/generate_mkdocs.py +1216 -0
- autogen/_website/notebook_processor.py +475 -0
- autogen/_website/process_notebooks.py +656 -0
- autogen/_website/utils.py +413 -0
- autogen/a2a/__init__.py +36 -0
- autogen/a2a/agent_executor.py +86 -0
- autogen/a2a/client.py +357 -0
- autogen/a2a/errors.py +18 -0
- autogen/a2a/httpx_client_factory.py +79 -0
- autogen/a2a/server.py +221 -0
- autogen/a2a/utils.py +207 -0
- autogen/agentchat/__init__.py +47 -0
- autogen/agentchat/agent.py +180 -0
- autogen/agentchat/assistant_agent.py +86 -0
- autogen/agentchat/chat.py +325 -0
- autogen/agentchat/contrib/__init__.py +5 -0
- autogen/agentchat/contrib/agent_eval/README.md +7 -0
- autogen/agentchat/contrib/agent_eval/agent_eval.py +108 -0
- autogen/agentchat/contrib/agent_eval/criterion.py +43 -0
- autogen/agentchat/contrib/agent_eval/critic_agent.py +44 -0
- autogen/agentchat/contrib/agent_eval/quantifier_agent.py +39 -0
- autogen/agentchat/contrib/agent_eval/subcritic_agent.py +45 -0
- autogen/agentchat/contrib/agent_eval/task.py +42 -0
- autogen/agentchat/contrib/agent_optimizer.py +432 -0
- autogen/agentchat/contrib/capabilities/__init__.py +5 -0
- autogen/agentchat/contrib/capabilities/agent_capability.py +20 -0
- autogen/agentchat/contrib/capabilities/generate_images.py +301 -0
- autogen/agentchat/contrib/capabilities/teachability.py +393 -0
- autogen/agentchat/contrib/capabilities/text_compressors.py +66 -0
- autogen/agentchat/contrib/capabilities/tools_capability.py +22 -0
- autogen/agentchat/contrib/capabilities/transform_messages.py +93 -0
- autogen/agentchat/contrib/capabilities/transforms.py +578 -0
- autogen/agentchat/contrib/capabilities/transforms_util.py +122 -0
- autogen/agentchat/contrib/capabilities/vision_capability.py +215 -0
- autogen/agentchat/contrib/captainagent/__init__.py +9 -0
- autogen/agentchat/contrib/captainagent/agent_builder.py +790 -0
- autogen/agentchat/contrib/captainagent/captainagent.py +514 -0
- autogen/agentchat/contrib/captainagent/tool_retriever.py +334 -0
- autogen/agentchat/contrib/captainagent/tools/README.md +44 -0
- autogen/agentchat/contrib/captainagent/tools/__init__.py +5 -0
- autogen/agentchat/contrib/captainagent/tools/data_analysis/calculate_correlation.py +40 -0
- autogen/agentchat/contrib/captainagent/tools/data_analysis/calculate_skewness_and_kurtosis.py +28 -0
- autogen/agentchat/contrib/captainagent/tools/data_analysis/detect_outlier_iqr.py +28 -0
- autogen/agentchat/contrib/captainagent/tools/data_analysis/detect_outlier_zscore.py +28 -0
- autogen/agentchat/contrib/captainagent/tools/data_analysis/explore_csv.py +21 -0
- autogen/agentchat/contrib/captainagent/tools/data_analysis/shapiro_wilk_test.py +30 -0
- autogen/agentchat/contrib/captainagent/tools/information_retrieval/arxiv_download.py +27 -0
- autogen/agentchat/contrib/captainagent/tools/information_retrieval/arxiv_search.py +53 -0
- autogen/agentchat/contrib/captainagent/tools/information_retrieval/extract_pdf_image.py +53 -0
- autogen/agentchat/contrib/captainagent/tools/information_retrieval/extract_pdf_text.py +38 -0
- autogen/agentchat/contrib/captainagent/tools/information_retrieval/get_wikipedia_text.py +21 -0
- autogen/agentchat/contrib/captainagent/tools/information_retrieval/get_youtube_caption.py +34 -0
- autogen/agentchat/contrib/captainagent/tools/information_retrieval/image_qa.py +60 -0
- autogen/agentchat/contrib/captainagent/tools/information_retrieval/optical_character_recognition.py +61 -0
- autogen/agentchat/contrib/captainagent/tools/information_retrieval/perform_web_search.py +47 -0
- autogen/agentchat/contrib/captainagent/tools/information_retrieval/scrape_wikipedia_tables.py +33 -0
- autogen/agentchat/contrib/captainagent/tools/information_retrieval/transcribe_audio_file.py +21 -0
- autogen/agentchat/contrib/captainagent/tools/information_retrieval/youtube_download.py +35 -0
- autogen/agentchat/contrib/captainagent/tools/math/calculate_circle_area_from_diameter.py +21 -0
- autogen/agentchat/contrib/captainagent/tools/math/calculate_day_of_the_week.py +18 -0
- autogen/agentchat/contrib/captainagent/tools/math/calculate_fraction_sum.py +28 -0
- autogen/agentchat/contrib/captainagent/tools/math/calculate_matrix_power.py +31 -0
- autogen/agentchat/contrib/captainagent/tools/math/calculate_reflected_point.py +16 -0
- autogen/agentchat/contrib/captainagent/tools/math/complex_numbers_product.py +25 -0
- autogen/agentchat/contrib/captainagent/tools/math/compute_currency_conversion.py +23 -0
- autogen/agentchat/contrib/captainagent/tools/math/count_distinct_permutations.py +27 -0
- autogen/agentchat/contrib/captainagent/tools/math/evaluate_expression.py +28 -0
- autogen/agentchat/contrib/captainagent/tools/math/find_continuity_point.py +34 -0
- autogen/agentchat/contrib/captainagent/tools/math/fraction_to_mixed_numbers.py +39 -0
- autogen/agentchat/contrib/captainagent/tools/math/modular_inverse_sum.py +23 -0
- autogen/agentchat/contrib/captainagent/tools/math/simplify_mixed_numbers.py +36 -0
- autogen/agentchat/contrib/captainagent/tools/math/sum_of_digit_factorials.py +15 -0
- autogen/agentchat/contrib/captainagent/tools/math/sum_of_primes_below.py +15 -0
- autogen/agentchat/contrib/captainagent/tools/requirements.txt +10 -0
- autogen/agentchat/contrib/captainagent/tools/tool_description.tsv +34 -0
- autogen/agentchat/contrib/gpt_assistant_agent.py +526 -0
- autogen/agentchat/contrib/graph_rag/__init__.py +9 -0
- autogen/agentchat/contrib/graph_rag/document.py +29 -0
- autogen/agentchat/contrib/graph_rag/falkor_graph_query_engine.py +167 -0
- autogen/agentchat/contrib/graph_rag/falkor_graph_rag_capability.py +103 -0
- autogen/agentchat/contrib/graph_rag/graph_query_engine.py +53 -0
- autogen/agentchat/contrib/graph_rag/graph_rag_capability.py +63 -0
- autogen/agentchat/contrib/graph_rag/neo4j_graph_query_engine.py +263 -0
- autogen/agentchat/contrib/graph_rag/neo4j_graph_rag_capability.py +83 -0
- autogen/agentchat/contrib/graph_rag/neo4j_native_graph_query_engine.py +210 -0
- autogen/agentchat/contrib/graph_rag/neo4j_native_graph_rag_capability.py +93 -0
- autogen/agentchat/contrib/img_utils.py +397 -0
- autogen/agentchat/contrib/llamaindex_conversable_agent.py +117 -0
- autogen/agentchat/contrib/llava_agent.py +189 -0
- autogen/agentchat/contrib/math_user_proxy_agent.py +464 -0
- autogen/agentchat/contrib/multimodal_conversable_agent.py +125 -0
- autogen/agentchat/contrib/qdrant_retrieve_user_proxy_agent.py +325 -0
- autogen/agentchat/contrib/rag/__init__.py +10 -0
- autogen/agentchat/contrib/rag/chromadb_query_engine.py +268 -0
- autogen/agentchat/contrib/rag/llamaindex_query_engine.py +195 -0
- autogen/agentchat/contrib/rag/mongodb_query_engine.py +319 -0
- autogen/agentchat/contrib/rag/query_engine.py +76 -0
- autogen/agentchat/contrib/retrieve_assistant_agent.py +59 -0
- autogen/agentchat/contrib/retrieve_user_proxy_agent.py +704 -0
- autogen/agentchat/contrib/society_of_mind_agent.py +200 -0
- autogen/agentchat/contrib/swarm_agent.py +1404 -0
- autogen/agentchat/contrib/text_analyzer_agent.py +79 -0
- autogen/agentchat/contrib/vectordb/__init__.py +5 -0
- autogen/agentchat/contrib/vectordb/base.py +224 -0
- autogen/agentchat/contrib/vectordb/chromadb.py +316 -0
- autogen/agentchat/contrib/vectordb/couchbase.py +405 -0
- autogen/agentchat/contrib/vectordb/mongodb.py +551 -0
- autogen/agentchat/contrib/vectordb/pgvectordb.py +927 -0
- autogen/agentchat/contrib/vectordb/qdrant.py +320 -0
- autogen/agentchat/contrib/vectordb/utils.py +126 -0
- autogen/agentchat/contrib/web_surfer.py +304 -0
- autogen/agentchat/conversable_agent.py +4307 -0
- autogen/agentchat/group/__init__.py +67 -0
- autogen/agentchat/group/available_condition.py +91 -0
- autogen/agentchat/group/context_condition.py +77 -0
- autogen/agentchat/group/context_expression.py +238 -0
- autogen/agentchat/group/context_str.py +39 -0
- autogen/agentchat/group/context_variables.py +182 -0
- autogen/agentchat/group/events/transition_events.py +111 -0
- autogen/agentchat/group/group_tool_executor.py +324 -0
- autogen/agentchat/group/group_utils.py +659 -0
- autogen/agentchat/group/guardrails.py +179 -0
- autogen/agentchat/group/handoffs.py +303 -0
- autogen/agentchat/group/llm_condition.py +93 -0
- autogen/agentchat/group/multi_agent_chat.py +291 -0
- autogen/agentchat/group/on_condition.py +55 -0
- autogen/agentchat/group/on_context_condition.py +51 -0
- autogen/agentchat/group/patterns/__init__.py +18 -0
- autogen/agentchat/group/patterns/auto.py +160 -0
- autogen/agentchat/group/patterns/manual.py +177 -0
- autogen/agentchat/group/patterns/pattern.py +295 -0
- autogen/agentchat/group/patterns/random.py +106 -0
- autogen/agentchat/group/patterns/round_robin.py +117 -0
- autogen/agentchat/group/reply_result.py +24 -0
- autogen/agentchat/group/safeguards/__init__.py +21 -0
- autogen/agentchat/group/safeguards/api.py +241 -0
- autogen/agentchat/group/safeguards/enforcer.py +1158 -0
- autogen/agentchat/group/safeguards/events.py +140 -0
- autogen/agentchat/group/safeguards/validator.py +435 -0
- autogen/agentchat/group/speaker_selection_result.py +41 -0
- autogen/agentchat/group/targets/__init__.py +4 -0
- autogen/agentchat/group/targets/function_target.py +245 -0
- autogen/agentchat/group/targets/group_chat_target.py +133 -0
- autogen/agentchat/group/targets/group_manager_target.py +151 -0
- autogen/agentchat/group/targets/transition_target.py +424 -0
- autogen/agentchat/group/targets/transition_utils.py +6 -0
- autogen/agentchat/groupchat.py +1832 -0
- autogen/agentchat/realtime/__init__.py +3 -0
- autogen/agentchat/realtime/experimental/__init__.py +20 -0
- autogen/agentchat/realtime/experimental/audio_adapters/__init__.py +8 -0
- autogen/agentchat/realtime/experimental/audio_adapters/twilio_audio_adapter.py +148 -0
- autogen/agentchat/realtime/experimental/audio_adapters/websocket_audio_adapter.py +139 -0
- autogen/agentchat/realtime/experimental/audio_observer.py +42 -0
- autogen/agentchat/realtime/experimental/clients/__init__.py +15 -0
- autogen/agentchat/realtime/experimental/clients/gemini/__init__.py +7 -0
- autogen/agentchat/realtime/experimental/clients/gemini/client.py +274 -0
- autogen/agentchat/realtime/experimental/clients/oai/__init__.py +8 -0
- autogen/agentchat/realtime/experimental/clients/oai/base_client.py +220 -0
- autogen/agentchat/realtime/experimental/clients/oai/rtc_client.py +243 -0
- autogen/agentchat/realtime/experimental/clients/oai/utils.py +48 -0
- autogen/agentchat/realtime/experimental/clients/realtime_client.py +191 -0
- autogen/agentchat/realtime/experimental/function_observer.py +84 -0
- autogen/agentchat/realtime/experimental/realtime_agent.py +158 -0
- autogen/agentchat/realtime/experimental/realtime_events.py +42 -0
- autogen/agentchat/realtime/experimental/realtime_observer.py +100 -0
- autogen/agentchat/realtime/experimental/realtime_swarm.py +533 -0
- autogen/agentchat/realtime/experimental/websockets.py +21 -0
- autogen/agentchat/realtime_agent/__init__.py +21 -0
- autogen/agentchat/user_proxy_agent.py +114 -0
- autogen/agentchat/utils.py +206 -0
- autogen/agents/__init__.py +3 -0
- autogen/agents/contrib/__init__.py +10 -0
- autogen/agents/contrib/time/__init__.py +8 -0
- autogen/agents/contrib/time/time_reply_agent.py +74 -0
- autogen/agents/contrib/time/time_tool_agent.py +52 -0
- autogen/agents/experimental/__init__.py +27 -0
- autogen/agents/experimental/deep_research/__init__.py +7 -0
- autogen/agents/experimental/deep_research/deep_research.py +52 -0
- autogen/agents/experimental/discord/__init__.py +7 -0
- autogen/agents/experimental/discord/discord.py +66 -0
- autogen/agents/experimental/document_agent/__init__.py +19 -0
- autogen/agents/experimental/document_agent/chroma_query_engine.py +301 -0
- autogen/agents/experimental/document_agent/docling_doc_ingest_agent.py +113 -0
- autogen/agents/experimental/document_agent/document_agent.py +643 -0
- autogen/agents/experimental/document_agent/document_conditions.py +50 -0
- autogen/agents/experimental/document_agent/document_utils.py +376 -0
- autogen/agents/experimental/document_agent/inmemory_query_engine.py +214 -0
- autogen/agents/experimental/document_agent/parser_utils.py +134 -0
- autogen/agents/experimental/document_agent/url_utils.py +417 -0
- autogen/agents/experimental/reasoning/__init__.py +7 -0
- autogen/agents/experimental/reasoning/reasoning_agent.py +1178 -0
- autogen/agents/experimental/slack/__init__.py +7 -0
- autogen/agents/experimental/slack/slack.py +73 -0
- autogen/agents/experimental/telegram/__init__.py +7 -0
- autogen/agents/experimental/telegram/telegram.py +76 -0
- autogen/agents/experimental/websurfer/__init__.py +7 -0
- autogen/agents/experimental/websurfer/websurfer.py +70 -0
- autogen/agents/experimental/wikipedia/__init__.py +7 -0
- autogen/agents/experimental/wikipedia/wikipedia.py +88 -0
- autogen/browser_utils.py +309 -0
- autogen/cache/__init__.py +10 -0
- autogen/cache/abstract_cache_base.py +71 -0
- autogen/cache/cache.py +203 -0
- autogen/cache/cache_factory.py +88 -0
- autogen/cache/cosmos_db_cache.py +144 -0
- autogen/cache/disk_cache.py +97 -0
- autogen/cache/in_memory_cache.py +54 -0
- autogen/cache/redis_cache.py +119 -0
- autogen/code_utils.py +598 -0
- autogen/coding/__init__.py +30 -0
- autogen/coding/base.py +120 -0
- autogen/coding/docker_commandline_code_executor.py +283 -0
- autogen/coding/factory.py +56 -0
- autogen/coding/func_with_reqs.py +203 -0
- autogen/coding/jupyter/__init__.py +23 -0
- autogen/coding/jupyter/base.py +36 -0
- autogen/coding/jupyter/docker_jupyter_server.py +160 -0
- autogen/coding/jupyter/embedded_ipython_code_executor.py +182 -0
- autogen/coding/jupyter/import_utils.py +82 -0
- autogen/coding/jupyter/jupyter_client.py +224 -0
- autogen/coding/jupyter/jupyter_code_executor.py +154 -0
- autogen/coding/jupyter/local_jupyter_server.py +164 -0
- autogen/coding/local_commandline_code_executor.py +341 -0
- autogen/coding/markdown_code_extractor.py +44 -0
- autogen/coding/utils.py +55 -0
- autogen/coding/yepcode_code_executor.py +197 -0
- autogen/doc_utils.py +35 -0
- autogen/environments/__init__.py +10 -0
- autogen/environments/docker_python_environment.py +365 -0
- autogen/environments/python_environment.py +125 -0
- autogen/environments/system_python_environment.py +85 -0
- autogen/environments/venv_python_environment.py +220 -0
- autogen/environments/working_directory.py +74 -0
- autogen/events/__init__.py +7 -0
- autogen/events/agent_events.py +1016 -0
- autogen/events/base_event.py +100 -0
- autogen/events/client_events.py +168 -0
- autogen/events/helpers.py +44 -0
- autogen/events/print_event.py +45 -0
- autogen/exception_utils.py +73 -0
- autogen/extensions/__init__.py +5 -0
- autogen/fast_depends/__init__.py +16 -0
- autogen/fast_depends/_compat.py +75 -0
- autogen/fast_depends/core/__init__.py +14 -0
- autogen/fast_depends/core/build.py +206 -0
- autogen/fast_depends/core/model.py +527 -0
- autogen/fast_depends/dependencies/__init__.py +15 -0
- autogen/fast_depends/dependencies/model.py +30 -0
- autogen/fast_depends/dependencies/provider.py +40 -0
- autogen/fast_depends/library/__init__.py +10 -0
- autogen/fast_depends/library/model.py +46 -0
- autogen/fast_depends/py.typed +6 -0
- autogen/fast_depends/schema.py +66 -0
- autogen/fast_depends/use.py +272 -0
- autogen/fast_depends/utils.py +177 -0
- autogen/formatting_utils.py +83 -0
- autogen/function_utils.py +13 -0
- autogen/graph_utils.py +173 -0
- autogen/import_utils.py +539 -0
- autogen/interop/__init__.py +22 -0
- autogen/interop/crewai/__init__.py +7 -0
- autogen/interop/crewai/crewai.py +88 -0
- autogen/interop/interoperability.py +71 -0
- autogen/interop/interoperable.py +46 -0
- autogen/interop/langchain/__init__.py +8 -0
- autogen/interop/langchain/langchain_chat_model_factory.py +156 -0
- autogen/interop/langchain/langchain_tool.py +78 -0
- autogen/interop/litellm/__init__.py +7 -0
- autogen/interop/litellm/litellm_config_factory.py +178 -0
- autogen/interop/pydantic_ai/__init__.py +7 -0
- autogen/interop/pydantic_ai/pydantic_ai.py +172 -0
- autogen/interop/registry.py +70 -0
- autogen/io/__init__.py +15 -0
- autogen/io/base.py +151 -0
- autogen/io/console.py +56 -0
- autogen/io/processors/__init__.py +12 -0
- autogen/io/processors/base.py +21 -0
- autogen/io/processors/console_event_processor.py +61 -0
- autogen/io/run_response.py +294 -0
- autogen/io/thread_io_stream.py +63 -0
- autogen/io/websockets.py +214 -0
- autogen/json_utils.py +42 -0
- autogen/llm_clients/MIGRATION_TO_V2.md +782 -0
- autogen/llm_clients/__init__.py +77 -0
- autogen/llm_clients/client_v2.py +122 -0
- autogen/llm_clients/models/__init__.py +55 -0
- autogen/llm_clients/models/content_blocks.py +389 -0
- autogen/llm_clients/models/unified_message.py +145 -0
- autogen/llm_clients/models/unified_response.py +83 -0
- autogen/llm_clients/openai_completions_client.py +444 -0
- autogen/llm_config/__init__.py +11 -0
- autogen/llm_config/client.py +59 -0
- autogen/llm_config/config.py +461 -0
- autogen/llm_config/entry.py +169 -0
- autogen/llm_config/types.py +37 -0
- autogen/llm_config/utils.py +223 -0
- autogen/logger/__init__.py +11 -0
- autogen/logger/base_logger.py +129 -0
- autogen/logger/file_logger.py +262 -0
- autogen/logger/logger_factory.py +42 -0
- autogen/logger/logger_utils.py +57 -0
- autogen/logger/sqlite_logger.py +524 -0
- autogen/math_utils.py +338 -0
- autogen/mcp/__init__.py +7 -0
- autogen/mcp/__main__.py +78 -0
- autogen/mcp/helpers.py +45 -0
- autogen/mcp/mcp_client.py +349 -0
- autogen/mcp/mcp_proxy/__init__.py +19 -0
- autogen/mcp/mcp_proxy/fastapi_code_generator_helpers.py +62 -0
- autogen/mcp/mcp_proxy/mcp_proxy.py +577 -0
- autogen/mcp/mcp_proxy/operation_grouping.py +166 -0
- autogen/mcp/mcp_proxy/operation_renaming.py +110 -0
- autogen/mcp/mcp_proxy/patch_fastapi_code_generator.py +98 -0
- autogen/mcp/mcp_proxy/security.py +399 -0
- autogen/mcp/mcp_proxy/security_schema_visitor.py +37 -0
- autogen/messages/__init__.py +7 -0
- autogen/messages/agent_messages.py +946 -0
- autogen/messages/base_message.py +108 -0
- autogen/messages/client_messages.py +172 -0
- autogen/messages/print_message.py +48 -0
- autogen/oai/__init__.py +61 -0
- autogen/oai/anthropic.py +1516 -0
- autogen/oai/bedrock.py +800 -0
- autogen/oai/cerebras.py +302 -0
- autogen/oai/client.py +1658 -0
- autogen/oai/client_utils.py +196 -0
- autogen/oai/cohere.py +494 -0
- autogen/oai/gemini.py +1045 -0
- autogen/oai/gemini_types.py +156 -0
- autogen/oai/groq.py +319 -0
- autogen/oai/mistral.py +311 -0
- autogen/oai/oai_models/__init__.py +23 -0
- autogen/oai/oai_models/_models.py +16 -0
- autogen/oai/oai_models/chat_completion.py +86 -0
- autogen/oai/oai_models/chat_completion_audio.py +32 -0
- autogen/oai/oai_models/chat_completion_message.py +97 -0
- autogen/oai/oai_models/chat_completion_message_tool_call.py +60 -0
- autogen/oai/oai_models/chat_completion_token_logprob.py +62 -0
- autogen/oai/oai_models/completion_usage.py +59 -0
- autogen/oai/ollama.py +657 -0
- autogen/oai/openai_responses.py +451 -0
- autogen/oai/openai_utils.py +897 -0
- autogen/oai/together.py +387 -0
- autogen/remote/__init__.py +18 -0
- autogen/remote/agent.py +199 -0
- autogen/remote/agent_service.py +197 -0
- autogen/remote/errors.py +17 -0
- autogen/remote/httpx_client_factory.py +131 -0
- autogen/remote/protocol.py +37 -0
- autogen/remote/retry.py +102 -0
- autogen/remote/runtime.py +96 -0
- autogen/retrieve_utils.py +490 -0
- autogen/runtime_logging.py +161 -0
- autogen/testing/__init__.py +12 -0
- autogen/testing/messages.py +45 -0
- autogen/testing/test_agent.py +111 -0
- autogen/token_count_utils.py +280 -0
- autogen/tools/__init__.py +20 -0
- autogen/tools/contrib/__init__.py +9 -0
- autogen/tools/contrib/time/__init__.py +7 -0
- autogen/tools/contrib/time/time.py +40 -0
- autogen/tools/dependency_injection.py +249 -0
- autogen/tools/experimental/__init__.py +54 -0
- autogen/tools/experimental/browser_use/__init__.py +7 -0
- autogen/tools/experimental/browser_use/browser_use.py +154 -0
- autogen/tools/experimental/code_execution/__init__.py +7 -0
- autogen/tools/experimental/code_execution/python_code_execution.py +86 -0
- autogen/tools/experimental/crawl4ai/__init__.py +7 -0
- autogen/tools/experimental/crawl4ai/crawl4ai.py +150 -0
- autogen/tools/experimental/deep_research/__init__.py +7 -0
- autogen/tools/experimental/deep_research/deep_research.py +329 -0
- autogen/tools/experimental/duckduckgo/__init__.py +7 -0
- autogen/tools/experimental/duckduckgo/duckduckgo_search.py +103 -0
- autogen/tools/experimental/firecrawl/__init__.py +7 -0
- autogen/tools/experimental/firecrawl/firecrawl_tool.py +836 -0
- autogen/tools/experimental/google/__init__.py +14 -0
- autogen/tools/experimental/google/authentication/__init__.py +11 -0
- autogen/tools/experimental/google/authentication/credentials_hosted_provider.py +43 -0
- autogen/tools/experimental/google/authentication/credentials_local_provider.py +91 -0
- autogen/tools/experimental/google/authentication/credentials_provider.py +35 -0
- autogen/tools/experimental/google/drive/__init__.py +9 -0
- autogen/tools/experimental/google/drive/drive_functions.py +124 -0
- autogen/tools/experimental/google/drive/toolkit.py +88 -0
- autogen/tools/experimental/google/model.py +17 -0
- autogen/tools/experimental/google/toolkit_protocol.py +19 -0
- autogen/tools/experimental/google_search/__init__.py +8 -0
- autogen/tools/experimental/google_search/google_search.py +93 -0
- autogen/tools/experimental/google_search/youtube_search.py +181 -0
- autogen/tools/experimental/messageplatform/__init__.py +17 -0
- autogen/tools/experimental/messageplatform/discord/__init__.py +7 -0
- autogen/tools/experimental/messageplatform/discord/discord.py +284 -0
- autogen/tools/experimental/messageplatform/slack/__init__.py +7 -0
- autogen/tools/experimental/messageplatform/slack/slack.py +385 -0
- autogen/tools/experimental/messageplatform/telegram/__init__.py +7 -0
- autogen/tools/experimental/messageplatform/telegram/telegram.py +271 -0
- autogen/tools/experimental/perplexity/__init__.py +7 -0
- autogen/tools/experimental/perplexity/perplexity_search.py +249 -0
- autogen/tools/experimental/reliable/__init__.py +10 -0
- autogen/tools/experimental/reliable/reliable.py +1311 -0
- autogen/tools/experimental/searxng/__init__.py +7 -0
- autogen/tools/experimental/searxng/searxng_search.py +142 -0
- autogen/tools/experimental/tavily/__init__.py +7 -0
- autogen/tools/experimental/tavily/tavily_search.py +176 -0
- autogen/tools/experimental/web_search_preview/__init__.py +7 -0
- autogen/tools/experimental/web_search_preview/web_search_preview.py +120 -0
- autogen/tools/experimental/wikipedia/__init__.py +7 -0
- autogen/tools/experimental/wikipedia/wikipedia.py +284 -0
- autogen/tools/function_utils.py +412 -0
- autogen/tools/tool.py +188 -0
- autogen/tools/toolkit.py +86 -0
- autogen/types.py +29 -0
- autogen/version.py +7 -0
- templates/client_template/main.jinja2 +72 -0
- templates/config_template/config.jinja2 +7 -0
- templates/main.jinja2 +61 -0
|
@@ -0,0 +1,426 @@
|
|
|
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 __future__ import annotations
|
|
6
|
+
|
|
7
|
+
import argparse
|
|
8
|
+
import importlib
|
|
9
|
+
import json
|
|
10
|
+
import os
|
|
11
|
+
import pkgutil
|
|
12
|
+
import re
|
|
13
|
+
import shutil
|
|
14
|
+
import sys
|
|
15
|
+
from collections.abc import Iterable, Iterator
|
|
16
|
+
from pathlib import Path
|
|
17
|
+
from types import ModuleType
|
|
18
|
+
from typing import Any
|
|
19
|
+
|
|
20
|
+
from ..doc_utils import get_target_module
|
|
21
|
+
from ..import_utils import optional_import_block, require_optional_import
|
|
22
|
+
from .utils import copy_only_git_tracked_and_untracked_files
|
|
23
|
+
|
|
24
|
+
with optional_import_block():
|
|
25
|
+
import pdoc
|
|
26
|
+
from jinja2 import Template
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
def import_submodules(module_name: str, *, include_root: bool = True) -> list[str]:
|
|
30
|
+
"""List all submodules of a given module.
|
|
31
|
+
|
|
32
|
+
Args:
|
|
33
|
+
module_name (str): The name of the module to list submodules for.
|
|
34
|
+
include_root (bool, optional): Whether to include the root module in the list. Defaults to True.
|
|
35
|
+
|
|
36
|
+
Returns:
|
|
37
|
+
list: A list of submodule names.
|
|
38
|
+
"""
|
|
39
|
+
try:
|
|
40
|
+
module = importlib.import_module(module_name) # nosemgrep
|
|
41
|
+
except Exception:
|
|
42
|
+
return []
|
|
43
|
+
|
|
44
|
+
# Get the path of the module. This is necessary to find its submodules.
|
|
45
|
+
module_path = module.__path__
|
|
46
|
+
|
|
47
|
+
# Initialize an empty list to store the names of submodules
|
|
48
|
+
submodules = [module_name] if include_root else []
|
|
49
|
+
|
|
50
|
+
# Iterate over the submodules in the module's path
|
|
51
|
+
for _, name, ispkg in pkgutil.iter_modules(module_path, prefix=f"{module_name}."):
|
|
52
|
+
# Add the name of each submodule to the list
|
|
53
|
+
submodules.append(name)
|
|
54
|
+
|
|
55
|
+
if ispkg:
|
|
56
|
+
submodules.extend(import_submodules(name, include_root=False))
|
|
57
|
+
|
|
58
|
+
# Return the list of submodule names
|
|
59
|
+
return submodules
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
@require_optional_import("pdoc", "docs")
|
|
63
|
+
def build_pdoc_dict(module: ModuleType, module_name: str) -> None:
|
|
64
|
+
if not hasattr(module, "__pdoc__"):
|
|
65
|
+
setattr(module, "__pdoc__", {})
|
|
66
|
+
|
|
67
|
+
all = module.__all__ if hasattr(module, "__all__") else None
|
|
68
|
+
|
|
69
|
+
for name, obj in module.__dict__.items():
|
|
70
|
+
if all and name not in all:
|
|
71
|
+
continue
|
|
72
|
+
|
|
73
|
+
if not hasattr(obj, "__name__") or name.startswith("_"):
|
|
74
|
+
continue
|
|
75
|
+
|
|
76
|
+
target_module = get_target_module(obj)
|
|
77
|
+
if target_module and target_module != module_name:
|
|
78
|
+
module.__pdoc__[name] = False
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
@require_optional_import("pdoc", "docs")
|
|
82
|
+
def process_modules(submodules: list[str]) -> None:
|
|
83
|
+
cached_modules: dict[str, ModuleType] = {}
|
|
84
|
+
|
|
85
|
+
# Pass 1: Build pdoc dictionary for all submodules
|
|
86
|
+
for submodule in submodules:
|
|
87
|
+
module = importlib.import_module(submodule) # nosemgrep
|
|
88
|
+
cached_modules[submodule] = module
|
|
89
|
+
build_pdoc_dict(module, submodule)
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
@require_optional_import("pdoc", "docs")
|
|
93
|
+
def generate_markdown(path: Path) -> None:
|
|
94
|
+
modules = ["autogen"] # Public submodules are auto-imported
|
|
95
|
+
context = pdoc.Context()
|
|
96
|
+
|
|
97
|
+
modules = [pdoc.Module(mod, context=context) for mod in modules]
|
|
98
|
+
pdoc.link_inheritance(context)
|
|
99
|
+
|
|
100
|
+
def recursive_markdown(mod: pdoc.Module) -> Iterable[tuple[str, str]]: # type: ignore[no-any-unimported]
|
|
101
|
+
# Pass our custom template here
|
|
102
|
+
yield mod.name, mod.text()
|
|
103
|
+
for submod in mod.submodules():
|
|
104
|
+
yield from recursive_markdown(submod)
|
|
105
|
+
|
|
106
|
+
for mod in modules:
|
|
107
|
+
for module_name, text in recursive_markdown(mod):
|
|
108
|
+
file_path = path / module_name.replace(".", "/") / "index.md"
|
|
109
|
+
# print(f"Writing {file_path}...")
|
|
110
|
+
file_path.parent.mkdir(parents=True, exist_ok=True)
|
|
111
|
+
with file_path.open("w") as f:
|
|
112
|
+
f.write(text)
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
@require_optional_import("pdoc", "docs")
|
|
116
|
+
def generate(target_dir: Path, template_dir: Path) -> None:
|
|
117
|
+
# Pass the custom template directory for rendering the markdown
|
|
118
|
+
pdoc.tpl_lookup.directories.insert(0, str(template_dir))
|
|
119
|
+
|
|
120
|
+
submodules = import_submodules("autogen")
|
|
121
|
+
# print(f"{submodules=}")
|
|
122
|
+
|
|
123
|
+
process_modules(submodules)
|
|
124
|
+
|
|
125
|
+
generate_markdown(target_dir)
|
|
126
|
+
|
|
127
|
+
|
|
128
|
+
def fix_api_reference_links(content: str) -> str:
|
|
129
|
+
"""Fix the API reference links in the content."""
|
|
130
|
+
# Define a pattern that matches API reference links
|
|
131
|
+
pattern = r"(/docs/api-reference/[^#\)]+#)autogen\.([^\)]+)"
|
|
132
|
+
|
|
133
|
+
# Replace with the URL part and everything after the last dot
|
|
134
|
+
def replacement_func(match: re.Match[str]) -> str:
|
|
135
|
+
url_part = match.group(1)
|
|
136
|
+
full_name = match.group(2)
|
|
137
|
+
|
|
138
|
+
# Get the function name (everything after the last dot if there is one, or the whole thing)
|
|
139
|
+
func_name = full_name.split(".")[-1] if "." in full_name else full_name
|
|
140
|
+
return f"{url_part}{func_name}"
|
|
141
|
+
|
|
142
|
+
# Use re.sub with a replacement function
|
|
143
|
+
return re.sub(pattern, replacement_func, content)
|
|
144
|
+
|
|
145
|
+
|
|
146
|
+
def convert_md_to_mdx(input_dir: Path) -> None:
|
|
147
|
+
"""Convert all .md files in directory to .mdx while preserving structure.
|
|
148
|
+
|
|
149
|
+
Args:
|
|
150
|
+
input_dir (Path): Directory containing .md files to convert
|
|
151
|
+
"""
|
|
152
|
+
if not input_dir.exists():
|
|
153
|
+
print(f"Directory not found: {input_dir}")
|
|
154
|
+
sys.exit(1)
|
|
155
|
+
|
|
156
|
+
for md_file in input_dir.rglob("*.md"):
|
|
157
|
+
mdx_file = md_file.with_suffix(".mdx")
|
|
158
|
+
|
|
159
|
+
# Read content from .md file
|
|
160
|
+
content = md_file.read_text(encoding="utf-8")
|
|
161
|
+
|
|
162
|
+
# Fix internal API references
|
|
163
|
+
content = fix_api_reference_links(content)
|
|
164
|
+
|
|
165
|
+
# Write content to .mdx file
|
|
166
|
+
mdx_file.write_text(content, encoding="utf-8")
|
|
167
|
+
|
|
168
|
+
# Remove original .md file
|
|
169
|
+
md_file.unlink()
|
|
170
|
+
# print(f"Converted: {md_file} -> {mdx_file}")
|
|
171
|
+
|
|
172
|
+
|
|
173
|
+
def get_mdx_files(directory: Path) -> list[str]:
|
|
174
|
+
"""Get all MDX files in directory and subdirectories."""
|
|
175
|
+
return [f"{p.relative_to(directory).with_suffix('')!s}".replace("\\", "/") for p in directory.rglob("*.mdx")]
|
|
176
|
+
|
|
177
|
+
|
|
178
|
+
def add_prefix(path: str, parent_groups: list[str] | None = None) -> str:
|
|
179
|
+
"""Create full path with prefix and parent groups."""
|
|
180
|
+
groups = parent_groups or []
|
|
181
|
+
return f"docs/api-reference/{'/'.join(groups + [path])}"
|
|
182
|
+
|
|
183
|
+
|
|
184
|
+
def create_nav_structure(paths: list[str], parent_groups: list[str] | None = None) -> list[Any]:
|
|
185
|
+
"""Convert list of file paths into nested navigation structure."""
|
|
186
|
+
groups: dict[str, list[str]] = {}
|
|
187
|
+
pages = []
|
|
188
|
+
parent_groups = parent_groups or []
|
|
189
|
+
|
|
190
|
+
for path in paths:
|
|
191
|
+
parts = path.split("/")
|
|
192
|
+
if len(parts) == 1:
|
|
193
|
+
pages.append(add_prefix(path, parent_groups))
|
|
194
|
+
else:
|
|
195
|
+
group = parts[0]
|
|
196
|
+
subpath = "/".join(parts[1:])
|
|
197
|
+
groups.setdefault(group, []).append(subpath)
|
|
198
|
+
|
|
199
|
+
# Sort directories and create their structures
|
|
200
|
+
sorted_groups = [
|
|
201
|
+
{
|
|
202
|
+
"group": group,
|
|
203
|
+
"pages": create_nav_structure(subpaths, parent_groups + [group]),
|
|
204
|
+
}
|
|
205
|
+
for group, subpaths in sorted(groups.items())
|
|
206
|
+
]
|
|
207
|
+
|
|
208
|
+
# Sort pages
|
|
209
|
+
overview_page = [page for page in pages if page.endswith("overview")]
|
|
210
|
+
if overview_page:
|
|
211
|
+
pages.remove(overview_page[0])
|
|
212
|
+
|
|
213
|
+
sorted_pages = sorted(pages)
|
|
214
|
+
if overview_page:
|
|
215
|
+
sorted_pages.insert(0, overview_page[0])
|
|
216
|
+
|
|
217
|
+
# Return directories first, then files
|
|
218
|
+
return sorted_pages + sorted_groups
|
|
219
|
+
|
|
220
|
+
|
|
221
|
+
def update_nav(mint_json_path: Path, new_nav_pages: list[Any]) -> None:
|
|
222
|
+
"""Update the 'API Reference' section in mint.json navigation with new pages.
|
|
223
|
+
|
|
224
|
+
Args:
|
|
225
|
+
mint_json_path: Path to mint.json file
|
|
226
|
+
new_nav_pages: New navigation structure to replace in API Reference pages
|
|
227
|
+
"""
|
|
228
|
+
try:
|
|
229
|
+
# Read the current mint.json
|
|
230
|
+
with open(mint_json_path) as f:
|
|
231
|
+
mint_config = json.load(f)
|
|
232
|
+
|
|
233
|
+
reference_section = {"group": "API Reference", "pages": new_nav_pages}
|
|
234
|
+
mint_config["navigation"].append(reference_section)
|
|
235
|
+
|
|
236
|
+
# Write back to mint.json with proper formatting
|
|
237
|
+
with open(mint_json_path, "w") as f:
|
|
238
|
+
json.dump(mint_config, f, indent=2)
|
|
239
|
+
f.write("\n")
|
|
240
|
+
|
|
241
|
+
except json.JSONDecodeError:
|
|
242
|
+
print(f"Error: {mint_json_path} is not valid JSON")
|
|
243
|
+
except Exception as e:
|
|
244
|
+
print(f"Error updating mint.json: {e}")
|
|
245
|
+
|
|
246
|
+
|
|
247
|
+
def update_mint_json_with_api_nav(website_build_dir: Path, api_dir: Path) -> None:
|
|
248
|
+
"""Update mint.json with MDX files in the API directory."""
|
|
249
|
+
mint_json_path = website_build_dir / "mint.json"
|
|
250
|
+
if not mint_json_path.exists():
|
|
251
|
+
print(f"File not found: {mint_json_path}")
|
|
252
|
+
sys.exit(1)
|
|
253
|
+
|
|
254
|
+
# Get all MDX files in the API directory
|
|
255
|
+
mdx_files = get_mdx_files(api_dir)
|
|
256
|
+
|
|
257
|
+
# Create navigation structure
|
|
258
|
+
nav_structure = create_nav_structure(mdx_files)
|
|
259
|
+
|
|
260
|
+
# Update mint.json with new navigation
|
|
261
|
+
update_nav(mint_json_path, nav_structure)
|
|
262
|
+
|
|
263
|
+
|
|
264
|
+
@require_optional_import("jinja2", "docs")
|
|
265
|
+
def generate_mint_json_from_template(mint_json_template_path: Path, mint_json_path: Path) -> None:
|
|
266
|
+
# if mint.json already exists, delete it
|
|
267
|
+
if mint_json_path.exists():
|
|
268
|
+
os.remove(mint_json_path)
|
|
269
|
+
|
|
270
|
+
# Copy the template file to mint.json
|
|
271
|
+
contents = mint_json_template_path.read_text(encoding="utf-8")
|
|
272
|
+
mint_json_template_content = Template(contents).render()
|
|
273
|
+
|
|
274
|
+
# Parse the rendered template content as JSON
|
|
275
|
+
mint_json_data = json.loads(mint_json_template_content)
|
|
276
|
+
|
|
277
|
+
# Write content to mint.json
|
|
278
|
+
with open(mint_json_path, "w") as f:
|
|
279
|
+
json.dump(mint_json_data, f, indent=2)
|
|
280
|
+
|
|
281
|
+
|
|
282
|
+
class SplitReferenceFilesBySymbols:
|
|
283
|
+
def __init__(self, api_dir: Path) -> None:
|
|
284
|
+
self.api_dir = api_dir
|
|
285
|
+
self.tmp_dir = Path("tmp")
|
|
286
|
+
|
|
287
|
+
def _generate_overview(self, classes: list[str], functions: list[str], output_dir: Path) -> str:
|
|
288
|
+
overview = """---
|
|
289
|
+
sidebarTitle: Overview
|
|
290
|
+
title: Overview
|
|
291
|
+
---
|
|
292
|
+
"""
|
|
293
|
+
if classes:
|
|
294
|
+
overview += "\n\n## Classes\n"
|
|
295
|
+
for symbol in sorted(classes):
|
|
296
|
+
href = output_dir / symbol
|
|
297
|
+
overview += f"""<p class="overview-symbol"><a href="/{str(href).replace("tmp/", "docs/api-reference/")}"><code>class {symbol}</code></a></p>"""
|
|
298
|
+
overview += "\n"
|
|
299
|
+
|
|
300
|
+
if functions:
|
|
301
|
+
overview += "\n\n## Functions\n"
|
|
302
|
+
for symbol in sorted(functions):
|
|
303
|
+
href = output_dir / symbol
|
|
304
|
+
overview += f"""<p class="overview-symbol"><a href="/{str(href).replace("tmp/", "docs/api-reference/")}"><code>{symbol}</code></a></p>"""
|
|
305
|
+
overview += "\n"
|
|
306
|
+
|
|
307
|
+
return overview
|
|
308
|
+
|
|
309
|
+
def _extract_symbol_content(self, content: str, output_dir: Path) -> dict[str, str]:
|
|
310
|
+
sections = {}
|
|
311
|
+
class_symbols = []
|
|
312
|
+
function_symbols = []
|
|
313
|
+
|
|
314
|
+
for part in content.split("**** SYMBOL_START ****")[1:]:
|
|
315
|
+
symbol = part.split("```python\n")[1].split("(")[0].strip()
|
|
316
|
+
content = part.split("**** SYMBOL_END ****")[0].strip()
|
|
317
|
+
sections[symbol] = content
|
|
318
|
+
|
|
319
|
+
if "doc-symbol-class" in content:
|
|
320
|
+
class_symbols.append(symbol)
|
|
321
|
+
|
|
322
|
+
if "doc-symbol-function" in content:
|
|
323
|
+
function_symbols.append(symbol)
|
|
324
|
+
|
|
325
|
+
sections["overview"] = self._generate_overview(class_symbols, function_symbols, output_dir)
|
|
326
|
+
return sections
|
|
327
|
+
|
|
328
|
+
def _split_content_by_symbols(self, content: str, output_dir: Path) -> dict[str, str]:
|
|
329
|
+
symbols = {}
|
|
330
|
+
if "**** SYMBOL_START ****" in content:
|
|
331
|
+
symbols.update(self._extract_symbol_content(content, output_dir))
|
|
332
|
+
return symbols
|
|
333
|
+
|
|
334
|
+
def _process_files(self) -> Iterator[tuple[Path, dict[str, str]]]:
|
|
335
|
+
for md_file in self.api_dir.rglob("*.md"):
|
|
336
|
+
output_dir = self.tmp_dir / md_file.relative_to(self.api_dir).parent
|
|
337
|
+
output_dir.mkdir(parents=True, exist_ok=True)
|
|
338
|
+
|
|
339
|
+
yield output_dir, self._split_content_by_symbols(md_file.read_text(), output_dir)
|
|
340
|
+
|
|
341
|
+
def _clean_directory(self, directory: Path) -> None:
|
|
342
|
+
for item in directory.iterdir():
|
|
343
|
+
if item.is_dir():
|
|
344
|
+
shutil.rmtree(item)
|
|
345
|
+
else:
|
|
346
|
+
item.unlink()
|
|
347
|
+
|
|
348
|
+
def _move_generated_files_to_api_dir(self) -> None:
|
|
349
|
+
self._clean_directory(self.api_dir)
|
|
350
|
+
for item in self.tmp_dir.iterdir():
|
|
351
|
+
dest = self.api_dir / item.relative_to(self.tmp_dir)
|
|
352
|
+
dest.parent.mkdir(parents=True, exist_ok=True)
|
|
353
|
+
copy_func = shutil.copytree if item.is_dir() else shutil.copy2
|
|
354
|
+
print(f"Copying {'directory' if item.is_dir() else 'file'} {item} to {dest}")
|
|
355
|
+
copy_func(item, dest)
|
|
356
|
+
|
|
357
|
+
def generate(self) -> None:
|
|
358
|
+
try:
|
|
359
|
+
self.tmp_dir.mkdir(exist_ok=True)
|
|
360
|
+
for output_dir, symbols in self._process_files():
|
|
361
|
+
if symbols:
|
|
362
|
+
for name, content in symbols.items():
|
|
363
|
+
(output_dir / f"{name}.md").write_text(content, encoding="utf-8")
|
|
364
|
+
|
|
365
|
+
self._move_generated_files_to_api_dir()
|
|
366
|
+
finally:
|
|
367
|
+
shutil.rmtree(self.tmp_dir)
|
|
368
|
+
|
|
369
|
+
|
|
370
|
+
def main() -> None:
|
|
371
|
+
root_dir = Path(__file__).resolve().parents[2]
|
|
372
|
+
website_dir = root_dir / "website"
|
|
373
|
+
website_build_dir = website_dir / "build"
|
|
374
|
+
|
|
375
|
+
parser = argparse.ArgumentParser(description="Process API reference documentation")
|
|
376
|
+
parser.add_argument(
|
|
377
|
+
"--api-dir",
|
|
378
|
+
type=Path,
|
|
379
|
+
help="Directory containing API documentation to process",
|
|
380
|
+
default=website_build_dir / "docs" / "api-reference",
|
|
381
|
+
)
|
|
382
|
+
|
|
383
|
+
parser.add_argument("--force", action="store_true", help="Force generation")
|
|
384
|
+
|
|
385
|
+
args = parser.parse_args()
|
|
386
|
+
|
|
387
|
+
if args.force:
|
|
388
|
+
shutil.rmtree(website_build_dir, ignore_errors=True)
|
|
389
|
+
|
|
390
|
+
if not website_build_dir.exists():
|
|
391
|
+
website_build_dir.mkdir()
|
|
392
|
+
|
|
393
|
+
ignore_dir = "mkdocs"
|
|
394
|
+
copy_only_git_tracked_and_untracked_files(website_dir, website_build_dir, ignore_dir)
|
|
395
|
+
|
|
396
|
+
if args.api_dir.exists():
|
|
397
|
+
# Force delete the directory and its contents
|
|
398
|
+
shutil.rmtree(args.api_dir, ignore_errors=True)
|
|
399
|
+
|
|
400
|
+
target_dir = args.api_dir
|
|
401
|
+
|
|
402
|
+
template_dir = website_build_dir / "mako_templates"
|
|
403
|
+
|
|
404
|
+
# Generate API reference documentation
|
|
405
|
+
print("Generating API reference documentation...")
|
|
406
|
+
generate(target_dir, template_dir)
|
|
407
|
+
|
|
408
|
+
# Split the API reference from submodules into separate files for each symbols
|
|
409
|
+
symbol_files_generator = SplitReferenceFilesBySymbols(target_dir)
|
|
410
|
+
symbol_files_generator.generate()
|
|
411
|
+
|
|
412
|
+
# Convert MD to MDX
|
|
413
|
+
print("Converting MD files to MDX...")
|
|
414
|
+
convert_md_to_mdx(args.api_dir)
|
|
415
|
+
|
|
416
|
+
# Create mint.json from the template file
|
|
417
|
+
mint_json_template_path = website_build_dir / "mint-json-template.json.jinja"
|
|
418
|
+
mint_json_path = website_build_dir / "mint.json"
|
|
419
|
+
|
|
420
|
+
print("Generating mint.json from template...")
|
|
421
|
+
generate_mint_json_from_template(mint_json_template_path, mint_json_path)
|
|
422
|
+
|
|
423
|
+
# Update mint.json
|
|
424
|
+
update_mint_json_with_api_nav(website_build_dir, args.api_dir)
|
|
425
|
+
|
|
426
|
+
print("API reference processing complete!")
|